<?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>47297</bug_id>
          
          <creation_ts>2010-10-06 13:01:16 -0700</creation_ts>
          <short_desc>REGRESSION(r69210): This patch broke Windows (Requested by andersca on #webkit).</short_desc>
          <delta_ts>2010-10-06 13:37:14 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</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>
          
          <blocked>47239</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Review Bot">webkit.review.bot</reporter>
          <assigned_to name="WebKit Review Bot">webkit.review.bot</assigned_to>
          <cc>aroben</cc>
    
    <cc>commit-queue</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>290529</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-06 13:01:16 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/69210 broke the build:
This patch broke Windows (Requested by andersca on #webkit).

This is an automatic bug report generated by the sheriff-bot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests case pain.

&quot;Only you can prevent forest fires.&quot; -- Smokey the Bear</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290530</commentid>
    <comment_count>1</comment_count>
      <attachid>69979</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-06 13:01:34 -0700</bug_when>
    <thetext>Created attachment 69979
ROLLOUT of r69210

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID --ignore-builders

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290549</commentid>
    <comment_count>2</comment_count>
      <attachid>69979</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-10-06 13:37:09 -0700</bug_when>
    <thetext>Comment on attachment 69979
ROLLOUT of r69210

Clearing flags on attachment: 69979

Committed r69229: &lt;http://trac.webkit.org/changeset/69229&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290551</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-10-06 13:37:14 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69979</attachid>
            <date>2010-10-06 13:01:34 -0700</date>
            <delta_ts>2010-10-06 13:37:09 -0700</delta_ts>
            <desc>ROLLOUT of r69210</desc>
            <filename>bug-47297-20101006200133.patch</filename>
            <type>text/plain</type>
            <size>139287</size>
            <attacher name="WebKit Review Bot">webkit.review.bot</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdDIvQ2hhbmdlTG9nIGIvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXgg
MzZhNWIyNjVhMjIwZDA1ZTNhYmJiYWIzODRjOTExYzFmZWE4NmFjMS4uYmU4MTlkM2UwN2Q0ZDU1
MTEyODE2ZjBiYzNiZWVhNjdkN2YwMTJiNyAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9DaGFuZ2VMb2cK
KysrIGIvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMzAgQEAKKzIwMTAtMTAtMDYgIFNo
ZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgorCisgICAgICAgIFVucmV2
aWV3ZWQsIHJvbGxpbmcgb3V0IHI2OTIxMC4KKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9y
Zy9jaGFuZ2VzZXQvNjkyMTAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQ3Mjk3CisKKyAgICAgICAgVGhpcyBwYXRjaCBicm9rZSBXaW5kb3dzIChSZXF1
ZXN0ZWQgYnkgYW5kZXJzY2Egb24gI3dlYmtpdCkuCisKKyAgICAgICAgKiBEZXJpdmVkU291cmNl
cy5tYWtlOgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLnBybzoKKyAgICAgICAgKiBQbGF0Zm9y
bS9Db3JlSVBDL0FyZ3VtZW50cy5oOgorICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvSGFuZGxl
TWVzc2FnZS5oOgorICAgICAgICAoQ29yZUlQQzo6aGFuZGxlTWVzc2FnZSk6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXQyL21lc3NhZ2VzLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0Mi9t
ZXNzYWdlc191bml0dGVzdC5weToKKyAgICAgICAgKiBTaGFyZWQvQ29yZUlQQ1N1cHBvcnQvV2Vi
UGFnZVByb3h5TWVzc2FnZUtpbmRzLmg6IEFkZGVkLgorICAgICAgICAqIFNoYXJlZC9TdHJpbmdQ
YWlyVmVjdG9yLmg6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNs
aWVudEltcGwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5t
bToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnJlZ2lzdGVyRWRpdENvbW1hbmQp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXdrcGFnZS5jcHA6CisgICAgICAgIChRV0tQ
YWdlUHJpdmF0ZTo6cmVnaXN0ZXJFZGl0Q29tbWFuZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9xdC9xd2twYWdlX3AuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJFZGl0Q29tbWFuZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViRWRpdENvbW1hbmRQcm94eTo6dW5hcHBseSk6CisgICAgICAgIChXZWJLaXQ6OldlYkVk
aXRDb21tYW5kUHJveHk6OnJlYXBwbHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJGb3JtQ2xp
ZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRm9ybUNsaWVudDo6d2lsbFN1Ym1pdEZvcm0p
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJGb3JtQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlk
UmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZFJlY2Vp
dmVTeW5jTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkU3RhcnRQ
cm92aXNpb25hbExvYWRGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFt
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9hZEZvckZyYW1l
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRGaW5pc2hEb2N1bWVudExvYWRG
b3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkRmluaXNoTG9hZEZv
ckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRGYWlsTG9hZEZvckZy
YW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlVGl0bGVGb3JG
cmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkRmlyc3RMYXlvdXRGb3JG
cmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkRmlyc3RWaXN1YWxseU5v
bkVtcHR5TGF5b3V0Rm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRp
ZFJlbW92ZUZyYW1lRnJvbUhpZXJhcmNoeSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JNSU1FVHlwZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6d2lsbFN1Ym1pdEZvcm0pOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmNyZWF0ZU5ld1BhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OnJ1bkphdmFTY3JpcHRBbGVydCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
cnVuSmF2YVNjcmlwdENvbmZpcm0pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJ1
bkphdmFTY3JpcHRQcm9tcHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Om1vdXNl
RGlkTW92ZU92ZXJFbGVtZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpjb250
ZW50c1NpemVDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjphZGRJdGVt
VG9CYWNrRm9yd2FyZExpc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdvVG9J
dGVtSW5CYWNrRm9yd2FyZExpc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJl
Z2lzdGVyRWRpdENvbW1hbmRGb3JVbmRvKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpyZWdpc3RlckVkaXRDb21tYW5kRm9yUmVkbyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6ZGlkUmVjZWl2ZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpk
aWRDaGFuZ2VBY2NlbGVyYXRlZENvbXBvc2l0aW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5p
bjogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJWaWV3OjpyZWdpc3RlckVkaXRDb21tYW5kKToKKyAgICAgICAgKiBVSVBy
b2Nlc3Mvd2luL1dlYlZpZXcuaDoKKyAgICAgICAgKiBXZWJLaXQyLnBybzoKKyAgICAgICAgKiBX
ZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJD
aHJvbWVDbGllbnQ6OnNldFdpbmRvd1JlY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVD
bGllbnQ6OnRha2VGb2N1cyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6Y3Jl
YXRlV2luZG93KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpydW5KYXZhU2Ny
aXB0QWxlcnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OnJ1bkphdmFTY3Jp
cHRDb25maXJtKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpydW5KYXZhU2Ny
aXB0UHJvbXB0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpzZXRTdGF0dXNi
YXJUZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50Ojpjb250ZW50c1NpemVD
aGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50Ojptb3VzZURpZE1vdmVP
dmVyRWxlbWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6c2V0VG9vbFRp
cCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6c2V0Q3Vyc29yKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYkVkaXRvckNsaWVudDo6cmVnaXN0ZXJDb21tYW5kRm9yVW5kbyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkVkaXRvckNsaWVudDo6Y2xlYXJVbmRvUmVkb09wZXJhdGlvbnMp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGV0YWNoZWRG
cm9tUGFyZW50Mik6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNw
YXRjaERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9u
YWxMb2FkKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNo
RGlkUmVjZWl2ZVRpdGxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmRpc3BhdGNoRGlkQ29tbWl0TG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVy
Q2xpZW50OjpkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWlsTG9hZCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZpbmlzaERvY3VtZW50TG9h
ZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZp
bmlzaExvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hEaWRGaXJzdExheW91dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCk6CisgICAgICAgIChXZWJL
aXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck1JTUVUeXBl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRl
UG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFdpbGxTdWJtaXRGb3Jt
KToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OnBvc3RQcm9ncmVzc1N0
YXJ0ZWROb3RpZmljYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVu
dDo6cG9zdFByb2dyZXNzRXN0aW1hdGVDaGFuZ2VkTm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdl
YktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OnBvc3RQcm9ncmVzc0ZpbmlzaGVkTm90aWZpY2F0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZUZyYW1l
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6YWRkSXRlbSk6
CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdFByb3h5Ojpnb1RvSXRlbSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjpiYWNrSXRlbSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjpjdXJyZW50SXRlbSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdFByb3h5Ojpmb3J3YXJkSXRlbSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjppdGVtQXRJbmRleCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjpiYWNrTGlzdENvdW50KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0UHJveHk6OmZvcndhcmRMaXN0Q291bnQp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6V2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNoYW5n
ZUFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
ZW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OnNlbmRDbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Om1vdXNlRXZlbnQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp3aGVlbEV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6a2V5RXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp2YWxpZGF0ZU1l
bnVJdGVtKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dG91Y2hFdmVudCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OnNob3cpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpydW5K
YXZhU2NyaXB0SW5NYWluRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRSZW5k
ZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OmdldFNvdXJjZUZvckZyYW1lKToKKyAgICAgICAgKiB3aW4vV2ViS2l0Mi52Y3Byb2o6CisKIDIw
MTAtMTAtMDYgIEplc3NpZSBCZXJsaW4gIDxqYmVybGluQGFwcGxlLmNvbT4KIAogICAgICAgICBS
dWJiZXItc3RhbXBlZCBieSBEYW4gQmVybnN0ZWluLgpkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9EZXJp
dmVkU291cmNlcy5tYWtlIGIvV2ViS2l0Mi9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDAxMzgy
ODIzZmZiOWE2NDRlYzk0NzdiNDhkZjQ0M2NhMjJhMzVmMjkuLjM0YzljYjM4ZjE3NzZmZWI2Yzdj
M2I3Y2RjYWUwYjBiMWNjZmM1NGMgMTAwNjQ0Ci0tLSBhL1dlYktpdDIvRGVyaXZlZFNvdXJjZXMu
bWFrZQorKysgYi9XZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTMsNyArMyw2IEBAIFZQ
QVRIID0gXAogICAgICQoV2ViS2l0MikvV2ViUHJvY2Vzcy9QbHVnaW5zIFwKICAgICAkKFdlYktp
dDIpL1dlYlByb2Nlc3MvV2ViUGFnZSBcCiAgICAgJChXZWJLaXQyKS9XZWJQcm9jZXNzIFwKLSAg
ICAkKFdlYktpdDIpL1VJUHJvY2VzcyBcCiAgICAgJChXZWJLaXQyKS9VSVByb2Nlc3MvUGx1Z2lu
cyBcCiAjCiAKQEAgLTEzLDcgKzEyLDYgQEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAgICAgUGx1
Z2luUHJvY2Vzc1Byb3h5IFwKICAgICBQbHVnaW5Qcm94eSBcCiAgICAgV2ViUGFnZSBcCi0gICAg
V2ViUGFnZVByb3h5IFwKICAgICBXZWJQcm9jZXNzIFwKICAgICBXZWJQcm9jZXNzQ29ubmVjdGlv
biBcCiAjCmRpZmYgLS1naXQgYS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLnBybyBiL1dlYktpdDIv
RGVyaXZlZFNvdXJjZXMucHJvCmluZGV4IDhjNWNhZDUxNjY4ZjViZjRiZWQ4NGU4MzgwNGU3MDI0
ZDY1MzQwYzMuLmI3M2U5MzUzYjhlODM2ZmJjYzM1MmMyZTE5NDFiZTNmODI4N2E3YWMgMTAwNjQ0
Ci0tLSBhL1dlYktpdDIvRGVyaXZlZFNvdXJjZXMucHJvCisrKyBiL1dlYktpdDIvRGVyaXZlZFNv
dXJjZXMucHJvCkBAIC01MiwxOCArNTIsNiBAQCBtZXNzYWdlcmVjZWl2ZXJfZ2VuZXJhdG9yLnRh
cmdldCAgID0gJCR7T1VUUFVUX0RJUn0vV2ViS2l0Mi9nZW5lcmF0ZWQvV2ViUGFnZU1lcwogZ2Vu
ZXJhdGVkX2ZpbGVzLmRlcGVuZHMgICAgICAgICAgICArPSBtZXNzYWdlcmVjZWl2ZXJfZ2VuZXJh
dG9yCiBRTUFLRV9FWFRSQV9UQVJHRVRTICAgICAgICAgICAgICAgICs9IG1lc3NhZ2VyZWNlaXZl
cl9nZW5lcmF0b3IKIAotcHJvY2Vzc21lc3NhZ2VoZWFkZXJfZ2VuZXJhdG9yLmNvbW1hbmRzID0g
cHl0aG9uICQke1NSQ19ST09UX0RJUn0vV2ViS2l0Mi9TY3JpcHRzL2dlbmVyYXRlLW1lc3NhZ2Vz
LWhlYWRlci5weSAgJCR7U1JDX1JPT1RfRElSfS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkubWVzc2FnZXMuaW4gPiAkJE9VVFBVVF9ESVIvV2ViS2l0Mi9nZW5lcmF0ZWQvV2ViUGFnZVBy
b3h5TWVzc2FnZXMuaAotcHJvY2Vzc21lc3NhZ2VoZWFkZXJfZ2VuZXJhdG9yLmRlcGVuZHMgID0g
JCR7U1JDX1JPT1RfRElSfS9XZWJLaXQyL1NjcmlwdHMvZ2VuZXJhdGUtbWVzc2FnZXMtaGVhZGVy
LnB5ICQke1NSQ19ST09UX0RJUn0vVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS9XZWJQcm9jZXNzLm1l
c3NhZ2VzLmluCi1wcm9jZXNzbWVzc2FnZWhlYWRlcl9nZW5lcmF0b3IudGFyZ2V0ICAgPSAkJHtP
VVRQVVRfRElSfS9XZWJLaXQyL2dlbmVyYXRlZC9XZWJQYWdlUHJveHlNZXNzYWdlcy5oCi1nZW5l
cmF0ZWRfZmlsZXMuZGVwZW5kcyAgICAgICAgICAgICAgICAgKz0gcHJvY2Vzc21lc3NhZ2VoZWFk
ZXJfZ2VuZXJhdG9yCi1RTUFLRV9FWFRSQV9UQVJHRVRTICAgICAgICAgICAgICAgICAgICAgKz0g
cHJvY2Vzc21lc3NhZ2VoZWFkZXJfZ2VuZXJhdG9yCi0KLXByb2Nlc3NtZXNzYWdlcmVjZWl2ZXJf
Z2VuZXJhdG9yLmNvbW1hbmRzID0gcHl0aG9uICQke1NSQ19ST09UX0RJUn0vV2ViS2l0Mi9TY3Jp
cHRzL2dlbmVyYXRlLW1lc3NhZ2UtcmVjZWl2ZXIucHkgICQke1NSQ19ST09UX0RJUn0vV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluID4gJCRPVVRQVVRfRElSL1dlYktp
dDIvZ2VuZXJhdGVkL1dlYlBhZ2VQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKLXByb2Nlc3NtZXNz
YWdlcmVjZWl2ZXJfZ2VuZXJhdG9yLmRlcGVuZHMgID0gJCR7U1JDX1JPT1RfRElSfS9XZWJLaXQy
L1NjcmlwdHMvZ2VuZXJhdGUtbWVzc2FnZS1yZWNlaXZlci5weSAkJHtTUkNfUk9PVF9ESVJ9L1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgotcHJvY2Vzc21lc3NhZ2Vy
ZWNlaXZlcl9nZW5lcmF0b3IudGFyZ2V0ICAgPSAkJHtPVVRQVVRfRElSfS9XZWJLaXQyL2dlbmVy
YXRlZC9XZWJQYWdlUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCi1nZW5lcmF0ZWRfZmlsZXMuZGVw
ZW5kcyAgICAgICAgICAgICAgICAgICArPSBwcm9jZXNzbWVzc2FnZXJlY2VpdmVyX2dlbmVyYXRv
cgotUU1BS0VfRVhUUkFfVEFSR0VUUyAgICAgICAgICAgICAgICAgICAgICAgKz0gcHJvY2Vzc21l
c3NhZ2VyZWNlaXZlcl9nZW5lcmF0b3IKLQogcHJvY2Vzc21lc3NhZ2VoZWFkZXJfZ2VuZXJhdG9y
LmNvbW1hbmRzID0gcHl0aG9uICQke1NSQ19ST09UX0RJUn0vV2ViS2l0Mi9TY3JpcHRzL2dlbmVy
YXRlLW1lc3NhZ2VzLWhlYWRlci5weSAgJCR7U1JDX1JPT1RfRElSfS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiA+ICQkT1VUUFVUX0RJUi9XZWJLaXQyL2dlbmVyYXRl
ZC9XZWJQcm9jZXNzTWVzc2FnZXMuaAogcHJvY2Vzc21lc3NhZ2VoZWFkZXJfZ2VuZXJhdG9yLmRl
cGVuZHMgID0gJCR7U1JDX1JPT1RfRElSfS9XZWJLaXQyL1NjcmlwdHMvZ2VuZXJhdGUtbWVzc2Fn
ZXMtaGVhZGVyLnB5ICQke1NSQ19ST09UX0RJUn0vV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MubWVzc2FnZXMuaW4KIHByb2Nlc3NtZXNzYWdlaGVhZGVyX2dlbmVyYXRvci50YXJnZXQgICA9
ICQke09VVFBVVF9ESVJ9L1dlYktpdDIvZ2VuZXJhdGVkL1dlYlByb2Nlc3NNZXNzYWdlcy5oCmRp
ZmYgLS1naXQgYS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnRzLmggYi9XZWJLaXQy
L1BsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnRzLmgKaW5kZXggNDJiNmNiYTU5ODYzODc5MTEyMDk1
MzZiOWFmYzBjMGZlZjEwMGY5ZS4uNjNlYzIyZDA3ZTJhYTgzNWJhMzAwYWFmZWZlNzZkNjJmODdj
YTRmMyAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50cy5oCisr
KyBiL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudHMuaApAQCAtMjA4LDEyICsyMDgs
NiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBl
bmFtZSBUND4gQXJndW1lbnRzNDxUMSYsIFQyJgogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUMSwgdHlw
ZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDU+IGNsYXNzIEFy
Z3VtZW50czUgOiBBcmd1bWVudHM0PFQxLCBUMiwgVDMsIFQ0PiB7CiBwdWJsaWM6Ci0gICAgdHlw
ZWRlZiBUMSBGaXJzdEFyZ3VtZW50VHlwZTsKLSAgICB0eXBlZGVmIFQyIFNlY29uZEFyZ3VtZW50
VHlwZTsKLSAgICB0eXBlZGVmIFQzIFRoaXJkQXJndW1lbnRUeXBlOwotICAgIHR5cGVkZWYgVDQg
Rm91cnRoQXJndW1lbnRUeXBlOwotICAgIHR5cGVkZWYgVDUgRmlmdGhBcmd1bWVudFR5cGU7Ci0K
ICAgICBBcmd1bWVudHM1KFQxIHQxLCBUMiB0MiwgVDMgdDMsIFQ0IHQ0LCBUNSB0NSkKICAgICAg
ICAgOiBBcmd1bWVudHM0PFQxLCBUMiwgVDMsIFQ0Pih0MSwgdDIsIHQzLCB0NCkKICAgICAgICAg
LCBtX3ZhbHVlKHQ1KQpkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0hhbmRs
ZU1lc3NhZ2UuaCBiL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9IYW5kbGVNZXNzYWdlLmgKaW5k
ZXggMGEyNzdhZTRhYmY0ZDU2NmNhNzA1MDMyYjUyNGMzZGU0OGUyOGYyNi4uNDY2ODZmYjU3NjVj
ZjQ2OTNjZDU0YTZmYjY0MGNiNjQ4YThmNmQyOCAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9QbGF0Zm9y
bS9Db3JlSVBDL0hhbmRsZU1lc3NhZ2UuaAorKysgYi9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMv
SGFuZGxlTWVzc2FnZS5oCkBAIC0xLDI4ICsxLDMgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCiAjaWZuZGVmIEhh
bmRsZU1lc3NhZ2VfaAogI2RlZmluZSBIYW5kbGVNZXNzYWdlX2gKIApAQCAtNDYsMTIgKzIxLDYg
QEAgdm9pZCBoYW5kbGVNZXNzYWdlKEFyZ3VtZW50RGVjb2RlciogYXJndW1lbnRzLCBDKiBvYmpl
Y3QsIHZvaWQgKEM6OipmdW5jdGlvbikoUCkKICAgICAob2JqZWN0LT4qZnVuY3Rpb24pKGFyZ3Vt
ZW50KTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQz4KLXZvaWQgaGFuZGxl
TWVzc2FnZShBcmd1bWVudERlY29kZXIqIGFyZ3VtZW50cywgQyogb2JqZWN0LCB2b2lkIChDOjoq
ZnVuY3Rpb24pKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciopKQotewotICAgIChvYmplY3QtPipm
dW5jdGlvbikoYXJndW1lbnRzKTsKLX0KLQogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
QywgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyPgogdm9pZCBoYW5kbGVNZXNzYWdlKEFyZ3VtZW50
RGVjb2RlciogYXJndW1lbnRzLCBDKiBvYmplY3QsIHZvaWQgKEM6OipmdW5jdGlvbikoUDEsIFAy
KSkKIHsKQEAgLTY0LDE1ICszMyw2IEBAIHZvaWQgaGFuZGxlTWVzc2FnZShBcmd1bWVudERlY29k
ZXIqIGFyZ3VtZW50cywgQyogb2JqZWN0LCB2b2lkIChDOjoqZnVuY3Rpb24pKFAxCiAgICAgKG9i
amVjdC0+KmZ1bmN0aW9uKShmaXJzdEFyZ3VtZW50LCBzZWNvbmRBcmd1bWVudCk7CiB9CiAKLXRl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEMsIHR5cGVuYW1lIFAxPgotdm9pZCBoYW5kbGVN
ZXNzYWdlKEFyZ3VtZW50RGVjb2RlciogYXJndW1lbnRzLCBDKiBvYmplY3QsIHZvaWQgKEM6Oipm
dW5jdGlvbikoUDEsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciopKQotewotICAgIHR5cGVuYW1l
IFJlbW92ZVJlZmVyZW5jZTx0eXBlbmFtZSBUOjpGaXJzdEFyZ3VtZW50VHlwZT46OlR5cGUgZmly
c3RBcmd1bWVudDsKLSAgICBpZiAoIWFyZ3VtZW50cy0+ZGVjb2RlKGZpcnN0QXJndW1lbnQpKQot
ICAgICAgICByZXR1cm47Ci0gICAgKG9iamVjdC0+KmZ1bmN0aW9uKShmaXJzdEFyZ3VtZW50LCBh
cmd1bWVudHMpOwotfQotCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBDLCB0eXBlbmFt
ZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzPgogdm9pZCBoYW5kbGVNZXNzYWdlKEFyZ3Vt
ZW50RGVjb2RlciogYXJndW1lbnRzLCBDKiBvYmplY3QsIHZvaWQgKEM6OipmdW5jdGlvbikoUDEs
IFAyLCBQMykpCiB7CkBAIC04OCw5MCArNDgsNiBAQCB2b2lkIGhhbmRsZU1lc3NhZ2UoQXJndW1l
bnREZWNvZGVyKiBhcmd1bWVudHMsIEMqIG9iamVjdCwgdm9pZCAoQzo6KmZ1bmN0aW9uKShQMQog
ICAgIChvYmplY3QtPipmdW5jdGlvbikoZmlyc3RBcmd1bWVudCwgc2Vjb25kQXJndW1lbnQsIHRo
aXJkQXJndW1lbnQpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBDLCB0eXBl
bmFtZSBQMSwgdHlwZW5hbWUgUDI+Ci12b2lkIGhhbmRsZU1lc3NhZ2UoQXJndW1lbnREZWNvZGVy
KiBhcmd1bWVudHMsIEMqIG9iamVjdCwgdm9pZCAoQzo6KmZ1bmN0aW9uKShQMSwgUDIsIENvcmVJ
UEM6OkFyZ3VtZW50RGVjb2RlciopKQotewotICAgIHR5cGVuYW1lIFJlbW92ZVJlZmVyZW5jZTx0
eXBlbmFtZSBUOjpGaXJzdEFyZ3VtZW50VHlwZT46OlR5cGUgZmlyc3RBcmd1bWVudDsKLSAgICBp
ZiAoIWFyZ3VtZW50cy0+ZGVjb2RlKGZpcnN0QXJndW1lbnQpKQotICAgICAgICByZXR1cm47Ci0g
ICAgdHlwZW5hbWUgUmVtb3ZlUmVmZXJlbmNlPHR5cGVuYW1lIFQ6OlNlY29uZEFyZ3VtZW50VHlw
ZT46OlR5cGUgc2Vjb25kQXJndW1lbnQ7Ci0gICAgaWYgKCFhcmd1bWVudHMtPmRlY29kZShzZWNv
bmRBcmd1bWVudCkpCi0gICAgICAgIHJldHVybjsKLSAgICAob2JqZWN0LT4qZnVuY3Rpb24pKGZp
cnN0QXJndW1lbnQsIHNlY29uZEFyZ3VtZW50LCBhcmd1bWVudHMpOwotfQotCi10ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSBDLCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1l
IFAzLCB0eXBlbmFtZSBQND4KLXZvaWQgaGFuZGxlTWVzc2FnZShBcmd1bWVudERlY29kZXIqIGFy
Z3VtZW50cywgQyogb2JqZWN0LCB2b2lkIChDOjoqZnVuY3Rpb24pKFAxLCBQMiwgUDMsIFA0KSkK
LXsKLSAgICB0eXBlbmFtZSBSZW1vdmVSZWZlcmVuY2U8dHlwZW5hbWUgVDo6Rmlyc3RBcmd1bWVu
dFR5cGU+OjpUeXBlIGZpcnN0QXJndW1lbnQ7Ci0gICAgaWYgKCFhcmd1bWVudHMtPmRlY29kZShm
aXJzdEFyZ3VtZW50KSkKLSAgICAgICAgcmV0dXJuOwotICAgIHR5cGVuYW1lIFJlbW92ZVJlZmVy
ZW5jZTx0eXBlbmFtZSBUOjpTZWNvbmRBcmd1bWVudFR5cGU+OjpUeXBlIHNlY29uZEFyZ3VtZW50
OwotICAgIGlmICghYXJndW1lbnRzLT5kZWNvZGUoc2Vjb25kQXJndW1lbnQpKQotICAgICAgICBy
ZXR1cm47Ci0gICAgdHlwZW5hbWUgUmVtb3ZlUmVmZXJlbmNlPHR5cGVuYW1lIFQ6OlRoaXJkQXJn
dW1lbnRUeXBlPjo6VHlwZSB0aGlyZEFyZ3VtZW50OwotICAgIGlmICghYXJndW1lbnRzLT5kZWNv
ZGUodGhpcmRBcmd1bWVudCkpCi0gICAgICAgIHJldHVybjsKLSAgICB0eXBlbmFtZSBSZW1vdmVS
ZWZlcmVuY2U8dHlwZW5hbWUgVDo6Rm91cnRoQXJndW1lbnRUeXBlPjo6VHlwZSBmb3VydGhBcmd1
bWVudDsKLSAgICBpZiAoIWFyZ3VtZW50cy0+ZGVjb2RlKGZvdXJ0aEFyZ3VtZW50KSkKLSAgICAg
ICAgcmV0dXJuOwotICAgIChvYmplY3QtPipmdW5jdGlvbikoZmlyc3RBcmd1bWVudCwgc2Vjb25k
QXJndW1lbnQsIHRoaXJkQXJndW1lbnQsIGZvdXJ0aEFyZ3VtZW50KTsKLX0KLQotdGVtcGxhdGU8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgQywgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFt
ZSBQMz4KLXZvaWQgaGFuZGxlTWVzc2FnZShBcmd1bWVudERlY29kZXIqIGFyZ3VtZW50cywgQyog
b2JqZWN0LCB2b2lkIChDOjoqZnVuY3Rpb24pKFAxLCBQMiwgUDMsIENvcmVJUEM6OkFyZ3VtZW50
RGVjb2RlciopKQotewotICAgIHR5cGVuYW1lIFJlbW92ZVJlZmVyZW5jZTx0eXBlbmFtZSBUOjpG
aXJzdEFyZ3VtZW50VHlwZT46OlR5cGUgZmlyc3RBcmd1bWVudDsKLSAgICBpZiAoIWFyZ3VtZW50
cy0+ZGVjb2RlKGZpcnN0QXJndW1lbnQpKQotICAgICAgICByZXR1cm47Ci0gICAgdHlwZW5hbWUg
UmVtb3ZlUmVmZXJlbmNlPHR5cGVuYW1lIFQ6OlNlY29uZEFyZ3VtZW50VHlwZT46OlR5cGUgc2Vj
b25kQXJndW1lbnQ7Ci0gICAgaWYgKCFhcmd1bWVudHMtPmRlY29kZShzZWNvbmRBcmd1bWVudCkp
Ci0gICAgICAgIHJldHVybjsKLSAgICB0eXBlbmFtZSBSZW1vdmVSZWZlcmVuY2U8dHlwZW5hbWUg
VDo6VGhpcmRBcmd1bWVudFR5cGU+OjpUeXBlIHRoaXJkQXJndW1lbnQ7Ci0gICAgaWYgKCFhcmd1
bWVudHMtPmRlY29kZSh0aGlyZEFyZ3VtZW50KSkKLSAgICAgICAgcmV0dXJuOwotICAgIChvYmpl
Y3QtPipmdW5jdGlvbikoZmlyc3RBcmd1bWVudCwgc2Vjb25kQXJndW1lbnQsIHRoaXJkQXJndW1l
bnQsIGFyZ3VtZW50cyk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEMsIHR5
cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0LCB0eXBlbmFt
ZSBQNT4KLXZvaWQgaGFuZGxlTWVzc2FnZShBcmd1bWVudERlY29kZXIqIGFyZ3VtZW50cywgQyog
b2JqZWN0LCB2b2lkIChDOjoqZnVuY3Rpb24pKFAxLCBQMiwgUDMsIFA0LCBQNSkpCi17Ci0gICAg
dHlwZW5hbWUgUmVtb3ZlUmVmZXJlbmNlPHR5cGVuYW1lIFQ6OkZpcnN0QXJndW1lbnRUeXBlPjo6
VHlwZSBmaXJzdEFyZ3VtZW50OwotICAgIGlmICghYXJndW1lbnRzLT5kZWNvZGUoZmlyc3RBcmd1
bWVudCkpCi0gICAgICAgIHJldHVybjsKLSAgICB0eXBlbmFtZSBSZW1vdmVSZWZlcmVuY2U8dHlw
ZW5hbWUgVDo6U2Vjb25kQXJndW1lbnRUeXBlPjo6VHlwZSBzZWNvbmRBcmd1bWVudDsKLSAgICBp
ZiAoIWFyZ3VtZW50cy0+ZGVjb2RlKHNlY29uZEFyZ3VtZW50KSkKLSAgICAgICAgcmV0dXJuOwot
ICAgIHR5cGVuYW1lIFJlbW92ZVJlZmVyZW5jZTx0eXBlbmFtZSBUOjpUaGlyZEFyZ3VtZW50VHlw
ZT46OlR5cGUgdGhpcmRBcmd1bWVudDsKLSAgICBpZiAoIWFyZ3VtZW50cy0+ZGVjb2RlKHRoaXJk
QXJndW1lbnQpKQotICAgICAgICByZXR1cm47Ci0gICAgdHlwZW5hbWUgUmVtb3ZlUmVmZXJlbmNl
PHR5cGVuYW1lIFQ6OkZvdXJ0aEFyZ3VtZW50VHlwZT46OlR5cGUgZm91cnRoQXJndW1lbnQ7Ci0g
ICAgaWYgKCFhcmd1bWVudHMtPmRlY29kZShmb3VydGhBcmd1bWVudCkpCi0gICAgICAgIHJldHVy
bjsKLSAgICB0eXBlbmFtZSBSZW1vdmVSZWZlcmVuY2U8dHlwZW5hbWUgVDo6RmlmdGhBcmd1bWVu
dFR5cGU+OjpUeXBlIGZpZnRoQXJndW1lbnQ7Ci0gICAgaWYgKCFhcmd1bWVudHMtPmRlY29kZShm
aWZ0aEFyZ3VtZW50KSkKLSAgICAgICAgcmV0dXJuOwotICAgIChvYmplY3QtPipmdW5jdGlvbiko
Zmlyc3RBcmd1bWVudCwgc2Vjb25kQXJndW1lbnQsIHRoaXJkQXJndW1lbnQsIGZvdXJ0aEFyZ3Vt
ZW50LCBmaWZ0aEFyZ3VtZW50KTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
QywgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQ+Ci12
b2lkIGhhbmRsZU1lc3NhZ2UoQXJndW1lbnREZWNvZGVyKiBhcmd1bWVudHMsIEMqIG9iamVjdCwg
dm9pZCAoQzo6KmZ1bmN0aW9uKShQMSwgUDIsIFAzLCBQNCwgQ29yZUlQQzo6QXJndW1lbnREZWNv
ZGVyKikpCi17Ci0gICAgdHlwZW5hbWUgUmVtb3ZlUmVmZXJlbmNlPHR5cGVuYW1lIFQ6OkZpcnN0
QXJndW1lbnRUeXBlPjo6VHlwZSBmaXJzdEFyZ3VtZW50OwotICAgIGlmICghYXJndW1lbnRzLT5k
ZWNvZGUoZmlyc3RBcmd1bWVudCkpCi0gICAgICAgIHJldHVybjsKLSAgICB0eXBlbmFtZSBSZW1v
dmVSZWZlcmVuY2U8dHlwZW5hbWUgVDo6U2Vjb25kQXJndW1lbnRUeXBlPjo6VHlwZSBzZWNvbmRB
cmd1bWVudDsKLSAgICBpZiAoIWFyZ3VtZW50cy0+ZGVjb2RlKHNlY29uZEFyZ3VtZW50KSkKLSAg
ICAgICAgcmV0dXJuOwotICAgIHR5cGVuYW1lIFJlbW92ZVJlZmVyZW5jZTx0eXBlbmFtZSBUOjpU
aGlyZEFyZ3VtZW50VHlwZT46OlR5cGUgdGhpcmRBcmd1bWVudDsKLSAgICBpZiAoIWFyZ3VtZW50
cy0+ZGVjb2RlKHRoaXJkQXJndW1lbnQpKQotICAgICAgICByZXR1cm47Ci0gICAgdHlwZW5hbWUg
UmVtb3ZlUmVmZXJlbmNlPHR5cGVuYW1lIFQ6OkZvdXJ0aEFyZ3VtZW50VHlwZT46OlR5cGUgZm91
cnRoQXJndW1lbnQ7Ci0gICAgaWYgKCFhcmd1bWVudHMtPmRlY29kZShmb3VydGhBcmd1bWVudCkp
Ci0gICAgICAgIHJldHVybjsKLSAgICAob2JqZWN0LT4qZnVuY3Rpb24pKGZpcnN0QXJndW1lbnQs
IHNlY29uZEFyZ3VtZW50LCB0aGlyZEFyZ3VtZW50LCBmb3VydGhBcmd1bWVudCwgYXJndW1lbnRz
KTsKLX0KLQogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQywgdHlwZW5hbWUgUDEsIHR5
cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQsIHR5cGVuYW1lIFA1LCB0eXBlbmFt
ZSBQNj4KIHZvaWQgaGFuZGxlTWVzc2FnZShBcmd1bWVudERlY29kZXIqIGFyZ3VtZW50cywgQyog
b2JqZWN0LCB2b2lkIChDOjoqZnVuY3Rpb24pKFAxLCBQMiwgUDMsIFA0LCBQNSwgUDYpKQogewpA
QCAtMjMzLDUyICsxMDksNiBAQCB2b2lkIGhhbmRsZU1lc3NhZ2UoQXJndW1lbnREZWNvZGVyKiBh
cmd1bWVudHMsIEFyZ3VtZW50RW5jb2RlciogcmVwbHksIEMqIG9iamVjdAogICAgIChvYmplY3Qt
PipmdW5jdGlvbikoZmlyc3RBcmd1bWVudCk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5
cGVuYW1lIEMsIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMj4KLXZvaWQgaGFuZGxlTWVzc2FnZShB
cmd1bWVudERlY29kZXIqIGFyZ3VtZW50cywgQXJndW1lbnRFbmNvZGVyKiByZXBseSwgQyogb2Jq
ZWN0LCB2b2lkIChDOjoqZnVuY3Rpb24pKFAxLCBQMikpCi17Ci0gICAgdHlwZW5hbWUgUmVtb3Zl
UmVmZXJlbmNlPHR5cGVuYW1lIFQ6OkZpcnN0QXJndW1lbnRUeXBlPjo6VHlwZSBmaXJzdEFyZ3Vt
ZW50OwotICAgIGlmICghYXJndW1lbnRzLT5kZWNvZGUoZmlyc3RBcmd1bWVudCkpCi0gICAgICAg
IHJldHVybjsKLQotICAgIHR5cGVuYW1lIFJlbW92ZVJlZmVyZW5jZTx0eXBlbmFtZSBUOjpTZWNv
bmRBcmd1bWVudFR5cGU+OjpUeXBlIHNlY29uZEFyZ3VtZW50OwotICAgIGlmICghYXJndW1lbnRz
LT5kZWNvZGUoc2Vjb25kQXJndW1lbnQpKQotICAgICAgICByZXR1cm47Ci0KLSAgICAob2JqZWN0
LT4qZnVuY3Rpb24pKGZpcnN0QXJndW1lbnQsIHNlY29uZEFyZ3VtZW50KTsKLX0KLQotdGVtcGxh
dGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQywgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyPgotdm9p
ZCBoYW5kbGVNZXNzYWdlKEFyZ3VtZW50RGVjb2RlciogYXJndW1lbnRzLCBBcmd1bWVudEVuY29k
ZXIqIHJlcGx5LCBDKiBvYmplY3QsIHZvaWQgKEM6OipmdW5jdGlvbikoUDEsIGNvbnN0IFAyJikp
Ci17Ci0gICAgdHlwZW5hbWUgUmVtb3ZlUmVmZXJlbmNlPHR5cGVuYW1lIFQ6OkZpcnN0QXJndW1l
bnRUeXBlPjo6VHlwZSBmaXJzdEFyZ3VtZW50OwotICAgIGlmICghYXJndW1lbnRzLT5kZWNvZGUo
Zmlyc3RBcmd1bWVudCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIHR5cGVuYW1lIFJlbW92ZVJl
ZmVyZW5jZTx0eXBlbmFtZSBUOjpTZWNvbmRBcmd1bWVudFR5cGU+OjpUeXBlIHNlY29uZEFyZ3Vt
ZW50OwotICAgIGlmICghYXJndW1lbnRzLT5kZWNvZGUoc2Vjb25kQXJndW1lbnQpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICAob2JqZWN0LT4qZnVuY3Rpb24pKGZpcnN0QXJndW1lbnQsIHNlY29u
ZEFyZ3VtZW50KTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQywgdHlwZW5h
bWUgUjE+Ci12b2lkIGhhbmRsZU1lc3NhZ2UoQXJndW1lbnREZWNvZGVyKiBhcmd1bWVudHMsIEFy
Z3VtZW50RW5jb2RlciogcmVwbHksIEMqIG9iamVjdCwgdm9pZCAoQzo6KmZ1bmN0aW9uKShSMSYp
KQotewotICAgIHR5cGVuYW1lIFJlbW92ZVJlZmVyZW5jZTx0eXBlbmFtZSBUOjpSZXBseTo6Rmly
c3RBcmd1bWVudFR5cGU+OjpUeXBlIGZpcnN0UmVwbHlBcmd1bWVudDsKLSAgICAob2JqZWN0LT4q
ZnVuY3Rpb24pKGZpcnN0UmVwbHlBcmd1bWVudCk7Ci0gICAgcmVwbHktPmVuY29kZShmaXJzdFJl
cGx5QXJndW1lbnQpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBDLCB0eXBl
bmFtZSBSMSwgdHlwZW5hbWUgUjI+Ci12b2lkIGhhbmRsZU1lc3NhZ2UoQXJndW1lbnREZWNvZGVy
KiBhcmd1bWVudHMsIEFyZ3VtZW50RW5jb2RlciogcmVwbHksIEMqIG9iamVjdCwgdm9pZCAoQzo6
KmZ1bmN0aW9uKShSMSYsIFIyJikpCi17Ci0gICAgdHlwZW5hbWUgUmVtb3ZlUmVmZXJlbmNlPHR5
cGVuYW1lIFQ6OlJlcGx5OjpGaXJzdEFyZ3VtZW50VHlwZT46OlR5cGUgZmlyc3RSZXBseUFyZ3Vt
ZW50OwotICAgIHR5cGVuYW1lIFJlbW92ZVJlZmVyZW5jZTx0eXBlbmFtZSBUOjpSZXBseTo6U2Vj
b25kQXJndW1lbnRUeXBlPjo6VHlwZSBzZWNvbmRSZXBseUFyZ3VtZW50OwotICAgIChvYmplY3Qt
PipmdW5jdGlvbikoZmlyc3RSZXBseUFyZ3VtZW50LCBzZWNvbmRSZXBseUFyZ3VtZW50KTsKLSAg
ICByZXBseS0+ZW5jb2RlKGZpcnN0UmVwbHlBcmd1bWVudCk7Ci0gICAgcmVwbHktPmVuY29kZShz
ZWNvbmRSZXBseUFyZ3VtZW50KTsKLX0KLQogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
QywgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFIxPgogdm9pZCBoYW5kbGVNZXNzYWdlKEFyZ3VtZW50
RGVjb2RlciogYXJndW1lbnRzLCBBcmd1bWVudEVuY29kZXIqIHJlcGx5LCBDKiBvYmplY3QsIHZv
aWQgKEM6OipmdW5jdGlvbikoUDEsIFIxJikpCiB7CkBAIC0yOTEsMjIgKzEyMSw2IEBAIHZvaWQg
aGFuZGxlTWVzc2FnZShBcmd1bWVudERlY29kZXIqIGFyZ3VtZW50cywgQXJndW1lbnRFbmNvZGVy
KiByZXBseSwgQyogb2JqZWN0CiAgICAgcmVwbHktPmVuY29kZShmaXJzdFJlcGx5QXJndW1lbnQp
OwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBDLCB0eXBlbmFtZSBQMSwgdHlw
ZW5hbWUgUDIsIHR5cGVuYW1lIFIxPgotdm9pZCBoYW5kbGVNZXNzYWdlKEFyZ3VtZW50RGVjb2Rl
ciogYXJndW1lbnRzLCBBcmd1bWVudEVuY29kZXIqIHJlcGx5LCBDKiBvYmplY3QsIHZvaWQgKEM6
OipmdW5jdGlvbikoUDEsIFAyLCBSMSYpKQotewotICAgIHR5cGVuYW1lIFJlbW92ZVJlZmVyZW5j
ZTx0eXBlbmFtZSBUOjpGaXJzdEFyZ3VtZW50VHlwZT46OlR5cGUgZmlyc3RBcmd1bWVudDsKLSAg
ICBpZiAoIWFyZ3VtZW50cy0+ZGVjb2RlKGZpcnN0QXJndW1lbnQpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICB0eXBlbmFtZSBSZW1vdmVSZWZlcmVuY2U8dHlwZW5hbWUgVDo6U2Vjb25kQXJndW1l
bnRUeXBlPjo6VHlwZSBzZWNvbmRBcmd1bWVudDsKLSAgICBpZiAoIWFyZ3VtZW50cy0+ZGVjb2Rl
KHNlY29uZEFyZ3VtZW50KSkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIHR5cGVuYW1lIFJl
bW92ZVJlZmVyZW5jZTx0eXBlbmFtZSBUOjpSZXBseTo6Rmlyc3RBcmd1bWVudFR5cGU+OjpUeXBl
IGZpcnN0UmVwbHlBcmd1bWVudDsKLSAgICAob2JqZWN0LT4qZnVuY3Rpb24pKGZpcnN0QXJndW1l
bnQsIHNlY29uZEFyZ3VtZW50LCBmaXJzdFJlcGx5QXJndW1lbnQpOwotICAgIHJlcGx5LT5lbmNv
ZGUoZmlyc3RSZXBseUFyZ3VtZW50KTsKLX0KLQogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgQywgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUjE+
CiB2b2lkIGhhbmRsZU1lc3NhZ2UoQXJndW1lbnREZWNvZGVyKiBhcmd1bWVudHMsIEFyZ3VtZW50
RW5jb2RlciogcmVwbHksIEMqIG9iamVjdCwgdm9pZCAoQzo6KmZ1bmN0aW9uKShQMSwgUDIsIFAz
LCBSMSYpKQogewpAQCAtMzUxLDYgKzE2NSwyMiBAQCB2b2lkIGhhbmRsZU1lc3NhZ2UoQXJndW1l
bnREZWNvZGVyKiBhcmd1bWVudHMsIEFyZ3VtZW50RW5jb2RlciogcmVwbHksIEMqIG9iamVjdAog
ICAgIHJlcGx5LT5lbmNvZGUoZmlyc3RSZXBseUFyZ3VtZW50KTsKIH0KIAordGVtcGxhdGU8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgQywgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBS
MT4KK3ZvaWQgaGFuZGxlTWVzc2FnZShBcmd1bWVudERlY29kZXIqIGFyZ3VtZW50cywgQXJndW1l
bnRFbmNvZGVyKiByZXBseSwgQyogb2JqZWN0LCB2b2lkIChDOjoqZnVuY3Rpb24pKFAxLCBQMiwg
UjEmKSkKK3sKKyAgICB0eXBlbmFtZSBSZW1vdmVSZWZlcmVuY2U8dHlwZW5hbWUgVDo6Rmlyc3RB
cmd1bWVudFR5cGU+OjpUeXBlIGZpcnN0QXJndW1lbnQ7CisgICAgaWYgKCFhcmd1bWVudHMtPmRl
Y29kZShmaXJzdEFyZ3VtZW50KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgdHlwZW5hbWUgUmVt
b3ZlUmVmZXJlbmNlPHR5cGVuYW1lIFQ6OlNlY29uZEFyZ3VtZW50VHlwZT46OlR5cGUgc2Vjb25k
QXJndW1lbnQ7CisgICAgaWYgKCFhcmd1bWVudHMtPmRlY29kZShzZWNvbmRBcmd1bWVudCkpCisg
ICAgICAgIHJldHVybjsKKyAgICAKKyAgICB0eXBlbmFtZSBSZW1vdmVSZWZlcmVuY2U8dHlwZW5h
bWUgVDo6UmVwbHk6OkZpcnN0QXJndW1lbnRUeXBlPjo6VHlwZSBmaXJzdFJlcGx5QXJndW1lbnQ7
CisgICAgKG9iamVjdC0+KmZ1bmN0aW9uKShmaXJzdEFyZ3VtZW50LCBzZWNvbmRBcmd1bWVudCwg
Zmlyc3RSZXBseUFyZ3VtZW50KTsKKyAgICByZXBseS0+ZW5jb2RlKGZpcnN0UmVwbHlBcmd1bWVu
dCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIENvcmVJUEMKIAogI2VuZGlmIC8vIEhhbmRsZU1lc3Nh
Z2VfaApkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9TY3JpcHRzL3dlYmtpdDIvbWVzc2FnZXMucHkgYi9X
ZWJLaXQyL1NjcmlwdHMvd2Via2l0Mi9tZXNzYWdlcy5weQppbmRleCA4ZGZhZDU1Zjk2ZTM4YTJi
ZDEzOGE3YWYxNDJkOWIxNDkwNmUxZjVlLi42ZjJkMjYzZTEyMWM5Mjk5NTA1MTRjYThlNDg0ODVh
YjRiODNhNmZjIDEwMDY0NAotLS0gYS9XZWJLaXQyL1NjcmlwdHMvd2Via2l0Mi9tZXNzYWdlcy5w
eQorKysgYi9XZWJLaXQyL1NjcmlwdHMvd2Via2l0Mi9tZXNzYWdlcy5weQpAQCAtMTQ0LDE2ICsx
NDQsMTIgQEAgZGVmIGZ1bmN0aW9uX3BhcmFtZXRlcl90eXBlKHR5cGUpOgogICAgICMgRG9uJ3Qg
dXNlIHJlZmVyZW5jZXMgZm9yIGJ1aWx0LWluIHR5cGVzLgogICAgIGJ1aWx0aW5fdHlwZXMgPSBm
cm96ZW5zZXQoWwogICAgICAgICAnYm9vbCcsCi0gICAgICAgICdkb3VibGUnLAogICAgICAgICAn
ZmxvYXQnLAotICAgICAgICAnaW50MTZfdCcsCi0gICAgICAgICdpbnQzMl90JywKLSAgICAgICAg
J2ludDY0X3QnLAotICAgICAgICAnaW50OF90JywKKyAgICAgICAgJ2RvdWJsZScsCisgICAgICAg
ICd1aW50OF90JywKICAgICAgICAgJ3VpbnQxNl90JywKICAgICAgICAgJ3VpbnQzMl90JywKICAg
ICAgICAgJ3VpbnQ2NF90JywKLSAgICAgICAgJ3VpbnQ4X3QnLAogICAgIF0pCiAKICAgICBpZiB0
eXBlIGluIGJ1aWx0aW5fdHlwZXM6CkBAIC0zMjYsNyArMzIyLDYgQEAgZGVmIGFyZ3VtZW50X2Nv
ZGVyX2hlYWRlcnNfZm9yX3R5cGUodHlwZSk6CiAKICAgICBzcGVjaWFsX2Nhc2VzID0gewogICAg
ICAgICAnV1RGOjpTdHJpbmcnOiAnIkFyZ3VtZW50Q29kZXJzLmgiJywKLSAgICAgICAgJ1dlYktp
dDo6SW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXInOiAnIkluamVjdGVkQnVuZGxlVXNl
ck1lc3NhZ2VDb2RlcnMuaCInLAogICAgIH0KIAogICAgIGlmIHR5cGUgaW4gc3BlY2lhbF9jYXNl
czoKQEAgLTM4NiwxOCArMzgxLDYgQEAgZGVmIGdlbmVyYXRlX21lc3NhZ2VfaGFuZGxlcihmaWxl
KToKICAgICAgICAgdHlwZV9oZWFkZXJzID0gaGVhZGVyc19mb3JfdHlwZSh0eXBlKQogICAgICAg
ICBoZWFkZXJzLnVwZGF0ZSh0eXBlX2hlYWRlcnMpCiAKLSAgICBmb3IgbWVzc2FnZSBpbiByZWNl
aXZlci5tZXNzYWdlczoKLSAgICAgICAgaWYgbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzIGlzIG5v
dCBOb25lOgotICAgICAgICAgICAgZm9yIHJlcGx5X3BhcmFtZXRlciBpbiBtZXNzYWdlLnJlcGx5
X3BhcmFtZXRlcnM6Ci0gICAgICAgICAgICAgICAgdHlwZSA9IHJlcGx5X3BhcmFtZXRlci50eXBl
Ci0gICAgICAgICAgICAgICAgYXJndW1lbnRfZW5jb2Rlcl9oZWFkZXJzID0gYXJndW1lbnRfY29k
ZXJfaGVhZGVyc19mb3JfdHlwZSh0eXBlKQotICAgICAgICAgICAgICAgIGlmIGFyZ3VtZW50X2Vu
Y29kZXJfaGVhZGVyczoKLSAgICAgICAgICAgICAgICAgICAgaGVhZGVycy51cGRhdGUoYXJndW1l
bnRfZW5jb2Rlcl9oZWFkZXJzKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotCi0gICAg
ICAgICAgICAgICAgdHlwZV9oZWFkZXJzID0gaGVhZGVyc19mb3JfdHlwZSh0eXBlKQotICAgICAg
ICAgICAgICAgIGhlYWRlcnMudXBkYXRlKHR5cGVfaGVhZGVycykKLQogICAgIHJlc3VsdCA9IFtd
CiAKICAgICByZXN1bHQuYXBwZW5kKF9saWNlbnNlX2hlYWRlcikKZGlmZiAtLWdpdCBhL1dlYktp
dDIvU2NyaXB0cy93ZWJraXQyL21lc3NhZ2VzX3VuaXR0ZXN0LnB5IGIvV2ViS2l0Mi9TY3JpcHRz
L3dlYmtpdDIvbWVzc2FnZXNfdW5pdHRlc3QucHkKaW5kZXggNjgyNmQ1Y2JlZjk2N2NhY2RlNDJh
MGY3Mjk0YWZjYzQ5MmI3MGVkNC4uM2I0NTY4MDc5MjQ3MmE1MjM0MGQwZjAxZWIxMWFkMTU0OGU5
OGRiOSAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9TY3JpcHRzL3dlYmtpdDIvbWVzc2FnZXNfdW5pdHRl
c3QucHkKKysrIGIvV2ViS2l0Mi9TY3JpcHRzL3dlYmtpdDIvbWVzc2FnZXNfdW5pdHRlc3QucHkK
QEAgLTQxOSwxMSArNDE5LDkgQEAgX2V4cGVjdGVkX3JlY2VpdmVyX2ltcGxlbWVudGF0aW9uID0g
IiIiLyoKIAogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiQXJndW1lbnRE
ZWNvZGVyLmgiCi0jaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIkhhbmRsZU1lc3Nh
Z2UuaCIKICNpbmNsdWRlICJNYWNoUG9ydC5oIgogI2luY2x1ZGUgIlBsdWdpbi5oIgotI2luY2x1
ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYkV2ZW50LmgiCiAjaW5j
bHVkZSAiV2ViUGFnZU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXNTdG9yZS5o
IgpkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9TaGFyZWQvQ29yZUlQQ1N1cHBvcnQvV2ViUGFnZVByb3h5
TWVzc2FnZUtpbmRzLmggYi9XZWJLaXQyL1NoYXJlZC9Db3JlSVBDU3VwcG9ydC9XZWJQYWdlUHJv
eHlNZXNzYWdlS2luZHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNmJjNmQyMDRhNmE1ZTAyMzVmYzE4YTc2NmY5
NDc0MGMxNDkxNDlkCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0Mi9TaGFyZWQvQ29yZUlQQ1N1
cHBvcnQvV2ViUGFnZVByb3h5TWVzc2FnZUtpbmRzLmgKQEAgLTAsMCArMSwxMDMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIFdlYlBhZ2VQcm94eU1lc3NhZ2VLaW5kc19oCisjZGVmaW5lIFdlYlBh
Z2VQcm94eU1lc3NhZ2VLaW5kc19oCisKKyNpbmNsdWRlICJNZXNzYWdlSUQuaCIKKworLy8gTWVz
c2FnZXMgc2VudCBmcm9tIHRoZSB3ZWIgcHJvY2VzcyB0byB0aGUgV2ViUGFnZVByb3h5LgorCitu
YW1lc3BhY2UgV2ViUGFnZVByb3h5TWVzc2FnZSB7CisKK2VudW0gS2luZCB7CisgICAgQ3JlYXRl
TmV3UGFnZSwKKyAgICBTaG93UGFnZSwKKyAgICBSdW5KYXZhU2NyaXB0QWxlcnQsCisgICAgUnVu
SmF2YVNjcmlwdENvbmZpcm0sCisgICAgUnVuSmF2YVNjcmlwdFByb21wdCwKKworICAgIENsb3Nl
UGFnZSwKKyAgICBDb250ZW50c1NpemVDaGFuZ2VkLAorICAgIERlY2lkZVBvbGljeUZvck1JTUVU
eXBlLAorICAgIERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24sCisgICAgRGVjaWRlUG9s
aWN5Rm9yTmV3V2luZG93QWN0aW9uLAorICAgIERpZENoYW5nZVByb2dyZXNzLAorICAgIERpZENv
bW1pdExvYWRGb3JGcmFtZSwKKyAgICBEaWRDcmVhdGVNYWluRnJhbWUsCisgICAgRGlkQ3JlYXRl
U3ViRnJhbWUsCisgICAgRGlkRmFpbExvYWRGb3JGcmFtZSwKKyAgICBEaWRGYWlsUHJvdmlzaW9u
YWxMb2FkRm9yRnJhbWUsCisgICAgRGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUsCisgICAg
RGlkRmluaXNoTG9hZEZvckZyYW1lLAorICAgIERpZEZpbmlzaFByb2dyZXNzLAorICAgIERpZEZp
cnN0TGF5b3V0Rm9yRnJhbWUsCisgICAgRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9y
RnJhbWUsCisgICAgRGlkR2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24sCisgICAg
RGlkR2V0U291cmNlRm9yRnJhbWUsCisgICAgRGlkUmVjZWl2ZUV2ZW50LAorICAgIERpZFJlY2Vp
dmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lLAorICAgIERpZFJlY2Vp
dmVUaXRsZUZvckZyYW1lLAorICAgIERpZFJlbW92ZUZyYW1lRnJvbUhpZXJhcmNoeSwKKyAgICBE
aWRSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWUsCisgICAgRGlkU2V0RnJhbWUsCisgICAgRGlkU3Rh
cnRQcm9ncmVzcywKKyAgICBEaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lLAorICAgIERp
ZFZhbGlkYXRlTWVudUl0ZW0sCisgICAgTW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQsCisgICAgU2V0
Q3Vyc29yLAorICAgIFNldFN0YXR1c1RleHQsCisgICAgU2V0VG9vbFRpcCwKKyAgICBUYWtlRm9j
dXMsCisgICAgV2lsbFN1Ym1pdEZvcm0sCisKKyAgICBCYWNrRm9yd2FyZEFkZEl0ZW0sCisgICAg
QmFja0ZvcndhcmRHb1RvSXRlbSwKKyAgICBCYWNrRm9yd2FyZEJhY2tJdGVtLAorICAgIEJhY2tG
b3J3YXJkQ3VycmVudEl0ZW0sCisgICAgQmFja0ZvcndhcmRGb3J3YXJkSXRlbSwKKyAgICBCYWNr
Rm9yd2FyZEl0ZW1BdEluZGV4LAorICAgIEJhY2tGb3J3YXJkQmFja0xpc3RDb3VudCwKKyAgICBC
YWNrRm9yd2FyZEZvcndhcmRMaXN0Q291bnQsCisKKyAgICBSZWdpc3RlckVkaXRDb21tYW5kRm9y
VW5kbywKKyAgICBDbGVhckFsbEVkaXRDb21tYW5kcywKKworI2lmIFVTRShBQ0NFTEVSQVRFRF9D
T01QT1NJVElORykKKyAgICBEaWRDaGFuZ2VBY2NlbGVyYXRlZENvbXBvc2l0aW5nLAorI2VuZGlm
Cit9OworCit9CisKK25hbWVzcGFjZSBDb3JlSVBDIHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgTWVz
c2FnZUtpbmRUcmFpdHM8V2ViUGFnZVByb3h5TWVzc2FnZTo6S2luZD4geyAKKyAgICBzdGF0aWMg
Y29uc3QgTWVzc2FnZUNsYXNzIG1lc3NhZ2VDbGFzcyA9IE1lc3NhZ2VDbGFzc1dlYlBhZ2VQcm94
eTsKK307CisKK30KKworI2VuZGlmIC8vIFdlYlBhZ2VQcm94eU1lc3NhZ2VLaW5kc19oCmRpZmYg
LS1naXQgYS9XZWJLaXQyL1NoYXJlZC9TdHJpbmdQYWlyVmVjdG9yLmggYi9XZWJLaXQyL1NoYXJl
ZC9TdHJpbmdQYWlyVmVjdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNlMmRh
NGEwOWIzNGYzMTU0NzY1ZDgwZmMxZGM4ODU4ZjEwODRmYTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvV2ViS2l0Mi9TaGFyZWQvU3RyaW5nUGFpclZlY3Rv
ci5oCisrKyAvZGV2L251bGwKQEAgLTEsNjYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYg
U3RyaW5nUGFpclZlY3Rvcl9oCi0jZGVmaW5lIFN0cmluZ1BhaXJWZWN0b3JfaAotCi0jaW5jbHVk
ZSAiQXJndW1lbnRDb2RlcnMuaCIKLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi0vLyBUaGlzIGNs
YXNzIGlzIGEgaGFjayB0byB3b3JrIGFyb3VuZCB0aGUgZmFjdCB0aGF0IHRoZSBJUEMgbWVzc2Fn
ZSBnZW5lcmF0b3IKLS8vIGNhbm5vdCBkZWFsIHdpdGggY2xhc3MgdGVtcGxhdGVzIHdpdGggbW9y
ZSB0aGFuIG9uZSBwYXJhbXRlci4KLWNsYXNzIFN0cmluZ1BhaXJWZWN0b3IgewotcHVibGljOgot
ICAgIFN0cmluZ1BhaXJWZWN0b3IoKQotICAgIHsKLSAgICB9Ci0KLSAgICBTdHJpbmdQYWlyVmVj
dG9yKFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+ID4gc3RyaW5nUGFpclZlY3RvcikK
LSAgICB7Ci0gICAgICAgIG1fc3RyaW5nUGFpclZlY3Rvci5zd2FwKHN0cmluZ1BhaXJWZWN0b3Ip
OwotICAgIH0KLQotICAgIHZvaWQgZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciogZW5j
b2RlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIGVuY29kZXItPmVuY29kZShtX3N0cmluZ1BhaXJW
ZWN0b3IpOwotICAgIH0KLQotICAgIHN0YXRpYyBib29sIGRlY29kZShDb3JlSVBDOjpBcmd1bWVu
dERlY29kZXIqIGRlY29kZXIsIFN0cmluZ1BhaXJWZWN0b3ImIHN0cmluZ1BhaXJWZWN0b3IpCi0g
ICAgewotICAgICAgICByZXR1cm4gZGVjb2Rlci0+ZGVjb2RlKHN0cmluZ1BhaXJWZWN0b3IubV9z
dHJpbmdQYWlyVmVjdG9yKTsKLSAgICB9Ci0KLSAgICBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0
cmluZywgU3RyaW5nPiA+JiBzdHJpbmdQYWlyVmVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9zdHJp
bmdQYWlyVmVjdG9yOyB9Ci0KLXByaXZhdGU6Ci0gICAgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcs
IFN0cmluZz4gPiBtX3N0cmluZ1BhaXJWZWN0b3I7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJL
aXQKLQotI2VuZGlmIC8vIFN0cmluZ1BhaXJWZWN0b3JfaApkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5oIGIvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L21hYy9QYWdlQ2xpZW50SW1wbC5oCmluZGV4IDc0OGQ3ZTNjMDFjMWJkOGUzMTI4MDRhM2UxNzhl
NjU3NmRiNzlhMjAuLmY0NWFkNzEwNmU2MWFlNWFlYmVhNGQ0YWQ3MWE0ZDVhZTE0N2NlNzEgMTAw
NjQ0Ci0tLSBhL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwuaAorKysg
Yi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLmgKQEAgLTUyLDcgKzUy
LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgdG9vbFRpcENoYW5nZWQoY29uc3QgU3Ry
aW5nJiBvbGRUb29sVGlwLCBjb25zdCBTdHJpbmcmIG5ld1Rvb2xUaXApOwogICAgIHZpcnR1YWwg
dm9pZCBzZXRDdXJzb3IoY29uc3QgV2ViQ29yZTo6Q3Vyc29yJik7CiAKLSAgICB2b2lkIHJlZ2lz
dGVyRWRpdENvbW1hbmQoUGFzc1JlZlB0cjxXZWJFZGl0Q29tbWFuZFByb3h5PiwgV2ViUGFnZVBy
b3h5OjpVbmRvT3JSZWRvKTsKKyAgICB2b2lkIHJlZ2lzdGVyRWRpdENvbW1hbmQoUGFzc1JlZlB0
cjxXZWJFZGl0Q29tbWFuZFByb3h5PiwgVW5kb09yUmVkbyk7CiAgICAgdm9pZCBjbGVhckFsbEVk
aXRDb21tYW5kcygpOwogICAgIHZvaWQgc2V0RWRpdENvbW1hbmRTdGF0ZShjb25zdCBTdHJpbmcm
IGNvbW1hbmROYW1lLCBib29sIGlzRW5hYmxlZCwgaW50IHN0YXRlKTsKIApkaWZmIC0tZ2l0IGEv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5tbSBiL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwubW0KaW5kZXggYjQ3ZjMxMDRlOTMwMTkxMjIy
NWY5NzM5MjY2MWM5MWExNWUzMjIxNC4uNTRmMGIxZTE1MjY3YzlhNTI4YjQ4YjAzZWU1MDI4ZDJk
NTIxYTY0ZCAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50
SW1wbC5tbQorKysgYi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLm1t
CkBAIC0xODMsNyArMTgzLDcgQEAgc3RhdGljIE5TU3RyaW5nKiBuYW1lRm9yRWRpdEFjdGlvbihF
ZGl0QWN0aW9uIGVkaXRBY3Rpb24pCiAgICAgcmV0dXJuIG5pbDsKIH0KIAotdm9pZCBQYWdlQ2xp
ZW50SW1wbDo6cmVnaXN0ZXJFZGl0Q29tbWFuZChQYXNzUmVmUHRyPFdlYkVkaXRDb21tYW5kUHJv
eHk+IHBycENvbW1hbmQsIFdlYlBhZ2VQcm94eTo6VW5kb09yUmVkbyB1bmRvT3JSZWRvKQordm9p
ZCBQYWdlQ2xpZW50SW1wbDo6cmVnaXN0ZXJFZGl0Q29tbWFuZChQYXNzUmVmUHRyPFdlYkVkaXRD
b21tYW5kUHJveHk+IHBycENvbW1hbmQsIFVuZG9PclJlZG8gdW5kb09yUmVkbykKIHsKICAgICBS
ZWZQdHI8V2ViRWRpdENvbW1hbmRQcm94eT4gY29tbWFuZCA9IHBycENvbW1hbmQ7CiAKQEAgLTE5
MSw3ICsxOTEsNyBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpyZWdpc3RlckVkaXRDb21tYW5kKFBh
c3NSZWZQdHI8V2ViRWRpdENvbW1hbmRQcm94eT4gcHJwQ29tbQogICAgIE5TU3RyaW5nICphY3Rp
b25OYW1lID0gbmFtZUZvckVkaXRBY3Rpb24oY29tbWFuZC0+ZWRpdEFjdGlvbigpKTsKIAogICAg
IE5TVW5kb01hbmFnZXIgKnVuZG9NYW5hZ2VyID0gW21fd2tWaWV3IHVuZG9NYW5hZ2VyXTsKLSAg
ICBbdW5kb01hbmFnZXIgcmVnaXN0ZXJVbmRvV2l0aFRhcmdldDptX3VuZG9UYXJnZXQuZ2V0KCkg
c2VsZWN0b3I6KCh1bmRvT3JSZWRvID09IFdlYlBhZ2VQcm94eTo6VW5kbykgPyBAc2VsZWN0b3Io
dW5kb0VkaXRpbmc6KSA6IEBzZWxlY3RvcihyZWRvRWRpdGluZzopKSBvYmplY3Q6Y29tbWFuZE9i
akMuZ2V0KCldOworICAgIFt1bmRvTWFuYWdlciByZWdpc3RlclVuZG9XaXRoVGFyZ2V0Om1fdW5k
b1RhcmdldC5nZXQoKSBzZWxlY3RvcjooKHVuZG9PclJlZG8gPT0gVW5kbykgPyBAc2VsZWN0b3Io
dW5kb0VkaXRpbmc6KSA6IEBzZWxlY3RvcihyZWRvRWRpdGluZzopKSBvYmplY3Q6Y29tbWFuZE9i
akMuZ2V0KCldOwogICAgIGlmIChhY3Rpb25OYW1lKQogICAgICAgICBbdW5kb01hbmFnZXIgc2V0
QWN0aW9uTmFtZTphY3Rpb25OYW1lXTsKIH0KZGlmZiAtLWdpdCBhL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9xdC9xd2twYWdlLmNwcCBiL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2twYWdlLmNw
cAppbmRleCAxYzZlNGVkZmIyM2MxZDU3MTYxOWM1OGQ2Mzg5ZGUxNTA2NzRjYjZjLi4xNWY0ZjZl
OTc0N2NiYjE0NTBkZWJjOGE0NzY0ZmI2ZTQ4OTg3OGViIDEwMDY0NAotLS0gYS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvcXQvcXdrcGFnZS5jcHAKKysrIGIvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0
L3F3a3BhZ2UuY3BwCkBAIC04Myw3ICs4Myw3IEBAIHZvaWQgUVdLUGFnZVByaXZhdGU6OnRvb2xU
aXBDaGFuZ2VkKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgbmV3VG9vbHRpcCkKICAgICBl
bWl0IHEtPnN0YXR1c0Jhck1lc3NhZ2UoUVN0cmluZyhuZXdUb29sdGlwKSk7CiB9CiAKLXZvaWQg
UVdLUGFnZVByaXZhdGU6OnJlZ2lzdGVyRWRpdENvbW1hbmQoUGFzc1JlZlB0cjxXZWJFZGl0Q29t
bWFuZFByb3h5PiwgV2ViUGFnZVByb3h5OjpVbmRvT3JSZWRvKQordm9pZCBRV0tQYWdlUHJpdmF0
ZTo6cmVnaXN0ZXJFZGl0Q29tbWFuZChQYXNzUmVmUHRyPFdlYkVkaXRDb21tYW5kUHJveHk+LCBV
bmRvT3JSZWRvKQogewogfQogCmRpZmYgLS1naXQgYS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQv
cXdrcGFnZV9wLmggYi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdrcGFnZV9wLmgKaW5kZXgg
OWVkNTg2NzQ3MGEyMzljNzI5YzI1MTdhZTA2NzEyOWI5NTRjY2VkNy4uYWQ5ZjEzYjU1NDljNDdl
ZDVjNjg1Zjc0ZmJkOTBjNzU2NDYyNDIzMiAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL3F0L3F3a3BhZ2VfcC5oCisrKyBiL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2twYWdl
X3AuaApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldEN1cnNv
cihjb25zdCBXZWJDb3JlOjpDdXJzb3ImKTsKICAgICB2aXJ0dWFsIHZvaWQgdGFrZUZvY3VzKGJv
b2wgZGlyZWN0aW9uKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgdG9vbFRpcENoYW5nZWQoY29uc3Qg
V1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmluZyYpOwotICAgIHZpcnR1YWwgdm9pZCByZWdp
c3RlckVkaXRDb21tYW5kKFBhc3NSZWZQdHI8V2ViS2l0OjpXZWJFZGl0Q29tbWFuZFByb3h5Piwg
V2ViUGFnZVByb3h5OjpVbmRvT3JSZWRvKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJFZGl0
Q29tbWFuZChQYXNzUmVmUHRyPFdlYktpdDo6V2ViRWRpdENvbW1hbmRQcm94eT4sIFVuZG9PclJl
ZG8pOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhckFsbEVkaXRDb21tYW5kcygpOwogCiAgICAgdm9p
ZCBwYWludChRUGFpbnRlciogcGFpbnRlciwgUVJlY3QpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9V
SVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmlu
ZGV4IDkwOTk0NDYxN2RlMTQ1NmNiZjlhMzIxOGFhMjMwNWNlNjA5MGJlYjUuLmVmYTU3MThkMWFl
NTliZGViMjE0MTZmZWI1MWM4NGRmYWI3YjIzZTkgMTAwNjQ0Ci0tLSBhL1dlYktpdDIvVUlQcm9j
ZXNzL1BhZ2VDbGllbnQuaAorKysgYi9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAg
LTI2LDcgKzI2LDYgQEAKICNpZm5kZWYgUGFnZUNsaWVudF9oCiAjZGVmaW5lIFBhZ2VDbGllbnRf
aAogCi0jaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDksNyArNDgsOCBAQCBwdWJsaWM6CiAKICAgICB2
aXJ0dWFsIHZvaWQgc2V0Q3Vyc29yKGNvbnN0IFdlYkNvcmU6OkN1cnNvciYpID0gMDsKIAotICAg
IHZpcnR1YWwgdm9pZCByZWdpc3RlckVkaXRDb21tYW5kKFBhc3NSZWZQdHI8V2ViRWRpdENvbW1h
bmRQcm94eT4sIFdlYlBhZ2VQcm94eTo6VW5kb09yUmVkbykgPSAwOworICAgIGVudW0gVW5kb09y
UmVkbyB7IFVuZG8sIFJlZG8gfTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJFZGl0Q29tbWFu
ZChQYXNzUmVmUHRyPFdlYkVkaXRDb21tYW5kUHJveHk+LCBVbmRvT3JSZWRvKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGNsZWFyQWxsRWRpdENvbW1hbmRzKCkgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBzZXRFZGl0Q29tbWFuZFN0YXRlKGNvbnN0IFN0cmluZyYgY29tbWFuZE5hbWUsIGJvb2wgaXNF
bmFibGVkLCBpbnQgc3RhdGUpID0gMDsKIApkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViRWRpdENvbW1hbmRQcm94eS5jcHAgYi9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJFZGl0Q29tbWFu
ZFByb3h5LmNwcAppbmRleCA5YTgxNmUzY2IxZTc0YTkxN2I4YTE5MjU5Nzg4ZjYzZDczYzUzY2Qy
Li43MGI3ZDE5ZWMwMzhhODQwMjY0ZGFlYTM4M2FjNzYwYzVmZWM4NzVhIDEwMDY0NAotLS0gYS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJFZGl0Q29tbWFuZFByb3h5LmNwcAorKysgYi9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJFZGl0Q29tbWFuZFByb3h5LmNwcApAQCAtNTMsNyArNTMsNyBAQCB2b2lkIFdl
YkVkaXRDb21tYW5kUHJveHk6OnVuYXBwbHkoKQogICAgICAgICByZXR1cm47CiAKICAgICBtX3Bh
Z2UtPnByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VW5hcHBseUVkaXRDb21tYW5k
KG1fY29tbWFuZElEKSwgbV9wYWdlLT5wYWdlSUQoKSk7Ci0gICAgbV9wYWdlLT5yZWdpc3RlckVk
aXRDb21tYW5kKHRoaXMsIFdlYlBhZ2VQcm94eTo6VW5kbyk7CisgICAgbV9wYWdlLT5yZWdpc3Rl
ckVkaXRDb21tYW5kRm9yUmVkbyh0aGlzKTsKIH0KIAogdm9pZCBXZWJFZGl0Q29tbWFuZFByb3h5
OjpyZWFwcGx5KCkKQEAgLTYyLDcgKzYyLDcgQEAgdm9pZCBXZWJFZGl0Q29tbWFuZFByb3h5Ojpy
ZWFwcGx5KCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9wYWdlLT5wcm9jZXNzKCktPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlJlYXBwbHlFZGl0Q29tbWFuZChtX2NvbW1hbmRJRCksIG1fcGFn
ZS0+cGFnZUlEKCkpOwotICAgIG1fcGFnZS0+cmVnaXN0ZXJFZGl0Q29tbWFuZCh0aGlzLCBXZWJQ
YWdlUHJveHk6OlJlZG8pOworICAgIG1fcGFnZS0+cmVnaXN0ZXJFZGl0Q29tbWFuZEZvclVuZG8o
dGhpcyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViRm9ybUNsaWVudC5jcHAgYi9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGb3JtQ2xp
ZW50LmNwcAppbmRleCAxMWVhZjBkOWFmZTdjOWZlZGUwMTMwYTk1ZDczNTI2ZjA0ZmUzN2RlLi5m
NWY1ODQzOWU2ODM4YjY2MTFlNzQ5YmNiM2NlYWIxMDdmZmU1ZTUzIDEwMDY0NAotLS0gYS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJGb3JtQ2xpZW50LmNwcAorKysgYi9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJGb3JtQ2xpZW50LmNwcApAQCAtNDUsNyArNDUsNyBAQCB2b2lkIFdlYkZvcm1DbGllbnQ6Omlu
aXRpYWxpemUoY29uc3QgV0tQYWdlRm9ybUNsaWVudCogY2xpZW50KQogICAgICAgICBtZW1zZXQo
Jm1fcGFnZUZvcm1DbGllbnQsIDAsIHNpemVvZihtX3BhZ2VGb3JtQ2xpZW50KSk7CiB9CiAKLWJv
b2wgV2ViRm9ybUNsaWVudDo6d2lsbFN1Ym1pdEZvcm0oV2ViUGFnZVByb3h5KiBwYWdlLCBXZWJG
cmFtZVByb3h5KiBmcmFtZSwgV2ViRnJhbWVQcm94eSogc291cmNlRnJhbWUsIGNvbnN0IFZlY3Rv
cjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+ID4mIHRleHRGaWVsZFZhbHVlcywgQVBJT2JqZWN0
KiB1c2VyRGF0YSwgV2ViRm9ybVN1Ym1pc3Npb25MaXN0ZW5lclByb3h5KiBsaXN0ZW5lcikKK2Jv
b2wgV2ViRm9ybUNsaWVudDo6d2lsbFN1Ym1pdEZvcm0oV2ViUGFnZVByb3h5KiBwYWdlLCBXZWJG
cmFtZVByb3h5KiBmcmFtZSwgV2ViRnJhbWVQcm94eSogc291cmNlRnJhbWUsIFZlY3RvcjxzdGQ6
OnBhaXI8U3RyaW5nLCBTdHJpbmc+ID4mIHRleHRGaWVsZFZhbHVlcywgQVBJT2JqZWN0KiB1c2Vy
RGF0YSwgV2ViRm9ybVN1Ym1pc3Npb25MaXN0ZW5lclByb3h5KiBsaXN0ZW5lcikKIHsKICAgICBp
ZiAoIW1fcGFnZUZvcm1DbGllbnQud2lsbFN1Ym1pdEZvcm0pCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKZGlmZiAtLWdpdCBhL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZvcm1DbGllbnQuaCBiL1dlYktp
dDIvVUlQcm9jZXNzL1dlYkZvcm1DbGllbnQuaAppbmRleCBiODMxNGU2YzcwY2JkYjBhODk1MTZk
ZGVkODY2MmQwOTlkN2QzOGYxLi4xZjA3NGE2YmNmNTQ5Y2Q2ZDIzMzg4NjhlZDNiZDQ2YmUwNDQ2
NGFkIDEwMDY0NAotLS0gYS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGb3JtQ2xpZW50LmgKKysrIGIv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViRm9ybUNsaWVudC5oCkBAIC00Myw3ICs0Myw3IEBAIHB1Ymxp
YzoKICAgICBXZWJGb3JtQ2xpZW50KCk7CiAgICAgdm9pZCBpbml0aWFsaXplKGNvbnN0IFdLUGFn
ZUZvcm1DbGllbnQqKTsKIAotICAgIGJvb2wgd2lsbFN1Ym1pdEZvcm0oV2ViUGFnZVByb3h5Kiwg
V2ViRnJhbWVQcm94eSosIFdlYkZyYW1lUHJveHkqLCBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0
cmluZywgU3RyaW5nPiA+JiB0ZXh0RmllbGRWYWx1ZXMsIEFQSU9iamVjdCogdXNlckRhdGEsIFdl
YkZvcm1TdWJtaXNzaW9uTGlzdGVuZXJQcm94eSopOyAKKyAgICBib29sIHdpbGxTdWJtaXRGb3Jt
KFdlYlBhZ2VQcm94eSosIFdlYkZyYW1lUHJveHkqLCBXZWJGcmFtZVByb3h5KiwgVmVjdG9yPHN0
ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4gPiYgdGV4dEZpZWxkVmFsdWVzLCBBUElPYmplY3QqIHVz
ZXJEYXRhLCBXZWJGb3JtU3VibWlzc2lvbkxpc3RlbmVyUHJveHkqKTsgCiAKIHByaXZhdGU6CiAg
ICAgV0tQYWdlRm9ybUNsaWVudCBtX3BhZ2VGb3JtQ2xpZW50OwpkaWZmIC0tZ2l0IGEvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAKaW5kZXggMjY0ZWFhNjM2OTkxMGI2OGU3OWQ1YTlkNDZiNTRiNjJiYjkzMjMwMS4u
YjI1MjFlNzBjZDBmOTA0NTMxNzNhZmI5YTViZjkwMWY5ODYwNjBmOCAxMDA2NDQKLS0tIGEvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCkBAIC0yOSw3ICsyOSw2IEBACiAjaW5jbHVkZSAiTWVzc2FnZUlELmgi
CiAjaW5jbHVkZSAiTmF0aXZlV2ViS2V5Ym9hcmRFdmVudC5oIgogI2luY2x1ZGUgIlBhZ2VDbGll
bnQuaCIKLSNpbmNsdWRlICJTdHJpbmdQYWlyVmVjdG9yLmgiCiAjaW5jbHVkZSAiV2ViQmFja0Zv
cndhcmRMaXN0LmgiCiAjaW5jbHVkZSAiV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oIgogI2luY2x1
ZGUgIldlYkNlcnRpZmljYXRlSW5mby5oIgpAQCAtNDQsNiArNDMsNyBAQAogI2luY2x1ZGUgIldl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJXZWJQYWdlTWVzc2FnZXMuaCIK
ICNpbmNsdWRlICJXZWJQYWdlTmFtZXNwYWNlLmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVz
c2FnZUtpbmRzLmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXMuaCIKICNpbmNsdWRlICJXZWJQ
cm9jZXNzTWFuYWdlci5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgpAQCAtNTQw
LDggKzU0MCwzNDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVNZXNzYWdlKENvcmVJ
UEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIENvcmVJUEM6Ok0KICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIGRpZFJlY2VpdmVXZWJQYWdlUHJveHlNZXNzYWdlKGNvbm5lY3Rpb24sIG1l
c3NhZ2VJRCwgYXJndW1lbnRzKTsKKyAgICBzd2l0Y2ggKG1lc3NhZ2VJRC5nZXQ8V2ViUGFnZVBy
b3h5TWVzc2FnZTo6S2luZD4oKSkgeworICAgICAgICBjYXNlIFdlYlBhZ2VQcm94eU1lc3NhZ2U6
OkRpZENyZWF0ZU1haW5GcmFtZTogeworICAgICAgICAgICAgdWludDY0X3QgZnJhbWVJRDsKKyAg
ICAgICAgICAgIGlmICghYXJndW1lbnRzLT5kZWNvZGUoZnJhbWVJRCkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgZGlkQ3JlYXRlTWFpbkZyYW1lKGZyYW1lSUQpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBXZWJQYWdlUHJveHlNZXNz
YWdlOjpEaWRDcmVhdGVTdWJGcmFtZTogeworICAgICAgICAgICAgdWludDY0X3QgZnJhbWVJRDsK
KyAgICAgICAgICAgIGlmICghYXJndW1lbnRzLT5kZWNvZGUoZnJhbWVJRCkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgZGlkQ3JlYXRlU3ViRnJhbWUoZnJhbWVJRCk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFdlYlBhZ2VQcm94eU1l
c3NhZ2U6OkRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6IHsKKyAgICAgICAgICAgIHVp
bnQ2NF90IGZyYW1lSUQ7CisgICAgICAgICAgICBTdHJpbmcgdXJsOworCisgICAgICAgICAgICBS
ZWZQdHI8QVBJT2JqZWN0PiB1c2VyRGF0YTsKKyAgICAgICAgICAgIFdlYkNvbnRleHRVc2VyTWVz
c2FnZURlY29kZXIgbWVzc2FnZURlY29kZXIodXNlckRhdGEsIHBhZ2VOYW1lc3BhY2UoKS0+Y29u
dGV4dCgpKTsKKworICAgICAgICAgICAgaWYgKCFhcmd1bWVudHMtPmRlY29kZShDb3JlSVBDOjpP
dXQoZnJhbWVJRCwgdXJsLCBtZXNzYWdlRGVjb2RlcikpKQorICAgICAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICAgICAgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShwcm9jZXNz
KCktPndlYkZyYW1lKGZyYW1lSUQpLCB1cmwsIHVzZXJEYXRhLmdldCgpKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgV2ViUGFnZVByb3h5TWVzc2FnZTo6RGlk
UmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6IHsKKyAgICAg
ICAgICAgIHVpbnQ2NF90IGZyYW1lSUQ7CisgICAgICAgICAgICBTdHJpbmcgdXJsOworCisgICAg
ICAgICAgICBSZWZQdHI8QVBJT2JqZWN0PiB1c2VyRGF0YTsKKyAgICAgICAgICAgIFdlYkNvbnRl
eHRVc2VyTWVzc2FnZURlY29kZXIgbWVzc2FnZURlY29kZXIodXNlckRhdGEsIHBhZ2VOYW1lc3Bh
Y2UoKS0+Y29udGV4dCgpKTsKKworICAgICAgICAgICAgaWYgKCFhcmd1bWVudHMtPmRlY29kZShD
b3JlSVBDOjpPdXQoZnJhbWVJRCwgdXJsLCBtZXNzYWdlRGVjb2RlcikpKQorICAgICAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICAgICAgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJv
dmlzaW9uYWxMb2FkRm9yRnJhbWUocHJvY2VzcygpLT53ZWJGcmFtZShmcmFtZUlEKSwgdXJsLCB1
c2VyRGF0YS5nZXQoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBj
YXNlIFdlYlBhZ2VQcm94eU1lc3NhZ2U6OkRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZTog
eworICAgICAgICAgICAgdWludDY0X3QgZnJhbWVJRDsKKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgUmVmUHRyPEFQSU9iamVjdD4gdXNlckRhdGE7CisgICAgICAgICAgICBXZWJDb250ZXh0VXNl
ck1lc3NhZ2VEZWNvZGVyIG1lc3NhZ2VEZWNvZGVyKHVzZXJEYXRhLCBwYWdlTmFtZXNwYWNlKCkt
PmNvbnRleHQoKSk7CisKKyAgICAgICAgICAgIGlmICghYXJndW1lbnRzLT5kZWNvZGUoQ29yZUlQ
Qzo6T3V0KGZyYW1lSUQsIG1lc3NhZ2VEZWNvZGVyKSkpCisgICAgICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgICAgICBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUocHJvY2Vzcygp
LT53ZWJGcmFtZShmcmFtZUlEKSwgdXNlckRhdGEuZ2V0KCkpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBXZWJQYWdlUHJveHlNZXNzYWdlOjpEaWRDb21taXRM
b2FkRm9yRnJhbWU6IHsKKyAgICAgICAgICAgIHVpbnQ2NF90IGZyYW1lSUQ7CisgICAgICAgICAg
ICBTdHJpbmcgbWltZVR5cGU7CisgICAgICAgICAgICBQbGF0Zm9ybUNlcnRpZmljYXRlSW5mbyBj
ZXJ0aWZpY2F0ZUluZm87CisKKyAgICAgICAgICAgIFJlZlB0cjxBUElPYmplY3Q+IHVzZXJEYXRh
OworICAgICAgICAgICAgV2ViQ29udGV4dFVzZXJNZXNzYWdlRGVjb2RlciBtZXNzYWdlRGVjb2Rl
cih1c2VyRGF0YSwgcGFnZU5hbWVzcGFjZSgpLT5jb250ZXh0KCkpOworCisgICAgICAgICAgICBp
ZiAoIWFyZ3VtZW50cy0+ZGVjb2RlKENvcmVJUEM6Ok91dChmcmFtZUlELCBtaW1lVHlwZSwgY2Vy
dGlmaWNhdGVJbmZvLCBtZXNzYWdlRGVjb2RlcikpKQorICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAKKyAgICAgICAgICAgIGRpZENvbW1pdExvYWRGb3JGcmFtZShwcm9jZXNzKCktPndlYkZy
YW1lKGZyYW1lSUQpLCBtaW1lVHlwZSwgY2VydGlmaWNhdGVJbmZvLCB1c2VyRGF0YS5nZXQoKSk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFdlYlBhZ2VQcm94
eU1lc3NhZ2U6OkRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lOiB7CisgICAgICAgICAgICB1
aW50NjRfdCBmcmFtZUlEOworCisgICAgICAgICAgICBSZWZQdHI8QVBJT2JqZWN0PiB1c2VyRGF0
YTsKKyAgICAgICAgICAgIFdlYkNvbnRleHRVc2VyTWVzc2FnZURlY29kZXIgbWVzc2FnZURlY29k
ZXIodXNlckRhdGEsIHBhZ2VOYW1lc3BhY2UoKS0+Y29udGV4dCgpKTsKKworICAgICAgICAgICAg
aWYgKCFhcmd1bWVudHMtPmRlY29kZShDb3JlSVBDOjpPdXQoZnJhbWVJRCwgbWVzc2FnZURlY29k
ZXIpKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGRpZEZpbmlzaERv
Y3VtZW50TG9hZEZvckZyYW1lKHByb2Nlc3MoKS0+d2ViRnJhbWUoZnJhbWVJRCksIHVzZXJEYXRh
LmdldCgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgV2Vi
UGFnZVByb3h5TWVzc2FnZTo6RGlkRmluaXNoTG9hZEZvckZyYW1lOiB7CisgICAgICAgICAgICB1
aW50NjRfdCBmcmFtZUlEOworCisgICAgICAgICAgICBSZWZQdHI8QVBJT2JqZWN0PiB1c2VyRGF0
YTsKKyAgICAgICAgICAgIFdlYkNvbnRleHRVc2VyTWVzc2FnZURlY29kZXIgbWVzc2FnZURlY29k
ZXIodXNlckRhdGEsIHBhZ2VOYW1lc3BhY2UoKS0+Y29udGV4dCgpKTsKKworICAgICAgICAgICAg
aWYgKCFhcmd1bWVudHMtPmRlY29kZShDb3JlSVBDOjpPdXQoZnJhbWVJRCwgbWVzc2FnZURlY29k
ZXIpKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGRpZEZpbmlzaExv
YWRGb3JGcmFtZShwcm9jZXNzKCktPndlYkZyYW1lKGZyYW1lSUQpLCB1c2VyRGF0YS5nZXQoKSk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFdlYlBhZ2VQcm94
eU1lc3NhZ2U6OkRpZEZhaWxMb2FkRm9yRnJhbWU6IHsKKyAgICAgICAgICAgIHVpbnQ2NF90IGZy
YW1lSUQ7CisKKyAgICAgICAgICAgIFJlZlB0cjxBUElPYmplY3Q+IHVzZXJEYXRhOworICAgICAg
ICAgICAgV2ViQ29udGV4dFVzZXJNZXNzYWdlRGVjb2RlciBtZXNzYWdlRGVjb2Rlcih1c2VyRGF0
YSwgcGFnZU5hbWVzcGFjZSgpLT5jb250ZXh0KCkpOworCisgICAgICAgICAgICBpZiAoIWFyZ3Vt
ZW50cy0+ZGVjb2RlKENvcmVJUEM6Ok91dChmcmFtZUlELCBtZXNzYWdlRGVjb2RlcikpKQorICAg
ICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgZGlkRmFpbExvYWRGb3JGcmFtZShw
cm9jZXNzKCktPndlYkZyYW1lKGZyYW1lSUQpLCB1c2VyRGF0YS5nZXQoKSk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFdlYlBhZ2VQcm94eU1lc3NhZ2U6OkRp
ZFJlY2VpdmVUaXRsZUZvckZyYW1lOiB7CisgICAgICAgICAgICB1aW50NjRfdCBmcmFtZUlEOwor
ICAgICAgICAgICAgU3RyaW5nIHRpdGxlOworCisgICAgICAgICAgICBSZWZQdHI8QVBJT2JqZWN0
PiB1c2VyRGF0YTsKKyAgICAgICAgICAgIFdlYkNvbnRleHRVc2VyTWVzc2FnZURlY29kZXIgbWVz
c2FnZURlY29kZXIodXNlckRhdGEsIHBhZ2VOYW1lc3BhY2UoKS0+Y29udGV4dCgpKTsKKworICAg
ICAgICAgICAgaWYgKCFhcmd1bWVudHMtPmRlY29kZShDb3JlSVBDOjpPdXQoZnJhbWVJRCwgdGl0
bGUsIG1lc3NhZ2VEZWNvZGVyKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
ICAgICBkaWRSZWNlaXZlVGl0bGVGb3JGcmFtZShwcm9jZXNzKCktPndlYkZyYW1lKGZyYW1lSUQp
LCB0aXRsZSwgdXNlckRhdGEuZ2V0KCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
KyAgICAgICAgY2FzZSBXZWJQYWdlUHJveHlNZXNzYWdlOjpEaWRGaXJzdExheW91dEZvckZyYW1l
OiB7CisgICAgICAgICAgICB1aW50NjRfdCBmcmFtZUlEOworCisgICAgICAgICAgICBSZWZQdHI8
QVBJT2JqZWN0PiB1c2VyRGF0YTsKKyAgICAgICAgICAgIFdlYkNvbnRleHRVc2VyTWVzc2FnZURl
Y29kZXIgbWVzc2FnZURlY29kZXIodXNlckRhdGEsIHBhZ2VOYW1lc3BhY2UoKS0+Y29udGV4dCgp
KTsKKworICAgICAgICAgICAgaWYgKCFhcmd1bWVudHMtPmRlY29kZShDb3JlSVBDOjpPdXQoZnJh
bWVJRCwgbWVzc2FnZURlY29kZXIpKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgICAgIGRpZEZpcnN0TGF5b3V0Rm9yRnJhbWUocHJvY2VzcygpLT53ZWJGcmFtZShmcmFtZUlE
KSwgdXNlckRhdGEuZ2V0KCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAg
ICAgY2FzZSBXZWJQYWdlUHJveHlNZXNzYWdlOjpEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlv
dXRGb3JGcmFtZTogeworICAgICAgICAgICAgdWludDY0X3QgZnJhbWVJRDsKKworICAgICAgICAg
ICAgUmVmUHRyPEFQSU9iamVjdD4gdXNlckRhdGE7CisgICAgICAgICAgICBXZWJDb250ZXh0VXNl
ck1lc3NhZ2VEZWNvZGVyIG1lc3NhZ2VEZWNvZGVyKHVzZXJEYXRhLCBwYWdlTmFtZXNwYWNlKCkt
PmNvbnRleHQoKSk7CisKKyAgICAgICAgICAgIGlmICghYXJndW1lbnRzLT5kZWNvZGUoQ29yZUlQ
Qzo6T3V0KGZyYW1lSUQsIG1lc3NhZ2VEZWNvZGVyKSkpCisgICAgICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgICAgICBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZShw
cm9jZXNzKCktPndlYkZyYW1lKGZyYW1lSUQpLCB1c2VyRGF0YS5nZXQoKSk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFdlYlBhZ2VQcm94eU1lc3NhZ2U6OkRp
ZFJlbW92ZUZyYW1lRnJvbUhpZXJhcmNoeTogeworICAgICAgICAgICAgdWludDY0X3QgZnJhbWVJ
RDsKIAorICAgICAgICAgICAgUmVmUHRyPEFQSU9iamVjdD4gdXNlckRhdGE7CisgICAgICAgICAg
ICBXZWJDb250ZXh0VXNlck1lc3NhZ2VEZWNvZGVyIG1lc3NhZ2VEZWNvZGVyKHVzZXJEYXRhLCBw
YWdlTmFtZXNwYWNlKCktPmNvbnRleHQoKSk7CisKKyAgICAgICAgICAgIGlmICghYXJndW1lbnRz
LT5kZWNvZGUoQ29yZUlQQzo6T3V0KGZyYW1lSUQsIG1lc3NhZ2VEZWNvZGVyKSkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBkaWRSZW1vdmVGcmFtZUZyb21IaWVyYXJj
aHkocHJvY2VzcygpLT53ZWJGcmFtZShmcmFtZUlEKSwgdXNlckRhdGEuZ2V0KCkpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBXZWJQYWdlUHJveHlNZXNzYWdl
OjpEaWRTdGFydFByb2dyZXNzOgorICAgICAgICAgICAgZGlkU3RhcnRQcm9ncmVzcygpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgV2ViUGFnZVByb3h5TWVzc2FnZTo6RGlkQ2hh
bmdlUHJvZ3Jlc3M6IHsKKyAgICAgICAgICAgIGRvdWJsZSB2YWx1ZTsKKyAgICAgICAgICAgIGlm
ICghYXJndW1lbnRzLT5kZWNvZGUodmFsdWUpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgIGRpZENoYW5nZVByb2dyZXNzKHZhbHVlKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisgICAgICAgIGNhc2UgV2ViUGFnZVByb3h5TWVzc2FnZTo6RGlkRmluaXNoUHJv
Z3Jlc3M6CisgICAgICAgICAgICBkaWRGaW5pc2hQcm9ncmVzcygpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgV2ViUGFnZVByb3h5TWVzc2FnZTo6RGlkUmVjZWl2ZUV2ZW50OiB7
CisgICAgICAgICAgICB1aW50MzJfdCB0eXBlOworICAgICAgICAgICAgYm9vbCBoYW5kbGVkOwor
ICAgICAgICAgICAgaWYgKCFhcmd1bWVudHMtPmRlY29kZShDb3JlSVBDOjpPdXQodHlwZSwgaGFu
ZGxlZCkpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGRpZFJlY2VpdmVF
dmVudCgoV2ViRXZlbnQ6OlR5cGUpdHlwZSwgaGFuZGxlZCk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgICAgICBjYXNlIFdlYlBhZ2VQcm94eU1lc3NhZ2U6OlRha2VGb2N1czog
eworICAgICAgICAgICAgLy8gRklYTUU6IFVzZSBlbnVtIGhlcmUuCisgICAgICAgICAgICBib29s
IGRpcmVjdGlvbjsKKyAgICAgICAgICAgIGlmICghYXJndW1lbnRzLT5kZWNvZGUoZGlyZWN0aW9u
KSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB0YWtlRm9jdXMoZGlyZWN0
aW9uKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgV2ViUGFn
ZVByb3h5TWVzc2FnZTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjogeworICAgICAg
ICAgICAgdWludDY0X3QgZnJhbWVJRDsKKyAgICAgICAgICAgIHVpbnQzMl90IG5hdmlnYXRpb25U
eXBlOworICAgICAgICAgICAgdWludDMyX3QgbW9kaWZpZXJzOworICAgICAgICAgICAgaW50MzJf
dCBtb3VzZUJ1dHRvbjsKKyAgICAgICAgICAgIFN0cmluZyB1cmw7CisgICAgICAgICAgICB1aW50
NjRfdCBsaXN0ZW5lcklEOworICAgICAgICAgICAgaWYgKCFhcmd1bWVudHMtPmRlY29kZShDb3Jl
SVBDOjpPdXQoZnJhbWVJRCwgbmF2aWdhdGlvblR5cGUsIG1vZGlmaWVycywgbW91c2VCdXR0b24s
IHVybCwgbGlzdGVuZXJJRCkpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24ocHJvY2VzcygpLT53ZWJGcmFtZShmcmFt
ZUlEKSwgc3RhdGljX2Nhc3Q8TmF2aWdhdGlvblR5cGU+KG5hdmlnYXRpb25UeXBlKSwgc3RhdGlj
X2Nhc3Q8V2ViRXZlbnQ6Ok1vZGlmaWVycz4obW9kaWZpZXJzKSwgc3RhdGljX2Nhc3Q8V2ViTW91
c2VFdmVudDo6QnV0dG9uPihtb3VzZUJ1dHRvbiksIHVybCwgbGlzdGVuZXJJRCk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFdlYlBhZ2VQcm94eU1lc3NhZ2U6
OkRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbjogeworICAgICAgICAgICAgdWludDY0X3Qg
ZnJhbWVJRDsKKyAgICAgICAgICAgIHVpbnQzMl90IG5hdmlnYXRpb25UeXBlOworICAgICAgICAg
ICAgdWludDMyX3QgbW9kaWZpZXJzOworICAgICAgICAgICAgaW50MzJfdCBtb3VzZUJ1dHRvbjsK
KyAgICAgICAgICAgIFN0cmluZyB1cmw7CisgICAgICAgICAgICB1aW50NjRfdCBsaXN0ZW5lcklE
OworICAgICAgICAgICAgaWYgKCFhcmd1bWVudHMtPmRlY29kZShDb3JlSVBDOjpPdXQoZnJhbWVJ
RCwgbmF2aWdhdGlvblR5cGUsIG1vZGlmaWVycywgbW91c2VCdXR0b24sIHVybCwgbGlzdGVuZXJJ
RCkpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGRlY2lkZVBvbGljeUZv
ck5ld1dpbmRvd0FjdGlvbihwcm9jZXNzKCktPndlYkZyYW1lKGZyYW1lSUQpLCBzdGF0aWNfY2Fz
dDxOYXZpZ2F0aW9uVHlwZT4obmF2aWdhdGlvblR5cGUpLCBzdGF0aWNfY2FzdDxXZWJFdmVudDo6
TW9kaWZpZXJzPihtb2RpZmllcnMpLCBzdGF0aWNfY2FzdDxXZWJNb3VzZUV2ZW50OjpCdXR0b24+
KG1vdXNlQnV0dG9uKSwgdXJsLCBsaXN0ZW5lcklEKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisgICAgICAgIGNhc2UgV2ViUGFnZVByb3h5TWVzc2FnZTo6RGVjaWRlUG9saWN5Rm9y
TUlNRVR5cGU6IHsKKyAgICAgICAgICAgIHVpbnQ2NF90IGZyYW1lSUQ7CisgICAgICAgICAgICBT
dHJpbmcgTUlNRVR5cGU7CisgICAgICAgICAgICBTdHJpbmcgdXJsOworICAgICAgICAgICAgdWlu
dDY0X3QgbGlzdGVuZXJJRDsKKyAgICAgICAgICAgIGlmICghYXJndW1lbnRzLT5kZWNvZGUoQ29y
ZUlQQzo6T3V0KGZyYW1lSUQsIE1JTUVUeXBlLCB1cmwsIGxpc3RlbmVySUQpKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICBkZWNpZGVQb2xpY3lGb3JNSU1FVHlwZShwcm9j
ZXNzKCktPndlYkZyYW1lKGZyYW1lSUQpLCBNSU1FVHlwZSwgdXJsLCBsaXN0ZW5lcklEKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgV2ViUGFnZVByb3h5TWVz
c2FnZTo6V2lsbFN1Ym1pdEZvcm06IHsKKyAgICAgICAgICAgIHVpbnQ2NF90IGZyYW1lSUQ7Cisg
ICAgICAgICAgICB1aW50NjRfdCBzb3VyY2VGcmFtZUlEOworICAgICAgICAgICAgVmVjdG9yPHN0
ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4gPiB0ZXh0RmllbGRWYWx1ZXM7CisgICAgICAgICAgICB1
aW50NjRfdCBsaXN0ZW5lcklEOworCisgICAgICAgICAgICBSZWZQdHI8QVBJT2JqZWN0PiB1c2Vy
RGF0YTsKKyAgICAgICAgICAgIFdlYkNvbnRleHRVc2VyTWVzc2FnZURlY29kZXIgbWVzc2FnZURl
Y29kZXIodXNlckRhdGEsIHBhZ2VOYW1lc3BhY2UoKS0+Y29udGV4dCgpKTsKKworICAgICAgICAg
ICAgaWYgKCFhcmd1bWVudHMtPmRlY29kZShDb3JlSVBDOjpPdXQoZnJhbWVJRCwgc291cmNlRnJh
bWVJRCwgdGV4dEZpZWxkVmFsdWVzLCBsaXN0ZW5lcklELCBtZXNzYWdlRGVjb2RlcikpKQorICAg
ICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgd2lsbFN1Ym1pdEZvcm0ocHJvY2Vz
cygpLT53ZWJGcmFtZShmcmFtZUlEKSwgcHJvY2VzcygpLT53ZWJGcmFtZShzb3VyY2VGcmFtZUlE
KSwgdGV4dEZpZWxkVmFsdWVzLCB1c2VyRGF0YS5nZXQoKSwgbGlzdGVuZXJJRCk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFdlYlBhZ2VQcm94eU1lc3NhZ2U6
OkRpZFJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZTogeworICAgICAgICAgICAgU3RyaW5nIHJlc3Vs
dFN0cmluZzsKKyAgICAgICAgICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQ7CisgICAgICAgICAgICBp
ZiAoIWFyZ3VtZW50cy0+ZGVjb2RlKENvcmVJUEM6Ok91dChyZXN1bHRTdHJpbmcsIGNhbGxiYWNr
SUQpKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBkaWRSdW5KYXZhU2Ny
aXB0SW5NYWluRnJhbWUocmVzdWx0U3RyaW5nLCBjYWxsYmFja0lEKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgV2ViUGFnZVByb3h5TWVzc2FnZTo6RGlkR2V0
UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb246IHsKKyAgICAgICAgICAgIFN0cmluZyBy
ZXN1bHRTdHJpbmc7CisgICAgICAgICAgICB1aW50NjRfdCBjYWxsYmFja0lEOworICAgICAgICAg
ICAgaWYgKCFhcmd1bWVudHMtPmRlY29kZShDb3JlSVBDOjpPdXQocmVzdWx0U3RyaW5nLCBjYWxs
YmFja0lEKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgZGlkR2V0UmVu
ZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24ocmVzdWx0U3RyaW5nLCBjYWxsYmFja0lEKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgV2ViUGFnZVByb3h5
TWVzc2FnZTo6RGlkR2V0U291cmNlRm9yRnJhbWU6IHsKKyAgICAgICAgICAgIFN0cmluZyByZXN1
bHRTdHJpbmc7CisgICAgICAgICAgICB1aW50NjRfdCBjYWxsYmFja0lEOworICAgICAgICAgICAg
aWYgKCFhcmd1bWVudHMtPmRlY29kZShDb3JlSVBDOjpPdXQocmVzdWx0U3RyaW5nLCBjYWxsYmFj
a0lEKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgZGlkR2V0U291cmNl
Rm9yRnJhbWUocmVzdWx0U3RyaW5nLCBjYWxsYmFja0lEKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisgICAgICAgIGNhc2UgV2ViUGFnZVByb3h5TWVzc2FnZTo6U2V0VG9vbFRpcDog
eworICAgICAgICAgICAgU3RyaW5nIHRvb2xUaXA7CisgICAgICAgICAgICBpZiAoIWFyZ3VtZW50
cy0+ZGVjb2RlKHRvb2xUaXApKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
IHNldFRvb2xUaXAodG9vbFRpcCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
ICAgICBjYXNlIFdlYlBhZ2VQcm94eU1lc3NhZ2U6OlNldEN1cnNvcjogeworI2lmIFVTRShMQVpZ
X05BVElWRV9DVVJTT1IpCisgICAgICAgICAgICBDdXJzb3IgY3Vyc29yOworICAgICAgICAgICAg
aWYgKCFhcmd1bWVudHMtPmRlY29kZShjdXJzb3IpKQorICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgIHNldEN1cnNvcihjdXJzb3IpOworI2VuZGlmCisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFdlYlBhZ2VQcm94eU1lc3NhZ2U6OlNob3dQYWdl
OiB7CisgICAgICAgICAgICBzaG93UGFnZSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKyAgICAgICAgY2FzZSBXZWJQYWdlUHJveHlNZXNzYWdlOjpDbG9zZVBhZ2U6IHsKKyAgICAg
ICAgICAgIGNsb3NlUGFnZSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAg
ICAgY2FzZSBXZWJQYWdlUHJveHlNZXNzYWdlOjpCYWNrRm9yd2FyZEFkZEl0ZW06IHsKKyAgICAg
ICAgICAgIHVpbnQ2NF90IGl0ZW1JRDsKKyAgICAgICAgICAgIGlmICghYXJndW1lbnRzLT5kZWNv
ZGUoQ29yZUlQQzo6T3V0KGl0ZW1JRCkpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgIGFkZEl0ZW1Ub0JhY2tGb3J3YXJkTGlzdChwcm9jZXNzKCktPndlYkJhY2tGb3J3YXJk
SXRlbShpdGVtSUQpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNh
c2UgV2ViUGFnZVByb3h5TWVzc2FnZTo6QmFja0ZvcndhcmRHb1RvSXRlbTogeworICAgICAgICAg
ICAgdWludDY0X3QgaXRlbUlEOworICAgICAgICAgICAgaWYgKCFhcmd1bWVudHMtPmRlY29kZShD
b3JlSVBDOjpPdXQoaXRlbUlEKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgZ29Ub0l0ZW1JbkJhY2tGb3J3YXJkTGlzdChwcm9jZXNzKCktPndlYkJhY2tGb3J3YXJkSXRl
bShpdGVtSUQpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2Ug
V2ViUGFnZVByb3h5TWVzc2FnZTo6Q29udGVudHNTaXplQ2hhbmdlZDogeworICAgICAgICAgICAg
SW50U2l6ZSBzaXplOworICAgICAgICAgICAgdWludDY0X3QgZnJhbWVJRDsKKyAgICAgICAgICAg
IGlmICghYXJndW1lbnRzLT5kZWNvZGUoQ29yZUlQQzo6T3V0KGZyYW1lSUQsIHNpemUpKSkKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBjb250ZW50c1NpemVDaGFuZ2VkKHBy
b2Nlc3MoKS0+d2ViRnJhbWUoZnJhbWVJRCksIHNpemUpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKyAgICAgICAgY2FzZSBXZWJQYWdlUHJveHlNZXNzYWdlOjpTZXRTdGF0dXNUZXh0
OiB7CisgICAgICAgICAgICBTdHJpbmcgdGV4dDsKKyAgICAgICAgICAgIGlmICghYXJndW1lbnRz
LT5kZWNvZGUoQ29yZUlQQzo6T3V0KHRleHQpKSkKKyAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICBzZXRTdGF0dXNUZXh0KHRleHQpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKyAgICAgICAgY2FzZSBXZWJQYWdlUHJveHlNZXNzYWdlOjpSZWdpc3RlckVkaXRDb21t
YW5kRm9yVW5kbzogeworICAgICAgICAgICAgdWludDY0X3QgY29tbWFuZElEOworICAgICAgICAg
ICAgdWludDMyX3QgZWRpdEFjdGlvbjsKKyAgICAgICAgICAgIGlmICghYXJndW1lbnRzLT5kZWNv
ZGUoQ29yZUlQQzo6T3V0KGNvbW1hbmRJRCwgZWRpdEFjdGlvbikpKQorICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIHJlZ2lzdGVyRWRpdENvbW1h
bmRGb3JVbmRvKGNvbW1hbmRJRCwgc3RhdGljX2Nhc3Q8RWRpdEFjdGlvbj4oZWRpdEFjdGlvbikp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBXZWJQYWdlUHJv
eHlNZXNzYWdlOjpDbGVhckFsbEVkaXRDb21tYW5kczoKKyAgICAgICAgICAgIGNsZWFyQWxsRWRp
dENvbW1hbmRzKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBXZWJQYWdlUHJv
eHlNZXNzYWdlOjpEaWRWYWxpZGF0ZU1lbnVJdGVtOiB7CisgICAgICAgICAgICBpbnQgc3RhdGU7
CisgICAgICAgICAgICBib29sIGlzRW5hYmxlZDsKKyAgICAgICAgICAgIFN0cmluZyBjb21tYW5k
TmFtZTsKKyAgICAgICAgICAgIGlmICghYXJndW1lbnRzLT5kZWNvZGUoQ29yZUlQQzo6T3V0KGNv
bW1hbmROYW1lLCBpc0VuYWJsZWQsIHN0YXRlKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgbV9wYWdlQ2xpZW50LT5zZXRFZGl0Q29tbWFuZFN0YXRlKGNvbW1hbmROYW1l
LCBpc0VuYWJsZWQsIHN0YXRlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
ICAgIGNhc2UgV2ViUGFnZVByb3h5TWVzc2FnZTo6TW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQ6IHsK
KyAgICAgICAgICAgIHVpbnQzMl90IG1vZGlmaWVyczsKKyAgICAgICAgICAgIFJlZlB0cjxBUElP
YmplY3Q+IHVzZXJEYXRhOworICAgICAgICAgICAgV2ViQ29udGV4dFVzZXJNZXNzYWdlRGVjb2Rl
ciBtZXNzYWdlRGVjb2Rlcih1c2VyRGF0YSwgcGFnZU5hbWVzcGFjZSgpLT5jb250ZXh0KCkpOwor
CisgICAgICAgICAgICBpZiAoIWFyZ3VtZW50cy0+ZGVjb2RlKENvcmVJUEM6Ok91dChtb2RpZmll
cnMsIG1lc3NhZ2VEZWNvZGVyKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
ICAgICBtb3VzZURpZE1vdmVPdmVyRWxlbWVudChzdGF0aWNfY2FzdDxXZWJFdmVudDo6TW9kaWZp
ZXJzPihtb2RpZmllcnMpLCB1c2VyRGF0YS5nZXQoKSk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgICAgICBicmVhazsKKyAgICB9CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpk
aWRSZWNlaXZlU3luY01lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgQ29y
ZUlQQzo6TWVzc2FnZUlEIG1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBhcmd1
bWVudHMsIENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciogcmVwbHkpCkBAIC01NTEsOCArODkyLDEw
NSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKENvcmVJUEM6OkNv
bm5lY3Rpb24qIGNvbm5lY3Rpb24sIENvcmVJUAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgLy8gRklYTUU6IERvIHNvbWV0aGluZyB3aXRoIHJlcGx5LgotICAgIGRpZFJlY2VpdmVTeW5j
V2ViUGFnZVByb3h5TWVzc2FnZShjb25uZWN0aW9uLCBtZXNzYWdlSUQsIGFyZ3VtZW50cywgcmVw
bHkpOworICAgIHN3aXRjaCAobWVzc2FnZUlELmdldDxXZWJQYWdlUHJveHlNZXNzYWdlOjpLaW5k
PigpKSB7CisgICAgICAgIGNhc2UgV2ViUGFnZVByb3h5TWVzc2FnZTo6Q3JlYXRlTmV3UGFnZTog
eworICAgICAgICAgICAgUmVmUHRyPFdlYlBhZ2VQcm94eT4gbmV3UGFnZSA9IGNyZWF0ZU5ld1Bh
Z2UoKTsKKyAgICAgICAgICAgIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgcGFyYW1ldGVyczsK
KyAgICAgICAgICAgIGlmIChuZXdQYWdlKSB7CisgICAgICAgICAgICAgICAgLy8gRklYTUU6IFBh
c3MgdGhlIHJlYWwgc2l6ZS4KKyAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzID0gbmV3UGFnZS0+
Y3JlYXRpb25QYXJhbWV0ZXJzKEludFNpemUoMTAwLCAxMDApKTsKKyAgICAgICAgICAgICAgICBy
ZXBseS0+ZW5jb2RlKENvcmVJUEM6OkluKG5ld1BhZ2UtPnBhZ2VJRCgpLCBwYXJhbWV0ZXJzKSk7
CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHJlcGx5LT5lbmNvZGUoQ29y
ZUlQQzo6SW4oc3RhdGljX2Nhc3Q8dWludDY0X3Q+KDApLCBwYXJhbWV0ZXJzKSk7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFdlYlBh
Z2VQcm94eU1lc3NhZ2U6OlJ1bkphdmFTY3JpcHRBbGVydDogeworICAgICAgICAgICAgdWludDY0
X3QgZnJhbWVJRDsKKyAgICAgICAgICAgIFN0cmluZyBtZXNzYWdlOworICAgICAgICAgICAgaWYg
KCFhcmd1bWVudHMtPmRlY29kZShDb3JlSVBDOjpPdXQoZnJhbWVJRCwgbWVzc2FnZSkpKQorICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRBbGVydChwcm9j
ZXNzKCktPndlYkZyYW1lKGZyYW1lSUQpLCBtZXNzYWdlKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisgICAgICAgIGNhc2UgV2ViUGFnZVByb3h5TWVzc2FnZTo6UnVuSmF2YVNjcmlw
dENvbmZpcm06IHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgcHJvYmFibHkgZW5j
b2RlIHNvbWV0aGluZyBpbiB0aGUgY2FzZSB0aGF0IHRoZSBhcmd1bWVudHMgZG8gbm90IGRlY29k
ZSBjb3JyZWN0bHkuCisgICAgICAgICAgICB1aW50NjRfdCBmcmFtZUlEOworICAgICAgICAgICAg
U3RyaW5nIG1lc3NhZ2U7CisgICAgICAgICAgICBpZiAoIWFyZ3VtZW50cy0+ZGVjb2RlKENvcmVJ
UEM6Ok91dChmcmFtZUlELCBtZXNzYWdlKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgICAgICBib29sIHJlc3VsdCA9IHJ1bkphdmFTY3JpcHRDb25maXJtKHByb2Nlc3MoKS0+
d2ViRnJhbWUoZnJhbWVJRCksIG1lc3NhZ2UpOworICAgICAgICAgICAgcmVwbHktPmVuY29kZShD
b3JlSVBDOjpJbihyZXN1bHQpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
ICAgIGNhc2UgV2ViUGFnZVByb3h5TWVzc2FnZTo6UnVuSmF2YVNjcmlwdFByb21wdDogeworICAg
ICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBwcm9iYWJseSBlbmNvZGUgc29tZXRoaW5nIGlu
IHRoZSBjYXNlIHRoYXQgdGhlIGFyZ3VtZW50cyBkbyBub3QgZGVjb2RlIGNvcnJlY3RseS4KKyAg
ICAgICAgICAgIHVpbnQ2NF90IGZyYW1lSUQ7CisgICAgICAgICAgICBTdHJpbmcgbWVzc2FnZTsK
KyAgICAgICAgICAgIFN0cmluZyBkZWZhdWx0VmFsdWU7CisgICAgICAgICAgICBpZiAoIWFyZ3Vt
ZW50cy0+ZGVjb2RlKENvcmVJUEM6Ok91dChmcmFtZUlELCBtZXNzYWdlLCBkZWZhdWx0VmFsdWUp
KSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIFN0cmluZyByZXN1bHQg
PSBydW5KYXZhU2NyaXB0UHJvbXB0KHByb2Nlc3MoKS0+d2ViRnJhbWUoZnJhbWVJRCksIG1lc3Nh
Z2UsIGRlZmF1bHRWYWx1ZSk7CisgICAgICAgICAgICByZXBseS0+ZW5jb2RlKENvcmVJUEM6Oklu
KHJlc3VsdCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBjYXNl
IFdlYlBhZ2VQcm94eU1lc3NhZ2U6OkJhY2tGb3J3YXJkQmFja0l0ZW06IHsKKyAgICAgICAgICAg
IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGJhY2tJdGVtID0gbV9iYWNrRm9yd2FyZExpc3QtPmJh
Y2tJdGVtKCk7CisgICAgICAgICAgICB1aW50NjRfdCBiYWNrSXRlbUlEID0gYmFja0l0ZW0gPyBi
YWNrSXRlbS0+aXRlbUlEKCkgOiAwOworICAgICAgICAgICAgcmVwbHktPmVuY29kZShDb3JlSVBD
OjpJbihiYWNrSXRlbUlEKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAg
ICBjYXNlIFdlYlBhZ2VQcm94eU1lc3NhZ2U6OkJhY2tGb3J3YXJkQ3VycmVudEl0ZW06IHsKKyAg
ICAgICAgICAgIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGN1cnJlbnRJdGVtID0gbV9iYWNrRm9y
d2FyZExpc3QtPmN1cnJlbnRJdGVtKCk7CisgICAgICAgICAgICB1aW50NjRfdCBjdXJyZW50SXRl
bUlEID0gY3VycmVudEl0ZW0gPyBjdXJyZW50SXRlbS0+aXRlbUlEKCkgOiAwOworICAgICAgICAg
ICAgcmVwbHktPmVuY29kZShDb3JlSVBDOjpJbihjdXJyZW50SXRlbUlEKSk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFdlYlBhZ2VQcm94eU1lc3NhZ2U6OkJh
Y2tGb3J3YXJkRm9yd2FyZEl0ZW06IHsKKyAgICAgICAgICAgIFdlYkJhY2tGb3J3YXJkTGlzdEl0
ZW0qIGZvcndhcmRJdGVtID0gbV9iYWNrRm9yd2FyZExpc3QtPmZvcndhcmRJdGVtKCk7CisgICAg
ICAgICAgICB1aW50NjRfdCBmb3J3YXJkSXRlbUlEID0gZm9yd2FyZEl0ZW0gPyBmb3J3YXJkSXRl
bS0+aXRlbUlEKCkgOiAwOworICAgICAgICAgICAgcmVwbHktPmVuY29kZShDb3JlSVBDOjpJbihm
b3J3YXJkSXRlbUlEKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBj
YXNlIFdlYlBhZ2VQcm94eU1lc3NhZ2U6OkJhY2tGb3J3YXJkSXRlbUF0SW5kZXg6IHsKKyAgICAg
ICAgICAgIGludCBpdGVtSW5kZXg7CisgICAgICAgICAgICBpZiAoIWFyZ3VtZW50cy0+ZGVjb2Rl
KENvcmVJUEM6Ok91dChpdGVtSW5kZXgpKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgICAgIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGl0ZW0gPSBtX2JhY2tGb3J3YXJkTGlz
dC0+aXRlbUF0SW5kZXgoaXRlbUluZGV4KTsKKyAgICAgICAgICAgIHVpbnQ2NF90IGl0ZW1JRCA9
IGl0ZW0gPyBpdGVtLT5pdGVtSUQoKSA6IDA7CisgICAgICAgICAgICByZXBseS0+ZW5jb2RlKENv
cmVJUEM6OkluKGl0ZW1JRCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAg
ICAgY2FzZSBXZWJQYWdlUHJveHlNZXNzYWdlOjpCYWNrRm9yd2FyZEJhY2tMaXN0Q291bnQ6IHsK
KyAgICAgICAgICAgIGludCBiYWNrTGlzdENvdW50ID0gbV9iYWNrRm9yd2FyZExpc3QtPmJhY2tM
aXN0Q291bnQoKTsKKyAgICAgICAgICAgIHJlcGx5LT5lbmNvZGUoQ29yZUlQQzo6SW4oYmFja0xp
c3RDb3VudCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBX
ZWJQYWdlUHJveHlNZXNzYWdlOjpCYWNrRm9yd2FyZEZvcndhcmRMaXN0Q291bnQ6IHsKKyAgICAg
ICAgICAgIGludCBmb3J3YXJkTGlzdENvdW50ID0gbV9iYWNrRm9yd2FyZExpc3QtPmZvcndhcmRM
aXN0Q291bnQoKTsKKyAgICAgICAgICAgIHJlcGx5LT5lbmNvZGUoQ29yZUlQQzo6SW4oZm9yd2Fy
ZExpc3RDb3VudCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyNpZiBVU0UoQUND
RUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAgICAgIGNhc2UgV2ViUGFnZVByb3h5TWVzc2FnZTo6
RGlkQ2hhbmdlQWNjZWxlcmF0ZWRDb21wb3NpdGluZzogeworICAgICAgICAgICAgYm9vbCBjb21w
b3NpdGluZzsKKyAgICAgICAgICAgIGlmICghYXJndW1lbnRzLT5kZWNvZGUoQ29yZUlQQzo6T3V0
KGNvbXBvc2l0aW5nKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBk
aWRDaGFuZ2VBY2NlbGVyYXRlZENvbXBvc2l0aW5nKGNvbXBvc2l0aW5nKTsKKyAgICAgICAgICAg
IHJlcGx5LT5lbmNvZGUoZHJhd2luZ0FyZWEoKS0+aW5mbygpKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorCisg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgIH0KIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZENyZWF0ZU1h
aW5GcmFtZSh1aW50NjRfdCBmcmFtZUlEKQpAQCAtNTkwLDE3OSArMTAyOCw5MSBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6ZGlkRmluaXNoUHJvZ3Jlc3MoKQogICAgIG1fbG9hZGVyQ2xpZW50LmRpZEZp
bmlzaFByb2dyZXNzKHRoaXMpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGlkU3RhcnRQcm92
aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIHVybCwg
Q29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBhcmd1bWVudHMpCit2b2lkIFdlYlBhZ2VQcm94eTo6
ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJGcmFtZVByb3h5KiBmcmFtZSwgY29u
c3QgU3RyaW5nJiB1cmwsIEFQSU9iamVjdCogdXNlckRhdGEpCiB7Ci0gICAgUmVmUHRyPEFQSU9i
amVjdD4gdXNlckRhdGE7Ci0gICAgV2ViQ29udGV4dFVzZXJNZXNzYWdlRGVjb2RlciBtZXNzYWdl
RGVjb2Rlcih1c2VyRGF0YSwgcGFnZU5hbWVzcGFjZSgpLT5jb250ZXh0KCkpOwotICAgIGlmICgh
YXJndW1lbnRzLT5kZWNvZGUobWVzc2FnZURlY29kZXIpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9IHByb2Nlc3MoKS0+d2ViRnJhbWUoZnJhbWVJRCk7Ci0K
ICAgICBmcmFtZS0+ZGlkU3RhcnRQcm92aXNpb25hbExvYWQodXJsKTsKLSAgICBtX2xvYWRlckNs
aWVudC5kaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHRoaXMsIGZyYW1lLCB1c2VyRGF0
YS5nZXQoKSk7CisgICAgbV9sb2FkZXJDbGllbnQuZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JG
cmFtZSh0aGlzLCBmcmFtZSwgdXNlckRhdGEpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGlk
UmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0X3Qg
ZnJhbWVJRCwgY29uc3QgU3RyaW5nJiB1cmwsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogYXJn
dW1lbnRzKQordm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclBy
b3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBjb25zdCBTdHJpbmcm
IHVybCwgQVBJT2JqZWN0KiB1c2VyRGF0YSkKIHsKLSAgICBSZWZQdHI8QVBJT2JqZWN0PiB1c2Vy
RGF0YTsKLSAgICBXZWJDb250ZXh0VXNlck1lc3NhZ2VEZWNvZGVyIG1lc3NhZ2VEZWNvZGVyKHVz
ZXJEYXRhLCBwYWdlTmFtZXNwYWNlKCktPmNvbnRleHQoKSk7Ci0gICAgaWYgKCFhcmd1bWVudHMt
PmRlY29kZShtZXNzYWdlRGVjb2RlcikpCi0gICAgICAgIHJldHVybjsKLQotICAgIFdlYkZyYW1l
UHJveHkqIGZyYW1lID0gcHJvY2VzcygpLT53ZWJGcmFtZShmcmFtZUlEKTsKLQogICAgIGZyYW1l
LT5kaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQodXJsKTsKLSAgICBt
X2xvYWRlckNsaWVudC5kaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRG
b3JGcmFtZSh0aGlzLCBmcmFtZSwgdXNlckRhdGEuZ2V0KCkpOworICAgIG1fbG9hZGVyQ2xpZW50
LmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHRoaXMs
IGZyYW1lLCB1c2VyRGF0YSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkaWRGYWlsUHJvdmlz
aW9uYWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNv
ZGVyKiBhcmd1bWVudHMpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9h
ZEZvckZyYW1lKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBBUElPYmplY3QqIHVzZXJEYXRhKQogewot
ICAgIFJlZlB0cjxBUElPYmplY3Q+IHVzZXJEYXRhOwotICAgIFdlYkNvbnRleHRVc2VyTWVzc2Fn
ZURlY29kZXIgbWVzc2FnZURlY29kZXIodXNlckRhdGEsIHBhZ2VOYW1lc3BhY2UoKS0+Y29udGV4
dCgpKTsKLSAgICBpZiAoIWFyZ3VtZW50cy0+ZGVjb2RlKG1lc3NhZ2VEZWNvZGVyKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBwcm9jZXNzKCktPndlYkZy
YW1lKGZyYW1lSUQpOwotCi0gICAgbV9sb2FkZXJDbGllbnQuZGlkRmFpbFByb3Zpc2lvbmFsTG9h
ZFdpdGhFcnJvckZvckZyYW1lKHRoaXMsIGZyYW1lLCB1c2VyRGF0YS5nZXQoKSk7CisgICAgbV9s
b2FkZXJDbGllbnQuZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvckZvckZyYW1lKHRoaXMs
IGZyYW1lLCB1c2VyRGF0YSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkaWRDb21taXRMb2Fk
Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3Qg
UGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgQ29yZUlQQzo6QXJndW1l
bnREZWNvZGVyKiBhcmd1bWVudHMpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9hZEZv
ckZyYW1lKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25z
dCBQbGF0Zm9ybUNlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBBUElPYmplY3QqIHVz
ZXJEYXRhKQogewotICAgIFJlZlB0cjxBUElPYmplY3Q+IHVzZXJEYXRhOwotICAgIFdlYkNvbnRl
eHRVc2VyTWVzc2FnZURlY29kZXIgbWVzc2FnZURlY29kZXIodXNlckRhdGEsIHBhZ2VOYW1lc3Bh
Y2UoKS0+Y29udGV4dCgpKTsKLSAgICBpZiAoIWFyZ3VtZW50cy0+ZGVjb2RlKG1lc3NhZ2VEZWNv
ZGVyKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBwcm9j
ZXNzKCktPndlYkZyYW1lKGZyYW1lSUQpOwotCiAgICAgZnJhbWUtPnNldE1JTUVUeXBlKG1pbWVU
eXBlKTsKICAgICBmcmFtZS0+c2V0Q2VydGlmaWNhdGVJbmZvKFdlYkNlcnRpZmljYXRlSW5mbzo6
Y3JlYXRlKGNlcnRpZmljYXRlSW5mbykpOwogICAgIGZyYW1lLT5kaWRDb21taXRMb2FkKCk7Ci0g
ICAgbV9sb2FkZXJDbGllbnQuZGlkQ29tbWl0TG9hZEZvckZyYW1lKHRoaXMsIGZyYW1lLCB1c2Vy
RGF0YS5nZXQoKSk7CisgICAgbV9sb2FkZXJDbGllbnQuZGlkQ29tbWl0TG9hZEZvckZyYW1lKHRo
aXMsIGZyYW1lLCB1c2VyRGF0YSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkaWRGaW5pc2hE
b2N1bWVudExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBDb3JlSVBDOjpBcmd1bWVudERl
Y29kZXIqIGFyZ3VtZW50cykKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaWRGaW5pc2hEb2N1bWVudExv
YWRGb3JGcmFtZShXZWJGcmFtZVByb3h5KiBmcmFtZSwgQVBJT2JqZWN0KiB1c2VyRGF0YSkKIHsK
LSAgICBSZWZQdHI8QVBJT2JqZWN0PiB1c2VyRGF0YTsKLSAgICBXZWJDb250ZXh0VXNlck1lc3Nh
Z2VEZWNvZGVyIG1lc3NhZ2VEZWNvZGVyKHVzZXJEYXRhLCBwYWdlTmFtZXNwYWNlKCktPmNvbnRl
eHQoKSk7Ci0gICAgaWYgKCFhcmd1bWVudHMtPmRlY29kZShtZXNzYWdlRGVjb2RlcikpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gcHJvY2VzcygpLT53ZWJG
cmFtZShmcmFtZUlEKTsKLQotICAgIG1fbG9hZGVyQ2xpZW50LmRpZEZpbmlzaERvY3VtZW50TG9h
ZEZvckZyYW1lKHRoaXMsIGZyYW1lLCB1c2VyRGF0YS5nZXQoKSk7CisgICAgbV9sb2FkZXJDbGll
bnQuZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUodGhpcywgZnJhbWUsIHVzZXJEYXRhKTsK
IH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZpbmlzaExvYWRGb3JGcmFtZSh1aW50NjRfdCBm
cmFtZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGFyZ3VtZW50cykKK3ZvaWQgV2ViUGFn
ZVByb3h5OjpkaWRGaW5pc2hMb2FkRm9yRnJhbWUoV2ViRnJhbWVQcm94eSogZnJhbWUsIEFQSU9i
amVjdCogdXNlckRhdGEpCiB7Ci0gICAgUmVmUHRyPEFQSU9iamVjdD4gdXNlckRhdGE7Ci0gICAg
V2ViQ29udGV4dFVzZXJNZXNzYWdlRGVjb2RlciBtZXNzYWdlRGVjb2Rlcih1c2VyRGF0YSwgcGFn
ZU5hbWVzcGFjZSgpLT5jb250ZXh0KCkpOwotICAgIGlmICghYXJndW1lbnRzLT5kZWNvZGUobWVz
c2FnZURlY29kZXIpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBXZWJGcmFtZVByb3h5KiBmcmFt
ZSA9IHByb2Nlc3MoKS0+d2ViRnJhbWUoZnJhbWVJRCk7Ci0KICAgICBmcmFtZS0+ZGlkRmluaXNo
TG9hZCgpOwotICAgIG1fbG9hZGVyQ2xpZW50LmRpZEZpbmlzaExvYWRGb3JGcmFtZSh0aGlzLCBm
cmFtZSwgdXNlckRhdGEuZ2V0KCkpOworICAgIG1fbG9hZGVyQ2xpZW50LmRpZEZpbmlzaExvYWRG
b3JGcmFtZSh0aGlzLCBmcmFtZSwgdXNlckRhdGEpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6
ZGlkRmFpbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBDb3JlSVBDOjpBcmd1bWVudERl
Y29kZXIqIGFyZ3VtZW50cykKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaWRGYWlsTG9hZEZvckZyYW1l
KFdlYkZyYW1lUHJveHkqIGZyYW1lLCBBUElPYmplY3QqIHVzZXJEYXRhKQogewotICAgIFJlZlB0
cjxBUElPYmplY3Q+IHVzZXJEYXRhOwotICAgIFdlYkNvbnRleHRVc2VyTWVzc2FnZURlY29kZXIg
bWVzc2FnZURlY29kZXIodXNlckRhdGEsIHBhZ2VOYW1lc3BhY2UoKS0+Y29udGV4dCgpKTsKLSAg
ICBpZiAoIWFyZ3VtZW50cy0+ZGVjb2RlKG1lc3NhZ2VEZWNvZGVyKSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBwcm9jZXNzKCktPndlYkZyYW1lKGZyYW1l
SUQpOwotCi0gICAgbV9sb2FkZXJDbGllbnQuZGlkRmFpbExvYWRXaXRoRXJyb3JGb3JGcmFtZSh0
aGlzLCBmcmFtZSwgdXNlckRhdGEuZ2V0KCkpOworICAgIG1fbG9hZGVyQ2xpZW50LmRpZEZhaWxM
b2FkV2l0aEVycm9yRm9yRnJhbWUodGhpcywgZnJhbWUsIHVzZXJEYXRhKTsKIH0KIAotdm9pZCBX
ZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVUaXRsZUZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNv
bnN0IFN0cmluZyYgdGl0bGUsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogYXJndW1lbnRzKQor
dm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVUaXRsZUZvckZyYW1lKFdlYkZyYW1lUHJveHkq
IGZyYW1lLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBBUElPYmplY3QqIHVzZXJEYXRhKQogewotICAg
IFJlZlB0cjxBUElPYmplY3Q+IHVzZXJEYXRhOwotICAgIFdlYkNvbnRleHRVc2VyTWVzc2FnZURl
Y29kZXIgbWVzc2FnZURlY29kZXIodXNlckRhdGEsIHBhZ2VOYW1lc3BhY2UoKS0+Y29udGV4dCgp
KTsKLSAgICBpZiAoIWFyZ3VtZW50cy0+ZGVjb2RlKG1lc3NhZ2VEZWNvZGVyKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBwcm9jZXNzKCktPndlYkZyYW1l
KGZyYW1lSUQpOwotCiAgICAgZnJhbWUtPmRpZFJlY2VpdmVUaXRsZSh0aXRsZSk7CiAKICAgICAv
LyBDYWNoZSB0aGUgdGl0bGUgZm9yIHRoZSBtYWluIGZyYW1lIGluIHRoZSBwYWdlLgogICAgIGlm
IChmcmFtZSA9PSBtX21haW5GcmFtZSkKICAgICAgICAgbV9wYWdlVGl0bGUgPSB0aXRsZTsKIAot
ICAgIG1fbG9hZGVyQ2xpZW50LmRpZFJlY2VpdmVUaXRsZUZvckZyYW1lKHRoaXMsIHRpdGxlLCBm
cmFtZSwgdXNlckRhdGEuZ2V0KCkpOworICAgIG1fbG9hZGVyQ2xpZW50LmRpZFJlY2VpdmVUaXRs
ZUZvckZyYW1lKHRoaXMsIHRpdGxlLCBmcmFtZSwgdXNlckRhdGEpOwogfQogCi12b2lkIFdlYlBh
Z2VQcm94eTo6ZGlkRmlyc3RMYXlvdXRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBDb3JlSVBD
OjpBcmd1bWVudERlY29kZXIqIGFyZ3VtZW50cykKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaWRGaXJz
dExheW91dEZvckZyYW1lKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBBUElPYmplY3QqIHVzZXJEYXRh
KQogewotICAgIFJlZlB0cjxBUElPYmplY3Q+IHVzZXJEYXRhOwotICAgIFdlYkNvbnRleHRVc2Vy
TWVzc2FnZURlY29kZXIgbWVzc2FnZURlY29kZXIodXNlckRhdGEsIHBhZ2VOYW1lc3BhY2UoKS0+
Y29udGV4dCgpKTsKLSAgICBpZiAoIWFyZ3VtZW50cy0+ZGVjb2RlKG1lc3NhZ2VEZWNvZGVyKSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBwcm9jZXNzKCkt
PndlYkZyYW1lKGZyYW1lSUQpOwotCi0gICAgbV9sb2FkZXJDbGllbnQuZGlkRmlyc3RMYXlvdXRG
b3JGcmFtZSh0aGlzLCBmcmFtZSwgdXNlckRhdGEuZ2V0KCkpOworICAgIG1fbG9hZGVyQ2xpZW50
LmRpZEZpcnN0TGF5b3V0Rm9yRnJhbWUodGhpcywgZnJhbWUsIHVzZXJEYXRhKTsKIH0KIAotdm9p
ZCBXZWJQYWdlUHJveHk6OmRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckZyYW1lKHVp
bnQ2NF90IGZyYW1lSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogYXJndW1lbnRzKQordm9p
ZCBXZWJQYWdlUHJveHk6OmRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckZyYW1lKFdl
YkZyYW1lUHJveHkqIGZyYW1lLCBBUElPYmplY3QqIHVzZXJEYXRhKQogewotICAgIFJlZlB0cjxB
UElPYmplY3Q+IHVzZXJEYXRhOwotICAgIFdlYkNvbnRleHRVc2VyTWVzc2FnZURlY29kZXIgbWVz
c2FnZURlY29kZXIodXNlckRhdGEsIHBhZ2VOYW1lc3BhY2UoKS0+Y29udGV4dCgpKTsKLSAgICBp
ZiAoIWFyZ3VtZW50cy0+ZGVjb2RlKG1lc3NhZ2VEZWNvZGVyKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBwcm9jZXNzKCktPndlYkZyYW1lKGZyYW1lSUQp
OwotCi0gICAgbV9sb2FkZXJDbGllbnQuZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9y
RnJhbWUodGhpcywgZnJhbWUsIHVzZXJEYXRhLmdldCgpKTsKKyAgICBtX2xvYWRlckNsaWVudC5k
aWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZSh0aGlzLCBmcmFtZSwgdXNlckRh
dGEpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVtb3ZlRnJhbWVGcm9tSGllcmFyY2h5
KHVpbnQ2NF90IGZyYW1lSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogYXJndW1lbnRzKQor
dm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlbW92ZUZyYW1lRnJvbUhpZXJhcmNoeShXZWJGcmFtZVBy
b3h5KiBmcmFtZSwgQVBJT2JqZWN0KiB1c2VyRGF0YSkKIHsKLSAgICBSZWZQdHI8QVBJT2JqZWN0
PiB1c2VyRGF0YTsKLSAgICBXZWJDb250ZXh0VXNlck1lc3NhZ2VEZWNvZGVyIG1lc3NhZ2VEZWNv
ZGVyKHVzZXJEYXRhLCBwYWdlTmFtZXNwYWNlKCktPmNvbnRleHQoKSk7Ci0gICAgaWYgKCFhcmd1
bWVudHMtPmRlY29kZShtZXNzYWdlRGVjb2RlcikpCi0gICAgICAgIHJldHVybjsKLQotICAgIFdl
YkZyYW1lUHJveHkqIGZyYW1lID0gcHJvY2VzcygpLT53ZWJGcmFtZShmcmFtZUlEKTsKLQotICAg
IG1fbG9hZGVyQ2xpZW50LmRpZFJlbW92ZUZyYW1lRnJvbUhpZXJhcmNoeSh0aGlzLCBmcmFtZSwg
dXNlckRhdGEuZ2V0KCkpOworICAgIG1fbG9hZGVyQ2xpZW50LmRpZFJlbW92ZUZyYW1lRnJvbUhp
ZXJhcmNoeSh0aGlzLCBmcmFtZSwgdXNlckRhdGEpOwogfQogCiAvLyBQb2xpY3lDbGllbnQKIAot
dm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24odWludDY0
X3QgZnJhbWVJRCwgdWludDMyX3Qgb3BhcXVlTmF2aWdhdGlvblR5cGUsIHVpbnQzMl90IG9wYXF1
ZU1vZGlmaWVycywgaW50MzJfdCBvcGFxdWVNb3VzZUJ1dHRvbiwgY29uc3QgU3RyaW5nJiB1cmws
IHVpbnQ2NF90IGxpc3RlbmVySUQpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbihXZWJGcmFtZVByb3h5KiBmcmFtZSwgTmF2aWdhdGlvblR5cGUgbmF2
aWdhdGlvblR5cGUsIFdlYkV2ZW50OjpNb2RpZmllcnMgbW9kaWZpZXJzLCBXZWJNb3VzZUV2ZW50
OjpCdXR0b24gbW91c2VCdXR0b24sIGNvbnN0IFN0cmluZyYgdXJsLCB1aW50NjRfdCBsaXN0ZW5l
cklEKQogewotICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gcHJvY2VzcygpLT53ZWJGcmFtZShm
cmFtZUlEKTsKLSAgICBOYXZpZ2F0aW9uVHlwZSBuYXZpZ2F0aW9uVHlwZSA9IHN0YXRpY19jYXN0
PE5hdmlnYXRpb25UeXBlPihvcGFxdWVOYXZpZ2F0aW9uVHlwZSk7Ci0gICAgV2ViRXZlbnQ6Ok1v
ZGlmaWVycyBtb2RpZmllcnMgPSBzdGF0aWNfY2FzdDxXZWJFdmVudDo6TW9kaWZpZXJzPihvcGFx
dWVNb2RpZmllcnMpOwotICAgIFdlYk1vdXNlRXZlbnQ6OkJ1dHRvbiBtb3VzZUJ1dHRvbiA9IHN0
YXRpY19jYXN0PFdlYk1vdXNlRXZlbnQ6OkJ1dHRvbj4ob3BhcXVlTW91c2VCdXR0b24pOwotICAg
IAogICAgIFJlZlB0cjxXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk+IGxpc3RlbmVyID0gZnJh
bWUtPnNldFVwUG9saWN5TGlzdGVuZXJQcm94eShsaXN0ZW5lcklEKTsKICAgICBpZiAoIW1fcG9s
aWN5Q2xpZW50LmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24odGhpcywgbmF2aWdhdGlv
blR5cGUsIG1vZGlmaWVycywgbW91c2VCdXR0b24sIHVybCwgZnJhbWUsIGxpc3RlbmVyLmdldCgp
KSkKICAgICAgICAgbGlzdGVuZXItPnVzZSgpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGVj
aWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQzMl90IG9w
YXF1ZU5hdmlnYXRpb25UeXBlLCB1aW50MzJfdCBvcGFxdWVNb2RpZmllcnMsIGludDMyX3Qgb3Bh
cXVlTW91c2VCdXR0b24sIGNvbnN0IFN0cmluZyYgdXJsLCB1aW50NjRfdCBsaXN0ZW5lcklEKQor
dm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihXZWJGcmFt
ZVByb3h5KiBmcmFtZSwgTmF2aWdhdGlvblR5cGUgbmF2aWdhdGlvblR5cGUsIFdlYkV2ZW50OjpN
b2RpZmllcnMgbW9kaWZpZXJzLCBXZWJNb3VzZUV2ZW50OjpCdXR0b24gbW91c2VCdXR0b24sIGNv
bnN0IFN0cmluZyYgdXJsLCB1aW50NjRfdCBsaXN0ZW5lcklEKQogewotICAgIFdlYkZyYW1lUHJv
eHkqIGZyYW1lID0gcHJvY2VzcygpLT53ZWJGcmFtZShmcmFtZUlEKTsKLSAgICBOYXZpZ2F0aW9u
VHlwZSBuYXZpZ2F0aW9uVHlwZSA9IHN0YXRpY19jYXN0PE5hdmlnYXRpb25UeXBlPihvcGFxdWVO
YXZpZ2F0aW9uVHlwZSk7Ci0gICAgV2ViRXZlbnQ6Ok1vZGlmaWVycyBtb2RpZmllcnMgPSBzdGF0
aWNfY2FzdDxXZWJFdmVudDo6TW9kaWZpZXJzPihvcGFxdWVNb2RpZmllcnMpOwotICAgIFdlYk1v
dXNlRXZlbnQ6OkJ1dHRvbiBtb3VzZUJ1dHRvbiA9IHN0YXRpY19jYXN0PFdlYk1vdXNlRXZlbnQ6
OkJ1dHRvbj4ob3BhcXVlTW91c2VCdXR0b24pOwotCiAgICAgUmVmUHRyPFdlYkZyYW1lUG9saWN5
TGlzdGVuZXJQcm94eT4gbGlzdGVuZXIgPSBmcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lclByb3h5
KGxpc3RlbmVySUQpOwogICAgIGlmICghbV9wb2xpY3lDbGllbnQuZGVjaWRlUG9saWN5Rm9yTmV3
V2luZG93QWN0aW9uKHRoaXMsIG5hdmlnYXRpb25UeXBlLCBtb2RpZmllcnMsIG1vdXNlQnV0dG9u
LCB1cmwsIGZyYW1lLCBsaXN0ZW5lci5nZXQoKSkpCiAgICAgICAgIGxpc3RlbmVyLT51c2UoKTsK
IH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck1JTUVUeXBlKHVpbnQ2NF90
IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgdXJsLCB1aW50
NjRfdCBsaXN0ZW5lcklEKQordm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck1JTUVU
eXBlKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBT
dHJpbmcmIHVybCwgdWludDY0X3QgbGlzdGVuZXJJRCkKIHsKLSAgICBXZWJGcmFtZVByb3h5KiBm
cmFtZSA9IHByb2Nlc3MoKS0+d2ViRnJhbWUoZnJhbWVJRCk7CiAgICAgUmVmUHRyPFdlYkZyYW1l
UG9saWN5TGlzdGVuZXJQcm94eT4gbGlzdGVuZXIgPSBmcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5l
clByb3h5KGxpc3RlbmVySUQpOwogICAgIGlmICghbV9wb2xpY3lDbGllbnQuZGVjaWRlUG9saWN5
Rm9yTUlNRVR5cGUodGhpcywgTUlNRVR5cGUsIHVybCwgZnJhbWUsIGxpc3RlbmVyLmdldCgpKSkK
ICAgICAgICAgbGlzdGVuZXItPnVzZSgpOwpAQCAtNzcwLDMyICsxMTIwLDE4IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JNSU1FVHlwZSh1aW50NjRfdCBmcmFtZUlELCBjb25z
dCBTdHJpbmcmIE1JTUVUCiAKIC8vIEZvcm1DbGllbnQKIAotdm9pZCBXZWJQYWdlUHJveHk6Ondp
bGxTdWJtaXRGb3JtKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHNvdXJjZUZyYW1lSUQsIGNv
bnN0IFN0cmluZ1BhaXJWZWN0b3ImIHRleHRGaWVsZFZhbHVlcywgdWludDY0X3QgbGlzdGVuZXJJ
RCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBhcmd1bWVudHMpCit2b2lkIFdlYlBhZ2VQcm94
eTo6d2lsbFN1Ym1pdEZvcm0oV2ViRnJhbWVQcm94eSogZnJhbWUsIFdlYkZyYW1lUHJveHkqIHNv
dXJjZUZyYW1lLCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPiA+JiB0ZXh0RmllbGRW
YWx1ZXMsIEFQSU9iamVjdCogdXNlckRhdGEsIHVpbnQ2NF90IGxpc3RlbmVySUQpCiB7Ci0gICAg
UmVmUHRyPEFQSU9iamVjdD4gdXNlckRhdGE7Ci0gICAgV2ViQ29udGV4dFVzZXJNZXNzYWdlRGVj
b2RlciBtZXNzYWdlRGVjb2Rlcih1c2VyRGF0YSwgcGFnZU5hbWVzcGFjZSgpLT5jb250ZXh0KCkp
OwotICAgIGlmICghYXJndW1lbnRzLT5kZWNvZGUobWVzc2FnZURlY29kZXIpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9IHByb2Nlc3MoKS0+d2ViRnJhbWUo
ZnJhbWVJRCk7Ci0gICAgV2ViRnJhbWVQcm94eSogc291cmNlRnJhbWUgPSBwcm9jZXNzKCktPndl
YkZyYW1lKHNvdXJjZUZyYW1lSUQpOwotCiAgICAgUmVmUHRyPFdlYkZvcm1TdWJtaXNzaW9uTGlz
dGVuZXJQcm94eT4gbGlzdGVuZXIgPSBmcmFtZS0+c2V0VXBGb3JtU3VibWlzc2lvbkxpc3RlbmVy
UHJveHkobGlzdGVuZXJJRCk7Ci0gICAgaWYgKCFtX2Zvcm1DbGllbnQud2lsbFN1Ym1pdEZvcm0o
dGhpcywgZnJhbWUsIHNvdXJjZUZyYW1lLCB0ZXh0RmllbGRWYWx1ZXMuc3RyaW5nUGFpclZlY3Rv
cigpLCB1c2VyRGF0YS5nZXQoKSwgbGlzdGVuZXIuZ2V0KCkpKQorICAgIGlmICghbV9mb3JtQ2xp
ZW50LndpbGxTdWJtaXRGb3JtKHRoaXMsIGZyYW1lLCBzb3VyY2VGcmFtZSwgdGV4dEZpZWxkVmFs
dWVzLCB1c2VyRGF0YSwgbGlzdGVuZXIuZ2V0KCkpKQogICAgICAgICBsaXN0ZW5lci0+Y29udGlu
dWVTdWJtaXNzaW9uKCk7CiB9CiAKIC8vIFVJQ2xpZW50CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojpj
cmVhdGVOZXdQYWdlKHVpbnQ2NF90JiBuZXdQYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnMmIG5ld1BhZ2VQYXJhbWV0ZXJzKQorUGFzc1JlZlB0cjxXZWJQYWdlUHJveHk+IFdlYlBhZ2VQ
cm94eTo6Y3JlYXRlTmV3UGFnZSgpCiB7Ci0gICAgUmVmUHRyPFdlYlBhZ2VQcm94eT4gbmV3UGFn
ZSA9IG1fdWlDbGllbnQuY3JlYXRlTmV3UGFnZSh0aGlzKTsKLSAgICBpZiAobmV3UGFnZSkgewot
ICAgICAgICAvLyBGSVhNRTogUGFzcyB0aGUgcmVhbCBzaXplLgotICAgICAgICBuZXdQYWdlSUQg
PSBuZXdQYWdlLT5wYWdlSUQoKTsKLSAgICAgICAgbmV3UGFnZVBhcmFtZXRlcnMgPSBuZXdQYWdl
LT5jcmVhdGlvblBhcmFtZXRlcnMoSW50U2l6ZSgxMDAsIDEwMCkpOwotICAgIH0gZWxzZQotICAg
ICAgICBuZXdQYWdlSUQgPSAwOworICAgIHJldHVybiBtX3VpQ2xpZW50LmNyZWF0ZU5ld1BhZ2Uo
dGhpcyk7CiB9CiAgICAgCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2hvd1BhZ2UoKQpAQCAtODA4LDE5
ICsxMTQ0LDE5IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjbG9zZVBhZ2UoKQogICAgIG1fdWlDbGll
bnQuY2xvc2UodGhpcyk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0QWxl
cnQodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQordm9pZCBXZWJQYWdl
UHJveHk6OnJ1bkphdmFTY3JpcHRBbGVydChXZWJGcmFtZVByb3h5KiBmcmFtZSwgY29uc3QgU3Ry
aW5nJiBtZXNzYWdlKQogewotICAgIG1fdWlDbGllbnQucnVuSmF2YVNjcmlwdEFsZXJ0KHRoaXMs
IG1lc3NhZ2UsIHByb2Nlc3MoKS0+d2ViRnJhbWUoZnJhbWVJRCkpOworICAgIG1fdWlDbGllbnQu
cnVuSmF2YVNjcmlwdEFsZXJ0KHRoaXMsIG1lc3NhZ2UsIGZyYW1lKTsKIH0KIAotdm9pZCBXZWJQ
YWdlUHJveHk6OnJ1bkphdmFTY3JpcHRDb25maXJtKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0
cmluZyYgbWVzc2FnZSwgYm9vbCYgcmVzdWx0KQorYm9vbCBXZWJQYWdlUHJveHk6OnJ1bkphdmFT
Y3JpcHRDb25maXJtKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2Up
CiB7Ci0gICAgcmVzdWx0ID0gbV91aUNsaWVudC5ydW5KYXZhU2NyaXB0Q29uZmlybSh0aGlzLCBt
ZXNzYWdlLCBwcm9jZXNzKCktPndlYkZyYW1lKGZyYW1lSUQpKTsKKyAgICByZXR1cm4gbV91aUNs
aWVudC5ydW5KYXZhU2NyaXB0Q29uZmlybSh0aGlzLCBtZXNzYWdlLCBmcmFtZSk7CiB9CiAKLXZv
aWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0UHJvbXB0KHVpbnQ2NF90IGZyYW1lSUQsIGNv
bnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZWZhdWx0VmFsdWUsIFN0cmluZyYg
cmVzdWx0KQorU3RyaW5nIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdFByb21wdChXZWJGcmFt
ZVByb3h5KiBmcmFtZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlZmF1
bHRWYWx1ZSkKIHsKLSAgICByZXN1bHQgPSBtX3VpQ2xpZW50LnJ1bkphdmFTY3JpcHRQcm9tcHQo
dGhpcywgbWVzc2FnZSwgZGVmYXVsdFZhbHVlLCBwcm9jZXNzKCktPndlYkZyYW1lKGZyYW1lSUQp
KTsKKyAgICByZXR1cm4gbV91aUNsaWVudC5ydW5KYXZhU2NyaXB0UHJvbXB0KHRoaXMsIG1lc3Nh
Z2UsIGRlZmF1bHRWYWx1ZSwgZnJhbWUpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0U3Rh
dHVzVGV4dChjb25zdCBTdHJpbmcmIHRleHQpCkBAIC04MjgsNzUgKzExNjQsMzMgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OnNldFN0YXR1c1RleHQoY29uc3QgU3RyaW5nJiB0ZXh0KQogICAgIG1fdWlD
bGllbnQuc2V0U3RhdHVzVGV4dCh0aGlzLCB0ZXh0KTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6
Om1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KHVpbnQzMl90IG9wYXF1ZU1vZGlmaWVycywgQ29yZUlQ
Qzo6QXJndW1lbnREZWNvZGVyKiBhcmd1bWVudHMpCit2b2lkIFdlYlBhZ2VQcm94eTo6bW91c2VE
aWRNb3ZlT3ZlckVsZW1lbnQoV2ViRXZlbnQ6Ok1vZGlmaWVycyBtb2RpZmllcnMsIEFQSU9iamVj
dCogdXNlckRhdGEpCiB7Ci0KLSAgICBSZWZQdHI8QVBJT2JqZWN0PiB1c2VyRGF0YTsKLSAgICBX
ZWJDb250ZXh0VXNlck1lc3NhZ2VEZWNvZGVyIG1lc3NhZ2VEZWNvZGVyKHVzZXJEYXRhLCBwYWdl
TmFtZXNwYWNlKCktPmNvbnRleHQoKSk7Ci0gICAgaWYgKCFhcmd1bWVudHMtPmRlY29kZShtZXNz
YWdlRGVjb2RlcikpCi0gICAgICAgIHJldHVybjsKLQotICAgIFdlYkV2ZW50OjpNb2RpZmllcnMg
bW9kaWZpZXJzID0gc3RhdGljX2Nhc3Q8V2ViRXZlbnQ6Ok1vZGlmaWVycz4ob3BhcXVlTW9kaWZp
ZXJzKTsKLQotICAgIG1fdWlDbGllbnQubW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQodGhpcywgbW9k
aWZpZXJzLCB1c2VyRGF0YS5nZXQoKSk7CisgICAgbV91aUNsaWVudC5tb3VzZURpZE1vdmVPdmVy
RWxlbWVudCh0aGlzLCBtb2RpZmllcnMsIHVzZXJEYXRhKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJv
eHk6OmNvbnRlbnRzU2l6ZUNoYW5nZWQodWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6
SW50U2l6ZSYgc2l6ZSkKK3ZvaWQgV2ViUGFnZVByb3h5Ojpjb250ZW50c1NpemVDaGFuZ2VkKFdl
YkZyYW1lUHJveHkqIGZyYW1lLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplKQogewotICAg
IG1fdWlDbGllbnQuY29udGVudHNTaXplQ2hhbmdlZCh0aGlzLCBzaXplLCBwcm9jZXNzKCktPndl
YkZyYW1lKGZyYW1lSUQpKTsKKyAgICBtX3VpQ2xpZW50LmNvbnRlbnRzU2l6ZUNoYW5nZWQodGhp
cywgc2l6ZSwgZnJhbWUpOwogfQogCiAvLyBCYWNrRm9yd2FyZExpc3QKIAotdm9pZCBXZWJQYWdl
UHJveHk6OmJhY2tGb3J3YXJkQWRkSXRlbSh1aW50NjRfdCBpdGVtSUQpCi17Ci0gICAgbV9iYWNr
Rm9yd2FyZExpc3QtPmFkZEl0ZW0ocHJvY2VzcygpLT53ZWJCYWNrRm9yd2FyZEl0ZW0oaXRlbUlE
KSk7Ci19Ci0KLXZvaWQgV2ViUGFnZVByb3h5OjpiYWNrRm9yd2FyZEdvVG9JdGVtKHVpbnQ2NF90
IGl0ZW1JRCkKLXsKLSAgICBtX2JhY2tGb3J3YXJkTGlzdC0+Z29Ub0l0ZW0ocHJvY2VzcygpLT53
ZWJCYWNrRm9yd2FyZEl0ZW0oaXRlbUlEKSk7Ci19Ci0KLXZvaWQgV2ViUGFnZVByb3h5OjpiYWNr
Rm9yd2FyZEJhY2tJdGVtKHVpbnQ2NF90JiBpdGVtSUQpCi17Ci0gICAgV2ViQmFja0ZvcndhcmRM
aXN0SXRlbSogYmFja0l0ZW0gPSBtX2JhY2tGb3J3YXJkTGlzdC0+YmFja0l0ZW0oKTsKLSAgICBp
dGVtSUQgPSBiYWNrSXRlbSA/IGJhY2tJdGVtLT5pdGVtSUQoKSA6IDA7Ci19Ci0KLXZvaWQgV2Vi
UGFnZVByb3h5OjpiYWNrRm9yd2FyZEN1cnJlbnRJdGVtKHVpbnQ2NF90JiBpdGVtSUQpCi17Ci0g
ICAgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogY3VycmVudEl0ZW0gPSBtX2JhY2tGb3J3YXJkTGlz
dC0+Y3VycmVudEl0ZW0oKTsKLSAgICBpdGVtSUQgPSBjdXJyZW50SXRlbSA/IGN1cnJlbnRJdGVt
LT5pdGVtSUQoKSA6IDA7Ci19Ci0KLXZvaWQgV2ViUGFnZVByb3h5OjpiYWNrRm9yd2FyZEZvcndh
cmRJdGVtKHVpbnQ2NF90JiBpdGVtSUQpCi17Ci0gICAgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSog
Zm9yd2FyZEl0ZW0gPSBtX2JhY2tGb3J3YXJkTGlzdC0+Zm9yd2FyZEl0ZW0oKTsKLSAgICBpdGVt
SUQgPSBmb3J3YXJkSXRlbSA/IGZvcndhcmRJdGVtLT5pdGVtSUQoKSA6IDA7Ci19Ci0KLXZvaWQg
V2ViUGFnZVByb3h5OjpiYWNrRm9yd2FyZEl0ZW1BdEluZGV4KGludDMyX3QgaW5kZXgsIHVpbnQ2
NF90JiBpdGVtSUQpCi17Ci0gICAgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogaXRlbSA9IG1fYmFj
a0ZvcndhcmRMaXN0LT5pdGVtQXRJbmRleChpbmRleCk7OwotICAgIGl0ZW1JRCA9IGl0ZW0gPyBp
dGVtLT5pdGVtSUQoKSA6IDA7Ci19Ci0KLXZvaWQgV2ViUGFnZVByb3h5OjpiYWNrRm9yd2FyZEJh
Y2tMaXN0Q291bnQoaW50MzJfdCYgY291bnQpCit2b2lkIFdlYlBhZ2VQcm94eTo6YWRkSXRlbVRv
QmFja0ZvcndhcmRMaXN0KFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGl0ZW0pCiB7Ci0gICAgY291
bnQgPSBtX2JhY2tGb3J3YXJkTGlzdC0+YmFja0xpc3RDb3VudCgpOworICAgIG1fYmFja0Zvcndh
cmRMaXN0LT5hZGRJdGVtKGl0ZW0pOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6YmFja0Zvcndh
cmRGb3J3YXJkTGlzdENvdW50KGludDMyX3QmIGNvdW50KQordm9pZCBXZWJQYWdlUHJveHk6Omdv
VG9JdGVtSW5CYWNrRm9yd2FyZExpc3QoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogaXRlbSkKIHsK
LSAgICBjb3VudCA9IG1fYmFja0ZvcndhcmRMaXN0LT5mb3J3YXJkTGlzdENvdW50KCk7CisgICAg
bV9iYWNrRm9yd2FyZExpc3QtPmdvVG9JdGVtKGl0ZW0pOwogfQogCiAvLyBVbmRvIG1hbmFnZW1l
bnQKIAotdm9pZCBXZWJQYWdlUHJveHk6OnJlZ2lzdGVyRWRpdENvbW1hbmRGb3JVbmRvKHVpbnQ2
NF90IGNvbW1hbmRJRCwgdWludDMyX3QgZWRpdEFjdGlvbikKK3ZvaWQgV2ViUGFnZVByb3h5Ojpy
ZWdpc3RlckVkaXRDb21tYW5kRm9yVW5kbyh1aW50NjRfdCBjb21tYW5kSUQsIEVkaXRBY3Rpb24g
ZWRpdEFjdGlvbikKIHsKLSAgICByZWdpc3RlckVkaXRDb21tYW5kKFdlYkVkaXRDb21tYW5kUHJv
eHk6OmNyZWF0ZShjb21tYW5kSUQsIHN0YXRpY19jYXN0PEVkaXRBY3Rpb24+KGVkaXRBY3Rpb24p
LCB0aGlzKSwgVW5kbyk7CisgICAgcmVnaXN0ZXJFZGl0Q29tbWFuZEZvclVuZG8oV2ViRWRpdENv
bW1hbmRQcm94eTo6Y3JlYXRlKGNvbW1hbmRJRCwgZWRpdEFjdGlvbiwgdGhpcykpOwogfQogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6Y2xlYXJBbGxFZGl0Q29tbWFuZHMoKQpAQCAtOTA0LDkgKzExOTgs
MTQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNsZWFyQWxsRWRpdENvbW1hbmRzKCkKICAgICBtX3Bh
Z2VDbGllbnQtPmNsZWFyQWxsRWRpdENvbW1hbmRzKCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5
OjpyZWdpc3RlckVkaXRDb21tYW5kKFBhc3NSZWZQdHI8V2ViRWRpdENvbW1hbmRQcm94eT4gY29t
bWFuZFByb3h5LCBVbmRvT3JSZWRvIHVuZG9PclJlZG8pCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVn
aXN0ZXJFZGl0Q29tbWFuZEZvclVuZG8oUGFzc1JlZlB0cjxXZWJFZGl0Q29tbWFuZFByb3h5PiBj
b21tYW5kUHJveHkpCiB7Ci0gICAgbV9wYWdlQ2xpZW50LT5yZWdpc3RlckVkaXRDb21tYW5kKGNv
bW1hbmRQcm94eSwgdW5kb09yUmVkbyk7CisgICAgbV9wYWdlQ2xpZW50LT5yZWdpc3RlckVkaXRD
b21tYW5kKGNvbW1hbmRQcm94eSwgUGFnZUNsaWVudDo6VW5kbyk7Cit9CisKK3ZvaWQgV2ViUGFn
ZVByb3h5OjpyZWdpc3RlckVkaXRDb21tYW5kRm9yUmVkbyhQYXNzUmVmUHRyPFdlYkVkaXRDb21t
YW5kUHJveHk+IGNvbW1hbmRQcm94eSkKK3sKKyAgICBtX3BhZ2VDbGllbnQtPnJlZ2lzdGVyRWRp
dENvbW1hbmQoY29tbWFuZFByb3h5LCBQYWdlQ2xpZW50OjpSZWRvKTsKIH0KIAogdm9pZCBXZWJQ
YWdlUHJveHk6OmFkZEVkaXRDb21tYW5kKFdlYkVkaXRDb21tYW5kUHJveHkqIGNvbW1hbmQpCkBA
IC05NDIsMTUgKzEyNDEsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Q3Vyc29yKGNvbnN0IFdl
YkNvcmU6OkN1cnNvciYgY3Vyc29yKQogICAgIG1fcGFnZUNsaWVudC0+c2V0Q3Vyc29yKGN1cnNv
cik7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkaWRWYWxpZGF0ZU1lbnVJdGVtKGNvbnN0IFN0
cmluZyYgY29tbWFuZE5hbWUsIGJvb2wgaXNFbmFibGVkLCBpbnQzMl90IHN0YXRlKQotewotICAg
IG1fcGFnZUNsaWVudC0+c2V0RWRpdENvbW1hbmRTdGF0ZShjb21tYW5kTmFtZSwgaXNFbmFibGVk
LCBzdGF0ZSk7Ci19Ci0KLXZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlRXZlbnQodWludDMy
X3Qgb3BhcXVlVHlwZSwgYm9vbCBoYW5kbGVkKQordm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2Vp
dmVFdmVudChXZWJFdmVudDo6VHlwZSB0eXBlLCBib29sIGhhbmRsZWQpCiB7Ci0gICAgV2ViRXZl
bnQ6OlR5cGUgdHlwZSA9IHN0YXRpY19jYXN0PFdlYkV2ZW50OjpUeXBlPihvcGFxdWVUeXBlKTsK
LQogICAgIHN3aXRjaCAodHlwZSkgewogICAgICAgICBjYXNlIFdlYkV2ZW50OjpNb3VzZU1vdmU6
CiAgICAgICAgICAgICBicmVhazsKQEAgLTEwMTIsMTYgKzEzMDQsMTMgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmRpZEdldFNvdXJjZUZvckZyYW1lKGNvbnN0IFN0cmluZyYgcmVzdWx0U3RyaW5nLCB1
aW50NjRfdCBjYWwKICAgICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVl
KHJlc3VsdFN0cmluZy5pbXBsKCkpOwogfQogCi0KICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9T
SVRJTkcpCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2hhbmdlQWNjZWxlcmF0ZWRDb21wb3NpdGlu
Zyhib29sIGNvbXBvc2l0aW5nLCBEcmF3aW5nQXJlYUJhc2U6OkRyYXdpbmdBcmVhSW5mbyYgZHJh
d2luZ0FyZWFJbmZvKQordm9pZCBXZWJQYWdlUHJveHk6OmRpZENoYW5nZUFjY2VsZXJhdGVkQ29t
cG9zaXRpbmcoYm9vbCBjb21wb3NpdGluZykKIHsKICAgICBpZiAoY29tcG9zaXRpbmcpCiAgICAg
ICAgIGRpZEVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZygpOwogICAgIGVsc2UKICAgICAgICAg
ZGlkTGVhdmVBY2NlbGVyYXRlZENvbXBvc2l0aW5nKCk7Ci0KLSAgICBkcmF3aW5nQXJlYUluZm8g
PSBkcmF3aW5nQXJlYSgpLT5pbmZvKCk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaAppbmRleCA0MWI1YTJmYjk4MzAwYjAwNzgxYjY3ODc5M2RkN2I3NWEyMTVlM2JkLi43OTIw
M2M5YjA0ZTQ2NDgzMGRiOWQ5MDRiMWNlNTU4ODI5NTk5NDhhIDEwMDY0NAotLS0gYS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaApAQCAtNjYsNyArNjYsNiBAQCBjbGFzcyBEcmF3aW5nQXJlYVByb3h5OwogY2xhc3Mg
TmF0aXZlV2ViS2V5Ym9hcmRFdmVudDsKIGNsYXNzIFBhZ2VDbGllbnQ7CiBjbGFzcyBQbGF0Zm9y
bUNlcnRpZmljYXRlSW5mbzsKLWNsYXNzIFN0cmluZ1BhaXJWZWN0b3I7CiBjbGFzcyBXZWJCYWNr
Rm9yd2FyZExpc3Q7CiBjbGFzcyBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOwogY2xhc3MgV2ViRGF0
YTsKQEAgLTE4OSwxMCArMTg4LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZExlYXZlQWNjZWxl
cmF0ZWRDb21wb3NpdGluZygpOwogI2VuZGlmCiAKLSAgICBlbnVtIFVuZG9PclJlZG8geyBVbmRv
LCBSZWRvIH07CiAgICAgdm9pZCBhZGRFZGl0Q29tbWFuZChXZWJFZGl0Q29tbWFuZFByb3h5Kik7
CiAgICAgdm9pZCByZW1vdmVFZGl0Q29tbWFuZChXZWJFZGl0Q29tbWFuZFByb3h5Kik7Ci0gICAg
dm9pZCByZWdpc3RlckVkaXRDb21tYW5kKFBhc3NSZWZQdHI8V2ViRWRpdENvbW1hbmRQcm94eT4s
IFVuZG9PclJlZG8pOworICAgIHZvaWQgcmVnaXN0ZXJFZGl0Q29tbWFuZEZvclVuZG8oUGFzc1Jl
ZlB0cjxXZWJFZGl0Q29tbWFuZFByb3h5Pik7CisgICAgdm9pZCByZWdpc3RlckVkaXRDb21tYW5k
Rm9yUmVkbyhQYXNzUmVmUHRyPFdlYkVkaXRDb21tYW5kUHJveHk+KTsKIAogICAgIFdlYlByb2Nl
c3NQcm94eSogcHJvY2VzcygpIGNvbnN0OwogICAgIFdlYlBhZ2VOYW1lc3BhY2UqIHBhZ2VOYW1l
c3BhY2UoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VOYW1lc3BhY2UuZ2V0KCk7IH0KQEAgLTIxMSw2
NCArMjEwLDUzIEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0IHsg
cmV0dXJuIEFQSVR5cGU7IH0KIAotICAgIC8vIEltcGxlbWVudGVkIGluIGdlbmVyYXRlZCBXZWJQ
YWdlUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCi0gICAgdm9pZCBkaWRSZWNlaXZlV2ViUGFnZVBy
b3h5TWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3Jl
SVBDOjpBcmd1bWVudERlY29kZXIqKTsKLSAgICBDb3JlSVBDOjpTeW5jUmVwbHlNb2RlIGRpZFJl
Y2VpdmVTeW5jV2ViUGFnZVByb3h5TWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQ
Qzo6TWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqLCBDb3JlSVBDOjpBcmd1bWVu
dEVuY29kZXIqKTsKLQogICAgIHZvaWQgZGlkQ3JlYXRlTWFpbkZyYW1lKHVpbnQ2NF90IGZyYW1l
SUQpOwogICAgIHZvaWQgZGlkQ3JlYXRlU3ViRnJhbWUodWludDY0X3QgZnJhbWVJRCk7CiAKLSAg
ICB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwg
Y29uc3QgU3RyaW5nJiwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKik7Ci0gICAgdm9pZCBkaWRS
ZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBm
cmFtZUlELCBjb25zdCBTdHJpbmcmLCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqKTsKLSAgICB2
b2lkIGRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBDb3Jl
SVBDOjpBcmd1bWVudERlY29kZXIqKTsKLSAgICB2b2lkIGRpZENvbW1pdExvYWRGb3JGcmFtZSh1
aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBQbGF0Zm9ybUNl
cnRpZmljYXRlSW5mbyYsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciopOwotICAgIHZvaWQgZGlk
RmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgQ29yZUlQQzo6QXJn
dW1lbnREZWNvZGVyKik7Ci0gICAgdm9pZCBkaWRGaW5pc2hMb2FkRm9yRnJhbWUodWludDY0X3Qg
ZnJhbWVJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKik7Ci0gICAgdm9pZCBkaWRGYWlsTG9h
ZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciopOwot
ICAgIHZvaWQgZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3Qg
U3RyaW5nJiwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKik7Ci0gICAgdm9pZCBkaWRGaXJzdExh
eW91dEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2Rlciop
OwotICAgIHZvaWQgZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9yRnJhbWUodWludDY0
X3QgZnJhbWVJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKik7Ci0gICAgdm9pZCBkaWRSZW1v
dmVGcmFtZUZyb21IaWVyYXJjaHkodWludDY0X3QgZnJhbWVJRCwgQ29yZUlQQzo6QXJndW1lbnRE
ZWNvZGVyKik7CisgICAgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYkZy
YW1lUHJveHkqLCBjb25zdCBTdHJpbmcmLCBBUElPYmplY3QqKTsKKyAgICB2b2lkIGRpZFJlY2Vp
dmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYkZyYW1lUHJveHkq
LCBjb25zdCBTdHJpbmcmLCBBUElPYmplY3QqKTsKKyAgICB2b2lkIGRpZEZhaWxQcm92aXNpb25h
bExvYWRGb3JGcmFtZShXZWJGcmFtZVByb3h5KiwgQVBJT2JqZWN0Kik7CisgICAgdm9pZCBkaWRD
b21taXRMb2FkRm9yRnJhbWUoV2ViRnJhbWVQcm94eSosIGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IGNvbnN0IFBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvJiwgQVBJT2JqZWN0Kik7CisgICAgdm9pZCBk
aWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZShXZWJGcmFtZVByb3h5KiwgQVBJT2JqZWN0Kik7
CisgICAgdm9pZCBkaWRGaW5pc2hMb2FkRm9yRnJhbWUoV2ViRnJhbWVQcm94eSosIEFQSU9iamVj
dCopOworICAgIHZvaWQgZGlkRmFpbExvYWRGb3JGcmFtZShXZWJGcmFtZVByb3h5KiwgQVBJT2Jq
ZWN0Kik7CisgICAgdm9pZCBkaWRSZWNlaXZlVGl0bGVGb3JGcmFtZShXZWJGcmFtZVByb3h5Kiwg
Y29uc3QgU3RyaW5nJiwgQVBJT2JqZWN0Kik7CisgICAgdm9pZCBkaWRGaXJzdExheW91dEZvckZy
YW1lKFdlYkZyYW1lUHJveHkqLCBBUElPYmplY3QqKTsKKyAgICB2b2lkIGRpZEZpcnN0VmlzdWFs
bHlOb25FbXB0eUxheW91dEZvckZyYW1lKFdlYkZyYW1lUHJveHkqLCBBUElPYmplY3QqKTsKKyAg
ICB2b2lkIGRpZFJlbW92ZUZyYW1lRnJvbUhpZXJhcmNoeShXZWJGcmFtZVByb3h5KiwgQVBJT2Jq
ZWN0Kik7CiAgICAgdm9pZCBkaWRTdGFydFByb2dyZXNzKCk7CiAgICAgdm9pZCBkaWRDaGFuZ2VQ
cm9ncmVzcyhkb3VibGUpOwogICAgIHZvaWQgZGlkRmluaXNoUHJvZ3Jlc3MoKTsKICAgICAKLSAg
ICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24odWludDY0X3QgZnJhbWVJRCwg
dWludDMyX3QgbmF2aWdhdGlvblR5cGUsIHVpbnQzMl90IG1vZGlmaWVycywgaW50MzJfdCBtb3Vz
ZUJ1dHRvbiwgY29uc3QgU3RyaW5nJiB1cmwsIHVpbnQ2NF90IGxpc3RlbmVySUQpOwotICAgIHZv
aWQgZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQz
Ml90IG5hdmlnYXRpb25UeXBlLCB1aW50MzJfdCBtb2RpZmllcnMsIGludDMyX3QgbW91c2VCdXR0
b24sIGNvbnN0IFN0cmluZyYgdXJsLCB1aW50NjRfdCBsaXN0ZW5lcklEKTsKLSAgICB2b2lkIGRl
Y2lkZVBvbGljeUZvck1JTUVUeXBlKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgTUlN
RVR5cGUsIGNvbnN0IFN0cmluZyYgdXJsLCB1aW50NjRfdCBsaXN0ZW5lcklEKTsKKyAgICB2b2lk
IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oV2ViRnJhbWVQcm94eSosIFdlYkNvcmU6
Ok5hdmlnYXRpb25UeXBlLCBXZWJFdmVudDo6TW9kaWZpZXJzLCBXZWJNb3VzZUV2ZW50OjpCdXR0
b24sIGNvbnN0IFN0cmluZyYgdXJsLCB1aW50NjRfdCBsaXN0ZW5lcklEKTsKKyAgICB2b2lkIGRl
Y2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihXZWJGcmFtZVByb3h5KiwgV2ViQ29yZTo6TmF2
aWdhdGlvblR5cGUsIFdlYkV2ZW50OjpNb2RpZmllcnMsIFdlYk1vdXNlRXZlbnQ6OkJ1dHRvbiwg
Y29uc3QgU3RyaW5nJiB1cmwsIHVpbnQ2NF90IGxpc3RlbmVySUQpOworICAgIHZvaWQgZGVjaWRl
UG9saWN5Rm9yTUlNRVR5cGUoV2ViRnJhbWVQcm94eSosIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUs
IGNvbnN0IFN0cmluZyYgdXJsLCB1aW50NjRfdCBsaXN0ZW5lcklEKTsKIAotICAgIHZvaWQgd2ls
bFN1Ym1pdEZvcm0odWludDY0X3QgZnJhbWVJRCwgdWludDY0X3Qgc291cmNlRnJhbWVJRCwgY29u
c3QgU3RyaW5nUGFpclZlY3RvciYgdGV4dEZpZWxkVmFsdWVzLCB1aW50NjRfdCBsaXN0ZW5lcklE
LCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqKTsKKyAgICB2b2lkIHdpbGxTdWJtaXRGb3JtKFdl
YkZyYW1lUHJveHkqIGZyYW1lLCBXZWJGcmFtZVByb3h5KiBmcmFtZVNvdXJjZSwgVmVjdG9yPHN0
ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4gPiYgdGV4dEZpZWxkVmFsdWVzLCBBUElPYmplY3QqIHVz
ZXJEYXRhLCB1aW50NjRfdCBsaXN0ZW5lcklEKTsKIAotICAgIHZvaWQgY3JlYXRlTmV3UGFnZSh1
aW50NjRfdCYgbmV3UGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJik7CisgICAgUGFz
c1JlZlB0cjxXZWJQYWdlUHJveHk+IGNyZWF0ZU5ld1BhZ2UoKTsKICAgICB2b2lkIHNob3dQYWdl
KCk7CiAgICAgdm9pZCBjbG9zZVBhZ2UoKTsKLSAgICB2b2lkIHJ1bkphdmFTY3JpcHRBbGVydCh1
aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIHJ1bkphdmFTY3JpcHRD
b25maXJtKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYsIGJvb2wmIHJlc3VsdCk7Ci0g
ICAgdm9pZCBydW5KYXZhU2NyaXB0UHJvbXB0KHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IFN0cmluZyYsIFN0cmluZyYgcmVzdWx0KTsKKyAgICB2b2lkIHJ1bkphdmFTY3Jp
cHRBbGVydChXZWJGcmFtZVByb3h5KiwgY29uc3QgU3RyaW5nJik7CisgICAgYm9vbCBydW5KYXZh
U2NyaXB0Q29uZmlybShXZWJGcmFtZVByb3h5KiBmcmFtZSwgY29uc3QgU3RyaW5nJik7CisgICAg
U3RyaW5nIHJ1bkphdmFTY3JpcHRQcm9tcHQoV2ViRnJhbWVQcm94eSogZnJhbWUsIGNvbnN0IFN0
cmluZyYsIGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgc2V0U3RhdHVzVGV4dChjb25zdCBTdHJp
bmcmKTsKLSAgICB2b2lkIG1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KHVpbnQzMl90IG1vZGlmaWVy
cywgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKik7Ci0gICAgdm9pZCBjb250ZW50c1NpemVDaGFu
Z2VkKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsKKyAgICB2b2lk
IG1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KFdlYkV2ZW50OjpNb2RpZmllcnMsIEFQSU9iamVjdCop
OworICAgIHZvaWQgY29udGVudHNTaXplQ2hhbmdlZChXZWJGcmFtZVByb3h5KiwgY29uc3QgV2Vi
Q29yZTo6SW50U2l6ZSYpOwogCiAgICAgLy8gQmFjay9Gb3J3YXJkIGxpc3QgbWFuYWdlbWVudAot
ICAgIHZvaWQgYmFja0ZvcndhcmRBZGRJdGVtKHVpbnQ2NF90IGl0ZW1JRCk7Ci0gICAgdm9pZCBi
YWNrRm9yd2FyZEdvVG9JdGVtKHVpbnQ2NF90IGl0ZW1JRCk7Ci0gICAgdm9pZCBiYWNrRm9yd2Fy
ZEJhY2tJdGVtKHVpbnQ2NF90JiBpdGVtSUQpOwotICAgIHZvaWQgYmFja0ZvcndhcmRDdXJyZW50
SXRlbSh1aW50NjRfdCYgaXRlbUlEKTsKLSAgICB2b2lkIGJhY2tGb3J3YXJkRm9yd2FyZEl0ZW0o
dWludDY0X3QmIGl0ZW1JRCk7Ci0gICAgdm9pZCBiYWNrRm9yd2FyZEl0ZW1BdEluZGV4KGludDMy
X3QgaW5kZXgsIHVpbnQ2NF90JiBpdGVtSUQpOwotICAgIHZvaWQgYmFja0ZvcndhcmRCYWNrTGlz
dENvdW50KGludDMyX3QmIGNvdW50KTsKLSAgICB2b2lkIGJhY2tGb3J3YXJkRm9yd2FyZExpc3RD
b3VudChpbnQzMl90JiBjb3VudCk7CisgICAgdm9pZCBhZGRJdGVtVG9CYWNrRm9yd2FyZExpc3Qo
V2ViQmFja0ZvcndhcmRMaXN0SXRlbSopOworICAgIHZvaWQgZ29Ub0l0ZW1JbkJhY2tGb3J3YXJk
TGlzdChXZWJCYWNrRm9yd2FyZExpc3RJdGVtKik7CiAKICAgICAvLyBVbmRvIG1hbmFnZW1lbnQK
LSAgICB2b2lkIHJlZ2lzdGVyRWRpdENvbW1hbmRGb3JVbmRvKHVpbnQ2NF90IGNvbW1hbmRJRCwg
dWludDMyX3QgZWRpdEFjdGlvbik7CisgICAgdm9pZCByZWdpc3RlckVkaXRDb21tYW5kRm9yVW5k
byh1aW50NjRfdCBjb21tYW5kSUQsIFdlYkNvcmU6OkVkaXRBY3Rpb24pOwogICAgIHZvaWQgY2xl
YXJBbGxFZGl0Q29tbWFuZHMoKTsKIAogICAgIHZvaWQgdGFrZUZvY3VzKGJvb2wgZGlyZWN0aW9u
KTsKICAgICB2b2lkIHNldFRvb2xUaXAoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBzZXRDdXJz
b3IoY29uc3QgV2ViQ29yZTo6Q3Vyc29yJik7Ci0gICAgdm9pZCBkaWRWYWxpZGF0ZU1lbnVJdGVt
KGNvbnN0IFN0cmluZyYgY29tbWFuZE5hbWUsIGJvb2wgaXNFbmFibGVkLCBpbnQzMl90IHN0YXRl
KTsKIAotICAgIHZvaWQgZGlkUmVjZWl2ZUV2ZW50KHVpbnQzMl90IG9wYXF1ZVR5cGUsIGJvb2wg
aGFuZGxlZCk7CisgICAgdm9pZCBkaWRSZWNlaXZlRXZlbnQoV2ViRXZlbnQ6OlR5cGUsIGJvb2wg
aGFuZGxlZCk7CiAKICAgICB2b2lkIGRpZFJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShjb25zdCBT
dHJpbmcmLCB1aW50NjRfdCk7CiAgICAgdm9pZCBkaWRHZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXBy
ZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmLCB1aW50NjRfdCk7CkBAIC0yNzcsNyArMjY1LDcgQEAg
cHJpdmF0ZToKICAgICBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIGNyZWF0aW9uUGFyYW1ldGVy
cyhjb25zdCBXZWJDb3JlOjpJbnRTaXplJikgY29uc3Q7CiAKICNpZiBVU0UoQUNDRUxFUkFURURf
Q09NUE9TSVRJTkcpCi0gICAgdm9pZCBkaWRDaGFuZ2VBY2NlbGVyYXRlZENvbXBvc2l0aW5nKGJv
b2wgY29tcG9zaXRpbmcsIERyYXdpbmdBcmVhQmFzZTo6RHJhd2luZ0FyZWFJbmZvJik7CisgICAg
dm9pZCBkaWRDaGFuZ2VBY2NlbGVyYXRlZENvbXBvc2l0aW5nKGJvb2wgY29tcG9zaXRpbmcpOwog
I2VuZGlmICAgIAogCiAgICAgUGFnZUNsaWVudCogbV9wYWdlQ2xpZW50OwpkaWZmIC0tZ2l0IGEv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAxODQ5ODc1Y2UxZjA5NDUwY2ZiNjYxY2QyMzgwOTBiYWE2OTUyMThhLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgL2Rldi9udWxsCkBAIC0xLDkzICswLDAgQEAKLSMg
Q29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
IwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0jIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IKLSMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSMg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotbWVzc2FnZXMgLT4gV2ViUGFn
ZVByb3h5IHsKLSAgICAjIFVJIG1lc3NhZ2VzLgotICAgIENyZWF0ZU5ld1BhZ2UoKSAtPiAodWlu
dDY0X3QgbmV3UGFnZUlELCBXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgbmV3UGFn
ZVBhcmFtZXRlcnMpCi0gICAgU2hvd1BhZ2UoKQotICAgIENsb3NlUGFnZSgpCi0gICAgUnVuSmF2
YVNjcmlwdEFsZXJ0KHVpbnQ2NF90IGZyYW1lSUQsIFdURjo6U3RyaW5nIG1lc3NhZ2UpIC0+ICgp
Ci0gICAgUnVuSmF2YVNjcmlwdENvbmZpcm0odWludDY0X3QgZnJhbWVJRCwgV1RGOjpTdHJpbmcg
bWVzc2FnZSkgLT4gKGJvb2wgcmVzdWx0KQotICAgIFJ1bkphdmFTY3JpcHRQcm9tcHQodWludDY0
X3QgZnJhbWVJRCwgV1RGOjpTdHJpbmcgbWVzc2FnZSwgV1RGOjpTdHJpbmcgZGVmYXVsdFZhbHVl
KSAtPiAoV1RGOjpTdHJpbmcgcmVzdWx0KQotICAgIE1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KHVp
bnQzMl90IG1vZGlmaWVycywgV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2Rl
ciB1c2VyRGF0YSk7Ci0gICAgQ29udGVudHNTaXplQ2hhbmdlZCh1aW50NjRfdCBmcmFtZUlELCBX
ZWJDb3JlOjpJbnRTaXplIG5ld1NpemUpCi0gICAgRGlkUmVjZWl2ZUV2ZW50KHVpbnQzMl90IHR5
cGUsIGJvb2wgaGFuZGxlZCkKLSAgICBEaWRWYWxpZGF0ZU1lbnVJdGVtKFdURjo6U3RyaW5nIGNv
bW1hbmROYW1lLCBib29sIGlzRW5hYmxlZCwgaW50MzJfdCBzdGF0ZSkKLSAgICBTZXRDdXJzb3Io
V2ViQ29yZTo6Q3Vyc29yIGN1cnNvcikKLSAgICBTZXRTdGF0dXNUZXh0KFdURjo6U3RyaW5nIHN0
YXR1c1RleHQpCi0gICAgU2V0VG9vbFRpcChXVEY6OlN0cmluZyB0b29sVGlwKQotICAgIFRha2VG
b2N1cyhib29sIGRpcmVjdGlvbikKLQotICAgICMgUG9saWN5IG1lc3NhZ2VzLgotICAgIERlY2lk
ZVBvbGljeUZvck1JTUVUeXBlKHVpbnQ2NF90IGZyYW1lSUQsIFdURjo6U3RyaW5nIE1JTUVUeXBl
LCBXVEY6OlN0cmluZyB1cmwsIHVpbnQ2NF90IGxpc3RlbmVySUQpCi0gICAgRGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvbih1aW50NjRfdCBmcmFtZUlELCB1aW50MzJfdCBuYXZpZ2F0aW9u
VHlwZSwgdWludDMyX3QgbW9kaWZpZXJzLCBpbnQzMl90IG1vdXNlQnV0dG9uLCBXVEY6OlN0cmlu
ZyB1cmwsIHVpbnQ2NF90IGxpc3RlbmVySUQpCi0gICAgRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93
QWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQzMl90IG5hdmlnYXRpb25UeXBlLCB1aW50MzJf
dCBtb2RpZmllcnMsIGludDMyX3QgbW91c2VCdXR0b24sIFdURjo6U3RyaW5nIHVybCwgdWludDY0
X3QgbGlzdGVuZXJJRCkKLQotICAgICMgUHJvZ3Jlc3MgbWVzc2FnZXMuCi0gICAgRGlkQ2hhbmdl
UHJvZ3Jlc3MoZG91YmxlIHZhbHVlKQotICAgIERpZEZpbmlzaFByb2dyZXNzKCkKLSAgICBEaWRT
dGFydFByb2dyZXNzKCkKLQotICAgICMgRnJhbWUgbGlmZXRpbWUgbWVzc2FnZXMuCi0gICAgRGlk
Q3JlYXRlTWFpbkZyYW1lKHVpbnQ2NF90IGZyYW1lSUQpCi0gICAgRGlkQ3JlYXRlU3ViRnJhbWUo
dWludDY0X3QgZnJhbWVJRCkKLQotICAgICMgRnJhbWUgbG9hZCBtZXNzYWdlcy4KLSAgICBEaWRD
b21taXRMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgV1RGOjpTdHJpbmcgbWltZVR5cGUs
IFdlYktpdDo6UGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8gY2VydGlmaWNhdGVJbmZvLCBXZWJLaXQ6
OkluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyIHVzZXJEYXRhKQotICAgIERpZEZhaWxM
b2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVVzZXJN
ZXNzYWdlRW5jb2RlciB1c2VyRGF0YSkKLSAgICBEaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJh
bWUodWludDY0X3QgZnJhbWVJRCwgV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5j
b2RlciB1c2VyRGF0YSkKLSAgICBEaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZSh1aW50NjRf
dCBmcmFtZUlELCBXZWJLaXQ6OkluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyIHVzZXJE
YXRhKQotICAgIERpZEZpbmlzaExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBXZWJLaXQ6
OkluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyIHVzZXJEYXRhKQotICAgIERpZEZpcnN0
TGF5b3V0Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVVz
ZXJNZXNzYWdlRW5jb2RlciB1c2VyRGF0YSkKLSAgICBEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlM
YXlvdXRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBXZWJLaXQ6OkluamVjdGVkQnVuZGxlVXNl
ck1lc3NhZ2VFbmNvZGVyIHVzZXJEYXRhKQotICAgIERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZv
clByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIFdURjo6U3RyaW5nIHVy
bCwgV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2RlciB1c2VyRGF0YSkKLSAg
ICBEaWRSZW1vdmVGcmFtZUZyb21IaWVyYXJjaHkodWludDY0X3QgZnJhbWVJRCwgV2ViS2l0OjpJ
bmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2RlciB1c2VyRGF0YSkKLSAgICBEaWRTdGFydFBy
b3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIFdURjo6U3RyaW5nIHVybCwg
V2ViS2l0OjpJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2RlciB1c2VyRGF0YSkKLSAgICBE
aWRSZWNlaXZlVGl0bGVGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBXVEY6OlN0cmluZyB0aXRs
ZSwgV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2RlciB1c2VyRGF0YSkKLQot
ICAgICMgRm9ybXMgbWVzc2FnZXMuCi0gICAgV2lsbFN1Ym1pdEZvcm0odWludDY0X3QgZnJhbWVJ
RCwgdWludDY0X3Qgc291cmNlRnJhbWVJRCwgV2ViS2l0OjpTdHJpbmdQYWlyVmVjdG9yIHRleHRG
aWVsZFZhbHVlcywgdWludDY0X3QgbGlzdGVuZXJJRCwgV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVVz
ZXJNZXNzYWdlRW5jb2RlciB1c2VyRGF0YSkKLQotICAgICMgQ2FsbGJhY2sgbWVzc2FnZXMuCi0g
ICAgRGlkR2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24oV1RGOjpTdHJpbmcgcmVz
dWx0U3RyaW5nLCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIERpZEdldFNvdXJjZUZvckZyYW1l
KFdURjo6U3RyaW5nIHJlc3VsdFN0cmluZywgdWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBEaWRS
dW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoV1RGOjpTdHJpbmcgcmVzdWx0U3RyaW5nLCB1aW50NjRf
dCBjYWxsYmFja0lEKQotCi0gICAgIyBCYWNrRm9yd2FyZCBtZXNzYWdlcy4KLSAgICBCYWNrRm9y
d2FyZEFkZEl0ZW0odWludDY0X3QgaXRlbUlEKQotICAgIEJhY2tGb3J3YXJkR29Ub0l0ZW0odWlu
dDY0X3QgaXRlbUlEKQotICAgIEJhY2tGb3J3YXJkQmFja0l0ZW0oKSAtPiAodWludDY0X3QgaXRl
bUlEKQotICAgIEJhY2tGb3J3YXJkQ3VycmVudEl0ZW0oKSAtPiAodWludDY0X3QgaXRlbUlEKQot
ICAgIEJhY2tGb3J3YXJkRm9yd2FyZEl0ZW0oKSAtPiAodWludDY0X3QgaXRlbUlEKQotICAgIEJh
Y2tGb3J3YXJkSXRlbUF0SW5kZXgodWludDY0X3QgaXRlbUlEKSAtPiAodWludDY0X3QgaXRlbUlE
KQotICAgIEJhY2tGb3J3YXJkQmFja0xpc3RDb3VudCgpIC0+IChpbnQzMl90IGl0ZW1JRCkKLSAg
ICBCYWNrRm9yd2FyZEZvcndhcmRMaXN0Q291bnQoKSAtPiAoaW50MzJfdCBpdGVtSUQpCi0KLSAg
ICAjIFVuZG9SZWRvIG1lc3NhZ2VzLgotICAgIFJlZ2lzdGVyRWRpdENvbW1hbmRGb3JVbmRvKHVp
bnQ2NF90IGNvbW1hbmRJRCwgdWludDMyX3QgZWRpdEFjdGlvbikKLSAgICBDbGVhckFsbEVkaXRD
b21tYW5kcygpCi0KLSNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAgIyBBY2Nl
bGVyYXRlZCBjb21wc2l0aW5nIG1lc3NhZ2VzLgotICAgIERpZENoYW5nZUFjY2VsZXJhdGVkQ29t
cG9zaXRpbmcoYm9vbCBjb21wb3NpdGluZykgLT4gKFdlYktpdDo6RHJhd2luZ0FyZWFCYXNlOjpE
cmF3aW5nQXJlYUluZm8gbmV3RHJhd2luZ0FyZWEpCi0jZW5kaWYKLX0KZGlmZiAtLWdpdCBhL1dl
YktpdDIvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcCBiL1dlYktpdDIvVUlQcm9jZXNzL3dpbi9X
ZWJWaWV3LmNwcAppbmRleCBmNTRkYTU3MzRiMzU1NzllMWNkZjQ3M2M5NjQ1YTc1NGFkN2MzZTAy
Li5iNDdkMzcxYjc5OGJkYTA5MzcxN2Y3ZTU0MzBlODM0NjRiMWI3NjdiIDEwMDY0NAotLS0gYS9X
ZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAKKysrIGIvV2ViS2l0Mi9VSVByb2Nlc3Mv
d2luL1dlYlZpZXcuY3BwCkBAIC01NzIsNyArNTcyLDcgQEAgdm9pZCBXZWJWaWV3OjpzZXRDdXJz
b3IoY29uc3QgV2ViQ29yZTo6Q3Vyc29yJiBjdXJzb3IpCiAgICAgOjpTZXRDdXJzb3IocGxhdGZv
cm1DdXJzb3IpOwogfQogCi12b2lkIFdlYlZpZXc6OnJlZ2lzdGVyRWRpdENvbW1hbmQoUGFzc1Jl
ZlB0cjxXZWJFZGl0Q29tbWFuZFByb3h5PiwgV2ViUGFnZVByb3h5OjpVbmRvT3JSZWRvKQordm9p
ZCBXZWJWaWV3OjpyZWdpc3RlckVkaXRDb21tYW5kKFBhc3NSZWZQdHI8V2ViRWRpdENvbW1hbmRQ
cm94eT4sIFVuZG9PclJlZG8pCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYktpdDIvVUlQcm9jZXNz
L3dpbi9XZWJWaWV3LmggYi9XZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViVmlldy5oCmluZGV4IDYw
MjU0ZDU0MjY5MDk4OTJhOTZlMzRlMDkzNjI5Y2MzMDgzNWEzMzMuLjAyYjU0NmRkZTMzMmM1ZGU0
NWJkMzQ4YTI4NzA0MzUzMTRmNThlMWUgMTAwNjQ0Ci0tLSBhL1dlYktpdDIvVUlQcm9jZXNzL3dp
bi9XZWJWaWV3LmgKKysrIGIvV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuaApAQCAtOTUs
NyArOTUsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCB0YWtlRm9jdXMoYm9vbCBkaXJl
Y3Rpb24pOwogICAgIHZpcnR1YWwgdm9pZCB0b29sVGlwQ2hhbmdlZChjb25zdCBXVEY6OlN0cmlu
ZyYsIGNvbnN0IFdURjo6U3RyaW5nJik7CiAgICAgdmlydHVhbCB2b2lkIHNldEN1cnNvcihjb25z
dCBXZWJDb3JlOjpDdXJzb3ImKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJFZGl0Q29tbWFu
ZChQYXNzUmVmUHRyPFdlYkVkaXRDb21tYW5kUHJveHk+LCBXZWJQYWdlUHJveHk6OlVuZG9PclJl
ZG8pOworICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckVkaXRDb21tYW5kKFBhc3NSZWZQdHI8V2Vi
RWRpdENvbW1hbmRQcm94eT4sIFVuZG9PclJlZG8pOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhckFs
bEVkaXRDb21tYW5kcygpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRFZGl0Q29tbWFuZFN0YXRlKGNv
bnN0IFdURjo6U3RyaW5nJiwgYm9vbCwgaW50KTsKIApkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9XZWJL
aXQyLnBybyBiL1dlYktpdDIvV2ViS2l0Mi5wcm8KaW5kZXggY2FhNDdjMjg4NzI4NWYxZDI3YTVk
MTAxOTI1NWU4MDI0ZDBlMjRjMy4uMDY0ZmFlNjdjNTdkZGU0ZjVkNzIwMGYwYTFlMDczYTM4MGEy
NGE1YiAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9XZWJLaXQyLnBybworKysgYi9XZWJLaXQyL1dlYktp
dDIucHJvCkBAIC0xNDEsMTIgKzE0MSwxMCBAQCBERUZJTkVTICs9IEJVSUxESU5HX1FUX18KIAog
V0VCS0lUMl9HRU5FUkFURURfSEVBREVSUyA9IFwKICAgICAkJE9VVFBVVF9ESVIvV2ViS2l0Mi9n
ZW5lcmF0ZWQvV2ViUGFnZU1lc3NhZ2VzLmggXAotICAgICQkT1VUUFVUX0RJUi9XZWJLaXQyL2dl
bmVyYXRlZC9XZWJQYWdlUHJveHlNZXNzYWdlcy5oIFwKICAgICAkJE9VVFBVVF9ESVIvV2ViS2l0
Mi9nZW5lcmF0ZWQvV2ViUHJvY2Vzc01lc3NhZ2VzLmgKIAogV0VCS0lUMl9HRU5FUkFURURfU09V
UkNFUyA9IFwKICAgICAkJE9VVFBVVF9ESVIvV2ViS2l0Mi9nZW5lcmF0ZWQvV2ViUGFnZU1lc3Nh
Z2VSZWNlaXZlci5jcHAgXAotICAgICQkT1VUUFVUX0RJUi9XZWJLaXQyL2dlbmVyYXRlZC9XZWJQ
YWdlUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIFwKICAgICAkJE9VVFBVVF9ESVIvV2ViS2l0Mi9n
ZW5lcmF0ZWQvV2ViUHJvY2Vzc01lc3NhZ2VSZWNlaXZlci5jcHAKIAogSEVBREVSUyArPSBcCkBA
IC0xNzgsNiArMTc2LDcgQEAgSEVBREVSUyArPSBcCiAgICAgU2hhcmVkL0FQSS9jL1dLVVJMUmVz
cG9uc2UuaCBcCiAgICAgU2hhcmVkL0NvcmVJUENTdXBwb3J0L0RyYXdpbmdBcmVhTWVzc2FnZUtp
bmRzLmggXAogICAgIFNoYXJlZC9Db3JlSVBDU3VwcG9ydC9EcmF3aW5nQXJlYVByb3h5TWVzc2Fn
ZUtpbmRzLmggXAorICAgIFNoYXJlZC9Db3JlSVBDU3VwcG9ydC9XZWJQYWdlUHJveHlNZXNzYWdl
S2luZHMuaCBcCiAgICAgU2hhcmVkL0NhY2hlTW9kZWwuaCBcCiAgICAgU2hhcmVkL0RyYXdpbmdB
cmVhQmFzZS5oIFwKICAgICBTaGFyZWQvSW1tdXRhYmxlQXJyYXkuaCBcCkBAIC0xODYsNyArMTg1
LDYgQEAgSEVBREVSUyArPSBcCiAgICAgU2hhcmVkL011dGFibGVEaWN0aW9uYXJ5LmggXAogICAg
IFNoYXJlZC9OYXRpdmVXZWJLZXlib2FyZEV2ZW50LmggXAogICAgIFNoYXJlZC9Ob3RJbXBsZW1l
bnRlZC5oIFwKLSAgICBTaGFyZWQvU3RyaW5nUGFpclZlY3Rvci5oIFwKICAgICBTaGFyZWQvcXQv
TWFwcGVkTWVtb3J5LmggXAogICAgIFNoYXJlZC9xdC9QbGF0Zm9ybUNlcnRpZmljYXRlSW5mby5o
IFwKICAgICBTaGFyZWQvcXQvVXBkYXRlQ2h1bmsuaCBcCmRpZmYgLS1naXQgYS9XZWJLaXQyL1dl
YktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1dlYktpdDIvV2ViS2l0Mi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGJhOGViNGYyMWU4NzNjMDJkZmYzNTgxOGIwZGI3MmM5
MmY5NzA3NDkuLjE5MmRjMjhjNTQ4MGFlNDUyYmY5ZWVjNDBkNDliODUwMGZkZjNlMmIgMTAwNjQ0
Ci0tLSBhL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1dl
YktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xODksNiArMTg5LDgg
QEAKIAkJQkMxMTFCNTExMTJGNjE5MjAwMzM3QkFCIC8qIFBhZ2VDbGllbnRJbXBsLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMxMTFCNEMxMTJGNjE5
MjAwMzM3QkFCIC8qIFBhZ2VDbGllbnRJbXBsLm1tICovOyB9OwogCQlCQzExMUI1RDExMkY2Mjk4
MDAzMzdCQUIgLyogV2ViRXZlbnRGYWN0b3J5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCQzExMUI1QjExMkY2Mjk4MDAzMzdCQUIgLyogV2ViRXZlbnRG
YWN0b3J5LmggKi87IH07CiAJCUJDMTExQjVFMTEyRjYyOTgwMDMzN0JBQiAvKiBXZWJFdmVudEZh
Y3RvcnkubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
QzExMUI1QzExMkY2Mjk4MDAzMzdCQUIgLyogV2ViRXZlbnRGYWN0b3J5Lm1tICovOyB9OworCQlC
QzExMUI2NDExMkY2MzgzMDAzMzdCQUIgLyogV2ViUGFnZVByb3h5TWVzc2FnZUtpbmRzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzExMUI2MTExMkY2
MzgzMDAzMzdCQUIgLyogV2ViUGFnZVByb3h5TWVzc2FnZUtpbmRzLmggKi87IH07CisJCUJDMTEx
QjY1MTEyRjYzODMwMDMzN0JBQiAvKiBXZWJQcm9jZXNzTWVzc2FnZUtpbmRzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzExMUI2MjExMkY2MzgzMDAz
MzdCQUIgLyogV2ViUHJvY2Vzc01lc3NhZ2VLaW5kcy5oICovOyB9OwogCQlCQzEzMUJDOTExNzI2
QzI4MDBCNjk3MjcgLyogQ29yZUlQQ01lc3NhZ2VLaW5kcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMxMzFCQzgxMTcyNkMyODAwQjY5NzI3IC8qIENv
cmVJUENNZXNzYWdlS2luZHMuaCAqLzsgfTsKIAkJQkMxNERGNzcxMjBCNUI3OTAwODI2QzBDIC8q
IEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDMTRERjc1MTIwQjVCNzkwMDgyNkMwQyAvKiBJbmplY3RlZEJ1
bmRsZVNjcmlwdFdvcmxkLmggKi87IH07CiAJCUJDMTRERjc4MTIwQjVCNzkwMDgyNkMwQyAvKiBJ
bmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDMTRERjc2MTIwQjVCNzkwMDgyNkMwQyAvKiBJbmplY3RlZEJ1
bmRsZVNjcmlwdFdvcmxkLmNwcCAqLzsgfTsKQEAgLTM0OSw5ICszNTEsNiBAQAogCQlCQ0I5RjhC
MDExMjRFMDc3MDBBMTM3RTAgLyogV2ViUG9saWN5Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0I5RjhBRTExMjRFMDc3MDBBMTM3RTAgLyog
V2ViUG9saWN5Q2xpZW50LmggKi87IH07CiAJCUJDQkNCMENCMTIxNUUzMjEwMERFNTlDQSAvKiBJ
bW11dGFibGVEaWN0aW9uYXJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQ0JDQjBDQTEyMTVFMzIxMDBERTU5Q0EgLyogSW1tdXRhYmxlRGljdGlvbmFy
eS5oICovOyB9OwogCQlCQ0JDQjBDRDEyMTVFMzNBMDBERTU5Q0EgLyogSW1tdXRhYmxlRGljdGlv
bmFyeS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
Q0JDQjBDQzEyMTVFMzNBMDBERTU5Q0EgLyogSW1tdXRhYmxlRGljdGlvbmFyeS5jcHAgKi87IH07
Ci0JCUJDQkQzOTE0MTI1QkIxQTgwMEQyQzI5RiAvKiBXZWJQYWdlUHJveHlNZXNzYWdlUmVjZWl2
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNC
RDM5MTIxMjVCQjFBODAwRDJDMjlGIC8qIFdlYlBhZ2VQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAg
Ki87IH07Ci0JCUJDQkQzOTE1MTI1QkIxQTgwMEQyQzI5RiAvKiBXZWJQYWdlUHJveHlNZXNzYWdl
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNCRDM5
MTMxMjVCQjFBODAwRDJDMjlGIC8qIFdlYlBhZ2VQcm94eU1lc3NhZ2VzLmggKi87IH07Ci0JCUJD
QkQzQzNCMTI1QkZBN0EwMEQyQzI5RiAvKiBTdHJpbmdQYWlyVmVjdG9yLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0JEM0MzQTEyNUJGQTdBMDBEMkMy
OUYgLyogU3RyaW5nUGFpclZlY3Rvci5oICovOyB9OwogCQlCQ0M1NkY3OTExNTk5NTdEMDAxQ0NB
RjkgLyogTWFjaFBvcnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDQzU2Rjc3MTE1OTk1N0QwMDFDQ0FGOSAvKiBNYWNoUG9ydC5oICovOyB9OwogCQlC
Q0M1NzE1QjExNUFEQUVGMDAxQ0NBRjkgLyogV2ViU3lzdGVtSW50ZXJmYWNlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0M1NzE1OTExNUFEQUVGMDAx
Q0NBRjkgLyogV2ViU3lzdGVtSW50ZXJmYWNlLmggKi87IH07CiAJCUJDQzU3MTVDMTE1QURBRUYw
MDFDQ0FGOSAvKiBXZWJTeXN0ZW1JbnRlcmZhY2UubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0M1NzE1QTExNUFEQUVGMDAxQ0NBRjkgLyogV2ViU3lz
dGVtSW50ZXJmYWNlLm1tICovOyB9OwpAQCAtNjQyLDYgKzY0MSw4IEBACiAJCUJDMTExQjRDMTEy
RjYxOTIwMDMzN0JBQiAvKiBQYWdlQ2xpZW50SW1wbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IFBhZ2VDbGllbnRJbXBsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlCQzExMUI1QjExMkY2Mjk4MDAzMzdCQUIgLyogV2ViRXZlbnRGYWN0b3J5Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkV2ZW50RmFjdG9yeS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzExMUI1QzExMkY2Mjk4MDAzMzdCQUIgLyogV2Vi
RXZlbnRGYWN0b3J5Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
V2ViRXZlbnRGYWN0b3J5Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzExMUI2
MTExMkY2MzgzMDAzMzdCQUIgLyogV2ViUGFnZVByb3h5TWVzc2FnZUtpbmRzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlBhZ2VQcm94eU1lc3NhZ2VLaW5kcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzExMUI2MjExMkY2MzgzMDAzMzdCQUIgLyogV2Vi
UHJvY2Vzc01lc3NhZ2VLaW5kcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJQcm9jZXNzTWVzc2FnZUtpbmRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJD
MTMxQkM4MTE3MjZDMjgwMEI2OTcyNyAvKiBDb3JlSVBDTWVzc2FnZUtpbmRzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvcmVJUENNZXNzYWdlS2luZHMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMxNERGNzUxMjBCNUI3OTAwODI2QzBDIC8qIEluamVjdGVk
QnVuZGxlU2NyaXB0V29ybGQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5q
ZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlC
QzE0REY3NjEyMEI1Qjc5MDA4MjZDMEMgLyogSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmplY3RlZEJ1bmRsZVNjcmlw
dFdvcmxkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTgwMiwxMCArODAzLDYg
QEAKIAkJQkNCOUY4QUUxMTI0RTA3NzAwQTEzN0UwIC8qIFdlYlBvbGljeUNsaWVudC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJQb2xpY3lDbGllbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNCQ0IwQ0ExMjE1RTMyMTAwREU1OUNBIC8qIEltbXV0YWJs
ZURpY3Rpb25hcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1tdXRhYmxl
RGljdGlvbmFyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0JDQjBDQzEyMTVF
MzNBMDBERTU5Q0EgLyogSW1tdXRhYmxlRGljdGlvbmFyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBJbW11dGFibGVEaWN0aW9uYXJ5LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJQkNCRDM4RkExMjVCQUI5QTAwRDJDMjlGIC8qIFdlYlBhZ2VQcm94
eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJQYWdlUHJveHkubWVzc2Fn
ZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUJDQkQzOTEyMTI1QkIxQTgwMEQy
QzI5RiAvKiBXZWJQYWdlUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV2ViUGFnZVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQkNCRDM5MTMxMjVCQjFBODAwRDJDMjlGIC8qIFdl
YlBhZ2VQcm94eU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YlBhZ2VQcm94eU1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUJDQkQz
QzNBMTI1QkZBN0EwMEQyQzI5RiAvKiBTdHJpbmdQYWlyVmVjdG9yLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmluZ1BhaXJWZWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQkNDNTZGNzcxMTU5OTU3RDAwMUNDQUY5IC8qIE1hY2hQb3J0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hY2hQb3J0Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUJDQzU3MTU5MTE1QURBRUYwMDFDQ0FGOSAvKiBXZWJTeXN0ZW1JbnRlcmZh
Y2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU3lzdGVtSW50ZXJmYWNl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQzU3MTVBMTE1QURBRUYwMDFDQ0FG
OSAvKiBXZWJTeXN0ZW1JbnRlcmZhY2UubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBXZWJTeXN0ZW1JbnRlcmZhY2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xMTMzLDcgKzExMzAsNiBAQAogCQkJCTFBMEYyOUNBMTIwQjM3MTYwMDUzRDFCOSAv
KiBWaXNpdGVkTGlua1RhYmxlLmggKi8sCiAJCQkJQkMxREQ3QjExMTREQzM5NjAwNUFEQUYzIC8q
IFdlYkNvcmVBcmd1bWVudENvZGVycy5oICovLAogCQkJCUJDRjUwNzI2MTI0MzI5QUEwMDU5NTVB
RSAvKiBXZWJDZXJ0aWZpY2F0ZUluZm8uaCAqLywKLQkJCQlCQ0JEM0MzQTEyNUJGQTdBMDBEMkMy
OUYgLyogU3RyaW5nUGFpclZlY3Rvci5oICovLAogCQkJCTUxNTc4QjgyMTIwOUVDRUYwMEEzN0M0
QSAvKiBXZWJEYXRhLmggKi8sCiAJCQkJNTE2QTRBNUIxMjBBMkNDRDAwQzA1QjdGIC8qIFdlYkVy
cm9yLmggKi8sCiAJCQkJQkMwMzJEQUYxMEY0MzgwRjAwNThDMTVBIC8qIFdlYkV2ZW50LmggKi8s
CkBAIC0xMzM0LDcgKzEzMzAsNiBAQAogCQkJCUJDRUU5OEM1MTEzMzE0RDcwMDZCQ0MyNCAvKiBX
ZWJQYWdlTmFtZXNwYWNlLmggKi8sCiAJCQkJQkMxMTFCMEIxMTJGNUU0RjAwMzM3QkFCIC8qIFdl
YlBhZ2VQcm94eS5jcHAgKi8sCiAJCQkJQkMwMzJEQ0IxMEY0Mzg5RjAwNThDMTVBIC8qIFdlYlBh
Z2VQcm94eS5oICovLAotCQkJCUJDQkQzOEZBMTI1QkFCOUEwMEQyQzI5RiAvKiBXZWJQYWdlUHJv
eHkubWVzc2FnZXMuaW4gKi8sCiAJCQkJQkNCOUY4QUQxMTI0RTA3NzAwQTEzN0UwIC8qIFdlYlBv
bGljeUNsaWVudC5jcHAgKi8sCiAJCQkJQkNCOUY4QUUxMTI0RTA3NzAwQTEzN0UwIC8qIFdlYlBv
bGljeUNsaWVudC5oICovLAogCQkJCUJDRDU5N0ZFMTEyQjU3QkUwMEVDOEMyMyAvKiBXZWJQcmVm
ZXJlbmNlcy5jcHAgKi8sCkBAIC0xNDY1LDYgKzE0NjAsOCBAQAogCQkJCUJDOUU5Njk5MTE0NTdF
REUwMDg3MEU3MSAvKiBEcmF3aW5nQXJlYVByb3h5TWVzc2FnZUtpbmRzLmggKi8sCiAJCQkJQkNC
MjhDQkYxMjAyMzNEOTAwN0Q5OUJDIC8qIEluamVjdGVkQnVuZGxlTWVzc2FnZUtpbmRzLmggKi8s
CiAJCQkJQkNDQjc1QzUxMjAzQTFDRTAwMjIyRDFCIC8qIFdlYkNvbnRleHRNZXNzYWdlS2luZHMu
aCAqLywKKwkJCQlCQzExMUI2MTExMkY2MzgzMDAzMzdCQUIgLyogV2ViUGFnZVByb3h5TWVzc2Fn
ZUtpbmRzLmggKi8sCisJCQkJQkMxMTFCNjIxMTJGNjM4MzAwMzM3QkFCIC8qIFdlYlByb2Nlc3NN
ZXNzYWdlS2luZHMuaCAqLywKIAkJCQlCQ0I3MzQ2RDExQ0VFM0ZGMDBFQzUwMDIgLyogV2ViUHJv
Y2Vzc1Byb3h5TWVzc2FnZUtpbmRzLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IENvcmVJUENTdXBw
b3J0OwpAQCAtMTcwNSw4ICsxNzAyLDYgQEAKIAkJCQkxQThFRkE2RjEyNTJCODQxMDBGNzA2N0Yg
LyogUGx1Z2luUHJveHlNZXNzYWdlcy5oICovLAogCQkJCUMwQ0U3MjlFMTI0N0U3MUQwMEJDMEVD
NCAvKiBXZWJQYWdlTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQlDMENFNzI5RjEyNDdFNzFE
MDBCQzBFQzQgLyogV2ViUGFnZU1lc3NhZ2VzLmggKi8sCi0JCQkJQkNCRDM5MTIxMjVCQjFBODAw
RDJDMjlGIC8qIFdlYlBhZ2VQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCi0JCQkJQkNCRDM5
MTMxMjVCQjFBODAwRDJDMjlGIC8qIFdlYlBhZ2VQcm94eU1lc3NhZ2VzLmggKi8sCiAJCQkJMUEw
NDNGNjcxMjUxNEQ4QjAwRkZCRkI1IC8qIFdlYlByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZVJlY2Vp
dmVyLmNwcCAqLywKIAkJCQkxQTA0M0Y2ODEyNTE0RDhCMDBGRkJGQjUgLyogV2ViUHJvY2Vzc0Nv
bm5lY3Rpb25NZXNzYWdlcy5oICovLAogCQkJCUJDMzA2NkJDMTI1QTQ0MjEwMEU3MTI3OCAvKiBX
ZWJQcm9jZXNzTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKQEAgLTE4MTIsNiArMTgwNyw3IEBACiAJ
CQkJQkMwMzJEOEYxMEY0MzdBMDAwNThDMTVBIC8qIFdlYlBhZ2UuaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDRUU5OEM3MTEzMzE0RDcwMDZCQ0MyNCAvKiBXZWJQYWdlTmFtZXNwYWNlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQzAzMkREMTEwRjQzODlGMDA1OEMxNUEgLyogV2ViUGFnZVByb3h5Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQlCQzExMUI2NDExMkY2MzgzMDAzMzdCQUIgLyogV2ViUGFnZVBy
b3h5TWVzc2FnZUtpbmRzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTNFNzM2MTExQ0MyNjU5MDA3
QkQ1MzkgLyogV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0I5
RjhCMDExMjRFMDc3MDBBMTM3RTAgLyogV2ViUG9saWN5Q2xpZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQ0Q1OTdGRjExMkI1N0JFMDBFQzhDMjMgLyogV2ViUHJlZmVyZW5jZXMuaCBpbiBIZWFk
ZXJzICovLApAQCAtMTgxOSw2ICsxODE1LDcgQEAKIAkJCQlCQzAzMkQ5NzEwRjQzN0FGMDA1OEMx
NUEgLyogV2ViUHJvY2Vzcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE2RkEwMjAxMUUxNTI4NzAw
REIxMzcxIC8qIFdlYlByb2Nlc3NNYWluLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzAzMkREMzEw
RjQzODlGMDA1OEMxNUEgLyogV2ViUHJvY2Vzc01hbmFnZXIuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUJDMTExQjY1MTEyRjYzODMwMDMzN0JBQiAvKiBXZWJQcm9jZXNzTWVzc2FnZUtpbmRzLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQzAzMkRENTEwRjQzODlGMDA1OEMxNUEgLyogV2ViUHJvY2Vzc1By
b3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0I3MzQ2RTExQ0VFM0ZGMDBFQzUwMDIgLyogV2Vi
UHJvY2Vzc1Byb3h5TWVzc2FnZUtpbmRzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0M1NzE1QjEx
NUFEQUVGMDAxQ0NBRjkgLyogV2ViU3lzdGVtSW50ZXJmYWNlLmggaW4gSGVhZGVycyAqLywKQEAg
LTE5NDEsOCArMTkzOCw2IEBACiAJCQkJQkMzMDY1RkExMjU5MzQ0RTAwRTcxMjc4IC8qIENhY2hl
TW9kZWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMzA2NkJGMTI1QTQ0MjEwMEU3MTI3OCAvKiBX
ZWJQcm9jZXNzTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMzA2ODI0MTI1QTZCOTQw
MEU3MTI3OCAvKiBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLywK
LQkJCQlCQ0JEMzkxNTEyNUJCMUE4MDBEMkMyOUYgLyogV2ViUGFnZVByb3h5TWVzc2FnZXMuaCBp
biBIZWFkZXJzICovLAotCQkJCUJDQkQzQzNCMTI1QkZBN0EwMEQyQzI5RiAvKiBTdHJpbmdQYWly
VmVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBv
c3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTIyNDAsNyArMjIzNSw2IEBACiAJCQkJQkMzMDY1
QzQxMjU5MkY4OTAwRTcxMjc4IC8qIFdlYlByb2Nlc3NNYWMubW0gaW4gU291cmNlcyAqLywKIAkJ
CQlCQzMwNjZCRTEyNUE0NDIxMDBFNzEyNzggLyogV2ViUHJvY2Vzc01lc3NhZ2VSZWNlaXZlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzMwNjgyNTEyNUE2Qjk0MDBFNzEyNzggLyogV2ViUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlCQ0JEMzkxNDEy
NUJCMUE4MDBEMkMyOUYgLyogV2ViUGFnZVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAw
OwogCQl9OwpkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5jcHAgYi9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmNwcAppbmRleCBjMDk1YWUwMjcxMDg2ZTUyYmMxZmZiZWJmM2M5MWY0ZmI3
Nzg2ZWIxLi44ODMzOGM4NzkwMTMzYzMyOWE5NmMwMDcxZTZlZjQ0YjlkNjNmMGJlIDEwMDY0NAot
LS0gYS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNw
cAorKysgYi9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmNwcApAQCAtMzYsNyArMzYsNyBAQAogI2luY2x1ZGUgIldlYkZyYW1lTG9hZGVyQ2xpZW50Lmgi
CiAjaW5jbHVkZSAiV2ViUGFnZS5oIgogI2luY2x1ZGUgIldlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnMuaCIKLSNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlBh
Z2VQcm94eU1lc3NhZ2VLaW5kcy5oIgogI2luY2x1ZGUgIldlYlBvcHVwTWVudS5oIgogI2luY2x1
ZGUgIldlYlByZWZlcmVuY2VzU3RvcmUuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCkBAIC01
Nyw3ICs1Nyw3IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpjaHJvbWVEZXN0cm95ZWQoKQogICAg
IGRlbGV0ZSB0aGlzOwogfQogCi12b2lkIFdlYkNocm9tZUNsaWVudDo6c2V0V2luZG93UmVjdChj
b25zdCBGbG9hdFJlY3QmIHdpbmRvd1JlY3QpCit2b2lkIFdlYkNocm9tZUNsaWVudDo6c2V0V2lu
ZG93UmVjdChjb25zdCBGbG9hdFJlY3QmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CkBA
IC05OCw3ICs5OCw4IEBAIGJvb2wgV2ViQ2hyb21lQ2xpZW50OjpjYW5UYWtlRm9jdXMoRm9jdXNE
aXJlY3Rpb24pCiAKIHZvaWQgV2ViQ2hyb21lQ2xpZW50Ojp0YWtlRm9jdXMoRm9jdXNEaXJlY3Rp
b24gZGlyZWN0aW9uKQogewotICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpUYWtlRm9jdXMoZGlyZWN0aW9uID09IEZvY3Vz
RGlyZWN0aW9uRm9yd2FyZCA/IHRydWUgOiBmYWxzZSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAg
IFdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZChXZWJQYWdlUHJveHlNZXNz
YWdlOjpUYWtlRm9jdXMsIG1fcGFnZS0+cGFnZUlEKCksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdGlvbiA9PSBGb2N1c0RpcmVjdGlvbkZvcndhcmQg
PyB0cnVlIDogZmFsc2UpOwogfQogCiB2b2lkIFdlYkNocm9tZUNsaWVudDo6Zm9jdXNlZE5vZGVD
aGFuZ2VkKE5vZGUqKQpAQCAtMTEwLDkgKzExMSwxMCBAQCBQYWdlKiBXZWJDaHJvbWVDbGllbnQ6
OmNyZWF0ZVdpbmRvdyhGcmFtZSosIGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmLCBjb25zdCBXaW5k
bwogewogICAgIHVpbnQ2NF90IG5ld1BhZ2VJRCA9IDA7CiAgICAgV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycyBwYXJhbWV0ZXJzOwotICAgIGlmICghV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVj
dGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDcmVhdGVOZXdQYWdlKCks
Ci0gICAgICAgICAgICBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDcmVhdGVOZXdQYWdlOjpSZXBs
eShuZXdQYWdlSUQsIHBhcmFtZXRlcnMpLAotICAgICAgICAgICAgbV9wYWdlLT5wYWdlSUQoKSwg
Q29yZUlQQzo6Q29ubmVjdGlvbjo6Tm9UaW1lb3V0KSkgeworICAgIGlmICghV2ViUHJvY2Vzczo6
c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5kU3luYyhXZWJQYWdlUHJveHlNZXNzYWdlOjpDcmVh
dGVOZXdQYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtX3BhZ2UtPnBhZ2VJRCgpLCBDb3JlSVBDOjpJbigpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3JlSVBDOjpPdXQobmV3UGFn
ZUlELCBwYXJhbWV0ZXJzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQ29yZUlQQzo6Q29ubmVjdGlvbjo6Tm9UaW1lb3V0KSkgewogICAgICAg
ICByZXR1cm4gMDsKICAgICB9CiAKQEAgLTIzNCw4ICsyMzYsMTAgQEAgdm9pZCBXZWJDaHJvbWVD
bGllbnQ6OnJ1bkphdmFTY3JpcHRBbGVydChGcmFtZSogZnJhbWUsIGNvbnN0IFN0cmluZyYgYWxl
cnRUZXh0KQogICAgIC8vIE5vdGlmeSB0aGUgYnVuZGxlIGNsaWVudC4KICAgICBtX3BhZ2UtPmlu
amVjdGVkQnVuZGxlVUlDbGllbnQoKS53aWxsUnVuSmF2YVNjcmlwdEFsZXJ0KG1fcGFnZSwgYWxl
cnRUZXh0LCB3ZWJGcmFtZSk7CiAKLSAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9u
KCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkphdmFTY3JpcHRBbGVydCh3
ZWJGcmFtZS0+ZnJhbWVJRCgpLCBhbGVydFRleHQpLAotICAgICAgICBNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpSdW5KYXZhU2NyaXB0QWxlcnQ6OlJlcGx5KCksIG1fcGFnZS0+cGFnZUlEKCksIENv
cmVJUEM6OkNvbm5lY3Rpb246Ok5vVGltZW91dCk7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCku
Y29ubmVjdGlvbigpLT5zZW5kU3luYyhXZWJQYWdlUHJveHlNZXNzYWdlOjpSdW5KYXZhU2NyaXB0
QWxlcnQsIG1fcGFnZS0+cGFnZUlEKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBDb3JlSVBDOjpJbih3ZWJGcmFtZS0+ZnJhbWVJRCgpLCBhbGVydFRl
eHQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29y
ZUlQQzo6T3V0KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBDb3JlSVBDOjpDb25uZWN0aW9uOjpOb1RpbWVvdXQpOwogfQogCiBib29sIFdlYkNocm9t
ZUNsaWVudDo6cnVuSmF2YVNjcmlwdENvbmZpcm0oRnJhbWUqIGZyYW1lLCBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UpCkBAIC0yNDYsOSArMjUwLDEyIEBAIGJvb2wgV2ViQ2hyb21lQ2xpZW50OjpydW5K
YXZhU2NyaXB0Q29uZmlybShGcmFtZSogZnJhbWUsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKICAg
ICBtX3BhZ2UtPmluamVjdGVkQnVuZGxlVUlDbGllbnQoKS53aWxsUnVuSmF2YVNjcmlwdENvbmZp
cm0obV9wYWdlLCBtZXNzYWdlLCB3ZWJGcmFtZSk7CiAKICAgICBib29sIHJlc3VsdCA9IGZhbHNl
OwotICAgIGlmICghV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5kU3luYyhN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5KYXZhU2NyaXB0Q29uZmlybSh3ZWJGcmFtZS0+ZnJh
bWVJRCgpLCBtZXNzYWdlKSwKLSAgICAgICAgICAgICBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpS
dW5KYXZhU2NyaXB0Q29uZmlybTo6UmVwbHkocmVzdWx0KSwgbV9wYWdlLT5wYWdlSUQoKSwgQ29y
ZUlQQzo6Q29ubmVjdGlvbjo6Tm9UaW1lb3V0KSkKKyAgICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJl
ZCgpLmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoV2ViUGFnZVByb3h5TWVzc2FnZTo6UnVuSmF2YVNj
cmlwdENvbmZpcm0sIG1fcGFnZS0+cGFnZUlEKCksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvcmVJUEM6OkluKHdlYkZyYW1lLT5mcmFtZUlE
KCksIG1lc3NhZ2UpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBDb3JlSVBDOjpPdXQocmVzdWx0KSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29yZUlQQzo6Q29ubmVjdGlvbjo6Tm9UaW1l
b3V0KSkgewogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogCiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KQEAgLTI2MCw5ICsyNjcsMTIgQEAgYm9vbCBXZWJDaHJvbWVDbGllbnQ6OnJ1bkphdmFT
Y3JpcHRQcm9tcHQoRnJhbWUqIGZyYW1lLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGMKICAgICAv
LyBOb3RpZnkgdGhlIGJ1bmRsZSBjbGllbnQuCiAgICAgbV9wYWdlLT5pbmplY3RlZEJ1bmRsZVVJ
Q2xpZW50KCkud2lsbFJ1bkphdmFTY3JpcHRQcm9tcHQobV9wYWdlLCBtZXNzYWdlLCBkZWZhdWx0
VmFsdWUsIHdlYkZyYW1lKTsKIAotICAgIGlmICghV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVj
dGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5KYXZhU2NyaXB0UHJv
bXB0KHdlYkZyYW1lLT5mcmFtZUlEKCksIG1lc3NhZ2UsIGRlZmF1bHRWYWx1ZSksCi0gICAgICAg
ICAgICAgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuSmF2YVNjcmlwdFByb21wdDo6UmVwbHko
cmVzdWx0KSwgbV9wYWdlLT5wYWdlSUQoKSwgQ29yZUlQQzo6Q29ubmVjdGlvbjo6Tm9UaW1lb3V0
KSkKKyAgICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMo
V2ViUGFnZVByb3h5TWVzc2FnZTo6UnVuSmF2YVNjcmlwdFByb21wdCwgbV9wYWdlLT5wYWdlSUQo
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Q29yZUlQQzo6SW4od2ViRnJhbWUtPmZyYW1lSUQoKSwgbWVzc2FnZSwgZGVmYXVsdFZhbHVlKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29y
ZUlQQzo6T3V0KHJlc3VsdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIENvcmVJUEM6OkNvbm5lY3Rpb246Ok5vVGltZW91dCkpIHsKICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KIAogICAgIHJldHVybiAhcmVzdWx0LmlzTnVsbCgpOwog
fQpAQCAtMjcyLDcgKzI4Miw3IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpzZXRTdGF0dXNiYXJU
ZXh0KGNvbnN0IFN0cmluZyYgc3RhdHVzYmFyVGV4dCkKICAgICAvLyBOb3RpZnkgdGhlIGJ1bmRs
ZSBjbGllbnQuCiAgICAgbV9wYWdlLT5pbmplY3RlZEJ1bmRsZVVJQ2xpZW50KCkud2lsbFNldFN0
YXR1c2JhclRleHQobV9wYWdlLCBzdGF0dXNiYXJUZXh0KTsKIAotICAgIFdlYlByb2Nlc3M6OnNo
YXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTZXRTdGF0
dXNUZXh0KHN0YXR1c2JhclRleHQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBXZWJQcm9jZXNz
OjpzaGFyZWQoKS5jb25uZWN0aW9uKCktPnNlbmQoV2ViUGFnZVByb3h5TWVzc2FnZTo6U2V0U3Rh
dHVzVGV4dCwgbV9wYWdlLT5wYWdlSUQoKSwgc3RhdHVzYmFyVGV4dCk7CiB9CiAKIGJvb2wgV2Vi
Q2hyb21lQ2xpZW50OjpzaG91bGRJbnRlcnJ1cHRKYXZhU2NyaXB0KCkKQEAgLTMzMyw4ICszNDMs
OCBAQCBQbGF0Zm9ybVBhZ2VDbGllbnQgV2ViQ2hyb21lQ2xpZW50OjpwbGF0Zm9ybVBhZ2VDbGll
bnQoKSBjb25zdAogdm9pZCBXZWJDaHJvbWVDbGllbnQ6OmNvbnRlbnRzU2l6ZUNoYW5nZWQoRnJh
bWUqIGZyYW1lLCBjb25zdCBJbnRTaXplJiBzaXplKSBjb25zdAogewogICAgIFdlYkZyYW1lKiB3
ZWJGcmFtZSA9ICBzdGF0aWNfY2FzdDxXZWJGcmFtZUxvYWRlckNsaWVudCo+KGZyYW1lLT5sb2Fk
ZXIoKS0+Y2xpZW50KCkpLT53ZWJGcmFtZSgpOwotCi0gICAgV2ViUHJvY2Vzczo6c2hhcmVkKCku
Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNvbnRlbnRzU2l6ZUNo
YW5nZWQod2ViRnJhbWUtPmZyYW1lSUQoKSwgc2l6ZSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAg
IFdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZChXZWJQYWdlUHJveHlNZXNz
YWdlOjpDb250ZW50c1NpemVDaGFuZ2VkLCBtX3BhZ2UtPnBhZ2VJRCgpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3JlSVBDOjpJbih3ZWJGcmFtZS0+ZnJh
bWVJRCgpLCBzaXplKSk7CiB9CiAKIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpzY3JvbGxSZWN0SW50
b1ZpZXcoY29uc3QgSW50UmVjdCYsIGNvbnN0IFNjcm9sbFZpZXcqKSBjb25zdApAQCAtMzU1LDcg
KzM2NSw3IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50Ojptb3VzZURpZE1vdmVPdmVyRWxlbWVudChj
b25zdCBIaXRUZXN0UmVzdWx0JiBoaXRUZXN0UmVzdWx0CiAgICAgbV9wYWdlLT5pbmplY3RlZEJ1
bmRsZVVJQ2xpZW50KCkubW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQobV9wYWdlLCBoaXRUZXN0UmVz
dWx0LCBzdGF0aWNfY2FzdDxXZWJFdmVudDo6TW9kaWZpZXJzPihtb2RpZmllckZsYWdzKSwgdXNl
ckRhdGEpOwogCiAgICAgLy8gTm90aWZ5IHRoZSBVSVByb2Nlc3MuCi0gICAgV2ViUHJvY2Vzczo6
c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Ok1vdXNl
RGlkTW92ZU92ZXJFbGVtZW50KG1vZGlmaWVyRmxhZ3MsIEluamVjdGVkQnVuZGxlVXNlck1lc3Nh
Z2VFbmNvZGVyKHVzZXJEYXRhLmdldCgpKSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIFdlYlBy
b2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZChXZWJQYWdlUHJveHlNZXNzYWdlOjpN
b3VzZURpZE1vdmVPdmVyRWxlbWVudCwgbV9wYWdlLT5wYWdlSUQoKSwgQ29yZUlQQzo6SW4obW9k
aWZpZXJGbGFncywgSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIodXNlckRhdGEuZ2V0
KCkpKSk7CiB9CiAKIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpzZXRUb29sVGlwKGNvbnN0IFN0cmlu
ZyYgdG9vbFRpcCwgVGV4dERpcmVjdGlvbikKQEAgLTM2Niw3ICszNzYsNyBAQCB2b2lkIFdlYkNo
cm9tZUNsaWVudDo6c2V0VG9vbFRpcChjb25zdCBTdHJpbmcmIHRvb2xUaXAsIFRleHREaXJlY3Rp
b24pCiAgICAgICAgIHJldHVybjsKICAgICBtX2NhY2hlZFRvb2xUaXAgPSB0b29sVGlwOwogCi0g
ICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OlNldFRvb2xUaXAobV9jYWNoZWRUb29sVGlwKSwgbV9wYWdlLT5wYWdlSUQoKSk7
CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5kKFdlYlBhZ2VQcm94
eU1lc3NhZ2U6OlNldFRvb2xUaXAsIG1fcGFnZS0+cGFnZUlEKCksIENvcmVJUEM6OkluKG1fY2Fj
aGVkVG9vbFRpcCkpOwogfQogCiB2b2lkIFdlYkNocm9tZUNsaWVudDo6cHJpbnQoRnJhbWUqKQpA
QCAtNDY2LDcgKzQ3Niw3IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpjaG9vc2VJY29uRm9yRmls
ZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mLCBGaWxlQ2hvb3NlciopCiB2b2lkIFdlYkNocm9tZUNs
aWVudDo6c2V0Q3Vyc29yKGNvbnN0IEN1cnNvciYgY3Vyc29yKQogewogI2lmIFVTRShMQVpZX05B
VElWRV9DVVJTT1IpCi0gICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNldEN1cnNvcihjdXJzb3IpLCBtX3BhZ2UtPnBhZ2VJ
RCgpKTsKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9uKCktPnNlbmQoV2ViUGFn
ZVByb3h5TWVzc2FnZTo6U2V0Q3Vyc29yLCBtX3BhZ2UtPnBhZ2VJRCgpLCBDb3JlSVBDOjpJbihj
dXJzb3IpKTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcCBiL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCmluZGV4IDU4NTJkZjE2YmI0YTdmZTk5ZTJl
M2I5MGJkYWRlY2E2ZDVmMDQ4NjQuLjIzNWY1Y2UzMWNkYmZjZjUwYjY5ODZjNjBkNjY1ZjljNTgx
ZTFiNmUgMTAwNjQ0Ci0tLSBhL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuY3BwCisrKyBiL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAKICNpbmNsdWRlICJXZWJGcmFt
ZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKLSNpbmNsdWRlICJXZWJQYWdl
UHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VLaW5kcy5oIgog
I2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0FyY2hpdmVSZXNvdXJj
ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnRGcmFnbWVudC5oPgpAQCAtMjExLDcgKzIx
MSw4IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpyZWdpc3RlckNvbW1hbmRGb3JVbmRvKFBhc3NS
ZWZQdHI8RWRpdENvbW1hbmQ+IGNvbW1hbmQpCiAgICAgbV9wYWdlLT5hZGRXZWJFZGl0Q29tbWFu
ZCh3ZWJDb21tYW5kLT5jb21tYW5kSUQoKSwgd2ViQ29tbWFuZC5nZXQoKSk7CiAgICAgdWludDMy
X3QgZWRpdEFjdGlvbiA9IHN0YXRpY19jYXN0PHVpbnQzMl90Pih3ZWJDb21tYW5kLT5jb21tYW5k
KCktPmVkaXRpbmdBY3Rpb24oKSk7CiAKLSAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0
aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVnaXN0ZXJFZGl0Q29tbWFuZEZv
clVuZG8od2ViQ29tbWFuZC0+Y29tbWFuZElEKCksIGVkaXRBY3Rpb24pLCBtX3BhZ2UtPnBhZ2VJ
RCgpKTsKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9uKCktPnNlbmQoV2ViUGFn
ZVByb3h5TWVzc2FnZTo6UmVnaXN0ZXJFZGl0Q29tbWFuZEZvclVuZG8sIG1fcGFnZS0+cGFnZUlE
KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvcmVJUEM6
OkluKHdlYkNvbW1hbmQtPmNvbW1hbmRJRCgpLCBlZGl0QWN0aW9uKSk7CiB9CiAKIHZvaWQgV2Vi
RWRpdG9yQ2xpZW50OjpyZWdpc3RlckNvbW1hbmRGb3JSZWRvKFBhc3NSZWZQdHI8RWRpdENvbW1h
bmQ+KQpAQCAtMjIwLDcgKzIyMSw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpyZWdpc3RlckNv
bW1hbmRGb3JSZWRvKFBhc3NSZWZQdHI8RWRpdENvbW1hbmQ+KQogCiB2b2lkIFdlYkVkaXRvckNs
aWVudDo6Y2xlYXJVbmRvUmVkb09wZXJhdGlvbnMoKQogewotICAgIFdlYlByb2Nlc3M6OnNoYXJl
ZCgpLmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDbGVhckFsbEVk
aXRDb21tYW5kcygpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQo
KS5jb25uZWN0aW9uKCktPnNlbmQoV2ViUGFnZVByb3h5TWVzc2FnZTo6Q2xlYXJBbGxFZGl0Q29t
bWFuZHMsIG1fcGFnZS0+cGFnZUlEKCksIENvcmVJUEM6OkluKCkpOwogfQogCiBib29sIFdlYkVk
aXRvckNsaWVudDo6Y2FuVW5kbygpIGNvbnN0CmRpZmYgLS1naXQgYS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCBkZWI5
MGUzMzk5MDk5YzViYjQ0NWM3YTg2MDJjODI0YmZmNmE1ZDIzLi43Nzg2ZjdjZDI3ZmIxYjM0NjRi
NDBkMmY2YTZiYjQ1MDExODI4M2FiIDEwMDY0NAotLS0gYS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTMxLDcgKzMx
LDYgQEAKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlQ29kZXJzLmgiCiAjaW5j
bHVkZSAiUGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8uaCIKICNpbmNsdWRlICJQbHVnaW5WaWV3Lmgi
Ci0jaW5jbHVkZSAiU3RyaW5nUGFpclZlY3Rvci5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVu
dENvZGVycy5oIgogI2luY2x1ZGUgIldlYkVycm9ycy5oIgogI2luY2x1ZGUgIldlYkV2ZW50Lmgi
CkBAIC0zOSw3ICszOCw3IEBACiAjaW5jbHVkZSAiV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5o
IgogI2luY2x1ZGUgIldlYk5hdmlnYXRpb25EYXRhU3RvcmUuaCIKICNpbmNsdWRlICJXZWJQYWdl
LmgiCi0jaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJQYWdl
UHJveHlNZXNzYWdlS2luZHMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAi
V2ViUHJvY2Vzc1Byb3h5TWVzc2FnZUtpbmRzLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
QVBJQ2FzdC5oPgpAQCAtMTI2LDggKzEyNSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmRldGFjaGVkRnJvbVBhcmVudDIoKQogICAgIHdlYlBhZ2UtPmluamVjdGVkQnVuZGxlTG9hZGVy
Q2xpZW50KCkuZGlkUmVtb3ZlRnJhbWVGcm9tSGllcmFyY2h5KHdlYlBhZ2UsIG1fZnJhbWUsIHVz
ZXJEYXRhKTsKIAogICAgIC8vIE5vdGlmeSB0aGUgVUlQcm9jZXNzLgotICAgIFdlYlByb2Nlc3M6
OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRS
ZW1vdmVGcmFtZUZyb21IaWVyYXJjaHkobV9mcmFtZS0+ZnJhbWVJRCgpLCBJbmplY3RlZEJ1bmRs
ZVVzZXJNZXNzYWdlRW5jb2Rlcih1c2VyRGF0YS5nZXQoKSkpLCB3ZWJQYWdlLT5wYWdlSUQoKSk7
Ci0KKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9uKCktPnNlbmQoV2ViUGFnZVBy
b3h5TWVzc2FnZTo6RGlkUmVtb3ZlRnJhbWVGcm9tSGllcmFyY2h5LCB3ZWJQYWdlLT5wYWdlSUQo
KSwgQ29yZUlQQzo6SW4obV9mcmFtZS0+ZnJhbWVJRCgpLCBJbmplY3RlZEJ1bmRsZVVzZXJNZXNz
YWdlRW5jb2Rlcih1c2VyRGF0YS5nZXQoKSkpKTsKIH0KIAogdm9pZCBXZWJGcmFtZUxvYWRlckNs
aWVudDo6ZGV0YWNoZWRGcm9tUGFyZW50MygpCkBAIC0yMjUsNyArMjIzLDcgQEAgdm9pZCBXZWJG
cmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92
aXNpb25hbExvYWQoKQogICAgIHdlYlBhZ2UtPmluamVjdGVkQnVuZGxlTG9hZGVyQ2xpZW50KCku
ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUod2ViUGFn
ZSwgbV9mcmFtZSwgdXNlckRhdGEpOwogCiAgICAgLy8gTm90aWZ5IHRoZSBVSVByb2Nlc3MuCi0g
ICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZy
YW1lKG1fZnJhbWUtPmZyYW1lSUQoKSwgdXJsLCBJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5j
b2Rlcih1c2VyRGF0YS5nZXQoKSkpLCB3ZWJQYWdlLT5wYWdlSUQoKSk7CisgICAgV2ViUHJvY2Vz
czo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5kKFdlYlBhZ2VQcm94eU1lc3NhZ2U6OkRpZFJl
Y2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lLCB3ZWJQYWdlLT5w
YWdlSUQoKSwgQ29yZUlQQzo6SW4obV9mcmFtZS0+ZnJhbWVJRCgpLCB1cmwsIEluamVjdGVkQnVu
ZGxlVXNlck1lc3NhZ2VFbmNvZGVyKHVzZXJEYXRhLmdldCgpKSkpOwogfQogCiB2b2lkIFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENhbmNlbENsaWVudFJlZGlyZWN0KCkKQEAgLTI5
Nyw3ICsyOTUsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFN0YXJ0
UHJvdmlzaW9uYWxMb2FkKCkKICAgICB3ZWJQYWdlLT5pbmplY3RlZEJ1bmRsZUxvYWRlckNsaWVu
dCgpLmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUod2ViUGFnZSwgbV9mcmFtZSwgdXNl
ckRhdGEpOwogCiAgICAgLy8gTm90aWZ5IHRoZSBVSVByb2Nlc3MuCi0gICAgV2ViUHJvY2Vzczo6
c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFN0
YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgpLCB1cmwsIEluamVj
dGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyKHVzZXJEYXRhLmdldCgpKSksIHdlYlBhZ2UtPnBh
Z2VJRCgpKTsKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9uKCktPnNlbmQoV2Vi
UGFnZVByb3h5TWVzc2FnZTo6RGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSwgd2ViUGFn
ZS0+cGFnZUlEKCksIENvcmVJUEM6OkluKG1fZnJhbWUtPmZyYW1lSUQoKSwgdXJsLCBJbmplY3Rl
ZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2Rlcih1c2VyRGF0YS5nZXQoKSkpKTsKIH0KIAogdm9pZCBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5n
JiB0aXRsZSkKQEAgLTMxMiw3ICszMTAsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmcmIHRpdGxlKQogICAgIHdlYlBhZ2Ut
PmluamVjdGVkQnVuZGxlTG9hZGVyQ2xpZW50KCkuZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUod2Vi
UGFnZSwgdGl0bGUsIG1fZnJhbWUsIHVzZXJEYXRhKTsKIAogICAgIC8vIE5vdGlmeSB0aGUgVUlQ
cm9jZXNzLgotICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpEaWRSZWNlaXZlVGl0bGVGb3JGcmFtZShtX2ZyYW1lLT5mcmFt
ZUlEKCksIHRpdGxlLCBJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2Rlcih1c2VyRGF0YS5n
ZXQoKSkpLCB3ZWJQYWdlLT5wYWdlSUQoKSk7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29u
bmVjdGlvbigpLT5zZW5kKFdlYlBhZ2VQcm94eU1lc3NhZ2U6OkRpZFJlY2VpdmVUaXRsZUZvckZy
YW1lLCB3ZWJQYWdlLT5wYWdlSUQoKSwgQ29yZUlQQzo6SW4obV9mcmFtZS0+ZnJhbWVJRCgpLCB0
aXRsZSwgSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIodXNlckRhdGEuZ2V0KCkpKSk7
CiB9CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMo
KQpAQCAtMzMzLDcgKzMzMSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNo
RGlkQ29tbWl0TG9hZCgpCiAgICAgd2ViUGFnZS0+aW5qZWN0ZWRCdW5kbGVMb2FkZXJDbGllbnQo
KS5kaWRDb21taXRMb2FkRm9yRnJhbWUod2ViUGFnZSwgbV9mcmFtZSwgdXNlckRhdGEpOwogCiAg
ICAgLy8gTm90aWZ5IHRoZSBVSVByb2Nlc3MuCi0gICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZENvbW1pdExvYWRGb3JG
cmFtZShtX2ZyYW1lLT5mcmFtZUlEKCksIHJlc3BvbnNlLm1pbWVUeXBlKCksIFBsYXRmb3JtQ2Vy
dGlmaWNhdGVJbmZvKHJlc3BvbnNlKSwgSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIo
dXNlckRhdGEuZ2V0KCkpKSwgd2ViUGFnZS0+cGFnZUlEKCkpOworICAgIFdlYlByb2Nlc3M6OnNo
YXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZChXZWJQYWdlUHJveHlNZXNzYWdlOjpEaWRDb21taXRM
b2FkRm9yRnJhbWUsIHdlYlBhZ2UtPnBhZ2VJRCgpLCBDb3JlSVBDOjpJbihtX2ZyYW1lLT5mcmFt
ZUlEKCksIHJlc3BvbnNlLm1pbWVUeXBlKCksIFBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvKHJlc3Bv
bnNlKSwgSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIodXNlckRhdGEuZ2V0KCkpKSk7
CiB9CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmFpbFByb3Zpc2lv
bmFsTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKQEAgLTM0OCw3ICszNDYsNyBAQCB2
b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQo
Y29uc3QgUmVzb3VyY2VFcnJvciYgZQogICAgIHdlYlBhZ2UtPmluamVjdGVkQnVuZGxlTG9hZGVy
Q2xpZW50KCkuZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvckZvckZyYW1lKHdlYlBhZ2Us
IG1fZnJhbWUsIHVzZXJEYXRhKTsKIAogICAgIC8vIE5vdGlmeSB0aGUgVUlQcm9jZXNzLgotICAg
IFdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpEaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgp
LCBJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2Rlcih1c2VyRGF0YS5nZXQoKSkpLCB3ZWJQ
YWdlLT5wYWdlSUQoKSk7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5z
ZW5kKFdlYlBhZ2VQcm94eU1lc3NhZ2U6OkRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZSwg
d2ViUGFnZS0+cGFnZUlEKCksIENvcmVJUEM6OkluKG1fZnJhbWUtPmZyYW1lSUQoKSwgSW5qZWN0
ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIodXNlckRhdGEuZ2V0KCkpKSk7CiAgICAgCiAgICAg
Ly8gSWYgd2UgaGF2ZSBhIGxvYWQgbGlzdGVuZXIsIG5vdGlmeSBpdC4KICAgICBpZiAoV2ViRnJh
bWU6OkxvYWRMaXN0ZW5lciogbG9hZExpc3RlbmVyID0gbV9mcmFtZS0+bG9hZExpc3RlbmVyKCkp
CkBAIC0zNjcsNyArMzY1LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hE
aWRGYWlsTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKICAgICB3ZWJQYWdlLT5pbmpl
Y3RlZEJ1bmRsZUxvYWRlckNsaWVudCgpLmRpZEZhaWxMb2FkV2l0aEVycm9yRm9yRnJhbWUod2Vi
UGFnZSwgbV9mcmFtZSwgdXNlckRhdGEpOwogCiAgICAgLy8gTm90aWZ5IHRoZSBVSVByb2Nlc3Mu
Ci0gICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkRpZEZhaWxMb2FkRm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgpLCBJbmpl
Y3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2Rlcih1c2VyRGF0YS5nZXQoKSkpLCB3ZWJQYWdlLT5w
YWdlSUQoKSk7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5kKFdl
YlBhZ2VQcm94eU1lc3NhZ2U6OkRpZEZhaWxMb2FkRm9yRnJhbWUsIHdlYlBhZ2UtPnBhZ2VJRCgp
LCBDb3JlSVBDOjpJbihtX2ZyYW1lLT5mcmFtZUlEKCksIEluamVjdGVkQnVuZGxlVXNlck1lc3Nh
Z2VFbmNvZGVyKHVzZXJEYXRhLmdldCgpKSkpOwogCiAgICAgLy8gSWYgd2UgaGF2ZSBhIGxvYWQg
bGlzdGVuZXIsIG5vdGlmeSBpdC4KICAgICBpZiAoV2ViRnJhbWU6OkxvYWRMaXN0ZW5lciogbG9h
ZExpc3RlbmVyID0gbV9mcmFtZS0+bG9hZExpc3RlbmVyKCkpCkBAIC0zODYsNyArMzg0LDcgQEAg
dm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGaW5pc2hEb2N1bWVudExvYWQo
KQogICAgIHdlYlBhZ2UtPmluamVjdGVkQnVuZGxlTG9hZGVyQ2xpZW50KCkuZGlkRmluaXNoRG9j
dW1lbnRMb2FkRm9yRnJhbWUod2ViUGFnZSwgbV9mcmFtZSwgdXNlckRhdGEpOwogCiAgICAgLy8g
Tm90aWZ5IHRoZSBVSVByb2Nlc3MuCi0gICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlv
bigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZEZpbmlzaERvY3VtZW50TG9hZEZv
ckZyYW1lKG1fZnJhbWUtPmZyYW1lSUQoKSwgSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29k
ZXIodXNlckRhdGEuZ2V0KCkpKSwgd2ViUGFnZS0+cGFnZUlEKCkpOworICAgIFdlYlByb2Nlc3M6
OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZChXZWJQYWdlUHJveHlNZXNzYWdlOjpEaWRGaW5p
c2hEb2N1bWVudExvYWRGb3JGcmFtZSwgd2ViUGFnZS0+cGFnZUlEKCksIENvcmVJUEM6OkluKG1f
ZnJhbWUtPmZyYW1lSUQoKSwgSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIodXNlckRh
dGEuZ2V0KCkpKSk7CiB9CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlk
RmluaXNoTG9hZCgpCkBAIC00MDEsNyArMzk5LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6ZGlzcGF0Y2hEaWRGaW5pc2hMb2FkKCkKICAgICB3ZWJQYWdlLT5pbmplY3RlZEJ1bmRsZUxv
YWRlckNsaWVudCgpLmRpZEZpbmlzaExvYWRGb3JGcmFtZSh3ZWJQYWdlLCBtX2ZyYW1lLCB1c2Vy
RGF0YSk7CiAKICAgICAvLyBOb3RpZnkgdGhlIFVJUHJvY2Vzcy4KLSAgICBXZWJQcm9jZXNzOjpz
aGFyZWQoKS5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkRmlu
aXNoTG9hZEZvckZyYW1lKG1fZnJhbWUtPmZyYW1lSUQoKSwgSW5qZWN0ZWRCdW5kbGVVc2VyTWVz
c2FnZUVuY29kZXIodXNlckRhdGEuZ2V0KCkpKSwgd2ViUGFnZS0+cGFnZUlEKCkpOworICAgIFdl
YlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZChXZWJQYWdlUHJveHlNZXNzYWdl
OjpEaWRGaW5pc2hMb2FkRm9yRnJhbWUsIHdlYlBhZ2UtPnBhZ2VJRCgpLCBDb3JlSVBDOjpJbiht
X2ZyYW1lLT5mcmFtZUlEKCksIEluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyKHVzZXJE
YXRhLmdldCgpKSkpOwogCiAgICAgLy8gSWYgd2UgaGF2ZSBhIGxvYWQgbGlzdGVuZXIsIG5vdGlm
eSBpdC4KICAgICBpZiAoV2ViRnJhbWU6OkxvYWRMaXN0ZW5lciogbG9hZExpc3RlbmVyID0gbV9m
cmFtZS0+bG9hZExpc3RlbmVyKCkpCkBAIC00MjAsNyArNDE4LDcgQEAgdm9pZCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGaXJzdExheW91dCgpCiAgICAgd2ViUGFnZS0+aW5qZWN0
ZWRCdW5kbGVMb2FkZXJDbGllbnQoKS5kaWRGaXJzdExheW91dEZvckZyYW1lKHdlYlBhZ2UsIG1f
ZnJhbWUsIHVzZXJEYXRhKTsKIAogICAgIC8vIE5vdGlmeSB0aGUgVUlQcm9jZXNzLgotICAgIFdl
YlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpEaWRGaXJzdExheW91dEZvckZyYW1lKG1fZnJhbWUtPmZyYW1lSUQoKSwgSW5qZWN0ZWRC
dW5kbGVVc2VyTWVzc2FnZUVuY29kZXIodXNlckRhdGEuZ2V0KCkpKSwgd2ViUGFnZS0+cGFnZUlE
KCkpOworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZChXZWJQYWdl
UHJveHlNZXNzYWdlOjpEaWRGaXJzdExheW91dEZvckZyYW1lLCB3ZWJQYWdlLT5wYWdlSUQoKSwg
Q29yZUlQQzo6SW4obV9mcmFtZS0+ZnJhbWVJRCgpLCBJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdl
RW5jb2Rlcih1c2VyRGF0YS5nZXQoKSkpKTsKIH0KIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6ZGlzcGF0Y2hEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQoKQpAQCAtNDM1LDcgKzQz
Myw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmlyc3RWaXN1YWxs
eU5vbkVtcHR5TGF5b3V0KCkKICAgICB3ZWJQYWdlLT5pbmplY3RlZEJ1bmRsZUxvYWRlckNsaWVu
dCgpLmRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckZyYW1lKHdlYlBhZ2UsIG1fZnJh
bWUsIHVzZXJEYXRhKTsKIAogICAgIC8vIE5vdGlmeSB0aGUgVUlQcm9jZXNzLgotICAgIFdlYlBy
b2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZShtX2ZyYW1lLT5mcmFtZUlE
KCksIEluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyKHVzZXJEYXRhLmdldCgpKSksIHdl
YlBhZ2UtPnBhZ2VJRCgpKTsKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9uKCkt
PnNlbmQoV2ViUGFnZVByb3h5TWVzc2FnZTo6RGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0
Rm9yRnJhbWUsIHdlYlBhZ2UtPnBhZ2VJRCgpLCBDb3JlSVBDOjpJbihtX2ZyYW1lLT5mcmFtZUlE
KCksIEluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyKHVzZXJEYXRhLmdldCgpKSkpOwog
fQogCiBGcmFtZSogV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoQ3JlYXRlUGFnZSgpCkBA
IC01MTYsNyArNTE0LDggQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNp
ZGVQb2xpY3lGb3JNSU1FVHlwZShGcmFtZVBvbGljeUZ1bmN0aW9uIGYKICAgICB1aW50NjRfdCBs
aXN0ZW5lcklEID0gbV9mcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lcihmdW5jdGlvbik7CiAgICAg
Y29uc3QgU3RyaW5nJiB1cmwgPSByZXF1ZXN0LnVybCgpLnN0cmluZygpOyAvLyBGSVhNRTogUGFz
cyBlbnRpcmUgcmVxdWVzdC4KIAotICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24o
KS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JNSU1FVHlwZSht
X2ZyYW1lLT5mcmFtZUlEKCksIE1JTUVUeXBlLCB1cmwsIGxpc3RlbmVySUQpLCB3ZWJQYWdlLT5w
YWdlSUQoKSk7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5kKFdl
YlBhZ2VQcm94eU1lc3NhZ2U6OkRlY2lkZVBvbGljeUZvck1JTUVUeXBlLCB3ZWJQYWdlLT5wYWdl
SUQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29yZUlQ
Qzo6SW4obV9mcmFtZS0+ZnJhbWVJRCgpLCBNSU1FVHlwZSwgdXJsLCBsaXN0ZW5lcklEKSk7CiB9
CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3
V2luZG93QWN0aW9uKEZyYW1lUG9saWN5RnVuY3Rpb24gZnVuY3Rpb24sIGNvbnN0IE5hdmlnYXRp
b25BY3Rpb24mIG5hdmlnYXRpb25BY3Rpb24sIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+LCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSkKQEAgLTUz
NSw3ICs1MzQsOCBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBv
bGljeUZvck5ld1dpbmRvd0FjdGlvbihGcmFtZVBvbGljeUZ1bgogICAgIHVpbnQzMl90IG1vZGlm
aWVycyA9IG1vZGlmaWVyc0Zvck5hdmlnYXRpb25BY3Rpb24obmF2aWdhdGlvbkFjdGlvbik7CiAg
ICAgaW50MzJfdCBtb3VzZUJ1dHRvbiA9IG1vdXNlQnV0dG9uRm9yTmF2aWdhdGlvbkFjdGlvbihu
YXZpZ2F0aW9uQWN0aW9uKTsKIAotICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24o
KS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dB
Y3Rpb24obV9mcmFtZS0+ZnJhbWVJRCgpLCBuYXZpZ2F0aW9uVHlwZSwgbW9kaWZpZXJzLCBtb3Vz
ZUJ1dHRvbiwgdXJsLCBsaXN0ZW5lcklEKSwgd2ViUGFnZS0+cGFnZUlEKCkpOworICAgIFdlYlBy
b2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZChXZWJQYWdlUHJveHlNZXNzYWdlOjpE
ZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24sIHdlYlBhZ2UtPnBhZ2VJRCgpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3JlSVBDOjpJbihtX2ZyYW1l
LT5mcmFtZUlEKCksIG5hdmlnYXRpb25UeXBlLCBtb2RpZmllcnMsIG1vdXNlQnV0dG9uLCB1cmws
IGxpc3RlbmVySUQpKTsKIH0KIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hE
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKEZyYW1lUG9saWN5RnVuY3Rpb24gZnVuY3Rp
b24sIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIG5hdmlnYXRpb25BY3Rpb24sIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+KQpAQCAtNTYwLDcgKzU2
MCw4IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbihGcmFtZVBvbGljeUZ1CiAgICAgdWludDMyX3QgbW9kaWZpZXJzID0g
bW9kaWZpZXJzRm9yTmF2aWdhdGlvbkFjdGlvbihuYXZpZ2F0aW9uQWN0aW9uKTsKICAgICBpbnQz
Ml90IG1vdXNlQnV0dG9uID0gbW91c2VCdXR0b25Gb3JOYXZpZ2F0aW9uQWN0aW9uKG5hdmlnYXRp
b25BY3Rpb24pOwogCi0gICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24o
bV9mcmFtZS0+ZnJhbWVJRCgpLCBuYXZpZ2F0aW9uVHlwZSwgbW9kaWZpZXJzLCBtb3VzZUJ1dHRv
biwgdXJsLCBsaXN0ZW5lcklEKSwgd2ViUGFnZS0+cGFnZUlEKCkpOworICAgIFdlYlByb2Nlc3M6
OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZChXZWJQYWdlUHJveHlNZXNzYWdlOjpEZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uLCB3ZWJQYWdlLT5wYWdlSUQoKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29yZUlQQzo6SW4obV9mcmFtZS0+ZnJh
bWVJRCgpLCBuYXZpZ2F0aW9uVHlwZSwgbW9kaWZpZXJzLCBtb3VzZUJ1dHRvbiwgdXJsLCBsaXN0
ZW5lcklEKSk7CiB9CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNhbmNlbFBvbGljeUNo
ZWNrKCkKQEAgLTU5MSw5ICs1OTIsOSBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNw
YXRjaFdpbGxTdWJtaXRGb3JtKEZyYW1lUG9saWN5RnVuY3Rpb24gZnVuY3Rpb24sCiAKIAogICAg
IHVpbnQ2NF90IGxpc3RlbmVySUQgPSBtX2ZyYW1lLT5zZXRVcFBvbGljeUxpc3RlbmVyKGZ1bmN0
aW9uKTsKLSAgICBTdHJpbmdQYWlyVmVjdG9yIHZhbHVlc1ZlY3Rvcih2YWx1ZXMpOwogCi0gICAg
V2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OldpbGxTdWJtaXRGb3JtKG1fZnJhbWUtPmZyYW1lSUQoKSwgc291cmNlRnJhbWUtPmZy
YW1lSUQoKSwgdmFsdWVzVmVjdG9yLCBsaXN0ZW5lcklELCBJbmplY3RlZEJ1bmRsZVVzZXJNZXNz
YWdlRW5jb2Rlcih1c2VyRGF0YS5nZXQoKSkpLCB3ZWJQYWdlLT5wYWdlSUQoKSk7CisgICAgV2Vi
UHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5kKFdlYlBhZ2VQcm94eU1lc3NhZ2U6
OldpbGxTdWJtaXRGb3JtLCB3ZWJQYWdlLT5wYWdlSUQoKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQ29yZUlQQzo6SW4obV9mcmFtZS0+ZnJhbWVJRCgpLCBz
b3VyY2VGcmFtZS0+ZnJhbWVJRCgpLCB2YWx1ZXMsIGxpc3RlbmVySUQsIEluamVjdGVkQnVuZGxl
VXNlck1lc3NhZ2VFbmNvZGVyKHVzZXJEYXRhLmdldCgpKSkpOwogfQogCiB2b2lkIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZExvYWRNYWluUmVzb3VyY2UoRG9jdW1lbnRMb2FkZXIq
KQpAQCAtNjI5LDIyICs2MzAsMjEgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkQ2hh
bmdlRXN0aW1hdGVkUHJvZ3Jlc3MoKQogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6cG9zdFBy
b2dyZXNzU3RhcnRlZE5vdGlmaWNhdGlvbigpCiB7CiAgICAgaWYgKFdlYlBhZ2UqIHdlYlBhZ2Ug
PSBtX2ZyYW1lLT5wYWdlKCkpCi0gICAgICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rp
b24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRTdGFydFByb2dyZXNzKCksIHdl
YlBhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlv
bigpLT5zZW5kKFdlYlBhZ2VQcm94eU1lc3NhZ2U6OkRpZFN0YXJ0UHJvZ3Jlc3MsIHdlYlBhZ2Ut
PnBhZ2VJRCgpLCBDb3JlSVBDOjpJbigpKTsKIH0KIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6cG9zdFByb2dyZXNzRXN0aW1hdGVDaGFuZ2VkTm90aWZpY2F0aW9uKCkKIHsKICAgICBpZiAo
V2ViUGFnZSogd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkgewogICAgICAgICBkb3VibGUgcHJv
Z3Jlc3MgPSB3ZWJQYWdlLT5jb3JlUGFnZSgpLT5wcm9ncmVzcygpLT5lc3RpbWF0ZWRQcm9ncmVz
cygpOwotICAgICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9uKCktPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkQ2hhbmdlUHJvZ3Jlc3MocHJvZ3Jlc3MpLCB3ZWJQYWdl
LT5wYWdlSUQoKSk7Ci0KKyAgICAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigp
LT5zZW5kKFdlYlBhZ2VQcm94eU1lc3NhZ2U6OkRpZENoYW5nZVByb2dyZXNzLCB3ZWJQYWdlLT5w
YWdlSUQoKSwgQ29yZUlQQzo6SW4ocHJvZ3Jlc3MpKTsKICAgICB9CiB9CiAKIHZvaWQgV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OnBvc3RQcm9ncmVzc0ZpbmlzaGVkTm90aWZpY2F0aW9uKCkKIHsKICAg
ICBpZiAoV2ViUGFnZSogd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkKLSAgICAgICAgV2ViUHJv
Y2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OkRpZEZpbmlzaFByb2dyZXNzKCksIHdlYlBhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgV2ViUHJv
Y2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5kKFdlYlBhZ2VQcm94eU1lc3NhZ2U6OkRp
ZEZpbmlzaFByb2dyZXNzLCB3ZWJQYWdlLT5wYWdlSUQoKSwgQ29yZUlQQzo6SW4oKSk7CiB9CiAK
IHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNldE1haW5GcmFtZURvY3VtZW50UmVhZHkoYm9v
bCkKQEAgLTk0OCw3ICs5NDgsNyBAQCBQYXNzUmVmUHRyPEZyYW1lPiBXZWJGcmFtZUxvYWRlckNs
aWVudDo6Y3JlYXRlRnJhbWUoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbgogICAgIFJlZlB0
cjxXZWJGcmFtZT4gc3ViZnJhbWUgPSBXZWJGcmFtZTo6Y3JlYXRlU3ViZnJhbWUod2ViUGFnZSwg
bmFtZSwgb3duZXJFbGVtZW50KTsKIAogICAgIC8vIE5vdGlmeSB0aGUgVUkgcHJvY2VzcyB0aGF0
IHN1YmZyYW1lIGhhcyBiZWVuIGFkZGVkLgotICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5l
Y3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRDcmVhdGVTdWJGcmFtZShz
dWJmcmFtZS0+ZnJhbWVJRCgpKSwgd2ViUGFnZS0+cGFnZUlEKCkpOworICAgIFdlYlByb2Nlc3M6
OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZChXZWJQYWdlUHJveHlNZXNzYWdlOjpEaWRDcmVh
dGVTdWJGcmFtZSwgd2ViUGFnZS0+cGFnZUlEKCksIENvcmVJUEM6OkluKHN1YmZyYW1lLT5mcmFt
ZUlEKCkpKTsKIAogICAgIEZyYW1lKiBjb3JlU3ViZnJhbWUgPSBzdWJmcmFtZS0+Y29yZUZyYW1l
KCk7CiAKZGlmZiAtLWdpdCBhL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3
YXJkTGlzdFByb3h5LmNwcCBiL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3
YXJkTGlzdFByb3h5LmNwcAppbmRleCBkYzNjYTY5MDQ3NDg5MWY0MDc1YTY4YzE5MGE4Y2RjZDRi
NWM4NGI1Li40MGQ4MWI5YjZhMjBmODUxZTY4N2FiN2ZkMjZmN2E3ZDRjZDFkNzYzIDEwMDY0NAot
LS0gYS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5j
cHAKKysrIGIvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJv
eHkuY3BwCkBAIC0yNyw3ICsyNyw3IEBACiAKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2Rl
cnMuaCIKICNpbmNsdWRlICJXZWJQYWdlLmgiCi0jaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2Fn
ZXMuaCIKKyNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlS2luZHMuaCIKICNpbmNsdWRlICJX
ZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZUtpbmRzLmgiCiAj
aW5jbHVkZSA8V2ViQ29yZS9IaXN0b3J5SXRlbS5oPgpAQCAtMTE5LDcgKzExOSw3IEBAIHZvaWQg
V2ViQmFja0ZvcndhcmRMaXN0UHJveHk6OmFkZEl0ZW0oUGFzc1JlZlB0cjxIaXN0b3J5SXRlbT4g
cHJwSXRlbSkKIAogICAgIFJlZlB0cjxIaXN0b3J5SXRlbT4gaXRlbSA9IHBycEl0ZW07CiAgICAg
dWludDY0X3QgaXRlbUlEID0gaGlzdG9yeUl0ZW1Ub0lETWFwKCkuZ2V0KGl0ZW0pOwotICAgIFdl
YlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpCYWNrRm9yd2FyZEFkZEl0ZW0oaXRlbUlEKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAg
V2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5kKFdlYlBhZ2VQcm94eU1lc3Nh
Z2U6OkJhY2tGb3J3YXJkQWRkSXRlbSwgbV9wYWdlLT5wYWdlSUQoKSwgQ29yZUlQQzo6SW4oaXRl
bUlEKSk7CiB9CiAKIHZvaWQgV2ViQmFja0ZvcndhcmRMaXN0UHJveHk6OmdvQmFjaygpCkBAIC0x
MzUsMTYgKzEzNSwxNiBAQCB2b2lkIFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5Ojpnb0ZvcndhcmQo
KQogdm9pZCBXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6Z29Ub0l0ZW0oSGlzdG9yeUl0ZW0qIGl0
ZW0pCiB7CiAgICAgdWludDY0X3QgaXRlbUlEID0gaGlzdG9yeUl0ZW1Ub0lETWFwKCkuZ2V0KGl0
ZW0pOwotICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpCYWNrRm9yd2FyZEdvVG9JdGVtKGl0ZW1JRCksIG1fcGFnZS0+cGFn
ZUlEKCkpOwotCisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5kKFdl
YlBhZ2VQcm94eU1lc3NhZ2U6OkJhY2tGb3J3YXJkR29Ub0l0ZW0sIG1fcGFnZS0+cGFnZUlEKCks
IENvcmVJUEM6OkluKGl0ZW1JRCkpOwogfQogCiBIaXN0b3J5SXRlbSogV2ViQmFja0ZvcndhcmRM
aXN0UHJveHk6OmJhY2tJdGVtKCkKIHsKICAgICB1aW50NjRfdCBiYWNrSXRlbUlEID0gMDsKLSAg
ICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6QmFja0ZvcndhcmRCYWNrSXRlbSgpLAotICAgICAgICAgICAgIE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkJhY2tGb3J3YXJkQmFja0l0ZW06OlJlcGx5KGJhY2tJdGVt
SUQpLAotICAgICAgICAgICAgIG1fcGFnZS0+cGFnZUlEKCksIENvcmVJUEM6OkNvbm5lY3Rpb246
Ok5vVGltZW91dCkpIHsKKyAgICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24o
KS0+c2VuZFN5bmMoV2ViUGFnZVByb3h5TWVzc2FnZTo6QmFja0ZvcndhcmRCYWNrSXRlbSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9wYWdl
LT5wYWdlSUQoKSwgQ29yZUlQQzo6SW4oKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQ29yZUlQQzo6T3V0KGJhY2tJdGVtSUQpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3JlSVBDOjpD
b25uZWN0aW9uOjpOb1RpbWVvdXQpKSB7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIApAQCAt
MTU4LDkgKzE1OCwxMCBAQCBIaXN0b3J5SXRlbSogV2ViQmFja0ZvcndhcmRMaXN0UHJveHk6OmJh
Y2tJdGVtKCkKIEhpc3RvcnlJdGVtKiBXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6Y3VycmVudEl0
ZW0oKQogewogICAgIHVpbnQ2NF90IGN1cnJlbnRJdGVtSUQgPSAwOwotICAgIGlmICghV2ViUHJv
Y2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpCYWNrRm9yd2FyZEN1cnJlbnRJdGVtKCksCi0gICAgICAgICAgICAgTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6QmFja0ZvcndhcmRDdXJyZW50SXRlbTo6UmVwbHkoY3VycmVudEl0ZW1JRCks
Ci0gICAgICAgICAgICAgbV9wYWdlLT5wYWdlSUQoKSwgQ29yZUlQQzo6Q29ubmVjdGlvbjo6Tm9U
aW1lb3V0KSkgeworICAgIGlmICghV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5z
ZW5kU3luYyhXZWJQYWdlUHJveHlNZXNzYWdlOjpCYWNrRm9yd2FyZEN1cnJlbnRJdGVtLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3BhZ2Ut
PnBhZ2VJRCgpLCBDb3JlSVBDOjpJbigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBDb3JlSVBDOjpPdXQoY3VycmVudEl0ZW1JRCksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvcmVJUEM6
OkNvbm5lY3Rpb246Ok5vVGltZW91dCkpIHsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCkBA
IC0xNzQsOSArMTc1LDEwIEBAIEhpc3RvcnlJdGVtKiBXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6
Y3VycmVudEl0ZW0oKQogSGlzdG9yeUl0ZW0qIFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5Ojpmb3J3
YXJkSXRlbSgpCiB7CiAgICAgdWludDY0X3QgZm9yd2FyZEl0ZW1JRCA9IDA7Ci0gICAgaWYgKCFX
ZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkJhY2tGb3J3YXJkRm9yd2FyZEl0ZW0oKSwKLSAgICAgICAgICAgICBNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpCYWNrRm9yd2FyZEZvcndhcmRJdGVtOjpSZXBseShmb3J3YXJkSXRl
bUlEKSwKLSAgICAgICAgICAgICBtX3BhZ2UtPnBhZ2VJRCgpLCBDb3JlSVBDOjpDb25uZWN0aW9u
OjpOb1RpbWVvdXQpKSB7CisgICAgaWYgKCFXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9u
KCktPnNlbmRTeW5jKFdlYlBhZ2VQcm94eU1lc3NhZ2U6OkJhY2tGb3J3YXJkRm9yd2FyZEl0ZW0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1f
cGFnZS0+cGFnZUlEKCksIENvcmVJUEM6OkluKCksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvcmVJUEM6Ok91dChmb3J3YXJkSXRlbUlEKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29y
ZUlQQzo6Q29ubmVjdGlvbjo6Tm9UaW1lb3V0KSkgewogICAgICAgICByZXR1cm4gMDsKICAgICB9
CiAKQEAgLTE5MCw5ICsxOTIsMTAgQEAgSGlzdG9yeUl0ZW0qIFdlYkJhY2tGb3J3YXJkTGlzdFBy
b3h5Ojpmb3J3YXJkSXRlbSgpCiBIaXN0b3J5SXRlbSogV2ViQmFja0ZvcndhcmRMaXN0UHJveHk6
Oml0ZW1BdEluZGV4KGludCBpdGVtSW5kZXgpCiB7CiAgICAgdWludDY0X3QgaXRlbUlEID0gMDsK
LSAgICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6QmFja0ZvcndhcmRJdGVtQXRJbmRleChpdGVtSW5kZXgpLAot
ICAgICAgICAgICAgIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkJhY2tGb3J3YXJkSXRlbUF0SW5k
ZXg6OlJlcGx5KGl0ZW1JRCksCi0gICAgICAgICAgICAgbV9wYWdlLT5wYWdlSUQoKSwgQ29yZUlQ
Qzo6Q29ubmVjdGlvbjo6Tm9UaW1lb3V0KSkgeworICAgIGlmICghV2ViUHJvY2Vzczo6c2hhcmVk
KCkuY29ubmVjdGlvbigpLT5zZW5kU3luYyhXZWJQYWdlUHJveHlNZXNzYWdlOjpCYWNrRm9yd2Fy
ZEl0ZW1BdEluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtX3BhZ2UtPnBhZ2VJRCgpLCBDb3JlSVBDOjpJbihpdGVtSW5kZXgpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3JlSVBD
OjpPdXQoaXRlbUlEKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQ29yZUlQQzo6Q29ubmVjdGlvbjo6Tm9UaW1lb3V0KSkgewogICAgICAgICBy
ZXR1cm4gMDsKICAgICB9CiAKQEAgLTIzNiw5ICsyMzksMTAgQEAgdm9pZCBXZWJCYWNrRm9yd2Fy
ZExpc3RQcm94eTo6c2V0RW5hYmxlZChib29sIGVuYWJsZWQpCiBpbnQgV2ViQmFja0ZvcndhcmRM
aXN0UHJveHk6OmJhY2tMaXN0Q291bnQoKQogewogICAgIGludCBiYWNrTGlzdENvdW50ID0gMDsK
LSAgICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6QmFja0ZvcndhcmRCYWNrTGlzdENvdW50KCksCi0gICAgICAg
ICAgICAgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6QmFja0ZvcndhcmRCYWNrTGlzdENvdW50OjpS
ZXBseShiYWNrTGlzdENvdW50KSwKLSAgICAgICAgICAgICBtX3BhZ2UtPnBhZ2VJRCgpLCBDb3Jl
SVBDOjpDb25uZWN0aW9uOjpOb1RpbWVvdXQpKSB7CisgICAgaWYgKCFXZWJQcm9jZXNzOjpzaGFy
ZWQoKS5jb25uZWN0aW9uKCktPnNlbmRTeW5jKFdlYlBhZ2VQcm94eU1lc3NhZ2U6OkJhY2tGb3J3
YXJkQmFja0xpc3RDb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbV9wYWdlLT5wYWdlSUQoKSwgQ29yZUlQQzo6SW4oKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29yZUlQQzo6T3V0
KGJhY2tMaXN0Q291bnQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBDb3JlSVBDOjpDb25uZWN0aW9uOjpOb1RpbWVvdXQpKSB7CiAgICAgICAg
IHJldHVybiAwOwogICAgIH0KIApAQCAtMjQ4LDkgKzI1MiwxMCBAQCBpbnQgV2ViQmFja0Zvcndh
cmRMaXN0UHJveHk6OmJhY2tMaXN0Q291bnQoKQogaW50IFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5
Ojpmb3J3YXJkTGlzdENvdW50KCkKIHsKICAgICBpbnQgZm9yd2FyZExpc3RDb3VudCA9IDA7Ci0g
ICAgaWYgKCFXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OkJhY2tGb3J3YXJkRm9yd2FyZExpc3RDb3VudCgpLAotICAgICAg
ICAgICAgIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkJhY2tGb3J3YXJkRm9yd2FyZExpc3RDb3Vu
dDo6UmVwbHkoZm9yd2FyZExpc3RDb3VudCksCi0gICAgICAgICAgICAgbV9wYWdlLT5wYWdlSUQo
KSwgQ29yZUlQQzo6Q29ubmVjdGlvbjo6Tm9UaW1lb3V0KSkgeworICAgIGlmICghV2ViUHJvY2Vz
czo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5kU3luYyhXZWJQYWdlUHJveHlNZXNzYWdlOjpC
YWNrRm9yd2FyZEZvcndhcmRMaXN0Q291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFnZS0+cGFnZUlEKCksIENvcmVJUEM6OkluKCks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENv
cmVJUEM6Ok91dChmb3J3YXJkTGlzdENvdW50KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29yZUlQQzo6Q29ubmVjdGlvbjo6Tm9UaW1lb3V0
KSkgewogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAKaW5kZXggMzEyYTJmY2VlYjdlOTE2MzA4NTg1ZGZmZTNkMGJmYjc3MWVjYjQ0
YS4uMmQwY2VkZDdkNGI2MjVjODVmN2VhMTIwODQxZWQwYmMzM2JhZTViMCAxMDA2NDQKLS0tIGEv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAKICNpbmNsdWRlICJX
ZWJGcmFtZS5oIgogI2luY2x1ZGUgIldlYkluc3BlY3RvckNsaWVudC5oIgogI2luY2x1ZGUgIldl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaCIKLSNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdl
cy5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VLaW5kcy5oIgogI2luY2x1ZGUgIldl
YlByb2Nlc3NQcm94eU1lc3NhZ2VLaW5kcy5oIgogI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzU3Rv
cmUuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCkBAIC0xNDIsNyArMTQyLDcgQEAgV2ViUGFn
ZTo6V2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnMmIHBhcmFtZXRlcnMpCiAgICAgU2V0dGluZ3M6OnNldE1pbkRPTVRpbWVySW50ZXJ2YWwoMC4w
MDQpOwogCiAgICAgbV9tYWluRnJhbWUgPSBXZWJGcmFtZTo6Y3JlYXRlTWFpbkZyYW1lKHRoaXMp
OwotICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpEaWRDcmVhdGVNYWluRnJhbWUobV9tYWluRnJhbWUtPmZyYW1lSUQoKSks
IG1fcGFnZUlEKTsKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9uKCktPnNlbmQo
V2ViUGFnZVByb3h5TWVzc2FnZTo6RGlkQ3JlYXRlTWFpbkZyYW1lLCBtX3BhZ2VJRCwgQ29yZUlQ
Qzo6SW4obV9tYWluRnJhbWUtPmZyYW1lSUQoKSkpOwogCiAjaWZuZGVmIE5ERUJVRwogICAgIHdl
YlBhZ2VDb3VudGVyLmluY3JlbWVudCgpOwpAQCAtMjQ2LDEwICsyNDYsMTAgQEAgdm9pZCBXZWJQ
YWdlOjpjaGFuZ2VBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShXZWJDb3JlOjpHcmFwaGljc0xh
eWVyKiBsYXllcikKICAgICAvLyBUZWxsIHRoZSBVSSBwcm9jZXNzIHRoYXQgYWNjZWxlcmF0ZWQg
Y29tcG9zaXRpbmcgY2hhbmdlZC4gSXQgbWF5IHJlc3BvbmQgYnkgY2hhbmdpbmcKICAgICAvLyBk
cmF3aW5nIGFyZWEgdHlwZXMuCiAgICAgRHJhd2luZ0FyZWE6OkRyYXdpbmdBcmVhSW5mbyBuZXdE
cmF3aW5nQXJlYUluZm87Ci0KLSAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9uKCkt
PnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZENoYW5nZUFjY2VsZXJhdGVkQ29t
cG9zaXRpbmcoY29tcG9zaXRpbmcpLAotICAgICAgICBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpE
aWRDaGFuZ2VBY2NlbGVyYXRlZENvbXBvc2l0aW5nOjpSZXBseShuZXdEcmF3aW5nQXJlYUluZm8p
LAotICAgICAgICBtX3BhZ2VJRCwgQ29yZUlQQzo6Q29ubmVjdGlvbjo6Tm9UaW1lb3V0KTsKKyAg
ICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9uKCktPnNlbmRTeW5jKFdlYlBhZ2VQcm94
eU1lc3NhZ2U6OkRpZENoYW5nZUFjY2VsZXJhdGVkQ29tcG9zaXRpbmcsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3BhZ2VJRCwgQ29yZUlQQzo6SW4o
Y29tcG9zaXRpbmcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQ29yZUlQQzo6T3V0KG5ld0RyYXdpbmdBcmVhSW5mbyksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3JlSVBDOjpDb25uZWN0aW9uOjpOb1Rp
bWVvdXQpOwogICAgIAogICAgIGlmIChuZXdEcmF3aW5nQXJlYUluZm8udHlwZSAhPSBkcmF3aW5n
QXJlYSgpLT5pbmZvKCkudHlwZSkgewogICAgICAgICBtX2RyYXdpbmdBcmVhID0gMDsKQEAgLTI2
Myw3ICsyNjMsMTAgQEAgdm9pZCBXZWJQYWdlOjpjaGFuZ2VBY2NlbGVyYXRlZENvbXBvc2l0aW5n
TW9kZShXZWJDb3JlOjpHcmFwaGljc0xheWVyKiBsYXllcikKIHZvaWQgV2ViUGFnZTo6ZW50ZXJB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShHcmFwaGljc0xheWVyKiBsYXllcikKIHsKICAgICBj
aGFuZ2VBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShsYXllcik7CisgICAgCisjaWYgVVNFKEFD
Q0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIG1fZHJhd2luZ0FyZWEtPnNldFJvb3RDb21wb3Np
dGluZ0xheWVyKGxheWVyKTsKKyNlbmRpZgogfQogCiB2b2lkIFdlYlBhZ2U6OmV4aXRBY2NlbGVy
YXRlZENvbXBvc2l0aW5nTW9kZSgpCkBAIC0yOTQsNyArMjk3LDcgQEAgdm9pZCBXZWJQYWdlOjp0
cnlDbG9zZSgpCiAKIHZvaWQgV2ViUGFnZTo6c2VuZENsb3NlKCkKIHsKLSAgICBXZWJQcm9jZXNz
OjpzaGFyZWQoKS5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Q2xv
c2VQYWdlKCksIG1fcGFnZUlEKTsKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9u
KCktPnNlbmQoV2ViUGFnZVByb3h5TWVzc2FnZTo6Q2xvc2VQYWdlLCBtX3BhZ2VJRCwgQ29yZUlQ
Qzo6SW4oKSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6bG9hZFVSTChjb25zdCBTdHJpbmcmIHVybCkK
QEAgLTQ3OCw3ICs0ODEsOCBAQCB2b2lkIFdlYlBhZ2U6Om1vdXNlRXZlbnQoY29uc3QgV2ViTW91
c2VFdmVudCYgbW91c2VFdmVudCkKICAgICBDdXJyZW50RXZlbnQgY3VycmVudEV2ZW50KG1vdXNl
RXZlbnQpOwogCiAgICAgYm9vbCBoYW5kbGVkID0gaGFuZGxlTW91c2VFdmVudChtb3VzZUV2ZW50
LCBtX3BhZ2UuZ2V0KCkpOwotICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRSZWNlaXZlRXZlbnQoc3RhdGljX2Nhc3Q8
dWludDMyX3Q+KG1vdXNlRXZlbnQudHlwZSgpKSwgaGFuZGxlZCksIG1fcGFnZUlEKTsKKworICAg
IFdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZChXZWJQYWdlUHJveHlNZXNz
YWdlOjpEaWRSZWNlaXZlRXZlbnQsIG1fcGFnZUlELCBDb3JlSVBDOjpJbihzdGF0aWNfY2FzdDx1
aW50MzJfdD4obW91c2VFdmVudC50eXBlKCkpLCBoYW5kbGVkKSk7CiB9CiAKIHN0YXRpYyBib29s
IGhhbmRsZVdoZWVsRXZlbnQoY29uc3QgV2ViV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgUGFnZSog
cGFnZSkKQEAgLTQ5Niw3ICs1MDAsNyBAQCB2b2lkIFdlYlBhZ2U6OndoZWVsRXZlbnQoY29uc3Qg
V2ViV2hlZWxFdmVudCYgd2hlZWxFdmVudCkKICAgICBDdXJyZW50RXZlbnQgY3VycmVudEV2ZW50
KHdoZWVsRXZlbnQpOwogCiAgICAgYm9vbCBoYW5kbGVkID0gaGFuZGxlV2hlZWxFdmVudCh3aGVl
bEV2ZW50LCBtX3BhZ2UuZ2V0KCkpOwotICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rp
b24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRSZWNlaXZlRXZlbnQoc3RhdGlj
X2Nhc3Q8dWludDMyX3Q+KHdoZWVsRXZlbnQudHlwZSgpKSwgaGFuZGxlZCksIG1fcGFnZUlEKTsK
KyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9uKCktPnNlbmQoV2ViUGFnZVByb3h5
TWVzc2FnZTo6RGlkUmVjZWl2ZUV2ZW50LCBtX3BhZ2VJRCwgQ29yZUlQQzo6SW4oc3RhdGljX2Nh
c3Q8dWludDMyX3Q+KHdoZWVsRXZlbnQudHlwZSgpKSwgaGFuZGxlZCkpOwogfQogCiBzdGF0aWMg
Ym9vbCBoYW5kbGVLZXlFdmVudChjb25zdCBXZWJLZXlib2FyZEV2ZW50JiBrZXlib2FyZEV2ZW50
LCBQYWdlKiBwYWdlKQpAQCAtNTE1LDIxICs1MTksMjEgQEAgdm9pZCBXZWJQYWdlOjprZXlFdmVu
dChjb25zdCBXZWJLZXlib2FyZEV2ZW50JiBrZXlib2FyZEV2ZW50KQogICAgIGlmICghaGFuZGxl
ZCkKICAgICAgICAgaGFuZGxlZCA9IHBlcmZvcm1EZWZhdWx0QmVoYXZpb3JGb3JLZXlFdmVudChr
ZXlib2FyZEV2ZW50KTsKIAotICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRSZWNlaXZlRXZlbnQoc3RhdGljX2Nhc3Q8
dWludDMyX3Q+KGtleWJvYXJkRXZlbnQudHlwZSgpKSwgaGFuZGxlZCksIG1fcGFnZUlEKTsKKyAg
ICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9uKCktPnNlbmQoV2ViUGFnZVByb3h5TWVz
c2FnZTo6RGlkUmVjZWl2ZUV2ZW50LCBtX3BhZ2VJRCwgQ29yZUlQQzo6SW4oc3RhdGljX2Nhc3Q8
dWludDMyX3Q+KGtleWJvYXJkRXZlbnQudHlwZSgpKSwgaGFuZGxlZCkpOwogfQogCiB2b2lkIFdl
YlBhZ2U6OnZhbGlkYXRlTWVudUl0ZW0oY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSkKIHsKICAg
ICBib29sIGlzRW5hYmxlZCA9IGZhbHNlOwotICAgIGludDMyX3Qgc3RhdGUgPSAwOworICAgIGlu
dCBzdGF0ZSA9IDA7CiAgICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIo
KS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgaWYgKGZyYW1lKSB7CiAgICAgICAgIEVkaXRv
cjo6Q29tbWFuZCBjb21tYW5kID0gZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKGNvbW1hbmROYW1l
KTsKICAgICAgICAgc3RhdGUgPSBjb21tYW5kLnN0YXRlKCk7CiAgICAgICAgIGlzRW5hYmxlZCA9
IGNvbW1hbmQuaXNTdXBwb3J0ZWQoKSAmJiBjb21tYW5kLmlzRW5hYmxlZCgpOwogICAgIH0KLQot
ICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpEaWRWYWxpZGF0ZU1lbnVJdGVtKGNvbW1hbmROYW1lLCBpc0VuYWJsZWQsIHN0
YXRlKSwgbV9wYWdlSUQpOworICAgIAorICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rp
b24oKS0+c2VuZChXZWJQYWdlUHJveHlNZXNzYWdlOjpEaWRWYWxpZGF0ZU1lbnVJdGVtLCBtX3Bh
Z2VJRCwgQ29yZUlQQzo6SW4oY29tbWFuZE5hbWUsIGlzRW5hYmxlZCwgc3RhdGUpKTsKIH0KIAog
dm9pZCBXZWJQYWdlOjpleGVjdXRlRWRpdENvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFt
ZSkKQEAgLTU1Myw3ICs1NTcsNyBAQCB2b2lkIFdlYlBhZ2U6OnRvdWNoRXZlbnQoY29uc3QgV2Vi
VG91Y2hFdmVudCYgdG91Y2hFdmVudCkKIAogICAgIGJvb2wgaGFuZGxlZCA9IGhhbmRsZVRvdWNo
RXZlbnQodG91Y2hFdmVudCwgbV9wYWdlLmdldCgpKTsKIAotICAgIFdlYlByb2Nlc3M6OnNoYXJl
ZCgpLmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRSZWNlaXZl
RXZlbnQoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHRvdWNoRXZlbnQudHlwZSgpKSwgaGFuZGxlZCks
IG1fcGFnZUlEKTsKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9uKCktPnNlbmQo
V2ViUGFnZVByb3h5TWVzc2FnZTo6RGlkUmVjZWl2ZUV2ZW50LCBtX3BhZ2VJRCwgQ29yZUlQQzo6
SW4oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHRvdWNoRXZlbnQudHlwZSgpKSwgaGFuZGxlZCkpOwog
fQogI2VuZGlmCiAKQEAgLTYwOCw3ICs2MTIsNyBAQCB2b2lkIFdlYlBhZ2U6OmRpZFJlY2VpdmVQ
b2xpY3lEZWNpc2lvbih1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBsaXN0ZW5lcklELCB1aQog
CiB2b2lkIFdlYlBhZ2U6OnNob3coKQogewotICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5l
Y3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTaG93UGFnZSgpLCBtX3BhZ2VJ
RCk7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5kKFdlYlBhZ2VQ
cm94eU1lc3NhZ2U6OlNob3dQYWdlLCBtX3BhZ2VJRCwgQ29yZUlQQzo6SW4oKSk7CiB9CiAKIHZv
aWQgV2ViUGFnZTo6c2V0Q3VzdG9tVXNlckFnZW50KGNvbnN0IFN0cmluZyYgY3VzdG9tVXNlckFn
ZW50KQpAQCAtNjQ5LDEzICs2NTMsMTMgQEAgdm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0SW5N
YWluRnJhbWUoY29uc3QgU3RyaW5nJiBzY3JpcHQsIHVpbnQ2NF90IGNhbGxiYWNrSUQKICAgICBK
U1ZhbHVlIHJlc3VsdFZhbHVlID0gbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpLT5zY3JpcHQoKS0+
ZXhlY3V0ZVNjcmlwdChzY3JpcHQsIHRydWUpLmpzVmFsdWUoKTsKICAgICBTdHJpbmcgcmVzdWx0
U3RyaW5nID0gdXN0cmluZ1RvU3RyaW5nKHJlc3VsdFZhbHVlLnRvU3RyaW5nKG1fbWFpbkZyYW1l
LT5jb3JlRnJhbWUoKS0+c2NyaXB0KCktPmdsb2JhbE9iamVjdChtYWluVGhyZWFkTm9ybWFsV29y
bGQoKSktPmdsb2JhbEV4ZWMoKSkpOwogCi0gICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVj
dGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFJ1bkphdmFTY3JpcHRJbk1h
aW5GcmFtZShyZXN1bHRTdHJpbmcsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgV2ViUHJv
Y2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5kKFdlYlBhZ2VQcm94eU1lc3NhZ2U6OkRp
ZFJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSwgbV9wYWdlSUQsIENvcmVJUEM6OkluKHJlc3VsdFN0
cmluZywgY2FsbGJhY2tJRCkpOwogfQogCiB2b2lkIFdlYlBhZ2U6OmdldFJlbmRlclRyZWVFeHRl
cm5hbFJlcHJlc2VudGF0aW9uKHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7CiAgICAgU3RyaW5nIHJl
c3VsdFN0cmluZyA9IHJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKCk7Ci0gICAgV2Vi
UHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OkRpZEdldFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKHJlc3VsdFN0cmluZywg
Y2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0
aW9uKCktPnNlbmQoV2ViUGFnZVByb3h5TWVzc2FnZTo6RGlkR2V0UmVuZGVyVHJlZUV4dGVybmFs
UmVwcmVzZW50YXRpb24sIG1fcGFnZUlELCBDb3JlSVBDOjpJbihyZXN1bHRTdHJpbmcsIGNhbGxi
YWNrSUQpKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpnZXRTb3VyY2VGb3JGcmFtZSh1aW50NjRfdCBm
cmFtZUlELCB1aW50NjRfdCBjYWxsYmFja0lEKQpAQCAtNjYzLDggKzY2Nyw3IEBAIHZvaWQgV2Vi
UGFnZTo6Z2V0U291cmNlRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgY2FsbGJh
Y2tJRCkKICAgICBTdHJpbmcgcmVzdWx0U3RyaW5nOwogICAgIGlmIChXZWJGcmFtZSogZnJhbWUg
PSBXZWJQcm9jZXNzOjpzaGFyZWQoKS53ZWJGcmFtZShmcmFtZUlEKSkKICAgICAgICByZXN1bHRT
dHJpbmcgPSBmcmFtZS0+c291cmNlKCk7Ci0KLSAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkR2V0U291cmNlRm9yRnJh
bWUocmVzdWx0U3RyaW5nLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIFdlYlByb2Nlc3M6
OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZChXZWJQYWdlUHJveHlNZXNzYWdlOjpEaWRHZXRT
b3VyY2VGb3JGcmFtZSwgbV9wYWdlSUQsIENvcmVJUEM6OkluKHJlc3VsdFN0cmluZywgY2FsbGJh
Y2tJRCkpOwogfQogCiB2b2lkIFdlYlBhZ2U6OnByZWZlcmVuY2VzRGlkQ2hhbmdlKGNvbnN0IFdl
YlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQpkaWZmIC0tZ2l0IGEvV2ViS2l0Mi93aW4vV2ViS2l0
Mi52Y3Byb2ogYi9XZWJLaXQyL3dpbi9XZWJLaXQyLnZjcHJvagppbmRleCA3MjAzNDdmZDkxYjdh
OTYxZDBjMzJjMWU4NDg3MjI0ZjM3ZjUzZjFhLi42M2ZlNWU1OTcxZDI3MmY3YTkxYTVkMTgyODJm
YTg3MTkwNzgyMzBiIDEwMDc1NQotLS0gYS9XZWJLaXQyL3dpbi9XZWJLaXQyLnZjcHJvagorKysg
Yi9XZWJLaXQyL3dpbi9XZWJLaXQyLnZjcHJvagpAQCAtNDQ5LDEwICs0NDksNiBAQAogCQkJCT4N
CiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxTaGFyZWRcU3Ry
aW5nUGFpclZlY3Rvci5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQogCQkJCVJl
bGF0aXZlUGF0aD0iLi5cU2hhcmVkXFVzZXJNZXNzYWdlQ29kZXJzLmgiDQogCQkJCT4NCiAJCQk8
L0ZpbGU+DQpAQCAtNzY4LDYgKzc2NCwxMCBAQAogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJ
PEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cU2hhcmVkXENvcmVJUENTdXBwb3J0XFdlYlBh
Z2VQcm94eU1lc3NhZ2VLaW5kcy5oIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxl
DQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFNoYXJlZFxDb3JlSVBDU3VwcG9ydFxXZWJQcm9jZXNz
UHJveHlNZXNzYWdlS2luZHMuaCINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KQEAgLTIwMjksMTQg
KzIwMjksNiBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQ
YXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2Vz
XFdlYlBhZ2VQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQot
CQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXCQoUHJv
amVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXFdlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiDQotCQkJCT4N
Ci0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1
dERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXFdlYlByb2Nlc3NNZXNzYWdl
UmVjZWl2ZXIuY3BwIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0K
</data>

          </attachment>
      

    </bug>

</bugzilla>