<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>138361</bug_id>
          
          <creation_ts>2014-11-04 10:23:13 -0800</creation_ts>
          <short_desc>Add ptr() method to Ref class</short_desc>
          <delta_ts>2014-11-04 15:00:53 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Template Framework</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>andersca</cc>
    
    <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>kling</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1046104</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-11-04 10:23:13 -0800</bug_when>
    <thetext>It is a very common pattern in our code base to get a pointer from a Ref object. Right now, we have to call Ref.get() and take its address which is not very nice IMHO. I propose we add a asPtr() method to Ref class to get a raw pointer, in order to simplify the code a bit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1046137</commentid>
    <comment_count>1</comment_count>
      <attachid>240938</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-11-04 12:13:54 -0800</bug_when>
    <thetext>Created attachment 240938
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1046166</commentid>
    <comment_count>2</comment_count>
      <attachid>240938</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-11-04 14:05:56 -0800</bug_when>
    <thetext>Comment on attachment 240938
Patch

I like it. I might have named this just ptr() rather than asPtr().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1046169</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-11-04 14:07:35 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 240938 [details]
&gt; Patch
&gt; 
&gt; I like it. I might have named this just ptr() rather than asPtr().

Yes, it would be shorter. I will update the patch accordingly before landing, thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1046174</commentid>
    <comment_count>4</comment_count>
      <attachid>240947</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-11-04 14:15:16 -0800</bug_when>
    <thetext>Created attachment 240947
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1046194</commentid>
    <comment_count>5</comment_count>
      <attachid>240947</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-11-04 15:00:49 -0800</bug_when>
    <thetext>Comment on attachment 240947
Patch

Clearing flags on attachment: 240947

Committed r175583: &lt;http://trac.webkit.org/changeset/175583&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1046195</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-11-04 15:00:53 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240938</attachid>
            <date>2014-11-04 12:13:54 -0800</date>
            <delta_ts>2014-11-04 14:15:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-138361-20141104121403.patch</filename>
            <type>text/plain</type>
            <size>120753</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc1NTU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDgwNmFmYjhmNjdjNjhkNjkwM2VhZmUy
YTUyY2U5ZWVkMWUzNTMwNTAuLmU3YTViMDMzODQ3YmM4N2ZlOTliYjE0YTY0YjdlOGFkMDUzMjFm
YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTQtMTEtMDQgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYXNQdHIoKSBtZXRob2QgdG8gUmVmIGNsYXNzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzgzNjEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJdCBpcyBhIHZl
cnkgY29tbW9uIHBhdHRlcm4gaW4gb3VyIGNvZGUgYmFzZSB0byBnZXQgYSBwb2ludGVyIGZyb20g
YQorICAgICAgICBSZWYgb2JqZWN0LiBQcmV2aW91c2x5LCB3ZSBoYXZlIHRvIGNhbGwgUmVmLmdl
dCgpIGFuZCB0YWtlIGl0cyBhZGRyZXNzCisgICAgICAgIHdoaWNoIGlzIG5vdCB2ZXJ5IG5pY2Uu
IFRoaXMgcGF0Y2ggYWRkcyBhbiBhc1B0cigpIG1ldGhvZCB0byBSZWYgY2xhc3MKKyAgICAgICAg
dG8gc2ltcGxpZnkgdGhlIGNvZGUgYSBiaXQuCisKKyAgICAgICAgKiB3dGYvUGFzc1JlZi5oOgor
ICAgICAgICAoV1RGOjpQYXNzUmVmPFQ+Ojphc1B0cik6CisgICAgICAgICogd3RmL1JlZi5oOgor
ICAgICAgICAoV1RGOjpSZWY6OmFzUHRyKToKKyAgICAgICAgKFdURjo6R2V0UHRySGVscGVyPFJl
ZjxUPj46OmdldFB0cik6CisKIDIwMTQtMTEtMDQgIETDoW5pZWwgQsOhdHlhaSAgPGRiYXR5YWku
dS1zemVnZWRAcGFydG5lci5zYW1zdW5nLmNvbT4KIAogICAgICAgICBBVFRSX1VTRUQgaW5jb3Jy
ZWN0bHkgYXBwbHlpbmcgdG8gQ2xhbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmMTMzNWQzZDkwNTc2OGYyOGQw
MGFkNzhiNmY3MDAwNTE4OGUyY2JlLi44MGNjZjViYTBlZTQxZGFhYzViMzhmZGZhNzA5ZWUzNTRk
ODNkZjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTM2IEBACisyMDE0LTExLTA0ICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGFzUHRyKCkgbWV0aG9kIHRv
IFJlZiBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTM4MzYxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVXNlIHRoZSBuZXcgUmVmOjphc1B0cigpIG1ldGhvZC4KKworICAgICAgICBObyBuZXcgdGVz
dHMsIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU1lbnVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlNZW51
TGlzdDo6ZGlkVXBkYXRlQWN0aXZlT3B0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hU
TUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldE5hbWVkSXRl
bXMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25D
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0TmFtZWRJdGVtcyk6CisgICAgICAgICog
Y3NzL0NTU1N0eWxlUnVsZS5oOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNoZWV0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2hlZXQ6Omluc2VydFJ1bGUpOgorICAgICAgICAqIGNz
cy9DU1NWYWx1ZUxpc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlTGlzdDo6aXRlbSk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NWYWx1ZUxpc3Q6Oml0ZW1XaXRob3V0Qm91bmRzQ2hlY2sp
OgorICAgICAgICAqIGNzcy9JbnNwZWN0b3JDU1NPTVdyYXBwZXJzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckNTU09NV3JhcHBlcnM6OmNvbGxlY3QpOgorICAgICAgICAqIGRvbS9D
aGlsZExpc3RNdXRhdGlvblNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNoaWxkTGlzdE11
dGF0aW9uQWNjdW11bGF0b3I6On5DaGlsZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0b3I6OmNoaWxkQWRkZWQpOgor
ICAgICAgICAqIGRvbS9DaGlsZE5vZGVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNoaWxk
Tm9kZUxpc3Q6Om5hbWVkSXRlbSk6CisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6cmVtb3ZlQ2hpbGQpOgorICAgICAgICAq
IGRvbS9DdXJyZW50U2NyaXB0SW5jcmVtZW50ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cnJl
bnRTY3JpcHRJbmNyZW1lbnRlcjo6Q3VycmVudFNjcmlwdEluY3JlbWVudGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkN1cnJlbnRTY3JpcHRJbmNyZW1lbnRlcjo6fkN1cnJlbnRTY3JpcHRJbmNyZW1l
bnRlcik6CisgICAgICAgICogZG9tL011dGF0aW9uUmVjb3JkLmNwcDoKKyAgICAgICAgKiBkb20v
Tm9kZVJhcmVEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpOb2RlTGlzdHNOb2RlRGF0YTo6ZW5z
dXJlQ2hpbGROb2RlTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlTGlzdHNOb2RlRGF0YTo6
ZW5zdXJlRW1wdHlDaGlsZE5vZGVMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVMaXN0c05v
ZGVEYXRhOjphZGRDYWNoZVdpdGhRdWFsaWZpZWROYW1lKToKKyAgICAgICAgKiBkb20vUmFuZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2U6OnNldERvY3VtZW50KToKKyAgICAgICAgKiBk
b20vU2NyaXB0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFbGVtZW50Ojpy
ZXF1ZXN0U2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEVsZW1lbnQ6OmV4ZWN1dGVT
Y3JpcHQpOgorICAgICAgICAqIGRvbS9TdGF0aWNOb2RlTGlzdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTdGF0aWNOb2RlTGlzdDo6aXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpTdGF0aWNFbGVt
ZW50TGlzdDo6aXRlbSk6CisgICAgICAgICogZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0Q29tbWFuZDo6bW92ZVJlbWFpbmlu
Z1NpYmxpbmdzVG9OZXdQYXJlbnQpOgorICAgICAgICAqIGVkaXRpbmcvRGljdGF0aW9uQ29tbWFu
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaWN0YXRpb25Db21tYW5kOjppbnNlcnRUZXh0KToK
KyAgICAgICAgKiBlZGl0aW5nL0RpY3RhdGlvbkNvbW1hbmQuaDoKKyAgICAgICAgKiBlZGl0aW5n
L0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Omluc2VydFRleHRXaXRob3V0
U2VuZGluZ1RleHRFdmVudCk6CisgICAgICAgICogZWRpdGluZy9SZXBsYWNlTm9kZVdpdGhTcGFu
Q29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzd2FwSW5Ob2RlUHJlc2VydmluZ0F0dHJp
YnV0ZXNBbmRDaGlsZHJlbik6CisgICAgICAgICogZWRpdGluZy9TaW1wbGlmeU1hcmt1cENvbW1h
bmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxpZnlNYXJrdXBDb21tYW5kOjpkb0FwcGx5
KToKKyAgICAgICAgKiBlZGl0aW5nL21hcmt1cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpoYXNP
bmVDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpoYXNPbmVUZXh0Q2hpbGQpOgorICAgICAgICAo
V2ViQ29yZTo6cmVwbGFjZUNoaWxkcmVuV2l0aEZyYWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OnJlcGxhY2VDaGlsZHJlbldpdGhUZXh0KToKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJv
bEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6
Y2hlY2tWYWxpZGl0eSk6CisgICAgICAgICogaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50OjpnZXROYW1lZEVsZW1lbnRzKToKKyAgICAg
ICAgKiBodG1sL0hUTUxMaW5rRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlu
a0VsZW1lbnQ6OnNob3VsZExvYWRMaW5rKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
U3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0Ojpi
dWlsZE9iamVjdEZvclNlbGVjdG9yTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JT
dHlsZVNoZWV0OjpidWlsZE9iamVjdEZvclJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yU3R5bGVTaGVldDo6cmV2YWxpZGF0ZVN0eWxlKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVM
b2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmNvbnRpbnVlTG9hZEFm
dGVyTmV3V2luZG93UG9saWN5KToKKyAgICAgICAgKiBwYWdlL0ZvY3VzQ29udHJvbGxlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGb2N1c0NvbnRyb2xsZXI6OnNldEZvY3VzZWRFbGVtZW50KToK
KyAgICAgICAgKiBwYWdlL1BhZ2VTZXJpYWxpemVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBh
Z2VTZXJpYWxpemVyOjpyZXRyaWV2ZVJlc291cmNlc0ZvclJ1bGUpOgorICAgICAgICAqIHBhZ2Uv
UGFnZVNlcmlhbGl6ZXIuaDoKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250
cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvbkNvbnRyb2xsZXI6OnVwZGF0
ZUFuaW1hdGlvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb3ZlcmFn
ZU1hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaWxlQ292ZXJhZ2VNYXA6OnBsYXRmb3JtQ0FM
YXllclBhaW50Q29udGVudHMpOgorICAgICAgICAqIHJlbmRlcmluZy9DbGlwUGF0aE9wZXJhdGlv
bi5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpzdHlsZUZvckZpcnN0TGV0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2Nr
Ojp1cGRhdGVGaXJzdExldHRlclN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2Nr
OjpjcmVhdGVGaXJzdExldHRlclJlbmRlcmVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
QmxvY2tGbG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6dXBkYXRl
Q29sdW1uUHJvZ3Jlc3Npb25Gcm9tU3R5bGUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJC
bG9ja0Zsb3cuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJveDo6c3R5bGVEaWRDaGFuZ2UpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OnNl
dFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OnN0eWxlRGlkQ2hhbmdl
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTmFtZWRGbG93RnJhZ21lbnQ6OnJlc3RvcmVSZWdpb25PYmpl
Y3RzT3JpZ2luYWxTdHlsZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9s
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9sOjphZGp1c3RJbm5lclRl
eHRTdHlsZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lOjpjcmVhdGVJbm5lclRleHRTdHls
ZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OmNyZWF0ZUlu
bmVyVGV4dFN0eWxlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvRGF0YVJlZi5oOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YVJlZjo6Z2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFSZWY6
OmFjY2Vzcyk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhUmVmOjpvcGVyYXRvcj09KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRhdGFSZWY6Om9wZXJhdG9yIT0pOgorICAgICAgICAqIHJlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Y2hh
bmdlUmVxdWlyZXNMYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmNoYW5n
ZVJlcXVpcmVzUG9zaXRpb25lZExheW91dE9ubHkpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U3R5bGU6OmNoYW5nZVJlcXVpcmVzTGF5ZXJSZXBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclN0eWxlOjpjaGFuZ2VSZXF1aXJlc1JlcGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU3R5bGU6OmNoYW5nZVJlcXVpcmVzUmVwYWludElmVGV4dE9yQm9yZGVyT3JPdXRsaW5lKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjaGFuZ2VSZXF1aXJlc1JlY29tcG9zaXRl
TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmRpZmYpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU3R5bGU6OmRpZmZSZXF1aXJlc0xheWVyUmVwYWludCk6CisgICAgICAg
ICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N0
eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVHZW5l
cmF0ZWRJbWFnZTo6Y3NzVmFsdWUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUdl
bmVyYXRlZEltYWdlLmg6CisgICAgICAgICogc3R5bGUvU3R5bGVSZXNvbHZlRm9yRG9jdW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OnJlc29sdmVGb3JEb2N1bWVudCk6CisgICAg
ICAgICogc3R5bGUvU3R5bGVSZXNvbHZlVHJlZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZTo6ZGV0ZXJtaW5lQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpyZXNvbHZlTG9j
YWwpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OnJlc29sdmVUcmVlKToKKyAgICAgICAgKiBz
dHlsZS9TdHlsZVJlc29sdmVUcmVlLmg6CisKIDIwMTQtMTEtMDQgIERhcmluIEFkbGVyICA8ZGFy
aW5AYXBwbGUuY29tPgogCiAgICAgICAgIEVsaW1pbmF0ZSBSZXNvdXJjZUJ1ZmZlciBhbmQgdXNl
IFNoYXJlZEJ1ZmZlciBkaXJlY3RseSBpbnN0ZWFkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggYTU0MjBm
YjU5ODdmODAwZDMzNzk0M2JhYTkwYzc1ZGIyMjRjODQxNy4uYzlkMTI4NGExYTg5YzQxNmQyNjNi
OTRkMGZjOWFkZjliNTI4NzJmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisy
MDE0LTExLTA0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWRk
IGFzUHRyKCkgbWV0aG9kIHRvIFJlZiBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM4MzYxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVXNlIHRoZSBuZXcgUmVmOjphc1B0cigpIG1ldGhvZC4KKwor
ICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIF9zZXRU
eXBpbmdTdHlsZTp3aXRoVW5kb0FjdGlvbjpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxW
aWV3Lm1tOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBfYXBwbHlTdHlsZVRvU2VsZWN0aW9uOndp
dGhVbmRvQWN0aW9uOl0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBfY2hhbmdlQ1NTQ29sb3JV
c2luZ1NlbGVjdG9yOmluUmFuZ2U6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgor
ICAgICAgICAoLVtXZWJWaWV3IGFwcGx5U3R5bGU6XSk6CisKIDIwMTQtMTEtMDQgIERhcmluIEFk
bGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIEVsaW1pbmF0ZSBSZXNvdXJjZUJ1ZmZl
ciBhbmQgdXNlIFNoYXJlZEJ1ZmZlciBkaXJlY3RseSBpbnN0ZWFkCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMjJl
ZjM3NzcxNjUwOGQ3MmQ0ZWFmMjU5MjBjZDliNDg4YjFjMGJkMS4uZTEwZTk4YmQxYWQ1MjliYzgz
NWIxN2NmOTU2N2VkNzk0ZTdiZGFmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE0
LTExLTA0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGFz
UHRyKCkgbWV0aG9kIHRvIFJlZiBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTM4MzYxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVXNlIHRoZSBuZXcgUmVmOjphc1B0cigpIG1ldGhvZC4KKworICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29u
dGV4dDo6Y3JlYXRlV2ViUGFnZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0UHJlZmVyZW5jZXMpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUHJveHk6OmRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpkaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3QpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRpZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZGlkVXBkYXRlSGlzdG9yeVRpdGxl
KToKKwogMjAxNC0xMS0wNCAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAg
ICAgRml4IHRoZSBpT1MgYnVpbGQgYWZ0ZXIgcjE3NTU0OS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL1Bhc3NSZWYuaCBiL1NvdXJjZS9XVEYvd3RmL1Bhc3NSZWYuaAppbmRleCA1ODczNzRj
NmM4MjYwZTViNmY3YzM3NjY2MzRmNWRkOTA1NTc3ZTYyLi4yYjEyNzI3YjNlYTE3ZGJjMWIwNmRj
ZDI0NWY5MGE4MjI3MzkyMjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QYXNzUmVmLmgK
KysrIGIvU291cmNlL1dURi93dGYvUGFzc1JlZi5oCkBAIC00NSw2ICs0NSw5IEBAIHB1YmxpYzoK
ICAgICBjb25zdCBUJiBnZXQoKSBjb25zdDsKICAgICBUJiBnZXQoKTsKIAorICAgIGNvbnN0IFQq
IGFzUHRyKCkgY29uc3Q7CisgICAgVCogYXNQdHIoKTsKKwogICAgIHZvaWQgZHJvcFJlZigpOwog
ICAgIFQmIGxlYWtSZWYoKSBXQVJOX1VOVVNFRF9SRVRVUk47CiAKQEAgLTEyNSw2ICsxMjgsMTgg
QEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFQmIFBhc3NSZWY8VD46OmdldCgpCiAgICAg
cmV0dXJuIG1fcmVmZXJlbmNlOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjb25zdCBUKiBQ
YXNzUmVmPFQ+Ojphc1B0cigpIGNvbnN0Cit7CisgICAgQVNTRVJUKCFtX2dhdmVVcFJlZmVyZW5j
ZSk7CisgICAgcmV0dXJuICZtX3JlZmVyZW5jZTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4g
VCogUGFzc1JlZjxUPjo6YXNQdHIoKQoreworICAgIEFTU0VSVCghbV9nYXZlVXBSZWZlcmVuY2Up
OworICAgIHJldHVybiAmbV9yZWZlcmVuY2U7Cit9CisKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlu
bGluZSBUJiBQYXNzUmVmPFQ+OjpsZWFrUmVmKCkKIHsKICNpZm5kZWYgTkRFQlVHCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9SZWYuaCBiL1NvdXJjZS9XVEYvd3RmL1JlZi5oCmluZGV4IGUz
ZjM0ZGNjZTQzOWExNGY4MDViZjgwYTRmNmEyNjg2Yjc2ZDE1ZDcuLjc1Y2VmZGU0ZTMzMmM4YWE0
ZjI0MDFiMzY3NzEzNmI0MjI3YTY3ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1JlZi5o
CisrKyBiL1NvdXJjZS9XVEYvd3RmL1JlZi5oCkBAIC01OCw2ICs1OCw5IEBAIHB1YmxpYzoKICAg
ICBjb25zdCBUKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gbV9wdHI7IH0KICAgICBUKiBv
cGVyYXRvci0+KCkgeyByZXR1cm4gbV9wdHI7IH0KIAorICAgIGNvbnN0IFQqIGFzUHRyKCkgY29u
c3QgeyByZXR1cm4gbV9wdHI7IH0KKyAgICBUKiBhc1B0cigpIHsgcmV0dXJuIG1fcHRyOyB9CisK
ICAgICBjb25zdCBUJiBnZXQoKSBjb25zdCB7IHJldHVybiAqbV9wdHI7IH0KICAgICBUJiBnZXQo
KSB7IHJldHVybiAqbV9wdHI7IH0KIApAQCAtODAsNyArODMsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBpbmxpbmUgUGFzc1JlZjxUPiBSZWY8VD46OnJlcGxh
Y2UoUGFzcwogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBzdHJ1Y3QgR2V0UHRySGVscGVyPFJlZjxU
Pj4gewogICAgIHR5cGVkZWYgVCogUHRyVHlwZTsKLSAgICBzdGF0aWMgVCogZ2V0UHRyKGNvbnN0
IFJlZjxUPiYgcCkgeyByZXR1cm4gY29uc3RfY2FzdDxUKj4oJnAuZ2V0KCkpOyB9CisgICAgc3Rh
dGljIFQqIGdldFB0cihjb25zdCBSZWY8VD4mIHApIHsgcmV0dXJuIGNvbnN0X2Nhc3Q8VCo+KHAu
YXNQdHIoKSk7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3QuY3BwCmluZGV4IDQy
ZGU4NDYyNTk5ZjQwNjk0ZTVmODE2OTc2MGUxNmJmYjc3ODljMjIuLjdkZGQ1N2IxNjRhNmIwYTFl
MTU0OWQ2MDkzY2JjNzNmODA3MGRmYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdC5jcHAKQEAgLTEyNSw3ICsxMjUsNyBA
QCB2b2lkIEFjY2Vzc2liaWxpdHlNZW51TGlzdDo6ZGlkVXBkYXRlQWN0aXZlT3B0aW9uKGludCBv
cHRpb25JbmRleCkKICAgICAgICAgICAgIGRvd25jYXN0PEFjY2Vzc2liaWxpdHlNZW51TGlzdFBv
cHVwPigqY2hpbGRPYmplY3RzWzBdKS5kaWRVcGRhdGVBY3RpdmVPcHRpb24ob3B0aW9uSW5kZXgp
OwogICAgIH0KIAotICAgIGNhY2hlLT5wb3N0Tm90aWZpY2F0aW9uKHRoaXMsICZkb2N1bWVudC5n
ZXQoKSwgQVhPYmplY3RDYWNoZTo6QVhNZW51TGlzdFZhbHVlQ2hhbmdlZCwgVGFyZ2V0RWxlbWVu
dCwgUG9zdFN5bmNocm9ub3VzbHkpOworICAgIGNhY2hlLT5wb3N0Tm90aWZpY2F0aW9uKHRoaXMs
IGRvY3VtZW50LmFzUHRyKCksIEFYT2JqZWN0Q2FjaGU6OkFYTWVudUxpc3RWYWx1ZUNoYW5nZWQs
IFRhcmdldEVsZW1lbnQsIFBvc3RTeW5jaHJvbm91c2x5KTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQWxs
Q29sbGVjdGlvbkN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxB
bGxDb2xsZWN0aW9uQ3VzdG9tLmNwcAppbmRleCBkNzBmMGNjOGE5MjNmMzA1MTk2YjJiYWU2YjU3
MmI3NTJlNjQzNzgxLi5mYjIzZGY0YjBmN2EyOGVmZmVjMzU4NzkwMzVhOTgwOWVhZTk3YWQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxBbGxDb2xsZWN0aW9u
Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxBbGxDb2xs
ZWN0aW9uQ3VzdG9tLmNwcApAQCAtNDksNyArNDksNyBAQCBzdGF0aWMgSlNWYWx1ZSBnZXROYW1l
ZEl0ZW1zKEV4ZWNTdGF0ZSogZXhlYywgSlNIVE1MQWxsQ29sbGVjdGlvbiogY29sbGVjdGlvbiwg
UAogICAgIGlmIChuYW1lZEl0ZW1zLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZp
bmVkKCk7CiAgICAgaWYgKG5hbWVkSXRlbXMuc2l6ZSgpID09IDEpCi0gICAgICAgIHJldHVybiB0
b0pTKGV4ZWMsIGNvbGxlY3Rpb24tPmdsb2JhbE9iamVjdCgpLCAmbmFtZWRJdGVtc1swXS5nZXQo
KSk7CisgICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGNvbGxlY3Rpb24tPmdsb2JhbE9iamVjdCgp
LCBuYW1lZEl0ZW1zWzBdLmFzUHRyKCkpOwogCiAgICAgLy8gRklYTUU6IEhUTUw1IHNwZWNpZmlj
YXRpb24gc2F5cyB0aGlzIHNob3VsZCBiZSBhIEhUTUxDb2xsZWN0aW9uLgogICAgIC8vIGh0dHA6
Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvbXVsdGlwYWdlL2Nv
bW1vbi1kb20taW50ZXJmYWNlcy5odG1sI2h0bWxhbGxjb2xsZWN0aW9uCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uQ3Vz
dG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZvcm1Db250cm9sc0Nv
bGxlY3Rpb25DdXN0b20uY3BwCmluZGV4IDJmZmIyYWUyZDllNGFhNWQ2YzM2MjdkYjEzMmQyNWRh
ZjFmNWIxMWMuLjk3NjNkMGE1MWYyODc2YWUyMDBmZTlmMDI3Y2Y3NzBiZjNlYjEzZTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZvcm1Db250cm9sc0NvbGxl
Y3Rpb25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZv
cm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIHN0YXRpYyBK
U1ZhbHVlIGdldE5hbWVkSXRlbXMoRXhlY1N0YXRlKiBleGVjLCBKU0hUTUxGb3JtQ29udHJvbHND
b2xsZWN0aW9uKiBjb2xsCiAgICAgaWYgKG5hbWVkSXRlbXMuaXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICBpZiAobmFtZWRJdGVtcy5zaXplKCkgPT0gMSkKLSAg
ICAgICAgcmV0dXJuIHRvSlMoZXhlYywgY29sbGVjdGlvbi0+Z2xvYmFsT2JqZWN0KCksICZuYW1l
ZEl0ZW1zWzBdLmdldCgpKTsKKyAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgY29sbGVjdGlvbi0+
Z2xvYmFsT2JqZWN0KCksIG5hbWVkSXRlbXNbMF0uYXNQdHIoKSk7CiAKICAgICBBU1NFUlQoY29s
bGVjdGlvbi0+aW1wbCgpLnR5cGUoKSA9PSBGb3JtQ29udHJvbHMpOwogICAgIHJldHVybiB0b0pT
KGV4ZWMsIGNvbGxlY3Rpb24tPmdsb2JhbE9iamVjdCgpLCBjb2xsZWN0aW9uLT5pbXBsKCkub3du
ZXJOb2RlKCkucmFkaW9Ob2RlTGlzdChuYW1lKS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTU3R5bGVSdWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVS
dWxlLmgKaW5kZXggYjQ3ZWQxNzNmMzlhNDU3ODUyZjQyZmRlZTBmZWI3MDYwYjdlZmRiZC4uN2Q5
ZWE3ODc2MDA5NzQ3YmJlYWQxMzcwOTM0YTdiYzRkMGZiNzAxYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1N0eWxlUnVsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NT
dHlsZVJ1bGUuaApAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgQ1NTU3R5bGVEZWNsYXJh
dGlvbiYgc3R5bGUoKTsKIAogICAgIC8vIEZJWE1FOiBOb3QgQ1NTT00uIFJlbW92ZS4KLSAgICBT
dHlsZVJ1bGUqIHN0eWxlUnVsZSgpIGNvbnN0IHsgcmV0dXJuICZjb25zdF9jYXN0PFN0eWxlUnVs
ZSY+KG1fc3R5bGVSdWxlLmdldCgpKTsgfQorICAgIFN0eWxlUnVsZSYgc3R5bGVSdWxlKCkgY29u
c3QgeyByZXR1cm4gY29uc3RfY2FzdDxTdHlsZVJ1bGUmPihtX3N0eWxlUnVsZS5nZXQoKSk7IH0K
IAogcHJpdmF0ZToKICAgICBDU1NTdHlsZVJ1bGUoU3R5bGVSdWxlJiwgQ1NTU3R5bGVTaGVldCop
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCmluZGV4IDIyOWUzN2NlNTI1ZjIyOTc1
NGJkMDc2ZDk2MTJjOTY4MDMxMjVjM2EuLjE4YzE3YzBlZGQ2YWI3YmZkYzhmNDc5NDk5NjhiOGRl
ZTdhZTM0ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKQEAgLTI5Myw3ICsy
OTMsNyBAQCB1bnNpZ25lZCBDU1NTdHlsZVNoZWV0OjppbnNlcnRSdWxlKGNvbnN0IFN0cmluZyYg
cnVsZVN0cmluZywgdW5zaWduZWQgaW5kZXgsIEV4YwogICAgICAgICByZXR1cm4gMDsKICAgICB9
CiAgICAgQ1NTUGFyc2VyIHAobV9jb250ZW50cy5nZXQoKS5wYXJzZXJDb250ZXh0KCkpOwotICAg
IFJlZlB0cjxTdHlsZVJ1bGVCYXNlPiBydWxlID0gcC5wYXJzZVJ1bGUoJm1fY29udGVudHMuZ2V0
KCksIHJ1bGVTdHJpbmcpOworICAgIFJlZlB0cjxTdHlsZVJ1bGVCYXNlPiBydWxlID0gcC5wYXJz
ZVJ1bGUobV9jb250ZW50cy5hc1B0cigpLCBydWxlU3RyaW5nKTsKIAogICAgIGlmICghcnVsZSkg
ewogICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTVmFsdWVMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVMaXN0LmgKaW5k
ZXggOTkxMjlmOWU1YjdhZGRlNWRlMzlhYTM1MmIwNjlkZDgyOTAzMDQzNC4uZWE5OTUzNjc0OGY4
ZjBhMDYyOTkyZGQ2MjZlOTU5MTgxNzMyNTVmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1ZhbHVlTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3Qu
aApAQCAtNTIsMTAgKzUyLDEwIEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBzaXplX3QgbGVuZ3Ro
KCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZXMuc2l6ZSgpOyB9Ci0gICAgQ1NTVmFsdWUqIGl0ZW0o
c2l6ZV90IGluZGV4KSB7IHJldHVybiBpbmRleCA8IG1fdmFsdWVzLnNpemUoKSA/ICZtX3ZhbHVl
c1tpbmRleF0uZ2V0KCkgOiBudWxscHRyOyB9Ci0gICAgY29uc3QgQ1NTVmFsdWUqIGl0ZW0oc2l6
ZV90IGluZGV4KSBjb25zdCB7IHJldHVybiBpbmRleCA8IG1fdmFsdWVzLnNpemUoKSA/ICZtX3Zh
bHVlc1tpbmRleF0uZ2V0KCkgOiBudWxscHRyOyB9Ci0gICAgQ1NTVmFsdWUqIGl0ZW1XaXRob3V0
Qm91bmRzQ2hlY2soc2l6ZV90IGluZGV4KSB7IHJldHVybiAmbV92YWx1ZXNbaW5kZXhdLmdldCgp
OyB9Ci0gICAgY29uc3QgQ1NTVmFsdWUqIGl0ZW1XaXRob3V0Qm91bmRzQ2hlY2soc2l6ZV90IGlu
ZGV4KSBjb25zdCB7IEFTU0VSVChpbmRleCA8IG1fdmFsdWVzLnNpemUoKSk7IHJldHVybiAmbV92
YWx1ZXNbaW5kZXhdLmdldCgpOyB9CisgICAgQ1NTVmFsdWUqIGl0ZW0oc2l6ZV90IGluZGV4KSB7
IHJldHVybiBpbmRleCA8IG1fdmFsdWVzLnNpemUoKSA/IG1fdmFsdWVzW2luZGV4XS5hc1B0cigp
IDogbnVsbHB0cjsgfQorICAgIGNvbnN0IENTU1ZhbHVlKiBpdGVtKHNpemVfdCBpbmRleCkgY29u
c3QgeyByZXR1cm4gaW5kZXggPCBtX3ZhbHVlcy5zaXplKCkgPyBtX3ZhbHVlc1tpbmRleF0uYXNQ
dHIoKSA6IG51bGxwdHI7IH0KKyAgICBDU1NWYWx1ZSogaXRlbVdpdGhvdXRCb3VuZHNDaGVjayhz
aXplX3QgaW5kZXgpIHsgcmV0dXJuIG1fdmFsdWVzW2luZGV4XS5hc1B0cigpOyB9CisgICAgY29u
c3QgQ1NTVmFsdWUqIGl0ZW1XaXRob3V0Qm91bmRzQ2hlY2soc2l6ZV90IGluZGV4KSBjb25zdCB7
IEFTU0VSVChpbmRleCA8IG1fdmFsdWVzLnNpemUoKSk7IHJldHVybiBtX3ZhbHVlc1tpbmRleF0u
YXNQdHIoKTsgfQogCiAgICAgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBt
X3ZhbHVlcy5iZWdpbigpOyB9CiAgICAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1
cm4gbV92YWx1ZXMuZW5kKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9JbnNw
ZWN0b3JDU1NPTVdyYXBwZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9JbnNwZWN0b3JDU1NP
TVdyYXBwZXJzLmNwcAppbmRleCBmZDEzNzAzNjI0NGRkNGQzMzdiYjllNjE4YWU1ZDUyYzAyZTQ1
OWU2Li5hNDFlNDBiY2IyZDRiZjJlZjAzNjJkNjIxYzI0ZjQ4MzRiNTU0ZWMxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvSW5zcGVjdG9yQ1NTT01XcmFwcGVycy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0luc3BlY3RvckNTU09NV3JhcHBlcnMuY3BwCkBAIC03Miw3ICs3Miw3
IEBAIHZvaWQgSW5zcGVjdG9yQ1NTT01XcmFwcGVyczo6Y29sbGVjdChMaXN0VHlwZSogbGlzdFR5
cGUpCiAgICAgICAgICAgICBicmVhazsKICNlbmRpZgogICAgICAgICBjYXNlIENTU1J1bGU6OlNU
WUxFX1JVTEU6Ci0gICAgICAgICAgICBtX3N0eWxlUnVsZVRvQ1NTT01XcmFwcGVyTWFwLmFkZChk
b3duY2FzdDxDU1NTdHlsZVJ1bGU+KCpjc3NSdWxlKS5zdHlsZVJ1bGUoKSwgZG93bmNhc3Q8Q1NT
U3R5bGVSdWxlPihjc3NSdWxlKSk7CisgICAgICAgICAgICBtX3N0eWxlUnVsZVRvQ1NTT01XcmFw
cGVyTWFwLmFkZCgmZG93bmNhc3Q8Q1NTU3R5bGVSdWxlPigqY3NzUnVsZSkuc3R5bGVSdWxlKCks
IGRvd25jYXN0PENTU1N0eWxlUnVsZT4oY3NzUnVsZSkpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmNwcAppbmRleCBjYjVjMmIwNTE0MGJiZDg2Y2E1OTk2
ZTY3ZGJjZTcyNDljNGMxNTQ5Li4xYmQzNWJkMGU2Y2E4N2IxNDJhYWUzMzlkMWE0MjI5YzQ4NjU5
MDc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGRMaXN0TXV0YXRpb25TY29w
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTGlzdE11dGF0aW9uU2NvcGUuY3Bw
CkBAIC01OCw3ICs1OCw3IEBAIENoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0b3I6On5DaGlsZExp
c3RNdXRhdGlvbkFjY3VtdWxhdG9yKCkKIHsKICAgICBpZiAoIWlzRW1wdHkoKSkKICAgICAgICAg
ZW5xdWV1ZU11dGF0aW9uUmVjb3JkKCk7Ci0gICAgYWNjdW11bGF0b3JNYXAoKS5yZW1vdmUoJm1f
dGFyZ2V0LmdldCgpKTsKKyAgICBhY2N1bXVsYXRvck1hcCgpLnJlbW92ZShtX3RhcmdldC5hc1B0
cigpKTsKIH0KIAogUGFzc1JlZlB0cjxDaGlsZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9yPiBDaGls
ZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9yOjpnZXRPckNyZWF0ZShDb250YWluZXJOb2RlJiB0YXJn
ZXQpCkBAIC05Myw3ICs5Myw3IEBAIHZvaWQgQ2hpbGRMaXN0TXV0YXRpb25BY2N1bXVsYXRvcjo6
Y2hpbGRBZGRlZChOb2RlJiBjaGlsZFJlZikKICAgICAgICAgbV9uZXh0U2libGluZyA9IGNoaWxk
LT5uZXh0U2libGluZygpOwogICAgIH0KIAotICAgIG1fbGFzdEFkZGVkID0gJmNoaWxkLmdldCgp
OworICAgIG1fbGFzdEFkZGVkID0gY2hpbGQuYXNQdHIoKTsKICAgICBtX2FkZGVkTm9kZXMuYXBw
ZW5kKGNoaWxkLmdldCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0No
aWxkTm9kZUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTm9kZUxpc3QuY3BwCmlu
ZGV4IGI2OTNiY2Q5NGE5NzdhMTQyNmEyYWVjZjY3MmY0ZjIxMDAwNDc1MTMuLjY2Y2UxOGVhMWQz
OGMwZGRjMmVmNDQxOWUyNTYwZTcxZWJjNjU1NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9DaGlsZE5vZGVMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGROb2Rl
TGlzdC5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgTm9kZSogQ2hpbGROb2RlTGlzdDo6bmFtZWRJdGVt
KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3QKICAgICAvLyBGSVhNRTogQWNjb3JkaW5n
IHRvIHRoZSBzcGVjIGNoaWxkIG5vZGUgbGlzdCBzaG91bGQgbm90IGhhdmUgbmFtZWRJdGVtKCku
CiAgICAgaWYgKG1fcGFyZW50LmdldCgpLmluRG9jdW1lbnQoKSkgewogICAgICAgICBFbGVtZW50
KiBlbGVtZW50ID0gbV9wYXJlbnQuZ2V0KCkudHJlZVNjb3BlKCkuZ2V0RWxlbWVudEJ5SWQobmFt
ZSk7Ci0gICAgICAgIGlmIChlbGVtZW50ICYmIGVsZW1lbnQtPnBhcmVudE5vZGUoKSA9PSAmbV9w
YXJlbnQuZ2V0KCkpCisgICAgICAgIGlmIChlbGVtZW50ICYmIGVsZW1lbnQtPnBhcmVudE5vZGUo
KSA9PSBtX3BhcmVudC5hc1B0cigpKQogICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CiAgICAg
ICAgIGlmICghZWxlbWVudCB8fCAhbV9wYXJlbnQuZ2V0KCkudHJlZVNjb3BlKCkuY29udGFpbnNN
dWx0aXBsZUVsZW1lbnRzV2l0aElkKG5hbWUpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKaW5kZXggMjljNmJlZTM4NzgzNDA0ODk2
ZTNjNjU3MWM5OTAxMWU3NGRkMDIxOS4uNGQ2MDVmMDFmNjEyN2RlMmJkNzBlZmYxZGIzMmE5Yzdj
MWZkZmMxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcApAQCAtNTM0LDcgKzUz
NCw3IEBAIGJvb2wgQ29udGFpbmVyTm9kZTo6cmVtb3ZlQ2hpbGQoTm9kZSogb2xkQ2hpbGQsIEV4
Y2VwdGlvbkNvZGUmIGVjKQogCiAgICAgUmVmPE5vZGU+IGNoaWxkKCpvbGRDaGlsZCk7CiAKLSAg
ICBkb2N1bWVudCgpLnJlbW92ZUZvY3VzZWROb2RlT2ZTdWJ0cmVlKCZjaGlsZC5nZXQoKSk7Cisg
ICAgZG9jdW1lbnQoKS5yZW1vdmVGb2N1c2VkTm9kZU9mU3VidHJlZShjaGlsZC5hc1B0cigpKTsK
IAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICBkb2N1bWVudCgpLnJlbW92ZUZ1bGxT
Y3JlZW5FbGVtZW50T2ZTdWJ0cmVlKCZjaGlsZC5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ3VycmVudFNjcmlwdEluY3JlbWVudGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vQ3VycmVudFNjcmlwdEluY3JlbWVudGVyLmgKaW5kZXggYTNjZjhmNDcwYzljNDM1OWNiNzNi
MzgzMGUxNjVhNWY1Mzk0MmRiNS4uMDUyM2NhYTAyMzQxMTljZDk3Y2U2NjczOGI1NTc2Y2E5MDU2
ZTIwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0N1cnJlbnRTY3JpcHRJbmNyZW1l
bnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXJyZW50U2NyaXB0SW5jcmVtZW50ZXIu
aApAQCAtMzcsMjIgKzM3LDIyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEN1cnJlbnRT
Y3JpcHRJbmNyZW1lbnRlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ3VycmVudFNjcmlw
dEluY3JlbWVudGVyKTsKIHB1YmxpYzoKLSAgICBDdXJyZW50U2NyaXB0SW5jcmVtZW50ZXIoRG9j
dW1lbnQqIGRvY3VtZW50LCBFbGVtZW50KiBlbGVtZW50KQorICAgIEN1cnJlbnRTY3JpcHRJbmNy
ZW1lbnRlcihEb2N1bWVudCYgZG9jdW1lbnQsIEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgICAgIDog
bV9kb2N1bWVudChkb2N1bWVudCkKICAgICAgICAgLCBtX2lzSFRNTFNjcmlwdEVsZW1lbnQoaXM8
SFRNTFNjcmlwdEVsZW1lbnQ+KCplbGVtZW50KSkKICAgICB7CiAgICAgICAgIGlmIChtX2lzSFRN
TFNjcmlwdEVsZW1lbnQpCi0gICAgICAgICAgICBtX2RvY3VtZW50LT5wdXNoQ3VycmVudFNjcmlw
dChkb3duY2FzdDxIVE1MU2NyaXB0RWxlbWVudD4oZWxlbWVudCkpOworICAgICAgICAgICAgbV9k
b2N1bWVudC5wdXNoQ3VycmVudFNjcmlwdChkb3duY2FzdDxIVE1MU2NyaXB0RWxlbWVudD4oZWxl
bWVudCkpOwogICAgIH0KIAogICAgIH5DdXJyZW50U2NyaXB0SW5jcmVtZW50ZXIoKQogICAgIHsK
ICAgICAgICAgaWYgKG1faXNIVE1MU2NyaXB0RWxlbWVudCkKLSAgICAgICAgICAgIG1fZG9jdW1l
bnQtPnBvcEN1cnJlbnRTY3JpcHQoKTsKKyAgICAgICAgICAgIG1fZG9jdW1lbnQucG9wQ3VycmVu
dFNjcmlwdCgpOwogICAgIH0KIAogcHJpdmF0ZToKLSAgICBEb2N1bWVudCogbV9kb2N1bWVudDsK
KyAgICBEb2N1bWVudCYgbV9kb2N1bWVudDsKICAgICBib29sIG1faXNIVE1MU2NyaXB0RWxlbWVu
dDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvblJlY29yZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25SZWNvcmQuY3BwCmluZGV4IDVhNDdmYzAw
MWMxNWEyOGU5NThkZTZmMjQ1Y2IxZTkzYTcyMzgwNzEuLmUzNzFmODM1YTBkNGQxNTM1Njc4Zjgw
OTg5ZjFmZDgxZGEwZjNmNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlv
blJlY29yZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uUmVjb3JkLmNwcApA
QCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCBjb25zdCBB
dG9taWNTdHJpbmcmIHR5cGUoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIE5vZGUqIHRhcmdldCgp
IG92ZXJyaWRlIHsgcmV0dXJuICZtX3RhcmdldC5nZXQoKTsgfQorICAgIHZpcnR1YWwgTm9kZSog
dGFyZ2V0KCkgb3ZlcnJpZGUgeyByZXR1cm4gbV90YXJnZXQuYXNQdHIoKTsgfQogICAgIHZpcnR1
YWwgTm9kZUxpc3QqIGFkZGVkTm9kZXMoKSBvdmVycmlkZSB7IHJldHVybiBtX2FkZGVkTm9kZXMu
Z2V0KCk7IH0KICAgICB2aXJ0dWFsIE5vZGVMaXN0KiByZW1vdmVkTm9kZXMoKSBvdmVycmlkZSB7
IHJldHVybiBtX3JlbW92ZWROb2Rlcy5nZXQoKTsgfQogICAgIHZpcnR1YWwgTm9kZSogcHJldmlv
dXNTaWJsaW5nKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9wcmV2aW91c1NpYmxpbmcuZ2V0KCk7IH0K
QEAgLTc0LDcgKzc0LDcgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFs
IE5vZGUqIHRhcmdldCgpIG92ZXJyaWRlIHsgcmV0dXJuICZtX3RhcmdldC5nZXQoKTsgfQorICAg
IHZpcnR1YWwgTm9kZSogdGFyZ2V0KCkgb3ZlcnJpZGUgeyByZXR1cm4gbV90YXJnZXQuYXNQdHIo
KTsgfQogICAgIHZpcnR1YWwgU3RyaW5nIG9sZFZhbHVlKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9v
bGRWYWx1ZTsgfQogICAgIHZpcnR1YWwgTm9kZUxpc3QqIGFkZGVkTm9kZXMoKSBvdmVycmlkZSB7
IHJldHVybiBsYXppbHlJbml0aWFsaXplRW1wdHlOb2RlTGlzdChtX2FkZGVkTm9kZXMpOyB9CiAg
ICAgdmlydHVhbCBOb2RlTGlzdCogcmVtb3ZlZE5vZGVzKCkgb3ZlcnJpZGUgeyByZXR1cm4gbGF6
aWx5SW5pdGlhbGl6ZUVtcHR5Tm9kZUxpc3QobV9yZW1vdmVkTm9kZXMpOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZVJhcmVEYXRhLmgKaW5kZXggNWI3NGJjOWI0MmYwNWJiNGJlMTQ1YWViMTZlMmRjNTdiYzUy
ZTgxNi4uYWQ0YjIwNjhkNWJmMDdiY2I4NjMxM2EyZmJlZGY5OGRjZDljMDkyNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlUmFyZURhdGEuaApAQCAtNzUsNyArNzUsNyBAQCBwdWJsaWM6CiAgICAgICAgIGlm
IChtX2NoaWxkTm9kZUxpc3QpCiAgICAgICAgICAgICByZXR1cm4gKm1fY2hpbGROb2RlTGlzdDsK
ICAgICAgICAgYXV0byBsaXN0ID0gQ2hpbGROb2RlTGlzdDo6Y3JlYXRlKG5vZGUpOwotICAgICAg
ICBtX2NoaWxkTm9kZUxpc3QgPSAmbGlzdC5nZXQoKTsKKyAgICAgICAgbV9jaGlsZE5vZGVMaXN0
ID0gbGlzdC5hc1B0cigpOwogICAgICAgICByZXR1cm4gbGlzdDsKICAgICB9CiAKQEAgLTkzLDcg
KzkzLDcgQEAgcHVibGljOgogICAgICAgICBpZiAobV9lbXB0eUNoaWxkTm9kZUxpc3QpCiAgICAg
ICAgICAgICByZXR1cm4gKm1fZW1wdHlDaGlsZE5vZGVMaXN0OwogICAgICAgICBhdXRvIGxpc3Qg
PSBFbXB0eU5vZGVMaXN0OjpjcmVhdGUobm9kZSk7Ci0gICAgICAgIG1fZW1wdHlDaGlsZE5vZGVM
aXN0ID0gJmxpc3QuZ2V0KCk7CisgICAgICAgIG1fZW1wdHlDaGlsZE5vZGVMaXN0ID0gbGlzdC5h
c1B0cigpOwogICAgICAgICByZXR1cm4gbGlzdDsKICAgICB9CiAKQEAgLTEzOCw3ICsxMzgsNyBA
QCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gKnJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CiAK
ICAgICAgICAgYXV0byBsaXN0ID0gVGFnTm9kZUxpc3Q6OmNyZWF0ZShub2RlLCBuYW1lc3BhY2VV
UkksIGxvY2FsTmFtZSk7Ci0gICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSAmbGlzdC5n
ZXQoKTsKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IGxpc3QuYXNQdHIoKTsKICAg
ICAgICAgcmV0dXJuIGxpc3Q7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vUmFuZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNwcAppbmRleCA2ZTRmNDFh
NjYwOGZmMmIxMjk0ZWY0YTA3MDA3MGI3ZjEzZGZmMmVhLi45Y2MxMjhiNjA2Y2QwYjIyNTg3NDc2
MmU0NmRmNjdhN2VmZTUyZmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAKQEAgLTEyOCw3ICsxMjgsNyBA
QCBSYW5nZTo6flJhbmdlKCkKIAogdm9pZCBSYW5nZTo6c2V0RG9jdW1lbnQoRG9jdW1lbnQmIGRv
Y3VtZW50KQogewotICAgIEFTU0VSVCgmbV9vd25lckRvY3VtZW50LmdldCgpICE9ICZkb2N1bWVu
dCk7CisgICAgQVNTRVJUKG1fb3duZXJEb2N1bWVudC5hc1B0cigpICE9ICZkb2N1bWVudCk7CiAg
ICAgbV9vd25lckRvY3VtZW50LT5kZXRhY2hSYW5nZSh0aGlzKTsKICAgICBtX293bmVyRG9jdW1l
bnQgPSBkb2N1bWVudDsKICAgICBtX3N0YXJ0LnNldFRvU3RhcnRPZk5vZGUoJmRvY3VtZW50KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcAppbmRleCBkYjFjZmI4YTNmY2JkOTczOGFk
YmFiMzczNzUwNzQ4YWFmZWUwZjVlLi42ZWRlYWY0ODE4Y2E0ZjE5MzEyNDRjZjQ5YTBhNGFiNmNi
YjFjNzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCkBAIC0yNDUsNyArMjQ1
LDcgQEAgYm9vbCBTY3JpcHRFbGVtZW50OjpyZXF1ZXN0U2NyaXB0KGNvbnN0IFN0cmluZyYgc291
cmNlVXJsKQogICAgIFJlZjxEb2N1bWVudD4gb3JpZ2luYWxEb2N1bWVudChtX2VsZW1lbnQuZG9j
dW1lbnQoKSk7CiAgICAgaWYgKCFtX2VsZW1lbnQuZGlzcGF0Y2hCZWZvcmVMb2FkRXZlbnQoc291
cmNlVXJsKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghbV9lbGVtZW50LmluRG9j
dW1lbnQoKSB8fCAmbV9lbGVtZW50LmRvY3VtZW50KCkgIT0gJm9yaWdpbmFsRG9jdW1lbnQuZ2V0
KCkpCisgICAgaWYgKCFtX2VsZW1lbnQuaW5Eb2N1bWVudCgpIHx8ICZtX2VsZW1lbnQuZG9jdW1l
bnQoKSAhPSBvcmlnaW5hbERvY3VtZW50LmFzUHRyKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIEFTU0VSVCghbV9jYWNoZWRTY3JpcHQpOwpAQCAtMjkyLDggKzI5Miw4IEBAIHZvaWQg
U2NyaXB0RWxlbWVudDo6ZXhlY3V0ZVNjcmlwdChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3Vy
Y2VDb2RlKQogCiAgICAgUmVmPERvY3VtZW50PiBkb2N1bWVudChtX2VsZW1lbnQuZG9jdW1lbnQo
KSk7CiAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50LT5mcmFtZSgpKSB7Ci0gICAgICAg
IElnbm9yZURlc3RydWN0aXZlV3JpdGVDb3VudEluY3JlbWVudGVyIGlnbm9yZURlc2N0cnVjdGl2
ZVdyaXRlQ291bnRJbmNyZW1lbnRlcihtX2lzRXh0ZXJuYWxTY3JpcHQgPyAmZG9jdW1lbnQuZ2V0
KCkgOiAwKTsKLSAgICAgICAgQ3VycmVudFNjcmlwdEluY3JlbWVudGVyIGN1cnJlbnRTY3JpcHRJ
bmNyZW1lbnRlcigmZG9jdW1lbnQuZ2V0KCksICZtX2VsZW1lbnQpOworICAgICAgICBJZ25vcmVE
ZXN0cnVjdGl2ZVdyaXRlQ291bnRJbmNyZW1lbnRlciBpZ25vcmVEZXNjdHJ1Y3RpdmVXcml0ZUNv
dW50SW5jcmVtZW50ZXIobV9pc0V4dGVybmFsU2NyaXB0ID8gZG9jdW1lbnQuYXNQdHIoKSA6IG51
bGxwdHIpOworICAgICAgICBDdXJyZW50U2NyaXB0SW5jcmVtZW50ZXIgY3VycmVudFNjcmlwdElu
Y3JlbWVudGVyKGRvY3VtZW50LCAmbV9lbGVtZW50KTsKIAogICAgICAgICAvLyBDcmVhdGUgYSBz
Y3JpcHQgZnJvbSB0aGUgc2NyaXB0IGVsZW1lbnQgbm9kZSwgdXNpbmcgdGhlIHNjcmlwdAogICAg
ICAgICAvLyBibG9jaydzIHNvdXJjZSBhbmQgdGhlIHNjcmlwdCBibG9jaydzIHR5cGUuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU3RhdGljTm9kZUxpc3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL1N0YXRpY05vZGVMaXN0LmNwcAppbmRleCA5NDk2N2I3YmVmZGMxOGUxODIwNGIy
NTM3OWZkYTRmOTU2OWFhZjZmLi5hYTI4ZjliY2UzYTI0MDRlYmM0NTc3MjE4MjZjOWU4MmEwOWIz
ZDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU3RhdGljTm9kZUxpc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TdGF0aWNOb2RlTGlzdC5jcHAKQEAgLTM5LDcgKzM5LDcg
QEAgdW5zaWduZWQgU3RhdGljTm9kZUxpc3Q6Omxlbmd0aCgpIGNvbnN0CiBOb2RlKiBTdGF0aWNO
b2RlTGlzdDo6aXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3QKIHsKICAgICBpZiAoaW5kZXggPCBt
X25vZGVzLnNpemUoKSkKLSAgICAgICAgcmV0dXJuICZjb25zdF9jYXN0PE5vZGUmPihtX25vZGVz
W2luZGV4XS5nZXQoKSk7CisgICAgICAgIHJldHVybiBjb25zdF9jYXN0PE5vZGUqPihtX25vZGVz
W2luZGV4XS5hc1B0cigpKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApAQCAtNjEsNyArNjEs
NyBAQCB1bnNpZ25lZCBTdGF0aWNFbGVtZW50TGlzdDo6bGVuZ3RoKCkgY29uc3QKIE5vZGUqIFN0
YXRpY0VsZW1lbnRMaXN0OjppdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdAogewogICAgIGlmIChp
bmRleCA8IG1fZWxlbWVudHMuc2l6ZSgpKQotICAgICAgICByZXR1cm4gJmNvbnN0X2Nhc3Q8RWxl
bWVudCY+KG1fZWxlbWVudHNbaW5kZXhdLmdldCgpKTsKKyAgICAgICAgcmV0dXJuIGNvbnN0X2Nh
c3Q8RWxlbWVudCo+KG1fZWxlbWVudHNbaW5kZXhdLmFzUHRyKCkpOwogICAgIHJldHVybiBudWxs
cHRyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVk
aXRDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1h
bmQuY3BwCmluZGV4IDY1ZTRhNjA4ZjA0ZmJiOTk4MWYzNjM2NDdmZDAxNTQwNDM2MDBkZWYuLjg3
ZjE0ZjBlOWIwM2ZiMmZkYmQ1OGJhMWIxYTEyMmNiZWRiNWM5YWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCkBAIC00MzYsOSArNDM2LDkg
QEAgdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6bW92ZVJlbWFpbmluZ1NpYmxpbmdzVG9OZXdQ
YXJlbnQoTm9kZSogbm9kZSwgTm9kZSogcGEKICAgICBmb3IgKDsgbm9kZSAmJiBub2RlICE9IHBh
c3RMYXN0Tm9kZVRvTW92ZTsgbm9kZSA9IG5vZGUtPm5leHRTaWJsaW5nKCkpCiAgICAgICAgIG5v
ZGVzVG9SZW1vdmUuYXBwZW5kKCpub2RlKTsKIAotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBub2Rlc1RvUmVtb3ZlLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIHJlbW92ZU5vZGUoJm5vZGVz
VG9SZW1vdmVbaV0uZ2V0KCkpOwotICAgICAgICBhcHBlbmROb2RlKCZub2Rlc1RvUmVtb3ZlW2ld
LmdldCgpLCBuZXdQYXJlbnQpOworICAgIGZvciAoYXV0byYgbm9kZVRvUmVtb3ZlIDogbm9kZXNU
b1JlbW92ZSkgeworICAgICAgICByZW1vdmVOb2RlKG5vZGVUb1JlbW92ZS5hc1B0cigpKTsKKyAg
ICAgICAgYXBwZW5kTm9kZShub2RlVG9SZW1vdmUuYXNQdHIoKSwgbmV3UGFyZW50KTsKICAgICB9
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGljdGF0aW9uQ29tbWFu
ZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RpY3RhdGlvbkNvbW1hbmQuY3BwCmluZGV4
IDcyMjg4MjU5MWVjZWVhZDMyNDllZmU2NjcxYmI5YWRiNjM2ZjA4M2IuLjg4ODY2ZThkMDMwMzll
MzcwNmVmZmVjYWMxYmFmYTFlNDNmZjM2MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRGljdGF0aW9uQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9E
aWN0YXRpb25Db21tYW5kLmNwcApAQCAtODYsOSArODYsOSBAQCBEaWN0YXRpb25Db21tYW5kOjpE
aWN0YXRpb25Db21tYW5kKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBj
b25zdAogewogfQogCi12b2lkIERpY3RhdGlvbkNvbW1hbmQ6Omluc2VydFRleHQoRG9jdW1lbnQq
IGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFZlY3RvcjxEaWN0YXRpb25BbHRl
cm5hdGl2ZT4mIGFsdGVybmF0aXZlcywgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9u
Rm9ySW5zZXJ0aW9uKQordm9pZCBEaWN0YXRpb25Db21tYW5kOjppbnNlcnRUZXh0KERvY3VtZW50
JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBWZWN0b3I8RGljdGF0aW9uQWx0
ZXJuYXRpdmU+JiBhbHRlcm5hdGl2ZXMsIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlv
bkZvckluc2VydGlvbikKIHsKLSAgICBSZWZQdHI8RnJhbWU+IGZyYW1lID0gZG9jdW1lbnQtPmZy
YW1lKCk7CisgICAgUmVmUHRyPEZyYW1lPiBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCk7CiAgICAg
QVNTRVJUKGZyYW1lKTsKIAogICAgIFZpc2libGVTZWxlY3Rpb24gY3VycmVudFNlbGVjdGlvbiA9
IGZyYW1lLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKTsKQEAgLTk3LDExICs5NywxMSBAQCB2b2lk
IERpY3RhdGlvbkNvbW1hbmQ6Omluc2VydFRleHQoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBT
dHJpbmcmIHRleHQsIGNvbnN0CiAKICAgICBSZWZQdHI8RGljdGF0aW9uQ29tbWFuZD4gY21kOwog
ICAgIGlmIChuZXdUZXh0ID09IHRleHQpCi0gICAgICAgIGNtZCA9IERpY3RhdGlvbkNvbW1hbmQ6
OmNyZWF0ZSgqZG9jdW1lbnQsIG5ld1RleHQsIGFsdGVybmF0aXZlcyk7CisgICAgICAgIGNtZCA9
IERpY3RhdGlvbkNvbW1hbmQ6OmNyZWF0ZShkb2N1bWVudCwgbmV3VGV4dCwgYWx0ZXJuYXRpdmVz
KTsKICAgICBlbHNlCiAgICAgICAgIC8vIElmIHRoZSB0ZXh0IHdhcyBtb2RpZmllZCBiZWZvcmUg
aW5zZXJ0aW9uLCB0aGUgbG9jYXRpb24gb2YgZGljdGF0aW9uIGFsdGVybmF0aXZlcwogICAgICAg
ICAvLyB3aWxsIG5vdCBiZSB2YWxpZCBhbnltb3JlLiBXZSB3aWxsIGp1c3QgZHJvcCB0aGUgYWx0
ZXJuYXRpdmVzLgotICAgICAgICBjbWQgPSBEaWN0YXRpb25Db21tYW5kOjpjcmVhdGUoKmRvY3Vt
ZW50LCBuZXdUZXh0LCBWZWN0b3I8RGljdGF0aW9uQWx0ZXJuYXRpdmU+KCkpOworICAgICAgICBj
bWQgPSBEaWN0YXRpb25Db21tYW5kOjpjcmVhdGUoZG9jdW1lbnQsIG5ld1RleHQsIFZlY3RvcjxE
aWN0YXRpb25BbHRlcm5hdGl2ZT4oKSk7CiAgICAgYXBwbHlUZXh0SW5zZXJ0aW9uQ29tbWFuZChm
cmFtZS5nZXQoKSwgY21kLCBzZWxlY3Rpb25Gb3JJbnNlcnRpb24sIGN1cnJlbnRTZWxlY3Rpb24p
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RpY3RhdGlvbkNvbW1h
bmQuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGljdGF0aW9uQ29tbWFuZC5oCmluZGV4IDFk
ZWUxOWJmMmEyNmNkMGY3MDQzMGY4OWY3MGEyMzQ3YjMzODgzOWYuLmQ0ZjZkNDVkODgwYTcyODRl
NjAyZTA0ZDhkYmYwNjY1MGRlYTY2ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRGljdGF0aW9uQ29tbWFuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGljdGF0
aW9uQ29tbWFuZC5oCkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIERvY3VtZW50TWFya2VyOwogY2xh
c3MgRGljdGF0aW9uQ29tbWFuZCA6IHB1YmxpYyBUZXh0SW5zZXJ0aW9uQmFzZUNvbW1hbmQgewog
ICAgIGZyaWVuZCBjbGFzcyBEaWN0YXRpb25Db21tYW5kTGluZU9wZXJhdGlvbjsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgdm9pZCBpbnNlcnRUZXh0KERvY3VtZW50KiwgY29uc3QgU3RyaW5nJiwgY29u
c3QgVmVjdG9yPERpY3RhdGlvbkFsdGVybmF0aXZlPiYgYWx0ZXJuYXRpdmVzLCBjb25zdCBWaXNp
YmxlU2VsZWN0aW9uJik7CisgICAgc3RhdGljIHZvaWQgaW5zZXJ0VGV4dChEb2N1bWVudCYsIGNv
bnN0IFN0cmluZyYsIGNvbnN0IFZlY3RvcjxEaWN0YXRpb25BbHRlcm5hdGl2ZT4mIGFsdGVybmF0
aXZlcywgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYpOwogICAgIHZpcnR1YWwgYm9vbCBpc0RpY3Rh
dGlvbkNvbW1hbmQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiBwcml2YXRlOgogICAgIHN0YXRp
YyBQYXNzUmVmUHRyPERpY3RhdGlvbkNvbW1hbmQ+IGNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQs
IGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgVmVjdG9yPERpY3RhdGlvbkFsdGVybmF0aXZlPiYg
YWx0ZXJuYXRpdmVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDg0YThkZDFmYjIx
MWRkMDQzZGUyODE2ZGUwMmU2ZjEwMzA1NDFjNTAuLjQwZjczM2I5ZWU0ZjIwN2YxZDA0N2Y0MjQ1
MGJiNmE1NWNhMmI5ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTEyMTQsNyAr
MTIxNCw3IEBAIGJvb2wgRWRpdG9yOjppbnNlcnRUZXh0V2l0aG91dFNlbmRpbmdUZXh0RXZlbnQo
Y29uc3QgU3RyaW5nJiB0ZXh0LCBib29sIHNlbGVjdEluCiAKICAgICAgICAgICAgIC8vIEluc2Vy
dCB0aGUgdGV4dAogICAgICAgICAgICAgaWYgKHRyaWdnZXJpbmdFdmVudCAmJiB0cmlnZ2VyaW5n
RXZlbnQtPmlzRGljdGF0aW9uKCkpCi0gICAgICAgICAgICAgICAgRGljdGF0aW9uQ29tbWFuZDo6
aW5zZXJ0VGV4dCgmZG9jdW1lbnQuZ2V0KCksIHRleHQsIHRyaWdnZXJpbmdFdmVudC0+ZGljdGF0
aW9uQWx0ZXJuYXRpdmVzKCksIHNlbGVjdGlvbik7CisgICAgICAgICAgICAgICAgRGljdGF0aW9u
Q29tbWFuZDo6aW5zZXJ0VGV4dChkb2N1bWVudCwgdGV4dCwgdHJpZ2dlcmluZ0V2ZW50LT5kaWN0
YXRpb25BbHRlcm5hdGl2ZXMoKSwgc2VsZWN0aW9uKTsKICAgICAgICAgICAgIGVsc2UgewogICAg
ICAgICAgICAgICAgIFR5cGluZ0NvbW1hbmQ6Ok9wdGlvbnMgb3B0aW9ucyA9IDA7CiAgICAgICAg
ICAgICAgICAgaWYgKHNlbGVjdEluc2VydGVkVGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvUmVwbGFjZU5vZGVXaXRoU3BhbkNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9SZXBsYWNlTm9kZVdpdGhTcGFuQ29tbWFuZC5jcHAKaW5kZXggZDQxN2VkNTM4
NzRlYzk0OWY0YzgxYzdkYzAxYzE1Y2EwM2UyMWJiMS4uYzM2MmM4NDQzMWRiMWFhZTZlZTExZWI0
ZjU4ZGQ3ZTkzZmQyMTA0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBs
YWNlTm9kZVdpdGhTcGFuQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9S
ZXBsYWNlTm9kZVdpdGhTcGFuQ29tbWFuZC5jcHAKQEAgLTU3LDggKzU3LDggQEAgc3RhdGljIHZv
aWQgc3dhcEluTm9kZVByZXNlcnZpbmdBdHRyaWJ1dGVzQW5kQ2hpbGRyZW4oSFRNTEVsZW1lbnQq
IG5ld05vZGUsIEhUTUwKICAgICBuZXdOb2RlLT5jbG9uZURhdGFGcm9tRWxlbWVudCgqbm9kZVRv
UmVwbGFjZSk7CiAgICAgTm9kZVZlY3RvciBjaGlsZHJlbjsKICAgICBnZXRDaGlsZE5vZGVzKCpu
b2RlVG9SZXBsYWNlLCBjaGlsZHJlbik7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjaGls
ZHJlbi5zaXplKCk7ICsraSkKLSAgICAgICAgbmV3Tm9kZS0+YXBwZW5kQ2hpbGQoJmNoaWxkcmVu
W2ldLmdldCgpLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICBmb3IgKGF1dG8mIGNoaWxkIDog
Y2hpbGRyZW4pCisgICAgICAgIG5ld05vZGUtPmFwcGVuZENoaWxkKGNoaWxkLmFzUHRyKCksIEFT
U0VSVF9OT19FWENFUFRJT04pOwogCiAgICAgcGFyZW50Tm9kZS0+aW5zZXJ0QmVmb3JlKG5ld05v
ZGUsIG5vZGVUb1JlcGxhY2UsIEFTU0VSVF9OT19FWENFUFRJT04pOwogICAgIHBhcmVudE5vZGUt
PnJlbW92ZUNoaWxkKG5vZGVUb1JlcGxhY2UsIEFTU0VSVF9OT19FWENFUFRJT04pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TaW1wbGlmeU1hcmt1cENvbW1hbmQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9TaW1wbGlmeU1hcmt1cENvbW1hbmQuY3BwCmluZGV4IDEz
Y2RhMzZiZjE3OTZlMGYxOTI3ZDYxMTFmNGEzMTVmOWUyNjY5NDcuLjVhYjljMWE1OWRmNDkyODk0
ZmMxYjcwNDQ3YmQxNjJmYTlhNjA5NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvU2ltcGxpZnlNYXJrdXBDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1NpbXBsaWZ5TWFya3VwQ29tbWFuZC5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgdm9pZCBTaW1wbGlm
eU1hcmt1cENvbW1hbmQ6OmRvQXBwbHkoKQogICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAg
ICAgICAgICAgICB1bnNpZ25lZCBjb250ZXh0OwotICAgICAgICAgICAgaWYgKGN1cnJlbnROb2Rl
LT5yZW5kZXJTdHlsZSgpLT5kaWZmKHN0YXJ0aW5nU3R5bGUsIGNvbnRleHQpID09IFN0eWxlRGlm
ZmVyZW5jZUVxdWFsKQorICAgICAgICAgICAgaWYgKGN1cnJlbnROb2RlLT5yZW5kZXJTdHlsZSgp
LT5kaWZmKCpzdGFydGluZ1N0eWxlLCBjb250ZXh0KSA9PSBTdHlsZURpZmZlcmVuY2VFcXVhbCkK
ICAgICAgICAgICAgICAgICB0b3BOb2RlV2l0aFN0YXJ0aW5nU3R5bGUgPSBjdXJyZW50Tm9kZTsK
ICAgICAgICAgICAgIAogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL21hcmt1cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKaW5kZXgg
NDFkNmQ1OWY2MmZhNWNjMzdjY2U0MTBhYzhkYzUyMTViNTk5MDRmMi4uMzA2ZmE1MjA0YTVmN2Q0
ZmIxNjJhZjVlMWU5ODQ5ZTA0Zjg2NmFmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9tYXJrdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcApA
QCAtOTgwLDE1ICs5ODAsMTUgQEAgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVD
b250ZXh0dWFsRnJhZ21lbnQoY29uc3QgU3RyaW5nJiBtYXJrdXAsIEhUTUwKICAgICByZXR1cm4g
ZnJhZ21lbnQucmVsZWFzZSgpOwogfQogCi1zdGF0aWMgaW5saW5lIGJvb2wgaGFzT25lQ2hpbGQo
Q29udGFpbmVyTm9kZSogbm9kZSkKK3N0YXRpYyBpbmxpbmUgYm9vbCBoYXNPbmVDaGlsZChDb250
YWluZXJOb2RlJiBub2RlKQogewotICAgIE5vZGUqIGZpcnN0Q2hpbGQgPSBub2RlLT5maXJzdENo
aWxkKCk7CisgICAgTm9kZSogZmlyc3RDaGlsZCA9IG5vZGUuZmlyc3RDaGlsZCgpOwogICAgIHJl
dHVybiBmaXJzdENoaWxkICYmICFmaXJzdENoaWxkLT5uZXh0U2libGluZygpOwogfQogCi1zdGF0
aWMgaW5saW5lIGJvb2wgaGFzT25lVGV4dENoaWxkKENvbnRhaW5lck5vZGUqIG5vZGUpCitzdGF0
aWMgaW5saW5lIGJvb2wgaGFzT25lVGV4dENoaWxkKENvbnRhaW5lck5vZGUmIG5vZGUpCiB7Ci0g
ICAgcmV0dXJuIGhhc09uZUNoaWxkKG5vZGUpICYmIG5vZGUtPmZpcnN0Q2hpbGQoKS0+aXNUZXh0
Tm9kZSgpOworICAgIHJldHVybiBoYXNPbmVDaGlsZChub2RlKSAmJiBub2RlLmZpcnN0Q2hpbGQo
KS0+aXNUZXh0Tm9kZSgpOwogfQogCiB2b2lkIHJlcGxhY2VDaGlsZHJlbldpdGhGcmFnbWVudChD
b250YWluZXJOb2RlJiBjb250YWluZXIsIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJh
Z21lbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtMTAwMSwxMiArMTAwMSwxMiBAQCB2b2lkIHJl
cGxhY2VDaGlsZHJlbldpdGhGcmFnbWVudChDb250YWluZXJOb2RlJiBjb250YWluZXIsIFBhc3NS
ZWZQdHI8RG9jdW1lbnRGcgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKGhhc09u
ZVRleHRDaGlsZCgmY29udGFpbmVyTm9kZS5nZXQoKSkgJiYgaGFzT25lVGV4dENoaWxkKGZyYWdt
ZW50LmdldCgpKSkgeworICAgIGlmIChoYXNPbmVUZXh0Q2hpbGQoY29udGFpbmVyTm9kZSkgJiYg
aGFzT25lVGV4dENoaWxkKCpmcmFnbWVudCkpIHsKICAgICAgICAgZG93bmNhc3Q8VGV4dD4oKmNv
bnRhaW5lck5vZGUtPmZpcnN0Q2hpbGQoKSkuc2V0RGF0YShkb3duY2FzdDxUZXh0PigqZnJhZ21l
bnQtPmZpcnN0Q2hpbGQoKSkuZGF0YSgpLCBlYyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBpZiAoaGFzT25lQ2hpbGQoJmNvbnRhaW5lck5vZGUuZ2V0KCkpKSB7CisgICAgaWYgKGhh
c09uZUNoaWxkKGNvbnRhaW5lck5vZGUpKSB7CiAgICAgICAgIGNvbnRhaW5lck5vZGUtPnJlcGxh
Y2VDaGlsZChmcmFnbWVudCwgY29udGFpbmVyTm9kZS0+Zmlyc3RDaGlsZCgpLCBlYyk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CkBAIC0xMDIwLDE0ICsxMDIwLDE0IEBAIHZvaWQgcmVwbGFjZUNo
aWxkcmVuV2l0aFRleHQoQ29udGFpbmVyTm9kZSYgY29udGFpbmVyLCBjb25zdCBTdHJpbmcmIHRl
eHQsIEV4Y2VwCiAgICAgUmVmPENvbnRhaW5lck5vZGU+IGNvbnRhaW5lck5vZGUoY29udGFpbmVy
KTsKICAgICBDaGlsZExpc3RNdXRhdGlvblNjb3BlIG11dGF0aW9uKGNvbnRhaW5lck5vZGUpOwog
Ci0gICAgaWYgKGhhc09uZVRleHRDaGlsZCgmY29udGFpbmVyTm9kZS5nZXQoKSkpIHsKKyAgICBp
ZiAoaGFzT25lVGV4dENoaWxkKGNvbnRhaW5lck5vZGUpKSB7CiAgICAgICAgIGRvd25jYXN0PFRl
eHQ+KCpjb250YWluZXJOb2RlLT5maXJzdENoaWxkKCkpLnNldERhdGEodGV4dCwgZWMpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCiAgICAgUmVmUHRyPFRleHQ+IHRleHROb2RlID0gVGV4dDo6
Y3JlYXRlKGNvbnRhaW5lck5vZGUtPmRvY3VtZW50KCksIHRleHQpOwogCi0gICAgaWYgKGhhc09u
ZUNoaWxkKCZjb250YWluZXJOb2RlLmdldCgpKSkgeworICAgIGlmIChoYXNPbmVDaGlsZChjb250
YWluZXJOb2RlKSkgewogICAgICAgICBjb250YWluZXJOb2RlLT5yZXBsYWNlQ2hpbGQodGV4dE5v
ZGUucmVsZWFzZSgpLCBjb250YWluZXJOb2RlLT5maXJzdENoaWxkKCksIGVjKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1D
b250cm9sRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVs
ZW1lbnQuY3BwCmluZGV4IGYzZDhlNTM0OWRhZThmM2U1MjQ3YmM5MzUwMDJmMTY0ODU5MDlmYTcu
LjI4MDU1YmU4ZGI3OGZiZmJlN2MyYzgyZWNjMTdmYzMyMzc2MjhiMjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcApAQCAtNDA5LDcgKzQwOSw3
IEBAIGJvb2wgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6Y2hlY2tWYWxpZGl0eShWZWN0b3I8UmVm
UHRyPEZvcm1Bc3NvY2lhdGVkRWxlbWVudD4+CiAgICAgUmVmPEhUTUxGb3JtQ29udHJvbEVsZW1l
bnQ+IHByb3RlY3QoKnRoaXMpOwogICAgIFJlZjxEb2N1bWVudD4gb3JpZ2luYWxEb2N1bWVudChk
b2N1bWVudCgpKTsKICAgICBib29sIG5lZWRzRGVmYXVsdEFjdGlvbiA9IGRpc3BhdGNoRXZlbnQo
RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuaW52YWxpZEV2ZW50LCBmYWxzZSwgdHJ1ZSkpOwot
ICAgIGlmIChuZWVkc0RlZmF1bHRBY3Rpb24gJiYgdW5oYW5kbGVkSW52YWxpZENvbnRyb2xzICYm
IGluRG9jdW1lbnQoKSAmJiAmb3JpZ2luYWxEb2N1bWVudC5nZXQoKSA9PSAmZG9jdW1lbnQoKSkK
KyAgICBpZiAobmVlZHNEZWZhdWx0QWN0aW9uICYmIHVuaGFuZGxlZEludmFsaWRDb250cm9scyAm
JiBpbkRvY3VtZW50KCkgJiYgb3JpZ2luYWxEb2N1bWVudC5hc1B0cigpID09ICZkb2N1bWVudCgp
KQogICAgICAgICB1bmhhbmRsZWRJbnZhbGlkQ29udHJvbHMtPmFwcGVuZCh0aGlzKTsKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3Jt
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKaW5k
ZXggMzBkZjZlMDM4OWUyNmQzYjZlNTQ0M2EyZGY4ZmFmMDAwMTMzNzZkMC4uNjk3MzdjN2E5YzUy
NTc2ODc4OTJkOTFiNDAxZTM4ZDI2MDhlOTM2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZv
cm1FbGVtZW50LmNwcApAQCAtNzk5LDcgKzc5OSw3IEBAIHZvaWQgSFRNTEZvcm1FbGVtZW50Ojpn
ZXROYW1lZEVsZW1lbnRzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgVmVjdG9yPFJlZjxFbGVt
CiAgICAgZWxlbWVudHMoKS0+bmFtZWRJdGVtcyhuYW1lLCBuYW1lZEl0ZW1zKTsKIAogICAgIEhU
TUxFbGVtZW50KiBlbGVtZW50RnJvbVBhc3QgPSBlbGVtZW50RnJvbVBhc3ROYW1lc01hcChuYW1l
KTsKLSAgICBpZiAobmFtZWRJdGVtcy5zaXplKCkgPT0gMSAmJiAmbmFtZWRJdGVtcy5maXJzdCgp
LmdldCgpICE9IGVsZW1lbnRGcm9tUGFzdCkKKyAgICBpZiAobmFtZWRJdGVtcy5zaXplKCkgPT0g
MSAmJiBuYW1lZEl0ZW1zLmZpcnN0KCkuYXNQdHIoKSAhPSBlbGVtZW50RnJvbVBhc3QpCiAgICAg
ICAgIGFkZFRvUGFzdE5hbWVzTWFwKGRvd25jYXN0PEhUTUxFbGVtZW50PihuYW1lZEl0ZW1zLmZp
cnN0KCkuZ2V0KCkpLmFzRm9ybU5hbWVkSXRlbSgpLCBuYW1lKTsKICAgICBlbHNlIGlmIChlbGVt
ZW50RnJvbVBhc3QgJiYgbmFtZWRJdGVtcy5pc0VtcHR5KCkpCiAgICAgICAgIG5hbWVkSXRlbXMu
YXBwZW5kKCplbGVtZW50RnJvbVBhc3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTGlua0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1l
bnQuY3BwCmluZGV4IDU3MmMyMDJkZjQxYmFiMjM4ZDI3MDRhZjdlODY1MzNlYWVkZGU1NTguLjVk
NTliNTRiMDUzY2RhMWNmMGYwMmE1YzViYTVmMmIyOWQyNTcyMmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKQEAgLTE3NSw3ICsxNzUsNyBAQCBib29sIEhUTUxMaW5r
RWxlbWVudDo6c2hvdWxkTG9hZExpbmsoKQogICAgIGlmICghZGlzcGF0Y2hCZWZvcmVMb2FkRXZl
bnQoZ2V0Tm9uRW1wdHlVUkxBdHRyaWJ1dGUoaHJlZkF0dHIpKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIC8vIEEgYmVmb3JlbG9hZCBoYW5kbGVyIG1pZ2h0IGhhdmUgcmVtb3ZlZCB1cyBm
cm9tIHRoZSBkb2N1bWVudCBvciBjaGFuZ2VkIHRoZSBkb2N1bWVudC4KLSAgICBpZiAoIWluRG9j
dW1lbnQoKSB8fCAmZG9jdW1lbnQoKSAhPSAmb3JpZ2luYWxEb2N1bWVudC5nZXQoKSkKKyAgICBp
ZiAoIWluRG9jdW1lbnQoKSB8fCAmZG9jdW1lbnQoKSAhPSBvcmlnaW5hbERvY3VtZW50LmFzUHRy
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAppbmRleCA4NGRj
MDM0MTA0ZGY2NjlkMDdkODY5NGQxZTljZTQ4MmJlMmQzNzFiLi5lZjUyYWY1MTEwYzEwMDMzYTlh
M2ZlNWRkOGU1ZmYwNjQzYWJkZGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCkBAIC0xMDQxLDEwICsxMDQxLDEwIEBAIFBhc3NSZWZQ
dHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpTZWxlY3Rvckxpc3Q+IEluc3BlY3RvclN0eWxl
U2hlZXQ6OmJ1aWxkT2JqCiAgICAgU3RyaW5nIHNlbGVjdG9yVGV4dCA9IHJ1bGUtPnNlbGVjdG9y
VGV4dCgpOwogCiAgICAgaWYgKHNvdXJjZURhdGEpCi0gICAgICAgIHNlbGVjdG9ycyA9IHNlbGVj
dG9yc0Zyb21Tb3VyY2Uoc291cmNlRGF0YS5nZXQoKSwgbV9wYXJzZWRTdHlsZVNoZWV0LT50ZXh0
KCksIHJ1bGUtPnN0eWxlUnVsZSgpLT5zZWxlY3Rvckxpc3QoKSk7CisgICAgICAgIHNlbGVjdG9y
cyA9IHNlbGVjdG9yc0Zyb21Tb3VyY2Uoc291cmNlRGF0YS5nZXQoKSwgbV9wYXJzZWRTdHlsZVNo
ZWV0LT50ZXh0KCksIHJ1bGUtPnN0eWxlUnVsZSgpLnNlbGVjdG9yTGlzdCgpKTsKICAgICBlbHNl
IHsKICAgICAgICAgc2VsZWN0b3JzID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVj
dG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTZWxlY3Rvcj46OmNyZWF0ZSgpOwotICAgICAgICBjb25z
dCBDU1NTZWxlY3Rvckxpc3QmIHNlbGVjdG9yTGlzdCA9IHJ1bGUtPnN0eWxlUnVsZSgpLT5zZWxl
Y3Rvckxpc3QoKTsKKyAgICAgICAgY29uc3QgQ1NTU2VsZWN0b3JMaXN0JiBzZWxlY3Rvckxpc3Qg
PSBydWxlLT5zdHlsZVJ1bGUoKS5zZWxlY3Rvckxpc3QoKTsKICAgICAgICAgZm9yIChjb25zdCBD
U1NTZWxlY3Rvciogc2VsZWN0b3IgPSBzZWxlY3Rvckxpc3QuZmlyc3QoKTsgc2VsZWN0b3I7IHNl
bGVjdG9yID0gQ1NTU2VsZWN0b3JMaXN0OjpuZXh0KHNlbGVjdG9yKSkKICAgICAgICAgICAgIHNl
bGVjdG9ycy0+YWRkSXRlbShidWlsZE9iamVjdEZvclNlbGVjdG9yKHNlbGVjdG9yKSk7CiAgICAg
fQpAQCAtMTA2NSw3ICsxMDY1LDcgQEAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpD
U1M6OkNTU1J1bGU+IEluc3BlY3RvclN0eWxlU2hlZXQ6OmJ1aWxkT2JqZWN0Rm8KIAogICAgIFJl
ZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1J1bGU+IHJlc3VsdCA9IEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkNTUzo6Q1NTUnVsZTo6Y3JlYXRlKCkKICAgICAgICAgLnNldFNlbGVjdG9y
TGlzdChidWlsZE9iamVjdEZvclNlbGVjdG9yTGlzdChydWxlKSkKLSAgICAgICAgLnNldFNvdXJj
ZUxpbmUocnVsZS0+c3R5bGVSdWxlKCktPnNvdXJjZUxpbmUoKSkKKyAgICAgICAgLnNldFNvdXJj
ZUxpbmUocnVsZS0+c3R5bGVSdWxlKCkuc291cmNlTGluZSgpKQogICAgICAgICAuc2V0T3JpZ2lu
KG1fb3JpZ2luKQogICAgICAgICAuc2V0U3R5bGUoYnVpbGRPYmplY3RGb3JTdHlsZSgmcnVsZS0+
c3R5bGUoKSkpOwogCkBAIC0xMzYxLDcgKzEzNjEsNyBAQCB2b2lkIEluc3BlY3RvclN0eWxlU2hl
ZXQ6OnJldmFsaWRhdGVTdHlsZShDU1NTdHlsZURlY2xhcmF0aW9uKiBwYWdlU3R5bGUpCiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMCwgc2l6ZSA9IG1fZmxhdFJ1bGVzLnNpemUoKTsgaSA8IHNpemU7
ICsraSkgewogICAgICAgICBDU1NTdHlsZVJ1bGUqIHBhcnNlZFJ1bGUgPSBtX2ZsYXRSdWxlcy5h
dChpKS5nZXQoKTsKICAgICAgICAgaWYgKCZwYXJzZWRSdWxlLT5zdHlsZSgpID09IHBhZ2VTdHls
ZSkgewotICAgICAgICAgICAgaWYgKHBhcnNlZFJ1bGUtPnN0eWxlUnVsZSgpLT5wcm9wZXJ0aWVz
KCkuYXNUZXh0KCkgIT0gcGFnZVN0eWxlLT5jc3NUZXh0KCkpIHsKKyAgICAgICAgICAgIGlmIChw
YXJzZWRSdWxlLT5zdHlsZVJ1bGUoKS5wcm9wZXJ0aWVzKCkuYXNUZXh0KCkgIT0gcGFnZVN0eWxl
LT5jc3NUZXh0KCkpIHsKICAgICAgICAgICAgICAgICAvLyBDbGVhciB0aGUgZGlzYWJsZWQgcHJv
cGVydGllcyBmb3IgdGhlIGludmFsaWQgc3R5bGUgaGVyZS4KICAgICAgICAgICAgICAgICBtX2lu
c3BlY3RvclN0eWxlcy5yZW1vdmUocGFnZVN0eWxlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5jcHAKaW5kZXggNjc1Yjc2YTU2ZWUzN2E1MWRkNTdhNTZhMjczMDA3MDhkYWI5ODNi
OC4uOGJiNWI3ODAyMmVhMmY0NmVhM2RmZThkNzQ1MWIzNmVmMzI1NWZkNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0yOTcxLDcgKzI5NzEsNyBAQCB2b2lkIEZyYW1l
TG9hZGVyOjpjb250aW51ZUxvYWRBZnRlck5ld1dpbmRvd1BvbGljeShjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlcwogICAgIG1haW5GcmFtZS0+cGFnZSgpLT5zZXRPcGVuZWRCeURPTSgpOwog
ICAgIG1haW5GcmFtZS0+bG9hZGVyKCkubV9jbGllbnQuZGlzcGF0Y2hTaG93KCk7CiAgICAgaWYg
KCFtX3N1cHByZXNzT3BlbmVySW5OZXdGcmFtZSkgewotICAgICAgICBtYWluRnJhbWUtPmxvYWRl
cigpLnNldE9wZW5lcigmZnJhbWUuZ2V0KCkpOworICAgICAgICBtYWluRnJhbWUtPmxvYWRlcigp
LnNldE9wZW5lcihmcmFtZS5hc1B0cigpKTsKICAgICAgICAgbWFpbkZyYW1lLT5kb2N1bWVudCgp
LT5zZXRSZWZlcnJlclBvbGljeShmcmFtZS0+ZG9jdW1lbnQoKS0+cmVmZXJyZXJQb2xpY3koKSk7
CiAgICAgfQogICAgIG1haW5GcmFtZS0+bG9hZGVyKCkubG9hZFdpdGhOYXZpZ2F0aW9uQWN0aW9u
KHJlcXVlc3QsIE5hdmlnYXRpb25BY3Rpb24ocmVxdWVzdCksIExvY2tIaXN0b3J5OjpObywgRnJh
bWVMb2FkVHlwZTo6U3RhbmRhcmQsIGZvcm1TdGF0ZSwgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlk
VVJMKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAppbmRleCBjYTQzMjA4
ZDZkY2M1MmFlZjkxMGMxNjE4M2I1NzI5Mzk3NTQ5OWE2Li42MThhZWZiYTYzYWRiNDc4ZDE3ZDI0
YzE1YjQyOTRiNTIyODAwZTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3Vz
Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIu
Y3BwCkBAIC01ODcsOSArNTg3LDkgQEAgc3RhdGljIHZvaWQgY2xlYXJTZWxlY3Rpb25JZk5lZWRl
ZChGcmFtZSogb2xkRm9jdXNlZEZyYW1lLCBGcmFtZSogbmV3Rm9jdXNlZEZyYW0KIGJvb2wgRm9j
dXNDb250cm9sbGVyOjpzZXRGb2N1c2VkRWxlbWVudChFbGVtZW50KiBlbGVtZW50LCBQYXNzUmVm
UHRyPEZyYW1lPiBuZXdGb2N1c2VkRnJhbWUsIEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbikKIHsK
ICAgICBSZWZQdHI8RnJhbWU+IG9sZEZvY3VzZWRGcmFtZSA9IGZvY3VzZWRGcmFtZSgpOwotICAg
IFJlZlB0cjxEb2N1bWVudD4gb2xkRG9jdW1lbnQgPSBvbGRGb2N1c2VkRnJhbWUgPyBvbGRGb2N1
c2VkRnJhbWUtPmRvY3VtZW50KCkgOiAwOworICAgIFJlZlB0cjxEb2N1bWVudD4gb2xkRG9jdW1l
bnQgPSBvbGRGb2N1c2VkRnJhbWUgPyBvbGRGb2N1c2VkRnJhbWUtPmRvY3VtZW50KCkgOiBudWxs
cHRyOwogICAgIAotICAgIEVsZW1lbnQqIG9sZEZvY3VzZWRFbGVtZW50ID0gb2xkRG9jdW1lbnQg
PyBvbGREb2N1bWVudC0+Zm9jdXNlZEVsZW1lbnQoKSA6IDA7CisgICAgRWxlbWVudCogb2xkRm9j
dXNlZEVsZW1lbnQgPSBvbGREb2N1bWVudCA/IG9sZERvY3VtZW50LT5mb2N1c2VkRWxlbWVudCgp
IDogbnVsbHB0cjsKICAgICBpZiAob2xkRm9jdXNlZEVsZW1lbnQgPT0gZWxlbWVudCkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAKQEAgLTYwMyw3ICs2MDMsNyBAQCBib29sIEZvY3VzQ29udHJvbGxl
cjo6c2V0Rm9jdXNlZEVsZW1lbnQoRWxlbWVudCogZWxlbWVudCwgUGFzc1JlZlB0cjxGcmFtZT4g
bmV3RgogCiAgICAgaWYgKCFlbGVtZW50KSB7CiAgICAgICAgIGlmIChvbGREb2N1bWVudCkKLSAg
ICAgICAgICAgIG9sZERvY3VtZW50LT5zZXRGb2N1c2VkRWxlbWVudCgwKTsKKyAgICAgICAgICAg
IG9sZERvY3VtZW50LT5zZXRGb2N1c2VkRWxlbWVudChudWxscHRyKTsKICAgICAgICAgbV9wYWdl
LmVkaXRvckNsaWVudCgpLT5zZXRJbnB1dE1ldGhvZFN0YXRlKGZhbHNlKTsKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQpAQCAtNjE1LDExICs2MTUsMTEgQEAgYm9vbCBGb2N1c0NvbnRyb2xs
ZXI6OnNldEZvY3VzZWRFbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQsIFBhc3NSZWZQdHI8RnJhbWU+
IG5ld0YKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIAotICAgIGlmIChvbGREb2N1
bWVudCAmJiBvbGREb2N1bWVudCAhPSAmbmV3RG9jdW1lbnQuZ2V0KCkpCi0gICAgICAgIG9sZERv
Y3VtZW50LT5zZXRGb2N1c2VkRWxlbWVudCgwKTsKKyAgICBpZiAob2xkRG9jdW1lbnQgJiYgb2xk
RG9jdW1lbnQgIT0gbmV3RG9jdW1lbnQuYXNQdHIoKSkKKyAgICAgICAgb2xkRG9jdW1lbnQtPnNl
dEZvY3VzZWRFbGVtZW50KG51bGxwdHIpOwogCiAgICAgaWYgKG5ld0ZvY3VzZWRGcmFtZSAmJiAh
bmV3Rm9jdXNlZEZyYW1lLT5wYWdlKCkpIHsKLSAgICAgICAgc2V0Rm9jdXNlZEZyYW1lKDApOwor
ICAgICAgICBzZXRGb2N1c2VkRnJhbWUobnVsbHB0cik7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAgICAgc2V0Rm9jdXNlZEZyYW1lKG5ld0ZvY3VzZWRGcmFtZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCmluZGV4IDI1ODI4MDYwZTc2MGNhNGQzNjUwYjAwNWQ1
ZTgyODQyODYzMmJmMTQuLjk0OWE3YTYzMDA3NWNhYTI2OWVjYjUxZDU4MWM4MDkwOGJmNzBiYWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCkBAIC0zMTIsOSArMzEyLDkg
QEAgdm9pZCBQYWdlU2VyaWFsaXplcjo6YWRkSW1hZ2VUb1Jlc291cmNlcyhDYWNoZWRJbWFnZSog
aW1hZ2UsIFJlbmRlckVsZW1lbnQqIGltYWcKICAgICBtX3Jlc291cmNlVVJMcy5hZGQodXJsKTsK
IH0KIAotdm9pZCBQYWdlU2VyaWFsaXplcjo6cmV0cmlldmVSZXNvdXJjZXNGb3JSdWxlKFN0eWxl
UnVsZSogcnVsZSwgRG9jdW1lbnQqIGRvY3VtZW50KQordm9pZCBQYWdlU2VyaWFsaXplcjo6cmV0
cmlldmVSZXNvdXJjZXNGb3JSdWxlKFN0eWxlUnVsZSYgcnVsZSwgRG9jdW1lbnQqIGRvY3VtZW50
KQogewotICAgIHJldHJpZXZlUmVzb3VyY2VzRm9yUHJvcGVydGllcygmcnVsZS0+cHJvcGVydGll
cygpLCBkb2N1bWVudCk7CisgICAgcmV0cmlldmVSZXNvdXJjZXNGb3JQcm9wZXJ0aWVzKCZydWxl
LnByb3BlcnRpZXMoKSwgZG9jdW1lbnQpOwogfQogCiB2b2lkIFBhZ2VTZXJpYWxpemVyOjpyZXRy
aWV2ZVJlc291cmNlc0ZvclByb3BlcnRpZXMoY29uc3QgU3R5bGVQcm9wZXJ0aWVzKiBzdHlsZURl
Y2xhcmF0aW9uLCBEb2N1bWVudCogZG9jdW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxp
emVyLmgKaW5kZXggZjI1NDg4ZjdmZTkxNGVjZjhmNGQwNGQ4MmUxMzAxMzUxNmEzOTgyZi4uYTU5
NDQ0NzJjZmRiOWEyY2Q0YzYwM2ZhOGIzNmFlYWUyZWFjMTkwZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZVNlcmlhbGl6ZXIuaApAQCAtNzksNyArNzksNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBh
ZGRJbWFnZVRvUmVzb3VyY2VzKENhY2hlZEltYWdlKiwgUmVuZGVyRWxlbWVudCosIGNvbnN0IFVS
TCYpOwogICAgIHZvaWQgcmV0cmlldmVSZXNvdXJjZXNGb3JQcm9wZXJ0aWVzKGNvbnN0IFN0eWxl
UHJvcGVydGllcyosIERvY3VtZW50Kik7Ci0gICAgdm9pZCByZXRyaWV2ZVJlc291cmNlc0ZvclJ1
bGUoU3R5bGVSdWxlKiwgRG9jdW1lbnQqKTsKKyAgICB2b2lkIHJldHJpZXZlUmVzb3VyY2VzRm9y
UnVsZShTdHlsZVJ1bGUmLCBEb2N1bWVudCopOwogCiAgICAgVmVjdG9yPFJlc291cmNlPiogbV9y
ZXNvdXJjZXM7CiAgICAgTGlzdEhhc2hTZXQ8VVJMPiBtX3Jlc291cmNlVVJMczsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkNvbnRyb2xsZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxlci5jcHAK
aW5kZXggMWE3Y2QyYTM0YjFmOTM5NTNiYTlmMjExZGRiMTVjNjc5MmFiZDg0OC4uYWM2YTZjN2Q5
NGVlZGQzZjA5MTEzMjNjMGUyMWQ3OGZmZmEwZjRlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxlci5jcHAKQEAgLTUyNSw3ICs1
MjUsNyBAQCBQYXNzUmVmPFJlbmRlclN0eWxlPiBBbmltYXRpb25Db250cm9sbGVyOjp1cGRhdGVB
bmltYXRpb25zKFJlbmRlckVsZW1lbnQmIHJlbmRlcgogI2VuZGlmCiAgICAgfQogCi0gICAgaWYg
KCZibGVuZGVkU3R5bGUuZ2V0KCkgIT0gJm5ld1N0eWxlQmVmb3JlQW5pbWF0aW9uLmdldCgpKSB7
CisgICAgaWYgKGJsZW5kZWRTdHlsZS5hc1B0cigpICE9IG5ld1N0eWxlQmVmb3JlQW5pbWF0aW9u
LmFzUHRyKCkpIHsKICAgICAgICAgLy8gSWYgdGhlIGFuaW1hdGlvbnMvdHJhbnNpdGlvbnMgY2hh
bmdlIG9wYWNpdHkgb3IgdHJhbnNmb3JtLCB3ZSBuZWVkIHRvIHVwZGF0ZQogICAgICAgICAvLyB0
aGUgc3R5bGUgdG8gaW1wb3NlIHRoZSBzdGFja2luZyBydWxlcy4gTm90ZSB0aGF0IHRoaXMgaXMg
YWxzbwogICAgICAgICAvLyBkb25lIGluIFN0eWxlUmVzb2x2ZXI6OmFkanVzdFJlbmRlclN0eWxl
KCkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxl
Q292ZXJhZ2VNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGls
ZUNvdmVyYWdlTWFwLmNwcAppbmRleCBhMmI2MmRiZWMyMDgwNTY0NzQ0ZTMyNDZkNmM4M2I2OGJj
MDcyOGYwLi5lOTIxOGY3YmJmY2VkMzBjYWJkNzYwMGNiOWE0NTgzZmM2NzJlZDExIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ292ZXJhZ2VNYXAu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb3ZlcmFn
ZU1hcC5jcHAKQEAgLTEwMiw3ICsxMDIsNyBAQCB2b2lkIFRpbGVDb3ZlcmFnZU1hcDo6dXBkYXRl
KCkKIAogdm9pZCBUaWxlQ292ZXJhZ2VNYXA6OnBsYXRmb3JtQ0FMYXllclBhaW50Q29udGVudHMo
UGxhdGZvcm1DQUxheWVyKiBwbGF0Zm9ybUNBTGF5ZXIsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgRmxvYXRSZWN0JikKIHsKLSAgICBBU1NFUlRfVU5VU0VEKHBsYXRmb3JtQ0FMYXll
ciwgcGxhdGZvcm1DQUxheWVyID09ICZtX2xheWVyLmdldCgpKTsKKyAgICBBU1NFUlRfVU5VU0VE
KHBsYXRmb3JtQ0FMYXllciwgcGxhdGZvcm1DQUxheWVyID09IG1fbGF5ZXIuYXNQdHIoKSk7CiAg
ICAgbV9jb250cm9sbGVyLnRpbGVHcmlkKCkuZHJhd1RpbGVNYXBDb250ZW50cyhjb250ZXh0LnBs
YXRmb3JtQ29udGV4dCgpLCBtX2xheWVyLmdldCgpLmJvdW5kcygpKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NsaXBQYXRoT3BlcmF0aW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvQ2xpcFBhdGhPcGVyYXRpb24uaAppbmRleCBiOWU3MDI0N2JjZTAw
ZjI3MWEyYTgzODRlNzJlMDRkNmJmYzljNWY3Li42OTllM2JlMWJkYTI2YTZmNGI0NGFmY2IzMTAx
YmI3MmQ5ZTIzM2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ2xpcFBh
dGhPcGVyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ2xpcFBhdGhPcGVy
YXRpb24uaApAQCAtMTE5LDcgKzExOSw3IEBAIHByaXZhdGU6CiAgICAgICAgIGlmICghaXNTYW1l
VHlwZShvdGhlcikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGNvbnN0IGF1
dG8mIHNoYXBlQ2xpcCA9IGRvd25jYXN0PFNoYXBlQ2xpcFBhdGhPcGVyYXRpb24+KG90aGVyKTsK
LSAgICAgICAgcmV0dXJuICZtX3NoYXBlLmdldCgpID09ICZzaGFwZUNsaXAubV9zaGFwZS5nZXQo
KTsKKyAgICAgICAgcmV0dXJuIG1fc2hhcGUuYXNQdHIoKSA9PSBzaGFwZUNsaXAubV9zaGFwZS5h
c1B0cigpOwogICAgIH0KIAogICAgIGV4cGxpY2l0IFNoYXBlQ2xpcFBhdGhPcGVyYXRpb24oUGFz
c1JlZjxCYXNpY1NoYXBlPiBzaGFwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2suY3BwCmluZGV4IDlhODFmYjYxZjYxZGUxYTA3MzczMTYwNGQzYjhmZmY4NmQ0NWM4ZWEuLmNh
ZDA3YzFkNTg4ZTlmZDQ2ZjcyMmVkZDMxZDE1OWY5YjM1MjRiYjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApAQCAtMjk3Niw3ICsyOTc2LDcgQEAgUmVuZGVyQmxv
Y2sqIFJlbmRlckJsb2NrOjpmaXJzdExpbmVCbG9jaygpIGNvbnN0CiAgICAgcmV0dXJuIGZpcnN0
TGluZUJsb2NrOwogfQogCi1zdGF0aWMgUmVuZGVyU3R5bGUqIHN0eWxlRm9yRmlyc3RMZXR0ZXIo
UmVuZGVyT2JqZWN0KiBmaXJzdExldHRlckJsb2NrLCBSZW5kZXJPYmplY3QqIGZpcnN0TGV0dGVy
Q29udGFpbmVyKQorc3RhdGljIFJlbmRlclN0eWxlJiBzdHlsZUZvckZpcnN0TGV0dGVyKFJlbmRl
ck9iamVjdCogZmlyc3RMZXR0ZXJCbG9jaywgUmVuZGVyT2JqZWN0KiBmaXJzdExldHRlckNvbnRh
aW5lcikKIHsKICAgICBSZW5kZXJTdHlsZSogcHNldWRvU3R5bGUgPSBmaXJzdExldHRlckJsb2Nr
LT5nZXRDYWNoZWRQc2V1ZG9TdHlsZShGSVJTVF9MRVRURVIsICZmaXJzdExldHRlckNvbnRhaW5l
ci0+Zmlyc3RMaW5lU3R5bGUoKSk7CiAgICAgCkBAIC0zMDIxLDcgKzMwMjEsNyBAQCBzdGF0aWMg
UmVuZGVyU3R5bGUqIHN0eWxlRm9yRmlyc3RMZXR0ZXIoUmVuZGVyT2JqZWN0KiBmaXJzdExldHRl
ckJsb2NrLCBSZW5kZXJPYgogICAgIHBzZXVkb1N0eWxlLT5zZXREaXNwbGF5KHBzZXVkb1N0eWxl
LT5pc0Zsb2F0aW5nKCkgPyBCTE9DSyA6IElOTElORSk7CiAgICAgLy8gQ1NTMiBzYXlzIGZpcnN0
LWxldHRlciBjYW4ndCBiZSBwb3NpdGlvbmVkLgogICAgIHBzZXVkb1N0eWxlLT5zZXRQb3NpdGlv
bihTdGF0aWNQb3NpdGlvbik7Ci0gICAgcmV0dXJuIHBzZXVkb1N0eWxlOworICAgIHJldHVybiAq
cHNldWRvU3R5bGU7CiB9CiAKIC8vIENTUyAyLjEgaHR0cDovL3d3dy53My5vcmcvVFIvQ1NTMjEv
c2VsZWN0b3IuaHRtbCNmaXJzdC1sZXR0ZXIKQEAgLTMwNjEsMTYgKzMwNjEsMTYgQEAgdm9pZCBS
ZW5kZXJCbG9jazo6dXBkYXRlRmlyc3RMZXR0ZXJTdHlsZShSZW5kZXJPYmplY3QqIGZpcnN0TGV0
dGVyQmxvY2ssIFJlbmRlck8KIHsKICAgICBSZW5kZXJFbGVtZW50KiBmaXJzdExldHRlciA9IGN1
cnJlbnRDaGlsZC0+cGFyZW50KCk7CiAgICAgUmVuZGVyRWxlbWVudCogZmlyc3RMZXR0ZXJDb250
YWluZXIgPSBmaXJzdExldHRlci0+cGFyZW50KCk7Ci0gICAgUmVuZGVyU3R5bGUqIHBzZXVkb1N0
eWxlID0gc3R5bGVGb3JGaXJzdExldHRlcihmaXJzdExldHRlckJsb2NrLCBmaXJzdExldHRlckNv
bnRhaW5lcik7CisgICAgUmVuZGVyU3R5bGUmIHBzZXVkb1N0eWxlID0gc3R5bGVGb3JGaXJzdExl
dHRlcihmaXJzdExldHRlckJsb2NrLCBmaXJzdExldHRlckNvbnRhaW5lcik7CiAgICAgQVNTRVJU
KGZpcnN0TGV0dGVyLT5pc0Zsb2F0aW5nKCkgfHwgZmlyc3RMZXR0ZXItPmlzSW5saW5lKCkpOwog
Ci0gICAgaWYgKFN0eWxlOjpkZXRlcm1pbmVDaGFuZ2UoJmZpcnN0TGV0dGVyLT5zdHlsZSgpLCBw
c2V1ZG9TdHlsZSkgPT0gU3R5bGU6OkRldGFjaCkgeworICAgIGlmIChTdHlsZTo6ZGV0ZXJtaW5l
Q2hhbmdlKGZpcnN0TGV0dGVyLT5zdHlsZSgpLCBwc2V1ZG9TdHlsZSkgPT0gU3R5bGU6OkRldGFj
aCkgewogICAgICAgICAvLyBUaGUgZmlyc3QtbGV0dGVyIHJlbmRlcmVyIG5lZWRzIHRvIGJlIHJl
cGxhY2VkLiBDcmVhdGUgYSBuZXcgcmVuZGVyZXIgb2YgdGhlIHJpZ2h0IHR5cGUuCiAgICAgICAg
IFJlbmRlckJveE1vZGVsT2JqZWN0KiBuZXdGaXJzdExldHRlcjsKLSAgICAgICAgaWYgKHBzZXVk
b1N0eWxlLT5kaXNwbGF5KCkgPT0gSU5MSU5FKQotICAgICAgICAgICAgbmV3Rmlyc3RMZXR0ZXIg
PSBuZXcgUmVuZGVySW5saW5lKGRvY3VtZW50KCksICpwc2V1ZG9TdHlsZSk7CisgICAgICAgIGlm
IChwc2V1ZG9TdHlsZS5kaXNwbGF5KCkgPT0gSU5MSU5FKQorICAgICAgICAgICAgbmV3Rmlyc3RM
ZXR0ZXIgPSBuZXcgUmVuZGVySW5saW5lKGRvY3VtZW50KCksIHBzZXVkb1N0eWxlKTsKICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgbmV3Rmlyc3RMZXR0ZXIgPSBuZXcgUmVuZGVyQmxvY2tGbG93
KGRvY3VtZW50KCksICpwc2V1ZG9TdHlsZSk7CisgICAgICAgICAgICBuZXdGaXJzdExldHRlciA9
IG5ldyBSZW5kZXJCbG9ja0Zsb3coZG9jdW1lbnQoKSwgcHNldWRvU3R5bGUpOwogICAgICAgICBu
ZXdGaXJzdExldHRlci0+aW5pdGlhbGl6ZVN0eWxlKCk7CiAKICAgICAgICAgLy8gTW92ZSB0aGUg
Zmlyc3QgbGV0dGVyIGludG8gdGhlIG5ldyByZW5kZXJlci4KQEAgLTMwOTYsMTggKzMwOTYsMTgg
QEAgdm9pZCBSZW5kZXJCbG9jazo6dXBkYXRlRmlyc3RMZXR0ZXJTdHlsZShSZW5kZXJPYmplY3Qq
IGZpcnN0TGV0dGVyQmxvY2ssIFJlbmRlck8KICAgICAgICAgZmlyc3RMZXR0ZXIgPSBuZXdGaXJz
dExldHRlcjsKICAgICAgICAgZmlyc3RMZXR0ZXJDb250YWluZXItPmFkZENoaWxkKGZpcnN0TGV0
dGVyLCBuZXh0U2libGluZyk7CiAgICAgfSBlbHNlCi0gICAgICAgIGZpcnN0TGV0dGVyLT5zZXRT
dHlsZSgqcHNldWRvU3R5bGUpOworICAgICAgICBmaXJzdExldHRlci0+c2V0U3R5bGUocHNldWRv
U3R5bGUpOwogfQogCiB2b2lkIFJlbmRlckJsb2NrOjpjcmVhdGVGaXJzdExldHRlclJlbmRlcmVy
KFJlbmRlck9iamVjdCogZmlyc3RMZXR0ZXJCbG9jaywgUmVuZGVyVGV4dCogY3VycmVudFRleHRD
aGlsZCkKIHsKICAgICBSZW5kZXJFbGVtZW50KiBmaXJzdExldHRlckNvbnRhaW5lciA9IGN1cnJl
bnRUZXh0Q2hpbGQtPnBhcmVudCgpOwotICAgIFJlbmRlclN0eWxlKiBwc2V1ZG9TdHlsZSA9IHN0
eWxlRm9yRmlyc3RMZXR0ZXIoZmlyc3RMZXR0ZXJCbG9jaywgZmlyc3RMZXR0ZXJDb250YWluZXIp
OwotICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiBmaXJzdExldHRlciA9IDA7Ci0gICAgaWYgKHBz
ZXVkb1N0eWxlLT5kaXNwbGF5KCkgPT0gSU5MSU5FKQotICAgICAgICBmaXJzdExldHRlciA9IG5l
dyBSZW5kZXJJbmxpbmUoZG9jdW1lbnQoKSwgKnBzZXVkb1N0eWxlKTsKKyAgICBSZW5kZXJTdHls
ZSYgcHNldWRvU3R5bGUgPSBzdHlsZUZvckZpcnN0TGV0dGVyKGZpcnN0TGV0dGVyQmxvY2ssIGZp
cnN0TGV0dGVyQ29udGFpbmVyKTsKKyAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogZmlyc3RMZXR0
ZXIgPSBudWxscHRyOworICAgIGlmIChwc2V1ZG9TdHlsZS5kaXNwbGF5KCkgPT0gSU5MSU5FKQor
ICAgICAgICBmaXJzdExldHRlciA9IG5ldyBSZW5kZXJJbmxpbmUoZG9jdW1lbnQoKSwgcHNldWRv
U3R5bGUpOwogICAgIGVsc2UKLSAgICAgICAgZmlyc3RMZXR0ZXIgPSBuZXcgUmVuZGVyQmxvY2tG
bG93KGRvY3VtZW50KCksICpwc2V1ZG9TdHlsZSk7CisgICAgICAgIGZpcnN0TGV0dGVyID0gbmV3
IFJlbmRlckJsb2NrRmxvdyhkb2N1bWVudCgpLCBwc2V1ZG9TdHlsZSk7CiAgICAgZmlyc3RMZXR0
ZXItPmluaXRpYWxpemVTdHlsZSgpOwogICAgIGZpcnN0TGV0dGVyQ29udGFpbmVyLT5hZGRDaGls
ZChmaXJzdExldHRlciwgY3VycmVudFRleHRDaGlsZCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKaW5kZXggNTVlY2U3MzRjYWYxMzI5NWVkZjYyYTgy
MDg5ZGQ4ZWY5MDkwZjU4Yy4uNTlkZTc2MWQ4MTBmYTMyNGU3YzlhZTIxZGE2YmEwMDMxMDQ2ZGYw
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKQEAg
LTM3NTEsMjEgKzM3NTEsMjEgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OnNldENvbXB1dGVkQ29s
dW1uQ291bnRBbmRXaWR0aChpbnQgY291bnQsIExheW91dFVuaXQgd2lkdGgKICAgICB9CiB9CiAK
LXZvaWQgUmVuZGVyQmxvY2tGbG93Ojp1cGRhdGVDb2x1bW5Qcm9ncmVzc2lvbkZyb21TdHlsZShS
ZW5kZXJTdHlsZSogc3R5bGUpCit2b2lkIFJlbmRlckJsb2NrRmxvdzo6dXBkYXRlQ29sdW1uUHJv
Z3Jlc3Npb25Gcm9tU3R5bGUoUmVuZGVyU3R5bGUmIHN0eWxlKQogewogICAgIGlmICghbXVsdGlD
b2x1bW5GbG93VGhyZWFkKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBib29sIG5lZWRz
TGF5b3V0ID0gZmFsc2U7CiAgICAgYm9vbCBvbGRQcm9ncmVzc2lvbklzSW5saW5lID0gbXVsdGlD
b2x1bW5GbG93VGhyZWFkKCktPnByb2dyZXNzaW9uSXNJbmxpbmUoKTsKLSAgICBib29sIG5ld1By
b2dyZXNzaW9uSXNJbmxpbmUgPSBzdHlsZS0+aGFzSW5saW5lQ29sdW1uQXhpcygpOworICAgIGJv
b2wgbmV3UHJvZ3Jlc3Npb25Jc0lubGluZSA9IHN0eWxlLmhhc0lubGluZUNvbHVtbkF4aXMoKTsK
ICAgICBpZiAob2xkUHJvZ3Jlc3Npb25Jc0lubGluZSAhPSBuZXdQcm9ncmVzc2lvbklzSW5saW5l
KSB7CiAgICAgICAgIG11bHRpQ29sdW1uRmxvd1RocmVhZCgpLT5zZXRQcm9ncmVzc2lvbklzSW5s
aW5lKG5ld1Byb2dyZXNzaW9uSXNJbmxpbmUpOwogICAgICAgICBuZWVkc0xheW91dCA9IHRydWU7
CiAgICAgfQogCiAgICAgYm9vbCBvbGRQcm9ncmVzc2lvbklzUmV2ZXJzZWQgPSBtdWx0aUNvbHVt
bkZsb3dUaHJlYWQoKS0+cHJvZ3Jlc3Npb25Jc1JldmVyc2VkKCk7Ci0gICAgYm9vbCBuZXdQcm9n
cmVzc2lvbklzUmV2ZXJzZWQgPSBzdHlsZS0+Y29sdW1uUHJvZ3Jlc3Npb24oKSA9PSBSZXZlcnNl
Q29sdW1uUHJvZ3Jlc3Npb247CisgICAgYm9vbCBuZXdQcm9ncmVzc2lvbklzUmV2ZXJzZWQgPSBz
dHlsZS5jb2x1bW5Qcm9ncmVzc2lvbigpID09IFJldmVyc2VDb2x1bW5Qcm9ncmVzc2lvbjsKICAg
ICBpZiAob2xkUHJvZ3Jlc3Npb25Jc1JldmVyc2VkICE9IG5ld1Byb2dyZXNzaW9uSXNSZXZlcnNl
ZCkgewogICAgICAgICBtdWx0aUNvbHVtbkZsb3dUaHJlYWQoKS0+c2V0UHJvZ3Jlc3Npb25Jc1Jl
dmVyc2VkKG5ld1Byb2dyZXNzaW9uSXNSZXZlcnNlZCk7CiAgICAgICAgIG5lZWRzTGF5b3V0ID0g
dHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zs
b3cuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaAppbmRleCA5
NjYxYzU2MzMzMzA0Mjg5OTgwMjI5MTkwMTM2NzFlYzg2MGVjM2M4Li4xNjQzMzIxYjRiZTk0M2U1
ZjI2ZmIxN2UyY2Q4NjRhMTE1YmY0YmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2tGbG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrRmxvdy5oCkBAIC0zODIsNyArMzgyLDcgQEAgcHVibGljOgogICAgIHZvaWQgY3Jl
YXRlTXVsdGlDb2x1bW5GbG93VGhyZWFkKCk7CiAgICAgdm9pZCBkZXN0cm95TXVsdGlDb2x1bW5G
bG93VGhyZWFkKCk7CiAKLSAgICB2b2lkIHVwZGF0ZUNvbHVtblByb2dyZXNzaW9uRnJvbVN0eWxl
KFJlbmRlclN0eWxlKik7CisgICAgdm9pZCB1cGRhdGVDb2x1bW5Qcm9ncmVzc2lvbkZyb21TdHls
ZShSZW5kZXJTdHlsZSYpOwogICAgIHZvaWQgdXBkYXRlU3R5bGVzRm9yQ29sdW1uQ2hpbGRyZW4o
KTsKIAogICAgIHZpcnR1YWwgYm9vbCBuZWVkc0xheW91dEFmdGVyUmVnaW9uUmFuZ2VDaGFuZ2Uo
KSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKaW5k
ZXggNGNjY2ZiYTUyNzU2ZDJmMTBhNjBjNDc0ZDI5OTlkMzFmNDBjOGY5Ni4uNWI2YzlkZWY2MWQx
YmM0M2RlNzUyZGIxM2U4MjlhZWIyM2ZlOTkyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveC5jcHAKQEAgLTQwOCw3ICs0MDgsNyBAQCB2b2lkIFJlbmRlckJveDo6c3R5bGVEaWRD
aGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZQog
ICAgICAgICBpZiAodmlld0NoYW5nZWRXcml0aW5nTW9kZSAmJiBwYWdpbmF0aW9uLm1vZGUgIT0g
UGFnaW5hdGlvbjo6VW5wYWdpbmF0ZWQpIHsKICAgICAgICAgICAgIHZpZXdTdHlsZS5zZXRDb2x1
bW5TdHlsZXNGcm9tUGFnaW5hdGlvbk1vZGUocGFnaW5hdGlvbi5tb2RlKTsKICAgICAgICAgICAg
IGlmICh2aWV3KCkubXVsdGlDb2x1bW5GbG93VGhyZWFkKCkpCi0gICAgICAgICAgICAgICAgdmll
dygpLnVwZGF0ZUNvbHVtblByb2dyZXNzaW9uRnJvbVN0eWxlKCZ2aWV3U3R5bGUpOworICAgICAg
ICAgICAgICAgIHZpZXcoKS51cGRhdGVDb2x1bW5Qcm9ncmVzc2lvbkZyb21TdHlsZSh2aWV3U3R5
bGUpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAodmlld1N0eWxlQ2hhbmdlZCAm
JiB2aWV3KCkubXVsdGlDb2x1bW5GbG93VGhyZWFkKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRWxlbWVudC5jcHAKaW5kZXggYzNkNDhlNmZkNTcyZWUwODU4M2IxMzkxMTlkOTJi
ZjVlMzhkM2VlNS4uMzJiYzcyNWFkN2QzZTQ2ZTk0NjkwZTIzM2VkZWQyMzA2NTRmMmMzZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcApAQCAtMzkxLDcgKzM5
MSw3IEBAIHZvaWQgUmVuZGVyRWxlbWVudDo6c2V0U3R5bGUoUGFzc1JlZjxSZW5kZXJTdHlsZT4g
c3R5bGUpCiAgICAgLy8gYW5kIHJlbW92ZSB0aGUgY2hlY2sgb2YgbV9oYXNJbml0aWFsaXplZFN0
eWxlIGJlbG93IHRvby4KICAgICBBU1NFUlQobV9oYXNJbml0aWFsaXplZFN0eWxlIHx8IGlzUmVu
ZGVyVmlldygpKTsKIAotICAgIGlmICgmbV9zdHlsZS5nZXQoKSA9PSAmc3R5bGUuZ2V0KCkpIHsK
KyAgICBpZiAobV9zdHlsZS5hc1B0cigpID09IHN0eWxlLmFzUHRyKCkpIHsKICAgICAgICAgLy8g
RklYTUU6IENhbiB3ZSBjaGFuZ2UgdGhpbmdzIHNvIHdlIG5ldmVyIGhpdCB0aGlzIGNvZGUgcGF0
aD8KICAgICAgICAgLy8gV2UgbmVlZCB0byBydW4gdGhyb3VnaCBhZGp1c3RTdHlsZURpZmZlcmVu
Y2UoKSBmb3IgaWZyYW1lcywgcGx1Z2lucywgYW5kIGNhbnZhcyBzbwogICAgICAgICAvLyBzdHls
ZSBzaGFyaW5nIGlzIGRpc2FibGVkIGZvciB0aGVtLiBUaGF0IHNob3VsZCBlbnN1cmUgdGhhdCB3
ZSBuZXZlciBoaXQgdGhpcyBjb2RlIHBhdGguCkBAIC00MDUsNyArNDA1LDcgQEAgdm9pZCBSZW5k
ZXJFbGVtZW50OjpzZXRTdHlsZShQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKICAgICBTdHls
ZURpZmZlcmVuY2UgZGlmZiA9IFN0eWxlRGlmZmVyZW5jZUVxdWFsOwogICAgIHVuc2lnbmVkIGNv
bnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzID0gQ29udGV4dFNlbnNpdGl2ZVByb3BlcnR5Tm9uZTsK
ICAgICBpZiAobV9oYXNJbml0aWFsaXplZFN0eWxlKQotICAgICAgICBkaWZmID0gbV9zdHlsZS0+
ZGlmZigmc3R5bGUuZ2V0KCksIGNvbnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzKTsKKyAgICAgICAg
ZGlmZiA9IG1fc3R5bGUtPmRpZmYoc3R5bGUuZ2V0KCksIGNvbnRleHRTZW5zaXRpdmVQcm9wZXJ0
aWVzKTsKIAogICAgIGRpZmYgPSBhZGp1c3RTdHlsZURpZmZlcmVuY2UoZGlmZiwgY29udGV4dFNl
bnNpdGl2ZVByb3BlcnRpZXMpOwogCkBAIC00MzAsMTEgKzQzMCwxMSBAQCB2b2lkIFJlbmRlckVs
ZW1lbnQ6OnNldFN0eWxlKFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQogCiAgICAgYm9vbCBk
b2VzTm90TmVlZExheW91dCA9ICFwYXJlbnQoKTsKIAotICAgIHN0eWxlRGlkQ2hhbmdlKGRpZmYs
ICZvbGRTdHlsZS5nZXQoKSk7CisgICAgc3R5bGVEaWRDaGFuZ2UoZGlmZiwgb2xkU3R5bGUuYXNQ
dHIoKSk7CiAKICAgICAvLyBUZXh0IHJlbmRlcmVycyB1c2UgdGhlaXIgcGFyZW50IHN0eWxlLiBO
b3RpZnkgdGhlbSBhYm91dCB0aGUgY2hhbmdlLgogICAgIGZvciAoYXV0byYgY2hpbGQgOiBjaGls
ZHJlbk9mVHlwZTxSZW5kZXJUZXh0PigqdGhpcykpCi0gICAgICAgIGNoaWxkLnN0eWxlRGlkQ2hh
bmdlKGRpZmYsICZvbGRTdHlsZS5nZXQoKSk7CisgICAgICAgIGNoaWxkLnN0eWxlRGlkQ2hhbmdl
KGRpZmYsIG9sZFN0eWxlLmFzUHRyKCkpOwogCiAgICAgLy8gRklYTUU6IHx0aGlzfCBtaWdodCBi
ZSBkZXN0cm95ZWQgaGVyZS4gVGhpcyBjYW4gY3VycmVudGx5IGhhcHBlbiBmb3IgYSBSZW5kZXJU
ZXh0RnJhZ21lbnQgd2hlbgogICAgIC8vIGl0cyBmaXJzdC1sZXR0ZXIgYmxvY2sgZ2V0cyBhbiB1
cGRhdGUgaW4gUmVuZGVyVGV4dEZyYWdtZW50OjpzdHlsZURpZENoYW5nZS4gRm9yIFJlbmRlclRl
eHRGcmFnbWVudChzKSwKQEAgLTQ1MSw5ICs0NTEsOSBAQCB2b2lkIFJlbmRlckVsZW1lbnQ6OnNl
dFN0eWxlKFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQogICAgICAgICBpZiAodXBkYXRlZERp
ZmYgPT0gU3R5bGVEaWZmZXJlbmNlTGF5b3V0KQogICAgICAgICAgICAgc2V0TmVlZHNMYXlvdXRB
bmRQcmVmV2lkdGhzUmVjYWxjKCk7CiAgICAgICAgIGVsc2UgaWYgKHVwZGF0ZWREaWZmID09IFN0
eWxlRGlmZmVyZW5jZUxheW91dFBvc2l0aW9uZWRNb3ZlbWVudE9ubHkpCi0gICAgICAgICAgICBz
ZXROZWVkc1Bvc2l0aW9uZWRNb3ZlbWVudExheW91dCgmb2xkU3R5bGUuZ2V0KCkpOworICAgICAg
ICAgICAgc2V0TmVlZHNQb3NpdGlvbmVkTW92ZW1lbnRMYXlvdXQob2xkU3R5bGUuYXNQdHIoKSk7
CiAgICAgICAgIGVsc2UgaWYgKHVwZGF0ZWREaWZmID09IFN0eWxlRGlmZmVyZW5jZVNpbXBsaWZp
ZWRMYXlvdXRBbmRQb3NpdGlvbmVkTW92ZW1lbnQpIHsKLSAgICAgICAgICAgIHNldE5lZWRzUG9z
aXRpb25lZE1vdmVtZW50TGF5b3V0KCZvbGRTdHlsZS5nZXQoKSk7CisgICAgICAgICAgICBzZXRO
ZWVkc1Bvc2l0aW9uZWRNb3ZlbWVudExheW91dChvbGRTdHlsZS5hc1B0cigpKTsKICAgICAgICAg
ICAgIHNldE5lZWRzU2ltcGxpZmllZE5vcm1hbEZsb3dMYXlvdXQoKTsKICAgICAgICAgfSBlbHNl
IGlmICh1cGRhdGVkRGlmZiA9PSBTdHlsZURpZmZlcmVuY2VTaW1wbGlmaWVkTGF5b3V0KQogICAg
ICAgICAgICAgc2V0TmVlZHNTaW1wbGlmaWVkTm9ybWFsRmxvd0xheW91dCgpOwpAQCAtOTY5LDcg
Kzk2OSw3IEBAIHZvaWQgUmVuZGVyRWxlbWVudDo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJl
bmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTCiAgICAgICAgIHJldHVybjsKICAgICAK
ICAgICBpZiAoZGlmZiA9PSBTdHlsZURpZmZlcmVuY2VMYXlvdXQgfHwgZGlmZiA9PSBTdHlsZURp
ZmZlcmVuY2VTaW1wbGlmaWVkTGF5b3V0KSB7Ci0gICAgICAgIFJlbmRlckNvdW50ZXI6OnJlbmRl
cmVyU3R5bGVDaGFuZ2VkKCp0aGlzLCBvbGRTdHlsZSwgJm1fc3R5bGUuZ2V0KCkpOworICAgICAg
ICBSZW5kZXJDb3VudGVyOjpyZW5kZXJlclN0eWxlQ2hhbmdlZCgqdGhpcywgb2xkU3R5bGUsIG1f
c3R5bGUuYXNQdHIoKSk7CiAKICAgICAgICAgLy8gSWYgdGhlIG9iamVjdCBhbHJlYWR5IG5lZWRz
IGxheW91dCwgdGhlbiBzZXROZWVkc0xheW91dCB3b24ndCBkbwogICAgICAgICAvLyBhbnkgd29y
ay4gQnV0IGlmIHRoZSBjb250YWluaW5nIGJsb2NrIGhhcyBjaGFuZ2VkLCB0aGVuIHdlIG1heSBu
ZWVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93
RnJhZ21lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd0Zy
YWdtZW50LmNwcAppbmRleCBiNTA4NDM1ZDMwMTE3NzNhM2JmM2U1NzRiZDU2OTE5NGVjZGQ5OGE2
Li5mNzhiM2IyYzNhYWU5ZGI1NWJjYjlkZTk1Mzc4OGU5MWEyZTQ2MTM1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5jcHAKQEAg
LTQ3Miw3ICs0NzIsNyBAQCB2b2lkIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50OjpyZXN0b3JlUmVn
aW9uT2JqZWN0c09yaWdpbmFsU3R5bGUoKQogICAgICAgICBpZiAoIXNob3VsZENhY2hlUmVnaW9u
U3R5bGUpIHsKICAgICAgICAgICAgIC8vIENoZWNrIHdoZXRoZXIgd2Ugc2hvdWxkIGNhY2hlIHRo
ZSBjb21wdXRlZCBzdHlsZSBpbiByZWdpb24uCiAgICAgICAgICAgICB1bnNpZ25lZCBjaGFuZ2Vk
Q29udGV4dFNlbnNpdGl2ZVByb3BlcnRpZXMgPSBDb250ZXh0U2Vuc2l0aXZlUHJvcGVydHlOb25l
OwotICAgICAgICAgICAgU3R5bGVEaWZmZXJlbmNlIHN0eWxlRGlmZiA9IG9iamVjdE9yaWdpbmFs
U3R5bGUtPmRpZmYob2JqZWN0UmVnaW9uU3R5bGUuZ2V0KCksIGNoYW5nZWRDb250ZXh0U2Vuc2l0
aXZlUHJvcGVydGllcyk7CisgICAgICAgICAgICBTdHlsZURpZmZlcmVuY2Ugc3R5bGVEaWZmID0g
b2JqZWN0T3JpZ2luYWxTdHlsZS0+ZGlmZigqb2JqZWN0UmVnaW9uU3R5bGUsIGNoYW5nZWRDb250
ZXh0U2Vuc2l0aXZlUHJvcGVydGllcyk7CiAgICAgICAgICAgICBpZiAoc3R5bGVEaWZmIDwgU3R5
bGVEaWZmZXJlbmNlTGF5b3V0UG9zaXRpb25lZE1vdmVtZW50T25seSkKICAgICAgICAgICAgICAg
ICBzaG91bGRDYWNoZVJlZ2lvblN0eWxlID0gdHJ1ZTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAKaW5kZXggZjQyZWNlNzY2NmMz
ZWQ3MWYwZDVkMTU2N2Q2YmUxNjA5NTVjZDdlMC4uMWQxYjNlNWJlZDc3Njk3NDJlODVhMGJlY2Nk
NGU0MjA5ZWVjNzAzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRleHRDb250cm9sLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4
dENvbnRyb2wuY3BwCkBAIC03MywzNiArNzMsMzYgQEAgdm9pZCBSZW5kZXJUZXh0Q29udHJvbDo6
c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlKgog
ICAgIHRleHRGb3JtQ29udHJvbEVsZW1lbnQoKS51cGRhdGVQbGFjZWhvbGRlclZpc2liaWxpdHko
KTsKIH0KIAotdm9pZCBSZW5kZXJUZXh0Q29udHJvbDo6YWRqdXN0SW5uZXJUZXh0U3R5bGUoY29u
c3QgUmVuZGVyU3R5bGUqIHN0YXJ0U3R5bGUsIFJlbmRlclN0eWxlKiB0ZXh0QmxvY2tTdHlsZSkg
Y29uc3QKK3ZvaWQgUmVuZGVyVGV4dENvbnRyb2w6OmFkanVzdElubmVyVGV4dFN0eWxlKGNvbnN0
IFJlbmRlclN0eWxlKiBzdGFydFN0eWxlLCBSZW5kZXJTdHlsZSYgdGV4dEJsb2NrU3R5bGUpIGNv
bnN0CiB7CiAgICAgLy8gVGhlIGlubmVyIGJsb2NrLCBpZiBwcmVzZW50LCBhbHdheXMgaGFzIGl0
cyBkaXJlY3Rpb24gc2V0IHRvIExUUiwKICAgICAvLyBzbyB3ZSBuZWVkIHRvIGluaGVyaXQgdGhl
IGRpcmVjdGlvbiBhbmQgdW5pY29kZS1iaWRpIHN0eWxlIGZyb20gdGhlIGVsZW1lbnQuCi0gICAg
dGV4dEJsb2NrU3R5bGUtPnNldERpcmVjdGlvbihzdHlsZSgpLmRpcmVjdGlvbigpKTsKLSAgICB0
ZXh0QmxvY2tTdHlsZS0+c2V0VW5pY29kZUJpZGkoc3R5bGUoKS51bmljb2RlQmlkaSgpKTsKKyAg
ICB0ZXh0QmxvY2tTdHlsZS5zZXREaXJlY3Rpb24oc3R5bGUoKS5kaXJlY3Rpb24oKSk7CisgICAg
dGV4dEJsb2NrU3R5bGUuc2V0VW5pY29kZUJpZGkoc3R5bGUoKS51bmljb2RlQmlkaSgpKTsKIAog
ICAgIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50JiBjb250cm9sID0gdGV4dEZvcm1Db250cm9s
RWxlbWVudCgpOwogICAgIGlmIChIVE1MRWxlbWVudCogaW5uZXJUZXh0ID0gY29udHJvbC5pbm5l
clRleHRFbGVtZW50KCkpIHsKICAgICAgICAgaWYgKGNvbnN0IFN0eWxlUHJvcGVydGllcyogcHJv
cGVydGllcyA9IGlubmVyVGV4dC0+cHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGUoKSkgewogICAg
ICAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSA9IHByb3BlcnRpZXMtPmdldFByb3BlcnR5
Q1NTVmFsdWUoQ1NTUHJvcGVydHlXZWJraXRVc2VyTW9kaWZ5KTsKICAgICAgICAgICAgIGlmIChp
czxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUuZ2V0KCkpKQotICAgICAgICAgICAgICAgIHRleHRC
bG9ja1N0eWxlLT5zZXRVc2VyTW9kaWZ5KGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdmFs
dWUpKTsKKyAgICAgICAgICAgICAgICB0ZXh0QmxvY2tTdHlsZS5zZXRVc2VyTW9kaWZ5KGRvd25j
YXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdmFsdWUpKTsKICAgICAgICAgfQogICAgIH0KIAogICAg
IGlmIChjb250cm9sLmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpKQotICAgICAgICB0ZXh0QmxvY2tT
dHlsZS0+c2V0Q29sb3IodGhlbWUoKS5kaXNhYmxlZFRleHRDb2xvcih0ZXh0QmxvY2tTdHlsZS0+
dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCBzdGFydFN0eWxlLT52aXNp
dGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpKSk7CisgICAgICAg
IHRleHRCbG9ja1N0eWxlLnNldENvbG9yKHRoZW1lKCkuZGlzYWJsZWRUZXh0Q29sb3IodGV4dEJs
b2NrU3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCBzdGFydFN0
eWxlLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpKSk7
CiAjaWYgUExBVEZPUk0oSU9TKQotICAgIGlmICh0ZXh0QmxvY2tTdHlsZS0+dGV4dFNlY3VyaXR5
KCkgIT0gVFNOT05FICYmICF0ZXh0QmxvY2tTdHlsZS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigp
KSB7CisgICAgaWYgKHRleHRCbG9ja1N0eWxlLnRleHRTZWN1cml0eSgpICE9IFRTTk9ORSAmJiAh
dGV4dEJsb2NrU3R5bGUuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKSB7CiAgICAgICAgIC8vIFBy
ZXNlcnZlIHRoZSBhbGlnbm1lbnQgYnV0IGZvcmNlIHRoZSBkaXJlY3Rpb24gdG8gTFRSIHNvIHRo
YXQgdGhlIGxhc3QtdHlwZWQsIHVubWFza2VkIGNoYXJhY3RlcgogICAgICAgICAvLyAod2hpY2gg
Y2Fubm90IGhhdmUgUlRMIGRpcmVjdGlvbmFsaXR5KSB3aWxsIGFwcGVhciB0byB0aGUgcmlnaHQg
b2YgdGhlIG1hc2tlZCBjaGFyYWN0ZXJzLiBTZWUgPHJkYXI6Ly9wcm9ibGVtLzcwMjQzNzU+Lgog
ICAgICAgICAKLSAgICAgICAgc3dpdGNoICh0ZXh0QmxvY2tTdHlsZS0+dGV4dEFsaWduKCkpIHsK
KyAgICAgICAgc3dpdGNoICh0ZXh0QmxvY2tTdHlsZS50ZXh0QWxpZ24oKSkgewogICAgICAgICBj
YXNlIFRBU1RBUlQ6CiAgICAgICAgIGNhc2UgSlVTVElGWToKLSAgICAgICAgICAgIHRleHRCbG9j
a1N0eWxlLT5zZXRUZXh0QWxpZ24oUklHSFQpOworICAgICAgICAgICAgdGV4dEJsb2NrU3R5bGUu
c2V0VGV4dEFsaWduKFJJR0hUKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFRB
RU5EOgotICAgICAgICAgICAgdGV4dEJsb2NrU3R5bGUtPnNldFRleHRBbGlnbihMRUZUKTsKKyAg
ICAgICAgICAgIHRleHRCbG9ja1N0eWxlLnNldFRleHRBbGlnbihMRUZUKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIExFRlQ6CiAgICAgICAgIGNhc2UgUklHSFQ6CkBAIC0xMTMs
NyArMTEzLDcgQEAgdm9pZCBSZW5kZXJUZXh0Q29udHJvbDo6YWRqdXN0SW5uZXJUZXh0U3R5bGUo
Y29uc3QgUmVuZGVyU3R5bGUqIHN0YXJ0U3R5bGUsIFJlbmQKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAKLSAgICAgICAgdGV4dEJsb2NrU3R5bGUtPnNldERpcmVjdGlvbihMVFIpOwor
ICAgICAgICB0ZXh0QmxvY2tTdHlsZS5zZXREaXJlY3Rpb24oTFRSKTsKICAgICB9CiAjZW5kaWYK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJv
bC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmgKaW5kZXgg
NTBhZjkxNGI5ZjcyOTM1ZWVmODIyYjA0YjdhNDIyZmNlYzkyOGQ2MC4uZWFjNTVlNTY0Y2VmNWQ2
NDQ5NzU2MjdiNzc3MDViYjhiOTBhZTM3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRleHRDb250cm9sLmgKQEAgLTUxLDcgKzUxLDcgQEAgcHJvdGVjdGVkOgogICAgIFRl
eHRDb250cm9sSW5uZXJUZXh0RWxlbWVudCogaW5uZXJUZXh0RWxlbWVudCgpIGNvbnN0OwogCiAg
ICAgaW50IHNjcm9sbGJhclRoaWNrbmVzcygpIGNvbnN0OwotICAgIHZvaWQgYWRqdXN0SW5uZXJU
ZXh0U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUqIHN0YXJ0U3R5bGUsIFJlbmRlclN0eWxlKiB0ZXh0
QmxvY2tTdHlsZSkgY29uc3Q7CisgICAgdm9pZCBhZGp1c3RJbm5lclRleHRTdHlsZShjb25zdCBS
ZW5kZXJTdHlsZSogc3RhcnRTdHlsZSwgUmVuZGVyU3R5bGUmIHRleHRCbG9ja1N0eWxlKSBjb25z
dDsKIAogICAgIHZpcnR1YWwgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNv
bnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuY3BwCmluZGV4
IDQwYjRiZmQxNDUwNGIwZWEzOGZmNjdkOWJlOGNjZGQzOGNmYjdkNTAuLjgyZmIzNWJkZGQzZDM4
NzgyZjg3MGJkY2EyZmNjMzJlYzY5NzIyYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmNwcApAQCAtOTEsNyArOTEs
NyBAQCBQYXNzUmVmPFJlbmRlclN0eWxlPiBSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZTo6Y3Jl
YXRlSW5uZXJUZXh0U3R5bGUoY29uc3QgUmVuZAogewogICAgIGF1dG8gdGV4dEJsb2NrU3R5bGUg
PSBSZW5kZXJTdHlsZTo6Y3JlYXRlKCk7CiAgICAgdGV4dEJsb2NrU3R5bGUuZ2V0KCkuaW5oZXJp
dEZyb20oc3RhcnRTdHlsZSk7Ci0gICAgYWRqdXN0SW5uZXJUZXh0U3R5bGUoc3RhcnRTdHlsZSwg
JnRleHRCbG9ja1N0eWxlLmdldCgpKTsKKyAgICBhZGp1c3RJbm5lclRleHRTdHlsZShzdGFydFN0
eWxlLCB0ZXh0QmxvY2tTdHlsZS5nZXQoKSk7CiAgICAgdGV4dEJsb2NrU3R5bGUuZ2V0KCkuc2V0
RGlzcGxheShCTE9DSyk7CiAKICNpZiBQTEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCmluZGV4
IGMyZWM3ZDY3NDYwNTAzZTliZmNjZWEwMTQ4ZGI3M2FkYmZmYmU5NjUuLmNkZWNiMzM4NGM0Y2M3
YTM1YmU4NGQ1MGRlZDk3NjE4MjRkMWUxMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCkBAIC0zNjgsNyAr
MzY4LDcgQEAgUGFzc1JlZjxSZW5kZXJTdHlsZT4gUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5l
OjpjcmVhdGVJbm5lclRleHRTdHlsZShjb25zdCBSZW4KIHsKICAgICBhdXRvIHRleHRCbG9ja1N0
eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZSgpOwogICAgIHRleHRCbG9ja1N0eWxlLmdldCgpLmlu
aGVyaXRGcm9tKHN0YXJ0U3R5bGUpOwotICAgIGFkanVzdElubmVyVGV4dFN0eWxlKHN0YXJ0U3R5
bGUsICZ0ZXh0QmxvY2tTdHlsZS5nZXQoKSk7CisgICAgYWRqdXN0SW5uZXJUZXh0U3R5bGUoc3Rh
cnRTdHlsZSwgdGV4dEJsb2NrU3R5bGUuZ2V0KCkpOwogCiAgICAgdGV4dEJsb2NrU3R5bGUuZ2V0
KCkuc2V0V2hpdGVTcGFjZShQUkUpOwogICAgIHRleHRCbG9ja1N0eWxlLmdldCgpLnNldE92ZXJm
bG93V3JhcChOb3JtYWxPdmVyZmxvd1dyYXApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL0RhdGFSZWYuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9EYXRhUmVmLmgKaW5kZXggNzk2NGNkNjY3MWE0YmIyOTRiZmEzM2U0MDVmOWIzMmY4ZmM2ODk4
ZS4uZTFhODg3YjFlOWUxMzYzZjQ3Y2Q4YmM1MDBjYTlkYjRmNGZjNmNiZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0RhdGFSZWYuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvRGF0YVJlZi5oCkBAIC0zNSw3ICszNSw3IEBAIHB1YmxpYzoK
ICAgICBEYXRhUmVmKGNvbnN0IERhdGFSZWYmIG90aGVyKSA6IG1fZGF0YShjb25zdF9jYXN0PFQm
PihvdGhlci5tX2RhdGEuZ2V0KCkpKSB7IH0KICAgICBEYXRhUmVmJiBvcGVyYXRvcj0oY29uc3Qg
RGF0YVJlZiYgb3RoZXIpIHsgbV9kYXRhID0gY29uc3RfY2FzdDxUJj4ob3RoZXIubV9kYXRhLmdl
dCgpKTsgcmV0dXJuICp0aGlzOyB9CiAKLSAgICBjb25zdCBUKiBnZXQoKSBjb25zdCB7IHJldHVy
biAmbV9kYXRhLmdldCgpOyB9CisgICAgY29uc3QgVCogZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9k
YXRhLmFzUHRyKCk7IH0KIAogICAgIGNvbnN0IFQmIG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJu
ICpnZXQoKTsgfQogICAgIGNvbnN0IFQqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiBnZXQo
KTsgfQpAQCAtNDQsMTcgKzQ0LDE3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIGlmICghbV9k
YXRhLT5oYXNPbmVSZWYoKSkKICAgICAgICAgICAgIG1fZGF0YSA9IG1fZGF0YS0+Y29weSgpOwot
ICAgICAgICByZXR1cm4gJm1fZGF0YS5nZXQoKTsKKyAgICAgICAgcmV0dXJuIG1fZGF0YS5hc1B0
cigpOwogICAgIH0KIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBEYXRhUmVmPFQ+JiBvKSBj
b25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuICZtX2RhdGEuZ2V0KCkgPT0gJm8ubV9kYXRhLmdl
dCgpIHx8IG1fZGF0YS5nZXQoKSA9PSBvLm1fZGF0YS5nZXQoKTsKKyAgICAgICAgcmV0dXJuIG1f
ZGF0YS5hc1B0cigpID09IG8ubV9kYXRhLmFzUHRyKCkgfHwgbV9kYXRhLmdldCgpID09IG8ubV9k
YXRhLmdldCgpOwogICAgIH0KICAgICAKICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgRGF0YVJl
ZjxUPiYgbykgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiAmbV9kYXRhLmdldCgpICE9ICZv
Lm1fZGF0YS5nZXQoKSAmJiBtX2RhdGEuZ2V0KCkgIT0gby5tX2RhdGEuZ2V0KCk7CisgICAgICAg
IHJldHVybiBtX2RhdGEuYXNQdHIoKSAhPSBvLm1fZGF0YS5hc1B0cigpICYmIG1fZGF0YS5nZXQo
KSAhPSBvLm1fZGF0YS5nZXQoKTsKICAgICB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAppbmRleCA5ZmRkMjJhOWJkYzRkNmE4
YWYxYmM5ZDhiMDFkYWEwOTBkZWRkNGYwLi43Nzc4YThkM2E0NDU5N2Y2MGIzOWM1YjMzYzk2ZmRk
YWY1ZmM2ZDM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVu
ZGVyU3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJT
dHlsZS5jcHAKQEAgLTQwNiwyMjcgKzQwNiwyMjcgQEAgaW5saW5lIGJvb2wgUmVuZGVyU3R5bGU6
OmNoYW5nZUFmZmVjdHNWaXN1YWxPdmVyZmxvdyhjb25zdCBSZW5kZXJTdHlsZSYgb3RoZXIpIGMK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgUmVuZGVyU3R5bGU6OmNoYW5nZVJlcXVpcmVz
TGF5b3V0KGNvbnN0IFJlbmRlclN0eWxlKiBvdGhlciwgdW5zaWduZWQmIGNoYW5nZWRDb250ZXh0
U2Vuc2l0aXZlUHJvcGVydGllcykgY29uc3QKLXsKLSAgICBpZiAobV9ib3gtPndpZHRoKCkgIT0g
b3RoZXItPm1fYm94LT53aWR0aCgpCi0gICAgICAgIHx8IG1fYm94LT5taW5XaWR0aCgpICE9IG90
aGVyLT5tX2JveC0+bWluV2lkdGgoKQotICAgICAgICB8fCBtX2JveC0+bWF4V2lkdGgoKSAhPSBv
dGhlci0+bV9ib3gtPm1heFdpZHRoKCkKLSAgICAgICAgfHwgbV9ib3gtPmhlaWdodCgpICE9IG90
aGVyLT5tX2JveC0+aGVpZ2h0KCkKLSAgICAgICAgfHwgbV9ib3gtPm1pbkhlaWdodCgpICE9IG90
aGVyLT5tX2JveC0+bWluSGVpZ2h0KCkKLSAgICAgICAgfHwgbV9ib3gtPm1heEhlaWdodCgpICE9
IG90aGVyLT5tX2JveC0+bWF4SGVpZ2h0KCkpCitib29sIFJlbmRlclN0eWxlOjpjaGFuZ2VSZXF1
aXJlc0xheW91dChjb25zdCBSZW5kZXJTdHlsZSYgb3RoZXIsIHVuc2lnbmVkJiBjaGFuZ2VkQ29u
dGV4dFNlbnNpdGl2ZVByb3BlcnRpZXMpIGNvbnN0Cit7CisgICAgaWYgKG1fYm94LT53aWR0aCgp
ICE9IG90aGVyLm1fYm94LT53aWR0aCgpCisgICAgICAgIHx8IG1fYm94LT5taW5XaWR0aCgpICE9
IG90aGVyLm1fYm94LT5taW5XaWR0aCgpCisgICAgICAgIHx8IG1fYm94LT5tYXhXaWR0aCgpICE9
IG90aGVyLm1fYm94LT5tYXhXaWR0aCgpCisgICAgICAgIHx8IG1fYm94LT5oZWlnaHQoKSAhPSBv
dGhlci5tX2JveC0+aGVpZ2h0KCkKKyAgICAgICAgfHwgbV9ib3gtPm1pbkhlaWdodCgpICE9IG90
aGVyLm1fYm94LT5taW5IZWlnaHQoKQorICAgICAgICB8fCBtX2JveC0+bWF4SGVpZ2h0KCkgIT0g
b3RoZXIubV9ib3gtPm1heEhlaWdodCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlm
IChtX2JveC0+dmVydGljYWxBbGlnbigpICE9IG90aGVyLT5tX2JveC0+dmVydGljYWxBbGlnbigp
IHx8IG5vbmluaGVyaXRlZF9mbGFncy52ZXJ0aWNhbEFsaWduKCkgIT0gb3RoZXItPm5vbmluaGVy
aXRlZF9mbGFncy52ZXJ0aWNhbEFsaWduKCkpCisgICAgaWYgKG1fYm94LT52ZXJ0aWNhbEFsaWdu
KCkgIT0gb3RoZXIubV9ib3gtPnZlcnRpY2FsQWxpZ24oKSB8fCBub25pbmhlcml0ZWRfZmxhZ3Mu
dmVydGljYWxBbGlnbigpICE9IG90aGVyLm5vbmluaGVyaXRlZF9mbGFncy52ZXJ0aWNhbEFsaWdu
KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKG1fYm94LT5ib3hTaXppbmcoKSAh
PSBvdGhlci0+bV9ib3gtPmJveFNpemluZygpKQorICAgIGlmIChtX2JveC0+Ym94U2l6aW5nKCkg
IT0gb3RoZXIubV9ib3gtPmJveFNpemluZygpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAg
IGlmIChzdXJyb3VuZC0+bWFyZ2luICE9IG90aGVyLT5zdXJyb3VuZC0+bWFyZ2luKQorICAgIGlm
IChzdXJyb3VuZC0+bWFyZ2luICE9IG90aGVyLnN1cnJvdW5kLT5tYXJnaW4pCiAgICAgICAgIHJl
dHVybiB0cnVlOwogCi0gICAgaWYgKHN1cnJvdW5kLT5wYWRkaW5nICE9IG90aGVyLT5zdXJyb3Vu
ZC0+cGFkZGluZykKKyAgICBpZiAoc3Vycm91bmQtPnBhZGRpbmcgIT0gb3RoZXIuc3Vycm91bmQt
PnBhZGRpbmcpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8gRklYTUU6IFdlIHNob3Vs
ZCBhZGQgYW4gb3B0aW1pemVkIGZvcm0gb2YgbGF5b3V0IHRoYXQganVzdCByZWNvbXB1dGVzIHZp
c3VhbCBvdmVyZmxvdy4KLSAgICBpZiAoY2hhbmdlQWZmZWN0c1Zpc3VhbE92ZXJmbG93KCpvdGhl
cikpCisgICAgaWYgKGNoYW5nZUFmZmVjdHNWaXN1YWxPdmVyZmxvdyhvdGhlcikpCiAgICAgICAg
IHJldHVybiB0cnVlOwogCi0gICAgaWYgKHJhcmVOb25Jbmhlcml0ZWREYXRhLmdldCgpICE9IG90
aGVyLT5yYXJlTm9uSW5oZXJpdGVkRGF0YS5nZXQoKSkgewotICAgICAgICBpZiAocmFyZU5vbklu
aGVyaXRlZERhdGEtPm1fYXBwZWFyYW5jZSAhPSBvdGhlci0+cmFyZU5vbkluaGVyaXRlZERhdGEt
Pm1fYXBwZWFyYW5jZSAKLSAgICAgICAgICAgIHx8IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXJn
aW5CZWZvcmVDb2xsYXBzZSAhPSBvdGhlci0+cmFyZU5vbkluaGVyaXRlZERhdGEtPm1hcmdpbkJl
Zm9yZUNvbGxhcHNlCi0gICAgICAgICAgICB8fCByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bWFyZ2lu
QWZ0ZXJDb2xsYXBzZSAhPSBvdGhlci0+cmFyZU5vbkluaGVyaXRlZERhdGEtPm1hcmdpbkFmdGVy
Q29sbGFwc2UKLSAgICAgICAgICAgIHx8IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5saW5lQ2xhbXAg
IT0gb3RoZXItPnJhcmVOb25Jbmhlcml0ZWREYXRhLT5saW5lQ2xhbXAKLSAgICAgICAgICAgIHx8
IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2luaXRpYWxMZXR0ZXIgIT0gb3RoZXItPnJhcmVOb25J
bmhlcml0ZWREYXRhLT5tX2luaXRpYWxMZXR0ZXIKLSAgICAgICAgICAgIHx8IHJhcmVOb25Jbmhl
cml0ZWREYXRhLT50ZXh0T3ZlcmZsb3cgIT0gb3RoZXItPnJhcmVOb25Jbmhlcml0ZWREYXRhLT50
ZXh0T3ZlcmZsb3cpCisgICAgaWYgKHJhcmVOb25Jbmhlcml0ZWREYXRhLmdldCgpICE9IG90aGVy
LnJhcmVOb25Jbmhlcml0ZWREYXRhLmdldCgpKSB7CisgICAgICAgIGlmIChyYXJlTm9uSW5oZXJp
dGVkRGF0YS0+bV9hcHBlYXJhbmNlICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2Fw
cGVhcmFuY2UKKyAgICAgICAgICAgIHx8IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXJnaW5CZWZv
cmVDb2xsYXBzZSAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bWFyZ2luQmVmb3JlQ29s
bGFwc2UKKyAgICAgICAgICAgIHx8IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXJnaW5BZnRlckNv
bGxhcHNlICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXJnaW5BZnRlckNvbGxhcHNl
CisgICAgICAgICAgICB8fCByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bGluZUNsYW1wICE9IG90aGVy
LnJhcmVOb25Jbmhlcml0ZWREYXRhLT5saW5lQ2xhbXAKKyAgICAgICAgICAgIHx8IHJhcmVOb25J
bmhlcml0ZWREYXRhLT5tX2luaXRpYWxMZXR0ZXIgIT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERh
dGEtPm1faW5pdGlhbExldHRlcgorICAgICAgICAgICAgfHwgcmFyZU5vbkluaGVyaXRlZERhdGEt
PnRleHRPdmVyZmxvdyAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dGV4dE92ZXJmbG93
KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICAgICAgaWYgKHJhcmVOb25Jbmhlcml0
ZWREYXRhLT5tX3JlZ2lvbkZyYWdtZW50ICE9IG90aGVyLT5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+
bV9yZWdpb25GcmFnbWVudCkKKyAgICAgICAgaWYgKHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3Jl
Z2lvbkZyYWdtZW50ICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3JlZ2lvbkZyYWdt
ZW50KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKICNpZiBFTkFCTEUoQ1NTX1NIQVBFUykK
LSAgICAgICAgaWYgKHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3NoYXBlTWFyZ2luICE9IG90aGVy
LT5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9zaGFwZU1hcmdpbikKKyAgICAgICAgaWYgKHJhcmVO
b25Jbmhlcml0ZWREYXRhLT5tX3NoYXBlTWFyZ2luICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWRE
YXRhLT5tX3NoYXBlTWFyZ2luKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKIAot
ICAgICAgICBpZiAocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZGVwcmVjYXRlZEZsZXhpYmxlQm94
LmdldCgpICE9IG90aGVyLT5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9kZXByZWNhdGVkRmxleGli
bGVCb3guZ2V0KCkKLSAgICAgICAgICAgICYmICpyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9kZXBy
ZWNhdGVkRmxleGlibGVCb3guZ2V0KCkgIT0gKm90aGVyLT5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+
bV9kZXByZWNhdGVkRmxleGlibGVCb3guZ2V0KCkpCisgICAgICAgIGlmIChyYXJlTm9uSW5oZXJp
dGVkRGF0YS0+bV9kZXByZWNhdGVkRmxleGlibGVCb3guZ2V0KCkgIT0gb3RoZXIucmFyZU5vbklu
aGVyaXRlZERhdGEtPm1fZGVwcmVjYXRlZEZsZXhpYmxlQm94LmdldCgpCisgICAgICAgICAgICAm
JiAqcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZGVwcmVjYXRlZEZsZXhpYmxlQm94LmdldCgpICE9
ICpvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9kZXByZWNhdGVkRmxleGlibGVCb3guZ2V0
KCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgICAgICBpZiAocmFyZU5vbkluaGVy
aXRlZERhdGEtPm1fZmxleGlibGVCb3guZ2V0KCkgIT0gb3RoZXItPnJhcmVOb25Jbmhlcml0ZWRE
YXRhLT5tX2ZsZXhpYmxlQm94LmdldCgpCi0gICAgICAgICAgICAmJiAqcmFyZU5vbkluaGVyaXRl
ZERhdGEtPm1fZmxleGlibGVCb3guZ2V0KCkgIT0gKm90aGVyLT5yYXJlTm9uSW5oZXJpdGVkRGF0
YS0+bV9mbGV4aWJsZUJveC5nZXQoKSkKKyAgICAgICAgaWYgKHJhcmVOb25Jbmhlcml0ZWREYXRh
LT5tX2ZsZXhpYmxlQm94LmdldCgpICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2Zs
ZXhpYmxlQm94LmdldCgpCisgICAgICAgICAgICAmJiAqcmFyZU5vbkluaGVyaXRlZERhdGEtPm1f
ZmxleGlibGVCb3guZ2V0KCkgIT0gKm90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2ZsZXhp
YmxlQm94LmdldCgpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGlmIChyYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+bV9vcmRlciAhPSBvdGhlci0+cmFyZU5vbkluaGVyaXRlZERhdGEt
Pm1fb3JkZXIKLSAgICAgICAgICAgIHx8IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2FsaWduQ29u
dGVudCAhPSBvdGhlci0+cmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYWxpZ25Db250ZW50Ci0gICAg
ICAgICAgICB8fCByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9hbGlnbkl0ZW1zICE9IG90aGVyLT5y
YXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9hbGlnbkl0ZW1zCi0gICAgICAgICAgICB8fCByYXJlTm9u
SW5oZXJpdGVkRGF0YS0+bV9hbGlnblNlbGYgIT0gb3RoZXItPnJhcmVOb25Jbmhlcml0ZWREYXRh
LT5tX2FsaWduU2VsZgotICAgICAgICAgICAgfHwgcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fanVz
dGlmeUNvbnRlbnQgIT0gb3RoZXItPnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2p1c3RpZnlDb250
ZW50KQorICAgICAgICBpZiAocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fb3JkZXIgIT0gb3RoZXIu
cmFyZU5vbkluaGVyaXRlZERhdGEtPm1fb3JkZXIKKyAgICAgICAgICAgIHx8IHJhcmVOb25Jbmhl
cml0ZWREYXRhLT5tX2FsaWduQ29udGVudCAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+
bV9hbGlnbkNvbnRlbnQKKyAgICAgICAgICAgIHx8IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2Fs
aWduSXRlbXMgIT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYWxpZ25JdGVtcworICAg
ICAgICAgICAgfHwgcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYWxpZ25TZWxmICE9IG90aGVyLnJh
cmVOb25Jbmhlcml0ZWREYXRhLT5tX2FsaWduU2VsZgorICAgICAgICAgICAgfHwgcmFyZU5vbklu
aGVyaXRlZERhdGEtPm1fanVzdGlmeUNvbnRlbnQgIT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERh
dGEtPm1fanVzdGlmeUNvbnRlbnQpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgICAg
ICBpZiAoIXJhcmVOb25Jbmhlcml0ZWREYXRhLT5yZWZsZWN0aW9uRGF0YUVxdWl2YWxlbnQoKm90
aGVyLT5yYXJlTm9uSW5oZXJpdGVkRGF0YS5nZXQoKSkpCisgICAgICAgIGlmICghcmFyZU5vbklu
aGVyaXRlZERhdGEtPnJlZmxlY3Rpb25EYXRhRXF1aXZhbGVudCgqb3RoZXIucmFyZU5vbkluaGVy
aXRlZERhdGEuZ2V0KCkpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICAgICAgaWYg
KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX211bHRpQ29sLmdldCgpICE9IG90aGVyLT5yYXJlTm9u
SW5oZXJpdGVkRGF0YS0+bV9tdWx0aUNvbC5nZXQoKQotICAgICAgICAgICAgJiYgKnJhcmVOb25J
bmhlcml0ZWREYXRhLT5tX211bHRpQ29sLmdldCgpICE9ICpvdGhlci0+cmFyZU5vbkluaGVyaXRl
ZERhdGEtPm1fbXVsdGlDb2wuZ2V0KCkpCisgICAgICAgIGlmIChyYXJlTm9uSW5oZXJpdGVkRGF0
YS0+bV9tdWx0aUNvbC5nZXQoKSAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9tdWx0
aUNvbC5nZXQoKQorICAgICAgICAgICAgJiYgKnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX211bHRp
Q29sLmdldCgpICE9ICpvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9tdWx0aUNvbC5nZXQo
KSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgICAgIGlmIChyYXJlTm9uSW5oZXJp
dGVkRGF0YS0+bV90cmFuc2Zvcm0uZ2V0KCkgIT0gb3RoZXItPnJhcmVOb25Jbmhlcml0ZWREYXRh
LT5tX3RyYW5zZm9ybS5nZXQoKQotICAgICAgICAgICAgJiYgKnJhcmVOb25Jbmhlcml0ZWREYXRh
LT5tX3RyYW5zZm9ybS5nZXQoKSAhPSAqb3RoZXItPnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3Ry
YW5zZm9ybS5nZXQoKSkgeworICAgICAgICBpZiAocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fdHJh
bnNmb3JtLmdldCgpICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3RyYW5zZm9ybS5n
ZXQoKQorICAgICAgICAgICAgJiYgKnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3RyYW5zZm9ybS5n
ZXQoKSAhPSAqb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPm1fdHJhbnNmb3JtLmdldCgpKSB7
CiAgICAgICAgICAgICBjaGFuZ2VkQ29udGV4dFNlbnNpdGl2ZVByb3BlcnRpZXMgfD0gQ29udGV4
dFNlbnNpdGl2ZVByb3BlcnR5VHJhbnNmb3JtOwogICAgICAgICAgICAgLy8gRG9uJ3QgcmV0dXJu
OyBrZWVwIGxvb2tpbmcgZm9yIGFub3RoZXIgY2hhbmdlCiAgICAgICAgIH0KIAogI2lmIEVOQUJM
RShDU1NfR1JJRF9MQVlPVVQpCi0gICAgICAgIGlmIChyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9n
cmlkLmdldCgpICE9IG90aGVyLT5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ncmlkLmdldCgpCi0g
ICAgICAgICAgICB8fCByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ncmlkSXRlbS5nZXQoKSAhPSBv
dGhlci0+cmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZ3JpZEl0ZW0uZ2V0KCkpCisgICAgICAgIGlm
IChyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ncmlkLmdldCgpICE9IG90aGVyLnJhcmVOb25Jbmhl
cml0ZWREYXRhLT5tX2dyaWQuZ2V0KCkKKyAgICAgICAgICAgIHx8IHJhcmVOb25Jbmhlcml0ZWRE
YXRhLT5tX2dyaWRJdGVtLmdldCgpICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2dy
aWRJdGVtLmdldCgpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKIAogI2lmIEVO
QUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKICAgICAgICAgLy8gSWYgcmVnaW9ucyBjaGFuZ2UsIHRy
aWdnZXIgYSByZWxheW91dCB0byByZS1jYWxjIHJlZ2lvbnMuCi0gICAgICAgIGlmIChyYXJlTm9u
SW5oZXJpdGVkRGF0YS0+bV9kYXNoYm9hcmRSZWdpb25zICE9IG90aGVyLT5yYXJlTm9uSW5oZXJp
dGVkRGF0YS0+bV9kYXNoYm9hcmRSZWdpb25zKQorICAgICAgICBpZiAocmFyZU5vbkluaGVyaXRl
ZERhdGEtPm1fZGFzaGJvYXJkUmVnaW9ucyAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+
bV9kYXNoYm9hcmRSZWdpb25zKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKICAg
ICB9CiAKLSAgICBpZiAocmFyZUluaGVyaXRlZERhdGEuZ2V0KCkgIT0gb3RoZXItPnJhcmVJbmhl
cml0ZWREYXRhLmdldCgpKSB7Ci0gICAgICAgIGlmIChyYXJlSW5oZXJpdGVkRGF0YS0+aW5kZW50
ICE9IG90aGVyLT5yYXJlSW5oZXJpdGVkRGF0YS0+aW5kZW50CisgICAgaWYgKHJhcmVJbmhlcml0
ZWREYXRhLmdldCgpICE9IG90aGVyLnJhcmVJbmhlcml0ZWREYXRhLmdldCgpKSB7CisgICAgICAg
IGlmIChyYXJlSW5oZXJpdGVkRGF0YS0+aW5kZW50ICE9IG90aGVyLnJhcmVJbmhlcml0ZWREYXRh
LT5pbmRlbnQKICNpZiBFTkFCTEUoQ1NTM19URVhUKQotICAgICAgICAgICAgfHwgcmFyZUluaGVy
aXRlZERhdGEtPm1fdGV4dEFsaWduTGFzdCAhPSBvdGhlci0+cmFyZUluaGVyaXRlZERhdGEtPm1f
dGV4dEFsaWduTGFzdAotICAgICAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPm1fdGV4dEp1
c3RpZnkgIT0gb3RoZXItPnJhcmVJbmhlcml0ZWREYXRhLT5tX3RleHRKdXN0aWZ5Ci0gICAgICAg
ICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+bV90ZXh0SW5kZW50TGluZSAhPSBvdGhlci0+cmFy
ZUluaGVyaXRlZERhdGEtPm1fdGV4dEluZGVudExpbmUKKyAgICAgICAgICAgIHx8IHJhcmVJbmhl
cml0ZWREYXRhLT5tX3RleHRBbGlnbkxhc3QgIT0gb3RoZXIucmFyZUluaGVyaXRlZERhdGEtPm1f
dGV4dEFsaWduTGFzdAorICAgICAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPm1fdGV4dEp1
c3RpZnkgIT0gb3RoZXIucmFyZUluaGVyaXRlZERhdGEtPm1fdGV4dEp1c3RpZnkKKyAgICAgICAg
ICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT5tX3RleHRJbmRlbnRMaW5lICE9IG90aGVyLnJhcmVJ
bmhlcml0ZWREYXRhLT5tX3RleHRJbmRlbnRMaW5lCiAjZW5kaWYKLSAgICAgICAgICAgIHx8IHJh
cmVJbmhlcml0ZWREYXRhLT5tX2VmZmVjdGl2ZVpvb20gIT0gb3RoZXItPnJhcmVJbmhlcml0ZWRE
YXRhLT5tX2VmZmVjdGl2ZVpvb20KKyAgICAgICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT5t
X2VmZmVjdGl2ZVpvb20gIT0gb3RoZXIucmFyZUluaGVyaXRlZERhdGEtPm1fZWZmZWN0aXZlWm9v
bQogI2lmIEVOQUJMRShJT1NfVEVYVF9BVVRPU0laSU5HKQotICAgICAgICAgICAgfHwgcmFyZUlu
aGVyaXRlZERhdGEtPnRleHRTaXplQWRqdXN0ICE9IG90aGVyLT5yYXJlSW5oZXJpdGVkRGF0YS0+
dGV4dFNpemVBZGp1c3QKKyAgICAgICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT50ZXh0U2l6
ZUFkanVzdCAhPSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dFNpemVBZGp1c3QKICNlbmRp
ZgotICAgICAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPndvcmRCcmVhayAhPSBvdGhlci0+
cmFyZUluaGVyaXRlZERhdGEtPndvcmRCcmVhawotICAgICAgICAgICAgfHwgcmFyZUluaGVyaXRl
ZERhdGEtPm92ZXJmbG93V3JhcCAhPSBvdGhlci0+cmFyZUluaGVyaXRlZERhdGEtPm92ZXJmbG93
V3JhcAotICAgICAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPm5ic3BNb2RlICE9IG90aGVy
LT5yYXJlSW5oZXJpdGVkRGF0YS0+bmJzcE1vZGUKLSAgICAgICAgICAgIHx8IHJhcmVJbmhlcml0
ZWREYXRhLT5saW5lQnJlYWsgIT0gb3RoZXItPnJhcmVJbmhlcml0ZWREYXRhLT5saW5lQnJlYWsK
LSAgICAgICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT50ZXh0U2VjdXJpdHkgIT0gb3RoZXIt
PnJhcmVJbmhlcml0ZWREYXRhLT50ZXh0U2VjdXJpdHkKLSAgICAgICAgICAgIHx8IHJhcmVJbmhl
cml0ZWREYXRhLT5oeXBoZW5zICE9IG90aGVyLT5yYXJlSW5oZXJpdGVkRGF0YS0+aHlwaGVucwot
ICAgICAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPmh5cGhlbmF0aW9uTGltaXRCZWZvcmUg
IT0gb3RoZXItPnJhcmVJbmhlcml0ZWREYXRhLT5oeXBoZW5hdGlvbkxpbWl0QmVmb3JlCi0gICAg
ICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+aHlwaGVuYXRpb25MaW1pdEFmdGVyICE9IG90
aGVyLT5yYXJlSW5oZXJpdGVkRGF0YS0+aHlwaGVuYXRpb25MaW1pdEFmdGVyCi0gICAgICAgICAg
ICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+aHlwaGVuYXRpb25TdHJpbmcgIT0gb3RoZXItPnJhcmVJ
bmhlcml0ZWREYXRhLT5oeXBoZW5hdGlvblN0cmluZwotICAgICAgICAgICAgfHwgcmFyZUluaGVy
aXRlZERhdGEtPmxvY2FsZSAhPSBvdGhlci0+cmFyZUluaGVyaXRlZERhdGEtPmxvY2FsZQotICAg
ICAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPm1fcnVieVBvc2l0aW9uICE9IG90aGVyLT5y
YXJlSW5oZXJpdGVkRGF0YS0+bV9ydWJ5UG9zaXRpb24KLSAgICAgICAgICAgIHx8IHJhcmVJbmhl
cml0ZWREYXRhLT50ZXh0RW1waGFzaXNNYXJrICE9IG90aGVyLT5yYXJlSW5oZXJpdGVkRGF0YS0+
dGV4dEVtcGhhc2lzTWFyawotICAgICAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPnRleHRF
bXBoYXNpc1Bvc2l0aW9uICE9IG90aGVyLT5yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEVtcGhhc2lz
UG9zaXRpb24KLSAgICAgICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT50ZXh0RW1waGFzaXND
dXN0b21NYXJrICE9IG90aGVyLT5yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEVtcGhhc2lzQ3VzdG9t
TWFyawotICAgICAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPm1fdGV4dE9yaWVudGF0aW9u
ICE9IG90aGVyLT5yYXJlSW5oZXJpdGVkRGF0YS0+bV90ZXh0T3JpZW50YXRpb24KLSAgICAgICAg
ICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT5tX3RhYlNpemUgIT0gb3RoZXItPnJhcmVJbmhlcml0
ZWREYXRhLT5tX3RhYlNpemUKLSAgICAgICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT5tX2xp
bmVCb3hDb250YWluICE9IG90aGVyLT5yYXJlSW5oZXJpdGVkRGF0YS0+bV9saW5lQm94Q29udGFp
bgotICAgICAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPm1fbGluZUdyaWQgIT0gb3RoZXIt
PnJhcmVJbmhlcml0ZWREYXRhLT5tX2xpbmVHcmlkCisgICAgICAgICAgICB8fCByYXJlSW5oZXJp
dGVkRGF0YS0+d29yZEJyZWFrICE9IG90aGVyLnJhcmVJbmhlcml0ZWREYXRhLT53b3JkQnJlYWsK
KyAgICAgICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT5vdmVyZmxvd1dyYXAgIT0gb3RoZXIu
cmFyZUluaGVyaXRlZERhdGEtPm92ZXJmbG93V3JhcAorICAgICAgICAgICAgfHwgcmFyZUluaGVy
aXRlZERhdGEtPm5ic3BNb2RlICE9IG90aGVyLnJhcmVJbmhlcml0ZWREYXRhLT5uYnNwTW9kZQor
ICAgICAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPmxpbmVCcmVhayAhPSBvdGhlci5yYXJl
SW5oZXJpdGVkRGF0YS0+bGluZUJyZWFrCisgICAgICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0
YS0+dGV4dFNlY3VyaXR5ICE9IG90aGVyLnJhcmVJbmhlcml0ZWREYXRhLT50ZXh0U2VjdXJpdHkK
KyAgICAgICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT5oeXBoZW5zICE9IG90aGVyLnJhcmVJ
bmhlcml0ZWREYXRhLT5oeXBoZW5zCisgICAgICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+
aHlwaGVuYXRpb25MaW1pdEJlZm9yZSAhPSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+aHlwaGVu
YXRpb25MaW1pdEJlZm9yZQorICAgICAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPmh5cGhl
bmF0aW9uTGltaXRBZnRlciAhPSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+aHlwaGVuYXRpb25M
aW1pdEFmdGVyCisgICAgICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+aHlwaGVuYXRpb25T
dHJpbmcgIT0gb3RoZXIucmFyZUluaGVyaXRlZERhdGEtPmh5cGhlbmF0aW9uU3RyaW5nCisgICAg
ICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+bG9jYWxlICE9IG90aGVyLnJhcmVJbmhlcml0
ZWREYXRhLT5sb2NhbGUKKyAgICAgICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT5tX3J1YnlQ
b3NpdGlvbiAhPSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+bV9ydWJ5UG9zaXRpb24KKyAgICAg
ICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT50ZXh0RW1waGFzaXNNYXJrICE9IG90aGVyLnJh
cmVJbmhlcml0ZWREYXRhLT50ZXh0RW1waGFzaXNNYXJrCisgICAgICAgICAgICB8fCByYXJlSW5o
ZXJpdGVkRGF0YS0+dGV4dEVtcGhhc2lzUG9zaXRpb24gIT0gb3RoZXIucmFyZUluaGVyaXRlZERh
dGEtPnRleHRFbXBoYXNpc1Bvc2l0aW9uCisgICAgICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0
YS0+dGV4dEVtcGhhc2lzQ3VzdG9tTWFyayAhPSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+dGV4
dEVtcGhhc2lzQ3VzdG9tTWFyaworICAgICAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPm1f
dGV4dE9yaWVudGF0aW9uICE9IG90aGVyLnJhcmVJbmhlcml0ZWREYXRhLT5tX3RleHRPcmllbnRh
dGlvbgorICAgICAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPm1fdGFiU2l6ZSAhPSBvdGhl
ci5yYXJlSW5oZXJpdGVkRGF0YS0+bV90YWJTaXplCisgICAgICAgICAgICB8fCByYXJlSW5oZXJp
dGVkRGF0YS0+bV9saW5lQm94Q29udGFpbiAhPSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+bV9s
aW5lQm94Q29udGFpbgorICAgICAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPm1fbGluZUdy
aWQgIT0gb3RoZXIucmFyZUluaGVyaXRlZERhdGEtPm1fbGluZUdyaWQKICNpZiBFTkFCTEUoQ1NT
X0lNQUdFX09SSUVOVEFUSU9OKQotICAgICAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPm1f
aW1hZ2VPcmllbnRhdGlvbiAhPSBvdGhlci0+cmFyZUluaGVyaXRlZERhdGEtPm1faW1hZ2VPcmll
bnRhdGlvbgorICAgICAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPm1faW1hZ2VPcmllbnRh
dGlvbiAhPSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+bV9pbWFnZU9yaWVudGF0aW9uCiAjZW5k
aWYKICNpZiBFTkFCTEUoQ1NTX0lNQUdFX1JFU09MVVRJT04pCi0gICAgICAgICAgICB8fCByYXJl
SW5oZXJpdGVkRGF0YS0+bV9pbWFnZVJlc29sdXRpb25Tb3VyY2UgIT0gb3RoZXItPnJhcmVJbmhl
cml0ZWREYXRhLT5tX2ltYWdlUmVzb2x1dGlvblNvdXJjZQotICAgICAgICAgICAgfHwgcmFyZUlu
aGVyaXRlZERhdGEtPm1faW1hZ2VSZXNvbHV0aW9uU25hcCAhPSBvdGhlci0+cmFyZUluaGVyaXRl
ZERhdGEtPm1faW1hZ2VSZXNvbHV0aW9uU25hcAotICAgICAgICAgICAgfHwgcmFyZUluaGVyaXRl
ZERhdGEtPm1faW1hZ2VSZXNvbHV0aW9uICE9IG90aGVyLT5yYXJlSW5oZXJpdGVkRGF0YS0+bV9p
bWFnZVJlc29sdXRpb24KKyAgICAgICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT5tX2ltYWdl
UmVzb2x1dGlvblNvdXJjZSAhPSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+bV9pbWFnZVJlc29s
dXRpb25Tb3VyY2UKKyAgICAgICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT5tX2ltYWdlUmVz
b2x1dGlvblNuYXAgIT0gb3RoZXIucmFyZUluaGVyaXRlZERhdGEtPm1faW1hZ2VSZXNvbHV0aW9u
U25hcAorICAgICAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPm1faW1hZ2VSZXNvbHV0aW9u
ICE9IG90aGVyLnJhcmVJbmhlcml0ZWREYXRhLT5tX2ltYWdlUmVzb2x1dGlvbgogI2VuZGlmCi0g
ICAgICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+bV9saW5lU25hcCAhPSBvdGhlci0+cmFy
ZUluaGVyaXRlZERhdGEtPm1fbGluZVNuYXAKLSAgICAgICAgICAgIHx8IHJhcmVJbmhlcml0ZWRE
YXRhLT5tX2xpbmVBbGlnbiAhPSBvdGhlci0+cmFyZUluaGVyaXRlZERhdGEtPm1fbGluZUFsaWdu
CisgICAgICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+bV9saW5lU25hcCAhPSBvdGhlci5y
YXJlSW5oZXJpdGVkRGF0YS0+bV9saW5lU25hcAorICAgICAgICAgICAgfHwgcmFyZUluaGVyaXRl
ZERhdGEtPm1fbGluZUFsaWduICE9IG90aGVyLnJhcmVJbmhlcml0ZWREYXRhLT5tX2xpbmVBbGln
bgogI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF9PVkVSRkxPV19TQ1JPTExJTkcpCi0gICAgICAgICAg
ICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+dXNlVG91Y2hPdmVyZmxvd1Njcm9sbGluZyAhPSBvdGhl
ci0+cmFyZUluaGVyaXRlZERhdGEtPnVzZVRvdWNoT3ZlcmZsb3dTY3JvbGxpbmcKKyAgICAgICAg
ICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT51c2VUb3VjaE92ZXJmbG93U2Nyb2xsaW5nICE9IG90
aGVyLnJhcmVJbmhlcml0ZWREYXRhLT51c2VUb3VjaE92ZXJmbG93U2Nyb2xsaW5nCiAjZW5kaWYK
LSAgICAgICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT5saXN0U3R5bGVJbWFnZSAhPSBvdGhl
ci0+cmFyZUluaGVyaXRlZERhdGEtPmxpc3RTdHlsZUltYWdlKQorICAgICAgICAgICAgfHwgcmFy
ZUluaGVyaXRlZERhdGEtPmxpc3RTdHlsZUltYWdlICE9IG90aGVyLnJhcmVJbmhlcml0ZWREYXRh
LT5saXN0U3R5bGVJbWFnZSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgICAgIGlm
ICghcmFyZUluaGVyaXRlZERhdGEtPnNoYWRvd0RhdGFFcXVpdmFsZW50KCpvdGhlci0+cmFyZUlu
aGVyaXRlZERhdGEuZ2V0KCkpKQorICAgICAgICBpZiAoIXJhcmVJbmhlcml0ZWREYXRhLT5zaGFk
b3dEYXRhRXF1aXZhbGVudCgqb3RoZXIucmFyZUluaGVyaXRlZERhdGEuZ2V0KCkpKQogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICAgICAgaWYgKHRleHRTdHJva2VXaWR0aCgpICE9IG90
aGVyLT50ZXh0U3Ryb2tlV2lkdGgoKSkKKyAgICAgICAgaWYgKHRleHRTdHJva2VXaWR0aCgpICE9
IG90aGVyLnRleHRTdHJva2VXaWR0aCgpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogCiAjaWYgRU5BQkxFKFRFWFRfQVVUT1NJWklORykKLSAgICBpZiAodmlzdWFsLT5tX3RleHRB
dXRvc2l6aW5nTXVsdGlwbGllciAhPSBvdGhlci0+dmlzdWFsLT5tX3RleHRBdXRvc2l6aW5nTXVs
dGlwbGllcikKKyAgICBpZiAodmlzdWFsLT5tX3RleHRBdXRvc2l6aW5nTXVsdGlwbGllciAhPSBv
dGhlci52aXN1YWwtPm1fdGV4dEF1dG9zaXppbmdNdWx0aXBsaWVyKQogICAgICAgICByZXR1cm4g
dHJ1ZTsKICNlbmRpZgogCi0gICAgaWYgKGluaGVyaXRlZC0+bGluZV9oZWlnaHQgIT0gb3RoZXIt
PmluaGVyaXRlZC0+bGluZV9oZWlnaHQKKyAgICBpZiAoaW5oZXJpdGVkLT5saW5lX2hlaWdodCAh
PSBvdGhlci5pbmhlcml0ZWQtPmxpbmVfaGVpZ2h0CiAjaWYgRU5BQkxFKElPU19URVhUX0FVVE9T
SVpJTkcpCi0gICAgICAgIHx8IGluaGVyaXRlZC0+c3BlY2lmaWVkTGluZUhlaWdodCAhPSBvdGhl
ci0+aW5oZXJpdGVkLT5zcGVjaWZpZWRMaW5lSGVpZ2h0CisgICAgICAgIHx8IGluaGVyaXRlZC0+
c3BlY2lmaWVkTGluZUhlaWdodCAhPSBvdGhlci5pbmhlcml0ZWQtPnNwZWNpZmllZExpbmVIZWln
aHQKICNlbmRpZgotICAgICAgICB8fCBpbmhlcml0ZWQtPmZvbnQgIT0gb3RoZXItPmluaGVyaXRl
ZC0+Zm9udAotICAgICAgICB8fCBpbmhlcml0ZWQtPmhvcml6b250YWxfYm9yZGVyX3NwYWNpbmcg
IT0gb3RoZXItPmluaGVyaXRlZC0+aG9yaXpvbnRhbF9ib3JkZXJfc3BhY2luZwotICAgICAgICB8
fCBpbmhlcml0ZWQtPnZlcnRpY2FsX2JvcmRlcl9zcGFjaW5nICE9IG90aGVyLT5pbmhlcml0ZWQt
PnZlcnRpY2FsX2JvcmRlcl9zcGFjaW5nCi0gICAgICAgIHx8IGluaGVyaXRlZF9mbGFncy5fYm94
X2RpcmVjdGlvbiAhPSBvdGhlci0+aW5oZXJpdGVkX2ZsYWdzLl9ib3hfZGlyZWN0aW9uCi0gICAg
ICAgIHx8IGluaGVyaXRlZF9mbGFncy5tX3J0bE9yZGVyaW5nICE9IG90aGVyLT5pbmhlcml0ZWRf
ZmxhZ3MubV9ydGxPcmRlcmluZwotICAgICAgICB8fCBub25pbmhlcml0ZWRfZmxhZ3MucG9zaXRp
b24oKSAhPSBvdGhlci0+bm9uaW5oZXJpdGVkX2ZsYWdzLnBvc2l0aW9uKCkKLSAgICAgICAgfHwg
bm9uaW5oZXJpdGVkX2ZsYWdzLmZsb2F0aW5nKCkgIT0gb3RoZXItPm5vbmluaGVyaXRlZF9mbGFn
cy5mbG9hdGluZygpCi0gICAgICAgIHx8IG5vbmluaGVyaXRlZF9mbGFncy5vcmlnaW5hbERpc3Bs
YXkoKSAhPSBvdGhlci0+bm9uaW5oZXJpdGVkX2ZsYWdzLm9yaWdpbmFsRGlzcGxheSgpKQorICAg
ICAgICB8fCBpbmhlcml0ZWQtPmZvbnQgIT0gb3RoZXIuaW5oZXJpdGVkLT5mb250CisgICAgICAg
IHx8IGluaGVyaXRlZC0+aG9yaXpvbnRhbF9ib3JkZXJfc3BhY2luZyAhPSBvdGhlci5pbmhlcml0
ZWQtPmhvcml6b250YWxfYm9yZGVyX3NwYWNpbmcKKyAgICAgICAgfHwgaW5oZXJpdGVkLT52ZXJ0
aWNhbF9ib3JkZXJfc3BhY2luZyAhPSBvdGhlci5pbmhlcml0ZWQtPnZlcnRpY2FsX2JvcmRlcl9z
cGFjaW5nCisgICAgICAgIHx8IGluaGVyaXRlZF9mbGFncy5fYm94X2RpcmVjdGlvbiAhPSBvdGhl
ci5pbmhlcml0ZWRfZmxhZ3MuX2JveF9kaXJlY3Rpb24KKyAgICAgICAgfHwgaW5oZXJpdGVkX2Zs
YWdzLm1fcnRsT3JkZXJpbmcgIT0gb3RoZXIuaW5oZXJpdGVkX2ZsYWdzLm1fcnRsT3JkZXJpbmcK
KyAgICAgICAgfHwgbm9uaW5oZXJpdGVkX2ZsYWdzLnBvc2l0aW9uKCkgIT0gb3RoZXIubm9uaW5o
ZXJpdGVkX2ZsYWdzLnBvc2l0aW9uKCkKKyAgICAgICAgfHwgbm9uaW5oZXJpdGVkX2ZsYWdzLmZs
b2F0aW5nKCkgIT0gb3RoZXIubm9uaW5oZXJpdGVkX2ZsYWdzLmZsb2F0aW5nKCkKKyAgICAgICAg
fHwgbm9uaW5oZXJpdGVkX2ZsYWdzLm9yaWdpbmFsRGlzcGxheSgpICE9IG90aGVyLm5vbmluaGVy
aXRlZF9mbGFncy5vcmlnaW5hbERpc3BsYXkoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKIAog
ICAgIGlmICgobm9uaW5oZXJpdGVkX2ZsYWdzLmVmZmVjdGl2ZURpc3BsYXkoKSkgPj0gVEFCTEUp
IHsKLSAgICAgICAgaWYgKGluaGVyaXRlZF9mbGFncy5fYm9yZGVyX2NvbGxhcHNlICE9IG90aGVy
LT5pbmhlcml0ZWRfZmxhZ3MuX2JvcmRlcl9jb2xsYXBzZQotICAgICAgICAgICAgfHwgaW5oZXJp
dGVkX2ZsYWdzLl9lbXB0eV9jZWxscyAhPSBvdGhlci0+aW5oZXJpdGVkX2ZsYWdzLl9lbXB0eV9j
ZWxscwotICAgICAgICAgICAgfHwgaW5oZXJpdGVkX2ZsYWdzLl9jYXB0aW9uX3NpZGUgIT0gb3Ro
ZXItPmluaGVyaXRlZF9mbGFncy5fY2FwdGlvbl9zaWRlCi0gICAgICAgICAgICB8fCBub25pbmhl
cml0ZWRfZmxhZ3MudGFibGVMYXlvdXQoKSAhPSBvdGhlci0+bm9uaW5oZXJpdGVkX2ZsYWdzLnRh
YmxlTGF5b3V0KCkpCisgICAgICAgIGlmIChpbmhlcml0ZWRfZmxhZ3MuX2JvcmRlcl9jb2xsYXBz
ZSAhPSBvdGhlci5pbmhlcml0ZWRfZmxhZ3MuX2JvcmRlcl9jb2xsYXBzZQorICAgICAgICAgICAg
fHwgaW5oZXJpdGVkX2ZsYWdzLl9lbXB0eV9jZWxscyAhPSBvdGhlci5pbmhlcml0ZWRfZmxhZ3Mu
X2VtcHR5X2NlbGxzCisgICAgICAgICAgICB8fCBpbmhlcml0ZWRfZmxhZ3MuX2NhcHRpb25fc2lk
ZSAhPSBvdGhlci5pbmhlcml0ZWRfZmxhZ3MuX2NhcHRpb25fc2lkZQorICAgICAgICAgICAgfHwg
bm9uaW5oZXJpdGVkX2ZsYWdzLnRhYmxlTGF5b3V0KCkgIT0gb3RoZXIubm9uaW5oZXJpdGVkX2Zs
YWdzLnRhYmxlTGF5b3V0KCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgICAgICAv
LyBJbiB0aGUgY29sbGFwc2luZyBib3JkZXIgbW9kZWwsICdoaWRkZW4nIHN1cHByZXNzZXMgb3Ro
ZXIgYm9yZGVycywgd2hpbGUgJ25vbmUnCiAgICAgICAgIC8vIGRvZXMgbm90LCBzbyB0aGVzZSBz
dHlsZSBkaWZmZXJlbmNlcyBjYW4gYmUgd2lkdGggZGlmZmVyZW5jZXMuCiAgICAgICAgIGlmIChp
bmhlcml0ZWRfZmxhZ3MuX2JvcmRlcl9jb2xsYXBzZQotICAgICAgICAgICAgJiYgKChib3JkZXJU
b3BTdHlsZSgpID09IEJISURERU4gJiYgb3RoZXItPmJvcmRlclRvcFN0eWxlKCkgPT0gQk5PTkUp
Ci0gICAgICAgICAgICAgICAgfHwgKGJvcmRlclRvcFN0eWxlKCkgPT0gQk5PTkUgJiYgb3RoZXIt
PmJvcmRlclRvcFN0eWxlKCkgPT0gQkhJRERFTikKLSAgICAgICAgICAgICAgICB8fCAoYm9yZGVy
Qm90dG9tU3R5bGUoKSA9PSBCSElEREVOICYmIG90aGVyLT5ib3JkZXJCb3R0b21TdHlsZSgpID09
IEJOT05FKQotICAgICAgICAgICAgICAgIHx8IChib3JkZXJCb3R0b21TdHlsZSgpID09IEJOT05F
ICYmIG90aGVyLT5ib3JkZXJCb3R0b21TdHlsZSgpID09IEJISURERU4pCi0gICAgICAgICAgICAg
ICAgfHwgKGJvcmRlckxlZnRTdHlsZSgpID09IEJISURERU4gJiYgb3RoZXItPmJvcmRlckxlZnRT
dHlsZSgpID09IEJOT05FKQotICAgICAgICAgICAgICAgIHx8IChib3JkZXJMZWZ0U3R5bGUoKSA9
PSBCTk9ORSAmJiBvdGhlci0+Ym9yZGVyTGVmdFN0eWxlKCkgPT0gQkhJRERFTikKLSAgICAgICAg
ICAgICAgICB8fCAoYm9yZGVyUmlnaHRTdHlsZSgpID09IEJISURERU4gJiYgb3RoZXItPmJvcmRl
clJpZ2h0U3R5bGUoKSA9PSBCTk9ORSkKLSAgICAgICAgICAgICAgICB8fCAoYm9yZGVyUmlnaHRT
dHlsZSgpID09IEJOT05FICYmIG90aGVyLT5ib3JkZXJSaWdodFN0eWxlKCkgPT0gQkhJRERFTikp
KQorICAgICAgICAgICAgJiYgKChib3JkZXJUb3BTdHlsZSgpID09IEJISURERU4gJiYgb3RoZXIu
Ym9yZGVyVG9wU3R5bGUoKSA9PSBCTk9ORSkKKyAgICAgICAgICAgICAgICB8fCAoYm9yZGVyVG9w
U3R5bGUoKSA9PSBCTk9ORSAmJiBvdGhlci5ib3JkZXJUb3BTdHlsZSgpID09IEJISURERU4pCisg
ICAgICAgICAgICAgICAgfHwgKGJvcmRlckJvdHRvbVN0eWxlKCkgPT0gQkhJRERFTiAmJiBvdGhl
ci5ib3JkZXJCb3R0b21TdHlsZSgpID09IEJOT05FKQorICAgICAgICAgICAgICAgIHx8IChib3Jk
ZXJCb3R0b21TdHlsZSgpID09IEJOT05FICYmIG90aGVyLmJvcmRlckJvdHRvbVN0eWxlKCkgPT0g
QkhJRERFTikKKyAgICAgICAgICAgICAgICB8fCAoYm9yZGVyTGVmdFN0eWxlKCkgPT0gQkhJRERF
TiAmJiBvdGhlci5ib3JkZXJMZWZ0U3R5bGUoKSA9PSBCTk9ORSkKKyAgICAgICAgICAgICAgICB8
fCAoYm9yZGVyTGVmdFN0eWxlKCkgPT0gQk5PTkUgJiYgb3RoZXIuYm9yZGVyTGVmdFN0eWxlKCkg
PT0gQkhJRERFTikKKyAgICAgICAgICAgICAgICB8fCAoYm9yZGVyUmlnaHRTdHlsZSgpID09IEJI
SURERU4gJiYgb3RoZXIuYm9yZGVyUmlnaHRTdHlsZSgpID09IEJOT05FKQorICAgICAgICAgICAg
ICAgIHx8IChib3JkZXJSaWdodFN0eWxlKCkgPT0gQk5PTkUgJiYgb3RoZXIuYm9yZGVyUmlnaHRT
dHlsZSgpID09IEJISURERU4pKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAog
ICAgIGlmIChub25pbmhlcml0ZWRfZmxhZ3MuZWZmZWN0aXZlRGlzcGxheSgpID09IExJU1RfSVRF
TSkgewotICAgICAgICBpZiAoaW5oZXJpdGVkX2ZsYWdzLl9saXN0X3N0eWxlX3R5cGUgIT0gb3Ro
ZXItPmluaGVyaXRlZF9mbGFncy5fbGlzdF9zdHlsZV90eXBlCi0gICAgICAgICAgICB8fCBpbmhl
cml0ZWRfZmxhZ3MuX2xpc3Rfc3R5bGVfcG9zaXRpb24gIT0gb3RoZXItPmluaGVyaXRlZF9mbGFn
cy5fbGlzdF9zdHlsZV9wb3NpdGlvbikKKyAgICAgICAgaWYgKGluaGVyaXRlZF9mbGFncy5fbGlz
dF9zdHlsZV90eXBlICE9IG90aGVyLmluaGVyaXRlZF9mbGFncy5fbGlzdF9zdHlsZV90eXBlCisg
ICAgICAgICAgICB8fCBpbmhlcml0ZWRfZmxhZ3MuX2xpc3Rfc3R5bGVfcG9zaXRpb24gIT0gb3Ro
ZXIuaW5oZXJpdGVkX2ZsYWdzLl9saXN0X3N0eWxlX3Bvc2l0aW9uKQogICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQogCi0gICAgaWYgKGluaGVyaXRlZF9mbGFncy5fdGV4dF9hbGlnbiAh
PSBvdGhlci0+aW5oZXJpdGVkX2ZsYWdzLl90ZXh0X2FsaWduCi0gICAgICAgIHx8IGluaGVyaXRl
ZF9mbGFncy5fdGV4dF90cmFuc2Zvcm0gIT0gb3RoZXItPmluaGVyaXRlZF9mbGFncy5fdGV4dF90
cmFuc2Zvcm0KLSAgICAgICAgfHwgaW5oZXJpdGVkX2ZsYWdzLl9kaXJlY3Rpb24gIT0gb3RoZXIt
PmluaGVyaXRlZF9mbGFncy5fZGlyZWN0aW9uCi0gICAgICAgIHx8IGluaGVyaXRlZF9mbGFncy5f
d2hpdGVfc3BhY2UgIT0gb3RoZXItPmluaGVyaXRlZF9mbGFncy5fd2hpdGVfc3BhY2UKLSAgICAg
ICAgfHwgbm9uaW5oZXJpdGVkX2ZsYWdzLmNsZWFyKCkgIT0gb3RoZXItPm5vbmluaGVyaXRlZF9m
bGFncy5jbGVhcigpCi0gICAgICAgIHx8IG5vbmluaGVyaXRlZF9mbGFncy51bmljb2RlQmlkaSgp
ICE9IG90aGVyLT5ub25pbmhlcml0ZWRfZmxhZ3MudW5pY29kZUJpZGkoKSkKKyAgICBpZiAoaW5o
ZXJpdGVkX2ZsYWdzLl90ZXh0X2FsaWduICE9IG90aGVyLmluaGVyaXRlZF9mbGFncy5fdGV4dF9h
bGlnbgorICAgICAgICB8fCBpbmhlcml0ZWRfZmxhZ3MuX3RleHRfdHJhbnNmb3JtICE9IG90aGVy
LmluaGVyaXRlZF9mbGFncy5fdGV4dF90cmFuc2Zvcm0KKyAgICAgICAgfHwgaW5oZXJpdGVkX2Zs
YWdzLl9kaXJlY3Rpb24gIT0gb3RoZXIuaW5oZXJpdGVkX2ZsYWdzLl9kaXJlY3Rpb24KKyAgICAg
ICAgfHwgaW5oZXJpdGVkX2ZsYWdzLl93aGl0ZV9zcGFjZSAhPSBvdGhlci5pbmhlcml0ZWRfZmxh
Z3MuX3doaXRlX3NwYWNlCisgICAgICAgIHx8IG5vbmluaGVyaXRlZF9mbGFncy5jbGVhcigpICE9
IG90aGVyLm5vbmluaGVyaXRlZF9mbGFncy5jbGVhcigpCisgICAgICAgIHx8IG5vbmluaGVyaXRl
ZF9mbGFncy51bmljb2RlQmlkaSgpICE9IG90aGVyLm5vbmluaGVyaXRlZF9mbGFncy51bmljb2Rl
QmlkaSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIENoZWNrIGJsb2NrIGZsb3cg
ZGlyZWN0aW9uLgotICAgIGlmIChpbmhlcml0ZWRfZmxhZ3MubV93cml0aW5nTW9kZSAhPSBvdGhl
ci0+aW5oZXJpdGVkX2ZsYWdzLm1fd3JpdGluZ01vZGUpCisgICAgaWYgKGluaGVyaXRlZF9mbGFn
cy5tX3dyaXRpbmdNb2RlICE9IG90aGVyLmluaGVyaXRlZF9mbGFncy5tX3dyaXRpbmdNb2RlKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIENoZWNrIHRleHQgY29tYmluZSBtb2RlLgot
ICAgIGlmIChyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV90ZXh0Q29tYmluZSAhPSBvdGhlci0+cmFy
ZU5vbkluaGVyaXRlZERhdGEtPm1fdGV4dENvbWJpbmUpCisgICAgaWYgKHJhcmVOb25Jbmhlcml0
ZWREYXRhLT5tX3RleHRDb21iaW5lICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3Rl
eHRDb21iaW5lKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIE92ZXJmbG93IHJldHVy
bnMgYSBsYXlvdXQgaGludC4KLSAgICBpZiAobm9uaW5oZXJpdGVkX2ZsYWdzLm92ZXJmbG93WCgp
ICE9IG90aGVyLT5ub25pbmhlcml0ZWRfZmxhZ3Mub3ZlcmZsb3dYKCkKLSAgICAgICAgfHwgbm9u
aW5oZXJpdGVkX2ZsYWdzLm92ZXJmbG93WSgpICE9IG90aGVyLT5ub25pbmhlcml0ZWRfZmxhZ3Mu
b3ZlcmZsb3dZKCkpCisgICAgaWYgKG5vbmluaGVyaXRlZF9mbGFncy5vdmVyZmxvd1goKSAhPSBv
dGhlci5ub25pbmhlcml0ZWRfZmxhZ3Mub3ZlcmZsb3dYKCkKKyAgICAgICAgfHwgbm9uaW5oZXJp
dGVkX2ZsYWdzLm92ZXJmbG93WSgpICE9IG90aGVyLm5vbmluaGVyaXRlZF9mbGFncy5vdmVyZmxv
d1koKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBJZiBvdXIgYm9yZGVyIHdpZHRo
cyBjaGFuZ2UsIHRoZW4gd2UgbmVlZCB0byBsYXlvdXQuICBPdGhlciBjaGFuZ2VzIHRvIGJvcmRl
cnMKICAgICAvLyBvbmx5IG5lY2Vzc2l0YXRlIGEgcmVwYWludC4KLSAgICBpZiAoYm9yZGVyTGVm
dFdpZHRoKCkgIT0gb3RoZXItPmJvcmRlckxlZnRXaWR0aCgpCi0gICAgICAgIHx8IGJvcmRlclRv
cFdpZHRoKCkgIT0gb3RoZXItPmJvcmRlclRvcFdpZHRoKCkKLSAgICAgICAgfHwgYm9yZGVyQm90
dG9tV2lkdGgoKSAhPSBvdGhlci0+Ym9yZGVyQm90dG9tV2lkdGgoKQotICAgICAgICB8fCBib3Jk
ZXJSaWdodFdpZHRoKCkgIT0gb3RoZXItPmJvcmRlclJpZ2h0V2lkdGgoKSkKKyAgICBpZiAoYm9y
ZGVyTGVmdFdpZHRoKCkgIT0gb3RoZXIuYm9yZGVyTGVmdFdpZHRoKCkKKyAgICAgICAgfHwgYm9y
ZGVyVG9wV2lkdGgoKSAhPSBvdGhlci5ib3JkZXJUb3BXaWR0aCgpCisgICAgICAgIHx8IGJvcmRl
ckJvdHRvbVdpZHRoKCkgIT0gb3RoZXIuYm9yZGVyQm90dG9tV2lkdGgoKQorICAgICAgICB8fCBi
b3JkZXJSaWdodFdpZHRoKCkgIT0gb3RoZXIuYm9yZGVyUmlnaHRXaWR0aCgpKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKIAogICAgIC8vIElmIHRoZSBjb3VudGVyIGRpcmVjdGl2ZXMgY2hhbmdlLCB0
cmlnZ2VyIGEgcmVsYXlvdXQgdG8gcmUtY2FsY3VsYXRlIGNvdW50ZXIgdmFsdWVzIGFuZCByZWJ1
aWxkIHRoZSBjb3VudGVyIG5vZGUgdHJlZS4KICAgICBjb25zdCBDb3VudGVyRGlyZWN0aXZlTWFw
KiBtYXBBID0gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fY291bnRlckRpcmVjdGl2ZXMuZ2V0KCk7
Ci0gICAgY29uc3QgQ291bnRlckRpcmVjdGl2ZU1hcCogbWFwQiA9IG90aGVyLT5yYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+bV9jb3VudGVyRGlyZWN0aXZlcy5nZXQoKTsKKyAgICBjb25zdCBDb3VudGVy
RGlyZWN0aXZlTWFwKiBtYXBCID0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPm1fY291bnRl
ckRpcmVjdGl2ZXMuZ2V0KCk7CiAgICAgaWYgKCEobWFwQSA9PSBtYXBCIHx8IChtYXBBICYmIG1h
cEIgJiYgKm1hcEEgPT0gKm1hcEIpKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAo
KHZpc2liaWxpdHkoKSA9PSBDT0xMQVBTRSkgIT0gKG90aGVyLT52aXNpYmlsaXR5KCkgPT0gQ09M
TEFQU0UpKQorICAgIGlmICgodmlzaWJpbGl0eSgpID09IENPTExBUFNFKSAhPSAob3RoZXIudmlz
aWJpbGl0eSgpID09IENPTExBUFNFKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAo
cmFyZU5vbkluaGVyaXRlZERhdGEtPmhhc09wYWNpdHkoKSAhPSBvdGhlci0+cmFyZU5vbkluaGVy
aXRlZERhdGEtPmhhc09wYWNpdHkoKSkgeworICAgIGlmIChyYXJlTm9uSW5oZXJpdGVkRGF0YS0+
aGFzT3BhY2l0eSgpICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5oYXNPcGFjaXR5KCkp
IHsKICAgICAgICAgLy8gRklYTUU6IFdlIHdvdWxkIGxpa2UgdG8gdXNlIFNpbXBsaWZpZWRMYXlv
dXQgaGVyZSwgYnV0IHdlIGNhbid0IHF1aXRlIGRvIHRoYXQgeWV0LgogICAgICAgICAvLyBXZSBu
ZWVkIHRvIG1ha2Ugc3VyZSBTaW1wbGlmaWVkTGF5b3V0IGNhbiBvcGVyYXRlIGNvcnJlY3RseSBv
biBSZW5kZXJJbmxpbmVzICh3ZSB3aWxsIG5lZWQKICAgICAgICAgLy8gdG8gYWRkIGEgc2VsZk5l
ZWRzU2ltcGxpZmllZExheW91dCBiaXQgaW4gb3JkZXIgdG8gbm90IGdldCBjb25mdXNlZCBhbmQg
dGFpbnQgZXZlcnkgbGluZSkuCkBAIC02MzUsMTYgKzYzNSwxNiBAQCBib29sIFJlbmRlclN0eWxl
OjpjaGFuZ2VSZXF1aXJlc0xheW91dChjb25zdCBSZW5kZXJTdHlsZSogb3RoZXIsIHVuc2lnbmVk
JiBjaGFuZwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBpZiAocmFyZU5vbklu
aGVyaXRlZERhdGEtPmhhc0ZpbHRlcnMoKSAhPSBvdGhlci0+cmFyZU5vbkluaGVyaXRlZERhdGEt
Pmhhc0ZpbHRlcnMoKSkKKyAgICBpZiAocmFyZU5vbkluaGVyaXRlZERhdGEtPmhhc0ZpbHRlcnMo
KSAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+aGFzRmlsdGVycygpKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKIAogICAgIGNvbnN0IFF1b3Rlc0RhdGEqIHF1b3Rlc0RhdGFBID0gcmFyZUlu
aGVyaXRlZERhdGEtPnF1b3Rlcy5nZXQoKTsKLSAgICBjb25zdCBRdW90ZXNEYXRhKiBxdW90ZXNE
YXRhQiA9IG90aGVyLT5yYXJlSW5oZXJpdGVkRGF0YS0+cXVvdGVzLmdldCgpOworICAgIGNvbnN0
IFF1b3Rlc0RhdGEqIHF1b3Rlc0RhdGFCID0gb3RoZXIucmFyZUluaGVyaXRlZERhdGEtPnF1b3Rl
cy5nZXQoKTsKICAgICBpZiAoIShxdW90ZXNEYXRhQSA9PSBxdW90ZXNEYXRhQiB8fCAocXVvdGVz
RGF0YUEgJiYgcXVvdGVzRGF0YUIgJiYgKnF1b3Rlc0RhdGFBID09ICpxdW90ZXNEYXRhQikpKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGlmIChwb3NpdGlvbigpICE9IFN0YXRpY1Bvc2l0
aW9uKSB7Ci0gICAgICAgIGlmIChzdXJyb3VuZC0+b2Zmc2V0ICE9IG90aGVyLT5zdXJyb3VuZC0+
b2Zmc2V0KSB7CisgICAgICAgIGlmIChzdXJyb3VuZC0+b2Zmc2V0ICE9IG90aGVyLnN1cnJvdW5k
LT5vZmZzZXQpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSB3b3VsZCBsaWtlIHRvIHVzZSBT
aW1wbGlmaWVkTGF5b3V0IGZvciByZWxhdGl2ZSBwb3NpdGlvbmluZywgYnV0IHdlIGNhbid0IHF1
aXRlIGRvIHRoYXQgeWV0LgogICAgICAgICAgICAgLy8gV2UgbmVlZCB0byBtYWtlIHN1cmUgU2lt
cGxpZmllZExheW91dCBjYW4gb3BlcmF0ZSBjb3JyZWN0bHkgb24gUmVuZGVySW5saW5lcyAod2Ug
d2lsbCBuZWVkCiAgICAgICAgICAgICAvLyB0byBhZGQgYSBzZWxmTmVlZHNTaW1wbGlmaWVkTGF5
b3V0IGJpdCBpbiBvcmRlciB0byBub3QgZ2V0IGNvbmZ1c2VkIGFuZCB0YWludCBldmVyeSBsaW5l
KS4KQEAgLTY1Miw3ICs2NTIsNyBAQCBib29sIFJlbmRlclN0eWxlOjpjaGFuZ2VSZXF1aXJlc0xh
eW91dChjb25zdCBSZW5kZXJTdHlsZSogb3RoZXIsIHVuc2lnbmVkJiBjaGFuZwogICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgICAgICAgICAvLyBPcHRpbWl6ZSBmb3IgdGhlIGNh
c2Ugd2hlcmUgYSBwb3NpdGlvbmVkIGxheWVyIGlzIG1vdmluZyBidXQgbm90IGNoYW5naW5nIHNp
emUuCi0gICAgICAgICAgICBpZiAoIXBvc2l0aW9uQ2hhbmdlSXNNb3ZlbWVudE9ubHkoc3Vycm91
bmQtPm9mZnNldCwgb3RoZXItPnN1cnJvdW5kLT5vZmZzZXQsIG1fYm94LT53aWR0aCgpKSkKKyAg
ICAgICAgICAgIGlmICghcG9zaXRpb25DaGFuZ2VJc01vdmVtZW50T25seShzdXJyb3VuZC0+b2Zm
c2V0LCBvdGhlci5zdXJyb3VuZC0+b2Zmc2V0LCBtX2JveC0+d2lkdGgoKSkpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICB9CkBAIC02NjAsMTIxICs2NjAsMTIx
IEBAIGJvb2wgUmVuZGVyU3R5bGU6OmNoYW5nZVJlcXVpcmVzTGF5b3V0KGNvbnN0IFJlbmRlclN0
eWxlKiBvdGhlciwgdW5zaWduZWQmIGNoYW5nCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29s
IFJlbmRlclN0eWxlOjpjaGFuZ2VSZXF1aXJlc1Bvc2l0aW9uZWRMYXlvdXRPbmx5KGNvbnN0IFJl
bmRlclN0eWxlKiBvdGhlciwgdW5zaWduZWQmKSBjb25zdAorYm9vbCBSZW5kZXJTdHlsZTo6Y2hh
bmdlUmVxdWlyZXNQb3NpdGlvbmVkTGF5b3V0T25seShjb25zdCBSZW5kZXJTdHlsZSYgb3RoZXIs
IHVuc2lnbmVkJikgY29uc3QKIHsKICAgICBpZiAocG9zaXRpb24oKSA9PSBTdGF0aWNQb3NpdGlv
bikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKHN1cnJvdW5kLT5vZmZzZXQgIT0g
b3RoZXItPnN1cnJvdW5kLT5vZmZzZXQpIHsKKyAgICBpZiAoc3Vycm91bmQtPm9mZnNldCAhPSBv
dGhlci5zdXJyb3VuZC0+b2Zmc2V0KSB7CiAgICAgICAgIC8vIE9wdGltaXplIGZvciB0aGUgY2Fz
ZSB3aGVyZSBhIHBvc2l0aW9uZWQgbGF5ZXIgaXMgbW92aW5nIGJ1dCBub3QgY2hhbmdpbmcgc2l6
ZS4KLSAgICAgICAgaWYgKHBvc2l0aW9uKCkgPT0gQWJzb2x1dGVQb3NpdGlvbiAmJiBwb3NpdGlv
bkNoYW5nZUlzTW92ZW1lbnRPbmx5KHN1cnJvdW5kLT5vZmZzZXQsIG90aGVyLT5zdXJyb3VuZC0+
b2Zmc2V0LCBtX2JveC0+d2lkdGgoKSkpCisgICAgICAgIGlmIChwb3NpdGlvbigpID09IEFic29s
dXRlUG9zaXRpb24gJiYgcG9zaXRpb25DaGFuZ2VJc01vdmVtZW50T25seShzdXJyb3VuZC0+b2Zm
c2V0LCBvdGhlci5zdXJyb3VuZC0+b2Zmc2V0LCBtX2JveC0+d2lkdGgoKSkpCiAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29s
IFJlbmRlclN0eWxlOjpjaGFuZ2VSZXF1aXJlc0xheWVyUmVwYWludChjb25zdCBSZW5kZXJTdHls
ZSogb3RoZXIsIHVuc2lnbmVkJiBjaGFuZ2VkQ29udGV4dFNlbnNpdGl2ZVByb3BlcnRpZXMpIGNv
bnN0Citib29sIFJlbmRlclN0eWxlOjpjaGFuZ2VSZXF1aXJlc0xheWVyUmVwYWludChjb25zdCBS
ZW5kZXJTdHlsZSYgb3RoZXIsIHVuc2lnbmVkJiBjaGFuZ2VkQ29udGV4dFNlbnNpdGl2ZVByb3Bl
cnRpZXMpIGNvbnN0CiB7CiAgICAgLy8gU3R5bGVSZXNvbHZlciBoYXMgZW5zdXJlZCB0aGF0IHpJ
bmRleCBpcyBub24tYXV0byBvbmx5IGlmIGl0J3MgYXBwbGljYWJsZS4KLSAgICBpZiAobV9ib3gt
PnpJbmRleCgpICE9IG90aGVyLT5tX2JveC0+ekluZGV4KCkgfHwgbV9ib3gtPmhhc0F1dG9aSW5k
ZXgoKSAhPSBvdGhlci0+bV9ib3gtPmhhc0F1dG9aSW5kZXgoKSkKKyAgICBpZiAobV9ib3gtPnpJ
bmRleCgpICE9IG90aGVyLm1fYm94LT56SW5kZXgoKSB8fCBtX2JveC0+aGFzQXV0b1pJbmRleCgp
ICE9IG90aGVyLm1fYm94LT5oYXNBdXRvWkluZGV4KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwog
CiAgICAgaWYgKHBvc2l0aW9uKCkgIT0gU3RhdGljUG9zaXRpb24pIHsKLSAgICAgICAgaWYgKHZp
c3VhbC0+Y2xpcCAhPSBvdGhlci0+dmlzdWFsLT5jbGlwIHx8IHZpc3VhbC0+aGFzQ2xpcCAhPSBv
dGhlci0+dmlzdWFsLT5oYXNDbGlwKSB7CisgICAgICAgIGlmICh2aXN1YWwtPmNsaXAgIT0gb3Ro
ZXIudmlzdWFsLT5jbGlwIHx8IHZpc3VhbC0+aGFzQ2xpcCAhPSBvdGhlci52aXN1YWwtPmhhc0Ns
aXApIHsKICAgICAgICAgICAgIGNoYW5nZWRDb250ZXh0U2Vuc2l0aXZlUHJvcGVydGllcyB8PSBD
b250ZXh0U2Vuc2l0aXZlUHJvcGVydHlDbGlwUmVjdDsKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICB9CiAgICAgfQogCiAjaWYgRU5BQkxFKENTU19DT01QT1NJVElORykKLSAgICBp
ZiAocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZWZmZWN0aXZlQmxlbmRNb2RlICE9IG90aGVyLT5y
YXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9lZmZlY3RpdmVCbGVuZE1vZGUpCisgICAgaWYgKHJhcmVO
b25Jbmhlcml0ZWREYXRhLT5tX2VmZmVjdGl2ZUJsZW5kTW9kZSAhPSBvdGhlci5yYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+bV9lZmZlY3RpdmVCbGVuZE1vZGUpCiAgICAgICAgIHJldHVybiB0cnVlOwog
I2VuZGlmCiAKLSAgICBpZiAocmFyZU5vbkluaGVyaXRlZERhdGEtPm9wYWNpdHkgIT0gb3RoZXIt
PnJhcmVOb25Jbmhlcml0ZWREYXRhLT5vcGFjaXR5KSB7CisgICAgaWYgKHJhcmVOb25Jbmhlcml0
ZWREYXRhLT5vcGFjaXR5ICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5vcGFjaXR5KSB7
CiAgICAgICAgIGNoYW5nZWRDb250ZXh0U2Vuc2l0aXZlUHJvcGVydGllcyB8PSBDb250ZXh0U2Vu
c2l0aXZlUHJvcGVydHlPcGFjaXR5OwogICAgICAgICAvLyBEb24ndCByZXR1cm47IGtlZXAgbG9v
a2luZyBmb3IgYW5vdGhlciBjaGFuZ2UuCiAgICAgfQogCi0gICAgaWYgKHJhcmVOb25Jbmhlcml0
ZWREYXRhLT5tX2ZpbHRlci5nZXQoKSAhPSBvdGhlci0+cmFyZU5vbkluaGVyaXRlZERhdGEtPm1f
ZmlsdGVyLmdldCgpCi0gICAgICAgICYmICpyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9maWx0ZXIu
Z2V0KCkgIT0gKm90aGVyLT5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9maWx0ZXIuZ2V0KCkpIHsK
KyAgICBpZiAocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZmlsdGVyLmdldCgpICE9IG90aGVyLnJh
cmVOb25Jbmhlcml0ZWREYXRhLT5tX2ZpbHRlci5nZXQoKQorICAgICAgICAmJiAqcmFyZU5vbklu
aGVyaXRlZERhdGEtPm1fZmlsdGVyLmdldCgpICE9ICpvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0
YS0+bV9maWx0ZXIuZ2V0KCkpIHsKICAgICAgICAgY2hhbmdlZENvbnRleHRTZW5zaXRpdmVQcm9w
ZXJ0aWVzIHw9IENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0eUZpbHRlcjsKICAgICAgICAgLy8gRG9u
J3QgcmV0dXJuOyBrZWVwIGxvb2tpbmcgZm9yIGFub3RoZXIgY2hhbmdlLgogICAgIH0KIAotICAg
IGlmIChyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9tYXNrICE9IG90aGVyLT5yYXJlTm9uSW5oZXJp
dGVkRGF0YS0+bV9tYXNrCi0gICAgICAgIHx8IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX21hc2tC
b3hJbWFnZSAhPSBvdGhlci0+cmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbWFza0JveEltYWdlKQor
ICAgIGlmIChyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9tYXNrICE9IG90aGVyLnJhcmVOb25Jbmhl
cml0ZWREYXRhLT5tX21hc2sKKyAgICAgICAgfHwgcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbWFz
a0JveEltYWdlICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX21hc2tCb3hJbWFnZSkK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgUmVu
ZGVyU3R5bGU6OmNoYW5nZVJlcXVpcmVzUmVwYWludChjb25zdCBSZW5kZXJTdHlsZSogb3RoZXIs
IHVuc2lnbmVkJikgY29uc3QKLXsKLSAgICBpZiAoaW5oZXJpdGVkX2ZsYWdzLl92aXNpYmlsaXR5
ICE9IG90aGVyLT5pbmhlcml0ZWRfZmxhZ3MuX3Zpc2liaWxpdHkKLSAgICAgICAgfHwgaW5oZXJp
dGVkX2ZsYWdzLm1fcHJpbnRDb2xvckFkanVzdCAhPSBvdGhlci0+aW5oZXJpdGVkX2ZsYWdzLm1f
cHJpbnRDb2xvckFkanVzdAotICAgICAgICB8fCBpbmhlcml0ZWRfZmxhZ3MuX2luc2lkZUxpbmsg
IT0gb3RoZXItPmluaGVyaXRlZF9mbGFncy5faW5zaWRlTGluawotICAgICAgICB8fCBpbmhlcml0
ZWRfZmxhZ3MuX2luc2lkZURlZmF1bHRCdXR0b24gIT0gb3RoZXItPmluaGVyaXRlZF9mbGFncy5f
aW5zaWRlRGVmYXVsdEJ1dHRvbgotICAgICAgICB8fCBzdXJyb3VuZC0+Ym9yZGVyICE9IG90aGVy
LT5zdXJyb3VuZC0+Ym9yZGVyCi0gICAgICAgIHx8ICFtX2JhY2tncm91bmQtPmlzRXF1aXZhbGVu
dEZvclBhaW50aW5nKCpvdGhlci0+bV9iYWNrZ3JvdW5kKQotICAgICAgICB8fCByYXJlSW5oZXJp
dGVkRGF0YS0+dXNlck1vZGlmeSAhPSBvdGhlci0+cmFyZUluaGVyaXRlZERhdGEtPnVzZXJNb2Rp
ZnkKLSAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPnVzZXJTZWxlY3QgIT0gb3RoZXItPnJh
cmVJbmhlcml0ZWREYXRhLT51c2VyU2VsZWN0Ci0gICAgICAgIHx8IHJhcmVOb25Jbmhlcml0ZWRE
YXRhLT51c2VyRHJhZyAhPSBvdGhlci0+cmFyZU5vbkluaGVyaXRlZERhdGEtPnVzZXJEcmFnCi0g
ICAgICAgIHx8IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2JvcmRlckZpdCAhPSBvdGhlci0+cmFy
ZU5vbkluaGVyaXRlZERhdGEtPm1fYm9yZGVyRml0Ci0gICAgICAgIHx8IHJhcmVOb25Jbmhlcml0
ZWREYXRhLT5tX29iamVjdEZpdCAhPSBvdGhlci0+cmFyZU5vbkluaGVyaXRlZERhdGEtPm1fb2Jq
ZWN0Rml0Ci0gICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT5tX2ltYWdlUmVuZGVyaW5nICE9
IG90aGVyLT5yYXJlSW5oZXJpdGVkRGF0YS0+bV9pbWFnZVJlbmRlcmluZykKK2Jvb2wgUmVuZGVy
U3R5bGU6OmNoYW5nZVJlcXVpcmVzUmVwYWludChjb25zdCBSZW5kZXJTdHlsZSYgb3RoZXIsIHVu
c2lnbmVkJikgY29uc3QKK3sKKyAgICBpZiAoaW5oZXJpdGVkX2ZsYWdzLl92aXNpYmlsaXR5ICE9
IG90aGVyLmluaGVyaXRlZF9mbGFncy5fdmlzaWJpbGl0eQorICAgICAgICB8fCBpbmhlcml0ZWRf
ZmxhZ3MubV9wcmludENvbG9yQWRqdXN0ICE9IG90aGVyLmluaGVyaXRlZF9mbGFncy5tX3ByaW50
Q29sb3JBZGp1c3QKKyAgICAgICAgfHwgaW5oZXJpdGVkX2ZsYWdzLl9pbnNpZGVMaW5rICE9IG90
aGVyLmluaGVyaXRlZF9mbGFncy5faW5zaWRlTGluaworICAgICAgICB8fCBpbmhlcml0ZWRfZmxh
Z3MuX2luc2lkZURlZmF1bHRCdXR0b24gIT0gb3RoZXIuaW5oZXJpdGVkX2ZsYWdzLl9pbnNpZGVE
ZWZhdWx0QnV0dG9uCisgICAgICAgIHx8IHN1cnJvdW5kLT5ib3JkZXIgIT0gb3RoZXIuc3Vycm91
bmQtPmJvcmRlcgorICAgICAgICB8fCAhbV9iYWNrZ3JvdW5kLT5pc0VxdWl2YWxlbnRGb3JQYWlu
dGluZygqb3RoZXIubV9iYWNrZ3JvdW5kKQorICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+
dXNlck1vZGlmeSAhPSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+dXNlck1vZGlmeQorICAgICAg
ICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+dXNlclNlbGVjdCAhPSBvdGhlci5yYXJlSW5oZXJpdGVk
RGF0YS0+dXNlclNlbGVjdAorICAgICAgICB8fCByYXJlTm9uSW5oZXJpdGVkRGF0YS0+dXNlckRy
YWcgIT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPnVzZXJEcmFnCisgICAgICAgIHx8IHJh
cmVOb25Jbmhlcml0ZWREYXRhLT5tX2JvcmRlckZpdCAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVk
RGF0YS0+bV9ib3JkZXJGaXQKKyAgICAgICAgfHwgcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fb2Jq
ZWN0Rml0ICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX29iamVjdEZpdAorICAgICAg
ICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+bV9pbWFnZVJlbmRlcmluZyAhPSBvdGhlci5yYXJlSW5o
ZXJpdGVkRGF0YS0+bV9pbWFnZVJlbmRlcmluZykKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICNp
ZiBFTkFCTEUoQ1NTX1NIQVBFUykKLSAgICBpZiAocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fc2hh
cGVPdXRzaWRlICE9IG90aGVyLT5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9zaGFwZU91dHNpZGUp
CisgICAgaWYgKHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3NoYXBlT3V0c2lkZSAhPSBvdGhlci5y
YXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9zaGFwZU91dHNpZGUpCiAgICAgICAgIHJldHVybiB0cnVl
OwogI2VuZGlmCiAKLSAgICBpZiAocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fY2xpcFBhdGggIT0g
b3RoZXItPnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2NsaXBQYXRoKQorICAgIGlmIChyYXJlTm9u
SW5oZXJpdGVkRGF0YS0+bV9jbGlwUGF0aCAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+
bV9jbGlwUGF0aCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKLWJvb2wgUmVuZGVyU3R5bGU6OmNoYW5nZVJlcXVpcmVzUmVwYWludElmVGV4dE9yQm9yZGVy
T3JPdXRsaW5lKGNvbnN0IFJlbmRlclN0eWxlKiBvdGhlciwgdW5zaWduZWQmKSBjb25zdAorYm9v
bCBSZW5kZXJTdHlsZTo6Y2hhbmdlUmVxdWlyZXNSZXBhaW50SWZUZXh0T3JCb3JkZXJPck91dGxp
bmUoY29uc3QgUmVuZGVyU3R5bGUmIG90aGVyLCB1bnNpZ25lZCYpIGNvbnN0CiB7Ci0gICAgaWYg
KGluaGVyaXRlZC0+Y29sb3IgIT0gb3RoZXItPmluaGVyaXRlZC0+Y29sb3IKLSAgICAgICAgfHwg
aW5oZXJpdGVkX2ZsYWdzLl90ZXh0X2RlY29yYXRpb25zICE9IG90aGVyLT5pbmhlcml0ZWRfZmxh
Z3MuX3RleHRfZGVjb3JhdGlvbnMKLSAgICAgICAgfHwgdmlzdWFsLT50ZXh0RGVjb3JhdGlvbiAh
PSBvdGhlci0+dmlzdWFsLT50ZXh0RGVjb3JhdGlvbgotICAgICAgICB8fCByYXJlTm9uSW5oZXJp
dGVkRGF0YS0+bV90ZXh0RGVjb3JhdGlvblN0eWxlICE9IG90aGVyLT5yYXJlTm9uSW5oZXJpdGVk
RGF0YS0+bV90ZXh0RGVjb3JhdGlvblN0eWxlCi0gICAgICAgIHx8IHJhcmVOb25Jbmhlcml0ZWRE
YXRhLT5tX3RleHREZWNvcmF0aW9uQ29sb3IgIT0gb3RoZXItPnJhcmVOb25Jbmhlcml0ZWREYXRh
LT5tX3RleHREZWNvcmF0aW9uQ29sb3IKLSAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPm1f
dGV4dERlY29yYXRpb25Ta2lwICE9IG90aGVyLT5yYXJlSW5oZXJpdGVkRGF0YS0+bV90ZXh0RGVj
b3JhdGlvblNraXAKLSAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPnRleHRGaWxsQ29sb3Ig
IT0gb3RoZXItPnJhcmVJbmhlcml0ZWREYXRhLT50ZXh0RmlsbENvbG9yCi0gICAgICAgIHx8IHJh
cmVJbmhlcml0ZWREYXRhLT50ZXh0U3Ryb2tlQ29sb3IgIT0gb3RoZXItPnJhcmVJbmhlcml0ZWRE
YXRhLT50ZXh0U3Ryb2tlQ29sb3IKLSAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPnRleHRF
bXBoYXNpc0NvbG9yICE9IG90aGVyLT5yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEVtcGhhc2lzQ29s
b3IKLSAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPnRleHRFbXBoYXNpc0ZpbGwgIT0gb3Ro
ZXItPnJhcmVJbmhlcml0ZWREYXRhLT50ZXh0RW1waGFzaXNGaWxsKQorICAgIGlmIChpbmhlcml0
ZWQtPmNvbG9yICE9IG90aGVyLmluaGVyaXRlZC0+Y29sb3IKKyAgICAgICAgfHwgaW5oZXJpdGVk
X2ZsYWdzLl90ZXh0X2RlY29yYXRpb25zICE9IG90aGVyLmluaGVyaXRlZF9mbGFncy5fdGV4dF9k
ZWNvcmF0aW9ucworICAgICAgICB8fCB2aXN1YWwtPnRleHREZWNvcmF0aW9uICE9IG90aGVyLnZp
c3VhbC0+dGV4dERlY29yYXRpb24KKyAgICAgICAgfHwgcmFyZU5vbkluaGVyaXRlZERhdGEtPm1f
dGV4dERlY29yYXRpb25TdHlsZSAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV90ZXh0
RGVjb3JhdGlvblN0eWxlCisgICAgICAgIHx8IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3RleHRE
ZWNvcmF0aW9uQ29sb3IgIT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPm1fdGV4dERlY29y
YXRpb25Db2xvcgorICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+bV90ZXh0RGVjb3JhdGlv
blNraXAgIT0gb3RoZXIucmFyZUluaGVyaXRlZERhdGEtPm1fdGV4dERlY29yYXRpb25Ta2lwCisg
ICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT50ZXh0RmlsbENvbG9yICE9IG90aGVyLnJhcmVJ
bmhlcml0ZWREYXRhLT50ZXh0RmlsbENvbG9yCisgICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRh
LT50ZXh0U3Ryb2tlQ29sb3IgIT0gb3RoZXIucmFyZUluaGVyaXRlZERhdGEtPnRleHRTdHJva2VD
b2xvcgorICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEVtcGhhc2lzQ29sb3IgIT0g
b3RoZXIucmFyZUluaGVyaXRlZERhdGEtPnRleHRFbXBoYXNpc0NvbG9yCisgICAgICAgIHx8IHJh
cmVJbmhlcml0ZWREYXRhLT50ZXh0RW1waGFzaXNGaWxsICE9IG90aGVyLnJhcmVJbmhlcml0ZWRE
YXRhLT50ZXh0RW1waGFzaXNGaWxsKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIHJldHVy
biBmYWxzZTsKIH0KIAotYm9vbCBSZW5kZXJTdHlsZTo6Y2hhbmdlUmVxdWlyZXNSZWNvbXBvc2l0
ZUxheWVyKGNvbnN0IFJlbmRlclN0eWxlKiBvdGhlciwgdW5zaWduZWQmKSBjb25zdAorYm9vbCBS
ZW5kZXJTdHlsZTo6Y2hhbmdlUmVxdWlyZXNSZWNvbXBvc2l0ZUxheWVyKGNvbnN0IFJlbmRlclN0
eWxlJiBvdGhlciwgdW5zaWduZWQmKSBjb25zdAogewotICAgIGlmIChyYXJlTm9uSW5oZXJpdGVk
RGF0YS5nZXQoKSAhPSBvdGhlci0+cmFyZU5vbkluaGVyaXRlZERhdGEuZ2V0KCkpIHsKLSAgICAg
ICAgaWYgKHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3RyYW5zZm9ybVN0eWxlM0QgIT0gb3RoZXIt
PnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3RyYW5zZm9ybVN0eWxlM0QKLSAgICAgICAgICAgIHx8
IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2JhY2tmYWNlVmlzaWJpbGl0eSAhPSBvdGhlci0+cmFy
ZU5vbkluaGVyaXRlZERhdGEtPm1fYmFja2ZhY2VWaXNpYmlsaXR5Ci0gICAgICAgICAgICB8fCBy
YXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9wZXJzcGVjdGl2ZSAhPSBvdGhlci0+cmFyZU5vbkluaGVy
aXRlZERhdGEtPm1fcGVyc3BlY3RpdmUKLSAgICAgICAgICAgIHx8IHJhcmVOb25Jbmhlcml0ZWRE
YXRhLT5tX3BlcnNwZWN0aXZlT3JpZ2luWCAhPSBvdGhlci0+cmFyZU5vbkluaGVyaXRlZERhdGEt
Pm1fcGVyc3BlY3RpdmVPcmlnaW5YCi0gICAgICAgICAgICB8fCByYXJlTm9uSW5oZXJpdGVkRGF0
YS0+bV9wZXJzcGVjdGl2ZU9yaWdpblkgIT0gb3RoZXItPnJhcmVOb25Jbmhlcml0ZWREYXRhLT5t
X3BlcnNwZWN0aXZlT3JpZ2luWSkKKyAgICBpZiAocmFyZU5vbkluaGVyaXRlZERhdGEuZ2V0KCkg
IT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEuZ2V0KCkpIHsKKyAgICAgICAgaWYgKHJhcmVO
b25Jbmhlcml0ZWREYXRhLT5tX3RyYW5zZm9ybVN0eWxlM0QgIT0gb3RoZXIucmFyZU5vbkluaGVy
aXRlZERhdGEtPm1fdHJhbnNmb3JtU3R5bGUzRAorICAgICAgICAgICAgfHwgcmFyZU5vbkluaGVy
aXRlZERhdGEtPm1fYmFja2ZhY2VWaXNpYmlsaXR5ICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWRE
YXRhLT5tX2JhY2tmYWNlVmlzaWJpbGl0eQorICAgICAgICAgICAgfHwgcmFyZU5vbkluaGVyaXRl
ZERhdGEtPm1fcGVyc3BlY3RpdmUgIT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPm1fcGVy
c3BlY3RpdmUKKyAgICAgICAgICAgIHx8IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3BlcnNwZWN0
aXZlT3JpZ2luWCAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9wZXJzcGVjdGl2ZU9y
aWdpblgKKyAgICAgICAgICAgIHx8IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3BlcnNwZWN0aXZl
T3JpZ2luWSAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9wZXJzcGVjdGl2ZU9yaWdp
blkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLVN0eWxlRGlmZmVyZW5jZSBSZW5kZXJTdHlsZTo6ZGlmZihjb25zdCBSZW5kZXJTdHls
ZSogb3RoZXIsIHVuc2lnbmVkJiBjaGFuZ2VkQ29udGV4dFNlbnNpdGl2ZVByb3BlcnRpZXMpIGNv
bnN0CitTdHlsZURpZmZlcmVuY2UgUmVuZGVyU3R5bGU6OmRpZmYoY29uc3QgUmVuZGVyU3R5bGUm
IG90aGVyLCB1bnNpZ25lZCYgY2hhbmdlZENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzKSBjb25z
dAogewogICAgIGNoYW5nZWRDb250ZXh0U2Vuc2l0aXZlUHJvcGVydGllcyA9IENvbnRleHRTZW5z
aXRpdmVQcm9wZXJ0eU5vbmU7CiAKICAgICBTdHlsZURpZmZlcmVuY2Ugc3ZnQ2hhbmdlID0gU3R5
bGVEaWZmZXJlbmNlRXF1YWw7Ci0gICAgaWYgKG1fc3ZnU3R5bGUgIT0gb3RoZXItPm1fc3ZnU3R5
bGUpIHsKLSAgICAgICAgc3ZnQ2hhbmdlID0gbV9zdmdTdHlsZS0+ZGlmZihvdGhlci0+bV9zdmdT
dHlsZS5nZXQoKSk7CisgICAgaWYgKG1fc3ZnU3R5bGUgIT0gb3RoZXIubV9zdmdTdHlsZSkgewor
ICAgICAgICBzdmdDaGFuZ2UgPSBtX3N2Z1N0eWxlLT5kaWZmKG90aGVyLm1fc3ZnU3R5bGUuZ2V0
KCkpOwogICAgICAgICBpZiAoc3ZnQ2hhbmdlID09IFN0eWxlRGlmZmVyZW5jZUxheW91dCkKICAg
ICAgICAgICAgIHJldHVybiBzdmdDaGFuZ2U7CiAgICAgfQpAQCAtODE2LDEwICs4MTYsMTAgQEAg
Ym9vbCBSZW5kZXJTdHlsZTo6ZGlmZlJlcXVpcmVzTGF5ZXJSZXBhaW50KGNvbnN0IFJlbmRlclN0
eWxlJiBzdHlsZSwgYm9vbCBpc0NvbXAKIHsKICAgICB1bnNpZ25lZCBjaGFuZ2VkQ29udGV4dFNl
bnNpdGl2ZVByb3BlcnRpZXMgPSAwOwogCi0gICAgaWYgKGNoYW5nZVJlcXVpcmVzUmVwYWludCgm
c3R5bGUsIGNoYW5nZWRDb250ZXh0U2Vuc2l0aXZlUHJvcGVydGllcykpCisgICAgaWYgKGNoYW5n
ZVJlcXVpcmVzUmVwYWludChzdHlsZSwgY2hhbmdlZENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVz
KSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAoaXNDb21wb3NpdGVkICYmIGNoYW5n
ZVJlcXVpcmVzTGF5ZXJSZXBhaW50KCZzdHlsZSwgY2hhbmdlZENvbnRleHRTZW5zaXRpdmVQcm9w
ZXJ0aWVzKSkKKyAgICBpZiAoaXNDb21wb3NpdGVkICYmIGNoYW5nZVJlcXVpcmVzTGF5ZXJSZXBh
aW50KHN0eWxlLCBjaGFuZ2VkQ29udGV4dFNlbnNpdGl2ZVByb3BlcnRpZXMpKQogICAgICAgICBy
ZXR1cm4gY2hhbmdlZENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzICYgQ29udGV4dFNlbnNpdGl2
ZVByb3BlcnR5Q2xpcFJlY3Q7CiAKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCmluZGV4IDk4NjM5NTA3ZjU1NTIwZTUwYjNk
MmYwNzllM2MyNGM0YTVhNjg0OTkuLjYyNmNjMWVkY2IxNmRlMzhmNzE5NTcxMjk1MmQzYzhmYzE0
MGU3MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJT
dHlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5o
CkBAIC0xNzM0LDcgKzE3MzQsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBlcXVhbEZvclRleHRBdXRv
c2l6aW5nKGNvbnN0IFJlbmRlclN0eWxlICpvdGhlcikgY29uc3Q7CiAjZW5kaWYKIAotICAgIFN0
eWxlRGlmZmVyZW5jZSBkaWZmKGNvbnN0IFJlbmRlclN0eWxlKiwgdW5zaWduZWQmIGNoYW5nZWRD
b250ZXh0U2Vuc2l0aXZlUHJvcGVydGllcykgY29uc3Q7CisgICAgU3R5bGVEaWZmZXJlbmNlIGRp
ZmYoY29uc3QgUmVuZGVyU3R5bGUmLCB1bnNpZ25lZCYgY2hhbmdlZENvbnRleHRTZW5zaXRpdmVQ
cm9wZXJ0aWVzKSBjb25zdDsKICAgICBib29sIGRpZmZSZXF1aXJlc0xheWVyUmVwYWludChjb25z
dCBSZW5kZXJTdHlsZSYsIGJvb2wgaXNDb21wb3NpdGVkKSBjb25zdDsKIAogICAgIGJvb2wgaXNE
aXNwbGF5UmVwbGFjZWRUeXBlKCkgY29uc3QgeyByZXR1cm4gaXNEaXNwbGF5UmVwbGFjZWRUeXBl
KGRpc3BsYXkoKSk7IH0KQEAgLTIwMDQsMTIgKzIwMDQsMTIgQEAgcHVibGljOgogCiBwcml2YXRl
OgogICAgIGJvb2wgY2hhbmdlQWZmZWN0c1Zpc3VhbE92ZXJmbG93KGNvbnN0IFJlbmRlclN0eWxl
JikgY29uc3Q7Ci0gICAgYm9vbCBjaGFuZ2VSZXF1aXJlc0xheW91dChjb25zdCBSZW5kZXJTdHls
ZSosIHVuc2lnbmVkJiBjaGFuZ2VkQ29udGV4dFNlbnNpdGl2ZVByb3BlcnRpZXMpIGNvbnN0Owot
ICAgIGJvb2wgY2hhbmdlUmVxdWlyZXNQb3NpdGlvbmVkTGF5b3V0T25seShjb25zdCBSZW5kZXJT
dHlsZSosIHVuc2lnbmVkJiBjaGFuZ2VkQ29udGV4dFNlbnNpdGl2ZVByb3BlcnRpZXMpIGNvbnN0
OwotICAgIGJvb2wgY2hhbmdlUmVxdWlyZXNMYXllclJlcGFpbnQoY29uc3QgUmVuZGVyU3R5bGUq
LCB1bnNpZ25lZCYgY2hhbmdlZENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzKSBjb25zdDsKLSAg
ICBib29sIGNoYW5nZVJlcXVpcmVzUmVwYWludChjb25zdCBSZW5kZXJTdHlsZSosIHVuc2lnbmVk
JiBjaGFuZ2VkQ29udGV4dFNlbnNpdGl2ZVByb3BlcnRpZXMpIGNvbnN0OwotICAgIGJvb2wgY2hh
bmdlUmVxdWlyZXNSZXBhaW50SWZUZXh0T3JCb3JkZXJPck91dGxpbmUoY29uc3QgUmVuZGVyU3R5
bGUqLCB1bnNpZ25lZCYgY2hhbmdlZENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzKSBjb25zdDsK
LSAgICBib29sIGNoYW5nZVJlcXVpcmVzUmVjb21wb3NpdGVMYXllcihjb25zdCBSZW5kZXJTdHls
ZSosIHVuc2lnbmVkJiBjaGFuZ2VkQ29udGV4dFNlbnNpdGl2ZVByb3BlcnRpZXMpIGNvbnN0Owor
ICAgIGJvb2wgY2hhbmdlUmVxdWlyZXNMYXlvdXQoY29uc3QgUmVuZGVyU3R5bGUmLCB1bnNpZ25l
ZCYgY2hhbmdlZENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzKSBjb25zdDsKKyAgICBib29sIGNo
YW5nZVJlcXVpcmVzUG9zaXRpb25lZExheW91dE9ubHkoY29uc3QgUmVuZGVyU3R5bGUmLCB1bnNp
Z25lZCYgY2hhbmdlZENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzKSBjb25zdDsKKyAgICBib29s
IGNoYW5nZVJlcXVpcmVzTGF5ZXJSZXBhaW50KGNvbnN0IFJlbmRlclN0eWxlJiwgdW5zaWduZWQm
IGNoYW5nZWRDb250ZXh0U2Vuc2l0aXZlUHJvcGVydGllcykgY29uc3Q7CisgICAgYm9vbCBjaGFu
Z2VSZXF1aXJlc1JlcGFpbnQoY29uc3QgUmVuZGVyU3R5bGUmLCB1bnNpZ25lZCYgY2hhbmdlZENv
bnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzKSBjb25zdDsKKyAgICBib29sIGNoYW5nZVJlcXVpcmVz
UmVwYWludElmVGV4dE9yQm9yZGVyT3JPdXRsaW5lKGNvbnN0IFJlbmRlclN0eWxlJiwgdW5zaWdu
ZWQmIGNoYW5nZWRDb250ZXh0U2Vuc2l0aXZlUHJvcGVydGllcykgY29uc3Q7CisgICAgYm9vbCBj
aGFuZ2VSZXF1aXJlc1JlY29tcG9zaXRlTGF5ZXIoY29uc3QgUmVuZGVyU3R5bGUmLCB1bnNpZ25l
ZCYgY2hhbmdlZENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzKSBjb25zdDsKIAogICAgIHZvaWQg
c2V0VmlzaXRlZExpbmtDb2xvcihjb25zdCBDb2xvciYpOwogICAgIHZvaWQgc2V0VmlzaXRlZExp
bmtCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImIHYpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJp
dGVkRGF0YSwgbV92aXNpdGVkTGlua0JhY2tncm91bmRDb2xvciwgdik7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmNwcApp
bmRleCBiNDY5MTQ3MzJmYWU4YTc4Njc2MjliMmQzYWNiODY1NmI0NmVhNGU0Li4yMGMxMTAyN2Q3
MDE4YzFlZDJlNWE2OGJkMTkwYmQwOTJiMGUyOWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHZW5lcmF0ZWRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2UuY3BwCkBAIC0zOSw3ICsz
OSw3IEBAIFN0eWxlR2VuZXJhdGVkSW1hZ2U6OlN0eWxlR2VuZXJhdGVkSW1hZ2UoUGFzc1JlZjxD
U1NJbWFnZUdlbmVyYXRvclZhbHVlPiB2YWx1ZSkKIAogUGFzc1JlZlB0cjxDU1NWYWx1ZT4gU3R5
bGVHZW5lcmF0ZWRJbWFnZTo6Y3NzVmFsdWUoKSBjb25zdAogewotICAgIHJldHVybiAmY29uc3Rf
Y2FzdDxDU1NJbWFnZUdlbmVyYXRvclZhbHVlJj4obV9pbWFnZUdlbmVyYXRvclZhbHVlLmdldCgp
KTsKKyAgICByZXR1cm4gY29uc3RfY2FzdDxDU1NJbWFnZUdlbmVyYXRvclZhbHVlKj4obV9pbWFn
ZUdlbmVyYXRvclZhbHVlLmFzUHRyKCkpOwogfQogCiBGbG9hdFNpemUgU3R5bGVHZW5lcmF0ZWRJ
bWFnZTo6aW1hZ2VTaXplKGNvbnN0IFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBmbG9hdCBtdWx0
aXBsaWVyKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1N0eWxlR2VuZXJhdGVkSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
dHlsZUdlbmVyYXRlZEltYWdlLmgKaW5kZXggN2NkMDhiZTRmZTFlYWFkNTIwZDUzZjFmMDc2NjBl
NDEyMjQ1NDMzYS4uZDA0MjNhNjdiZWZhYzgzZmFmYTQ3MzNiY2MwMDUwMzZiNjRjYTRmYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVkSW1h
Z2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHZW5lcmF0ZWRJ
bWFnZS5oCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICBDU1NJbWFnZUdlbmVyYXRvclZh
bHVlJiBpbWFnZVZhbHVlKCkgeyByZXR1cm4gbV9pbWFnZUdlbmVyYXRvclZhbHVlOyB9CiAKIHBy
aXZhdGU6Ci0gICAgdmlydHVhbCBXcmFwcGVkSW1hZ2VQdHIgZGF0YSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuICZtX2ltYWdlR2VuZXJhdG9yVmFsdWUuZ2V0KCk7IH0KKyAgICB2aXJ0dWFsIFdy
YXBwZWRJbWFnZVB0ciBkYXRhKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pbWFnZUdlbmVy
YXRvclZhbHVlLmFzUHRyKCk7IH0KIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4g
Y3NzVmFsdWUoKSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3R5bGUvU3R5bGVSZXNvbHZlRm9yRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUv
U3R5bGVSZXNvbHZlRm9yRG9jdW1lbnQuY3BwCmluZGV4IDYxNTViMzZhOWQ1MzY3NzA2NmE3ZGMw
NTk2MzhkZGY0MDk3MGZmNDguLmY1Y2FmMjU2NWRlOTFmMDE4Yjg0YWIyMGM5MWY2MjY4ZjE0MmM4
ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZUZvckRvY3Vt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVGb3JEb2N1bWVu
dC5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgUGFzc1JlZjxSZW5kZXJTdHlsZT4gcmVzb2x2ZUZvckRv
Y3VtZW50KGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkKICAgICAgICAgZG9jdW1lbnRTdHlsZS5n
ZXQoKS5zZXRDb2x1bW5TdHlsZXNGcm9tUGFnaW5hdGlvbk1vZGUocGFnaW5hdGlvbi5tb2RlKTsK
ICAgICAgICAgZG9jdW1lbnRTdHlsZS5nZXQoKS5zZXRDb2x1bW5HYXAocGFnaW5hdGlvbi5nYXAp
OwogICAgICAgICBpZiAocmVuZGVyVmlldy5tdWx0aUNvbHVtbkZsb3dUaHJlYWQoKSkKLSAgICAg
ICAgICAgIHJlbmRlclZpZXcudXBkYXRlQ29sdW1uUHJvZ3Jlc3Npb25Gcm9tU3R5bGUoJmRvY3Vt
ZW50U3R5bGUuZ2V0KCkpOworICAgICAgICAgICAgcmVuZGVyVmlldy51cGRhdGVDb2x1bW5Qcm9n
cmVzc2lvbkZyb21TdHlsZShkb2N1bWVudFN0eWxlLmdldCgpKTsKICAgICB9CiAKICAgICBjb25z
dCBTZXR0aW5ncyYgc2V0dGluZ3MgPSByZW5kZXJWaWV3LmZyYW1lKCkuc2V0dGluZ3MoKTsKQEAg
LTEwOCw3ICsxMDgsNyBAQCBQYXNzUmVmPFJlbmRlclN0eWxlPiByZXNvbHZlRm9yRG9jdW1lbnQo
Y29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIGludCBzaXplID0gZm9udFNpemVGb3JLZXl3
b3JkKENTU1ZhbHVlTWVkaXVtLCBmYWxzZSwgZG9jdW1lbnQpOwogICAgIGZvbnREZXNjcmlwdGlv
bi5zZXRTcGVjaWZpZWRTaXplKHNpemUpOwogICAgIGJvb2wgdXNlU1ZHWm9vbVJ1bGVzID0gZG9j
dW1lbnQuaXNTVkdEb2N1bWVudCgpOwotICAgIGZvbnREZXNjcmlwdGlvbi5zZXRDb21wdXRlZFNp
emUoY29tcHV0ZWRGb250U2l6ZUZyb21TcGVjaWZpZWRTaXplKHNpemUsIGZvbnREZXNjcmlwdGlv
bi5pc0Fic29sdXRlU2l6ZSgpLCB1c2VTVkdab29tUnVsZXMsICZkb2N1bWVudFN0eWxlLmdldCgp
LCBkb2N1bWVudCkpOworICAgIGZvbnREZXNjcmlwdGlvbi5zZXRDb21wdXRlZFNpemUoY29tcHV0
ZWRGb250U2l6ZUZyb21TcGVjaWZpZWRTaXplKHNpemUsIGZvbnREZXNjcmlwdGlvbi5pc0Fic29s
dXRlU2l6ZSgpLCB1c2VTVkdab29tUnVsZXMsIGRvY3VtZW50U3R5bGUuYXNQdHIoKSwgZG9jdW1l
bnQpKTsKIAogICAgIEZvbnRPcmllbnRhdGlvbiBmb250T3JpZW50YXRpb247CiAgICAgTm9uQ0pL
R2x5cGhPcmllbnRhdGlvbiBnbHlwaE9yaWVudGF0aW9uOwpAQCAtMTE4LDcgKzExOCw3IEBAIFBh
c3NSZWY8UmVuZGVyU3R5bGU+IHJlc29sdmVGb3JEb2N1bWVudChjb25zdCBEb2N1bWVudCYgZG9j
dW1lbnQpCiAKICAgICBkb2N1bWVudFN0eWxlLmdldCgpLnNldEZvbnREZXNjcmlwdGlvbihmb250
RGVzY3JpcHRpb24pOwogCi0gICAgQ1NTRm9udFNlbGVjdG9yKiBmb250U2VsZWN0b3IgPSBkb2N1
bWVudC5zdHlsZVJlc29sdmVySWZFeGlzdHMoKSA/IGRvY3VtZW50LnN0eWxlUmVzb2x2ZXJJZkV4
aXN0cygpLT5mb250U2VsZWN0b3IoKSA6IDA7CisgICAgQ1NTRm9udFNlbGVjdG9yKiBmb250U2Vs
ZWN0b3IgPSBkb2N1bWVudC5zdHlsZVJlc29sdmVySWZFeGlzdHMoKSA/IGRvY3VtZW50LnN0eWxl
UmVzb2x2ZXJJZkV4aXN0cygpLT5mb250U2VsZWN0b3IoKSA6IG51bGxwdHI7CiAgICAgZG9jdW1l
bnRTdHlsZS5nZXQoKS5mb250KCkudXBkYXRlKGZvbnRTZWxlY3Rvcik7CiAKICAgICByZXR1cm4g
ZG9jdW1lbnRTdHlsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVz
b2x2ZVRyZWUuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlVHJlZS5jcHAK
aW5kZXggYzI0YzIxNmNkYTkzYjAxMDQxNGQ2MmVjYmU5MzEyNmNjZjYzY2JhOS4uYjk5MDk4Yzhj
NTI4NjI0MGQ0YzQ0ZWY1YTA0NjE2ZGEyNWY2MjNhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3R5bGUvU3R5bGVSZXNvbHZlVHJlZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUv
U3R5bGVSZXNvbHZlVHJlZS5jcHAKQEAgLTkzLDU0ICs5Myw1MiBAQCBzdGF0aWMgdm9pZCBkZXRh
Y2hSZW5kZXJUcmVlKEVsZW1lbnQmLCBEZXRhY2hUeXBlKTsKIHN0YXRpYyB2b2lkIHJlc29sdmVU
ZXh0Tm9kZShUZXh0JiwgUmVuZGVyVHJlZVBvc2l0aW9uJik7CiBzdGF0aWMgdm9pZCByZXNvbHZl
VHJlZShFbGVtZW50JiwgUmVuZGVyU3R5bGUmIGluaGVyaXRlZFN0eWxlLCBSZW5kZXJUcmVlUG9z
aXRpb24mLCBDaGFuZ2UpOwogCi1DaGFuZ2UgZGV0ZXJtaW5lQ2hhbmdlKGNvbnN0IFJlbmRlclN0
eWxlKiBzMSwgY29uc3QgUmVuZGVyU3R5bGUqIHMyKQorQ2hhbmdlIGRldGVybWluZUNoYW5nZShj
b25zdCBSZW5kZXJTdHlsZSYgczEsIGNvbnN0IFJlbmRlclN0eWxlJiBzMikKIHsKLSAgICBpZiAo
IXMxIHx8ICFzMikKKyAgICBpZiAoczEuZGlzcGxheSgpICE9IHMyLmRpc3BsYXkoKSkKICAgICAg
ICAgcmV0dXJuIERldGFjaDsKLSAgICBpZiAoczEtPmRpc3BsYXkoKSAhPSBzMi0+ZGlzcGxheSgp
KQotICAgICAgICByZXR1cm4gRGV0YWNoOwotICAgIGlmIChzMS0+aGFzUHNldWRvU3R5bGUoRklS
U1RfTEVUVEVSKSAhPSBzMi0+aGFzUHNldWRvU3R5bGUoRklSU1RfTEVUVEVSKSkKKyAgICBpZiAo
czEuaGFzUHNldWRvU3R5bGUoRklSU1RfTEVUVEVSKSAhPSBzMi5oYXNQc2V1ZG9TdHlsZShGSVJT
VF9MRVRURVIpKQogICAgICAgICByZXR1cm4gRGV0YWNoOwogICAgIC8vIFdlIGp1c3QgZGV0YWNo
IGlmIGEgcmVuZGVyZXIgYWNxdWlyZXMgb3IgbG9zZXMgYSBjb2x1bW4tc3Bhbiwgc2luY2Ugc3Bh
bm5pbmcgZWxlbWVudHMKICAgICAvLyB0eXBpY2FsbHkgd29uJ3QgY29udGFpbiBtdWNoIGNvbnRl
bnQuCi0gICAgaWYgKHMxLT5jb2x1bW5TcGFuKCkgIT0gczItPmNvbHVtblNwYW4oKSkKKyAgICBp
ZiAoczEuY29sdW1uU3BhbigpICE9IHMyLmNvbHVtblNwYW4oKSkKICAgICAgICAgcmV0dXJuIERl
dGFjaDsKLSAgICBpZiAoIXMxLT5jb250ZW50RGF0YUVxdWl2YWxlbnQoczIpKQorICAgIGlmICgh
czEuY29udGVudERhdGFFcXVpdmFsZW50KCZzMikpCiAgICAgICAgIHJldHVybiBEZXRhY2g7CiAg
ICAgLy8gV2hlbiB0ZXh0LWNvbWJpbmUgcHJvcGVydHkgaGFzIGJlZW4gY2hhbmdlZCwgd2UgbmVl
ZCB0byBwcmVwYXJlIGEgc2VwYXJhdGUgcmVuZGVyZXIgb2JqZWN0LgogICAgIC8vIFdoZW4gdGV4
dC1jb21iaW5lIGlzIG9uLCB3ZSB1c2UgUmVuZGVyQ29tYmluZVRleHQsIG90aGVyd2lzZSBSZW5k
ZXJUZXh0LgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01
NTA2OQotICAgIGlmIChzMS0+aGFzVGV4dENvbWJpbmUoKSAhPSBzMi0+aGFzVGV4dENvbWJpbmUo
KSkKKyAgICBpZiAoczEuaGFzVGV4dENvbWJpbmUoKSAhPSBzMi5oYXNUZXh0Q29tYmluZSgpKQog
ICAgICAgICByZXR1cm4gRGV0YWNoOwogICAgIC8vIFdlIG5lZWQgdG8gcmVhdHRhY2ggdGhlIG5v
ZGUsIHNvIHRoYXQgaXQgaXMgbW92ZWQgdG8gdGhlIGNvcnJlY3QgUmVuZGVyRmxvd1RocmVhZC4K
LSAgICBpZiAoczEtPmZsb3dUaHJlYWQoKSAhPSBzMi0+Zmxvd1RocmVhZCgpKQorICAgIGlmIChz
MS5mbG93VGhyZWFkKCkgIT0gczIuZmxvd1RocmVhZCgpKQogICAgICAgICByZXR1cm4gRGV0YWNo
OwogICAgIC8vIFdoZW4gdGhlIHJlZ2lvbiB0aHJlYWQgaGFzIGNoYW5nZWQsIHdlIG5lZWQgdG8g
cHJlcGFyZSBhIHNlcGFyYXRlIHJlbmRlciByZWdpb24gb2JqZWN0LgotICAgIGlmIChzMS0+cmVn
aW9uVGhyZWFkKCkgIT0gczItPnJlZ2lvblRocmVhZCgpKQorICAgIGlmIChzMS5yZWdpb25UaHJl
YWQoKSAhPSBzMi5yZWdpb25UaHJlYWQoKSkKICAgICAgICAgcmV0dXJuIERldGFjaDsKICAgICAv
LyBGSVhNRTogTXVsdGljb2x1bW4gcmVnaW9ucyBub3QgeWV0IHN1cHBvcnRlZCAoaHR0cDovL2Rl
di53My5vcmcvY3Nzd2cvY3NzLXJlZ2lvbnMvI211bHRpLWNvbHVtbi1yZWdpb25zKQogICAgIC8v
IFdoZW4gdGhlIG5vZGUgaGFzIHJlZ2lvbiBzdHlsZSBhbmQgY2hhbmdlZCBpdHMgbXVsdGljb2wg
c3R5bGUsIHdlIGhhdmUgdG8gcHJlcGFyZQogICAgIC8vIGEgc2VwYXJhdGUgcmVuZGVyIHJlZ2lv
biBvYmplY3QuCi0gICAgaWYgKHMxLT5oYXNGbG93RnJvbSgpICYmIChzMS0+c3BlY2lmaWVzQ29s
dW1ucygpICE9IHMyLT5zcGVjaWZpZXNDb2x1bW5zKCkpKQorICAgIGlmIChzMS5oYXNGbG93RnJv
bSgpICYmIChzMS5zcGVjaWZpZXNDb2x1bW5zKCkgIT0gczIuc3BlY2lmaWVzQ29sdW1ucygpKSkK
ICAgICAgICAgcmV0dXJuIERldGFjaDsKIAotICAgIGlmICgqczEgIT0gKnMyKSB7Ci0gICAgICAg
IGlmIChzMS0+aW5oZXJpdGVkTm90RXF1YWwoczIpKQorICAgIGlmIChzMSAhPSBzMikgeworICAg
ICAgICBpZiAoczEuaW5oZXJpdGVkTm90RXF1YWwoJnMyKSkKICAgICAgICAgICAgIHJldHVybiBJ
bmhlcml0OwotICAgICAgICBpZiAoczEtPmhhc0V4cGxpY2l0bHlJbmhlcml0ZWRQcm9wZXJ0aWVz
KCkgfHwgczItPmhhc0V4cGxpY2l0bHlJbmhlcml0ZWRQcm9wZXJ0aWVzKCkpCisgICAgICAgIGlm
IChzMS5oYXNFeHBsaWNpdGx5SW5oZXJpdGVkUHJvcGVydGllcygpIHx8IHMyLmhhc0V4cGxpY2l0
bHlJbmhlcml0ZWRQcm9wZXJ0aWVzKCkpCiAgICAgICAgICAgICByZXR1cm4gSW5oZXJpdDsKIAog
ICAgICAgICByZXR1cm4gTm9Jbmhlcml0OwogICAgIH0KICAgICAvLyBJZiB0aGUgcHNldWRvU3R5
bGVzIGhhdmUgY2hhbmdlZCwgd2Ugd2FudCBhbnkgU3R5bGVDaGFuZ2UgdGhhdCBpcyBub3QgTm9D
aGFuZ2UKICAgICAvLyBiZWNhdXNlIHNldFN0eWxlIHdpbGwgZG8gdGhlIHJpZ2h0IHRoaW5nIHdp
dGggYW55dGhpbmcgZWxzZS4KLSAgICBpZiAoczEtPmhhc0FueVB1YmxpY1BzZXVkb1N0eWxlcygp
KSB7CisgICAgaWYgKHMxLmhhc0FueVB1YmxpY1BzZXVkb1N0eWxlcygpKSB7CiAgICAgICAgIGZv
ciAoUHNldWRvSWQgcHNldWRvSWQgPSBGSVJTVF9QVUJMSUNfUFNFVURPSUQ7IHBzZXVkb0lkIDwg
RklSU1RfSU5URVJOQUxfUFNFVURPSUQ7IHBzZXVkb0lkID0gc3RhdGljX2Nhc3Q8UHNldWRvSWQ+
KHBzZXVkb0lkICsgMSkpIHsKLSAgICAgICAgICAgIGlmIChzMS0+aGFzUHNldWRvU3R5bGUocHNl
dWRvSWQpKSB7Ci0gICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIHBzMiA9IHMyLT5nZXRDYWNo
ZWRQc2V1ZG9TdHlsZShwc2V1ZG9JZCk7CisgICAgICAgICAgICBpZiAoczEuaGFzUHNldWRvU3R5
bGUocHNldWRvSWQpKSB7CisgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIHBzMiA9IHMyLmdl
dENhY2hlZFBzZXVkb1N0eWxlKHBzZXVkb0lkKTsKICAgICAgICAgICAgICAgICBpZiAoIXBzMikK
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vSW5oZXJpdDsKLSAgICAgICAgICAgICAgICBS
ZW5kZXJTdHlsZSogcHMxID0gczEtPmdldENhY2hlZFBzZXVkb1N0eWxlKHBzZXVkb0lkKTsKKyAg
ICAgICAgICAgICAgICBSZW5kZXJTdHlsZSogcHMxID0gczEuZ2V0Q2FjaGVkUHNldWRvU3R5bGUo
cHNldWRvSWQpOwogICAgICAgICAgICAgICAgIGlmICghcHMxIHx8ICpwczEgIT0gKnBzMikKICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vSW5oZXJpdDsKICAgICAgICAgICAgIH0KQEAgLTc1
MCw4ICs3NDgsOSBAQCBzdGF0aWMgQ2hhbmdlIHJlc29sdmVMb2NhbChFbGVtZW50JiBjdXJyZW50
LCBSZW5kZXJTdHlsZSYgaW5oZXJpdGVkU3R5bGUsIFJlbmRlcgogCiAgICAgRG9jdW1lbnQmIGRv
Y3VtZW50ID0gY3VycmVudC5kb2N1bWVudCgpOwogICAgIGlmIChjdXJyZW50U3R5bGUgJiYgY3Vy
cmVudC5zdHlsZUNoYW5nZVR5cGUoKSAhPSBSZWNvbnN0cnVjdFJlbmRlclRyZWUpIHsKLSAgICAg
ICAgbmV3U3R5bGUgPSBzdHlsZUZvckVsZW1lbnQoY3VycmVudCwgaW5oZXJpdGVkU3R5bGUpOwot
ICAgICAgICBsb2NhbENoYW5nZSA9IGRldGVybWluZUNoYW5nZShjdXJyZW50U3R5bGUuZ2V0KCks
IG5ld1N0eWxlLmdldCgpKTsKKyAgICAgICAgUmVmPFJlbmRlclN0eWxlPiBzdHlsZShzdHlsZUZv
ckVsZW1lbnQoY3VycmVudCwgaW5oZXJpdGVkU3R5bGUpKTsKKyAgICAgICAgbmV3U3R5bGUgPSBz
dHlsZS5hc1B0cigpOworICAgICAgICBsb2NhbENoYW5nZSA9IGRldGVybWluZUNoYW5nZSgqY3Vy
cmVudFN0eWxlLCBzdHlsZSk7CiAgICAgfQogICAgIGlmIChsb2NhbENoYW5nZSA9PSBEZXRhY2gp
IHsKICAgICAgICAgaWYgKGN1cnJlbnQucmVuZGVyZXIoKSB8fCBjdXJyZW50LmlzTmFtZWRGbG93
Q29udGVudE5vZGUoKSkKQEAgLTk4NCw3ICs5ODMsNyBAQCB2b2lkIHJlc29sdmVUcmVlKERvY3Vt
ZW50JiBkb2N1bWVudCwgQ2hhbmdlIGNoYW5nZSkKICAgICAgICAgICAgICAgICBkb2N1bWVudFN0
eWxlLmdldCgpLmZvbnQoKS51cGRhdGUoc3R5bGVSZXNvbHZlci0+Zm9udFNlbGVjdG9yKCkpOwog
ICAgICAgICB9CiAKLSAgICAgICAgU3R5bGU6OkNoYW5nZSBkb2N1bWVudENoYW5nZSA9IGRldGVy
bWluZUNoYW5nZSgmZG9jdW1lbnRTdHlsZS5nZXQoKSwgJmRvY3VtZW50LnJlbmRlclZpZXcoKS0+
c3R5bGUoKSk7CisgICAgICAgIFN0eWxlOjpDaGFuZ2UgZG9jdW1lbnRDaGFuZ2UgPSBkZXRlcm1p
bmVDaGFuZ2UoZG9jdW1lbnRTdHlsZS5nZXQoKSwgZG9jdW1lbnQucmVuZGVyVmlldygpLT5zdHls
ZSgpKTsKICAgICAgICAgaWYgKGRvY3VtZW50Q2hhbmdlICE9IE5vQ2hhbmdlKQogICAgICAgICAg
ICAgZG9jdW1lbnQucmVuZGVyVmlldygpLT5zZXRTdHlsZShXVEY6Om1vdmUoZG9jdW1lbnRTdHls
ZSkpOwogICAgICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHls
ZVJlc29sdmVUcmVlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVUcmVlLmgK
aW5kZXggN2RkMjUxYjkzNzU2Yzg3ZTczMjkxMTI1Y2Q4OGJiMzRjMDZkYjdlZi4uMDBmMzA2Nzk3
M2E2YjJmMmExMmNjYzE3OTVmMDIyMTZjYTI4NmIxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3R5bGUvU3R5bGVSZXNvbHZlVHJlZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0
eWxlUmVzb2x2ZVRyZWUuaApAQCAtNDcsNyArNDcsNyBAQCB2b2lkIGRldGFjaFRleHRSZW5kZXJl
cihUZXh0Jik7CiAKIHZvaWQgdXBkYXRlVGV4dFJlbmRlcmVyQWZ0ZXJDb250ZW50Q2hhbmdlKFRl
eHQmLCB1bnNpZ25lZCBvZmZzZXRPZlJlcGxhY2VkRGF0YSwgdW5zaWduZWQgbGVuZ3RoT2ZSZXBs
YWNlZERhdGEpOwogCi1DaGFuZ2UgZGV0ZXJtaW5lQ2hhbmdlKGNvbnN0IFJlbmRlclN0eWxlKiwg
Y29uc3QgUmVuZGVyU3R5bGUqKTsKK0NoYW5nZSBkZXRlcm1pbmVDaGFuZ2UoY29uc3QgUmVuZGVy
U3R5bGUmLCBjb25zdCBSZW5kZXJTdHlsZSYpOwogCiB2b2lkIHF1ZXVlUG9zdFJlc29sdXRpb25D
YWxsYmFjayhzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+KTsKIGJvb2wgcG9zdFJlc29sdXRpb25DYWxs
YmFja3NBcmVTdXNwZW5kZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViRnJhbWUubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCmlu
ZGV4IDhiMmIyMDM3ZDRmZmRjODQwY2RmNjhiZGQ4NjI3NWUyZjlmOTFlZGQuLjA4MDMxNDQxMDNi
NDMxNDUzMmE4YTUwNTJmZWViMzFiNzkzNTgzZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJGcmFtZS5tbQpAQCAtOTUzLDcgKzk1Myw3IEBAIC0gKHZvaWQpX3NldFR5cGluZ1N0eWxlOihE
T01DU1NTdHlsZURlY2xhcmF0aW9uICopc3R5bGUgd2l0aFVuZG9BY3Rpb246KEVkaXRBY3RpCiAg
ICAgICAgIHJldHVybjsKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkbid0IGhhdmUgdG8gY3JlYXRl
IGEgY29weSBoZXJlLgogICAgIFJlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBwcm9wZXJ0aWVz
KGNvcmUoc3R5bGUpLT5jb3B5UHJvcGVydGllcygpKTsKLSAgICBfcHJpdmF0ZS0+Y29yZUZyYW1l
LT5lZGl0b3IoKS5jb21wdXRlQW5kU2V0VHlwaW5nU3R5bGUoJnByb3BlcnRpZXMuZ2V0KCksIHVu
ZG9BY3Rpb24pOworICAgIF9wcml2YXRlLT5jb3JlRnJhbWUtPmVkaXRvcigpLmNvbXB1dGVBbmRT
ZXRUeXBpbmdTdHlsZShwcm9wZXJ0aWVzLmFzUHRyKCksIHVuZG9BY3Rpb24pOwogfQogCiAjaWYg
RU5BQkxFKERSQUdfU1VQUE9SVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViSFRNTFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3
Lm1tCmluZGV4IDk0NGM1Yzg0MjI5NWJkMzM3ZGJkNmFjMTI0ZjkxMzRlOGJkNmYxMDAuLmVkMWI0
ZDRmNzZlMDdmOTQwNWNiYjE3MzA4ZjVmODZlMWIzNzA3MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJIVE1MVmlldy5tbQpAQCAtNDc1NSw3ICs0NzU1LDcgQEAgLSAodm9pZClfYXBw
bHlTdHlsZVRvU2VsZWN0aW9uOihET01DU1NTdHlsZURlY2xhcmF0aW9uICopc3R5bGUgd2l0aFVu
ZG9BY3Rpb246KEUKICAgICBpZiAoRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1l
XSkpIHsKICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZG4ndCBoYXZlIHRvIG1ha2UgYSBjb3B5
IGhlcmUuIFdlIHdhbnQgY2FsbGVycyBvZiB0aGlzIGZ1bmN0aW9uIHRvIHdvcmsgZGlyZWN0bHkg
d2l0aCBTdHlsZVByb3BlcnRpZXMgZXZlbnR1YWxseS4KICAgICAgICAgUmVmPE11dGFibGVTdHls
ZVByb3BlcnRpZXM+IHByb3BlcnRpZXMoY29yZShzdHlsZSktPmNvcHlQcm9wZXJ0aWVzKCkpOwot
ICAgICAgICBjb3JlRnJhbWUtPmVkaXRvcigpLmFwcGx5U3R5bGVUb1NlbGVjdGlvbigmcHJvcGVy
dGllcy5nZXQoKSwgdW5kb0FjdGlvbik7CisgICAgICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCkuYXBw
bHlTdHlsZVRvU2VsZWN0aW9uKHByb3BlcnRpZXMuYXNQdHIoKSwgdW5kb0FjdGlvbik7CiAgICAg
fQogfQogCkBAIC01MDY1LDcgKzUwNjUsNyBAQCAtICh2b2lkKV9jaGFuZ2VDU1NDb2xvclVzaW5n
U2VsZWN0b3I6KFNFTClzZWxlY3RvciBpblJhbmdlOihET01SYW5nZSAqKXJhbmdlCiAgICAgICAg
IGlmIChGcmFtZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKSkgewogICAgICAgICAg
ICAgLy8gRklYTUU6IFdlIHNob3VsZG4ndCBoYXZlIHRvIG1ha2UgYSBjb3B5IGhlcmUuCiAgICAg
ICAgICAgICBSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gcHJvcGVydGllcyhjb3JlKHN0eWxl
KS0+Y29weVByb3BlcnRpZXMoKSk7Ci0gICAgICAgICAgICBjb3JlRnJhbWUtPmVkaXRvcigpLmFw
cGx5U3R5bGUoJnByb3BlcnRpZXMuZ2V0KCksIFtzZWxmIF91bmRvQWN0aW9uRnJvbUNvbG9yUGFu
ZWxXaXRoU2VsZWN0b3I6c2VsZWN0b3JdKTsKKyAgICAgICAgICAgIGNvcmVGcmFtZS0+ZWRpdG9y
KCkuYXBwbHlTdHlsZShwcm9wZXJ0aWVzLmFzUHRyKCksIFtzZWxmIF91bmRvQWN0aW9uRnJvbUNv
bG9yUGFuZWxXaXRoU2VsZWN0b3I6c2VsZWN0b3JdKTsKICAgICAgICAgfQogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IGI5NDkwYzI5ZDI4MDA2MmRmM2E5NzRi
ZTkxMzNkNjhkYjdlNWM4ZjMuLjZjYzRkNjg3YmViMjFjZTNmNmFmMGE5YTg4OWZmZjI1YjMyZjg5
ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTc1NDAsNyArNzU0MCw3
IEBAIC0gKHZvaWQpYXBwbHlTdHlsZTooRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiAqKXN0eWxlCiAg
ICAgaWYgKEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKHdlYkZyYW1lKSkgewogICAgICAgICAvLyBG
SVhNRTogV2Ugc2hvdWxkbid0IGhhdmUgdG8gbWFrZSBhIGNvcHkgaGVyZS4KICAgICAgICAgUmVm
PE11dGFibGVTdHlsZVByb3BlcnRpZXM+IHByb3BlcnRpZXMoY29yZShzdHlsZSktPmNvcHlQcm9w
ZXJ0aWVzKCkpOwotICAgICAgICBjb3JlRnJhbWUtPmVkaXRvcigpLmFwcGx5U3R5bGUoJnByb3Bl
cnRpZXMuZ2V0KCkpOworICAgICAgICBjb3JlRnJhbWUtPmVkaXRvcigpLmFwcGx5U3R5bGUocHJv
cGVydGllcy5hc1B0cigpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJD
b250ZXh0LmNwcAppbmRleCBjZmJmMzNmYjIyNDE3N2Y5ZGMwMjU1YjMwNTU0NGU1YjAzNTYzMmNm
Li40ZWY1MzFhZjNiOTkyN2EyMGM2OTYyMGIyNTQ0M2NiZjYyZTZhZmViIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCkBAIC04NTUsNyArODU1LDcgQEAgV2ViUHJvY2Vz
c1Byb3h5JiBXZWJDb250ZXh0OjpjcmVhdGVOZXdXZWJQcm9jZXNzUmVzcGVjdGluZ1Byb2Nlc3ND
b3VudExpbWl0KCkKIFBhc3NSZWZQdHI8V2ViUGFnZVByb3h5PiBXZWJDb250ZXh0OjpjcmVhdGVX
ZWJQYWdlKFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlBhZ2VDb25maWd1cmF0aW9uIGNvbmZp
Z3VyYXRpb24pCiB7CiAgICAgaWYgKCFjb25maWd1cmF0aW9uLnBhZ2VHcm91cCkKLSAgICAgICAg
Y29uZmlndXJhdGlvbi5wYWdlR3JvdXAgPSAmbV9kZWZhdWx0UGFnZUdyb3VwLmdldCgpOworICAg
ICAgICBjb25maWd1cmF0aW9uLnBhZ2VHcm91cCA9IG1fZGVmYXVsdFBhZ2VHcm91cC5hc1B0cigp
OwogICAgIGlmICghY29uZmlndXJhdGlvbi5wcmVmZXJlbmNlcykKICAgICAgICAgY29uZmlndXJh
dGlvbi5wcmVmZXJlbmNlcyA9ICZjb25maWd1cmF0aW9uLnBhZ2VHcm91cC0+cHJlZmVyZW5jZXMo
KTsKICAgICBpZiAoIWNvbmZpZ3VyYXRpb24udmlzaXRlZExpbmtQcm92aWRlcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggZjE0OTczMDk0MWZmNmE4M2Rm
ZTFlMzdhMzc4YzdjODdhNDEzNmNhOS4uZTFjYjA3M2NhMTMyZDVkNWU1NDJhNzg2MmFjZjkwZWJk
Y2YwYWUzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAg
LTQ2Nyw3ICs0NjcsNyBAQCBib29sIFdlYlBhZ2VQcm94eTo6aXNWYWxpZCgpIGNvbnN0CiAKIHZv
aWQgV2ViUGFnZVByb3h5OjpzZXRQcmVmZXJlbmNlcyhXZWJQcmVmZXJlbmNlcyYgcHJlZmVyZW5j
ZXMpCiB7Ci0gICAgaWYgKCZwcmVmZXJlbmNlcyA9PSAmbV9wcmVmZXJlbmNlcy5nZXQoKSkKKyAg
ICBpZiAoJnByZWZlcmVuY2VzID09IG1fcHJlZmVyZW5jZXMuYXNQdHIoKSkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgbV9wcmVmZXJlbmNlcy0+cmVtb3ZlUGFnZSgqdGhpcyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IDg4NGVjNDQ5ZTNkOGRi
ODRhNDQ4N2I0ZWJjZTcyZjA3MTZiODk3NmEuLjZjN2NkNGZjNjBiNThjMjdhMzJkZTEwOWY2NTRl
OWM5YzBmMTE4ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuY3BwCkBAIC02MjksNyArNjI5LDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZE5hdmln
YXRlV2l0aE5hdmlnYXRpb25EYXRhKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViTmEKICAgICBN
RVNTQUdFX0NIRUNLKGZyYW1lKTsKICAgICBNRVNTQUdFX0NIRUNLKGZyYW1lLT5wYWdlKCkgPT0g
cGFnZSk7CiAgICAgCi0gICAgbV9jb250ZXh0LT5oaXN0b3J5Q2xpZW50KCkuZGlkTmF2aWdhdGVX
aXRoTmF2aWdhdGlvbkRhdGEoJm1fY29udGV4dC5nZXQoKSwgcGFnZSwgc3RvcmUsIGZyYW1lKTsK
KyAgICBtX2NvbnRleHQtPmhpc3RvcnlDbGllbnQoKS5kaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9u
RGF0YShtX2NvbnRleHQuYXNQdHIoKSwgcGFnZSwgc3RvcmUsIGZyYW1lKTsKIH0KIAogdm9pZCBX
ZWJQcm9jZXNzUHJveHk6OmRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdCh1aW50NjRfdCBwYWdlSUQs
IGNvbnN0IFN0cmluZyYgc291cmNlVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9u
VVJMU3RyaW5nLCB1aW50NjRfdCBmcmFtZUlEKQpAQCAtNjQ3LDcgKzY0Nyw3IEBAIHZvaWQgV2Vi
UHJvY2Vzc1Byb3h5OjpkaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3QodWludDY0X3QgcGFnZUlELCBj
b25zdCBTdHJpbmcmIHNvCiAgICAgTUVTU0FHRV9DSEVDS19VUkwoc291cmNlVVJMU3RyaW5nKTsK
ICAgICBNRVNTQUdFX0NIRUNLX1VSTChkZXN0aW5hdGlvblVSTFN0cmluZyk7CiAKLSAgICBtX2Nv
bnRleHQtPmhpc3RvcnlDbGllbnQoKS5kaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3QoJm1fY29udGV4
dC5nZXQoKSwgcGFnZSwgc291cmNlVVJMU3RyaW5nLCBkZXN0aW5hdGlvblVSTFN0cmluZywgZnJh
bWUpOworICAgIG1fY29udGV4dC0+aGlzdG9yeUNsaWVudCgpLmRpZFBlcmZvcm1DbGllbnRSZWRp
cmVjdChtX2NvbnRleHQuYXNQdHIoKSwgcGFnZSwgc291cmNlVVJMU3RyaW5nLCBkZXN0aW5hdGlv
blVSTFN0cmluZywgZnJhbWUpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkUGVyZm9y
bVNlcnZlclJlZGlyZWN0KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkxT
dHJpbmcsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25VUkxTdHJpbmcsIHVpbnQ2NF90IGZyYW1l
SUQpCkBAIC02NjUsNyArNjY1LDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZFBlcmZvcm1T
ZXJ2ZXJSZWRpcmVjdCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFN0cmluZyYgc28KICAgICBNRVNT
QUdFX0NIRUNLX1VSTChzb3VyY2VVUkxTdHJpbmcpOwogICAgIE1FU1NBR0VfQ0hFQ0tfVVJMKGRl
c3RpbmF0aW9uVVJMU3RyaW5nKTsKIAotICAgIG1fY29udGV4dC0+aGlzdG9yeUNsaWVudCgpLmRp
ZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdCgmbV9jb250ZXh0LmdldCgpLCBwYWdlLCBzb3VyY2VVUkxT
dHJpbmcsIGRlc3RpbmF0aW9uVVJMU3RyaW5nLCBmcmFtZSk7CisgICAgbV9jb250ZXh0LT5oaXN0
b3J5Q2xpZW50KCkuZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0KG1fY29udGV4dC5hc1B0cigpLCBw
YWdlLCBzb3VyY2VVUkxTdHJpbmcsIGRlc3RpbmF0aW9uVVJMU3RyaW5nLCBmcmFtZSk7CiB9CiAK
IHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRVcGRhdGVIaXN0b3J5VGl0bGUodWludDY0X3QgcGFn
ZUlELCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIHVybCwgdWludDY0X3QgZnJh
bWVJRCkKQEAgLTY3OSw3ICs2NzksNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkVXBkYXRl
SGlzdG9yeVRpdGxlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiB0aXRsZQogICAgIE1F
U1NBR0VfQ0hFQ0soZnJhbWUtPnBhZ2UoKSA9PSBwYWdlKTsKICAgICBNRVNTQUdFX0NIRUNLX1VS
TCh1cmwpOwogCi0gICAgbV9jb250ZXh0LT5oaXN0b3J5Q2xpZW50KCkuZGlkVXBkYXRlSGlzdG9y
eVRpdGxlKCZtX2NvbnRleHQuZ2V0KCksIHBhZ2UsIHRpdGxlLCB1cmwsIGZyYW1lKTsKKyAgICBt
X2NvbnRleHQtPmhpc3RvcnlDbGllbnQoKS5kaWRVcGRhdGVIaXN0b3J5VGl0bGUobV9jb250ZXh0
LmFzUHRyKCksIHBhZ2UsIHRpdGxlLCB1cmwsIGZyYW1lKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNz
UHJveHk6OnBhZ2VTdXBwcmVzc2liaWxpdHlDaGFuZ2VkKFdlYktpdDo6V2ViUGFnZVByb3h5ICpw
YWdlKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4
IDE2ZDk4MDMxYzcyZmJjMzc2ODM5YWZiMTg5MTcxNzJjZjQyMWZiODYuLjhlMTVhNjZjMmRlODg2
NThjMDlmMjU1Yzc5ODBkOGIyNmFiZTc1ZmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZwor
KysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNC0xMS0wNCAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhc1B0cigpIG1ldGhvZCB0
byBSZWYgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEzODM2MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFVzZSB0aGUgbmV3IFJlZjo6YXNQdHIoKSBtZXRob2QuCisKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9SZWYuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6
CisKIDIwMTQtMTEtMDQgIFRpYm9yIE1lc3phcm9zICA8dG1lc3phcm9zLnUtc3plZ2VkQHBhcnRu
ZXIuc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW2poYnVpbGRdIE1ha2UgaXQgcG9zc2libGUgdG8g
YnVpbGQgR1RLL0VGTCBpbiBzYW1lIHJlcG9zaXRvcnkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL1JlZi5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9SZWYuY3BwCmluZGV4IDFiOWVlZjY3YTg0NmJjMWI0MWYxMDQzNWI5ODVhNjBjMTU1OTBlZWIu
LjJiYWYzZmRmMjZiZjc4NmM2YmYwMTljMTQ1NzI4YTQ5YjhlZTMzNzggMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1JlZi5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvUmVmLmNwcApAQCAtMzgsMTQgKzM4LDE0IEBAIFRFU1QoV1RGX1JlZiwg
QmFzaWMpCiAKICAgICB7CiAgICAgICAgIFJlZjxSZWZMb2dnZXI+IHB0cihhKTsKLSAgICAgICAg
QVNTRVJUX0VRKCZhLCAmcHRyLmdldCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIuYXNQ
dHIoKSk7CiAgICAgICAgIEFTU0VSVF9FUSgmYS5uYW1lLCAmcHRyLT5uYW1lKTsKICAgICB9CiAg
ICAgQVNTRVJUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkp
OwogCiAgICAgewogICAgICAgICBSZWY8UmVmTG9nZ2VyPiBwdHIoYWRvcHRSZWYoYSkpOwotICAg
ICAgICBBU1NFUlRfRVEoJmEsICZwdHIuZ2V0KCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHB0
ci5hc1B0cigpKTsKICAgICAgICAgQVNTRVJUX0VRKCZhLm5hbWUsICZwdHItPm5hbWUpOwogICAg
IH0KICAgICBBU1NFUlRfU1RSRVEoImRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsK
QEAgLTU5LDQwICs1OSw0MCBAQCBURVNUKFdURl9SZWYsIEFzc2lnbm1lbnQpCiAKICAgICB7CiAg
ICAgICAgIFJlZjxSZWZMb2dnZXI+IHB0cihhKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCAmcHRy
LmdldCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIuYXNQdHIoKSk7CiAgICAgICAgIGxv
ZygpIDw8ICJ8ICI7CiAgICAgICAgIHB0ciA9IGI7Ci0gICAgICAgIEFTU0VSVF9FUSgmYiwgJnB0
ci5nZXQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcHRyLmFzUHRyKCkpOwogICAgICAgICBs
b2coKSA8PCAifCAiOwogICAgIH0KICAgICBBU1NFUlRfU1RSRVEoInJlZihhKSB8IHJlZihiKSBk
ZXJlZihhKSB8IGRlcmVmKGIpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAgIHsKICAg
ICAgICAgUmVmPFJlZkxvZ2dlcj4gcHRyKGEpOwotICAgICAgICBBU1NFUlRfRVEoJmEsICZwdHIu
Z2V0KCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci5hc1B0cigpKTsKICAgICAgICAgbG9n
KCkgPDwgInwgIjsKICAgICAgICAgcHRyID0gYzsKLSAgICAgICAgQVNTRVJUX0VRKCZjLCAmcHRy
LmdldCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBwdHIuYXNQdHIoKSk7CiAgICAgICAgIGxv
ZygpIDw8ICJ8ICI7CiAgICAgfQogICAgIEFTU0VSVF9TVFJFUSgicmVmKGEpIHwgcmVmKGMpIGRl
cmVmKGEpIHwgZGVyZWYoYykgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAgICAgewogICAg
ICAgICBSZWY8UmVmTG9nZ2VyPiBwdHIoYSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgJnB0ci5n
ZXQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLmFzUHRyKCkpOwogICAgICAgICBsb2co
KSA8PCAifCAiOwogICAgICAgICBwdHIgPSBhZG9wdFJlZihiKTsKLSAgICAgICAgQVNTRVJUX0VR
KCZiLCAmcHRyLmdldCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwdHIuYXNQdHIoKSk7CiAg
ICAgICAgIGxvZygpIDw8ICJ8ICI7CiAgICAgfQogICAgIEFTU0VSVF9TVFJFUSgicmVmKGEpIHwg
ZGVyZWYoYSkgfCBkZXJlZihiKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAKICAgICB7CiAg
ICAgICAgIFJlZjxSZWZMb2dnZXI+IHB0cihhKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCAmcHRy
LmdldCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIuYXNQdHIoKSk7CiAgICAgICAgIGxv
ZygpIDw8ICJ8ICI7CiAgICAgICAgIHB0ciA9IGFkb3B0UmVmKGMpOwotICAgICAgICBBU1NFUlRf
RVEoJmMsICZwdHIuZ2V0KCkpOworICAgICAgICBBU1NFUlRfRVEoJmMsIHB0ci5hc1B0cigpKTsK
ICAgICAgICAgbG9nKCkgPDwgInwgIjsKICAgICB9CiAgICAgQVNTRVJUX1NUUkVRKCJyZWYoYSkg
fCBkZXJlZihhKSB8IGRlcmVmKGMpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKQEAgLTExNiwx
NiArMTE2LDE2IEBAIFRFU1QoV1RGX1JlZiwgUmV0dXJuVmFsdWUpCiAKICAgICB7CiAgICAgICAg
IFJlZjxSZWZMb2dnZXI+IHB0cihwYXNzV2l0aFBhc3NSZWYoYSkpOwotICAgICAgICBBU1NFUlRf
RVEoJmEsICZwdHIuZ2V0KCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci5hc1B0cigpKTsK
ICAgICB9CiAgICAgQVNTRVJUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigp
LmNfc3RyKCkpOwogCiAgICAgewogICAgICAgICBSZWY8UmVmTG9nZ2VyPiBwdHIoYSk7Ci0gICAg
ICAgIEFTU0VSVF9FUSgmYSwgJnB0ci5nZXQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcHRy
LmFzUHRyKCkpOwogICAgICAgICBsb2coKSA8PCAifCAiOwogICAgICAgICBwdHIgPSBwYXNzV2l0
aFBhc3NSZWYoYik7Ci0gICAgICAgIEFTU0VSVF9FUSgmYiwgJnB0ci5nZXQoKSk7CisgICAgICAg
IEFTU0VSVF9FUSgmYiwgcHRyLmFzUHRyKCkpOwogICAgICAgICBsb2coKSA8PCAifCAiOwogICAg
IH0KICAgICBBU1NFUlRfU1RSRVEoInJlZihhKSB8IHJlZihiKSBkZXJlZihhKSB8IGRlcmVmKGIp
ICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240947</attachid>
            <date>2014-11-04 14:15:16 -0800</date>
            <delta_ts>2014-11-04 15:00:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-138361-20141104141525.patch</filename>
            <type>text/plain</type>
            <size>120623</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc1NTc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDgwNmFmYjhmNjdjNjhkNjkwM2VhZmUy
YTUyY2U5ZWVkMWUzNTMwNTAuLjE0YzM5MDFhNWQwNmIyZjQxOWI0NTgyZWVlOTZjZGMzZjAzMzM5
NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTQtMTEtMDQgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgcHRyKCkgbWV0aG9kIHRvIFJlZiBjbGFzcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM4MzYxCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgSXQgaXMgYSB2ZXJ5IGNv
bW1vbiBwYXR0ZXJuIGluIG91ciBjb2RlIGJhc2UgdG8gZ2V0IGEgcG9pbnRlciBmcm9tIGEKKyAg
ICAgICAgUmVmIG9iamVjdC4gUHJldmlvdXNseSwgd2UgaGF2ZSB0byBjYWxsIFJlZi5nZXQoKSBh
bmQgdGFrZSBpdHMgYWRkcmVzcworICAgICAgICB3aGljaCBpcyBub3QgdmVyeSBuaWNlLiBUaGlz
IHBhdGNoIGFkZHMgYSBwdHIoKSBtZXRob2QgdG8gUmVmIGNsYXNzCisgICAgICAgIHRvIHNpbXBs
aWZ5IHRoZSBjb2RlIGEgYml0LgorCisgICAgICAgICogd3RmL1Bhc3NSZWYuaDoKKyAgICAgICAg
KFdURjo6UGFzc1JlZjxUPjo6cHRyKToKKyAgICAgICAgKiB3dGYvUmVmLmg6CisgICAgICAgIChX
VEY6OlJlZjo6cHRyKToKKyAgICAgICAgKFdURjo6R2V0UHRySGVscGVyPFJlZjxUPj46OmdldFB0
cik6CisKIDIwMTQtMTEtMDQgIETDoW5pZWwgQsOhdHlhaSAgPGRiYXR5YWkudS1zemVnZWRAcGFy
dG5lci5zYW1zdW5nLmNvbT4KIAogICAgICAgICBBVFRSX1VTRUQgaW5jb3JyZWN0bHkgYXBwbHlp
bmcgdG8gQ2xhbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkNjdmOTMzZmRmYTIyNDZmOTdiMmRhNzQxNGYyMTVj
MTgwMDRmMzQ1Li5iYWY1N2Q5YmYxZjMwMzZkMjQwOWJkYzVkMTU5YTZiYzA3NmJmYzBiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTM2IEBACisyMDE0LTExLTA0ICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHB0cigpIG1ldGhvZCB0byBSZWYgY2xhc3MKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzODM2MQorCisg
ICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFVzZSB0aGUgbmV3IFJl
Zjo6cHRyKCkgbWV0aG9kLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gYmVoYXZpb3IgY2hh
bmdlLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU1lbnVMaXN0OjpkaWRVcGRhdGVBY3Rp
dmVPcHRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0
b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0TmFtZWRJdGVtcyk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbkN1c3RvbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpnZXROYW1lZEl0ZW1zKToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVSdWxlLmg6
CisgICAgICAgICogY3NzL0NTU1N0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
U3R5bGVTaGVldDo6aW5zZXJ0UnVsZSk6CisgICAgICAgICogY3NzL0NTU1ZhbHVlTGlzdC5oOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWVMaXN0OjppdGVtKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1ZhbHVlTGlzdDo6aXRlbVdpdGhvdXRCb3VuZHNDaGVjayk6CisgICAgICAgICogY3NzL0lu
c3BlY3RvckNTU09NV3JhcHBlcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NT
T01XcmFwcGVyczo6Y29sbGVjdCk6CisgICAgICAgICogZG9tL0NoaWxkTGlzdE11dGF0aW9uU2Nv
cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hpbGRMaXN0TXV0YXRpb25BY2N1bXVsYXRvcjo6
fkNoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q2hpbGRM
aXN0TXV0YXRpb25BY2N1bXVsYXRvcjo6Y2hpbGRBZGRlZCk6CisgICAgICAgICogZG9tL0NoaWxk
Tm9kZUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hpbGROb2RlTGlzdDo6bmFtZWRJdGVt
KToKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
b250YWluZXJOb2RlOjpyZW1vdmVDaGlsZCk6CisgICAgICAgICogZG9tL0N1cnJlbnRTY3JpcHRJ
bmNyZW1lbnRlci5oOgorICAgICAgICAoV2ViQ29yZTo6Q3VycmVudFNjcmlwdEluY3JlbWVudGVy
OjpDdXJyZW50U2NyaXB0SW5jcmVtZW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q3VycmVudFNj
cmlwdEluY3JlbWVudGVyOjp+Q3VycmVudFNjcmlwdEluY3JlbWVudGVyKToKKyAgICAgICAgKiBk
b20vTXV0YXRpb25SZWNvcmQuY3BwOgorICAgICAgICAqIGRvbS9Ob2RlUmFyZURhdGEuaDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok5vZGVMaXN0c05vZGVEYXRhOjplbnN1cmVDaGlsZE5vZGVMaXN0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok5vZGVMaXN0c05vZGVEYXRhOjplbnN1cmVFbXB0eUNoaWxkTm9k
ZUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZUxpc3RzTm9kZURhdGE6OmFkZENhY2hlV2l0
aFF1YWxpZmllZE5hbWUpOgorICAgICAgICAqIGRvbS9SYW5nZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSYW5nZTo6c2V0RG9jdW1lbnQpOgorICAgICAgICAqIGRvbS9TY3JpcHRFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEVsZW1lbnQ6OnJlcXVlc3RTY3JpcHQpOgorICAg
ICAgICAoV2ViQ29yZTo6U2NyaXB0RWxlbWVudDo6ZXhlY3V0ZVNjcmlwdCk6CisgICAgICAgICog
ZG9tL1N0YXRpY05vZGVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0YXRpY05vZGVMaXN0
OjppdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OlN0YXRpY0VsZW1lbnRMaXN0OjppdGVtKToKKyAg
ICAgICAgKiBlZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNvbXBvc2l0ZUVkaXRDb21tYW5kOjptb3ZlUmVtYWluaW5nU2libGluZ3NUb05ld1BhcmVu
dCk6CisgICAgICAgICogZWRpdGluZy9EaWN0YXRpb25Db21tYW5kLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRpY3RhdGlvbkNvbW1hbmQ6Omluc2VydFRleHQpOgorICAgICAgICAqIGVkaXRpbmcv
RGljdGF0aW9uQ29tbWFuZC5oOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkVkaXRvcjo6aW5zZXJ0VGV4dFdpdGhvdXRTZW5kaW5nVGV4dEV2ZW50KToK
KyAgICAgICAgKiBlZGl0aW5nL1JlcGxhY2VOb2RlV2l0aFNwYW5Db21tYW5kLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnN3YXBJbk5vZGVQcmVzZXJ2aW5nQXR0cmlidXRlc0FuZENoaWxkcmVuKToK
KyAgICAgICAgKiBlZGl0aW5nL1NpbXBsaWZ5TWFya3VwQ29tbWFuZC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTaW1wbGlmeU1hcmt1cENvbW1hbmQ6OmRvQXBwbHkpOgorICAgICAgICAqIGVkaXRp
bmcvbWFya3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omhhc09uZUNoaWxkKToKKyAgICAgICAg
KFdlYkNvcmU6Omhhc09uZVRleHRDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpyZXBsYWNlQ2hp
bGRyZW5XaXRoRnJhZ21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6cmVwbGFjZUNoaWxkcmVuV2l0
aFRleHQpOgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpjaGVja1ZhbGlkaXR5KToKKyAg
ICAgICAgKiBodG1sL0hUTUxGb3JtRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
Rm9ybUVsZW1lbnQ6OmdldE5hbWVkRWxlbWVudHMpOgorICAgICAgICAqIGh0bWwvSFRNTExpbmtF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudDo6c2hvdWxkTG9h
ZExpbmspOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlU2hlZXQ6OmJ1aWxkT2JqZWN0Rm9yU2VsZWN0
b3JMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlU2hlZXQ6OmJ1aWxkT2Jq
ZWN0Rm9yUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0OjpyZXZh
bGlkYXRlU3R5bGUpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y29udGludWVMb2FkQWZ0ZXJOZXdXaW5kb3dQb2xpY3kp
OgorICAgICAgICAqIHBhZ2UvRm9jdXNDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZvY3VzQ29udHJvbGxlcjo6c2V0Rm9jdXNlZEVsZW1lbnQpOgorICAgICAgICAqIHBhZ2UvUGFn
ZVNlcmlhbGl6ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNlcmlhbGl6ZXI6OnJldHJp
ZXZlUmVzb3VyY2VzRm9yUnVsZSk6CisgICAgICAgICogcGFnZS9QYWdlU2VyaWFsaXplci5oOgor
ICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QW5pbWF0aW9uQ29udHJvbGxlcjo6dXBkYXRlQW5pbWF0aW9ucyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvdmVyYWdlTWFwLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlRpbGVDb3ZlcmFnZU1hcDo6cGxhdGZvcm1DQUxheWVyUGFpbnRDb250ZW50cyk6
CisgICAgICAgICogcmVuZGVyaW5nL0NsaXBQYXRoT3BlcmF0aW9uLmg6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnN0eWxlRm9yRmlyc3RM
ZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnVwZGF0ZUZpcnN0TGV0dGVy
U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmNyZWF0ZUZpcnN0TGV0dGVy
UmVuZGVyZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93Ojp1cGRhdGVDb2x1bW5Qcm9ncmVzc2lvbkZy
b21TdHlsZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94
OjpzdHlsZURpZENoYW5nZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6c2V0U3R5bGUpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6c3R5bGVEaWRDaGFuZ2UpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJOYW1lZEZsb3dGcmFnbWVudDo6cmVzdG9yZVJlZ2lvbk9iamVjdHNPcmlnaW5hbFN0eWxlKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGV4dENvbnRyb2w6OmFkanVzdElubmVyVGV4dFN0eWxlKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4
dENvbnRyb2xNdWx0aUxpbmU6OmNyZWF0ZUlubmVyVGV4dFN0eWxlKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6Y3JlYXRlSW5uZXJUZXh0U3R5bGUpOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdHlsZS9EYXRhUmVmLmg6CisgICAgICAgIChXZWJDb3JlOjpEYXRh
UmVmOjpnZXQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVJlZjo6YWNjZXNzKToKKyAgICAgICAg
KFdlYkNvcmU6OkRhdGFSZWY6Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVJl
Zjo6b3BlcmF0b3IhPSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjaGFuZ2VSZXF1aXJlc0xheW91dCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Y2hhbmdlUmVxdWlyZXNQb3NpdGlvbmVk
TGF5b3V0T25seSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Y2hhbmdlUmVxdWly
ZXNMYXllclJlcGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmNoYW5nZVJl
cXVpcmVzUmVwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Y2hhbmdlUmVx
dWlyZXNSZXBhaW50SWZUZXh0T3JCb3JkZXJPck91dGxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU3R5bGU6OmNoYW5nZVJlcXVpcmVzUmVjb21wb3NpdGVMYXllcik6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTdHlsZTo6ZGlmZik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHls
ZTo6ZGlmZlJlcXVpcmVzTGF5ZXJSZXBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVHZW5lcmF0ZWRJ
bWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUdlbmVyYXRlZEltYWdlOjpjc3NWYWx1
ZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2UuaDoKKyAg
ICAgICAgKiBzdHlsZS9TdHlsZVJlc29sdmVGb3JEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZTo6cmVzb2x2ZUZvckRvY3VtZW50KToKKyAgICAgICAgKiBzdHlsZS9TdHlsZVJl
c29sdmVUcmVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpkZXRlcm1pbmVDaGFuZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OnJlc29sdmVMb2NhbCk6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZTo6cmVzb2x2ZVRyZWUpOgorICAgICAgICAqIHN0eWxlL1N0eWxlUmVzb2x2ZVRy
ZWUuaDoKKwogMjAxNC0xMS0wNCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtPU1hdIENKSyBjaGFyYWN0ZXJzIHN0eWxlZCB3aXRoIGZvbnQtZmFt
aWx5OiBjdXJzaXZlIGFyZSBpdGFsaWNpemVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21h
Yy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggYTU0MjBmYjU5
ODdmODAwZDMzNzk0M2JhYTkwYzc1ZGIyMjRjODQxNy4uM2Q2ODQ0NGMzZjBhNDc1Mzk5NzJhOGFl
MTdlZTY0OWY2ZTNiOTUzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE0
LTExLTA0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHB0
cigpIG1ldGhvZCB0byBSZWYgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEzODM2MQorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVy
LgorCisgICAgICAgIFVzZSB0aGUgbmV3IFJlZjo6cHRyKCkgbWV0aG9kLgorCisgICAgICAgICog
V2ViVmlldy9XZWJGcmFtZS5tbToKKyAgICAgICAgKC1bV2ViRnJhbWUgX3NldFR5cGluZ1N0eWxl
OndpdGhVbmRvQWN0aW9uOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXcubW06Cisg
ICAgICAgICgtW1dlYkhUTUxWaWV3IF9hcHBseVN0eWxlVG9TZWxlY3Rpb246d2l0aFVuZG9BY3Rp
b246XSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IF9jaGFuZ2VDU1NDb2xvclVzaW5nU2VsZWN0
b3I6aW5SYW5nZTpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgt
W1dlYlZpZXcgYXBwbHlTdHlsZTpdKToKKwogMjAxNC0xMS0wNCAgRGFyaW4gQWRsZXIgIDxkYXJp
bkBhcHBsZS5jb20+CiAKICAgICAgICAgRWxpbWluYXRlIFJlc291cmNlQnVmZmVyIGFuZCB1c2Ug
U2hhcmVkQnVmZmVyIGRpcmVjdGx5IGluc3RlYWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBmNGUzMWZiYjdhNmM3
MGUxYmVkZDk1MzA5MjY5ZWMwNmE5ZmJkZjVkLi41MDQ2MThkMjZmNjljMTVkYTljOGMxNDRlNzJj
MWU0YTc4NjA4ZmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTQtMTEtMDQgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgcHRyKCkgbWV0aG9k
IHRvIFJlZiBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTM4MzYxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAg
ICAgVXNlIHRoZSBuZXcgUmVmOjpwdHIoKSBtZXRob2QuCisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OmNyZWF0ZVdlYlBh
Z2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OnNldFByZWZlcmVuY2VzKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojpk
aWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQcm94eTo6ZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc1Byb3h5OjpkaWRQZXJmb3JtU2VydmVyUmVkaXJlY3QpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzUHJveHk6OmRpZFVwZGF0ZUhpc3RvcnlUaXRsZSk6CisKIDIwMTQtMTEtMDQg
IEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIEluY2x1ZGUg
YSBXS0FjdGlvblNoZWV0QXNzaXN0YW50IHBhcmFtZXRlciBpbiBXS0FjdGlvblNoZWV0QXNzaXN0
YW50RGVsZWdhdGUgbWV0aG9kcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGFzc1JlZi5o
IGIvU291cmNlL1dURi93dGYvUGFzc1JlZi5oCmluZGV4IDU4NzM3NGM2YzgyNjBlNWI2ZjdjMzc2
NjYzNGY1ZGQ5MDU1NzdlNjIuLmQzNzRhZTVkOTlhNjRmYzE4ZWQ3NjA4MzQ5YWY4MjExOTQ5OTBi
YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1Bhc3NSZWYuaAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9QYXNzUmVmLmgKQEAgLTQ1LDYgKzQ1LDkgQEAgcHVibGljOgogICAgIGNvbnN0IFQmIGdl
dCgpIGNvbnN0OwogICAgIFQmIGdldCgpOwogCisgICAgY29uc3QgVCogcHRyKCkgY29uc3Q7Cisg
ICAgVCogcHRyKCk7CisKICAgICB2b2lkIGRyb3BSZWYoKTsKICAgICBUJiBsZWFrUmVmKCkgV0FS
Tl9VTlVTRURfUkVUVVJOOwogCkBAIC0xMjUsNiArMTI4LDE4IEBAIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+IGlubGluZSBUJiBQYXNzUmVmPFQ+OjpnZXQoKQogICAgIHJldHVybiBtX3JlZmVyZW5jZTsK
IH0KIAordGVtcGxhdGU8dHlwZW5hbWUgVD4gY29uc3QgVCogUGFzc1JlZjxUPjo6cHRyKCkgY29u
c3QKK3sKKyAgICBBU1NFUlQoIW1fZ2F2ZVVwUmVmZXJlbmNlKTsKKyAgICByZXR1cm4gJm1fcmVm
ZXJlbmNlOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUKiBQYXNzUmVmPFQ+OjpwdHIoKQor
eworICAgIEFTU0VSVCghbV9nYXZlVXBSZWZlcmVuY2UpOworICAgIHJldHVybiAmbV9yZWZlcmVu
Y2U7Cit9CisKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBUJiBQYXNzUmVmPFQ+OjpsZWFr
UmVmKCkKIHsKICNpZm5kZWYgTkRFQlVHCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9SZWYu
aCBiL1NvdXJjZS9XVEYvd3RmL1JlZi5oCmluZGV4IGUzZjM0ZGNjZTQzOWExNGY4MDViZjgwYTRm
NmEyNjg2Yjc2ZDE1ZDcuLjY1NDg1YjFmNTEzMmU4NTg4NDlhMDhhNTJlY2ZjZTRhODQ3ZDA3ODMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1JlZi5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1Jl
Zi5oCkBAIC01OCw2ICs1OCw5IEBAIHB1YmxpYzoKICAgICBjb25zdCBUKiBvcGVyYXRvci0+KCkg
Y29uc3QgeyByZXR1cm4gbV9wdHI7IH0KICAgICBUKiBvcGVyYXRvci0+KCkgeyByZXR1cm4gbV9w
dHI7IH0KIAorICAgIGNvbnN0IFQqIHB0cigpIGNvbnN0IHsgcmV0dXJuIG1fcHRyOyB9CisgICAg
VCogcHRyKCkgeyByZXR1cm4gbV9wdHI7IH0KKwogICAgIGNvbnN0IFQmIGdldCgpIGNvbnN0IHsg
cmV0dXJuICptX3B0cjsgfQogICAgIFQmIGdldCgpIHsgcmV0dXJuICptX3B0cjsgfQogCkBAIC04
MCw3ICs4Myw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHRlbXBsYXRlPHR5cGVuYW1lIFU+IGlu
bGluZSBQYXNzUmVmPFQ+IFJlZjxUPjo6cmVwbGFjZShQYXNzCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KIHN0cnVjdCBHZXRQdHJIZWxwZXI8UmVmPFQ+PiB7CiAgICAgdHlwZWRlZiBUKiBQdHJUeXBl
OwotICAgIHN0YXRpYyBUKiBnZXRQdHIoY29uc3QgUmVmPFQ+JiBwKSB7IHJldHVybiBjb25zdF9j
YXN0PFQqPigmcC5nZXQoKSk7IH0KKyAgICBzdGF0aWMgVCogZ2V0UHRyKGNvbnN0IFJlZjxUPiYg
cCkgeyByZXR1cm4gY29uc3RfY2FzdDxUKj4ocC5wdHIoKSk7IH0KIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5TWVudUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5TWVudUxpc3QuY3BwCmluZGV4IDQyZGU4NDYyNTk5ZjQwNjk0ZTVmODE2OTc2MGUxNmJm
Yjc3ODljMjIuLmE5ZGYxZDg4ZDc3YzQ5ODJkMmVjNDQ2MWQ5YzUxNDdhY2I1ZGI5MDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51
TGlzdC5jcHAKQEAgLTEyNSw3ICsxMjUsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlNZW51TGlzdDo6
ZGlkVXBkYXRlQWN0aXZlT3B0aW9uKGludCBvcHRpb25JbmRleCkKICAgICAgICAgICAgIGRvd25j
YXN0PEFjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwPigqY2hpbGRPYmplY3RzWzBdKS5kaWRVcGRh
dGVBY3RpdmVPcHRpb24ob3B0aW9uSW5kZXgpOwogICAgIH0KIAotICAgIGNhY2hlLT5wb3N0Tm90
aWZpY2F0aW9uKHRoaXMsICZkb2N1bWVudC5nZXQoKSwgQVhPYmplY3RDYWNoZTo6QVhNZW51TGlz
dFZhbHVlQ2hhbmdlZCwgVGFyZ2V0RWxlbWVudCwgUG9zdFN5bmNocm9ub3VzbHkpOworICAgIGNh
Y2hlLT5wb3N0Tm90aWZpY2F0aW9uKHRoaXMsIGRvY3VtZW50LnB0cigpLCBBWE9iamVjdENhY2hl
OjpBWE1lbnVMaXN0VmFsdWVDaGFuZ2VkLCBUYXJnZXRFbGVtZW50LCBQb3N0U3luY2hyb25vdXNs
eSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAKaW5kZXggZDcw
ZjBjYzhhOTIzZjMwNTE5NmIyYmFlNmI1NzJiNzUyZTY0Mzc4MS4uMjE5MzVlMWFmOWNlZTllYjc0
ZTliNGJhZTdmZjM0NjYzMjk5MDJhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAKQEAgLTQ5LDcgKzQ5LDcg
QEAgc3RhdGljIEpTVmFsdWUgZ2V0TmFtZWRJdGVtcyhFeGVjU3RhdGUqIGV4ZWMsIEpTSFRNTEFs
bENvbGxlY3Rpb24qIGNvbGxlY3Rpb24sIFAKICAgICBpZiAobmFtZWRJdGVtcy5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIGlmIChuYW1lZEl0ZW1zLnNpemUo
KSA9PSAxKQotICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBjb2xsZWN0aW9uLT5nbG9iYWxPYmpl
Y3QoKSwgJm5hbWVkSXRlbXNbMF0uZ2V0KCkpOworICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBj
b2xsZWN0aW9uLT5nbG9iYWxPYmplY3QoKSwgbmFtZWRJdGVtc1swXS5wdHIoKSk7CiAKICAgICAv
LyBGSVhNRTogSFRNTDUgc3BlY2lmaWNhdGlvbiBzYXlzIHRoaXMgc2hvdWxkIGJlIGEgSFRNTENv
bGxlY3Rpb24uCiAgICAgLy8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1
cnJlbnQtd29yay9tdWx0aXBhZ2UvY29tbW9uLWRvbS1pbnRlcmZhY2VzLmh0bWwjaHRtbGFsbGNv
bGxlY3Rpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZv
cm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbkN1c3RvbS5jcHAKaW5kZXggMmZmYjJhZTJk
OWU0YWE1ZDZjMzYyN2RiMTMyZDI1ZGFmMWY1YjExYy4uNDFlYTYzZDcxNTA5MzFhMjc0ZGUwM2Y1
NTIyN2RkZmM2MWE2MTc2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbkN1c3RvbS5jcHAKQEAg
LTQ3LDcgKzQ3LDcgQEAgc3RhdGljIEpTVmFsdWUgZ2V0TmFtZWRJdGVtcyhFeGVjU3RhdGUqIGV4
ZWMsIEpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24qIGNvbGwKICAgICBpZiAobmFtZWRJdGVt
cy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIGlmIChuYW1l
ZEl0ZW1zLnNpemUoKSA9PSAxKQotICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBjb2xsZWN0aW9u
LT5nbG9iYWxPYmplY3QoKSwgJm5hbWVkSXRlbXNbMF0uZ2V0KCkpOworICAgICAgICByZXR1cm4g
dG9KUyhleGVjLCBjb2xsZWN0aW9uLT5nbG9iYWxPYmplY3QoKSwgbmFtZWRJdGVtc1swXS5wdHIo
KSk7CiAKICAgICBBU1NFUlQoY29sbGVjdGlvbi0+aW1wbCgpLnR5cGUoKSA9PSBGb3JtQ29udHJv
bHMpOwogICAgIHJldHVybiB0b0pTKGV4ZWMsIGNvbGxlY3Rpb24tPmdsb2JhbE9iamVjdCgpLCBj
b2xsZWN0aW9uLT5pbXBsKCkub3duZXJOb2RlKCkucmFkaW9Ob2RlTGlzdChuYW1lKS5nZXQoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVSdWxlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTU3R5bGVSdWxlLmgKaW5kZXggYjQ3ZWQxNzNmMzlhNDU3ODUyZjQyZmRl
ZTBmZWI3MDYwYjdlZmRiZC4uN2Q5ZWE3ODc2MDA5NzQ3YmJlYWQxMzcwOTM0YTdiYzRkMGZiNzAx
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlUnVsZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVJ1bGUuaApAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6
CiAgICAgQ1NTU3R5bGVEZWNsYXJhdGlvbiYgc3R5bGUoKTsKIAogICAgIC8vIEZJWE1FOiBOb3Qg
Q1NTT00uIFJlbW92ZS4KLSAgICBTdHlsZVJ1bGUqIHN0eWxlUnVsZSgpIGNvbnN0IHsgcmV0dXJu
ICZjb25zdF9jYXN0PFN0eWxlUnVsZSY+KG1fc3R5bGVSdWxlLmdldCgpKTsgfQorICAgIFN0eWxl
UnVsZSYgc3R5bGVSdWxlKCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxTdHlsZVJ1bGUmPiht
X3N0eWxlUnVsZS5nZXQoKSk7IH0KIAogcHJpdmF0ZToKICAgICBDU1NTdHlsZVJ1bGUoU3R5bGVS
dWxlJiwgQ1NTU3R5bGVTaGVldCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1N0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCmlu
ZGV4IDIyOWUzN2NlNTI1ZjIyOTc1NGJkMDc2ZDk2MTJjOTY4MDMxMjVjM2EuLmVjMTU3NDAzM2E0
MDNmOWJlYzA0YWE1MDc0NGI0MmY5ODRhNTBmODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVT
aGVldC5jcHAKQEAgLTI5Myw3ICsyOTMsNyBAQCB1bnNpZ25lZCBDU1NTdHlsZVNoZWV0OjppbnNl
cnRSdWxlKGNvbnN0IFN0cmluZyYgcnVsZVN0cmluZywgdW5zaWduZWQgaW5kZXgsIEV4YwogICAg
ICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgQ1NTUGFyc2VyIHAobV9jb250ZW50cy5nZXQoKS5w
YXJzZXJDb250ZXh0KCkpOwotICAgIFJlZlB0cjxTdHlsZVJ1bGVCYXNlPiBydWxlID0gcC5wYXJz
ZVJ1bGUoJm1fY29udGVudHMuZ2V0KCksIHJ1bGVTdHJpbmcpOworICAgIFJlZlB0cjxTdHlsZVJ1
bGVCYXNlPiBydWxlID0gcC5wYXJzZVJ1bGUobV9jb250ZW50cy5wdHIoKSwgcnVsZVN0cmluZyk7
CiAKICAgICBpZiAoIXJ1bGUpIHsKICAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1ZhbHVlTGlzdC5oCmluZGV4IDk5MTI5ZjllNWI3YWRkZTVkZTM5YWEzNTJiMDY5ZGQ4Mjkw
MzA0MzQuLmM4OWY5NTgyZWI1ZTQ4NzA2YzhhNmYzNWEzMGQyNjAxNTc2M2NlYWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTVmFsdWVMaXN0LmgKQEAgLTUyLDEwICs1MiwxMCBAQCBwdWJsaWM6CiAgICAgfQog
CiAgICAgc2l6ZV90IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWVzLnNpemUoKTsgfQot
ICAgIENTU1ZhbHVlKiBpdGVtKHNpemVfdCBpbmRleCkgeyByZXR1cm4gaW5kZXggPCBtX3ZhbHVl
cy5zaXplKCkgPyAmbV92YWx1ZXNbaW5kZXhdLmdldCgpIDogbnVsbHB0cjsgfQotICAgIGNvbnN0
IENTU1ZhbHVlKiBpdGVtKHNpemVfdCBpbmRleCkgY29uc3QgeyByZXR1cm4gaW5kZXggPCBtX3Zh
bHVlcy5zaXplKCkgPyAmbV92YWx1ZXNbaW5kZXhdLmdldCgpIDogbnVsbHB0cjsgfQotICAgIENT
U1ZhbHVlKiBpdGVtV2l0aG91dEJvdW5kc0NoZWNrKHNpemVfdCBpbmRleCkgeyByZXR1cm4gJm1f
dmFsdWVzW2luZGV4XS5nZXQoKTsgfQotICAgIGNvbnN0IENTU1ZhbHVlKiBpdGVtV2l0aG91dEJv
dW5kc0NoZWNrKHNpemVfdCBpbmRleCkgY29uc3QgeyBBU1NFUlQoaW5kZXggPCBtX3ZhbHVlcy5z
aXplKCkpOyByZXR1cm4gJm1fdmFsdWVzW2luZGV4XS5nZXQoKTsgfQorICAgIENTU1ZhbHVlKiBp
dGVtKHNpemVfdCBpbmRleCkgeyByZXR1cm4gaW5kZXggPCBtX3ZhbHVlcy5zaXplKCkgPyBtX3Zh
bHVlc1tpbmRleF0ucHRyKCkgOiBudWxscHRyOyB9CisgICAgY29uc3QgQ1NTVmFsdWUqIGl0ZW0o
c2l6ZV90IGluZGV4KSBjb25zdCB7IHJldHVybiBpbmRleCA8IG1fdmFsdWVzLnNpemUoKSA/IG1f
dmFsdWVzW2luZGV4XS5wdHIoKSA6IG51bGxwdHI7IH0KKyAgICBDU1NWYWx1ZSogaXRlbVdpdGhv
dXRCb3VuZHNDaGVjayhzaXplX3QgaW5kZXgpIHsgcmV0dXJuIG1fdmFsdWVzW2luZGV4XS5wdHIo
KTsgfQorICAgIGNvbnN0IENTU1ZhbHVlKiBpdGVtV2l0aG91dEJvdW5kc0NoZWNrKHNpemVfdCBp
bmRleCkgY29uc3QgeyBBU1NFUlQoaW5kZXggPCBtX3ZhbHVlcy5zaXplKCkpOyByZXR1cm4gbV92
YWx1ZXNbaW5kZXhdLnB0cigpOyB9CiAKICAgICBjb25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0
IHsgcmV0dXJuIG1fdmFsdWVzLmJlZ2luKCk7IH0KICAgICBjb25zdF9pdGVyYXRvciBlbmQoKSBj
b25zdCB7IHJldHVybiBtX3ZhbHVlcy5lbmQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0luc3BlY3RvckNTU09NV3JhcHBlcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0lu
c3BlY3RvckNTU09NV3JhcHBlcnMuY3BwCmluZGV4IGZkMTM3MDM2MjQ0ZGQ0ZDMzN2JiOWU2MThh
ZTVkNTJjMDJlNDU5ZTYuLmE0MWU0MGJjYjJkNGJmMmVmMDM2MmQ2MjFjMjRmNDgzNGI1NTRlYzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9JbnNwZWN0b3JDU1NPTVdyYXBwZXJzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvSW5zcGVjdG9yQ1NTT01XcmFwcGVycy5jcHAKQEAg
LTcyLDcgKzcyLDcgQEAgdm9pZCBJbnNwZWN0b3JDU1NPTVdyYXBwZXJzOjpjb2xsZWN0KExpc3RU
eXBlKiBsaXN0VHlwZSkKICAgICAgICAgICAgIGJyZWFrOwogI2VuZGlmCiAgICAgICAgIGNhc2Ug
Q1NTUnVsZTo6U1RZTEVfUlVMRToKLSAgICAgICAgICAgIG1fc3R5bGVSdWxlVG9DU1NPTVdyYXBw
ZXJNYXAuYWRkKGRvd25jYXN0PENTU1N0eWxlUnVsZT4oKmNzc1J1bGUpLnN0eWxlUnVsZSgpLCBk
b3duY2FzdDxDU1NTdHlsZVJ1bGU+KGNzc1J1bGUpKTsKKyAgICAgICAgICAgIG1fc3R5bGVSdWxl
VG9DU1NPTVdyYXBwZXJNYXAuYWRkKCZkb3duY2FzdDxDU1NTdHlsZVJ1bGU+KCpjc3NSdWxlKS5z
dHlsZVJ1bGUoKSwgZG93bmNhc3Q8Q1NTU3R5bGVSdWxlPihjc3NSdWxlKSk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTGlzdE11dGF0aW9uU2NvcGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL0NoaWxkTGlzdE11dGF0aW9uU2NvcGUuY3BwCmluZGV4IGNiNWMyYjA1MTQw
YmJkODZjYTU5OTZlNjdkYmNlNzI0OWM0YzE1NDkuLmUwYWMxM2U1YWQyNjdkNzVkYmQ1ZjQ2ODk3
MjliODRkZWNjYTc0NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGlsZExpc3RN
dXRhdGlvblNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGRMaXN0TXV0YXRp
b25TY29wZS5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgQ2hpbGRMaXN0TXV0YXRpb25BY2N1bXVsYXRv
cjo6fkNoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0b3IoKQogewogICAgIGlmICghaXNFbXB0eSgp
KQogICAgICAgICBlbnF1ZXVlTXV0YXRpb25SZWNvcmQoKTsKLSAgICBhY2N1bXVsYXRvck1hcCgp
LnJlbW92ZSgmbV90YXJnZXQuZ2V0KCkpOworICAgIGFjY3VtdWxhdG9yTWFwKCkucmVtb3ZlKG1f
dGFyZ2V0LnB0cigpKTsKIH0KIAogUGFzc1JlZlB0cjxDaGlsZExpc3RNdXRhdGlvbkFjY3VtdWxh
dG9yPiBDaGlsZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9yOjpnZXRPckNyZWF0ZShDb250YWluZXJO
b2RlJiB0YXJnZXQpCkBAIC05Myw3ICs5Myw3IEBAIHZvaWQgQ2hpbGRMaXN0TXV0YXRpb25BY2N1
bXVsYXRvcjo6Y2hpbGRBZGRlZChOb2RlJiBjaGlsZFJlZikKICAgICAgICAgbV9uZXh0U2libGlu
ZyA9IGNoaWxkLT5uZXh0U2libGluZygpOwogICAgIH0KIAotICAgIG1fbGFzdEFkZGVkID0gJmNo
aWxkLmdldCgpOworICAgIG1fbGFzdEFkZGVkID0gY2hpbGQucHRyKCk7CiAgICAgbV9hZGRlZE5v
ZGVzLmFwcGVuZChjaGlsZC5nZXQoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9DaGlsZE5vZGVMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGlsZE5vZGVMaXN0
LmNwcAppbmRleCBiNjkzYmNkOTRhOTc3YTE0MjZhMmFlY2Y2NzJmNGYyMTAwMDQ3NTEzLi5kZWY5
ZWIyMjM5NzVkYjc2ZmUzZTQ0YWE4OTk2MmYyMjY4YzQ2MGE0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ2hpbGROb2RlTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0No
aWxkTm9kZUxpc3QuY3BwCkBAIC04Niw3ICs4Niw3IEBAIE5vZGUqIENoaWxkTm9kZUxpc3Q6Om5h
bWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0CiAgICAgLy8gRklYTUU6IEFj
Y29yZGluZyB0byB0aGUgc3BlYyBjaGlsZCBub2RlIGxpc3Qgc2hvdWxkIG5vdCBoYXZlIG5hbWVk
SXRlbSgpLgogICAgIGlmIChtX3BhcmVudC5nZXQoKS5pbkRvY3VtZW50KCkpIHsKICAgICAgICAg
RWxlbWVudCogZWxlbWVudCA9IG1fcGFyZW50LmdldCgpLnRyZWVTY29wZSgpLmdldEVsZW1lbnRC
eUlkKG5hbWUpOwotICAgICAgICBpZiAoZWxlbWVudCAmJiBlbGVtZW50LT5wYXJlbnROb2RlKCkg
PT0gJm1fcGFyZW50LmdldCgpKQorICAgICAgICBpZiAoZWxlbWVudCAmJiBlbGVtZW50LT5wYXJl
bnROb2RlKCkgPT0gbV9wYXJlbnQucHRyKCkpCiAgICAgICAgICAgICByZXR1cm4gZWxlbWVudDsK
ICAgICAgICAgaWYgKCFlbGVtZW50IHx8ICFtX3BhcmVudC5nZXQoKS50cmVlU2NvcGUoKS5jb250
YWluc011bHRpcGxlRWxlbWVudHNXaXRoSWQobmFtZSkpCiAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAppbmRleCAyOWM2YmVlMzg3ODM0
MDQ4OTZlM2M2NTcxYzk5MDExZTc0ZGQwMjE5Li4zZDQxZDE4MzY0ZmNhZjdiY2YyNmNkN2NkODVl
MWM3NDFkNDZkYjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9k
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCkBAIC01MzQs
NyArNTM0LDcgQEAgYm9vbCBDb250YWluZXJOb2RlOjpyZW1vdmVDaGlsZChOb2RlKiBvbGRDaGls
ZCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAKICAgICBSZWY8Tm9kZT4gY2hpbGQoKm9sZENoaWxkKTsK
IAotICAgIGRvY3VtZW50KCkucmVtb3ZlRm9jdXNlZE5vZGVPZlN1YnRyZWUoJmNoaWxkLmdldCgp
KTsKKyAgICBkb2N1bWVudCgpLnJlbW92ZUZvY3VzZWROb2RlT2ZTdWJ0cmVlKGNoaWxkLnB0cigp
KTsKIAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICBkb2N1bWVudCgpLnJlbW92ZUZ1
bGxTY3JlZW5FbGVtZW50T2ZTdWJ0cmVlKCZjaGlsZC5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ3VycmVudFNjcmlwdEluY3JlbWVudGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ3VycmVudFNjcmlwdEluY3JlbWVudGVyLmgKaW5kZXggYTNjZjhmNDcwYzljNDM1OWNi
NzNiMzgzMGUxNjVhNWY1Mzk0MmRiNS4uMDUyM2NhYTAyMzQxMTljZDk3Y2U2NjczOGI1NTc2Y2E5
MDU2ZTIwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0N1cnJlbnRTY3JpcHRJbmNy
ZW1lbnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXJyZW50U2NyaXB0SW5jcmVtZW50
ZXIuaApAQCAtMzcsMjIgKzM3LDIyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEN1cnJl
bnRTY3JpcHRJbmNyZW1lbnRlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ3VycmVudFNj
cmlwdEluY3JlbWVudGVyKTsKIHB1YmxpYzoKLSAgICBDdXJyZW50U2NyaXB0SW5jcmVtZW50ZXIo
RG9jdW1lbnQqIGRvY3VtZW50LCBFbGVtZW50KiBlbGVtZW50KQorICAgIEN1cnJlbnRTY3JpcHRJ
bmNyZW1lbnRlcihEb2N1bWVudCYgZG9jdW1lbnQsIEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgICAg
IDogbV9kb2N1bWVudChkb2N1bWVudCkKICAgICAgICAgLCBtX2lzSFRNTFNjcmlwdEVsZW1lbnQo
aXM8SFRNTFNjcmlwdEVsZW1lbnQ+KCplbGVtZW50KSkKICAgICB7CiAgICAgICAgIGlmIChtX2lz
SFRNTFNjcmlwdEVsZW1lbnQpCi0gICAgICAgICAgICBtX2RvY3VtZW50LT5wdXNoQ3VycmVudFNj
cmlwdChkb3duY2FzdDxIVE1MU2NyaXB0RWxlbWVudD4oZWxlbWVudCkpOworICAgICAgICAgICAg
bV9kb2N1bWVudC5wdXNoQ3VycmVudFNjcmlwdChkb3duY2FzdDxIVE1MU2NyaXB0RWxlbWVudD4o
ZWxlbWVudCkpOwogICAgIH0KIAogICAgIH5DdXJyZW50U2NyaXB0SW5jcmVtZW50ZXIoKQogICAg
IHsKICAgICAgICAgaWYgKG1faXNIVE1MU2NyaXB0RWxlbWVudCkKLSAgICAgICAgICAgIG1fZG9j
dW1lbnQtPnBvcEN1cnJlbnRTY3JpcHQoKTsKKyAgICAgICAgICAgIG1fZG9jdW1lbnQucG9wQ3Vy
cmVudFNjcmlwdCgpOwogICAgIH0KIAogcHJpdmF0ZToKLSAgICBEb2N1bWVudCogbV9kb2N1bWVu
dDsKKyAgICBEb2N1bWVudCYgbV9kb2N1bWVudDsKICAgICBib29sIG1faXNIVE1MU2NyaXB0RWxl
bWVudDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvblJlY29y
ZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25SZWNvcmQuY3BwCmluZGV4IDVhNDdm
YzAwMWMxNWEyOGU5NThkZTZmMjQ1Y2IxZTkzYTcyMzgwNzEuLjk1ZmNlYzJmM2YwM2YzMTZjYTll
MzA5MDQyNTlmNWNjY2QzYThhMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRh
dGlvblJlY29yZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uUmVjb3JkLmNw
cApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCBjb25z
dCBBdG9taWNTdHJpbmcmIHR5cGUoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIE5vZGUqIHRhcmdl
dCgpIG92ZXJyaWRlIHsgcmV0dXJuICZtX3RhcmdldC5nZXQoKTsgfQorICAgIHZpcnR1YWwgTm9k
ZSogdGFyZ2V0KCkgb3ZlcnJpZGUgeyByZXR1cm4gbV90YXJnZXQucHRyKCk7IH0KICAgICB2aXJ0
dWFsIE5vZGVMaXN0KiBhZGRlZE5vZGVzKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9hZGRlZE5vZGVz
LmdldCgpOyB9CiAgICAgdmlydHVhbCBOb2RlTGlzdCogcmVtb3ZlZE5vZGVzKCkgb3ZlcnJpZGUg
eyByZXR1cm4gbV9yZW1vdmVkTm9kZXMuZ2V0KCk7IH0KICAgICB2aXJ0dWFsIE5vZGUqIHByZXZp
b3VzU2libGluZygpIG92ZXJyaWRlIHsgcmV0dXJuIG1fcHJldmlvdXNTaWJsaW5nLmdldCgpOyB9
CkBAIC03NCw3ICs3NCw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgdmlydHVh
bCBOb2RlKiB0YXJnZXQoKSBvdmVycmlkZSB7IHJldHVybiAmbV90YXJnZXQuZ2V0KCk7IH0KKyAg
ICB2aXJ0dWFsIE5vZGUqIHRhcmdldCgpIG92ZXJyaWRlIHsgcmV0dXJuIG1fdGFyZ2V0LnB0cigp
OyB9CiAgICAgdmlydHVhbCBTdHJpbmcgb2xkVmFsdWUoKSBvdmVycmlkZSB7IHJldHVybiBtX29s
ZFZhbHVlOyB9CiAgICAgdmlydHVhbCBOb2RlTGlzdCogYWRkZWROb2RlcygpIG92ZXJyaWRlIHsg
cmV0dXJuIGxhemlseUluaXRpYWxpemVFbXB0eU5vZGVMaXN0KG1fYWRkZWROb2Rlcyk7IH0KICAg
ICB2aXJ0dWFsIE5vZGVMaXN0KiByZW1vdmVkTm9kZXMoKSBvdmVycmlkZSB7IHJldHVybiBsYXpp
bHlJbml0aWFsaXplRW1wdHlOb2RlTGlzdChtX3JlbW92ZWROb2Rlcyk7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlUmFyZURhdGEuaAppbmRleCA1Yjc0YmM5YjQyZjA1YmI0YmUxNDVhZWIxNmUyZGM1N2JjNTJl
ODE2Li45NzZhNDY0NGEwNWE3NjE3YTliZjAwZjYyNzliN2Y1YjYxN2RkMzAwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL05vZGVSYXJlRGF0YS5oCkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYg
KG1fY2hpbGROb2RlTGlzdCkKICAgICAgICAgICAgIHJldHVybiAqbV9jaGlsZE5vZGVMaXN0Owog
ICAgICAgICBhdXRvIGxpc3QgPSBDaGlsZE5vZGVMaXN0OjpjcmVhdGUobm9kZSk7Ci0gICAgICAg
IG1fY2hpbGROb2RlTGlzdCA9ICZsaXN0LmdldCgpOworICAgICAgICBtX2NoaWxkTm9kZUxpc3Qg
PSBsaXN0LnB0cigpOwogICAgICAgICByZXR1cm4gbGlzdDsKICAgICB9CiAKQEAgLTkzLDcgKzkz
LDcgQEAgcHVibGljOgogICAgICAgICBpZiAobV9lbXB0eUNoaWxkTm9kZUxpc3QpCiAgICAgICAg
ICAgICByZXR1cm4gKm1fZW1wdHlDaGlsZE5vZGVMaXN0OwogICAgICAgICBhdXRvIGxpc3QgPSBF
bXB0eU5vZGVMaXN0OjpjcmVhdGUobm9kZSk7Ci0gICAgICAgIG1fZW1wdHlDaGlsZE5vZGVMaXN0
ID0gJmxpc3QuZ2V0KCk7CisgICAgICAgIG1fZW1wdHlDaGlsZE5vZGVMaXN0ID0gbGlzdC5wdHIo
KTsKICAgICAgICAgcmV0dXJuIGxpc3Q7CiAgICAgfQogCkBAIC0xMzgsNyArMTM4LDcgQEAgcHVi
bGljOgogICAgICAgICAgICAgcmV0dXJuICpyZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwogCiAgICAg
ICAgIGF1dG8gbGlzdCA9IFRhZ05vZGVMaXN0OjpjcmVhdGUobm9kZSwgbmFtZXNwYWNlVVJJLCBs
b2NhbE5hbWUpOwotICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gJmxpc3QuZ2V0KCk7
CisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBsaXN0LnB0cigpOwogICAgICAgICBy
ZXR1cm4gbGlzdDsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5n
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwCmluZGV4IDZlNGY0MWE2NjA4ZmYy
YjEyOTRlZjRhMDcwMDcwYjdmMTNkZmYyZWEuLmQ3MGFkOTFhMGIyMGU0ZmNlOWJjODM0NmIxNTY2
Y2Y5ODY0ZDY3ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNwcApAQCAtMTI4LDcgKzEyOCw3IEBAIFJhbmdl
Ojp+UmFuZ2UoKQogCiB2b2lkIFJhbmdlOjpzZXREb2N1bWVudChEb2N1bWVudCYgZG9jdW1lbnQp
CiB7Ci0gICAgQVNTRVJUKCZtX293bmVyRG9jdW1lbnQuZ2V0KCkgIT0gJmRvY3VtZW50KTsKKyAg
ICBBU1NFUlQobV9vd25lckRvY3VtZW50LnB0cigpICE9ICZkb2N1bWVudCk7CiAgICAgbV9vd25l
ckRvY3VtZW50LT5kZXRhY2hSYW5nZSh0aGlzKTsKICAgICBtX293bmVyRG9jdW1lbnQgPSBkb2N1
bWVudDsKICAgICBtX3N0YXJ0LnNldFRvU3RhcnRPZk5vZGUoJmRvY3VtZW50KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TY3JpcHRFbGVtZW50LmNwcAppbmRleCBkYjFjZmI4YTNmY2JkOTczOGFkYmFiMzczNzUw
NzQ4YWFmZWUwZjVlLi5mOGRjNzBhODA0NDcwYzc1NmIzOWY1ZDAwMWZkMWQyMmNmNWMwMGQxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCkBAIC0yNDUsNyArMjQ1LDcgQEAgYm9v
bCBTY3JpcHRFbGVtZW50OjpyZXF1ZXN0U2NyaXB0KGNvbnN0IFN0cmluZyYgc291cmNlVXJsKQog
ICAgIFJlZjxEb2N1bWVudD4gb3JpZ2luYWxEb2N1bWVudChtX2VsZW1lbnQuZG9jdW1lbnQoKSk7
CiAgICAgaWYgKCFtX2VsZW1lbnQuZGlzcGF0Y2hCZWZvcmVMb2FkRXZlbnQoc291cmNlVXJsKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghbV9lbGVtZW50LmluRG9jdW1lbnQoKSB8
fCAmbV9lbGVtZW50LmRvY3VtZW50KCkgIT0gJm9yaWdpbmFsRG9jdW1lbnQuZ2V0KCkpCisgICAg
aWYgKCFtX2VsZW1lbnQuaW5Eb2N1bWVudCgpIHx8ICZtX2VsZW1lbnQuZG9jdW1lbnQoKSAhPSBv
cmlnaW5hbERvY3VtZW50LnB0cigpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBBU1NF
UlQoIW1fY2FjaGVkU2NyaXB0KTsKQEAgLTI5Miw4ICsyOTIsOCBAQCB2b2lkIFNjcmlwdEVsZW1l
bnQ6OmV4ZWN1dGVTY3JpcHQoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSkKIAog
ICAgIFJlZjxEb2N1bWVudD4gZG9jdW1lbnQobV9lbGVtZW50LmRvY3VtZW50KCkpOwogICAgIGlm
IChGcmFtZSogZnJhbWUgPSBkb2N1bWVudC0+ZnJhbWUoKSkgewotICAgICAgICBJZ25vcmVEZXN0
cnVjdGl2ZVdyaXRlQ291bnRJbmNyZW1lbnRlciBpZ25vcmVEZXNjdHJ1Y3RpdmVXcml0ZUNvdW50
SW5jcmVtZW50ZXIobV9pc0V4dGVybmFsU2NyaXB0ID8gJmRvY3VtZW50LmdldCgpIDogMCk7Ci0g
ICAgICAgIEN1cnJlbnRTY3JpcHRJbmNyZW1lbnRlciBjdXJyZW50U2NyaXB0SW5jcmVtZW50ZXIo
JmRvY3VtZW50LmdldCgpLCAmbV9lbGVtZW50KTsKKyAgICAgICAgSWdub3JlRGVzdHJ1Y3RpdmVX
cml0ZUNvdW50SW5jcmVtZW50ZXIgaWdub3JlRGVzY3RydWN0aXZlV3JpdGVDb3VudEluY3JlbWVu
dGVyKG1faXNFeHRlcm5hbFNjcmlwdCA/IGRvY3VtZW50LnB0cigpIDogbnVsbHB0cik7CisgICAg
ICAgIEN1cnJlbnRTY3JpcHRJbmNyZW1lbnRlciBjdXJyZW50U2NyaXB0SW5jcmVtZW50ZXIoZG9j
dW1lbnQsICZtX2VsZW1lbnQpOwogCiAgICAgICAgIC8vIENyZWF0ZSBhIHNjcmlwdCBmcm9tIHRo
ZSBzY3JpcHQgZWxlbWVudCBub2RlLCB1c2luZyB0aGUgc2NyaXB0CiAgICAgICAgIC8vIGJsb2Nr
J3Mgc291cmNlIGFuZCB0aGUgc2NyaXB0IGJsb2NrJ3MgdHlwZS4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TdGF0aWNOb2RlTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3Rh
dGljTm9kZUxpc3QuY3BwCmluZGV4IDk0OTY3YjdiZWZkYzE4ZTE4MjA0YjI1Mzc5ZmRhNGY5NTY5
YWFmNmYuLmRkNzBlZTkxZWIyMTEwOGM1OWZiZTE3MGMxMGU0ZTdhNzkyMThiNzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdGF0aWNOb2RlTGlzdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL1N0YXRpY05vZGVMaXN0LmNwcApAQCAtMzksNyArMzksNyBAQCB1bnNpZ25lZCBT
dGF0aWNOb2RlTGlzdDo6bGVuZ3RoKCkgY29uc3QKIE5vZGUqIFN0YXRpY05vZGVMaXN0OjppdGVt
KHVuc2lnbmVkIGluZGV4KSBjb25zdAogewogICAgIGlmIChpbmRleCA8IG1fbm9kZXMuc2l6ZSgp
KQotICAgICAgICByZXR1cm4gJmNvbnN0X2Nhc3Q8Tm9kZSY+KG1fbm9kZXNbaW5kZXhdLmdldCgp
KTsKKyAgICAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8Tm9kZSo+KG1fbm9kZXNbaW5kZXhdLnB0cigp
KTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApAQCAtNjEsNyArNjEsNyBAQCB1bnNpZ25lZCBT
dGF0aWNFbGVtZW50TGlzdDo6bGVuZ3RoKCkgY29uc3QKIE5vZGUqIFN0YXRpY0VsZW1lbnRMaXN0
OjppdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdAogewogICAgIGlmIChpbmRleCA8IG1fZWxlbWVu
dHMuc2l6ZSgpKQotICAgICAgICByZXR1cm4gJmNvbnN0X2Nhc3Q8RWxlbWVudCY+KG1fZWxlbWVu
dHNbaW5kZXhdLmdldCgpKTsKKyAgICAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8RWxlbWVudCo+KG1f
ZWxlbWVudHNbaW5kZXhdLnB0cigpKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAppbmRleCA2NWU0
YTYwOGYwNGZiYjk5ODFmMzYzNjQ3ZmQwMTU0MDQzNjAwZGVmLi42MmY2YTQzZjBkYjMwMTg0YjZl
MGUzZDhkY2UxNjViZTU1YWVmNGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Nv
bXBvc2l0ZUVkaXRDb21tYW5kLmNwcApAQCAtNDM2LDkgKzQzNiw5IEBAIHZvaWQgQ29tcG9zaXRl
RWRpdENvbW1hbmQ6Om1vdmVSZW1haW5pbmdTaWJsaW5nc1RvTmV3UGFyZW50KE5vZGUqIG5vZGUs
IE5vZGUqIHBhCiAgICAgZm9yICg7IG5vZGUgJiYgbm9kZSAhPSBwYXN0TGFzdE5vZGVUb01vdmU7
IG5vZGUgPSBub2RlLT5uZXh0U2libGluZygpKQogICAgICAgICBub2Rlc1RvUmVtb3ZlLmFwcGVu
ZCgqbm9kZSk7CiAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbm9kZXNUb1JlbW92ZS5z
aXplKCk7IGkrKykgewotICAgICAgICByZW1vdmVOb2RlKCZub2Rlc1RvUmVtb3ZlW2ldLmdldCgp
KTsKLSAgICAgICAgYXBwZW5kTm9kZSgmbm9kZXNUb1JlbW92ZVtpXS5nZXQoKSwgbmV3UGFyZW50
KTsKKyAgICBmb3IgKGF1dG8mIG5vZGVUb1JlbW92ZSA6IG5vZGVzVG9SZW1vdmUpIHsKKyAgICAg
ICAgcmVtb3ZlTm9kZShub2RlVG9SZW1vdmUucHRyKCkpOworICAgICAgICBhcHBlbmROb2RlKG5v
ZGVUb1JlbW92ZS5wdHIoKSwgbmV3UGFyZW50KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRGljdGF0aW9uQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0RpY3RhdGlvbkNvbW1hbmQuY3BwCmluZGV4IDcyMjg4MjU5MWVjZWVhZDMyNDll
ZmU2NjcxYmI5YWRiNjM2ZjA4M2IuLjg4ODY2ZThkMDMwMzllMzcwNmVmZmVjYWMxYmFmYTFlNDNm
ZjM2MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGljdGF0aW9uQ29tbWFu
ZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EaWN0YXRpb25Db21tYW5kLmNwcApA
QCAtODYsOSArODYsOSBAQCBEaWN0YXRpb25Db21tYW5kOjpEaWN0YXRpb25Db21tYW5kKERvY3Vt
ZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdAogewogfQogCi12b2lkIERp
Y3RhdGlvbkNvbW1hbmQ6Omluc2VydFRleHQoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBTdHJp
bmcmIHRleHQsIGNvbnN0IFZlY3RvcjxEaWN0YXRpb25BbHRlcm5hdGl2ZT4mIGFsdGVybmF0aXZl
cywgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uRm9ySW5zZXJ0aW9uKQordm9pZCBE
aWN0YXRpb25Db21tYW5kOjppbnNlcnRUZXh0KERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3Ry
aW5nJiB0ZXh0LCBjb25zdCBWZWN0b3I8RGljdGF0aW9uQWx0ZXJuYXRpdmU+JiBhbHRlcm5hdGl2
ZXMsIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbkZvckluc2VydGlvbikKIHsKLSAg
ICBSZWZQdHI8RnJhbWU+IGZyYW1lID0gZG9jdW1lbnQtPmZyYW1lKCk7CisgICAgUmVmUHRyPEZy
YW1lPiBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCk7CiAgICAgQVNTRVJUKGZyYW1lKTsKIAogICAg
IFZpc2libGVTZWxlY3Rpb24gY3VycmVudFNlbGVjdGlvbiA9IGZyYW1lLT5zZWxlY3Rpb24oKS5z
ZWxlY3Rpb24oKTsKQEAgLTk3LDExICs5NywxMSBAQCB2b2lkIERpY3RhdGlvbkNvbW1hbmQ6Omlu
c2VydFRleHQoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0CiAK
ICAgICBSZWZQdHI8RGljdGF0aW9uQ29tbWFuZD4gY21kOwogICAgIGlmIChuZXdUZXh0ID09IHRl
eHQpCi0gICAgICAgIGNtZCA9IERpY3RhdGlvbkNvbW1hbmQ6OmNyZWF0ZSgqZG9jdW1lbnQsIG5l
d1RleHQsIGFsdGVybmF0aXZlcyk7CisgICAgICAgIGNtZCA9IERpY3RhdGlvbkNvbW1hbmQ6OmNy
ZWF0ZShkb2N1bWVudCwgbmV3VGV4dCwgYWx0ZXJuYXRpdmVzKTsKICAgICBlbHNlCiAgICAgICAg
IC8vIElmIHRoZSB0ZXh0IHdhcyBtb2RpZmllZCBiZWZvcmUgaW5zZXJ0aW9uLCB0aGUgbG9jYXRp
b24gb2YgZGljdGF0aW9uIGFsdGVybmF0aXZlcwogICAgICAgICAvLyB3aWxsIG5vdCBiZSB2YWxp
ZCBhbnltb3JlLiBXZSB3aWxsIGp1c3QgZHJvcCB0aGUgYWx0ZXJuYXRpdmVzLgotICAgICAgICBj
bWQgPSBEaWN0YXRpb25Db21tYW5kOjpjcmVhdGUoKmRvY3VtZW50LCBuZXdUZXh0LCBWZWN0b3I8
RGljdGF0aW9uQWx0ZXJuYXRpdmU+KCkpOworICAgICAgICBjbWQgPSBEaWN0YXRpb25Db21tYW5k
OjpjcmVhdGUoZG9jdW1lbnQsIG5ld1RleHQsIFZlY3RvcjxEaWN0YXRpb25BbHRlcm5hdGl2ZT4o
KSk7CiAgICAgYXBwbHlUZXh0SW5zZXJ0aW9uQ29tbWFuZChmcmFtZS5nZXQoKSwgY21kLCBzZWxl
Y3Rpb25Gb3JJbnNlcnRpb24sIGN1cnJlbnRTZWxlY3Rpb24pOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RpY3RhdGlvbkNvbW1hbmQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRGljdGF0aW9uQ29tbWFuZC5oCmluZGV4IDFkZWUxOWJmMmEyNmNkMGY3MDQzMGY4
OWY3MGEyMzQ3YjMzODgzOWYuLmQ0ZjZkNDVkODgwYTcyODRlNjAyZTA0ZDhkYmYwNjY1MGRlYTY2
ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGljdGF0aW9uQ29tbWFuZC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGljdGF0aW9uQ29tbWFuZC5oCkBAIC0zNiw3
ICszNiw3IEBAIGNsYXNzIERvY3VtZW50TWFya2VyOwogY2xhc3MgRGljdGF0aW9uQ29tbWFuZCA6
IHB1YmxpYyBUZXh0SW5zZXJ0aW9uQmFzZUNvbW1hbmQgewogICAgIGZyaWVuZCBjbGFzcyBEaWN0
YXRpb25Db21tYW5kTGluZU9wZXJhdGlvbjsKIHB1YmxpYzoKLSAgICBzdGF0aWMgdm9pZCBpbnNl
cnRUZXh0KERvY3VtZW50KiwgY29uc3QgU3RyaW5nJiwgY29uc3QgVmVjdG9yPERpY3RhdGlvbkFs
dGVybmF0aXZlPiYgYWx0ZXJuYXRpdmVzLCBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJik7CisgICAg
c3RhdGljIHZvaWQgaW5zZXJ0VGV4dChEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFZl
Y3RvcjxEaWN0YXRpb25BbHRlcm5hdGl2ZT4mIGFsdGVybmF0aXZlcywgY29uc3QgVmlzaWJsZVNl
bGVjdGlvbiYpOwogICAgIHZpcnR1YWwgYm9vbCBpc0RpY3RhdGlvbkNvbW1hbmQoKSBjb25zdCB7
IHJldHVybiB0cnVlOyB9CiBwcml2YXRlOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPERpY3RhdGlv
bkNvbW1hbmQ+IGNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgdGV4dCwg
Y29uc3QgVmVjdG9yPERpY3RhdGlvbkFsdGVybmF0aXZlPiYgYWx0ZXJuYXRpdmVzKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDg0YThkZDFmYjIxMWRkMDQzZGUyODE2ZGUwMmU2ZjEw
MzA1NDFjNTAuLjQwZjczM2I5ZWU0ZjIwN2YxZDA0N2Y0MjQ1MGJiNmE1NWNhMmI5ZjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTEyMTQsNyArMTIxNCw3IEBAIGJvb2wgRWRpdG9y
OjppbnNlcnRUZXh0V2l0aG91dFNlbmRpbmdUZXh0RXZlbnQoY29uc3QgU3RyaW5nJiB0ZXh0LCBi
b29sIHNlbGVjdEluCiAKICAgICAgICAgICAgIC8vIEluc2VydCB0aGUgdGV4dAogICAgICAgICAg
ICAgaWYgKHRyaWdnZXJpbmdFdmVudCAmJiB0cmlnZ2VyaW5nRXZlbnQtPmlzRGljdGF0aW9uKCkp
Ci0gICAgICAgICAgICAgICAgRGljdGF0aW9uQ29tbWFuZDo6aW5zZXJ0VGV4dCgmZG9jdW1lbnQu
Z2V0KCksIHRleHQsIHRyaWdnZXJpbmdFdmVudC0+ZGljdGF0aW9uQWx0ZXJuYXRpdmVzKCksIHNl
bGVjdGlvbik7CisgICAgICAgICAgICAgICAgRGljdGF0aW9uQ29tbWFuZDo6aW5zZXJ0VGV4dChk
b2N1bWVudCwgdGV4dCwgdHJpZ2dlcmluZ0V2ZW50LT5kaWN0YXRpb25BbHRlcm5hdGl2ZXMoKSwg
c2VsZWN0aW9uKTsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIFR5cGluZ0Nv
bW1hbmQ6Ok9wdGlvbnMgb3B0aW9ucyA9IDA7CiAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdElu
c2VydGVkVGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZU5v
ZGVXaXRoU3BhbkNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlTm9k
ZVdpdGhTcGFuQ29tbWFuZC5jcHAKaW5kZXggZDQxN2VkNTM4NzRlYzk0OWY0YzgxYzdkYzAxYzE1
Y2EwM2UyMWJiMS4uMGUxODliZGVmNjdkM2YzZGU3MjQ2ZDcxYWFjN2Q0MDg3OTA3ZmRmZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlTm9kZVdpdGhTcGFuQ29tbWFu
ZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlTm9kZVdpdGhTcGFuQ29t
bWFuZC5jcHAKQEAgLTU3LDggKzU3LDggQEAgc3RhdGljIHZvaWQgc3dhcEluTm9kZVByZXNlcnZp
bmdBdHRyaWJ1dGVzQW5kQ2hpbGRyZW4oSFRNTEVsZW1lbnQqIG5ld05vZGUsIEhUTUwKICAgICBu
ZXdOb2RlLT5jbG9uZURhdGFGcm9tRWxlbWVudCgqbm9kZVRvUmVwbGFjZSk7CiAgICAgTm9kZVZl
Y3RvciBjaGlsZHJlbjsKICAgICBnZXRDaGlsZE5vZGVzKCpub2RlVG9SZXBsYWNlLCBjaGlsZHJl
bik7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjaGlsZHJlbi5zaXplKCk7ICsraSkKLSAg
ICAgICAgbmV3Tm9kZS0+YXBwZW5kQ2hpbGQoJmNoaWxkcmVuW2ldLmdldCgpLCBBU1NFUlRfTk9f
RVhDRVBUSU9OKTsKKyAgICBmb3IgKGF1dG8mIGNoaWxkIDogY2hpbGRyZW4pCisgICAgICAgIG5l
d05vZGUtPmFwcGVuZENoaWxkKGNoaWxkLnB0cigpLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKIAog
ICAgIHBhcmVudE5vZGUtPmluc2VydEJlZm9yZShuZXdOb2RlLCBub2RlVG9SZXBsYWNlLCBBU1NF
UlRfTk9fRVhDRVBUSU9OKTsKICAgICBwYXJlbnROb2RlLT5yZW1vdmVDaGlsZChub2RlVG9SZXBs
YWNlLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvU2ltcGxpZnlNYXJrdXBDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
U2ltcGxpZnlNYXJrdXBDb21tYW5kLmNwcAppbmRleCAxM2NkYTM2YmYxNzk2ZTBmMTkyN2Q2MTEx
ZjRhMzE1ZjllMjY2OTQ3Li41YWI5YzFhNTlkZjQ5Mjg5NGZjMWI3MDQ0N2JkMTYyZmE5YTYwOTZl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NpbXBsaWZ5TWFya3VwQ29tbWFu
ZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TaW1wbGlmeU1hcmt1cENvbW1hbmQu
Y3BwCkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgU2ltcGxpZnlNYXJrdXBDb21tYW5kOjpkb0FwcGx5
KCkKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICAgICAgdW5zaWduZWQgY29u
dGV4dDsKLSAgICAgICAgICAgIGlmIChjdXJyZW50Tm9kZS0+cmVuZGVyU3R5bGUoKS0+ZGlmZihz
dGFydGluZ1N0eWxlLCBjb250ZXh0KSA9PSBTdHlsZURpZmZlcmVuY2VFcXVhbCkKKyAgICAgICAg
ICAgIGlmIChjdXJyZW50Tm9kZS0+cmVuZGVyU3R5bGUoKS0+ZGlmZigqc3RhcnRpbmdTdHlsZSwg
Y29udGV4dCkgPT0gU3R5bGVEaWZmZXJlbmNlRXF1YWwpCiAgICAgICAgICAgICAgICAgdG9wTm9k
ZVdpdGhTdGFydGluZ1N0eWxlID0gY3VycmVudE5vZGU7CiAgICAgICAgICAgICAKICAgICAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCmluZGV4IDQxZDZkNTlmNjJmYTVjYzM3Y2NlNDEw
YWM4ZGM1MjE1YjU5OTA0ZjIuLjMwNmZhNTIwNGE1ZjdkNGZiMTYyYWY1ZTFlOTg0OWUwNGY4NjZh
ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKQEAgLTk4MCwxNSArOTgwLDE1IEBAIFBh
c3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlQ29udGV4dHVhbEZyYWdtZW50KGNvbnN0
IFN0cmluZyYgbWFya3VwLCBIVE1MCiAgICAgcmV0dXJuIGZyYWdtZW50LnJlbGVhc2UoKTsKIH0K
IAotc3RhdGljIGlubGluZSBib29sIGhhc09uZUNoaWxkKENvbnRhaW5lck5vZGUqIG5vZGUpCitz
dGF0aWMgaW5saW5lIGJvb2wgaGFzT25lQ2hpbGQoQ29udGFpbmVyTm9kZSYgbm9kZSkKIHsKLSAg
ICBOb2RlKiBmaXJzdENoaWxkID0gbm9kZS0+Zmlyc3RDaGlsZCgpOworICAgIE5vZGUqIGZpcnN0
Q2hpbGQgPSBub2RlLmZpcnN0Q2hpbGQoKTsKICAgICByZXR1cm4gZmlyc3RDaGlsZCAmJiAhZmly
c3RDaGlsZC0+bmV4dFNpYmxpbmcoKTsKIH0KIAotc3RhdGljIGlubGluZSBib29sIGhhc09uZVRl
eHRDaGlsZChDb250YWluZXJOb2RlKiBub2RlKQorc3RhdGljIGlubGluZSBib29sIGhhc09uZVRl
eHRDaGlsZChDb250YWluZXJOb2RlJiBub2RlKQogewotICAgIHJldHVybiBoYXNPbmVDaGlsZChu
b2RlKSAmJiBub2RlLT5maXJzdENoaWxkKCktPmlzVGV4dE5vZGUoKTsKKyAgICByZXR1cm4gaGFz
T25lQ2hpbGQobm9kZSkgJiYgbm9kZS5maXJzdENoaWxkKCktPmlzVGV4dE5vZGUoKTsKIH0KIAog
dm9pZCByZXBsYWNlQ2hpbGRyZW5XaXRoRnJhZ21lbnQoQ29udGFpbmVyTm9kZSYgY29udGFpbmVy
LCBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50LCBFeGNlcHRpb25Db2RlJiBl
YykKQEAgLTEwMDEsMTIgKzEwMDEsMTIgQEAgdm9pZCByZXBsYWNlQ2hpbGRyZW5XaXRoRnJhZ21l
bnQoQ29udGFpbmVyTm9kZSYgY29udGFpbmVyLCBQYXNzUmVmUHRyPERvY3VtZW50RnIKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChoYXNPbmVUZXh0Q2hpbGQoJmNvbnRhaW5lck5v
ZGUuZ2V0KCkpICYmIGhhc09uZVRleHRDaGlsZChmcmFnbWVudC5nZXQoKSkpIHsKKyAgICBpZiAo
aGFzT25lVGV4dENoaWxkKGNvbnRhaW5lck5vZGUpICYmIGhhc09uZVRleHRDaGlsZCgqZnJhZ21l
bnQpKSB7CiAgICAgICAgIGRvd25jYXN0PFRleHQ+KCpjb250YWluZXJOb2RlLT5maXJzdENoaWxk
KCkpLnNldERhdGEoZG93bmNhc3Q8VGV4dD4oKmZyYWdtZW50LT5maXJzdENoaWxkKCkpLmRhdGEo
KSwgZWMpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKGhhc09uZUNoaWxkKCZj
b250YWluZXJOb2RlLmdldCgpKSkgeworICAgIGlmIChoYXNPbmVDaGlsZChjb250YWluZXJOb2Rl
KSkgewogICAgICAgICBjb250YWluZXJOb2RlLT5yZXBsYWNlQ2hpbGQoZnJhZ21lbnQsIGNvbnRh
aW5lck5vZGUtPmZpcnN0Q2hpbGQoKSwgZWMpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAt
MTAyMCwxNCArMTAyMCwxNCBAQCB2b2lkIHJlcGxhY2VDaGlsZHJlbldpdGhUZXh0KENvbnRhaW5l
ck5vZGUmIGNvbnRhaW5lciwgY29uc3QgU3RyaW5nJiB0ZXh0LCBFeGNlcAogICAgIFJlZjxDb250
YWluZXJOb2RlPiBjb250YWluZXJOb2RlKGNvbnRhaW5lcik7CiAgICAgQ2hpbGRMaXN0TXV0YXRp
b25TY29wZSBtdXRhdGlvbihjb250YWluZXJOb2RlKTsKIAotICAgIGlmIChoYXNPbmVUZXh0Q2hp
bGQoJmNvbnRhaW5lck5vZGUuZ2V0KCkpKSB7CisgICAgaWYgKGhhc09uZVRleHRDaGlsZChjb250
YWluZXJOb2RlKSkgewogICAgICAgICBkb3duY2FzdDxUZXh0PigqY29udGFpbmVyTm9kZS0+Zmly
c3RDaGlsZCgpKS5zZXREYXRhKHRleHQsIGVjKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAog
ICAgIFJlZlB0cjxUZXh0PiB0ZXh0Tm9kZSA9IFRleHQ6OmNyZWF0ZShjb250YWluZXJOb2RlLT5k
b2N1bWVudCgpLCB0ZXh0KTsKIAotICAgIGlmIChoYXNPbmVDaGlsZCgmY29udGFpbmVyTm9kZS5n
ZXQoKSkpIHsKKyAgICBpZiAoaGFzT25lQ2hpbGQoY29udGFpbmVyTm9kZSkpIHsKICAgICAgICAg
Y29udGFpbmVyTm9kZS0+cmVwbGFjZUNoaWxkKHRleHROb2RlLnJlbGVhc2UoKSwgY29udGFpbmVy
Tm9kZS0+Zmlyc3RDaGlsZCgpLCBlYyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcAppbmRleCBmM2Q4ZTUz
NDlkYWU4ZjNlNTI0N2JjOTM1MDAyZjE2NDg1OTA5ZmE3Li5hYThkMDcxMWFiZGRmNTU3ODhhM2U5
MDMzZTQ2Yzg3ZmZiNjU3YTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
b3JtQ29udHJvbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1D
b250cm9sRWxlbWVudC5jcHAKQEAgLTQwOSw3ICs0MDksNyBAQCBib29sIEhUTUxGb3JtQ29udHJv
bEVsZW1lbnQ6OmNoZWNrVmFsaWRpdHkoVmVjdG9yPFJlZlB0cjxGb3JtQXNzb2NpYXRlZEVsZW1l
bnQ+PgogICAgIFJlZjxIVE1MRm9ybUNvbnRyb2xFbGVtZW50PiBwcm90ZWN0KCp0aGlzKTsKICAg
ICBSZWY8RG9jdW1lbnQ+IG9yaWdpbmFsRG9jdW1lbnQoZG9jdW1lbnQoKSk7CiAgICAgYm9vbCBu
ZWVkc0RlZmF1bHRBY3Rpb24gPSBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1l
cygpLmludmFsaWRFdmVudCwgZmFsc2UsIHRydWUpKTsKLSAgICBpZiAobmVlZHNEZWZhdWx0QWN0
aW9uICYmIHVuaGFuZGxlZEludmFsaWRDb250cm9scyAmJiBpbkRvY3VtZW50KCkgJiYgJm9yaWdp
bmFsRG9jdW1lbnQuZ2V0KCkgPT0gJmRvY3VtZW50KCkpCisgICAgaWYgKG5lZWRzRGVmYXVsdEFj
dGlvbiAmJiB1bmhhbmRsZWRJbnZhbGlkQ29udHJvbHMgJiYgaW5Eb2N1bWVudCgpICYmIG9yaWdp
bmFsRG9jdW1lbnQucHRyKCkgPT0gJmRvY3VtZW50KCkpCiAgICAgICAgIHVuaGFuZGxlZEludmFs
aWRDb250cm9scy0+YXBwZW5kKHRoaXMpOwogICAgIHJldHVybiBmYWxzZTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAppbmRleCAzMGRmNmUwMzg5ZTI2ZDNiNmU1NDQz
YTJkZjhmYWYwMDAxMzM3NmQwLi5hYzkwYjM2Mjg3MjQ2YmY2ZTZhMjMyZjQxZGViMTBhZjE5NWNi
MzM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCkBAIC03OTksNyAr
Nzk5LDcgQEAgdm9pZCBIVE1MRm9ybUVsZW1lbnQ6OmdldE5hbWVkRWxlbWVudHMoY29uc3QgQXRv
bWljU3RyaW5nJiBuYW1lLCBWZWN0b3I8UmVmPEVsZW0KICAgICBlbGVtZW50cygpLT5uYW1lZEl0
ZW1zKG5hbWUsIG5hbWVkSXRlbXMpOwogCiAgICAgSFRNTEVsZW1lbnQqIGVsZW1lbnRGcm9tUGFz
dCA9IGVsZW1lbnRGcm9tUGFzdE5hbWVzTWFwKG5hbWUpOwotICAgIGlmIChuYW1lZEl0ZW1zLnNp
emUoKSA9PSAxICYmICZuYW1lZEl0ZW1zLmZpcnN0KCkuZ2V0KCkgIT0gZWxlbWVudEZyb21QYXN0
KQorICAgIGlmIChuYW1lZEl0ZW1zLnNpemUoKSA9PSAxICYmIG5hbWVkSXRlbXMuZmlyc3QoKS5w
dHIoKSAhPSBlbGVtZW50RnJvbVBhc3QpCiAgICAgICAgIGFkZFRvUGFzdE5hbWVzTWFwKGRvd25j
YXN0PEhUTUxFbGVtZW50PihuYW1lZEl0ZW1zLmZpcnN0KCkuZ2V0KCkpLmFzRm9ybU5hbWVkSXRl
bSgpLCBuYW1lKTsKICAgICBlbHNlIGlmIChlbGVtZW50RnJvbVBhc3QgJiYgbmFtZWRJdGVtcy5p
c0VtcHR5KCkpCiAgICAgICAgIG5hbWVkSXRlbXMuYXBwZW5kKCplbGVtZW50RnJvbVBhc3QpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCmluZGV4IDU3MmMyMDJkZjQxYmFi
MjM4ZDI3MDRhZjdlODY1MzNlYWVkZGU1NTguLjJiNDVlZWViOTExZjBiMTlhZWU0M2EyNzFiYTI0
NjJkMDAxNjdlYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKQEAg
LTE3NSw3ICsxNzUsNyBAQCBib29sIEhUTUxMaW5rRWxlbWVudDo6c2hvdWxkTG9hZExpbmsoKQog
ICAgIGlmICghZGlzcGF0Y2hCZWZvcmVMb2FkRXZlbnQoZ2V0Tm9uRW1wdHlVUkxBdHRyaWJ1dGUo
aHJlZkF0dHIpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIC8vIEEgYmVmb3JlbG9hZCBo
YW5kbGVyIG1pZ2h0IGhhdmUgcmVtb3ZlZCB1cyBmcm9tIHRoZSBkb2N1bWVudCBvciBjaGFuZ2Vk
IHRoZSBkb2N1bWVudC4KLSAgICBpZiAoIWluRG9jdW1lbnQoKSB8fCAmZG9jdW1lbnQoKSAhPSAm
b3JpZ2luYWxEb2N1bWVudC5nZXQoKSkKKyAgICBpZiAoIWluRG9jdW1lbnQoKSB8fCAmZG9jdW1l
bnQoKSAhPSBvcmlnaW5hbERvY3VtZW50LnB0cigpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yU3R5bGVTaGVldC5jcHAKaW5kZXggODRkYzAzNDEwNGRmNjY5ZDA3ZDg2OTRkMWU5Y2U0ODJi
ZTJkMzcxYi4uZWY1MmFmNTExMGMxMDAzM2E5YTNmZTVkZDhlNWZmMDY0M2FiZGRhMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcApAQCAt
MTA0MSwxMCArMTA0MSwxMCBAQCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6
U2VsZWN0b3JMaXN0PiBJbnNwZWN0b3JTdHlsZVNoZWV0OjpidWlsZE9iagogICAgIFN0cmluZyBz
ZWxlY3RvclRleHQgPSBydWxlLT5zZWxlY3RvclRleHQoKTsKIAogICAgIGlmIChzb3VyY2VEYXRh
KQotICAgICAgICBzZWxlY3RvcnMgPSBzZWxlY3RvcnNGcm9tU291cmNlKHNvdXJjZURhdGEuZ2V0
KCksIG1fcGFyc2VkU3R5bGVTaGVldC0+dGV4dCgpLCBydWxlLT5zdHlsZVJ1bGUoKS0+c2VsZWN0
b3JMaXN0KCkpOworICAgICAgICBzZWxlY3RvcnMgPSBzZWxlY3RvcnNGcm9tU291cmNlKHNvdXJj
ZURhdGEuZ2V0KCksIG1fcGFyc2VkU3R5bGVTaGVldC0+dGV4dCgpLCBydWxlLT5zdHlsZVJ1bGUo
KS5zZWxlY3Rvckxpc3QoKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIHNlbGVjdG9ycyA9IEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU2VsZWN0
b3I+OjpjcmVhdGUoKTsKLSAgICAgICAgY29uc3QgQ1NTU2VsZWN0b3JMaXN0JiBzZWxlY3Rvckxp
c3QgPSBydWxlLT5zdHlsZVJ1bGUoKS0+c2VsZWN0b3JMaXN0KCk7CisgICAgICAgIGNvbnN0IENT
U1NlbGVjdG9yTGlzdCYgc2VsZWN0b3JMaXN0ID0gcnVsZS0+c3R5bGVSdWxlKCkuc2VsZWN0b3JM
aXN0KCk7CiAgICAgICAgIGZvciAoY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yID0gc2VsZWN0
b3JMaXN0LmZpcnN0KCk7IHNlbGVjdG9yOyBzZWxlY3RvciA9IENTU1NlbGVjdG9yTGlzdDo6bmV4
dChzZWxlY3RvcikpCiAgICAgICAgICAgICBzZWxlY3RvcnMtPmFkZEl0ZW0oYnVpbGRPYmplY3RG
b3JTZWxlY3RvcihzZWxlY3RvcikpOwogICAgIH0KQEAgLTEwNjUsNyArMTA2NSw3IEBAIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NSdWxlPiBJbnNwZWN0b3JTdHlsZVNo
ZWV0OjpidWlsZE9iamVjdEZvCiAKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NT
OjpDU1NSdWxlPiByZXN1bHQgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1J1bGU6OmNy
ZWF0ZSgpCiAgICAgICAgIC5zZXRTZWxlY3Rvckxpc3QoYnVpbGRPYmplY3RGb3JTZWxlY3Rvckxp
c3QocnVsZSkpCi0gICAgICAgIC5zZXRTb3VyY2VMaW5lKHJ1bGUtPnN0eWxlUnVsZSgpLT5zb3Vy
Y2VMaW5lKCkpCisgICAgICAgIC5zZXRTb3VyY2VMaW5lKHJ1bGUtPnN0eWxlUnVsZSgpLnNvdXJj
ZUxpbmUoKSkKICAgICAgICAgLnNldE9yaWdpbihtX29yaWdpbikKICAgICAgICAgLnNldFN0eWxl
KGJ1aWxkT2JqZWN0Rm9yU3R5bGUoJnJ1bGUtPnN0eWxlKCkpKTsKIApAQCAtMTM2MSw3ICsxMzYx
LDcgQEAgdm9pZCBJbnNwZWN0b3JTdHlsZVNoZWV0OjpyZXZhbGlkYXRlU3R5bGUoQ1NTU3R5bGVE
ZWNsYXJhdGlvbiogcGFnZVN0eWxlKQogICAgIGZvciAodW5zaWduZWQgaSA9IDAsIHNpemUgPSBt
X2ZsYXRSdWxlcy5zaXplKCk7IGkgPCBzaXplOyArK2kpIHsKICAgICAgICAgQ1NTU3R5bGVSdWxl
KiBwYXJzZWRSdWxlID0gbV9mbGF0UnVsZXMuYXQoaSkuZ2V0KCk7CiAgICAgICAgIGlmICgmcGFy
c2VkUnVsZS0+c3R5bGUoKSA9PSBwYWdlU3R5bGUpIHsKLSAgICAgICAgICAgIGlmIChwYXJzZWRS
dWxlLT5zdHlsZVJ1bGUoKS0+cHJvcGVydGllcygpLmFzVGV4dCgpICE9IHBhZ2VTdHlsZS0+Y3Nz
VGV4dCgpKSB7CisgICAgICAgICAgICBpZiAocGFyc2VkUnVsZS0+c3R5bGVSdWxlKCkucHJvcGVy
dGllcygpLmFzVGV4dCgpICE9IHBhZ2VTdHlsZS0+Y3NzVGV4dCgpKSB7CiAgICAgICAgICAgICAg
ICAgLy8gQ2xlYXIgdGhlIGRpc2FibGVkIHByb3BlcnRpZXMgZm9yIHRoZSBpbnZhbGlkIHN0eWxl
IGhlcmUuCiAgICAgICAgICAgICAgICAgbV9pbnNwZWN0b3JTdHlsZXMucmVtb3ZlKHBhZ2VTdHls
ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDY3NWI3NmE1NmVl
MzdhNTFkZDU3YTU2YTI3MzAwNzA4ZGFiOTgzYjguLmI1N2U2N2U2NTgyZGYwMTg4NGNkNjNkMWYz
YmI4NDEzZWQ4MTYxYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAt
Mjk3MSw3ICsyOTcxLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y29udGludWVMb2FkQWZ0ZXJOZXdX
aW5kb3dQb2xpY3koY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXMKICAgICBtYWluRnJhbWUt
PnBhZ2UoKS0+c2V0T3BlbmVkQnlET00oKTsKICAgICBtYWluRnJhbWUtPmxvYWRlcigpLm1fY2xp
ZW50LmRpc3BhdGNoU2hvdygpOwogICAgIGlmICghbV9zdXBwcmVzc09wZW5lckluTmV3RnJhbWUp
IHsKLSAgICAgICAgbWFpbkZyYW1lLT5sb2FkZXIoKS5zZXRPcGVuZXIoJmZyYW1lLmdldCgpKTsK
KyAgICAgICAgbWFpbkZyYW1lLT5sb2FkZXIoKS5zZXRPcGVuZXIoZnJhbWUucHRyKCkpOwogICAg
ICAgICBtYWluRnJhbWUtPmRvY3VtZW50KCktPnNldFJlZmVycmVyUG9saWN5KGZyYW1lLT5kb2N1
bWVudCgpLT5yZWZlcnJlclBvbGljeSgpKTsKICAgICB9CiAgICAgbWFpbkZyYW1lLT5sb2FkZXIo
KS5sb2FkV2l0aE5hdmlnYXRpb25BY3Rpb24ocmVxdWVzdCwgTmF2aWdhdGlvbkFjdGlvbihyZXF1
ZXN0KSwgTG9ja0hpc3Rvcnk6Ok5vLCBGcmFtZUxvYWRUeXBlOjpTdGFuZGFyZCwgZm9ybVN0YXRl
LCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0Nv
bnRyb2xsZXIuY3BwCmluZGV4IGNhNDMyMDhkNmRjYzUyYWVmOTEwYzE2MTgzYjU3MjkzOTc1NDk5
YTYuLmMyZmViN2M4MGZhZDE2M2NhM2E0Y2U4ZTU3ODhhNTc3NzNiZGZlNDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAKQEAgLTU4Nyw5ICs1ODcsOSBAQCBzdGF0aWMg
dm9pZCBjbGVhclNlbGVjdGlvbklmTmVlZGVkKEZyYW1lKiBvbGRGb2N1c2VkRnJhbWUsIEZyYW1l
KiBuZXdGb2N1c2VkRnJhbQogYm9vbCBGb2N1c0NvbnRyb2xsZXI6OnNldEZvY3VzZWRFbGVtZW50
KEVsZW1lbnQqIGVsZW1lbnQsIFBhc3NSZWZQdHI8RnJhbWU+IG5ld0ZvY3VzZWRGcmFtZSwgRm9j
dXNEaXJlY3Rpb24gZGlyZWN0aW9uKQogewogICAgIFJlZlB0cjxGcmFtZT4gb2xkRm9jdXNlZEZy
YW1lID0gZm9jdXNlZEZyYW1lKCk7Ci0gICAgUmVmUHRyPERvY3VtZW50PiBvbGREb2N1bWVudCA9
IG9sZEZvY3VzZWRGcmFtZSA/IG9sZEZvY3VzZWRGcmFtZS0+ZG9jdW1lbnQoKSA6IDA7CisgICAg
UmVmUHRyPERvY3VtZW50PiBvbGREb2N1bWVudCA9IG9sZEZvY3VzZWRGcmFtZSA/IG9sZEZvY3Vz
ZWRGcmFtZS0+ZG9jdW1lbnQoKSA6IG51bGxwdHI7CiAgICAgCi0gICAgRWxlbWVudCogb2xkRm9j
dXNlZEVsZW1lbnQgPSBvbGREb2N1bWVudCA/IG9sZERvY3VtZW50LT5mb2N1c2VkRWxlbWVudCgp
IDogMDsKKyAgICBFbGVtZW50KiBvbGRGb2N1c2VkRWxlbWVudCA9IG9sZERvY3VtZW50ID8gb2xk
RG9jdW1lbnQtPmZvY3VzZWRFbGVtZW50KCkgOiBudWxscHRyOwogICAgIGlmIChvbGRGb2N1c2Vk
RWxlbWVudCA9PSBlbGVtZW50KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIApAQCAtNjAzLDcgKzYw
Myw3IEBAIGJvb2wgRm9jdXNDb250cm9sbGVyOjpzZXRGb2N1c2VkRWxlbWVudChFbGVtZW50KiBl
bGVtZW50LCBQYXNzUmVmUHRyPEZyYW1lPiBuZXdGCiAKICAgICBpZiAoIWVsZW1lbnQpIHsKICAg
ICAgICAgaWYgKG9sZERvY3VtZW50KQotICAgICAgICAgICAgb2xkRG9jdW1lbnQtPnNldEZvY3Vz
ZWRFbGVtZW50KDApOworICAgICAgICAgICAgb2xkRG9jdW1lbnQtPnNldEZvY3VzZWRFbGVtZW50
KG51bGxwdHIpOwogICAgICAgICBtX3BhZ2UuZWRpdG9yQ2xpZW50KCktPnNldElucHV0TWV0aG9k
U3RhdGUoZmFsc2UpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC02MTUsMTEgKzYx
NSwxMSBAQCBib29sIEZvY3VzQ29udHJvbGxlcjo6c2V0Rm9jdXNlZEVsZW1lbnQoRWxlbWVudCog
ZWxlbWVudCwgUGFzc1JlZlB0cjxGcmFtZT4gbmV3RgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CiAgICAgCi0gICAgaWYgKG9sZERvY3VtZW50ICYmIG9sZERvY3VtZW50ICE9ICZuZXdEb2N1
bWVudC5nZXQoKSkKLSAgICAgICAgb2xkRG9jdW1lbnQtPnNldEZvY3VzZWRFbGVtZW50KDApOwor
ICAgIGlmIChvbGREb2N1bWVudCAmJiBvbGREb2N1bWVudCAhPSBuZXdEb2N1bWVudC5wdHIoKSkK
KyAgICAgICAgb2xkRG9jdW1lbnQtPnNldEZvY3VzZWRFbGVtZW50KG51bGxwdHIpOwogCiAgICAg
aWYgKG5ld0ZvY3VzZWRGcmFtZSAmJiAhbmV3Rm9jdXNlZEZyYW1lLT5wYWdlKCkpIHsKLSAgICAg
ICAgc2V0Rm9jdXNlZEZyYW1lKDApOworICAgICAgICBzZXRGb2N1c2VkRnJhbWUobnVsbHB0cik7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgc2V0Rm9jdXNlZEZyYW1lKG5ld0Zv
Y3VzZWRGcmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxp
emVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCmluZGV4IDI1
ODI4MDYwZTc2MGNhNGQzNjUwYjAwNWQ1ZTgyODQyODYzMmJmMTQuLjk0OWE3YTYzMDA3NWNhYTI2
OWVjYjUxZDU4MWM4MDkwOGJmNzBiYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZVNlcmlhbGl6ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6
ZXIuY3BwCkBAIC0zMTIsOSArMzEyLDkgQEAgdm9pZCBQYWdlU2VyaWFsaXplcjo6YWRkSW1hZ2VU
b1Jlc291cmNlcyhDYWNoZWRJbWFnZSogaW1hZ2UsIFJlbmRlckVsZW1lbnQqIGltYWcKICAgICBt
X3Jlc291cmNlVVJMcy5hZGQodXJsKTsKIH0KIAotdm9pZCBQYWdlU2VyaWFsaXplcjo6cmV0cmll
dmVSZXNvdXJjZXNGb3JSdWxlKFN0eWxlUnVsZSogcnVsZSwgRG9jdW1lbnQqIGRvY3VtZW50KQor
dm9pZCBQYWdlU2VyaWFsaXplcjo6cmV0cmlldmVSZXNvdXJjZXNGb3JSdWxlKFN0eWxlUnVsZSYg
cnVsZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogewotICAgIHJldHJpZXZlUmVzb3VyY2VzRm9yUHJv
cGVydGllcygmcnVsZS0+cHJvcGVydGllcygpLCBkb2N1bWVudCk7CisgICAgcmV0cmlldmVSZXNv
dXJjZXNGb3JQcm9wZXJ0aWVzKCZydWxlLnByb3BlcnRpZXMoKSwgZG9jdW1lbnQpOwogfQogCiB2
b2lkIFBhZ2VTZXJpYWxpemVyOjpyZXRyaWV2ZVJlc291cmNlc0ZvclByb3BlcnRpZXMoY29uc3Qg
U3R5bGVQcm9wZXJ0aWVzKiBzdHlsZURlY2xhcmF0aW9uLCBEb2N1bWVudCogZG9jdW1lbnQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmgKaW5kZXggZjI1NDg4ZjdmZTkxNGVjZjhmNGQw
NGQ4MmUxMzAxMzUxNmEzOTgyZi4uYTU5NDQ0NzJjZmRiOWEyY2Q0YzYwM2ZhOGIzNmFlYWUyZWFj
MTkwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuaApAQCAtNzksNyArNzksNyBA
QCBwcml2YXRlOgogCiAgICAgdm9pZCBhZGRJbWFnZVRvUmVzb3VyY2VzKENhY2hlZEltYWdlKiwg
UmVuZGVyRWxlbWVudCosIGNvbnN0IFVSTCYpOwogICAgIHZvaWQgcmV0cmlldmVSZXNvdXJjZXNG
b3JQcm9wZXJ0aWVzKGNvbnN0IFN0eWxlUHJvcGVydGllcyosIERvY3VtZW50Kik7Ci0gICAgdm9p
ZCByZXRyaWV2ZVJlc291cmNlc0ZvclJ1bGUoU3R5bGVSdWxlKiwgRG9jdW1lbnQqKTsKKyAgICB2
b2lkIHJldHJpZXZlUmVzb3VyY2VzRm9yUnVsZShTdHlsZVJ1bGUmLCBEb2N1bWVudCopOwogCiAg
ICAgVmVjdG9yPFJlc291cmNlPiogbV9yZXNvdXJjZXM7CiAgICAgTGlzdEhhc2hTZXQ8VVJMPiBt
X3Jlc291cmNlVVJMczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9u
L0FuaW1hdGlvbkNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24v
QW5pbWF0aW9uQ29udHJvbGxlci5jcHAKaW5kZXggMWE3Y2QyYTM0YjFmOTM5NTNiYTlmMjExZGRi
MTVjNjc5MmFiZDg0OC4uYzg5MDMzMzA2MDQ4MWI5MDEzYmYwNWY3NjdlZDhlYWI1NGI3OWMwMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29udHJv
bGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29u
dHJvbGxlci5jcHAKQEAgLTUyNSw3ICs1MjUsNyBAQCBQYXNzUmVmPFJlbmRlclN0eWxlPiBBbmlt
YXRpb25Db250cm9sbGVyOjp1cGRhdGVBbmltYXRpb25zKFJlbmRlckVsZW1lbnQmIHJlbmRlcgog
I2VuZGlmCiAgICAgfQogCi0gICAgaWYgKCZibGVuZGVkU3R5bGUuZ2V0KCkgIT0gJm5ld1N0eWxl
QmVmb3JlQW5pbWF0aW9uLmdldCgpKSB7CisgICAgaWYgKGJsZW5kZWRTdHlsZS5wdHIoKSAhPSBu
ZXdTdHlsZUJlZm9yZUFuaW1hdGlvbi5wdHIoKSkgewogICAgICAgICAvLyBJZiB0aGUgYW5pbWF0
aW9ucy90cmFuc2l0aW9ucyBjaGFuZ2Ugb3BhY2l0eSBvciB0cmFuc2Zvcm0sIHdlIG5lZWQgdG8g
dXBkYXRlCiAgICAgICAgIC8vIHRoZSBzdHlsZSB0byBpbXBvc2UgdGhlIHN0YWNraW5nIHJ1bGVz
LiBOb3RlIHRoYXQgdGhpcyBpcyBhbHNvCiAgICAgICAgIC8vIGRvbmUgaW4gU3R5bGVSZXNvbHZl
cjo6YWRqdXN0UmVuZGVyU3R5bGUoKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL1RpbGVDb3ZlcmFnZU1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ292ZXJhZ2VNYXAuY3BwCmluZGV4IGEyYjYyZGJlYzIwODA1
NjQ3NDRlMzI0NmQ2YzgzYjY4YmMwNzI4ZjAuLmRmYzkwYmUzZDBjM2JjMDI4YWI2NmJiYWQ2YTMx
OWU4OWE1YzgzODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL1RpbGVDb3ZlcmFnZU1hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvVGlsZUNvdmVyYWdlTWFwLmNwcApAQCAtMTAyLDcgKzEwMiw3IEBAIHZvaWQgVGls
ZUNvdmVyYWdlTWFwOjp1cGRhdGUoKQogCiB2b2lkIFRpbGVDb3ZlcmFnZU1hcDo6cGxhdGZvcm1D
QUxheWVyUGFpbnRDb250ZW50cyhQbGF0Zm9ybUNBTGF5ZXIqIHBsYXRmb3JtQ0FMYXllciwgR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmKQogewotICAgIEFTU0VSVF9V
TlVTRUQocGxhdGZvcm1DQUxheWVyLCBwbGF0Zm9ybUNBTGF5ZXIgPT0gJm1fbGF5ZXIuZ2V0KCkp
OworICAgIEFTU0VSVF9VTlVTRUQocGxhdGZvcm1DQUxheWVyLCBwbGF0Zm9ybUNBTGF5ZXIgPT0g
bV9sYXllci5wdHIoKSk7CiAgICAgbV9jb250cm9sbGVyLnRpbGVHcmlkKCkuZHJhd1RpbGVNYXBD
b250ZW50cyhjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLCBtX2xheWVyLmdldCgpLmJvdW5kcygp
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NsaXBQYXRoT3Bl
cmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ2xpcFBhdGhPcGVyYXRpb24uaApp
bmRleCBiOWU3MDI0N2JjZTAwZjI3MWEyYTgzODRlNzJlMDRkNmJmYzljNWY3Li5jMWI4Mjk4YWJj
MDY3M2ViZGJiZmMyZWFhMDM3NjJhMzgxNjVlNmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvQ2xpcFBhdGhPcGVyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvQ2xpcFBhdGhPcGVyYXRpb24uaApAQCAtMTE5LDcgKzExOSw3IEBAIHByaXZhdGU6CiAg
ICAgICAgIGlmICghaXNTYW1lVHlwZShvdGhlcikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgIGNvbnN0IGF1dG8mIHNoYXBlQ2xpcCA9IGRvd25jYXN0PFNoYXBlQ2xpcFBhdGhP
cGVyYXRpb24+KG90aGVyKTsKLSAgICAgICAgcmV0dXJuICZtX3NoYXBlLmdldCgpID09ICZzaGFw
ZUNsaXAubV9zaGFwZS5nZXQoKTsKKyAgICAgICAgcmV0dXJuIG1fc2hhcGUucHRyKCkgPT0gc2hh
cGVDbGlwLm1fc2hhcGUucHRyKCk7CiAgICAgfQogCiAgICAgZXhwbGljaXQgU2hhcGVDbGlwUGF0
aE9wZXJhdGlvbihQYXNzUmVmPEJhc2ljU2hhcGU+IHNoYXBlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9jay5jcHAKaW5kZXggOWE4MWZiNjFmNjFkZTFhMDczNzMxNjA0ZDNiOGZm
Zjg2ZDQ1YzhlYS4uY2FkMDdjMWQ1ODhlOWZkNDZmNzIyZWRkMzFkMTU5ZjliMzUyNGJiOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC0yOTc2LDcgKzI5NzYs
NyBAQCBSZW5kZXJCbG9jayogUmVuZGVyQmxvY2s6OmZpcnN0TGluZUJsb2NrKCkgY29uc3QKICAg
ICByZXR1cm4gZmlyc3RMaW5lQmxvY2s7CiB9CiAKLXN0YXRpYyBSZW5kZXJTdHlsZSogc3R5bGVG
b3JGaXJzdExldHRlcihSZW5kZXJPYmplY3QqIGZpcnN0TGV0dGVyQmxvY2ssIFJlbmRlck9iamVj
dCogZmlyc3RMZXR0ZXJDb250YWluZXIpCitzdGF0aWMgUmVuZGVyU3R5bGUmIHN0eWxlRm9yRmly
c3RMZXR0ZXIoUmVuZGVyT2JqZWN0KiBmaXJzdExldHRlckJsb2NrLCBSZW5kZXJPYmplY3QqIGZp
cnN0TGV0dGVyQ29udGFpbmVyKQogewogICAgIFJlbmRlclN0eWxlKiBwc2V1ZG9TdHlsZSA9IGZp
cnN0TGV0dGVyQmxvY2stPmdldENhY2hlZFBzZXVkb1N0eWxlKEZJUlNUX0xFVFRFUiwgJmZpcnN0
TGV0dGVyQ29udGFpbmVyLT5maXJzdExpbmVTdHlsZSgpKTsKICAgICAKQEAgLTMwMjEsNyArMzAy
MSw3IEBAIHN0YXRpYyBSZW5kZXJTdHlsZSogc3R5bGVGb3JGaXJzdExldHRlcihSZW5kZXJPYmpl
Y3QqIGZpcnN0TGV0dGVyQmxvY2ssIFJlbmRlck9iCiAgICAgcHNldWRvU3R5bGUtPnNldERpc3Bs
YXkocHNldWRvU3R5bGUtPmlzRmxvYXRpbmcoKSA/IEJMT0NLIDogSU5MSU5FKTsKICAgICAvLyBD
U1MyIHNheXMgZmlyc3QtbGV0dGVyIGNhbid0IGJlIHBvc2l0aW9uZWQuCiAgICAgcHNldWRvU3R5
bGUtPnNldFBvc2l0aW9uKFN0YXRpY1Bvc2l0aW9uKTsKLSAgICByZXR1cm4gcHNldWRvU3R5bGU7
CisgICAgcmV0dXJuICpwc2V1ZG9TdHlsZTsKIH0KIAogLy8gQ1NTIDIuMSBodHRwOi8vd3d3Lncz
Lm9yZy9UUi9DU1MyMS9zZWxlY3Rvci5odG1sI2ZpcnN0LWxldHRlcgpAQCAtMzA2MSwxNiArMzA2
MSwxNiBAQCB2b2lkIFJlbmRlckJsb2NrOjp1cGRhdGVGaXJzdExldHRlclN0eWxlKFJlbmRlck9i
amVjdCogZmlyc3RMZXR0ZXJCbG9jaywgUmVuZGVyTwogewogICAgIFJlbmRlckVsZW1lbnQqIGZp
cnN0TGV0dGVyID0gY3VycmVudENoaWxkLT5wYXJlbnQoKTsKICAgICBSZW5kZXJFbGVtZW50KiBm
aXJzdExldHRlckNvbnRhaW5lciA9IGZpcnN0TGV0dGVyLT5wYXJlbnQoKTsKLSAgICBSZW5kZXJT
dHlsZSogcHNldWRvU3R5bGUgPSBzdHlsZUZvckZpcnN0TGV0dGVyKGZpcnN0TGV0dGVyQmxvY2ss
IGZpcnN0TGV0dGVyQ29udGFpbmVyKTsKKyAgICBSZW5kZXJTdHlsZSYgcHNldWRvU3R5bGUgPSBz
dHlsZUZvckZpcnN0TGV0dGVyKGZpcnN0TGV0dGVyQmxvY2ssIGZpcnN0TGV0dGVyQ29udGFpbmVy
KTsKICAgICBBU1NFUlQoZmlyc3RMZXR0ZXItPmlzRmxvYXRpbmcoKSB8fCBmaXJzdExldHRlci0+
aXNJbmxpbmUoKSk7CiAKLSAgICBpZiAoU3R5bGU6OmRldGVybWluZUNoYW5nZSgmZmlyc3RMZXR0
ZXItPnN0eWxlKCksIHBzZXVkb1N0eWxlKSA9PSBTdHlsZTo6RGV0YWNoKSB7CisgICAgaWYgKFN0
eWxlOjpkZXRlcm1pbmVDaGFuZ2UoZmlyc3RMZXR0ZXItPnN0eWxlKCksIHBzZXVkb1N0eWxlKSA9
PSBTdHlsZTo6RGV0YWNoKSB7CiAgICAgICAgIC8vIFRoZSBmaXJzdC1sZXR0ZXIgcmVuZGVyZXIg
bmVlZHMgdG8gYmUgcmVwbGFjZWQuIENyZWF0ZSBhIG5ldyByZW5kZXJlciBvZiB0aGUgcmlnaHQg
dHlwZS4KICAgICAgICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIG5ld0ZpcnN0TGV0dGVyOwotICAg
ICAgICBpZiAocHNldWRvU3R5bGUtPmRpc3BsYXkoKSA9PSBJTkxJTkUpCi0gICAgICAgICAgICBu
ZXdGaXJzdExldHRlciA9IG5ldyBSZW5kZXJJbmxpbmUoZG9jdW1lbnQoKSwgKnBzZXVkb1N0eWxl
KTsKKyAgICAgICAgaWYgKHBzZXVkb1N0eWxlLmRpc3BsYXkoKSA9PSBJTkxJTkUpCisgICAgICAg
ICAgICBuZXdGaXJzdExldHRlciA9IG5ldyBSZW5kZXJJbmxpbmUoZG9jdW1lbnQoKSwgcHNldWRv
U3R5bGUpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBuZXdGaXJzdExldHRlciA9IG5ldyBS
ZW5kZXJCbG9ja0Zsb3coZG9jdW1lbnQoKSwgKnBzZXVkb1N0eWxlKTsKKyAgICAgICAgICAgIG5l
d0ZpcnN0TGV0dGVyID0gbmV3IFJlbmRlckJsb2NrRmxvdyhkb2N1bWVudCgpLCBwc2V1ZG9TdHls
ZSk7CiAgICAgICAgIG5ld0ZpcnN0TGV0dGVyLT5pbml0aWFsaXplU3R5bGUoKTsKIAogICAgICAg
ICAvLyBNb3ZlIHRoZSBmaXJzdCBsZXR0ZXIgaW50byB0aGUgbmV3IHJlbmRlcmVyLgpAQCAtMzA5
NiwxOCArMzA5NiwxOCBAQCB2b2lkIFJlbmRlckJsb2NrOjp1cGRhdGVGaXJzdExldHRlclN0eWxl
KFJlbmRlck9iamVjdCogZmlyc3RMZXR0ZXJCbG9jaywgUmVuZGVyTwogICAgICAgICBmaXJzdExl
dHRlciA9IG5ld0ZpcnN0TGV0dGVyOwogICAgICAgICBmaXJzdExldHRlckNvbnRhaW5lci0+YWRk
Q2hpbGQoZmlyc3RMZXR0ZXIsIG5leHRTaWJsaW5nKTsKICAgICB9IGVsc2UKLSAgICAgICAgZmly
c3RMZXR0ZXItPnNldFN0eWxlKCpwc2V1ZG9TdHlsZSk7CisgICAgICAgIGZpcnN0TGV0dGVyLT5z
ZXRTdHlsZShwc2V1ZG9TdHlsZSk7CiB9CiAKIHZvaWQgUmVuZGVyQmxvY2s6OmNyZWF0ZUZpcnN0
TGV0dGVyUmVuZGVyZXIoUmVuZGVyT2JqZWN0KiBmaXJzdExldHRlckJsb2NrLCBSZW5kZXJUZXh0
KiBjdXJyZW50VGV4dENoaWxkKQogewogICAgIFJlbmRlckVsZW1lbnQqIGZpcnN0TGV0dGVyQ29u
dGFpbmVyID0gY3VycmVudFRleHRDaGlsZC0+cGFyZW50KCk7Ci0gICAgUmVuZGVyU3R5bGUqIHBz
ZXVkb1N0eWxlID0gc3R5bGVGb3JGaXJzdExldHRlcihmaXJzdExldHRlckJsb2NrLCBmaXJzdExl
dHRlckNvbnRhaW5lcik7Ci0gICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIGZpcnN0TGV0dGVyID0g
MDsKLSAgICBpZiAocHNldWRvU3R5bGUtPmRpc3BsYXkoKSA9PSBJTkxJTkUpCi0gICAgICAgIGZp
cnN0TGV0dGVyID0gbmV3IFJlbmRlcklubGluZShkb2N1bWVudCgpLCAqcHNldWRvU3R5bGUpOwor
ICAgIFJlbmRlclN0eWxlJiBwc2V1ZG9TdHlsZSA9IHN0eWxlRm9yRmlyc3RMZXR0ZXIoZmlyc3RM
ZXR0ZXJCbG9jaywgZmlyc3RMZXR0ZXJDb250YWluZXIpOworICAgIFJlbmRlckJveE1vZGVsT2Jq
ZWN0KiBmaXJzdExldHRlciA9IG51bGxwdHI7CisgICAgaWYgKHBzZXVkb1N0eWxlLmRpc3BsYXko
KSA9PSBJTkxJTkUpCisgICAgICAgIGZpcnN0TGV0dGVyID0gbmV3IFJlbmRlcklubGluZShkb2N1
bWVudCgpLCBwc2V1ZG9TdHlsZSk7CiAgICAgZWxzZQotICAgICAgICBmaXJzdExldHRlciA9IG5l
dyBSZW5kZXJCbG9ja0Zsb3coZG9jdW1lbnQoKSwgKnBzZXVkb1N0eWxlKTsKKyAgICAgICAgZmly
c3RMZXR0ZXIgPSBuZXcgUmVuZGVyQmxvY2tGbG93KGRvY3VtZW50KCksIHBzZXVkb1N0eWxlKTsK
ICAgICBmaXJzdExldHRlci0+aW5pdGlhbGl6ZVN0eWxlKCk7CiAgICAgZmlyc3RMZXR0ZXJDb250
YWluZXItPmFkZENoaWxkKGZpcnN0TGV0dGVyLCBjdXJyZW50VGV4dENoaWxkKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAppbmRleCA1NWVjZTczNGNh
ZjEzMjk1ZWRmNjJhODIwODlkZDhlZjkwOTBmNThjLi41OWRlNzYxZDgxMGZhMzI0ZTdjOWFlMjFk
YTZiYTAwMzEwNDZkZjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2tGbG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2tGbG93LmNwcApAQCAtMzc1MSwyMSArMzc1MSwyMSBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6
c2V0Q29tcHV0ZWRDb2x1bW5Db3VudEFuZFdpZHRoKGludCBjb3VudCwgTGF5b3V0VW5pdCB3aWR0
aAogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OnVwZGF0ZUNvbHVtblByb2dyZXNz
aW9uRnJvbVN0eWxlKFJlbmRlclN0eWxlKiBzdHlsZSkKK3ZvaWQgUmVuZGVyQmxvY2tGbG93Ojp1
cGRhdGVDb2x1bW5Qcm9ncmVzc2lvbkZyb21TdHlsZShSZW5kZXJTdHlsZSYgc3R5bGUpCiB7CiAg
ICAgaWYgKCFtdWx0aUNvbHVtbkZsb3dUaHJlYWQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAog
ICAgIGJvb2wgbmVlZHNMYXlvdXQgPSBmYWxzZTsKICAgICBib29sIG9sZFByb2dyZXNzaW9uSXNJ
bmxpbmUgPSBtdWx0aUNvbHVtbkZsb3dUaHJlYWQoKS0+cHJvZ3Jlc3Npb25Jc0lubGluZSgpOwot
ICAgIGJvb2wgbmV3UHJvZ3Jlc3Npb25Jc0lubGluZSA9IHN0eWxlLT5oYXNJbmxpbmVDb2x1bW5B
eGlzKCk7CisgICAgYm9vbCBuZXdQcm9ncmVzc2lvbklzSW5saW5lID0gc3R5bGUuaGFzSW5saW5l
Q29sdW1uQXhpcygpOwogICAgIGlmIChvbGRQcm9ncmVzc2lvbklzSW5saW5lICE9IG5ld1Byb2dy
ZXNzaW9uSXNJbmxpbmUpIHsKICAgICAgICAgbXVsdGlDb2x1bW5GbG93VGhyZWFkKCktPnNldFBy
b2dyZXNzaW9uSXNJbmxpbmUobmV3UHJvZ3Jlc3Npb25Jc0lubGluZSk7CiAgICAgICAgIG5lZWRz
TGF5b3V0ID0gdHJ1ZTsKICAgICB9CiAKICAgICBib29sIG9sZFByb2dyZXNzaW9uSXNSZXZlcnNl
ZCA9IG11bHRpQ29sdW1uRmxvd1RocmVhZCgpLT5wcm9ncmVzc2lvbklzUmV2ZXJzZWQoKTsKLSAg
ICBib29sIG5ld1Byb2dyZXNzaW9uSXNSZXZlcnNlZCA9IHN0eWxlLT5jb2x1bW5Qcm9ncmVzc2lv
bigpID09IFJldmVyc2VDb2x1bW5Qcm9ncmVzc2lvbjsKKyAgICBib29sIG5ld1Byb2dyZXNzaW9u
SXNSZXZlcnNlZCA9IHN0eWxlLmNvbHVtblByb2dyZXNzaW9uKCkgPT0gUmV2ZXJzZUNvbHVtblBy
b2dyZXNzaW9uOwogICAgIGlmIChvbGRQcm9ncmVzc2lvbklzUmV2ZXJzZWQgIT0gbmV3UHJvZ3Jl
c3Npb25Jc1JldmVyc2VkKSB7CiAgICAgICAgIG11bHRpQ29sdW1uRmxvd1RocmVhZCgpLT5zZXRQ
cm9ncmVzc2lvbklzUmV2ZXJzZWQobmV3UHJvZ3Jlc3Npb25Jc1JldmVyc2VkKTsKICAgICAgICAg
bmVlZHNMYXlvdXQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrRmxvdy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2Nr
Rmxvdy5oCmluZGV4IDk2NjFjNTYzMzMzMDQyODk5ODAyMjkxOTAxMzY3MWVjODYwZWMzYzguLjE2
NDMzMjFiNGJlOTQzZTVmMjZmYjE3ZTJjZDg2NGExMTViZjRiYTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmgKQEAgLTM4Miw3ICszODIsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBjcmVhdGVNdWx0aUNvbHVtbkZsb3dUaHJlYWQoKTsKICAgICB2b2lkIGRlc3Ry
b3lNdWx0aUNvbHVtbkZsb3dUaHJlYWQoKTsKIAotICAgIHZvaWQgdXBkYXRlQ29sdW1uUHJvZ3Jl
c3Npb25Gcm9tU3R5bGUoUmVuZGVyU3R5bGUqKTsKKyAgICB2b2lkIHVwZGF0ZUNvbHVtblByb2dy
ZXNzaW9uRnJvbVN0eWxlKFJlbmRlclN0eWxlJik7CiAgICAgdm9pZCB1cGRhdGVTdHlsZXNGb3JD
b2x1bW5DaGlsZHJlbigpOwogCiAgICAgdmlydHVhbCBib29sIG5lZWRzTGF5b3V0QWZ0ZXJSZWdp
b25SYW5nZUNoYW5nZSgpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94LmNwcAppbmRleCA0Y2NjZmJhNTI3NTZkMmYxMGE2MGM0NzRkMjk5OWQzMWY0MGM4Zjk2
Li41YjZjOWRlZjYxZDFiYzQzZGU3NTJkYjEzZTgyOWFlYjIzZmU5OTJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcApAQCAtNDA4LDcgKzQwOCw3IEBAIHZvaWQgUmVuZGVy
Qm94OjpzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5
bGUqIG9sZFN0eWxlCiAgICAgICAgIGlmICh2aWV3Q2hhbmdlZFdyaXRpbmdNb2RlICYmIHBhZ2lu
YXRpb24ubW9kZSAhPSBQYWdpbmF0aW9uOjpVbnBhZ2luYXRlZCkgewogICAgICAgICAgICAgdmll
d1N0eWxlLnNldENvbHVtblN0eWxlc0Zyb21QYWdpbmF0aW9uTW9kZShwYWdpbmF0aW9uLm1vZGUp
OwogICAgICAgICAgICAgaWYgKHZpZXcoKS5tdWx0aUNvbHVtbkZsb3dUaHJlYWQoKSkKLSAgICAg
ICAgICAgICAgICB2aWV3KCkudXBkYXRlQ29sdW1uUHJvZ3Jlc3Npb25Gcm9tU3R5bGUoJnZpZXdT
dHlsZSk7CisgICAgICAgICAgICAgICAgdmlldygpLnVwZGF0ZUNvbHVtblByb2dyZXNzaW9uRnJv
bVN0eWxlKHZpZXdTdHlsZSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGlmICh2aWV3
U3R5bGVDaGFuZ2VkICYmIHZpZXcoKS5tdWx0aUNvbHVtbkZsb3dUaHJlYWQoKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAppbmRleCBjM2Q0OGU2ZmQ1NzJlZTA4
NTgzYjEzOTExOWQ5MmJmNWUzOGQzZWU1Li40MGU2NzAyNjhmOGM2N2E2OWQ4MzNlYTVlNGMwN2Q1
NmUyODJlMWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3Bw
CkBAIC0zOTEsNyArMzkxLDcgQEAgdm9pZCBSZW5kZXJFbGVtZW50OjpzZXRTdHlsZShQYXNzUmVm
PFJlbmRlclN0eWxlPiBzdHlsZSkKICAgICAvLyBhbmQgcmVtb3ZlIHRoZSBjaGVjayBvZiBtX2hh
c0luaXRpYWxpemVkU3R5bGUgYmVsb3cgdG9vLgogICAgIEFTU0VSVChtX2hhc0luaXRpYWxpemVk
U3R5bGUgfHwgaXNSZW5kZXJWaWV3KCkpOwogCi0gICAgaWYgKCZtX3N0eWxlLmdldCgpID09ICZz
dHlsZS5nZXQoKSkgeworICAgIGlmIChtX3N0eWxlLnB0cigpID09IHN0eWxlLnB0cigpKSB7CiAg
ICAgICAgIC8vIEZJWE1FOiBDYW4gd2UgY2hhbmdlIHRoaW5ncyBzbyB3ZSBuZXZlciBoaXQgdGhp
cyBjb2RlIHBhdGg/CiAgICAgICAgIC8vIFdlIG5lZWQgdG8gcnVuIHRocm91Z2ggYWRqdXN0U3R5
bGVEaWZmZXJlbmNlKCkgZm9yIGlmcmFtZXMsIHBsdWdpbnMsIGFuZCBjYW52YXMgc28KICAgICAg
ICAgLy8gc3R5bGUgc2hhcmluZyBpcyBkaXNhYmxlZCBmb3IgdGhlbS4gVGhhdCBzaG91bGQgZW5z
dXJlIHRoYXQgd2UgbmV2ZXIgaGl0IHRoaXMgY29kZSBwYXRoLgpAQCAtNDA1LDcgKzQwNSw3IEBA
IHZvaWQgUmVuZGVyRWxlbWVudDo6c2V0U3R5bGUoUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUp
CiAgICAgU3R5bGVEaWZmZXJlbmNlIGRpZmYgPSBTdHlsZURpZmZlcmVuY2VFcXVhbDsKICAgICB1
bnNpZ25lZCBjb250ZXh0U2Vuc2l0aXZlUHJvcGVydGllcyA9IENvbnRleHRTZW5zaXRpdmVQcm9w
ZXJ0eU5vbmU7CiAgICAgaWYgKG1faGFzSW5pdGlhbGl6ZWRTdHlsZSkKLSAgICAgICAgZGlmZiA9
IG1fc3R5bGUtPmRpZmYoJnN0eWxlLmdldCgpLCBjb250ZXh0U2Vuc2l0aXZlUHJvcGVydGllcyk7
CisgICAgICAgIGRpZmYgPSBtX3N0eWxlLT5kaWZmKHN0eWxlLmdldCgpLCBjb250ZXh0U2Vuc2l0
aXZlUHJvcGVydGllcyk7CiAKICAgICBkaWZmID0gYWRqdXN0U3R5bGVEaWZmZXJlbmNlKGRpZmYs
IGNvbnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzKTsKIApAQCAtNDMwLDExICs0MzAsMTEgQEAgdm9p
ZCBSZW5kZXJFbGVtZW50OjpzZXRTdHlsZShQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKIAog
ICAgIGJvb2wgZG9lc05vdE5lZWRMYXlvdXQgPSAhcGFyZW50KCk7CiAKLSAgICBzdHlsZURpZENo
YW5nZShkaWZmLCAmb2xkU3R5bGUuZ2V0KCkpOworICAgIHN0eWxlRGlkQ2hhbmdlKGRpZmYsIG9s
ZFN0eWxlLnB0cigpKTsKIAogICAgIC8vIFRleHQgcmVuZGVyZXJzIHVzZSB0aGVpciBwYXJlbnQg
c3R5bGUuIE5vdGlmeSB0aGVtIGFib3V0IHRoZSBjaGFuZ2UuCiAgICAgZm9yIChhdXRvJiBjaGls
ZCA6IGNoaWxkcmVuT2ZUeXBlPFJlbmRlclRleHQ+KCp0aGlzKSkKLSAgICAgICAgY2hpbGQuc3R5
bGVEaWRDaGFuZ2UoZGlmZiwgJm9sZFN0eWxlLmdldCgpKTsKKyAgICAgICAgY2hpbGQuc3R5bGVE
aWRDaGFuZ2UoZGlmZiwgb2xkU3R5bGUucHRyKCkpOwogCiAgICAgLy8gRklYTUU6IHx0aGlzfCBt
aWdodCBiZSBkZXN0cm95ZWQgaGVyZS4gVGhpcyBjYW4gY3VycmVudGx5IGhhcHBlbiBmb3IgYSBS
ZW5kZXJUZXh0RnJhZ21lbnQgd2hlbgogICAgIC8vIGl0cyBmaXJzdC1sZXR0ZXIgYmxvY2sgZ2V0
cyBhbiB1cGRhdGUgaW4gUmVuZGVyVGV4dEZyYWdtZW50OjpzdHlsZURpZENoYW5nZS4gRm9yIFJl
bmRlclRleHRGcmFnbWVudChzKSwKQEAgLTQ1MSw5ICs0NTEsOSBAQCB2b2lkIFJlbmRlckVsZW1l
bnQ6OnNldFN0eWxlKFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQogICAgICAgICBpZiAodXBk
YXRlZERpZmYgPT0gU3R5bGVEaWZmZXJlbmNlTGF5b3V0KQogICAgICAgICAgICAgc2V0TmVlZHNM
YXlvdXRBbmRQcmVmV2lkdGhzUmVjYWxjKCk7CiAgICAgICAgIGVsc2UgaWYgKHVwZGF0ZWREaWZm
ID09IFN0eWxlRGlmZmVyZW5jZUxheW91dFBvc2l0aW9uZWRNb3ZlbWVudE9ubHkpCi0gICAgICAg
ICAgICBzZXROZWVkc1Bvc2l0aW9uZWRNb3ZlbWVudExheW91dCgmb2xkU3R5bGUuZ2V0KCkpOwor
ICAgICAgICAgICAgc2V0TmVlZHNQb3NpdGlvbmVkTW92ZW1lbnRMYXlvdXQob2xkU3R5bGUucHRy
KCkpOwogICAgICAgICBlbHNlIGlmICh1cGRhdGVkRGlmZiA9PSBTdHlsZURpZmZlcmVuY2VTaW1w
bGlmaWVkTGF5b3V0QW5kUG9zaXRpb25lZE1vdmVtZW50KSB7Ci0gICAgICAgICAgICBzZXROZWVk
c1Bvc2l0aW9uZWRNb3ZlbWVudExheW91dCgmb2xkU3R5bGUuZ2V0KCkpOworICAgICAgICAgICAg
c2V0TmVlZHNQb3NpdGlvbmVkTW92ZW1lbnRMYXlvdXQob2xkU3R5bGUucHRyKCkpOwogICAgICAg
ICAgICAgc2V0TmVlZHNTaW1wbGlmaWVkTm9ybWFsRmxvd0xheW91dCgpOwogICAgICAgICB9IGVs
c2UgaWYgKHVwZGF0ZWREaWZmID09IFN0eWxlRGlmZmVyZW5jZVNpbXBsaWZpZWRMYXlvdXQpCiAg
ICAgICAgICAgICBzZXROZWVkc1NpbXBsaWZpZWROb3JtYWxGbG93TGF5b3V0KCk7CkBAIC05Njks
NyArOTY5LDcgQEAgdm9pZCBSZW5kZXJFbGVtZW50OjpzdHlsZURpZENoYW5nZShTdHlsZURpZmZl
cmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFMKICAgICAgICAgcmV0dXJuOwogICAg
IAogICAgIGlmIChkaWZmID09IFN0eWxlRGlmZmVyZW5jZUxheW91dCB8fCBkaWZmID09IFN0eWxl
RGlmZmVyZW5jZVNpbXBsaWZpZWRMYXlvdXQpIHsKLSAgICAgICAgUmVuZGVyQ291bnRlcjo6cmVu
ZGVyZXJTdHlsZUNoYW5nZWQoKnRoaXMsIG9sZFN0eWxlLCAmbV9zdHlsZS5nZXQoKSk7CisgICAg
ICAgIFJlbmRlckNvdW50ZXI6OnJlbmRlcmVyU3R5bGVDaGFuZ2VkKCp0aGlzLCBvbGRTdHlsZSwg
bV9zdHlsZS5wdHIoKSk7CiAKICAgICAgICAgLy8gSWYgdGhlIG9iamVjdCBhbHJlYWR5IG5lZWRz
IGxheW91dCwgdGhlbiBzZXROZWVkc0xheW91dCB3b24ndCBkbwogICAgICAgICAvLyBhbnkgd29y
ay4gQnV0IGlmIHRoZSBjb250YWluaW5nIGJsb2NrIGhhcyBjaGFuZ2VkLCB0aGVuIHdlIG1heSBu
ZWVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93
RnJhZ21lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd0Zy
YWdtZW50LmNwcAppbmRleCBiNTA4NDM1ZDMwMTE3NzNhM2JmM2U1NzRiZDU2OTE5NGVjZGQ5OGE2
Li5mNzhiM2IyYzNhYWU5ZGI1NWJjYjlkZTk1Mzc4OGU5MWEyZTQ2MTM1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5jcHAKQEAg
LTQ3Miw3ICs0NzIsNyBAQCB2b2lkIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50OjpyZXN0b3JlUmVn
aW9uT2JqZWN0c09yaWdpbmFsU3R5bGUoKQogICAgICAgICBpZiAoIXNob3VsZENhY2hlUmVnaW9u
U3R5bGUpIHsKICAgICAgICAgICAgIC8vIENoZWNrIHdoZXRoZXIgd2Ugc2hvdWxkIGNhY2hlIHRo
ZSBjb21wdXRlZCBzdHlsZSBpbiByZWdpb24uCiAgICAgICAgICAgICB1bnNpZ25lZCBjaGFuZ2Vk
Q29udGV4dFNlbnNpdGl2ZVByb3BlcnRpZXMgPSBDb250ZXh0U2Vuc2l0aXZlUHJvcGVydHlOb25l
OwotICAgICAgICAgICAgU3R5bGVEaWZmZXJlbmNlIHN0eWxlRGlmZiA9IG9iamVjdE9yaWdpbmFs
U3R5bGUtPmRpZmYob2JqZWN0UmVnaW9uU3R5bGUuZ2V0KCksIGNoYW5nZWRDb250ZXh0U2Vuc2l0
aXZlUHJvcGVydGllcyk7CisgICAgICAgICAgICBTdHlsZURpZmZlcmVuY2Ugc3R5bGVEaWZmID0g
b2JqZWN0T3JpZ2luYWxTdHlsZS0+ZGlmZigqb2JqZWN0UmVnaW9uU3R5bGUsIGNoYW5nZWRDb250
ZXh0U2Vuc2l0aXZlUHJvcGVydGllcyk7CiAgICAgICAgICAgICBpZiAoc3R5bGVEaWZmIDwgU3R5
bGVEaWZmZXJlbmNlTGF5b3V0UG9zaXRpb25lZE1vdmVtZW50T25seSkKICAgICAgICAgICAgICAg
ICBzaG91bGRDYWNoZVJlZ2lvblN0eWxlID0gdHJ1ZTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAKaW5kZXggZjQyZWNlNzY2NmMz
ZWQ3MWYwZDVkMTU2N2Q2YmUxNjA5NTVjZDdlMC4uMWQxYjNlNWJlZDc3Njk3NDJlODVhMGJlY2Nk
NGU0MjA5ZWVjNzAzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRleHRDb250cm9sLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4
dENvbnRyb2wuY3BwCkBAIC03MywzNiArNzMsMzYgQEAgdm9pZCBSZW5kZXJUZXh0Q29udHJvbDo6
c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlKgog
ICAgIHRleHRGb3JtQ29udHJvbEVsZW1lbnQoKS51cGRhdGVQbGFjZWhvbGRlclZpc2liaWxpdHko
KTsKIH0KIAotdm9pZCBSZW5kZXJUZXh0Q29udHJvbDo6YWRqdXN0SW5uZXJUZXh0U3R5bGUoY29u
c3QgUmVuZGVyU3R5bGUqIHN0YXJ0U3R5bGUsIFJlbmRlclN0eWxlKiB0ZXh0QmxvY2tTdHlsZSkg
Y29uc3QKK3ZvaWQgUmVuZGVyVGV4dENvbnRyb2w6OmFkanVzdElubmVyVGV4dFN0eWxlKGNvbnN0
IFJlbmRlclN0eWxlKiBzdGFydFN0eWxlLCBSZW5kZXJTdHlsZSYgdGV4dEJsb2NrU3R5bGUpIGNv
bnN0CiB7CiAgICAgLy8gVGhlIGlubmVyIGJsb2NrLCBpZiBwcmVzZW50LCBhbHdheXMgaGFzIGl0
cyBkaXJlY3Rpb24gc2V0IHRvIExUUiwKICAgICAvLyBzbyB3ZSBuZWVkIHRvIGluaGVyaXQgdGhl
IGRpcmVjdGlvbiBhbmQgdW5pY29kZS1iaWRpIHN0eWxlIGZyb20gdGhlIGVsZW1lbnQuCi0gICAg
dGV4dEJsb2NrU3R5bGUtPnNldERpcmVjdGlvbihzdHlsZSgpLmRpcmVjdGlvbigpKTsKLSAgICB0
ZXh0QmxvY2tTdHlsZS0+c2V0VW5pY29kZUJpZGkoc3R5bGUoKS51bmljb2RlQmlkaSgpKTsKKyAg
ICB0ZXh0QmxvY2tTdHlsZS5zZXREaXJlY3Rpb24oc3R5bGUoKS5kaXJlY3Rpb24oKSk7CisgICAg
dGV4dEJsb2NrU3R5bGUuc2V0VW5pY29kZUJpZGkoc3R5bGUoKS51bmljb2RlQmlkaSgpKTsKIAog
ICAgIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50JiBjb250cm9sID0gdGV4dEZvcm1Db250cm9s
RWxlbWVudCgpOwogICAgIGlmIChIVE1MRWxlbWVudCogaW5uZXJUZXh0ID0gY29udHJvbC5pbm5l
clRleHRFbGVtZW50KCkpIHsKICAgICAgICAgaWYgKGNvbnN0IFN0eWxlUHJvcGVydGllcyogcHJv
cGVydGllcyA9IGlubmVyVGV4dC0+cHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGUoKSkgewogICAg
ICAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSA9IHByb3BlcnRpZXMtPmdldFByb3BlcnR5
Q1NTVmFsdWUoQ1NTUHJvcGVydHlXZWJraXRVc2VyTW9kaWZ5KTsKICAgICAgICAgICAgIGlmIChp
czxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUuZ2V0KCkpKQotICAgICAgICAgICAgICAgIHRleHRC
bG9ja1N0eWxlLT5zZXRVc2VyTW9kaWZ5KGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdmFs
dWUpKTsKKyAgICAgICAgICAgICAgICB0ZXh0QmxvY2tTdHlsZS5zZXRVc2VyTW9kaWZ5KGRvd25j
YXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdmFsdWUpKTsKICAgICAgICAgfQogICAgIH0KIAogICAg
IGlmIChjb250cm9sLmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpKQotICAgICAgICB0ZXh0QmxvY2tT
dHlsZS0+c2V0Q29sb3IodGhlbWUoKS5kaXNhYmxlZFRleHRDb2xvcih0ZXh0QmxvY2tTdHlsZS0+
dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCBzdGFydFN0eWxlLT52aXNp
dGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpKSk7CisgICAgICAg
IHRleHRCbG9ja1N0eWxlLnNldENvbG9yKHRoZW1lKCkuZGlzYWJsZWRUZXh0Q29sb3IodGV4dEJs
b2NrU3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCBzdGFydFN0
eWxlLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpKSk7
CiAjaWYgUExBVEZPUk0oSU9TKQotICAgIGlmICh0ZXh0QmxvY2tTdHlsZS0+dGV4dFNlY3VyaXR5
KCkgIT0gVFNOT05FICYmICF0ZXh0QmxvY2tTdHlsZS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigp
KSB7CisgICAgaWYgKHRleHRCbG9ja1N0eWxlLnRleHRTZWN1cml0eSgpICE9IFRTTk9ORSAmJiAh
dGV4dEJsb2NrU3R5bGUuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKSB7CiAgICAgICAgIC8vIFBy
ZXNlcnZlIHRoZSBhbGlnbm1lbnQgYnV0IGZvcmNlIHRoZSBkaXJlY3Rpb24gdG8gTFRSIHNvIHRo
YXQgdGhlIGxhc3QtdHlwZWQsIHVubWFza2VkIGNoYXJhY3RlcgogICAgICAgICAvLyAod2hpY2gg
Y2Fubm90IGhhdmUgUlRMIGRpcmVjdGlvbmFsaXR5KSB3aWxsIGFwcGVhciB0byB0aGUgcmlnaHQg
b2YgdGhlIG1hc2tlZCBjaGFyYWN0ZXJzLiBTZWUgPHJkYXI6Ly9wcm9ibGVtLzcwMjQzNzU+Lgog
ICAgICAgICAKLSAgICAgICAgc3dpdGNoICh0ZXh0QmxvY2tTdHlsZS0+dGV4dEFsaWduKCkpIHsK
KyAgICAgICAgc3dpdGNoICh0ZXh0QmxvY2tTdHlsZS50ZXh0QWxpZ24oKSkgewogICAgICAgICBj
YXNlIFRBU1RBUlQ6CiAgICAgICAgIGNhc2UgSlVTVElGWToKLSAgICAgICAgICAgIHRleHRCbG9j
a1N0eWxlLT5zZXRUZXh0QWxpZ24oUklHSFQpOworICAgICAgICAgICAgdGV4dEJsb2NrU3R5bGUu
c2V0VGV4dEFsaWduKFJJR0hUKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFRB
RU5EOgotICAgICAgICAgICAgdGV4dEJsb2NrU3R5bGUtPnNldFRleHRBbGlnbihMRUZUKTsKKyAg
ICAgICAgICAgIHRleHRCbG9ja1N0eWxlLnNldFRleHRBbGlnbihMRUZUKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIExFRlQ6CiAgICAgICAgIGNhc2UgUklHSFQ6CkBAIC0xMTMs
NyArMTEzLDcgQEAgdm9pZCBSZW5kZXJUZXh0Q29udHJvbDo6YWRqdXN0SW5uZXJUZXh0U3R5bGUo
Y29uc3QgUmVuZGVyU3R5bGUqIHN0YXJ0U3R5bGUsIFJlbmQKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAKLSAgICAgICAgdGV4dEJsb2NrU3R5bGUtPnNldERpcmVjdGlvbihMVFIpOwor
ICAgICAgICB0ZXh0QmxvY2tTdHlsZS5zZXREaXJlY3Rpb24oTFRSKTsKICAgICB9CiAjZW5kaWYK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJv
bC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmgKaW5kZXgg
NTBhZjkxNGI5ZjcyOTM1ZWVmODIyYjA0YjdhNDIyZmNlYzkyOGQ2MC4uZWFjNTVlNTY0Y2VmNWQ2
NDQ5NzU2MjdiNzc3MDViYjhiOTBhZTM3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRleHRDb250cm9sLmgKQEAgLTUxLDcgKzUxLDcgQEAgcHJvdGVjdGVkOgogICAgIFRl
eHRDb250cm9sSW5uZXJUZXh0RWxlbWVudCogaW5uZXJUZXh0RWxlbWVudCgpIGNvbnN0OwogCiAg
ICAgaW50IHNjcm9sbGJhclRoaWNrbmVzcygpIGNvbnN0OwotICAgIHZvaWQgYWRqdXN0SW5uZXJU
ZXh0U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUqIHN0YXJ0U3R5bGUsIFJlbmRlclN0eWxlKiB0ZXh0
QmxvY2tTdHlsZSkgY29uc3Q7CisgICAgdm9pZCBhZGp1c3RJbm5lclRleHRTdHlsZShjb25zdCBS
ZW5kZXJTdHlsZSogc3RhcnRTdHlsZSwgUmVuZGVyU3R5bGUmIHRleHRCbG9ja1N0eWxlKSBjb25z
dDsKIAogICAgIHZpcnR1YWwgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNv
bnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuY3BwCmluZGV4
IDQwYjRiZmQxNDUwNGIwZWEzOGZmNjdkOWJlOGNjZGQzOGNmYjdkNTAuLjgyZmIzNWJkZGQzZDM4
NzgyZjg3MGJkY2EyZmNjMzJlYzY5NzIyYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmNwcApAQCAtOTEsNyArOTEs
NyBAQCBQYXNzUmVmPFJlbmRlclN0eWxlPiBSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZTo6Y3Jl
YXRlSW5uZXJUZXh0U3R5bGUoY29uc3QgUmVuZAogewogICAgIGF1dG8gdGV4dEJsb2NrU3R5bGUg
PSBSZW5kZXJTdHlsZTo6Y3JlYXRlKCk7CiAgICAgdGV4dEJsb2NrU3R5bGUuZ2V0KCkuaW5oZXJp
dEZyb20oc3RhcnRTdHlsZSk7Ci0gICAgYWRqdXN0SW5uZXJUZXh0U3R5bGUoc3RhcnRTdHlsZSwg
JnRleHRCbG9ja1N0eWxlLmdldCgpKTsKKyAgICBhZGp1c3RJbm5lclRleHRTdHlsZShzdGFydFN0
eWxlLCB0ZXh0QmxvY2tTdHlsZS5nZXQoKSk7CiAgICAgdGV4dEJsb2NrU3R5bGUuZ2V0KCkuc2V0
RGlzcGxheShCTE9DSyk7CiAKICNpZiBQTEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCmluZGV4
IGMyZWM3ZDY3NDYwNTAzZTliZmNjZWEwMTQ4ZGI3M2FkYmZmYmU5NjUuLmNkZWNiMzM4NGM0Y2M3
YTM1YmU4NGQ1MGRlZDk3NjE4MjRkMWUxMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCkBAIC0zNjgsNyAr
MzY4LDcgQEAgUGFzc1JlZjxSZW5kZXJTdHlsZT4gUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5l
OjpjcmVhdGVJbm5lclRleHRTdHlsZShjb25zdCBSZW4KIHsKICAgICBhdXRvIHRleHRCbG9ja1N0
eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZSgpOwogICAgIHRleHRCbG9ja1N0eWxlLmdldCgpLmlu
aGVyaXRGcm9tKHN0YXJ0U3R5bGUpOwotICAgIGFkanVzdElubmVyVGV4dFN0eWxlKHN0YXJ0U3R5
bGUsICZ0ZXh0QmxvY2tTdHlsZS5nZXQoKSk7CisgICAgYWRqdXN0SW5uZXJUZXh0U3R5bGUoc3Rh
cnRTdHlsZSwgdGV4dEJsb2NrU3R5bGUuZ2V0KCkpOwogCiAgICAgdGV4dEJsb2NrU3R5bGUuZ2V0
KCkuc2V0V2hpdGVTcGFjZShQUkUpOwogICAgIHRleHRCbG9ja1N0eWxlLmdldCgpLnNldE92ZXJm
bG93V3JhcChOb3JtYWxPdmVyZmxvd1dyYXApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL0RhdGFSZWYuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9EYXRhUmVmLmgKaW5kZXggNzk2NGNkNjY3MWE0YmIyOTRiZmEzM2U0MDVmOWIzMmY4ZmM2ODk4
ZS4uOTI0NDUzNzhhNDM3YTY1ZTBkMTA0ZDY4NWQ4NmZkZWQwYmQ3NTc2ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0RhdGFSZWYuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvRGF0YVJlZi5oCkBAIC0zNSw3ICszNSw3IEBAIHB1YmxpYzoK
ICAgICBEYXRhUmVmKGNvbnN0IERhdGFSZWYmIG90aGVyKSA6IG1fZGF0YShjb25zdF9jYXN0PFQm
PihvdGhlci5tX2RhdGEuZ2V0KCkpKSB7IH0KICAgICBEYXRhUmVmJiBvcGVyYXRvcj0oY29uc3Qg
RGF0YVJlZiYgb3RoZXIpIHsgbV9kYXRhID0gY29uc3RfY2FzdDxUJj4ob3RoZXIubV9kYXRhLmdl
dCgpKTsgcmV0dXJuICp0aGlzOyB9CiAKLSAgICBjb25zdCBUKiBnZXQoKSBjb25zdCB7IHJldHVy
biAmbV9kYXRhLmdldCgpOyB9CisgICAgY29uc3QgVCogZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9k
YXRhLnB0cigpOyB9CiAKICAgICBjb25zdCBUJiBvcGVyYXRvciooKSBjb25zdCB7IHJldHVybiAq
Z2V0KCk7IH0KICAgICBjb25zdCBUKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gZ2V0KCk7
IH0KQEAgLTQ0LDE3ICs0NCwxNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBpZiAoIW1fZGF0
YS0+aGFzT25lUmVmKCkpCiAgICAgICAgICAgICBtX2RhdGEgPSBtX2RhdGEtPmNvcHkoKTsKLSAg
ICAgICAgcmV0dXJuICZtX2RhdGEuZ2V0KCk7CisgICAgICAgIHJldHVybiBtX2RhdGEucHRyKCk7
CiAgICAgfQogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IERhdGFSZWY8VD4mIG8pIGNvbnN0
CiAgICAgewotICAgICAgICByZXR1cm4gJm1fZGF0YS5nZXQoKSA9PSAmby5tX2RhdGEuZ2V0KCkg
fHwgbV9kYXRhLmdldCgpID09IG8ubV9kYXRhLmdldCgpOworICAgICAgICByZXR1cm4gbV9kYXRh
LnB0cigpID09IG8ubV9kYXRhLnB0cigpIHx8IG1fZGF0YS5nZXQoKSA9PSBvLm1fZGF0YS5nZXQo
KTsKICAgICB9CiAgICAgCiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IERhdGFSZWY8VD4mIG8p
IGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gJm1fZGF0YS5nZXQoKSAhPSAmby5tX2RhdGEu
Z2V0KCkgJiYgbV9kYXRhLmdldCgpICE9IG8ubV9kYXRhLmdldCgpOworICAgICAgICByZXR1cm4g
bV9kYXRhLnB0cigpICE9IG8ubV9kYXRhLnB0cigpICYmIG1fZGF0YS5nZXQoKSAhPSBvLm1fZGF0
YS5nZXQoKTsKICAgICB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlLmNwcAppbmRleCA5ZmRkMjJhOWJkYzRkNmE4YWYxYmM5ZDhiMDFk
YWEwOTBkZWRkNGYwLi43Nzc4YThkM2E0NDU5N2Y2MGIzOWM1YjMzYzk2ZmRkYWY1ZmM2ZDM1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKQEAg
LTQwNiwyMjcgKzQwNiwyMjcgQEAgaW5saW5lIGJvb2wgUmVuZGVyU3R5bGU6OmNoYW5nZUFmZmVj
dHNWaXN1YWxPdmVyZmxvdyhjb25zdCBSZW5kZXJTdHlsZSYgb3RoZXIpIGMKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKLWJvb2wgUmVuZGVyU3R5bGU6OmNoYW5nZVJlcXVpcmVzTGF5b3V0KGNvbnN0
IFJlbmRlclN0eWxlKiBvdGhlciwgdW5zaWduZWQmIGNoYW5nZWRDb250ZXh0U2Vuc2l0aXZlUHJv
cGVydGllcykgY29uc3QKLXsKLSAgICBpZiAobV9ib3gtPndpZHRoKCkgIT0gb3RoZXItPm1fYm94
LT53aWR0aCgpCi0gICAgICAgIHx8IG1fYm94LT5taW5XaWR0aCgpICE9IG90aGVyLT5tX2JveC0+
bWluV2lkdGgoKQotICAgICAgICB8fCBtX2JveC0+bWF4V2lkdGgoKSAhPSBvdGhlci0+bV9ib3gt
Pm1heFdpZHRoKCkKLSAgICAgICAgfHwgbV9ib3gtPmhlaWdodCgpICE9IG90aGVyLT5tX2JveC0+
aGVpZ2h0KCkKLSAgICAgICAgfHwgbV9ib3gtPm1pbkhlaWdodCgpICE9IG90aGVyLT5tX2JveC0+
bWluSGVpZ2h0KCkKLSAgICAgICAgfHwgbV9ib3gtPm1heEhlaWdodCgpICE9IG90aGVyLT5tX2Jv
eC0+bWF4SGVpZ2h0KCkpCitib29sIFJlbmRlclN0eWxlOjpjaGFuZ2VSZXF1aXJlc0xheW91dChj
b25zdCBSZW5kZXJTdHlsZSYgb3RoZXIsIHVuc2lnbmVkJiBjaGFuZ2VkQ29udGV4dFNlbnNpdGl2
ZVByb3BlcnRpZXMpIGNvbnN0Cit7CisgICAgaWYgKG1fYm94LT53aWR0aCgpICE9IG90aGVyLm1f
Ym94LT53aWR0aCgpCisgICAgICAgIHx8IG1fYm94LT5taW5XaWR0aCgpICE9IG90aGVyLm1fYm94
LT5taW5XaWR0aCgpCisgICAgICAgIHx8IG1fYm94LT5tYXhXaWR0aCgpICE9IG90aGVyLm1fYm94
LT5tYXhXaWR0aCgpCisgICAgICAgIHx8IG1fYm94LT5oZWlnaHQoKSAhPSBvdGhlci5tX2JveC0+
aGVpZ2h0KCkKKyAgICAgICAgfHwgbV9ib3gtPm1pbkhlaWdodCgpICE9IG90aGVyLm1fYm94LT5t
aW5IZWlnaHQoKQorICAgICAgICB8fCBtX2JveC0+bWF4SGVpZ2h0KCkgIT0gb3RoZXIubV9ib3gt
Pm1heEhlaWdodCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChtX2JveC0+dmVy
dGljYWxBbGlnbigpICE9IG90aGVyLT5tX2JveC0+dmVydGljYWxBbGlnbigpIHx8IG5vbmluaGVy
aXRlZF9mbGFncy52ZXJ0aWNhbEFsaWduKCkgIT0gb3RoZXItPm5vbmluaGVyaXRlZF9mbGFncy52
ZXJ0aWNhbEFsaWduKCkpCisgICAgaWYgKG1fYm94LT52ZXJ0aWNhbEFsaWduKCkgIT0gb3RoZXIu
bV9ib3gtPnZlcnRpY2FsQWxpZ24oKSB8fCBub25pbmhlcml0ZWRfZmxhZ3MudmVydGljYWxBbGln
bigpICE9IG90aGVyLm5vbmluaGVyaXRlZF9mbGFncy52ZXJ0aWNhbEFsaWduKCkpCiAgICAgICAg
IHJldHVybiB0cnVlOwogCi0gICAgaWYgKG1fYm94LT5ib3hTaXppbmcoKSAhPSBvdGhlci0+bV9i
b3gtPmJveFNpemluZygpKQorICAgIGlmIChtX2JveC0+Ym94U2l6aW5nKCkgIT0gb3RoZXIubV9i
b3gtPmJveFNpemluZygpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChzdXJyb3Vu
ZC0+bWFyZ2luICE9IG90aGVyLT5zdXJyb3VuZC0+bWFyZ2luKQorICAgIGlmIChzdXJyb3VuZC0+
bWFyZ2luICE9IG90aGVyLnN1cnJvdW5kLT5tYXJnaW4pCiAgICAgICAgIHJldHVybiB0cnVlOwog
Ci0gICAgaWYgKHN1cnJvdW5kLT5wYWRkaW5nICE9IG90aGVyLT5zdXJyb3VuZC0+cGFkZGluZykK
KyAgICBpZiAoc3Vycm91bmQtPnBhZGRpbmcgIT0gb3RoZXIuc3Vycm91bmQtPnBhZGRpbmcpCiAg
ICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBhZGQgYW4gb3B0
aW1pemVkIGZvcm0gb2YgbGF5b3V0IHRoYXQganVzdCByZWNvbXB1dGVzIHZpc3VhbCBvdmVyZmxv
dy4KLSAgICBpZiAoY2hhbmdlQWZmZWN0c1Zpc3VhbE92ZXJmbG93KCpvdGhlcikpCisgICAgaWYg
KGNoYW5nZUFmZmVjdHNWaXN1YWxPdmVyZmxvdyhvdGhlcikpCiAgICAgICAgIHJldHVybiB0cnVl
OwogCi0gICAgaWYgKHJhcmVOb25Jbmhlcml0ZWREYXRhLmdldCgpICE9IG90aGVyLT5yYXJlTm9u
SW5oZXJpdGVkRGF0YS5nZXQoKSkgewotICAgICAgICBpZiAocmFyZU5vbkluaGVyaXRlZERhdGEt
Pm1fYXBwZWFyYW5jZSAhPSBvdGhlci0+cmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYXBwZWFyYW5j
ZSAKLSAgICAgICAgICAgIHx8IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXJnaW5CZWZvcmVDb2xs
YXBzZSAhPSBvdGhlci0+cmFyZU5vbkluaGVyaXRlZERhdGEtPm1hcmdpbkJlZm9yZUNvbGxhcHNl
Ci0gICAgICAgICAgICB8fCByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bWFyZ2luQWZ0ZXJDb2xsYXBz
ZSAhPSBvdGhlci0+cmFyZU5vbkluaGVyaXRlZERhdGEtPm1hcmdpbkFmdGVyQ29sbGFwc2UKLSAg
ICAgICAgICAgIHx8IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5saW5lQ2xhbXAgIT0gb3RoZXItPnJh
cmVOb25Jbmhlcml0ZWREYXRhLT5saW5lQ2xhbXAKLSAgICAgICAgICAgIHx8IHJhcmVOb25Jbmhl
cml0ZWREYXRhLT5tX2luaXRpYWxMZXR0ZXIgIT0gb3RoZXItPnJhcmVOb25Jbmhlcml0ZWREYXRh
LT5tX2luaXRpYWxMZXR0ZXIKLSAgICAgICAgICAgIHx8IHJhcmVOb25Jbmhlcml0ZWREYXRhLT50
ZXh0T3ZlcmZsb3cgIT0gb3RoZXItPnJhcmVOb25Jbmhlcml0ZWREYXRhLT50ZXh0T3ZlcmZsb3cp
CisgICAgaWYgKHJhcmVOb25Jbmhlcml0ZWREYXRhLmdldCgpICE9IG90aGVyLnJhcmVOb25Jbmhl
cml0ZWREYXRhLmdldCgpKSB7CisgICAgICAgIGlmIChyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9h
cHBlYXJhbmNlICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2FwcGVhcmFuY2UKKyAg
ICAgICAgICAgIHx8IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXJnaW5CZWZvcmVDb2xsYXBzZSAh
PSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bWFyZ2luQmVmb3JlQ29sbGFwc2UKKyAgICAg
ICAgICAgIHx8IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXJnaW5BZnRlckNvbGxhcHNlICE9IG90
aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXJnaW5BZnRlckNvbGxhcHNlCisgICAgICAgICAg
ICB8fCByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bGluZUNsYW1wICE9IG90aGVyLnJhcmVOb25Jbmhl
cml0ZWREYXRhLT5saW5lQ2xhbXAKKyAgICAgICAgICAgIHx8IHJhcmVOb25Jbmhlcml0ZWREYXRh
LT5tX2luaXRpYWxMZXR0ZXIgIT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPm1faW5pdGlh
bExldHRlcgorICAgICAgICAgICAgfHwgcmFyZU5vbkluaGVyaXRlZERhdGEtPnRleHRPdmVyZmxv
dyAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dGV4dE92ZXJmbG93KQogICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAKLSAgICAgICAgaWYgKHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3Jl
Z2lvbkZyYWdtZW50ICE9IG90aGVyLT5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9yZWdpb25GcmFn
bWVudCkKKyAgICAgICAgaWYgKHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3JlZ2lvbkZyYWdtZW50
ICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3JlZ2lvbkZyYWdtZW50KQogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAKICNpZiBFTkFCTEUoQ1NTX1NIQVBFUykKLSAgICAgICAgaWYg
KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3NoYXBlTWFyZ2luICE9IG90aGVyLT5yYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+bV9zaGFwZU1hcmdpbikKKyAgICAgICAgaWYgKHJhcmVOb25Jbmhlcml0ZWRE
YXRhLT5tX3NoYXBlTWFyZ2luICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3NoYXBl
TWFyZ2luKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKIAotICAgICAgICBpZiAo
cmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZGVwcmVjYXRlZEZsZXhpYmxlQm94LmdldCgpICE9IG90
aGVyLT5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9kZXByZWNhdGVkRmxleGlibGVCb3guZ2V0KCkK
LSAgICAgICAgICAgICYmICpyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9kZXByZWNhdGVkRmxleGli
bGVCb3guZ2V0KCkgIT0gKm90aGVyLT5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9kZXByZWNhdGVk
RmxleGlibGVCb3guZ2V0KCkpCisgICAgICAgIGlmIChyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9k
ZXByZWNhdGVkRmxleGlibGVCb3guZ2V0KCkgIT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEt
Pm1fZGVwcmVjYXRlZEZsZXhpYmxlQm94LmdldCgpCisgICAgICAgICAgICAmJiAqcmFyZU5vbklu
aGVyaXRlZERhdGEtPm1fZGVwcmVjYXRlZEZsZXhpYmxlQm94LmdldCgpICE9ICpvdGhlci5yYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+bV9kZXByZWNhdGVkRmxleGlibGVCb3guZ2V0KCkpCiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKIAotICAgICAgICBpZiAocmFyZU5vbkluaGVyaXRlZERhdGEtPm1f
ZmxleGlibGVCb3guZ2V0KCkgIT0gb3RoZXItPnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2ZsZXhp
YmxlQm94LmdldCgpCi0gICAgICAgICAgICAmJiAqcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZmxl
eGlibGVCb3guZ2V0KCkgIT0gKm90aGVyLT5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9mbGV4aWJs
ZUJveC5nZXQoKSkKKyAgICAgICAgaWYgKHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2ZsZXhpYmxl
Qm94LmdldCgpICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2ZsZXhpYmxlQm94Lmdl
dCgpCisgICAgICAgICAgICAmJiAqcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZmxleGlibGVCb3gu
Z2V0KCkgIT0gKm90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2ZsZXhpYmxlQm94LmdldCgp
KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGlmIChyYXJlTm9uSW5oZXJpdGVk
RGF0YS0+bV9vcmRlciAhPSBvdGhlci0+cmFyZU5vbkluaGVyaXRlZERhdGEtPm1fb3JkZXIKLSAg
ICAgICAgICAgIHx8IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2FsaWduQ29udGVudCAhPSBvdGhl
ci0+cmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYWxpZ25Db250ZW50Ci0gICAgICAgICAgICB8fCBy
YXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9hbGlnbkl0ZW1zICE9IG90aGVyLT5yYXJlTm9uSW5oZXJp
dGVkRGF0YS0+bV9hbGlnbkl0ZW1zCi0gICAgICAgICAgICB8fCByYXJlTm9uSW5oZXJpdGVkRGF0
YS0+bV9hbGlnblNlbGYgIT0gb3RoZXItPnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2FsaWduU2Vs
ZgotICAgICAgICAgICAgfHwgcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fanVzdGlmeUNvbnRlbnQg
IT0gb3RoZXItPnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2p1c3RpZnlDb250ZW50KQorICAgICAg
ICBpZiAocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fb3JkZXIgIT0gb3RoZXIucmFyZU5vbkluaGVy
aXRlZERhdGEtPm1fb3JkZXIKKyAgICAgICAgICAgIHx8IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5t
X2FsaWduQ29udGVudCAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9hbGlnbkNvbnRl
bnQKKyAgICAgICAgICAgIHx8IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2FsaWduSXRlbXMgIT0g
b3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYWxpZ25JdGVtcworICAgICAgICAgICAgfHwg
cmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYWxpZ25TZWxmICE9IG90aGVyLnJhcmVOb25Jbmhlcml0
ZWREYXRhLT5tX2FsaWduU2VsZgorICAgICAgICAgICAgfHwgcmFyZU5vbkluaGVyaXRlZERhdGEt
Pm1fanVzdGlmeUNvbnRlbnQgIT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPm1fanVzdGlm
eUNvbnRlbnQpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgICAgICBpZiAoIXJhcmVO
b25Jbmhlcml0ZWREYXRhLT5yZWZsZWN0aW9uRGF0YUVxdWl2YWxlbnQoKm90aGVyLT5yYXJlTm9u
SW5oZXJpdGVkRGF0YS5nZXQoKSkpCisgICAgICAgIGlmICghcmFyZU5vbkluaGVyaXRlZERhdGEt
PnJlZmxlY3Rpb25EYXRhRXF1aXZhbGVudCgqb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEuZ2V0
KCkpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICAgICAgaWYgKHJhcmVOb25Jbmhl
cml0ZWREYXRhLT5tX211bHRpQ29sLmdldCgpICE9IG90aGVyLT5yYXJlTm9uSW5oZXJpdGVkRGF0
YS0+bV9tdWx0aUNvbC5nZXQoKQotICAgICAgICAgICAgJiYgKnJhcmVOb25Jbmhlcml0ZWREYXRh
LT5tX211bHRpQ29sLmdldCgpICE9ICpvdGhlci0+cmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbXVs
dGlDb2wuZ2V0KCkpCisgICAgICAgIGlmIChyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9tdWx0aUNv
bC5nZXQoKSAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9tdWx0aUNvbC5nZXQoKQor
ICAgICAgICAgICAgJiYgKnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX211bHRpQ29sLmdldCgpICE9
ICpvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9tdWx0aUNvbC5nZXQoKSkKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogCi0gICAgICAgIGlmIChyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV90
cmFuc2Zvcm0uZ2V0KCkgIT0gb3RoZXItPnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3RyYW5zZm9y
bS5nZXQoKQotICAgICAgICAgICAgJiYgKnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3RyYW5zZm9y
bS5nZXQoKSAhPSAqb3RoZXItPnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3RyYW5zZm9ybS5nZXQo
KSkgeworICAgICAgICBpZiAocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fdHJhbnNmb3JtLmdldCgp
ICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3RyYW5zZm9ybS5nZXQoKQorICAgICAg
ICAgICAgJiYgKnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3RyYW5zZm9ybS5nZXQoKSAhPSAqb3Ro
ZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPm1fdHJhbnNmb3JtLmdldCgpKSB7CiAgICAgICAgICAg
ICBjaGFuZ2VkQ29udGV4dFNlbnNpdGl2ZVByb3BlcnRpZXMgfD0gQ29udGV4dFNlbnNpdGl2ZVBy
b3BlcnR5VHJhbnNmb3JtOwogICAgICAgICAgICAgLy8gRG9uJ3QgcmV0dXJuOyBrZWVwIGxvb2tp
bmcgZm9yIGFub3RoZXIgY2hhbmdlCiAgICAgICAgIH0KIAogI2lmIEVOQUJMRShDU1NfR1JJRF9M
QVlPVVQpCi0gICAgICAgIGlmIChyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ncmlkLmdldCgpICE9
IG90aGVyLT5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ncmlkLmdldCgpCi0gICAgICAgICAgICB8
fCByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ncmlkSXRlbS5nZXQoKSAhPSBvdGhlci0+cmFyZU5v
bkluaGVyaXRlZERhdGEtPm1fZ3JpZEl0ZW0uZ2V0KCkpCisgICAgICAgIGlmIChyYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+bV9ncmlkLmdldCgpICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5t
X2dyaWQuZ2V0KCkKKyAgICAgICAgICAgIHx8IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2dyaWRJ
dGVtLmdldCgpICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2dyaWRJdGVtLmdldCgp
KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShEQVNIQk9B
UkRfU1VQUE9SVCkKICAgICAgICAgLy8gSWYgcmVnaW9ucyBjaGFuZ2UsIHRyaWdnZXIgYSByZWxh
eW91dCB0byByZS1jYWxjIHJlZ2lvbnMuCi0gICAgICAgIGlmIChyYXJlTm9uSW5oZXJpdGVkRGF0
YS0+bV9kYXNoYm9hcmRSZWdpb25zICE9IG90aGVyLT5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9k
YXNoYm9hcmRSZWdpb25zKQorICAgICAgICBpZiAocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZGFz
aGJvYXJkUmVnaW9ucyAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9kYXNoYm9hcmRS
ZWdpb25zKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKICAgICB9CiAKLSAgICBp
ZiAocmFyZUluaGVyaXRlZERhdGEuZ2V0KCkgIT0gb3RoZXItPnJhcmVJbmhlcml0ZWREYXRhLmdl
dCgpKSB7Ci0gICAgICAgIGlmIChyYXJlSW5oZXJpdGVkRGF0YS0+aW5kZW50ICE9IG90aGVyLT5y
YXJlSW5oZXJpdGVkRGF0YS0+aW5kZW50CisgICAgaWYgKHJhcmVJbmhlcml0ZWREYXRhLmdldCgp
ICE9IG90aGVyLnJhcmVJbmhlcml0ZWREYXRhLmdldCgpKSB7CisgICAgICAgIGlmIChyYXJlSW5o
ZXJpdGVkRGF0YS0+aW5kZW50ICE9IG90aGVyLnJhcmVJbmhlcml0ZWREYXRhLT5pbmRlbnQKICNp
ZiBFTkFCTEUoQ1NTM19URVhUKQotICAgICAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPm1f
dGV4dEFsaWduTGFzdCAhPSBvdGhlci0+cmFyZUluaGVyaXRlZERhdGEtPm1fdGV4dEFsaWduTGFz
dAotICAgICAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPm1fdGV4dEp1c3RpZnkgIT0gb3Ro
ZXItPnJhcmVJbmhlcml0ZWREYXRhLT5tX3RleHRKdXN0aWZ5Ci0gICAgICAgICAgICB8fCByYXJl
SW5oZXJpdGVkRGF0YS0+bV90ZXh0SW5kZW50TGluZSAhPSBvdGhlci0+cmFyZUluaGVyaXRlZERh
dGEtPm1fdGV4dEluZGVudExpbmUKKyAgICAgICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT5t
X3RleHRBbGlnbkxhc3QgIT0gb3RoZXIucmFyZUluaGVyaXRlZERhdGEtPm1fdGV4dEFsaWduTGFz
dAorICAgICAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPm1fdGV4dEp1c3RpZnkgIT0gb3Ro
ZXIucmFyZUluaGVyaXRlZERhdGEtPm1fdGV4dEp1c3RpZnkKKyAgICAgICAgICAgIHx8IHJhcmVJ
bmhlcml0ZWREYXRhLT5tX3RleHRJbmRlbnRMaW5lICE9IG90aGVyLnJhcmVJbmhlcml0ZWREYXRh
LT5tX3RleHRJbmRlbnRMaW5lCiAjZW5kaWYKLSAgICAgICAgICAgIHx8IHJhcmVJbmhlcml0ZWRE
YXRhLT5tX2VmZmVjdGl2ZVpvb20gIT0gb3RoZXItPnJhcmVJbmhlcml0ZWREYXRhLT5tX2VmZmVj
dGl2ZVpvb20KKyAgICAgICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT5tX2VmZmVjdGl2ZVpv
b20gIT0gb3RoZXIucmFyZUluaGVyaXRlZERhdGEtPm1fZWZmZWN0aXZlWm9vbQogI2lmIEVOQUJM
RShJT1NfVEVYVF9BVVRPU0laSU5HKQotICAgICAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEt
PnRleHRTaXplQWRqdXN0ICE9IG90aGVyLT5yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dFNpemVBZGp1
c3QKKyAgICAgICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT50ZXh0U2l6ZUFkanVzdCAhPSBv
dGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dFNpemVBZGp1c3QKICNlbmRpZgotICAgICAgICAg
ICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPndvcmRCcmVhayAhPSBvdGhlci0+cmFyZUluaGVyaXRl
ZERhdGEtPndvcmRCcmVhawotICAgICAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPm92ZXJm
bG93V3JhcCAhPSBvdGhlci0+cmFyZUluaGVyaXRlZERhdGEtPm92ZXJmbG93V3JhcAotICAgICAg
ICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPm5ic3BNb2RlICE9IG90aGVyLT5yYXJlSW5oZXJp
dGVkRGF0YS0+bmJzcE1vZGUKLSAgICAgICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT5saW5l
QnJlYWsgIT0gb3RoZXItPnJhcmVJbmhlcml0ZWREYXRhLT5saW5lQnJlYWsKLSAgICAgICAgICAg
IHx8IHJhcmVJbmhlcml0ZWREYXRhLT50ZXh0U2VjdXJpdHkgIT0gb3RoZXItPnJhcmVJbmhlcml0
ZWREYXRhLT50ZXh0U2VjdXJpdHkKLSAgICAgICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT5o
eXBoZW5zICE9IG90aGVyLT5yYXJlSW5oZXJpdGVkRGF0YS0+aHlwaGVucwotICAgICAgICAgICAg
fHwgcmFyZUluaGVyaXRlZERhdGEtPmh5cGhlbmF0aW9uTGltaXRCZWZvcmUgIT0gb3RoZXItPnJh
cmVJbmhlcml0ZWREYXRhLT5oeXBoZW5hdGlvbkxpbWl0QmVmb3JlCi0gICAgICAgICAgICB8fCBy
YXJlSW5oZXJpdGVkRGF0YS0+aHlwaGVuYXRpb25MaW1pdEFmdGVyICE9IG90aGVyLT5yYXJlSW5o
ZXJpdGVkRGF0YS0+aHlwaGVuYXRpb25MaW1pdEFmdGVyCi0gICAgICAgICAgICB8fCByYXJlSW5o
ZXJpdGVkRGF0YS0+aHlwaGVuYXRpb25TdHJpbmcgIT0gb3RoZXItPnJhcmVJbmhlcml0ZWREYXRh
LT5oeXBoZW5hdGlvblN0cmluZwotICAgICAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPmxv
Y2FsZSAhPSBvdGhlci0+cmFyZUluaGVyaXRlZERhdGEtPmxvY2FsZQotICAgICAgICAgICAgfHwg
cmFyZUluaGVyaXRlZERhdGEtPm1fcnVieVBvc2l0aW9uICE9IG90aGVyLT5yYXJlSW5oZXJpdGVk
RGF0YS0+bV9ydWJ5UG9zaXRpb24KLSAgICAgICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT50
ZXh0RW1waGFzaXNNYXJrICE9IG90aGVyLT5yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEVtcGhhc2lz
TWFyawotICAgICAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPnRleHRFbXBoYXNpc1Bvc2l0
aW9uICE9IG90aGVyLT5yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEVtcGhhc2lzUG9zaXRpb24KLSAg
ICAgICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT50ZXh0RW1waGFzaXNDdXN0b21NYXJrICE9
IG90aGVyLT5yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEVtcGhhc2lzQ3VzdG9tTWFyawotICAgICAg
ICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPm1fdGV4dE9yaWVudGF0aW9uICE9IG90aGVyLT5y
YXJlSW5oZXJpdGVkRGF0YS0+bV90ZXh0T3JpZW50YXRpb24KLSAgICAgICAgICAgIHx8IHJhcmVJ
bmhlcml0ZWREYXRhLT5tX3RhYlNpemUgIT0gb3RoZXItPnJhcmVJbmhlcml0ZWREYXRhLT5tX3Rh
YlNpemUKLSAgICAgICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT5tX2xpbmVCb3hDb250YWlu
ICE9IG90aGVyLT5yYXJlSW5oZXJpdGVkRGF0YS0+bV9saW5lQm94Q29udGFpbgotICAgICAgICAg
ICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPm1fbGluZUdyaWQgIT0gb3RoZXItPnJhcmVJbmhlcml0
ZWREYXRhLT5tX2xpbmVHcmlkCisgICAgICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+d29y
ZEJyZWFrICE9IG90aGVyLnJhcmVJbmhlcml0ZWREYXRhLT53b3JkQnJlYWsKKyAgICAgICAgICAg
IHx8IHJhcmVJbmhlcml0ZWREYXRhLT5vdmVyZmxvd1dyYXAgIT0gb3RoZXIucmFyZUluaGVyaXRl
ZERhdGEtPm92ZXJmbG93V3JhcAorICAgICAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPm5i
c3BNb2RlICE9IG90aGVyLnJhcmVJbmhlcml0ZWREYXRhLT5uYnNwTW9kZQorICAgICAgICAgICAg
fHwgcmFyZUluaGVyaXRlZERhdGEtPmxpbmVCcmVhayAhPSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0
YS0+bGluZUJyZWFrCisgICAgICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+dGV4dFNlY3Vy
aXR5ICE9IG90aGVyLnJhcmVJbmhlcml0ZWREYXRhLT50ZXh0U2VjdXJpdHkKKyAgICAgICAgICAg
IHx8IHJhcmVJbmhlcml0ZWREYXRhLT5oeXBoZW5zICE9IG90aGVyLnJhcmVJbmhlcml0ZWREYXRh
LT5oeXBoZW5zCisgICAgICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+aHlwaGVuYXRpb25M
aW1pdEJlZm9yZSAhPSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+aHlwaGVuYXRpb25MaW1pdEJl
Zm9yZQorICAgICAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPmh5cGhlbmF0aW9uTGltaXRB
ZnRlciAhPSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+aHlwaGVuYXRpb25MaW1pdEFmdGVyCisg
ICAgICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+aHlwaGVuYXRpb25TdHJpbmcgIT0gb3Ro
ZXIucmFyZUluaGVyaXRlZERhdGEtPmh5cGhlbmF0aW9uU3RyaW5nCisgICAgICAgICAgICB8fCBy
YXJlSW5oZXJpdGVkRGF0YS0+bG9jYWxlICE9IG90aGVyLnJhcmVJbmhlcml0ZWREYXRhLT5sb2Nh
bGUKKyAgICAgICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT5tX3J1YnlQb3NpdGlvbiAhPSBv
dGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+bV9ydWJ5UG9zaXRpb24KKyAgICAgICAgICAgIHx8IHJh
cmVJbmhlcml0ZWREYXRhLT50ZXh0RW1waGFzaXNNYXJrICE9IG90aGVyLnJhcmVJbmhlcml0ZWRE
YXRhLT50ZXh0RW1waGFzaXNNYXJrCisgICAgICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+
dGV4dEVtcGhhc2lzUG9zaXRpb24gIT0gb3RoZXIucmFyZUluaGVyaXRlZERhdGEtPnRleHRFbXBo
YXNpc1Bvc2l0aW9uCisgICAgICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEVtcGhh
c2lzQ3VzdG9tTWFyayAhPSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEVtcGhhc2lzQ3Vz
dG9tTWFyaworICAgICAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPm1fdGV4dE9yaWVudGF0
aW9uICE9IG90aGVyLnJhcmVJbmhlcml0ZWREYXRhLT5tX3RleHRPcmllbnRhdGlvbgorICAgICAg
ICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPm1fdGFiU2l6ZSAhPSBvdGhlci5yYXJlSW5oZXJp
dGVkRGF0YS0+bV90YWJTaXplCisgICAgICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+bV9s
aW5lQm94Q29udGFpbiAhPSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+bV9saW5lQm94Q29udGFp
bgorICAgICAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPm1fbGluZUdyaWQgIT0gb3RoZXIu
cmFyZUluaGVyaXRlZERhdGEtPm1fbGluZUdyaWQKICNpZiBFTkFCTEUoQ1NTX0lNQUdFX09SSUVO
VEFUSU9OKQotICAgICAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPm1faW1hZ2VPcmllbnRh
dGlvbiAhPSBvdGhlci0+cmFyZUluaGVyaXRlZERhdGEtPm1faW1hZ2VPcmllbnRhdGlvbgorICAg
ICAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPm1faW1hZ2VPcmllbnRhdGlvbiAhPSBvdGhl
ci5yYXJlSW5oZXJpdGVkRGF0YS0+bV9pbWFnZU9yaWVudGF0aW9uCiAjZW5kaWYKICNpZiBFTkFC
TEUoQ1NTX0lNQUdFX1JFU09MVVRJT04pCi0gICAgICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0
YS0+bV9pbWFnZVJlc29sdXRpb25Tb3VyY2UgIT0gb3RoZXItPnJhcmVJbmhlcml0ZWREYXRhLT5t
X2ltYWdlUmVzb2x1dGlvblNvdXJjZQotICAgICAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEt
Pm1faW1hZ2VSZXNvbHV0aW9uU25hcCAhPSBvdGhlci0+cmFyZUluaGVyaXRlZERhdGEtPm1faW1h
Z2VSZXNvbHV0aW9uU25hcAotICAgICAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPm1faW1h
Z2VSZXNvbHV0aW9uICE9IG90aGVyLT5yYXJlSW5oZXJpdGVkRGF0YS0+bV9pbWFnZVJlc29sdXRp
b24KKyAgICAgICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT5tX2ltYWdlUmVzb2x1dGlvblNv
dXJjZSAhPSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+bV9pbWFnZVJlc29sdXRpb25Tb3VyY2UK
KyAgICAgICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT5tX2ltYWdlUmVzb2x1dGlvblNuYXAg
IT0gb3RoZXIucmFyZUluaGVyaXRlZERhdGEtPm1faW1hZ2VSZXNvbHV0aW9uU25hcAorICAgICAg
ICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPm1faW1hZ2VSZXNvbHV0aW9uICE9IG90aGVyLnJh
cmVJbmhlcml0ZWREYXRhLT5tX2ltYWdlUmVzb2x1dGlvbgogI2VuZGlmCi0gICAgICAgICAgICB8
fCByYXJlSW5oZXJpdGVkRGF0YS0+bV9saW5lU25hcCAhPSBvdGhlci0+cmFyZUluaGVyaXRlZERh
dGEtPm1fbGluZVNuYXAKLSAgICAgICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT5tX2xpbmVB
bGlnbiAhPSBvdGhlci0+cmFyZUluaGVyaXRlZERhdGEtPm1fbGluZUFsaWduCisgICAgICAgICAg
ICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+bV9saW5lU25hcCAhPSBvdGhlci5yYXJlSW5oZXJpdGVk
RGF0YS0+bV9saW5lU25hcAorICAgICAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPm1fbGlu
ZUFsaWduICE9IG90aGVyLnJhcmVJbmhlcml0ZWREYXRhLT5tX2xpbmVBbGlnbgogI2lmIEVOQUJM
RShBQ0NFTEVSQVRFRF9PVkVSRkxPV19TQ1JPTExJTkcpCi0gICAgICAgICAgICB8fCByYXJlSW5o
ZXJpdGVkRGF0YS0+dXNlVG91Y2hPdmVyZmxvd1Njcm9sbGluZyAhPSBvdGhlci0+cmFyZUluaGVy
aXRlZERhdGEtPnVzZVRvdWNoT3ZlcmZsb3dTY3JvbGxpbmcKKyAgICAgICAgICAgIHx8IHJhcmVJ
bmhlcml0ZWREYXRhLT51c2VUb3VjaE92ZXJmbG93U2Nyb2xsaW5nICE9IG90aGVyLnJhcmVJbmhl
cml0ZWREYXRhLT51c2VUb3VjaE92ZXJmbG93U2Nyb2xsaW5nCiAjZW5kaWYKLSAgICAgICAgICAg
IHx8IHJhcmVJbmhlcml0ZWREYXRhLT5saXN0U3R5bGVJbWFnZSAhPSBvdGhlci0+cmFyZUluaGVy
aXRlZERhdGEtPmxpc3RTdHlsZUltYWdlKQorICAgICAgICAgICAgfHwgcmFyZUluaGVyaXRlZERh
dGEtPmxpc3RTdHlsZUltYWdlICE9IG90aGVyLnJhcmVJbmhlcml0ZWREYXRhLT5saXN0U3R5bGVJ
bWFnZSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgICAgIGlmICghcmFyZUluaGVy
aXRlZERhdGEtPnNoYWRvd0RhdGFFcXVpdmFsZW50KCpvdGhlci0+cmFyZUluaGVyaXRlZERhdGEu
Z2V0KCkpKQorICAgICAgICBpZiAoIXJhcmVJbmhlcml0ZWREYXRhLT5zaGFkb3dEYXRhRXF1aXZh
bGVudCgqb3RoZXIucmFyZUluaGVyaXRlZERhdGEuZ2V0KCkpKQogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAKLSAgICAgICAgaWYgKHRleHRTdHJva2VXaWR0aCgpICE9IG90aGVyLT50ZXh0U3Ry
b2tlV2lkdGgoKSkKKyAgICAgICAgaWYgKHRleHRTdHJva2VXaWR0aCgpICE9IG90aGVyLnRleHRT
dHJva2VXaWR0aCgpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAjaWYgRU5B
QkxFKFRFWFRfQVVUT1NJWklORykKLSAgICBpZiAodmlzdWFsLT5tX3RleHRBdXRvc2l6aW5nTXVs
dGlwbGllciAhPSBvdGhlci0+dmlzdWFsLT5tX3RleHRBdXRvc2l6aW5nTXVsdGlwbGllcikKKyAg
ICBpZiAodmlzdWFsLT5tX3RleHRBdXRvc2l6aW5nTXVsdGlwbGllciAhPSBvdGhlci52aXN1YWwt
Pm1fdGV4dEF1dG9zaXppbmdNdWx0aXBsaWVyKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICNlbmRp
ZgogCi0gICAgaWYgKGluaGVyaXRlZC0+bGluZV9oZWlnaHQgIT0gb3RoZXItPmluaGVyaXRlZC0+
bGluZV9oZWlnaHQKKyAgICBpZiAoaW5oZXJpdGVkLT5saW5lX2hlaWdodCAhPSBvdGhlci5pbmhl
cml0ZWQtPmxpbmVfaGVpZ2h0CiAjaWYgRU5BQkxFKElPU19URVhUX0FVVE9TSVpJTkcpCi0gICAg
ICAgIHx8IGluaGVyaXRlZC0+c3BlY2lmaWVkTGluZUhlaWdodCAhPSBvdGhlci0+aW5oZXJpdGVk
LT5zcGVjaWZpZWRMaW5lSGVpZ2h0CisgICAgICAgIHx8IGluaGVyaXRlZC0+c3BlY2lmaWVkTGlu
ZUhlaWdodCAhPSBvdGhlci5pbmhlcml0ZWQtPnNwZWNpZmllZExpbmVIZWlnaHQKICNlbmRpZgot
ICAgICAgICB8fCBpbmhlcml0ZWQtPmZvbnQgIT0gb3RoZXItPmluaGVyaXRlZC0+Zm9udAotICAg
ICAgICB8fCBpbmhlcml0ZWQtPmhvcml6b250YWxfYm9yZGVyX3NwYWNpbmcgIT0gb3RoZXItPmlu
aGVyaXRlZC0+aG9yaXpvbnRhbF9ib3JkZXJfc3BhY2luZwotICAgICAgICB8fCBpbmhlcml0ZWQt
PnZlcnRpY2FsX2JvcmRlcl9zcGFjaW5nICE9IG90aGVyLT5pbmhlcml0ZWQtPnZlcnRpY2FsX2Jv
cmRlcl9zcGFjaW5nCi0gICAgICAgIHx8IGluaGVyaXRlZF9mbGFncy5fYm94X2RpcmVjdGlvbiAh
PSBvdGhlci0+aW5oZXJpdGVkX2ZsYWdzLl9ib3hfZGlyZWN0aW9uCi0gICAgICAgIHx8IGluaGVy
aXRlZF9mbGFncy5tX3J0bE9yZGVyaW5nICE9IG90aGVyLT5pbmhlcml0ZWRfZmxhZ3MubV9ydGxP
cmRlcmluZwotICAgICAgICB8fCBub25pbmhlcml0ZWRfZmxhZ3MucG9zaXRpb24oKSAhPSBvdGhl
ci0+bm9uaW5oZXJpdGVkX2ZsYWdzLnBvc2l0aW9uKCkKLSAgICAgICAgfHwgbm9uaW5oZXJpdGVk
X2ZsYWdzLmZsb2F0aW5nKCkgIT0gb3RoZXItPm5vbmluaGVyaXRlZF9mbGFncy5mbG9hdGluZygp
Ci0gICAgICAgIHx8IG5vbmluaGVyaXRlZF9mbGFncy5vcmlnaW5hbERpc3BsYXkoKSAhPSBvdGhl
ci0+bm9uaW5oZXJpdGVkX2ZsYWdzLm9yaWdpbmFsRGlzcGxheSgpKQorICAgICAgICB8fCBpbmhl
cml0ZWQtPmZvbnQgIT0gb3RoZXIuaW5oZXJpdGVkLT5mb250CisgICAgICAgIHx8IGluaGVyaXRl
ZC0+aG9yaXpvbnRhbF9ib3JkZXJfc3BhY2luZyAhPSBvdGhlci5pbmhlcml0ZWQtPmhvcml6b250
YWxfYm9yZGVyX3NwYWNpbmcKKyAgICAgICAgfHwgaW5oZXJpdGVkLT52ZXJ0aWNhbF9ib3JkZXJf
c3BhY2luZyAhPSBvdGhlci5pbmhlcml0ZWQtPnZlcnRpY2FsX2JvcmRlcl9zcGFjaW5nCisgICAg
ICAgIHx8IGluaGVyaXRlZF9mbGFncy5fYm94X2RpcmVjdGlvbiAhPSBvdGhlci5pbmhlcml0ZWRf
ZmxhZ3MuX2JveF9kaXJlY3Rpb24KKyAgICAgICAgfHwgaW5oZXJpdGVkX2ZsYWdzLm1fcnRsT3Jk
ZXJpbmcgIT0gb3RoZXIuaW5oZXJpdGVkX2ZsYWdzLm1fcnRsT3JkZXJpbmcKKyAgICAgICAgfHwg
bm9uaW5oZXJpdGVkX2ZsYWdzLnBvc2l0aW9uKCkgIT0gb3RoZXIubm9uaW5oZXJpdGVkX2ZsYWdz
LnBvc2l0aW9uKCkKKyAgICAgICAgfHwgbm9uaW5oZXJpdGVkX2ZsYWdzLmZsb2F0aW5nKCkgIT0g
b3RoZXIubm9uaW5oZXJpdGVkX2ZsYWdzLmZsb2F0aW5nKCkKKyAgICAgICAgfHwgbm9uaW5oZXJp
dGVkX2ZsYWdzLm9yaWdpbmFsRGlzcGxheSgpICE9IG90aGVyLm5vbmluaGVyaXRlZF9mbGFncy5v
cmlnaW5hbERpc3BsYXkoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKIAogICAgIGlmICgobm9u
aW5oZXJpdGVkX2ZsYWdzLmVmZmVjdGl2ZURpc3BsYXkoKSkgPj0gVEFCTEUpIHsKLSAgICAgICAg
aWYgKGluaGVyaXRlZF9mbGFncy5fYm9yZGVyX2NvbGxhcHNlICE9IG90aGVyLT5pbmhlcml0ZWRf
ZmxhZ3MuX2JvcmRlcl9jb2xsYXBzZQotICAgICAgICAgICAgfHwgaW5oZXJpdGVkX2ZsYWdzLl9l
bXB0eV9jZWxscyAhPSBvdGhlci0+aW5oZXJpdGVkX2ZsYWdzLl9lbXB0eV9jZWxscwotICAgICAg
ICAgICAgfHwgaW5oZXJpdGVkX2ZsYWdzLl9jYXB0aW9uX3NpZGUgIT0gb3RoZXItPmluaGVyaXRl
ZF9mbGFncy5fY2FwdGlvbl9zaWRlCi0gICAgICAgICAgICB8fCBub25pbmhlcml0ZWRfZmxhZ3Mu
dGFibGVMYXlvdXQoKSAhPSBvdGhlci0+bm9uaW5oZXJpdGVkX2ZsYWdzLnRhYmxlTGF5b3V0KCkp
CisgICAgICAgIGlmIChpbmhlcml0ZWRfZmxhZ3MuX2JvcmRlcl9jb2xsYXBzZSAhPSBvdGhlci5p
bmhlcml0ZWRfZmxhZ3MuX2JvcmRlcl9jb2xsYXBzZQorICAgICAgICAgICAgfHwgaW5oZXJpdGVk
X2ZsYWdzLl9lbXB0eV9jZWxscyAhPSBvdGhlci5pbmhlcml0ZWRfZmxhZ3MuX2VtcHR5X2NlbGxz
CisgICAgICAgICAgICB8fCBpbmhlcml0ZWRfZmxhZ3MuX2NhcHRpb25fc2lkZSAhPSBvdGhlci5p
bmhlcml0ZWRfZmxhZ3MuX2NhcHRpb25fc2lkZQorICAgICAgICAgICAgfHwgbm9uaW5oZXJpdGVk
X2ZsYWdzLnRhYmxlTGF5b3V0KCkgIT0gb3RoZXIubm9uaW5oZXJpdGVkX2ZsYWdzLnRhYmxlTGF5
b3V0KCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgICAgICAvLyBJbiB0aGUgY29s
bGFwc2luZyBib3JkZXIgbW9kZWwsICdoaWRkZW4nIHN1cHByZXNzZXMgb3RoZXIgYm9yZGVycywg
d2hpbGUgJ25vbmUnCiAgICAgICAgIC8vIGRvZXMgbm90LCBzbyB0aGVzZSBzdHlsZSBkaWZmZXJl
bmNlcyBjYW4gYmUgd2lkdGggZGlmZmVyZW5jZXMuCiAgICAgICAgIGlmIChpbmhlcml0ZWRfZmxh
Z3MuX2JvcmRlcl9jb2xsYXBzZQotICAgICAgICAgICAgJiYgKChib3JkZXJUb3BTdHlsZSgpID09
IEJISURERU4gJiYgb3RoZXItPmJvcmRlclRvcFN0eWxlKCkgPT0gQk5PTkUpCi0gICAgICAgICAg
ICAgICAgfHwgKGJvcmRlclRvcFN0eWxlKCkgPT0gQk5PTkUgJiYgb3RoZXItPmJvcmRlclRvcFN0
eWxlKCkgPT0gQkhJRERFTikKLSAgICAgICAgICAgICAgICB8fCAoYm9yZGVyQm90dG9tU3R5bGUo
KSA9PSBCSElEREVOICYmIG90aGVyLT5ib3JkZXJCb3R0b21TdHlsZSgpID09IEJOT05FKQotICAg
ICAgICAgICAgICAgIHx8IChib3JkZXJCb3R0b21TdHlsZSgpID09IEJOT05FICYmIG90aGVyLT5i
b3JkZXJCb3R0b21TdHlsZSgpID09IEJISURERU4pCi0gICAgICAgICAgICAgICAgfHwgKGJvcmRl
ckxlZnRTdHlsZSgpID09IEJISURERU4gJiYgb3RoZXItPmJvcmRlckxlZnRTdHlsZSgpID09IEJO
T05FKQotICAgICAgICAgICAgICAgIHx8IChib3JkZXJMZWZ0U3R5bGUoKSA9PSBCTk9ORSAmJiBv
dGhlci0+Ym9yZGVyTGVmdFN0eWxlKCkgPT0gQkhJRERFTikKLSAgICAgICAgICAgICAgICB8fCAo
Ym9yZGVyUmlnaHRTdHlsZSgpID09IEJISURERU4gJiYgb3RoZXItPmJvcmRlclJpZ2h0U3R5bGUo
KSA9PSBCTk9ORSkKLSAgICAgICAgICAgICAgICB8fCAoYm9yZGVyUmlnaHRTdHlsZSgpID09IEJO
T05FICYmIG90aGVyLT5ib3JkZXJSaWdodFN0eWxlKCkgPT0gQkhJRERFTikpKQorICAgICAgICAg
ICAgJiYgKChib3JkZXJUb3BTdHlsZSgpID09IEJISURERU4gJiYgb3RoZXIuYm9yZGVyVG9wU3R5
bGUoKSA9PSBCTk9ORSkKKyAgICAgICAgICAgICAgICB8fCAoYm9yZGVyVG9wU3R5bGUoKSA9PSBC
Tk9ORSAmJiBvdGhlci5ib3JkZXJUb3BTdHlsZSgpID09IEJISURERU4pCisgICAgICAgICAgICAg
ICAgfHwgKGJvcmRlckJvdHRvbVN0eWxlKCkgPT0gQkhJRERFTiAmJiBvdGhlci5ib3JkZXJCb3R0
b21TdHlsZSgpID09IEJOT05FKQorICAgICAgICAgICAgICAgIHx8IChib3JkZXJCb3R0b21TdHls
ZSgpID09IEJOT05FICYmIG90aGVyLmJvcmRlckJvdHRvbVN0eWxlKCkgPT0gQkhJRERFTikKKyAg
ICAgICAgICAgICAgICB8fCAoYm9yZGVyTGVmdFN0eWxlKCkgPT0gQkhJRERFTiAmJiBvdGhlci5i
b3JkZXJMZWZ0U3R5bGUoKSA9PSBCTk9ORSkKKyAgICAgICAgICAgICAgICB8fCAoYm9yZGVyTGVm
dFN0eWxlKCkgPT0gQk5PTkUgJiYgb3RoZXIuYm9yZGVyTGVmdFN0eWxlKCkgPT0gQkhJRERFTikK
KyAgICAgICAgICAgICAgICB8fCAoYm9yZGVyUmlnaHRTdHlsZSgpID09IEJISURERU4gJiYgb3Ro
ZXIuYm9yZGVyUmlnaHRTdHlsZSgpID09IEJOT05FKQorICAgICAgICAgICAgICAgIHx8IChib3Jk
ZXJSaWdodFN0eWxlKCkgPT0gQk5PTkUgJiYgb3RoZXIuYm9yZGVyUmlnaHRTdHlsZSgpID09IEJI
SURERU4pKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIGlmIChub25p
bmhlcml0ZWRfZmxhZ3MuZWZmZWN0aXZlRGlzcGxheSgpID09IExJU1RfSVRFTSkgewotICAgICAg
ICBpZiAoaW5oZXJpdGVkX2ZsYWdzLl9saXN0X3N0eWxlX3R5cGUgIT0gb3RoZXItPmluaGVyaXRl
ZF9mbGFncy5fbGlzdF9zdHlsZV90eXBlCi0gICAgICAgICAgICB8fCBpbmhlcml0ZWRfZmxhZ3Mu
X2xpc3Rfc3R5bGVfcG9zaXRpb24gIT0gb3RoZXItPmluaGVyaXRlZF9mbGFncy5fbGlzdF9zdHls
ZV9wb3NpdGlvbikKKyAgICAgICAgaWYgKGluaGVyaXRlZF9mbGFncy5fbGlzdF9zdHlsZV90eXBl
ICE9IG90aGVyLmluaGVyaXRlZF9mbGFncy5fbGlzdF9zdHlsZV90eXBlCisgICAgICAgICAgICB8
fCBpbmhlcml0ZWRfZmxhZ3MuX2xpc3Rfc3R5bGVfcG9zaXRpb24gIT0gb3RoZXIuaW5oZXJpdGVk
X2ZsYWdzLl9saXN0X3N0eWxlX3Bvc2l0aW9uKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQogCi0gICAgaWYgKGluaGVyaXRlZF9mbGFncy5fdGV4dF9hbGlnbiAhPSBvdGhlci0+aW5o
ZXJpdGVkX2ZsYWdzLl90ZXh0X2FsaWduCi0gICAgICAgIHx8IGluaGVyaXRlZF9mbGFncy5fdGV4
dF90cmFuc2Zvcm0gIT0gb3RoZXItPmluaGVyaXRlZF9mbGFncy5fdGV4dF90cmFuc2Zvcm0KLSAg
ICAgICAgfHwgaW5oZXJpdGVkX2ZsYWdzLl9kaXJlY3Rpb24gIT0gb3RoZXItPmluaGVyaXRlZF9m
bGFncy5fZGlyZWN0aW9uCi0gICAgICAgIHx8IGluaGVyaXRlZF9mbGFncy5fd2hpdGVfc3BhY2Ug
IT0gb3RoZXItPmluaGVyaXRlZF9mbGFncy5fd2hpdGVfc3BhY2UKLSAgICAgICAgfHwgbm9uaW5o
ZXJpdGVkX2ZsYWdzLmNsZWFyKCkgIT0gb3RoZXItPm5vbmluaGVyaXRlZF9mbGFncy5jbGVhcigp
Ci0gICAgICAgIHx8IG5vbmluaGVyaXRlZF9mbGFncy51bmljb2RlQmlkaSgpICE9IG90aGVyLT5u
b25pbmhlcml0ZWRfZmxhZ3MudW5pY29kZUJpZGkoKSkKKyAgICBpZiAoaW5oZXJpdGVkX2ZsYWdz
Ll90ZXh0X2FsaWduICE9IG90aGVyLmluaGVyaXRlZF9mbGFncy5fdGV4dF9hbGlnbgorICAgICAg
ICB8fCBpbmhlcml0ZWRfZmxhZ3MuX3RleHRfdHJhbnNmb3JtICE9IG90aGVyLmluaGVyaXRlZF9m
bGFncy5fdGV4dF90cmFuc2Zvcm0KKyAgICAgICAgfHwgaW5oZXJpdGVkX2ZsYWdzLl9kaXJlY3Rp
b24gIT0gb3RoZXIuaW5oZXJpdGVkX2ZsYWdzLl9kaXJlY3Rpb24KKyAgICAgICAgfHwgaW5oZXJp
dGVkX2ZsYWdzLl93aGl0ZV9zcGFjZSAhPSBvdGhlci5pbmhlcml0ZWRfZmxhZ3MuX3doaXRlX3Nw
YWNlCisgICAgICAgIHx8IG5vbmluaGVyaXRlZF9mbGFncy5jbGVhcigpICE9IG90aGVyLm5vbmlu
aGVyaXRlZF9mbGFncy5jbGVhcigpCisgICAgICAgIHx8IG5vbmluaGVyaXRlZF9mbGFncy51bmlj
b2RlQmlkaSgpICE9IG90aGVyLm5vbmluaGVyaXRlZF9mbGFncy51bmljb2RlQmlkaSgpKQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIENoZWNrIGJsb2NrIGZsb3cgZGlyZWN0aW9uLgot
ICAgIGlmIChpbmhlcml0ZWRfZmxhZ3MubV93cml0aW5nTW9kZSAhPSBvdGhlci0+aW5oZXJpdGVk
X2ZsYWdzLm1fd3JpdGluZ01vZGUpCisgICAgaWYgKGluaGVyaXRlZF9mbGFncy5tX3dyaXRpbmdN
b2RlICE9IG90aGVyLmluaGVyaXRlZF9mbGFncy5tX3dyaXRpbmdNb2RlKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKIAogICAgIC8vIENoZWNrIHRleHQgY29tYmluZSBtb2RlLgotICAgIGlmIChyYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+bV90ZXh0Q29tYmluZSAhPSBvdGhlci0+cmFyZU5vbkluaGVyaXRl
ZERhdGEtPm1fdGV4dENvbWJpbmUpCisgICAgaWYgKHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3Rl
eHRDb21iaW5lICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3RleHRDb21iaW5lKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIE92ZXJmbG93IHJldHVybnMgYSBsYXlvdXQg
aGludC4KLSAgICBpZiAobm9uaW5oZXJpdGVkX2ZsYWdzLm92ZXJmbG93WCgpICE9IG90aGVyLT5u
b25pbmhlcml0ZWRfZmxhZ3Mub3ZlcmZsb3dYKCkKLSAgICAgICAgfHwgbm9uaW5oZXJpdGVkX2Zs
YWdzLm92ZXJmbG93WSgpICE9IG90aGVyLT5ub25pbmhlcml0ZWRfZmxhZ3Mub3ZlcmZsb3dZKCkp
CisgICAgaWYgKG5vbmluaGVyaXRlZF9mbGFncy5vdmVyZmxvd1goKSAhPSBvdGhlci5ub25pbmhl
cml0ZWRfZmxhZ3Mub3ZlcmZsb3dYKCkKKyAgICAgICAgfHwgbm9uaW5oZXJpdGVkX2ZsYWdzLm92
ZXJmbG93WSgpICE9IG90aGVyLm5vbmluaGVyaXRlZF9mbGFncy5vdmVyZmxvd1koKSkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBJZiBvdXIgYm9yZGVyIHdpZHRocyBjaGFuZ2UsIHRo
ZW4gd2UgbmVlZCB0byBsYXlvdXQuICBPdGhlciBjaGFuZ2VzIHRvIGJvcmRlcnMKICAgICAvLyBv
bmx5IG5lY2Vzc2l0YXRlIGEgcmVwYWludC4KLSAgICBpZiAoYm9yZGVyTGVmdFdpZHRoKCkgIT0g
b3RoZXItPmJvcmRlckxlZnRXaWR0aCgpCi0gICAgICAgIHx8IGJvcmRlclRvcFdpZHRoKCkgIT0g
b3RoZXItPmJvcmRlclRvcFdpZHRoKCkKLSAgICAgICAgfHwgYm9yZGVyQm90dG9tV2lkdGgoKSAh
PSBvdGhlci0+Ym9yZGVyQm90dG9tV2lkdGgoKQotICAgICAgICB8fCBib3JkZXJSaWdodFdpZHRo
KCkgIT0gb3RoZXItPmJvcmRlclJpZ2h0V2lkdGgoKSkKKyAgICBpZiAoYm9yZGVyTGVmdFdpZHRo
KCkgIT0gb3RoZXIuYm9yZGVyTGVmdFdpZHRoKCkKKyAgICAgICAgfHwgYm9yZGVyVG9wV2lkdGgo
KSAhPSBvdGhlci5ib3JkZXJUb3BXaWR0aCgpCisgICAgICAgIHx8IGJvcmRlckJvdHRvbVdpZHRo
KCkgIT0gb3RoZXIuYm9yZGVyQm90dG9tV2lkdGgoKQorICAgICAgICB8fCBib3JkZXJSaWdodFdp
ZHRoKCkgIT0gb3RoZXIuYm9yZGVyUmlnaHRXaWR0aCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
IAogICAgIC8vIElmIHRoZSBjb3VudGVyIGRpcmVjdGl2ZXMgY2hhbmdlLCB0cmlnZ2VyIGEgcmVs
YXlvdXQgdG8gcmUtY2FsY3VsYXRlIGNvdW50ZXIgdmFsdWVzIGFuZCByZWJ1aWxkIHRoZSBjb3Vu
dGVyIG5vZGUgdHJlZS4KICAgICBjb25zdCBDb3VudGVyRGlyZWN0aXZlTWFwKiBtYXBBID0gcmFy
ZU5vbkluaGVyaXRlZERhdGEtPm1fY291bnRlckRpcmVjdGl2ZXMuZ2V0KCk7Ci0gICAgY29uc3Qg
Q291bnRlckRpcmVjdGl2ZU1hcCogbWFwQiA9IG90aGVyLT5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+
bV9jb3VudGVyRGlyZWN0aXZlcy5nZXQoKTsKKyAgICBjb25zdCBDb3VudGVyRGlyZWN0aXZlTWFw
KiBtYXBCID0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPm1fY291bnRlckRpcmVjdGl2ZXMu
Z2V0KCk7CiAgICAgaWYgKCEobWFwQSA9PSBtYXBCIHx8IChtYXBBICYmIG1hcEIgJiYgKm1hcEEg
PT0gKm1hcEIpKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAoKHZpc2liaWxpdHko
KSA9PSBDT0xMQVBTRSkgIT0gKG90aGVyLT52aXNpYmlsaXR5KCkgPT0gQ09MTEFQU0UpKQorICAg
IGlmICgodmlzaWJpbGl0eSgpID09IENPTExBUFNFKSAhPSAob3RoZXIudmlzaWJpbGl0eSgpID09
IENPTExBUFNFKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAocmFyZU5vbkluaGVy
aXRlZERhdGEtPmhhc09wYWNpdHkoKSAhPSBvdGhlci0+cmFyZU5vbkluaGVyaXRlZERhdGEtPmhh
c09wYWNpdHkoKSkgeworICAgIGlmIChyYXJlTm9uSW5oZXJpdGVkRGF0YS0+aGFzT3BhY2l0eSgp
ICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5oYXNPcGFjaXR5KCkpIHsKICAgICAgICAg
Ly8gRklYTUU6IFdlIHdvdWxkIGxpa2UgdG8gdXNlIFNpbXBsaWZpZWRMYXlvdXQgaGVyZSwgYnV0
IHdlIGNhbid0IHF1aXRlIGRvIHRoYXQgeWV0LgogICAgICAgICAvLyBXZSBuZWVkIHRvIG1ha2Ug
c3VyZSBTaW1wbGlmaWVkTGF5b3V0IGNhbiBvcGVyYXRlIGNvcnJlY3RseSBvbiBSZW5kZXJJbmxp
bmVzICh3ZSB3aWxsIG5lZWQKICAgICAgICAgLy8gdG8gYWRkIGEgc2VsZk5lZWRzU2ltcGxpZmll
ZExheW91dCBiaXQgaW4gb3JkZXIgdG8gbm90IGdldCBjb25mdXNlZCBhbmQgdGFpbnQgZXZlcnkg
bGluZSkuCkBAIC02MzUsMTYgKzYzNSwxNiBAQCBib29sIFJlbmRlclN0eWxlOjpjaGFuZ2VSZXF1
aXJlc0xheW91dChjb25zdCBSZW5kZXJTdHlsZSogb3RoZXIsIHVuc2lnbmVkJiBjaGFuZwogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBpZiAocmFyZU5vbkluaGVyaXRlZERhdGEt
Pmhhc0ZpbHRlcnMoKSAhPSBvdGhlci0+cmFyZU5vbkluaGVyaXRlZERhdGEtPmhhc0ZpbHRlcnMo
KSkKKyAgICBpZiAocmFyZU5vbkluaGVyaXRlZERhdGEtPmhhc0ZpbHRlcnMoKSAhPSBvdGhlci5y
YXJlTm9uSW5oZXJpdGVkRGF0YS0+aGFzRmlsdGVycygpKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
IAogICAgIGNvbnN0IFF1b3Rlc0RhdGEqIHF1b3Rlc0RhdGFBID0gcmFyZUluaGVyaXRlZERhdGEt
PnF1b3Rlcy5nZXQoKTsKLSAgICBjb25zdCBRdW90ZXNEYXRhKiBxdW90ZXNEYXRhQiA9IG90aGVy
LT5yYXJlSW5oZXJpdGVkRGF0YS0+cXVvdGVzLmdldCgpOworICAgIGNvbnN0IFF1b3Rlc0RhdGEq
IHF1b3Rlc0RhdGFCID0gb3RoZXIucmFyZUluaGVyaXRlZERhdGEtPnF1b3Rlcy5nZXQoKTsKICAg
ICBpZiAoIShxdW90ZXNEYXRhQSA9PSBxdW90ZXNEYXRhQiB8fCAocXVvdGVzRGF0YUEgJiYgcXVv
dGVzRGF0YUIgJiYgKnF1b3Rlc0RhdGFBID09ICpxdW90ZXNEYXRhQikpKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKIAogICAgIGlmIChwb3NpdGlvbigpICE9IFN0YXRpY1Bvc2l0aW9uKSB7Ci0gICAg
ICAgIGlmIChzdXJyb3VuZC0+b2Zmc2V0ICE9IG90aGVyLT5zdXJyb3VuZC0+b2Zmc2V0KSB7Cisg
ICAgICAgIGlmIChzdXJyb3VuZC0+b2Zmc2V0ICE9IG90aGVyLnN1cnJvdW5kLT5vZmZzZXQpIHsK
ICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSB3b3VsZCBsaWtlIHRvIHVzZSBTaW1wbGlmaWVkTGF5
b3V0IGZvciByZWxhdGl2ZSBwb3NpdGlvbmluZywgYnV0IHdlIGNhbid0IHF1aXRlIGRvIHRoYXQg
eWV0LgogICAgICAgICAgICAgLy8gV2UgbmVlZCB0byBtYWtlIHN1cmUgU2ltcGxpZmllZExheW91
dCBjYW4gb3BlcmF0ZSBjb3JyZWN0bHkgb24gUmVuZGVySW5saW5lcyAod2Ugd2lsbCBuZWVkCiAg
ICAgICAgICAgICAvLyB0byBhZGQgYSBzZWxmTmVlZHNTaW1wbGlmaWVkTGF5b3V0IGJpdCBpbiBv
cmRlciB0byBub3QgZ2V0IGNvbmZ1c2VkIGFuZCB0YWludCBldmVyeSBsaW5lKS4KQEAgLTY1Miw3
ICs2NTIsNyBAQCBib29sIFJlbmRlclN0eWxlOjpjaGFuZ2VSZXF1aXJlc0xheW91dChjb25zdCBS
ZW5kZXJTdHlsZSogb3RoZXIsIHVuc2lnbmVkJiBjaGFuZwogICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogCiAgICAgICAgICAgICAvLyBPcHRpbWl6ZSBmb3IgdGhlIGNhc2Ugd2hlcmUgYSBw
b3NpdGlvbmVkIGxheWVyIGlzIG1vdmluZyBidXQgbm90IGNoYW5naW5nIHNpemUuCi0gICAgICAg
ICAgICBpZiAoIXBvc2l0aW9uQ2hhbmdlSXNNb3ZlbWVudE9ubHkoc3Vycm91bmQtPm9mZnNldCwg
b3RoZXItPnN1cnJvdW5kLT5vZmZzZXQsIG1fYm94LT53aWR0aCgpKSkKKyAgICAgICAgICAgIGlm
ICghcG9zaXRpb25DaGFuZ2VJc01vdmVtZW50T25seShzdXJyb3VuZC0+b2Zmc2V0LCBvdGhlci5z
dXJyb3VuZC0+b2Zmc2V0LCBtX2JveC0+d2lkdGgoKSkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgIH0KICAgICB9CkBAIC02NjAsMTIxICs2NjAsMTIxIEBAIGJvb2wgUmVu
ZGVyU3R5bGU6OmNoYW5nZVJlcXVpcmVzTGF5b3V0KGNvbnN0IFJlbmRlclN0eWxlKiBvdGhlciwg
dW5zaWduZWQmIGNoYW5nCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFJlbmRlclN0eWxl
OjpjaGFuZ2VSZXF1aXJlc1Bvc2l0aW9uZWRMYXlvdXRPbmx5KGNvbnN0IFJlbmRlclN0eWxlKiBv
dGhlciwgdW5zaWduZWQmKSBjb25zdAorYm9vbCBSZW5kZXJTdHlsZTo6Y2hhbmdlUmVxdWlyZXNQ
b3NpdGlvbmVkTGF5b3V0T25seShjb25zdCBSZW5kZXJTdHlsZSYgb3RoZXIsIHVuc2lnbmVkJikg
Y29uc3QKIHsKICAgICBpZiAocG9zaXRpb24oKSA9PSBTdGF0aWNQb3NpdGlvbikKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKHN1cnJvdW5kLT5vZmZzZXQgIT0gb3RoZXItPnN1cnJv
dW5kLT5vZmZzZXQpIHsKKyAgICBpZiAoc3Vycm91bmQtPm9mZnNldCAhPSBvdGhlci5zdXJyb3Vu
ZC0+b2Zmc2V0KSB7CiAgICAgICAgIC8vIE9wdGltaXplIGZvciB0aGUgY2FzZSB3aGVyZSBhIHBv
c2l0aW9uZWQgbGF5ZXIgaXMgbW92aW5nIGJ1dCBub3QgY2hhbmdpbmcgc2l6ZS4KLSAgICAgICAg
aWYgKHBvc2l0aW9uKCkgPT0gQWJzb2x1dGVQb3NpdGlvbiAmJiBwb3NpdGlvbkNoYW5nZUlzTW92
ZW1lbnRPbmx5KHN1cnJvdW5kLT5vZmZzZXQsIG90aGVyLT5zdXJyb3VuZC0+b2Zmc2V0LCBtX2Jv
eC0+d2lkdGgoKSkpCisgICAgICAgIGlmIChwb3NpdGlvbigpID09IEFic29sdXRlUG9zaXRpb24g
JiYgcG9zaXRpb25DaGFuZ2VJc01vdmVtZW50T25seShzdXJyb3VuZC0+b2Zmc2V0LCBvdGhlci5z
dXJyb3VuZC0+b2Zmc2V0LCBtX2JveC0+d2lkdGgoKSkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CiAgICAgCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFJlbmRlclN0eWxl
OjpjaGFuZ2VSZXF1aXJlc0xheWVyUmVwYWludChjb25zdCBSZW5kZXJTdHlsZSogb3RoZXIsIHVu
c2lnbmVkJiBjaGFuZ2VkQ29udGV4dFNlbnNpdGl2ZVByb3BlcnRpZXMpIGNvbnN0Citib29sIFJl
bmRlclN0eWxlOjpjaGFuZ2VSZXF1aXJlc0xheWVyUmVwYWludChjb25zdCBSZW5kZXJTdHlsZSYg
b3RoZXIsIHVuc2lnbmVkJiBjaGFuZ2VkQ29udGV4dFNlbnNpdGl2ZVByb3BlcnRpZXMpIGNvbnN0
CiB7CiAgICAgLy8gU3R5bGVSZXNvbHZlciBoYXMgZW5zdXJlZCB0aGF0IHpJbmRleCBpcyBub24t
YXV0byBvbmx5IGlmIGl0J3MgYXBwbGljYWJsZS4KLSAgICBpZiAobV9ib3gtPnpJbmRleCgpICE9
IG90aGVyLT5tX2JveC0+ekluZGV4KCkgfHwgbV9ib3gtPmhhc0F1dG9aSW5kZXgoKSAhPSBvdGhl
ci0+bV9ib3gtPmhhc0F1dG9aSW5kZXgoKSkKKyAgICBpZiAobV9ib3gtPnpJbmRleCgpICE9IG90
aGVyLm1fYm94LT56SW5kZXgoKSB8fCBtX2JveC0+aGFzQXV0b1pJbmRleCgpICE9IG90aGVyLm1f
Ym94LT5oYXNBdXRvWkluZGV4KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgaWYgKHBv
c2l0aW9uKCkgIT0gU3RhdGljUG9zaXRpb24pIHsKLSAgICAgICAgaWYgKHZpc3VhbC0+Y2xpcCAh
PSBvdGhlci0+dmlzdWFsLT5jbGlwIHx8IHZpc3VhbC0+aGFzQ2xpcCAhPSBvdGhlci0+dmlzdWFs
LT5oYXNDbGlwKSB7CisgICAgICAgIGlmICh2aXN1YWwtPmNsaXAgIT0gb3RoZXIudmlzdWFsLT5j
bGlwIHx8IHZpc3VhbC0+aGFzQ2xpcCAhPSBvdGhlci52aXN1YWwtPmhhc0NsaXApIHsKICAgICAg
ICAgICAgIGNoYW5nZWRDb250ZXh0U2Vuc2l0aXZlUHJvcGVydGllcyB8PSBDb250ZXh0U2Vuc2l0
aXZlUHJvcGVydHlDbGlwUmVjdDsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9
CiAgICAgfQogCiAjaWYgRU5BQkxFKENTU19DT01QT1NJVElORykKLSAgICBpZiAocmFyZU5vbklu
aGVyaXRlZERhdGEtPm1fZWZmZWN0aXZlQmxlbmRNb2RlICE9IG90aGVyLT5yYXJlTm9uSW5oZXJp
dGVkRGF0YS0+bV9lZmZlY3RpdmVCbGVuZE1vZGUpCisgICAgaWYgKHJhcmVOb25Jbmhlcml0ZWRE
YXRhLT5tX2VmZmVjdGl2ZUJsZW5kTW9kZSAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+
bV9lZmZlY3RpdmVCbGVuZE1vZGUpCiAgICAgICAgIHJldHVybiB0cnVlOwogI2VuZGlmCiAKLSAg
ICBpZiAocmFyZU5vbkluaGVyaXRlZERhdGEtPm9wYWNpdHkgIT0gb3RoZXItPnJhcmVOb25Jbmhl
cml0ZWREYXRhLT5vcGFjaXR5KSB7CisgICAgaWYgKHJhcmVOb25Jbmhlcml0ZWREYXRhLT5vcGFj
aXR5ICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5vcGFjaXR5KSB7CiAgICAgICAgIGNo
YW5nZWRDb250ZXh0U2Vuc2l0aXZlUHJvcGVydGllcyB8PSBDb250ZXh0U2Vuc2l0aXZlUHJvcGVy
dHlPcGFjaXR5OwogICAgICAgICAvLyBEb24ndCByZXR1cm47IGtlZXAgbG9va2luZyBmb3IgYW5v
dGhlciBjaGFuZ2UuCiAgICAgfQogCi0gICAgaWYgKHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2Zp
bHRlci5nZXQoKSAhPSBvdGhlci0+cmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZmlsdGVyLmdldCgp
Ci0gICAgICAgICYmICpyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9maWx0ZXIuZ2V0KCkgIT0gKm90
aGVyLT5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9maWx0ZXIuZ2V0KCkpIHsKKyAgICBpZiAocmFy
ZU5vbkluaGVyaXRlZERhdGEtPm1fZmlsdGVyLmdldCgpICE9IG90aGVyLnJhcmVOb25Jbmhlcml0
ZWREYXRhLT5tX2ZpbHRlci5nZXQoKQorICAgICAgICAmJiAqcmFyZU5vbkluaGVyaXRlZERhdGEt
Pm1fZmlsdGVyLmdldCgpICE9ICpvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9maWx0ZXIu
Z2V0KCkpIHsKICAgICAgICAgY2hhbmdlZENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzIHw9IENv
bnRleHRTZW5zaXRpdmVQcm9wZXJ0eUZpbHRlcjsKICAgICAgICAgLy8gRG9uJ3QgcmV0dXJuOyBr
ZWVwIGxvb2tpbmcgZm9yIGFub3RoZXIgY2hhbmdlLgogICAgIH0KIAotICAgIGlmIChyYXJlTm9u
SW5oZXJpdGVkRGF0YS0+bV9tYXNrICE9IG90aGVyLT5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9t
YXNrCi0gICAgICAgIHx8IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX21hc2tCb3hJbWFnZSAhPSBv
dGhlci0+cmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbWFza0JveEltYWdlKQorICAgIGlmIChyYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+bV9tYXNrICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5t
X21hc2sKKyAgICAgICAgfHwgcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbWFza0JveEltYWdlICE9
IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX21hc2tCb3hJbWFnZSkKICAgICAgICAgcmV0
dXJuIHRydWU7CiAKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgUmVuZGVyU3R5bGU6OmNo
YW5nZVJlcXVpcmVzUmVwYWludChjb25zdCBSZW5kZXJTdHlsZSogb3RoZXIsIHVuc2lnbmVkJikg
Y29uc3QKLXsKLSAgICBpZiAoaW5oZXJpdGVkX2ZsYWdzLl92aXNpYmlsaXR5ICE9IG90aGVyLT5p
bmhlcml0ZWRfZmxhZ3MuX3Zpc2liaWxpdHkKLSAgICAgICAgfHwgaW5oZXJpdGVkX2ZsYWdzLm1f
cHJpbnRDb2xvckFkanVzdCAhPSBvdGhlci0+aW5oZXJpdGVkX2ZsYWdzLm1fcHJpbnRDb2xvckFk
anVzdAotICAgICAgICB8fCBpbmhlcml0ZWRfZmxhZ3MuX2luc2lkZUxpbmsgIT0gb3RoZXItPmlu
aGVyaXRlZF9mbGFncy5faW5zaWRlTGluawotICAgICAgICB8fCBpbmhlcml0ZWRfZmxhZ3MuX2lu
c2lkZURlZmF1bHRCdXR0b24gIT0gb3RoZXItPmluaGVyaXRlZF9mbGFncy5faW5zaWRlRGVmYXVs
dEJ1dHRvbgotICAgICAgICB8fCBzdXJyb3VuZC0+Ym9yZGVyICE9IG90aGVyLT5zdXJyb3VuZC0+
Ym9yZGVyCi0gICAgICAgIHx8ICFtX2JhY2tncm91bmQtPmlzRXF1aXZhbGVudEZvclBhaW50aW5n
KCpvdGhlci0+bV9iYWNrZ3JvdW5kKQotICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+dXNl
ck1vZGlmeSAhPSBvdGhlci0+cmFyZUluaGVyaXRlZERhdGEtPnVzZXJNb2RpZnkKLSAgICAgICAg
fHwgcmFyZUluaGVyaXRlZERhdGEtPnVzZXJTZWxlY3QgIT0gb3RoZXItPnJhcmVJbmhlcml0ZWRE
YXRhLT51c2VyU2VsZWN0Ci0gICAgICAgIHx8IHJhcmVOb25Jbmhlcml0ZWREYXRhLT51c2VyRHJh
ZyAhPSBvdGhlci0+cmFyZU5vbkluaGVyaXRlZERhdGEtPnVzZXJEcmFnCi0gICAgICAgIHx8IHJh
cmVOb25Jbmhlcml0ZWREYXRhLT5tX2JvcmRlckZpdCAhPSBvdGhlci0+cmFyZU5vbkluaGVyaXRl
ZERhdGEtPm1fYm9yZGVyRml0Ci0gICAgICAgIHx8IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX29i
amVjdEZpdCAhPSBvdGhlci0+cmFyZU5vbkluaGVyaXRlZERhdGEtPm1fb2JqZWN0Rml0Ci0gICAg
ICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT5tX2ltYWdlUmVuZGVyaW5nICE9IG90aGVyLT5yYXJl
SW5oZXJpdGVkRGF0YS0+bV9pbWFnZVJlbmRlcmluZykKK2Jvb2wgUmVuZGVyU3R5bGU6OmNoYW5n
ZVJlcXVpcmVzUmVwYWludChjb25zdCBSZW5kZXJTdHlsZSYgb3RoZXIsIHVuc2lnbmVkJikgY29u
c3QKK3sKKyAgICBpZiAoaW5oZXJpdGVkX2ZsYWdzLl92aXNpYmlsaXR5ICE9IG90aGVyLmluaGVy
aXRlZF9mbGFncy5fdmlzaWJpbGl0eQorICAgICAgICB8fCBpbmhlcml0ZWRfZmxhZ3MubV9wcmlu
dENvbG9yQWRqdXN0ICE9IG90aGVyLmluaGVyaXRlZF9mbGFncy5tX3ByaW50Q29sb3JBZGp1c3QK
KyAgICAgICAgfHwgaW5oZXJpdGVkX2ZsYWdzLl9pbnNpZGVMaW5rICE9IG90aGVyLmluaGVyaXRl
ZF9mbGFncy5faW5zaWRlTGluaworICAgICAgICB8fCBpbmhlcml0ZWRfZmxhZ3MuX2luc2lkZURl
ZmF1bHRCdXR0b24gIT0gb3RoZXIuaW5oZXJpdGVkX2ZsYWdzLl9pbnNpZGVEZWZhdWx0QnV0dG9u
CisgICAgICAgIHx8IHN1cnJvdW5kLT5ib3JkZXIgIT0gb3RoZXIuc3Vycm91bmQtPmJvcmRlcgor
ICAgICAgICB8fCAhbV9iYWNrZ3JvdW5kLT5pc0VxdWl2YWxlbnRGb3JQYWludGluZygqb3RoZXIu
bV9iYWNrZ3JvdW5kKQorICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+dXNlck1vZGlmeSAh
PSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+dXNlck1vZGlmeQorICAgICAgICB8fCByYXJlSW5o
ZXJpdGVkRGF0YS0+dXNlclNlbGVjdCAhPSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+dXNlclNl
bGVjdAorICAgICAgICB8fCByYXJlTm9uSW5oZXJpdGVkRGF0YS0+dXNlckRyYWcgIT0gb3RoZXIu
cmFyZU5vbkluaGVyaXRlZERhdGEtPnVzZXJEcmFnCisgICAgICAgIHx8IHJhcmVOb25Jbmhlcml0
ZWREYXRhLT5tX2JvcmRlckZpdCAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ib3Jk
ZXJGaXQKKyAgICAgICAgfHwgcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fb2JqZWN0Rml0ICE9IG90
aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX29iamVjdEZpdAorICAgICAgICB8fCByYXJlSW5o
ZXJpdGVkRGF0YS0+bV9pbWFnZVJlbmRlcmluZyAhPSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+
bV9pbWFnZVJlbmRlcmluZykKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICNpZiBFTkFCTEUoQ1NT
X1NIQVBFUykKLSAgICBpZiAocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fc2hhcGVPdXRzaWRlICE9
IG90aGVyLT5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9zaGFwZU91dHNpZGUpCisgICAgaWYgKHJh
cmVOb25Jbmhlcml0ZWREYXRhLT5tX3NoYXBlT3V0c2lkZSAhPSBvdGhlci5yYXJlTm9uSW5oZXJp
dGVkRGF0YS0+bV9zaGFwZU91dHNpZGUpCiAgICAgICAgIHJldHVybiB0cnVlOwogI2VuZGlmCiAK
LSAgICBpZiAocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fY2xpcFBhdGggIT0gb3RoZXItPnJhcmVO
b25Jbmhlcml0ZWREYXRhLT5tX2NsaXBQYXRoKQorICAgIGlmIChyYXJlTm9uSW5oZXJpdGVkRGF0
YS0+bV9jbGlwUGF0aCAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9jbGlwUGF0aCkK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgUmVu
ZGVyU3R5bGU6OmNoYW5nZVJlcXVpcmVzUmVwYWludElmVGV4dE9yQm9yZGVyT3JPdXRsaW5lKGNv
bnN0IFJlbmRlclN0eWxlKiBvdGhlciwgdW5zaWduZWQmKSBjb25zdAorYm9vbCBSZW5kZXJTdHls
ZTo6Y2hhbmdlUmVxdWlyZXNSZXBhaW50SWZUZXh0T3JCb3JkZXJPck91dGxpbmUoY29uc3QgUmVu
ZGVyU3R5bGUmIG90aGVyLCB1bnNpZ25lZCYpIGNvbnN0CiB7Ci0gICAgaWYgKGluaGVyaXRlZC0+
Y29sb3IgIT0gb3RoZXItPmluaGVyaXRlZC0+Y29sb3IKLSAgICAgICAgfHwgaW5oZXJpdGVkX2Zs
YWdzLl90ZXh0X2RlY29yYXRpb25zICE9IG90aGVyLT5pbmhlcml0ZWRfZmxhZ3MuX3RleHRfZGVj
b3JhdGlvbnMKLSAgICAgICAgfHwgdmlzdWFsLT50ZXh0RGVjb3JhdGlvbiAhPSBvdGhlci0+dmlz
dWFsLT50ZXh0RGVjb3JhdGlvbgotICAgICAgICB8fCByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV90
ZXh0RGVjb3JhdGlvblN0eWxlICE9IG90aGVyLT5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV90ZXh0
RGVjb3JhdGlvblN0eWxlCi0gICAgICAgIHx8IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3RleHRE
ZWNvcmF0aW9uQ29sb3IgIT0gb3RoZXItPnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3RleHREZWNv
cmF0aW9uQ29sb3IKLSAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPm1fdGV4dERlY29yYXRp
b25Ta2lwICE9IG90aGVyLT5yYXJlSW5oZXJpdGVkRGF0YS0+bV90ZXh0RGVjb3JhdGlvblNraXAK
LSAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPnRleHRGaWxsQ29sb3IgIT0gb3RoZXItPnJh
cmVJbmhlcml0ZWREYXRhLT50ZXh0RmlsbENvbG9yCi0gICAgICAgIHx8IHJhcmVJbmhlcml0ZWRE
YXRhLT50ZXh0U3Ryb2tlQ29sb3IgIT0gb3RoZXItPnJhcmVJbmhlcml0ZWREYXRhLT50ZXh0U3Ry
b2tlQ29sb3IKLSAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPnRleHRFbXBoYXNpc0NvbG9y
ICE9IG90aGVyLT5yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEVtcGhhc2lzQ29sb3IKLSAgICAgICAg
fHwgcmFyZUluaGVyaXRlZERhdGEtPnRleHRFbXBoYXNpc0ZpbGwgIT0gb3RoZXItPnJhcmVJbmhl
cml0ZWREYXRhLT50ZXh0RW1waGFzaXNGaWxsKQorICAgIGlmIChpbmhlcml0ZWQtPmNvbG9yICE9
IG90aGVyLmluaGVyaXRlZC0+Y29sb3IKKyAgICAgICAgfHwgaW5oZXJpdGVkX2ZsYWdzLl90ZXh0
X2RlY29yYXRpb25zICE9IG90aGVyLmluaGVyaXRlZF9mbGFncy5fdGV4dF9kZWNvcmF0aW9ucwor
ICAgICAgICB8fCB2aXN1YWwtPnRleHREZWNvcmF0aW9uICE9IG90aGVyLnZpc3VhbC0+dGV4dERl
Y29yYXRpb24KKyAgICAgICAgfHwgcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fdGV4dERlY29yYXRp
b25TdHlsZSAhPSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV90ZXh0RGVjb3JhdGlvblN0
eWxlCisgICAgICAgIHx8IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3RleHREZWNvcmF0aW9uQ29s
b3IgIT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPm1fdGV4dERlY29yYXRpb25Db2xvcgor
ICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+bV90ZXh0RGVjb3JhdGlvblNraXAgIT0gb3Ro
ZXIucmFyZUluaGVyaXRlZERhdGEtPm1fdGV4dERlY29yYXRpb25Ta2lwCisgICAgICAgIHx8IHJh
cmVJbmhlcml0ZWREYXRhLT50ZXh0RmlsbENvbG9yICE9IG90aGVyLnJhcmVJbmhlcml0ZWREYXRh
LT50ZXh0RmlsbENvbG9yCisgICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT50ZXh0U3Ryb2tl
Q29sb3IgIT0gb3RoZXIucmFyZUluaGVyaXRlZERhdGEtPnRleHRTdHJva2VDb2xvcgorICAgICAg
ICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEVtcGhhc2lzQ29sb3IgIT0gb3RoZXIucmFyZUlu
aGVyaXRlZERhdGEtPnRleHRFbXBoYXNpc0NvbG9yCisgICAgICAgIHx8IHJhcmVJbmhlcml0ZWRE
YXRhLT50ZXh0RW1waGFzaXNGaWxsICE9IG90aGVyLnJhcmVJbmhlcml0ZWREYXRhLT50ZXh0RW1w
aGFzaXNGaWxsKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotYm9vbCBSZW5kZXJTdHlsZTo6Y2hhbmdlUmVxdWlyZXNSZWNvbXBvc2l0ZUxheWVyKGNvbnN0
IFJlbmRlclN0eWxlKiBvdGhlciwgdW5zaWduZWQmKSBjb25zdAorYm9vbCBSZW5kZXJTdHlsZTo6
Y2hhbmdlUmVxdWlyZXNSZWNvbXBvc2l0ZUxheWVyKGNvbnN0IFJlbmRlclN0eWxlJiBvdGhlciwg
dW5zaWduZWQmKSBjb25zdAogewotICAgIGlmIChyYXJlTm9uSW5oZXJpdGVkRGF0YS5nZXQoKSAh
PSBvdGhlci0+cmFyZU5vbkluaGVyaXRlZERhdGEuZ2V0KCkpIHsKLSAgICAgICAgaWYgKHJhcmVO
b25Jbmhlcml0ZWREYXRhLT5tX3RyYW5zZm9ybVN0eWxlM0QgIT0gb3RoZXItPnJhcmVOb25Jbmhl
cml0ZWREYXRhLT5tX3RyYW5zZm9ybVN0eWxlM0QKLSAgICAgICAgICAgIHx8IHJhcmVOb25Jbmhl
cml0ZWREYXRhLT5tX2JhY2tmYWNlVmlzaWJpbGl0eSAhPSBvdGhlci0+cmFyZU5vbkluaGVyaXRl
ZERhdGEtPm1fYmFja2ZhY2VWaXNpYmlsaXR5Ci0gICAgICAgICAgICB8fCByYXJlTm9uSW5oZXJp
dGVkRGF0YS0+bV9wZXJzcGVjdGl2ZSAhPSBvdGhlci0+cmFyZU5vbkluaGVyaXRlZERhdGEtPm1f
cGVyc3BlY3RpdmUKLSAgICAgICAgICAgIHx8IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3BlcnNw
ZWN0aXZlT3JpZ2luWCAhPSBvdGhlci0+cmFyZU5vbkluaGVyaXRlZERhdGEtPm1fcGVyc3BlY3Rp
dmVPcmlnaW5YCi0gICAgICAgICAgICB8fCByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9wZXJzcGVj
dGl2ZU9yaWdpblkgIT0gb3RoZXItPnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3BlcnNwZWN0aXZl
T3JpZ2luWSkKKyAgICBpZiAocmFyZU5vbkluaGVyaXRlZERhdGEuZ2V0KCkgIT0gb3RoZXIucmFy
ZU5vbkluaGVyaXRlZERhdGEuZ2V0KCkpIHsKKyAgICAgICAgaWYgKHJhcmVOb25Jbmhlcml0ZWRE
YXRhLT5tX3RyYW5zZm9ybVN0eWxlM0QgIT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPm1f
dHJhbnNmb3JtU3R5bGUzRAorICAgICAgICAgICAgfHwgcmFyZU5vbkluaGVyaXRlZERhdGEtPm1f
YmFja2ZhY2VWaXNpYmlsaXR5ICE9IG90aGVyLnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2JhY2tm
YWNlVmlzaWJpbGl0eQorICAgICAgICAgICAgfHwgcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fcGVy
c3BlY3RpdmUgIT0gb3RoZXIucmFyZU5vbkluaGVyaXRlZERhdGEtPm1fcGVyc3BlY3RpdmUKKyAg
ICAgICAgICAgIHx8IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3BlcnNwZWN0aXZlT3JpZ2luWCAh
PSBvdGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9wZXJzcGVjdGl2ZU9yaWdpblgKKyAgICAg
ICAgICAgIHx8IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3BlcnNwZWN0aXZlT3JpZ2luWSAhPSBv
dGhlci5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9wZXJzcGVjdGl2ZU9yaWdpblkpCiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVN0eWxl
RGlmZmVyZW5jZSBSZW5kZXJTdHlsZTo6ZGlmZihjb25zdCBSZW5kZXJTdHlsZSogb3RoZXIsIHVu
c2lnbmVkJiBjaGFuZ2VkQ29udGV4dFNlbnNpdGl2ZVByb3BlcnRpZXMpIGNvbnN0CitTdHlsZURp
ZmZlcmVuY2UgUmVuZGVyU3R5bGU6OmRpZmYoY29uc3QgUmVuZGVyU3R5bGUmIG90aGVyLCB1bnNp
Z25lZCYgY2hhbmdlZENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzKSBjb25zdAogewogICAgIGNo
YW5nZWRDb250ZXh0U2Vuc2l0aXZlUHJvcGVydGllcyA9IENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0
eU5vbmU7CiAKICAgICBTdHlsZURpZmZlcmVuY2Ugc3ZnQ2hhbmdlID0gU3R5bGVEaWZmZXJlbmNl
RXF1YWw7Ci0gICAgaWYgKG1fc3ZnU3R5bGUgIT0gb3RoZXItPm1fc3ZnU3R5bGUpIHsKLSAgICAg
ICAgc3ZnQ2hhbmdlID0gbV9zdmdTdHlsZS0+ZGlmZihvdGhlci0+bV9zdmdTdHlsZS5nZXQoKSk7
CisgICAgaWYgKG1fc3ZnU3R5bGUgIT0gb3RoZXIubV9zdmdTdHlsZSkgeworICAgICAgICBzdmdD
aGFuZ2UgPSBtX3N2Z1N0eWxlLT5kaWZmKG90aGVyLm1fc3ZnU3R5bGUuZ2V0KCkpOwogICAgICAg
ICBpZiAoc3ZnQ2hhbmdlID09IFN0eWxlRGlmZmVyZW5jZUxheW91dCkKICAgICAgICAgICAgIHJl
dHVybiBzdmdDaGFuZ2U7CiAgICAgfQpAQCAtODE2LDEwICs4MTYsMTAgQEAgYm9vbCBSZW5kZXJT
dHlsZTo6ZGlmZlJlcXVpcmVzTGF5ZXJSZXBhaW50KGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwg
Ym9vbCBpc0NvbXAKIHsKICAgICB1bnNpZ25lZCBjaGFuZ2VkQ29udGV4dFNlbnNpdGl2ZVByb3Bl
cnRpZXMgPSAwOwogCi0gICAgaWYgKGNoYW5nZVJlcXVpcmVzUmVwYWludCgmc3R5bGUsIGNoYW5n
ZWRDb250ZXh0U2Vuc2l0aXZlUHJvcGVydGllcykpCisgICAgaWYgKGNoYW5nZVJlcXVpcmVzUmVw
YWludChzdHlsZSwgY2hhbmdlZENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzKSkKICAgICAgICAg
cmV0dXJuIHRydWU7CiAKLSAgICBpZiAoaXNDb21wb3NpdGVkICYmIGNoYW5nZVJlcXVpcmVzTGF5
ZXJSZXBhaW50KCZzdHlsZSwgY2hhbmdlZENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzKSkKKyAg
ICBpZiAoaXNDb21wb3NpdGVkICYmIGNoYW5nZVJlcXVpcmVzTGF5ZXJSZXBhaW50KHN0eWxlLCBj
aGFuZ2VkQ29udGV4dFNlbnNpdGl2ZVByb3BlcnRpZXMpKQogICAgICAgICByZXR1cm4gY2hhbmdl
ZENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzICYgQ29udGV4dFNlbnNpdGl2ZVByb3BlcnR5Q2xp
cFJlY3Q7CiAKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZS5oCmluZGV4IDk4NjM5NTA3ZjU1NTIwZTUwYjNkMmYwNzllM2MyNGM0
YTVhNjg0OTkuLjYyNmNjMWVkY2IxNmRlMzhmNzE5NTcxMjk1MmQzYzhmYzE0MGU3MDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCkBAIC0xNzM0LDcg
KzE3MzQsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBlcXVhbEZvclRleHRBdXRvc2l6aW5nKGNvbnN0
IFJlbmRlclN0eWxlICpvdGhlcikgY29uc3Q7CiAjZW5kaWYKIAotICAgIFN0eWxlRGlmZmVyZW5j
ZSBkaWZmKGNvbnN0IFJlbmRlclN0eWxlKiwgdW5zaWduZWQmIGNoYW5nZWRDb250ZXh0U2Vuc2l0
aXZlUHJvcGVydGllcykgY29uc3Q7CisgICAgU3R5bGVEaWZmZXJlbmNlIGRpZmYoY29uc3QgUmVu
ZGVyU3R5bGUmLCB1bnNpZ25lZCYgY2hhbmdlZENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzKSBj
b25zdDsKICAgICBib29sIGRpZmZSZXF1aXJlc0xheWVyUmVwYWludChjb25zdCBSZW5kZXJTdHls
ZSYsIGJvb2wgaXNDb21wb3NpdGVkKSBjb25zdDsKIAogICAgIGJvb2wgaXNEaXNwbGF5UmVwbGFj
ZWRUeXBlKCkgY29uc3QgeyByZXR1cm4gaXNEaXNwbGF5UmVwbGFjZWRUeXBlKGRpc3BsYXkoKSk7
IH0KQEAgLTIwMDQsMTIgKzIwMDQsMTIgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGJvb2wg
Y2hhbmdlQWZmZWN0c1Zpc3VhbE92ZXJmbG93KGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3Q7Ci0g
ICAgYm9vbCBjaGFuZ2VSZXF1aXJlc0xheW91dChjb25zdCBSZW5kZXJTdHlsZSosIHVuc2lnbmVk
JiBjaGFuZ2VkQ29udGV4dFNlbnNpdGl2ZVByb3BlcnRpZXMpIGNvbnN0OwotICAgIGJvb2wgY2hh
bmdlUmVxdWlyZXNQb3NpdGlvbmVkTGF5b3V0T25seShjb25zdCBSZW5kZXJTdHlsZSosIHVuc2ln
bmVkJiBjaGFuZ2VkQ29udGV4dFNlbnNpdGl2ZVByb3BlcnRpZXMpIGNvbnN0OwotICAgIGJvb2wg
Y2hhbmdlUmVxdWlyZXNMYXllclJlcGFpbnQoY29uc3QgUmVuZGVyU3R5bGUqLCB1bnNpZ25lZCYg
Y2hhbmdlZENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzKSBjb25zdDsKLSAgICBib29sIGNoYW5n
ZVJlcXVpcmVzUmVwYWludChjb25zdCBSZW5kZXJTdHlsZSosIHVuc2lnbmVkJiBjaGFuZ2VkQ29u
dGV4dFNlbnNpdGl2ZVByb3BlcnRpZXMpIGNvbnN0OwotICAgIGJvb2wgY2hhbmdlUmVxdWlyZXNS
ZXBhaW50SWZUZXh0T3JCb3JkZXJPck91dGxpbmUoY29uc3QgUmVuZGVyU3R5bGUqLCB1bnNpZ25l
ZCYgY2hhbmdlZENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzKSBjb25zdDsKLSAgICBib29sIGNo
YW5nZVJlcXVpcmVzUmVjb21wb3NpdGVMYXllcihjb25zdCBSZW5kZXJTdHlsZSosIHVuc2lnbmVk
JiBjaGFuZ2VkQ29udGV4dFNlbnNpdGl2ZVByb3BlcnRpZXMpIGNvbnN0OworICAgIGJvb2wgY2hh
bmdlUmVxdWlyZXNMYXlvdXQoY29uc3QgUmVuZGVyU3R5bGUmLCB1bnNpZ25lZCYgY2hhbmdlZENv
bnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzKSBjb25zdDsKKyAgICBib29sIGNoYW5nZVJlcXVpcmVz
UG9zaXRpb25lZExheW91dE9ubHkoY29uc3QgUmVuZGVyU3R5bGUmLCB1bnNpZ25lZCYgY2hhbmdl
ZENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzKSBjb25zdDsKKyAgICBib29sIGNoYW5nZVJlcXVp
cmVzTGF5ZXJSZXBhaW50KGNvbnN0IFJlbmRlclN0eWxlJiwgdW5zaWduZWQmIGNoYW5nZWRDb250
ZXh0U2Vuc2l0aXZlUHJvcGVydGllcykgY29uc3Q7CisgICAgYm9vbCBjaGFuZ2VSZXF1aXJlc1Jl
cGFpbnQoY29uc3QgUmVuZGVyU3R5bGUmLCB1bnNpZ25lZCYgY2hhbmdlZENvbnRleHRTZW5zaXRp
dmVQcm9wZXJ0aWVzKSBjb25zdDsKKyAgICBib29sIGNoYW5nZVJlcXVpcmVzUmVwYWludElmVGV4
dE9yQm9yZGVyT3JPdXRsaW5lKGNvbnN0IFJlbmRlclN0eWxlJiwgdW5zaWduZWQmIGNoYW5nZWRD
b250ZXh0U2Vuc2l0aXZlUHJvcGVydGllcykgY29uc3Q7CisgICAgYm9vbCBjaGFuZ2VSZXF1aXJl
c1JlY29tcG9zaXRlTGF5ZXIoY29uc3QgUmVuZGVyU3R5bGUmLCB1bnNpZ25lZCYgY2hhbmdlZENv
bnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzKSBjb25zdDsKIAogICAgIHZvaWQgc2V0VmlzaXRlZExp
bmtDb2xvcihjb25zdCBDb2xvciYpOwogICAgIHZvaWQgc2V0VmlzaXRlZExpbmtCYWNrZ3JvdW5k
Q29sb3IoY29uc3QgQ29sb3ImIHYpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV92
aXNpdGVkTGlua0JhY2tncm91bmRDb2xvciwgdik7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmNwcAppbmRleCBiNDY5MTQ3
MzJmYWU4YTc4Njc2MjliMmQzYWNiODY1NmI0NmVhNGU0Li5hYzA3ZDY2NmViNzMzMTFlZTRhZjZm
ZmFiYjMzNWJjYTJmM2ZkZDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU3R5bGVHZW5lcmF0ZWRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2UuY3BwCkBAIC0zOSw3ICszOSw3IEBAIFN0eWxl
R2VuZXJhdGVkSW1hZ2U6OlN0eWxlR2VuZXJhdGVkSW1hZ2UoUGFzc1JlZjxDU1NJbWFnZUdlbmVy
YXRvclZhbHVlPiB2YWx1ZSkKIAogUGFzc1JlZlB0cjxDU1NWYWx1ZT4gU3R5bGVHZW5lcmF0ZWRJ
bWFnZTo6Y3NzVmFsdWUoKSBjb25zdAogewotICAgIHJldHVybiAmY29uc3RfY2FzdDxDU1NJbWFn
ZUdlbmVyYXRvclZhbHVlJj4obV9pbWFnZUdlbmVyYXRvclZhbHVlLmdldCgpKTsKKyAgICByZXR1
cm4gY29uc3RfY2FzdDxDU1NJbWFnZUdlbmVyYXRvclZhbHVlKj4obV9pbWFnZUdlbmVyYXRvclZh
bHVlLnB0cigpKTsKIH0KIAogRmxvYXRTaXplIFN0eWxlR2VuZXJhdGVkSW1hZ2U6OmltYWdlU2l6
ZShjb25zdCBSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgZmxvYXQgbXVsdGlwbGllcikgY29uc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdlbmVyYXRl
ZEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHZW5lcmF0ZWRJ
bWFnZS5oCmluZGV4IDdjZDA4YmU0ZmUxZWFhZDUyMGQ1M2YxZjA3NjYwZTQxMjI0NTQzM2EuLjM0
MWRkNGY2ZjdiN2IzMzBiZWMwZDdkZjE3NGU2NTFhNjFhNGM2NTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2UuaApAQCAtNDEs
NyArNDEsNyBAQCBwdWJsaWM6CiAgICAgQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZSYgaW1hZ2VWYWx1
ZSgpIHsgcmV0dXJuIG1faW1hZ2VHZW5lcmF0b3JWYWx1ZTsgfQogCiBwcml2YXRlOgotICAgIHZp
cnR1YWwgV3JhcHBlZEltYWdlUHRyIGRhdGEoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAmbV9p
bWFnZUdlbmVyYXRvclZhbHVlLmdldCgpOyB9CisgICAgdmlydHVhbCBXcmFwcGVkSW1hZ2VQdHIg
ZGF0YSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faW1hZ2VHZW5lcmF0b3JWYWx1ZS5wdHIo
KTsgfQogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBjc3NWYWx1ZSgpIGNvbnN0
IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29s
dmVGb3JEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVGb3JE
b2N1bWVudC5jcHAKaW5kZXggNjE1NWIzNmE5ZDUzNjc3MDY2YTdkYzA1OTYzOGRkZjQwOTcwZmY0
OC4uMzc5NGZjY2FlYTBkNjFmMDgyYmM5M2Q2MzM5NWFmY2FiNzI5NjhhMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlRm9yRG9jdW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZUZvckRvY3VtZW50LmNwcApAQCAtOTAsNyAr
OTAsNyBAQCBQYXNzUmVmPFJlbmRlclN0eWxlPiByZXNvbHZlRm9yRG9jdW1lbnQoY29uc3QgRG9j
dW1lbnQmIGRvY3VtZW50KQogICAgICAgICBkb2N1bWVudFN0eWxlLmdldCgpLnNldENvbHVtblN0
eWxlc0Zyb21QYWdpbmF0aW9uTW9kZShwYWdpbmF0aW9uLm1vZGUpOwogICAgICAgICBkb2N1bWVu
dFN0eWxlLmdldCgpLnNldENvbHVtbkdhcChwYWdpbmF0aW9uLmdhcCk7CiAgICAgICAgIGlmIChy
ZW5kZXJWaWV3Lm11bHRpQ29sdW1uRmxvd1RocmVhZCgpKQotICAgICAgICAgICAgcmVuZGVyVmll
dy51cGRhdGVDb2x1bW5Qcm9ncmVzc2lvbkZyb21TdHlsZSgmZG9jdW1lbnRTdHlsZS5nZXQoKSk7
CisgICAgICAgICAgICByZW5kZXJWaWV3LnVwZGF0ZUNvbHVtblByb2dyZXNzaW9uRnJvbVN0eWxl
KGRvY3VtZW50U3R5bGUuZ2V0KCkpOwogICAgIH0KIAogICAgIGNvbnN0IFNldHRpbmdzJiBzZXR0
aW5ncyA9IHJlbmRlclZpZXcuZnJhbWUoKS5zZXR0aW5ncygpOwpAQCAtMTA4LDcgKzEwOCw3IEBA
IFBhc3NSZWY8UmVuZGVyU3R5bGU+IHJlc29sdmVGb3JEb2N1bWVudChjb25zdCBEb2N1bWVudCYg
ZG9jdW1lbnQpCiAgICAgaW50IHNpemUgPSBmb250U2l6ZUZvcktleXdvcmQoQ1NTVmFsdWVNZWRp
dW0sIGZhbHNlLCBkb2N1bWVudCk7CiAgICAgZm9udERlc2NyaXB0aW9uLnNldFNwZWNpZmllZFNp
emUoc2l6ZSk7CiAgICAgYm9vbCB1c2VTVkdab29tUnVsZXMgPSBkb2N1bWVudC5pc1NWR0RvY3Vt
ZW50KCk7Ci0gICAgZm9udERlc2NyaXB0aW9uLnNldENvbXB1dGVkU2l6ZShjb21wdXRlZEZvbnRT
aXplRnJvbVNwZWNpZmllZFNpemUoc2l6ZSwgZm9udERlc2NyaXB0aW9uLmlzQWJzb2x1dGVTaXpl
KCksIHVzZVNWR1pvb21SdWxlcywgJmRvY3VtZW50U3R5bGUuZ2V0KCksIGRvY3VtZW50KSk7Cisg
ICAgZm9udERlc2NyaXB0aW9uLnNldENvbXB1dGVkU2l6ZShjb21wdXRlZEZvbnRTaXplRnJvbVNw
ZWNpZmllZFNpemUoc2l6ZSwgZm9udERlc2NyaXB0aW9uLmlzQWJzb2x1dGVTaXplKCksIHVzZVNW
R1pvb21SdWxlcywgZG9jdW1lbnRTdHlsZS5wdHIoKSwgZG9jdW1lbnQpKTsKIAogICAgIEZvbnRP
cmllbnRhdGlvbiBmb250T3JpZW50YXRpb247CiAgICAgTm9uQ0pLR2x5cGhPcmllbnRhdGlvbiBn
bHlwaE9yaWVudGF0aW9uOwpAQCAtMTE4LDcgKzExOCw3IEBAIFBhc3NSZWY8UmVuZGVyU3R5bGU+
IHJlc29sdmVGb3JEb2N1bWVudChjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQpCiAKICAgICBkb2N1
bWVudFN0eWxlLmdldCgpLnNldEZvbnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pOwogCi0g
ICAgQ1NTRm9udFNlbGVjdG9yKiBmb250U2VsZWN0b3IgPSBkb2N1bWVudC5zdHlsZVJlc29sdmVy
SWZFeGlzdHMoKSA/IGRvY3VtZW50LnN0eWxlUmVzb2x2ZXJJZkV4aXN0cygpLT5mb250U2VsZWN0
b3IoKSA6IDA7CisgICAgQ1NTRm9udFNlbGVjdG9yKiBmb250U2VsZWN0b3IgPSBkb2N1bWVudC5z
dHlsZVJlc29sdmVySWZFeGlzdHMoKSA/IGRvY3VtZW50LnN0eWxlUmVzb2x2ZXJJZkV4aXN0cygp
LT5mb250U2VsZWN0b3IoKSA6IG51bGxwdHI7CiAgICAgZG9jdW1lbnRTdHlsZS5nZXQoKS5mb250
KCkudXBkYXRlKGZvbnRTZWxlY3Rvcik7CiAKICAgICByZXR1cm4gZG9jdW1lbnRTdHlsZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZVRyZWUuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlVHJlZS5jcHAKaW5kZXggYzI0YzIxNmNkYTkz
YjAxMDQxNGQ2MmVjYmU5MzEyNmNjZjYzY2JhOS4uNDQ2ZWU1MWJmZjc1MTQxM2M1ZjI1YmE4MDE3
YmRjYWYxYWVjMjVkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNv
bHZlVHJlZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlVHJlZS5j
cHAKQEAgLTkzLDU0ICs5Myw1MiBAQCBzdGF0aWMgdm9pZCBkZXRhY2hSZW5kZXJUcmVlKEVsZW1l
bnQmLCBEZXRhY2hUeXBlKTsKIHN0YXRpYyB2b2lkIHJlc29sdmVUZXh0Tm9kZShUZXh0JiwgUmVu
ZGVyVHJlZVBvc2l0aW9uJik7CiBzdGF0aWMgdm9pZCByZXNvbHZlVHJlZShFbGVtZW50JiwgUmVu
ZGVyU3R5bGUmIGluaGVyaXRlZFN0eWxlLCBSZW5kZXJUcmVlUG9zaXRpb24mLCBDaGFuZ2UpOwog
Ci1DaGFuZ2UgZGV0ZXJtaW5lQ2hhbmdlKGNvbnN0IFJlbmRlclN0eWxlKiBzMSwgY29uc3QgUmVu
ZGVyU3R5bGUqIHMyKQorQ2hhbmdlIGRldGVybWluZUNoYW5nZShjb25zdCBSZW5kZXJTdHlsZSYg
czEsIGNvbnN0IFJlbmRlclN0eWxlJiBzMikKIHsKLSAgICBpZiAoIXMxIHx8ICFzMikKKyAgICBp
ZiAoczEuZGlzcGxheSgpICE9IHMyLmRpc3BsYXkoKSkKICAgICAgICAgcmV0dXJuIERldGFjaDsK
LSAgICBpZiAoczEtPmRpc3BsYXkoKSAhPSBzMi0+ZGlzcGxheSgpKQotICAgICAgICByZXR1cm4g
RGV0YWNoOwotICAgIGlmIChzMS0+aGFzUHNldWRvU3R5bGUoRklSU1RfTEVUVEVSKSAhPSBzMi0+
aGFzUHNldWRvU3R5bGUoRklSU1RfTEVUVEVSKSkKKyAgICBpZiAoczEuaGFzUHNldWRvU3R5bGUo
RklSU1RfTEVUVEVSKSAhPSBzMi5oYXNQc2V1ZG9TdHlsZShGSVJTVF9MRVRURVIpKQogICAgICAg
ICByZXR1cm4gRGV0YWNoOwogICAgIC8vIFdlIGp1c3QgZGV0YWNoIGlmIGEgcmVuZGVyZXIgYWNx
dWlyZXMgb3IgbG9zZXMgYSBjb2x1bW4tc3Bhbiwgc2luY2Ugc3Bhbm5pbmcgZWxlbWVudHMKICAg
ICAvLyB0eXBpY2FsbHkgd29uJ3QgY29udGFpbiBtdWNoIGNvbnRlbnQuCi0gICAgaWYgKHMxLT5j
b2x1bW5TcGFuKCkgIT0gczItPmNvbHVtblNwYW4oKSkKKyAgICBpZiAoczEuY29sdW1uU3Bhbigp
ICE9IHMyLmNvbHVtblNwYW4oKSkKICAgICAgICAgcmV0dXJuIERldGFjaDsKLSAgICBpZiAoIXMx
LT5jb250ZW50RGF0YUVxdWl2YWxlbnQoczIpKQorICAgIGlmICghczEuY29udGVudERhdGFFcXVp
dmFsZW50KCZzMikpCiAgICAgICAgIHJldHVybiBEZXRhY2g7CiAgICAgLy8gV2hlbiB0ZXh0LWNv
bWJpbmUgcHJvcGVydHkgaGFzIGJlZW4gY2hhbmdlZCwgd2UgbmVlZCB0byBwcmVwYXJlIGEgc2Vw
YXJhdGUgcmVuZGVyZXIgb2JqZWN0LgogICAgIC8vIFdoZW4gdGV4dC1jb21iaW5lIGlzIG9uLCB3
ZSB1c2UgUmVuZGVyQ29tYmluZVRleHQsIG90aGVyd2lzZSBSZW5kZXJUZXh0LgogICAgIC8vIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NTA2OQotICAgIGlmIChzMS0+
aGFzVGV4dENvbWJpbmUoKSAhPSBzMi0+aGFzVGV4dENvbWJpbmUoKSkKKyAgICBpZiAoczEuaGFz
VGV4dENvbWJpbmUoKSAhPSBzMi5oYXNUZXh0Q29tYmluZSgpKQogICAgICAgICByZXR1cm4gRGV0
YWNoOwogICAgIC8vIFdlIG5lZWQgdG8gcmVhdHRhY2ggdGhlIG5vZGUsIHNvIHRoYXQgaXQgaXMg
bW92ZWQgdG8gdGhlIGNvcnJlY3QgUmVuZGVyRmxvd1RocmVhZC4KLSAgICBpZiAoczEtPmZsb3dU
aHJlYWQoKSAhPSBzMi0+Zmxvd1RocmVhZCgpKQorICAgIGlmIChzMS5mbG93VGhyZWFkKCkgIT0g
czIuZmxvd1RocmVhZCgpKQogICAgICAgICByZXR1cm4gRGV0YWNoOwogICAgIC8vIFdoZW4gdGhl
IHJlZ2lvbiB0aHJlYWQgaGFzIGNoYW5nZWQsIHdlIG5lZWQgdG8gcHJlcGFyZSBhIHNlcGFyYXRl
IHJlbmRlciByZWdpb24gb2JqZWN0LgotICAgIGlmIChzMS0+cmVnaW9uVGhyZWFkKCkgIT0gczIt
PnJlZ2lvblRocmVhZCgpKQorICAgIGlmIChzMS5yZWdpb25UaHJlYWQoKSAhPSBzMi5yZWdpb25U
aHJlYWQoKSkKICAgICAgICAgcmV0dXJuIERldGFjaDsKICAgICAvLyBGSVhNRTogTXVsdGljb2x1
bW4gcmVnaW9ucyBub3QgeWV0IHN1cHBvcnRlZCAoaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3Nz
LXJlZ2lvbnMvI211bHRpLWNvbHVtbi1yZWdpb25zKQogICAgIC8vIFdoZW4gdGhlIG5vZGUgaGFz
IHJlZ2lvbiBzdHlsZSBhbmQgY2hhbmdlZCBpdHMgbXVsdGljb2wgc3R5bGUsIHdlIGhhdmUgdG8g
cHJlcGFyZQogICAgIC8vIGEgc2VwYXJhdGUgcmVuZGVyIHJlZ2lvbiBvYmplY3QuCi0gICAgaWYg
KHMxLT5oYXNGbG93RnJvbSgpICYmIChzMS0+c3BlY2lmaWVzQ29sdW1ucygpICE9IHMyLT5zcGVj
aWZpZXNDb2x1bW5zKCkpKQorICAgIGlmIChzMS5oYXNGbG93RnJvbSgpICYmIChzMS5zcGVjaWZp
ZXNDb2x1bW5zKCkgIT0gczIuc3BlY2lmaWVzQ29sdW1ucygpKSkKICAgICAgICAgcmV0dXJuIERl
dGFjaDsKIAotICAgIGlmICgqczEgIT0gKnMyKSB7Ci0gICAgICAgIGlmIChzMS0+aW5oZXJpdGVk
Tm90RXF1YWwoczIpKQorICAgIGlmIChzMSAhPSBzMikgeworICAgICAgICBpZiAoczEuaW5oZXJp
dGVkTm90RXF1YWwoJnMyKSkKICAgICAgICAgICAgIHJldHVybiBJbmhlcml0OwotICAgICAgICBp
ZiAoczEtPmhhc0V4cGxpY2l0bHlJbmhlcml0ZWRQcm9wZXJ0aWVzKCkgfHwgczItPmhhc0V4cGxp
Y2l0bHlJbmhlcml0ZWRQcm9wZXJ0aWVzKCkpCisgICAgICAgIGlmIChzMS5oYXNFeHBsaWNpdGx5
SW5oZXJpdGVkUHJvcGVydGllcygpIHx8IHMyLmhhc0V4cGxpY2l0bHlJbmhlcml0ZWRQcm9wZXJ0
aWVzKCkpCiAgICAgICAgICAgICByZXR1cm4gSW5oZXJpdDsKIAogICAgICAgICByZXR1cm4gTm9J
bmhlcml0OwogICAgIH0KICAgICAvLyBJZiB0aGUgcHNldWRvU3R5bGVzIGhhdmUgY2hhbmdlZCwg
d2Ugd2FudCBhbnkgU3R5bGVDaGFuZ2UgdGhhdCBpcyBub3QgTm9DaGFuZ2UKICAgICAvLyBiZWNh
dXNlIHNldFN0eWxlIHdpbGwgZG8gdGhlIHJpZ2h0IHRoaW5nIHdpdGggYW55dGhpbmcgZWxzZS4K
LSAgICBpZiAoczEtPmhhc0FueVB1YmxpY1BzZXVkb1N0eWxlcygpKSB7CisgICAgaWYgKHMxLmhh
c0FueVB1YmxpY1BzZXVkb1N0eWxlcygpKSB7CiAgICAgICAgIGZvciAoUHNldWRvSWQgcHNldWRv
SWQgPSBGSVJTVF9QVUJMSUNfUFNFVURPSUQ7IHBzZXVkb0lkIDwgRklSU1RfSU5URVJOQUxfUFNF
VURPSUQ7IHBzZXVkb0lkID0gc3RhdGljX2Nhc3Q8UHNldWRvSWQ+KHBzZXVkb0lkICsgMSkpIHsK
LSAgICAgICAgICAgIGlmIChzMS0+aGFzUHNldWRvU3R5bGUocHNldWRvSWQpKSB7Ci0gICAgICAg
ICAgICAgICAgUmVuZGVyU3R5bGUqIHBzMiA9IHMyLT5nZXRDYWNoZWRQc2V1ZG9TdHlsZShwc2V1
ZG9JZCk7CisgICAgICAgICAgICBpZiAoczEuaGFzUHNldWRvU3R5bGUocHNldWRvSWQpKSB7Cisg
ICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIHBzMiA9IHMyLmdldENhY2hlZFBzZXVkb1N0eWxl
KHBzZXVkb0lkKTsKICAgICAgICAgICAgICAgICBpZiAoIXBzMikKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIE5vSW5oZXJpdDsKLSAgICAgICAgICAgICAgICBSZW5kZXJTdHlsZSogcHMxID0g
czEtPmdldENhY2hlZFBzZXVkb1N0eWxlKHBzZXVkb0lkKTsKKyAgICAgICAgICAgICAgICBSZW5k
ZXJTdHlsZSogcHMxID0gczEuZ2V0Q2FjaGVkUHNldWRvU3R5bGUocHNldWRvSWQpOwogICAgICAg
ICAgICAgICAgIGlmICghcHMxIHx8ICpwczEgIT0gKnBzMikKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIE5vSW5oZXJpdDsKICAgICAgICAgICAgIH0KQEAgLTc1MCw4ICs3NDgsOSBAQCBzdGF0
aWMgQ2hhbmdlIHJlc29sdmVMb2NhbChFbGVtZW50JiBjdXJyZW50LCBSZW5kZXJTdHlsZSYgaW5o
ZXJpdGVkU3R5bGUsIFJlbmRlcgogCiAgICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gY3VycmVudC5k
b2N1bWVudCgpOwogICAgIGlmIChjdXJyZW50U3R5bGUgJiYgY3VycmVudC5zdHlsZUNoYW5nZVR5
cGUoKSAhPSBSZWNvbnN0cnVjdFJlbmRlclRyZWUpIHsKLSAgICAgICAgbmV3U3R5bGUgPSBzdHls
ZUZvckVsZW1lbnQoY3VycmVudCwgaW5oZXJpdGVkU3R5bGUpOwotICAgICAgICBsb2NhbENoYW5n
ZSA9IGRldGVybWluZUNoYW5nZShjdXJyZW50U3R5bGUuZ2V0KCksIG5ld1N0eWxlLmdldCgpKTsK
KyAgICAgICAgUmVmPFJlbmRlclN0eWxlPiBzdHlsZShzdHlsZUZvckVsZW1lbnQoY3VycmVudCwg
aW5oZXJpdGVkU3R5bGUpKTsKKyAgICAgICAgbmV3U3R5bGUgPSBzdHlsZS5wdHIoKTsKKyAgICAg
ICAgbG9jYWxDaGFuZ2UgPSBkZXRlcm1pbmVDaGFuZ2UoKmN1cnJlbnRTdHlsZSwgc3R5bGUpOwog
ICAgIH0KICAgICBpZiAobG9jYWxDaGFuZ2UgPT0gRGV0YWNoKSB7CiAgICAgICAgIGlmIChjdXJy
ZW50LnJlbmRlcmVyKCkgfHwgY3VycmVudC5pc05hbWVkRmxvd0NvbnRlbnROb2RlKCkpCkBAIC05
ODQsNyArOTgzLDcgQEAgdm9pZCByZXNvbHZlVHJlZShEb2N1bWVudCYgZG9jdW1lbnQsIENoYW5n
ZSBjaGFuZ2UpCiAgICAgICAgICAgICAgICAgZG9jdW1lbnRTdHlsZS5nZXQoKS5mb250KCkudXBk
YXRlKHN0eWxlUmVzb2x2ZXItPmZvbnRTZWxlY3RvcigpKTsKICAgICAgICAgfQogCi0gICAgICAg
IFN0eWxlOjpDaGFuZ2UgZG9jdW1lbnRDaGFuZ2UgPSBkZXRlcm1pbmVDaGFuZ2UoJmRvY3VtZW50
U3R5bGUuZ2V0KCksICZkb2N1bWVudC5yZW5kZXJWaWV3KCktPnN0eWxlKCkpOworICAgICAgICBT
dHlsZTo6Q2hhbmdlIGRvY3VtZW50Q2hhbmdlID0gZGV0ZXJtaW5lQ2hhbmdlKGRvY3VtZW50U3R5
bGUuZ2V0KCksIGRvY3VtZW50LnJlbmRlclZpZXcoKS0+c3R5bGUoKSk7CiAgICAgICAgIGlmIChk
b2N1bWVudENoYW5nZSAhPSBOb0NoYW5nZSkKICAgICAgICAgICAgIGRvY3VtZW50LnJlbmRlclZp
ZXcoKS0+c2V0U3R5bGUoV1RGOjptb3ZlKGRvY3VtZW50U3R5bGUpKTsKICAgICAgICAgZWxzZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlVHJlZS5oIGIvU291
cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlVHJlZS5oCmluZGV4IDdkZDI1MWI5Mzc1NmM4
N2U3MzI5MTEyNWNkODhiYjM0YzA2ZGI3ZWYuLjAwZjMwNjc5NzNhNmIyZjJhMTJjY2MxNzk1ZjAy
MjE2Y2EyODZiMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2
ZVRyZWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVUcmVlLmgKQEAg
LTQ3LDcgKzQ3LDcgQEAgdm9pZCBkZXRhY2hUZXh0UmVuZGVyZXIoVGV4dCYpOwogCiB2b2lkIHVw
ZGF0ZVRleHRSZW5kZXJlckFmdGVyQ29udGVudENoYW5nZShUZXh0JiwgdW5zaWduZWQgb2Zmc2V0
T2ZSZXBsYWNlZERhdGEsIHVuc2lnbmVkIGxlbmd0aE9mUmVwbGFjZWREYXRhKTsKIAotQ2hhbmdl
IGRldGVybWluZUNoYW5nZShjb25zdCBSZW5kZXJTdHlsZSosIGNvbnN0IFJlbmRlclN0eWxlKik7
CitDaGFuZ2UgZGV0ZXJtaW5lQ2hhbmdlKGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgUmVuZGVy
U3R5bGUmKTsKIAogdm9pZCBxdWV1ZVBvc3RSZXNvbHV0aW9uQ2FsbGJhY2soc3RkOjpmdW5jdGlv
bjx2b2lkICgpPik7CiBib29sIHBvc3RSZXNvbHV0aW9uQ2FsbGJhY2tzQXJlU3VzcGVuZGVkKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tIGIvU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQppbmRleCA4YjJiMjAzN2Q0ZmZkYzg0
MGNkZjY4YmRkODYyNzVlMmY5ZjkxZWRkLi5lZWJkNjI5MDFkM2QyNGZmNTgwYWI0ZjYxYzNlYTA3
NTNhYTg5ZTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1l
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KQEAgLTk1Myw3
ICs5NTMsNyBAQCAtICh2b2lkKV9zZXRUeXBpbmdTdHlsZTooRE9NQ1NTU3R5bGVEZWNsYXJhdGlv
biAqKXN0eWxlIHdpdGhVbmRvQWN0aW9uOihFZGl0QWN0aQogICAgICAgICByZXR1cm47CiAgICAg
Ly8gRklYTUU6IFdlIHNob3VsZG4ndCBoYXZlIHRvIGNyZWF0ZSBhIGNvcHkgaGVyZS4KICAgICBS
ZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gcHJvcGVydGllcyhjb3JlKHN0eWxlKS0+Y29weVBy
b3BlcnRpZXMoKSk7Ci0gICAgX3ByaXZhdGUtPmNvcmVGcmFtZS0+ZWRpdG9yKCkuY29tcHV0ZUFu
ZFNldFR5cGluZ1N0eWxlKCZwcm9wZXJ0aWVzLmdldCgpLCB1bmRvQWN0aW9uKTsKKyAgICBfcHJp
dmF0ZS0+Y29yZUZyYW1lLT5lZGl0b3IoKS5jb21wdXRlQW5kU2V0VHlwaW5nU3R5bGUocHJvcGVy
dGllcy5wdHIoKSwgdW5kb0FjdGlvbik7CiB9CiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbSBiL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KaW5kZXggOTQ0YzVjODQyMjk1
YmQzMzdkYmQ2YWMxMjRmOTEzNGU4YmQ2ZjEwMC4uMTdhNjUwYTk5YzE2MWJmYjViZTNiZTg0ZDEx
NzA1MjI1M2UxMWFhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJI
VE1MVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1t
CkBAIC00NzU1LDcgKzQ3NTUsNyBAQCAtICh2b2lkKV9hcHBseVN0eWxlVG9TZWxlY3Rpb246KERP
TUNTU1N0eWxlRGVjbGFyYXRpb24gKilzdHlsZSB3aXRoVW5kb0FjdGlvbjooRQogICAgIGlmIChG
cmFtZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKSkgewogICAgICAgICAvLyBGSVhN
RTogV2Ugc2hvdWxkbid0IGhhdmUgdG8gbWFrZSBhIGNvcHkgaGVyZS4gV2Ugd2FudCBjYWxsZXJz
IG9mIHRoaXMgZnVuY3Rpb24gdG8gd29yayBkaXJlY3RseSB3aXRoIFN0eWxlUHJvcGVydGllcyBl
dmVudHVhbGx5LgogICAgICAgICBSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gcHJvcGVydGll
cyhjb3JlKHN0eWxlKS0+Y29weVByb3BlcnRpZXMoKSk7Ci0gICAgICAgIGNvcmVGcmFtZS0+ZWRp
dG9yKCkuYXBwbHlTdHlsZVRvU2VsZWN0aW9uKCZwcm9wZXJ0aWVzLmdldCgpLCB1bmRvQWN0aW9u
KTsKKyAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS5hcHBseVN0eWxlVG9TZWxlY3Rpb24ocHJv
cGVydGllcy5wdHIoKSwgdW5kb0FjdGlvbik7CiAgICAgfQogfQogCkBAIC01MDY1LDcgKzUwNjUs
NyBAQCAtICh2b2lkKV9jaGFuZ2VDU1NDb2xvclVzaW5nU2VsZWN0b3I6KFNFTClzZWxlY3RvciBp
blJhbmdlOihET01SYW5nZSAqKXJhbmdlCiAgICAgICAgIGlmIChGcmFtZSogY29yZUZyYW1lID0g
Y29yZShbc2VsZiBfZnJhbWVdKSkgewogICAgICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZG4n
dCBoYXZlIHRvIG1ha2UgYSBjb3B5IGhlcmUuCiAgICAgICAgICAgICBSZWY8TXV0YWJsZVN0eWxl
UHJvcGVydGllcz4gcHJvcGVydGllcyhjb3JlKHN0eWxlKS0+Y29weVByb3BlcnRpZXMoKSk7Ci0g
ICAgICAgICAgICBjb3JlRnJhbWUtPmVkaXRvcigpLmFwcGx5U3R5bGUoJnByb3BlcnRpZXMuZ2V0
KCksIFtzZWxmIF91bmRvQWN0aW9uRnJvbUNvbG9yUGFuZWxXaXRoU2VsZWN0b3I6c2VsZWN0b3Jd
KTsKKyAgICAgICAgICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCkuYXBwbHlTdHlsZShwcm9wZXJ0aWVz
LnB0cigpLCBbc2VsZiBfdW5kb0FjdGlvbkZyb21Db2xvclBhbmVsV2l0aFNlbGVjdG9yOnNlbGVj
dG9yXSk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5t
bQppbmRleCBiOTQ5MGMyOWQyODAwNjJkZjNhOTc0YmU5MTMzZDY4ZGI3ZTVjOGYzLi5hZGY3M2Ix
ZGI5MGRjYWEwNzQ2MTViNmM5YmIwYjgyZjRkODhhMmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJWaWV3Lm1tCkBAIC03NTQwLDcgKzc1NDAsNyBAQCAtICh2b2lkKWFwcGx5U3R5bGU6KERP
TUNTU1N0eWxlRGVjbGFyYXRpb24gKilzdHlsZQogICAgIGlmIChGcmFtZSogY29yZUZyYW1lID0g
Y29yZSh3ZWJGcmFtZSkpIHsKICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZG4ndCBoYXZlIHRv
IG1ha2UgYSBjb3B5IGhlcmUuCiAgICAgICAgIFJlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBw
cm9wZXJ0aWVzKGNvcmUoc3R5bGUpLT5jb3B5UHJvcGVydGllcygpKTsKLSAgICAgICAgY29yZUZy
YW1lLT5lZGl0b3IoKS5hcHBseVN0eWxlKCZwcm9wZXJ0aWVzLmdldCgpKTsKKyAgICAgICAgY29y
ZUZyYW1lLT5lZGl0b3IoKS5hcHBseVN0eWxlKHByb3BlcnRpZXMucHRyKCkpOwogICAgIH0KIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCmluZGV4IGNmYmYzM2ZiMjI0
MTc3ZjlkYzAyNTViMzA1NTQ0ZTViMDM1NjMyY2YuLmQ1ZThhZWExMGUyZGUzMWQxZGE0OWRlNmQ2
YzQxZWJiYzZhYjVmZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJD
b250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAK
QEAgLTg1NSw3ICs4NTUsNyBAQCBXZWJQcm9jZXNzUHJveHkmIFdlYkNvbnRleHQ6OmNyZWF0ZU5l
d1dlYlByb2Nlc3NSZXNwZWN0aW5nUHJvY2Vzc0NvdW50TGltaXQoKQogUGFzc1JlZlB0cjxXZWJQ
YWdlUHJveHk+IFdlYkNvbnRleHQ6OmNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYgcGFnZUNsaWVu
dCwgV2ViUGFnZUNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbikKIHsKICAgICBpZiAoIWNvbmZp
Z3VyYXRpb24ucGFnZUdyb3VwKQotICAgICAgICBjb25maWd1cmF0aW9uLnBhZ2VHcm91cCA9ICZt
X2RlZmF1bHRQYWdlR3JvdXAuZ2V0KCk7CisgICAgICAgIGNvbmZpZ3VyYXRpb24ucGFnZUdyb3Vw
ID0gbV9kZWZhdWx0UGFnZUdyb3VwLnB0cigpOwogICAgIGlmICghY29uZmlndXJhdGlvbi5wcmVm
ZXJlbmNlcykKICAgICAgICAgY29uZmlndXJhdGlvbi5wcmVmZXJlbmNlcyA9ICZjb25maWd1cmF0
aW9uLnBhZ2VHcm91cC0+cHJlZmVyZW5jZXMoKTsKICAgICBpZiAoIWNvbmZpZ3VyYXRpb24udmlz
aXRlZExpbmtQcm92aWRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKaW5kZXggNzg0NjdmYjg2NmJjZmE5YWM2Y2RkZTI2YzM3MjAyY2Y2MGRmMGQ5OC4uNjI3ODMz
MGZiODYyZjQ2OWM0Njk3YzJlZjc0NGExYjBmZDZiOGViMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTQ2Nyw3ICs0NjcsNyBAQCBib29sIFdlYlBhZ2VQ
cm94eTo6aXNWYWxpZCgpIGNvbnN0CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRQcmVmZXJlbmNl
cyhXZWJQcmVmZXJlbmNlcyYgcHJlZmVyZW5jZXMpCiB7Ci0gICAgaWYgKCZwcmVmZXJlbmNlcyA9
PSAmbV9wcmVmZXJlbmNlcy5nZXQoKSkKKyAgICBpZiAoJnByZWZlcmVuY2VzID09IG1fcHJlZmVy
ZW5jZXMucHRyKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fcHJlZmVyZW5jZXMtPnJlbW92
ZVBhZ2UoKnRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
LmNwcAppbmRleCA4ODRlYzQ0OWUzZDhkYjg0YTQ0ODdiNGViY2U3MmYwNzE2Yjg5NzZhLi44NGQw
MDEyM2ExYmQwNThmY2Q5M2RkZjczNGQyNGZiMmQxNTUxZWNlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtNjI5LDcgKzYyOSw3IEBAIHZvaWQg
V2ViUHJvY2Vzc1Byb3h5OjpkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YSh1aW50NjRfdCBw
YWdlSUQsIGNvbnN0IFdlYk5hCiAgICAgTUVTU0FHRV9DSEVDSyhmcmFtZSk7CiAgICAgTUVTU0FH
RV9DSEVDSyhmcmFtZS0+cGFnZSgpID09IHBhZ2UpOwogICAgIAotICAgIG1fY29udGV4dC0+aGlz
dG9yeUNsaWVudCgpLmRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhKCZtX2NvbnRleHQuZ2V0
KCksIHBhZ2UsIHN0b3JlLCBmcmFtZSk7CisgICAgbV9jb250ZXh0LT5oaXN0b3J5Q2xpZW50KCku
ZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGEobV9jb250ZXh0LnB0cigpLCBwYWdlLCBzdG9y
ZSwgZnJhbWUpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkUGVyZm9ybUNsaWVudFJl
ZGlyZWN0KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkxTdHJpbmcsIGNv
bnN0IFN0cmluZyYgZGVzdGluYXRpb25VUkxTdHJpbmcsIHVpbnQ2NF90IGZyYW1lSUQpCkBAIC02
NDcsNyArNjQ3LDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZFBlcmZvcm1DbGllbnRSZWRp
cmVjdCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFN0cmluZyYgc28KICAgICBNRVNTQUdFX0NIRUNL
X1VSTChzb3VyY2VVUkxTdHJpbmcpOwogICAgIE1FU1NBR0VfQ0hFQ0tfVVJMKGRlc3RpbmF0aW9u
VVJMU3RyaW5nKTsKIAotICAgIG1fY29udGV4dC0+aGlzdG9yeUNsaWVudCgpLmRpZFBlcmZvcm1D
bGllbnRSZWRpcmVjdCgmbV9jb250ZXh0LmdldCgpLCBwYWdlLCBzb3VyY2VVUkxTdHJpbmcsIGRl
c3RpbmF0aW9uVVJMU3RyaW5nLCBmcmFtZSk7CisgICAgbV9jb250ZXh0LT5oaXN0b3J5Q2xpZW50
KCkuZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0KG1fY29udGV4dC5wdHIoKSwgcGFnZSwgc291cmNl
VVJMU3RyaW5nLCBkZXN0aW5hdGlvblVSTFN0cmluZywgZnJhbWUpOwogfQogCiB2b2lkIFdlYlBy
b2Nlc3NQcm94eTo6ZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0KHVpbnQ2NF90IHBhZ2VJRCwgY29u
c3QgU3RyaW5nJiBzb3VyY2VVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25VUkxT
dHJpbmcsIHVpbnQ2NF90IGZyYW1lSUQpCkBAIC02NjUsNyArNjY1LDcgQEAgdm9pZCBXZWJQcm9j
ZXNzUHJveHk6OmRpZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0
IFN0cmluZyYgc28KICAgICBNRVNTQUdFX0NIRUNLX1VSTChzb3VyY2VVUkxTdHJpbmcpOwogICAg
IE1FU1NBR0VfQ0hFQ0tfVVJMKGRlc3RpbmF0aW9uVVJMU3RyaW5nKTsKIAotICAgIG1fY29udGV4
dC0+aGlzdG9yeUNsaWVudCgpLmRpZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdCgmbV9jb250ZXh0Lmdl
dCgpLCBwYWdlLCBzb3VyY2VVUkxTdHJpbmcsIGRlc3RpbmF0aW9uVVJMU3RyaW5nLCBmcmFtZSk7
CisgICAgbV9jb250ZXh0LT5oaXN0b3J5Q2xpZW50KCkuZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0
KG1fY29udGV4dC5wdHIoKSwgcGFnZSwgc291cmNlVVJMU3RyaW5nLCBkZXN0aW5hdGlvblVSTFN0
cmluZywgZnJhbWUpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkVXBkYXRlSGlzdG9y
eVRpdGxlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5n
JiB1cmwsIHVpbnQ2NF90IGZyYW1lSUQpCkBAIC02NzksNyArNjc5LDcgQEAgdm9pZCBXZWJQcm9j
ZXNzUHJveHk6OmRpZFVwZGF0ZUhpc3RvcnlUaXRsZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFN0
cmluZyYgdGl0bGUKICAgICBNRVNTQUdFX0NIRUNLKGZyYW1lLT5wYWdlKCkgPT0gcGFnZSk7CiAg
ICAgTUVTU0FHRV9DSEVDS19VUkwodXJsKTsKIAotICAgIG1fY29udGV4dC0+aGlzdG9yeUNsaWVu
dCgpLmRpZFVwZGF0ZUhpc3RvcnlUaXRsZSgmbV9jb250ZXh0LmdldCgpLCBwYWdlLCB0aXRsZSwg
dXJsLCBmcmFtZSk7CisgICAgbV9jb250ZXh0LT5oaXN0b3J5Q2xpZW50KCkuZGlkVXBkYXRlSGlz
dG9yeVRpdGxlKG1fY29udGV4dC5wdHIoKSwgcGFnZSwgdGl0bGUsIHVybCwgZnJhbWUpOwogfQog
CiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6cGFnZVN1cHByZXNzaWJpbGl0eUNoYW5nZWQoV2ViS2l0
OjpXZWJQYWdlUHJveHkgKnBhZ2UpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29s
cy9DaGFuZ2VMb2cKaW5kZXggMTZkOTgwMzFjNzJmYmMzNzY4MzlhZmIxODkxNzE3MmNmNDIxZmI4
Ni4uYmM2MGFiZGFmMGY0MThhNzZhMjljM2JhYWM2OGNkY2ZkOTA5NDI4MCAxMDA2NDQKLS0tIGEv
VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisy
MDE0LTExLTA0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWRk
IHB0cigpIG1ldGhvZCB0byBSZWYgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEzODM2MQorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFk
bGVyLgorCisgICAgICAgIFVzZSB0aGUgbmV3IFJlZjo6cHRyKCkgbWV0aG9kLgorCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUmVmLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OlRFU1QpOgorCiAyMDE0LTExLTA0ICBUaWJvciBNZXN6YXJvcyAgPHRtZXN6YXJvcy51LXN6
ZWdlZEBwYXJ0bmVyLnNhbXN1bmcuY29tPgogCiAgICAgICAgIFtqaGJ1aWxkXSBNYWtlIGl0IHBv
c3NpYmxlIHRvIGJ1aWxkIEdUSy9FRkwgaW4gc2FtZSByZXBvc2l0b3J5CmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SZWYuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvUmVmLmNwcAppbmRleCAxYjllZWY2N2E4NDZiYzFiNDFmMTA0MzViOTg1YTYw
YzE1NTkwZWViLi5iNmU5ZDVjNWZlZTY3YTYyODQ0YWE5MzhjMWY0OTFjODBlMzJiMmUxIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SZWYuY3BwCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1JlZi5jcHAKQEAgLTM4LDE0ICszOCwxNCBAQCBURVNU
KFdURl9SZWYsIEJhc2ljKQogCiAgICAgewogICAgICAgICBSZWY8UmVmTG9nZ2VyPiBwdHIoYSk7
Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgJnB0ci5nZXQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgm
YSwgcHRyLnB0cigpKTsKICAgICAgICAgQVNTRVJUX0VRKCZhLm5hbWUsICZwdHItPm5hbWUpOwog
ICAgIH0KICAgICBBU1NFUlRfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCku
Y19zdHIoKSk7CiAKICAgICB7CiAgICAgICAgIFJlZjxSZWZMb2dnZXI+IHB0cihhZG9wdFJlZihh
KSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgJnB0ci5nZXQoKSk7CisgICAgICAgIEFTU0VSVF9F
USgmYSwgcHRyLnB0cigpKTsKICAgICAgICAgQVNTRVJUX0VRKCZhLm5hbWUsICZwdHItPm5hbWUp
OwogICAgIH0KICAgICBBU1NFUlRfU1RSRVEoImRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0
cigpKTsKQEAgLTU5LDQwICs1OSw0MCBAQCBURVNUKFdURl9SZWYsIEFzc2lnbm1lbnQpCiAKICAg
ICB7CiAgICAgICAgIFJlZjxSZWZMb2dnZXI+IHB0cihhKTsKLSAgICAgICAgQVNTRVJUX0VRKCZh
LCAmcHRyLmdldCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIucHRyKCkpOwogICAgICAg
ICBsb2coKSA8PCAifCAiOwogICAgICAgICBwdHIgPSBiOwotICAgICAgICBBU1NFUlRfRVEoJmIs
ICZwdHIuZ2V0KCkpOworICAgICAgICBBU1NFUlRfRVEoJmIsIHB0ci5wdHIoKSk7CiAgICAgICAg
IGxvZygpIDw8ICJ8ICI7CiAgICAgfQogICAgIEFTU0VSVF9TVFJFUSgicmVmKGEpIHwgcmVmKGIp
IGRlcmVmKGEpIHwgZGVyZWYoYikgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAgICAgewog
ICAgICAgICBSZWY8UmVmTG9nZ2VyPiBwdHIoYSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgJnB0
ci5nZXQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnB0cigpKTsKICAgICAgICAgbG9n
KCkgPDwgInwgIjsKICAgICAgICAgcHRyID0gYzsKLSAgICAgICAgQVNTRVJUX0VRKCZjLCAmcHRy
LmdldCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBwdHIucHRyKCkpOwogICAgICAgICBsb2co
KSA8PCAifCAiOwogICAgIH0KICAgICBBU1NFUlRfU1RSRVEoInJlZihhKSB8IHJlZihjKSBkZXJl
ZihhKSB8IGRlcmVmKGMpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAgIHsKICAgICAg
ICAgUmVmPFJlZkxvZ2dlcj4gcHRyKGEpOwotICAgICAgICBBU1NFUlRfRVEoJmEsICZwdHIuZ2V0
KCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci5wdHIoKSk7CiAgICAgICAgIGxvZygpIDw8
ICJ8ICI7CiAgICAgICAgIHB0ciA9IGFkb3B0UmVmKGIpOwotICAgICAgICBBU1NFUlRfRVEoJmIs
ICZwdHIuZ2V0KCkpOworICAgICAgICBBU1NFUlRfRVEoJmIsIHB0ci5wdHIoKSk7CiAgICAgICAg
IGxvZygpIDw8ICJ8ICI7CiAgICAgfQogICAgIEFTU0VSVF9TVFJFUSgicmVmKGEpIHwgZGVyZWYo
YSkgfCBkZXJlZihiKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAKICAgICB7CiAgICAgICAg
IFJlZjxSZWZMb2dnZXI+IHB0cihhKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCAmcHRyLmdldCgp
KTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIucHRyKCkpOwogICAgICAgICBsb2coKSA8PCAi
fCAiOwogICAgICAgICBwdHIgPSBhZG9wdFJlZihjKTsKLSAgICAgICAgQVNTRVJUX0VRKCZjLCAm
cHRyLmdldCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBwdHIucHRyKCkpOwogICAgICAgICBs
b2coKSA8PCAifCAiOwogICAgIH0KICAgICBBU1NFUlRfU1RSRVEoInJlZihhKSB8IGRlcmVmKGEp
IHwgZGVyZWYoYykgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwpAQCAtMTE2LDE2ICsxMTYsMTYg
QEAgVEVTVChXVEZfUmVmLCBSZXR1cm5WYWx1ZSkKIAogICAgIHsKICAgICAgICAgUmVmPFJlZkxv
Z2dlcj4gcHRyKHBhc3NXaXRoUGFzc1JlZihhKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgJnB0
ci5nZXQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnB0cigpKTsKICAgICB9CiAgICAg
QVNTRVJUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwog
CiAgICAgewogICAgICAgICBSZWY8UmVmTG9nZ2VyPiBwdHIoYSk7Ci0gICAgICAgIEFTU0VSVF9F
USgmYSwgJnB0ci5nZXQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnB0cigpKTsKICAg
ICAgICAgbG9nKCkgPDwgInwgIjsKICAgICAgICAgcHRyID0gcGFzc1dpdGhQYXNzUmVmKGIpOwot
ICAgICAgICBBU1NFUlRfRVEoJmIsICZwdHIuZ2V0KCkpOworICAgICAgICBBU1NFUlRfRVEoJmIs
IHB0ci5wdHIoKSk7CiAgICAgICAgIGxvZygpIDw8ICJ8ICI7CiAgICAgfQogICAgIEFTU0VSVF9T
VFJFUSgicmVmKGEpIHwgcmVmKGIpIGRlcmVmKGEpIHwgZGVyZWYoYikgIiwgdGFrZUxvZ1N0cigp
LmNfc3RyKCkpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>