<?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>121966</bug_id>
          
          <creation_ts>2013-09-26 11:13:24 -0700</creation_ts>
          <short_desc>REGRESSION(r156474): Broke the builds. (Requested by xenon on #webkit).</short_desc>
          <delta_ts>2013-09-26 11:30:17 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>121732</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>ggaren</cc>
    
    <cc>msaboff</cc>
    
    <cc>timothy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>933605</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-09-26 11:13:24 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/156474 broke the build:
Broke the builds. (Requested by xenon on #webkit).

This is an automatic bug report generated by webkitbot. 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 fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933607</commentid>
    <comment_count>1</comment_count>
      <attachid>212728</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-09-26 11:13:51 -0700</bug_when>
    <thetext>Created attachment 212728
ROLLOUT of r156474

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

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933608</commentid>
    <comment_count>2</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2013-09-26 11:14:51 -0700</bug_when>
    <thetext>Oliver is looking into fixing the builds now. So I am holding off on landing this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933616</commentid>
    <comment_count>3</comment_count>
      <attachid>212728</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-09-26 11:30:15 -0700</bug_when>
    <thetext>Comment on attachment 212728
ROLLOUT of r156474

Clearing flags on attachment: 212728

Committed r156482: &lt;http://trac.webkit.org/changeset/156482&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933617</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-09-26 11:30:17 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>212728</attachid>
            <date>2013-09-26 11:13:51 -0700</date>
            <delta_ts>2013-09-26 11:30:15 -0700</delta_ts>
            <desc>ROLLOUT of r156474</desc>
            <filename>bug-121966-20130926111350.patch</filename>
            <type>text/plain</type>
            <size>240134</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU2NDgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
MmE5M2MzYmExNjAwYzU4MTNkZDlkYjNiYTYxYmQyYjNjNGE5ZGJjLi5lZjQ5MDM2MzdhYjAwNzkw
MzJmYWQwNmM4ODEwYmJmMjUxNGE4MWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNzggQEAKKzIwMTMtMDktMjYgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJr
aXQub3JnPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxNTY0NzQuCisgICAg
ICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzE1NjQ3NAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxOTY2CisKKyAgICAgICAgQnJv
a2UgdGhlIGJ1aWxkcy4gKFJlcXVlc3RlZCBieSB4ZW5vbiBvbiAjd2Via2l0KS4KKworICAgICAg
ICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6cmVn
aXN0ZXJOYW1lKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUpOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OkNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkNvZGVCbG9j
azo6Y3JlYXRlQWN0aXZhdGlvbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bmFtZUZvclJl
Z2lzdGVyKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6
dW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpp
c0tub3duTm90SW1tZWRpYXRlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpzZXRUaGlzUmVn
aXN0ZXIpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnRoaXNSZWdpc3Rlcik6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6c2V0QXJndW1lbnRzUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2s6OmFyZ3VtZW50c1JlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp1
bmNoZWNrZWRBcmd1bWVudHNSZWdpc3Rlcik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6c2V0
QWN0aXZhdGlvblJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjphY3RpdmF0aW9u
UmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnVuY2hlY2tlZEFjdGl2YXRpb25S
ZWdpc3Rlcik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dXNlc0FyZ3VtZW50cyk6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6aXNDYXB0dXJlZCk6CisgICAgICAgICogYnl0ZWNvZGUvSW5z
dHJ1Y3Rpb24uaDoKKyAgICAgICAgKiBieXRlY29kZS9MYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5o
OgorICAgICAgICAoSlNDOjpMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtleTo6TGF6eU9wZXJhbmRW
YWx1ZVByb2ZpbGVLZXkpOgorICAgICAgICAoSlNDOjpMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtl
eTo6b3BlcmF0b3IhKToKKyAgICAgICAgKEpTQzo6TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXk6
Omhhc2gpOgorICAgICAgICAoSlNDOjpMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtleTo6b3BlcmFu
ZCk6CisgICAgICAgIChKU0M6OkxhenlPcGVyYW5kVmFsdWVQcm9maWxlS2V5Ojppc0hhc2hUYWJs
ZURlbGV0ZWRWYWx1ZSk6CisgICAgICAgIChKU0M6OkxhenlPcGVyYW5kVmFsdWVQcm9maWxlOjpM
YXp5T3BlcmFuZFZhbHVlUHJvZmlsZSk6CisgICAgICAgICogYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0
aW5nQVZhbHVlUHJvZmlsZS5jcHA6CisgICAgICAgIChKU0M6Ok1ldGhvZE9mR2V0dGluZ0FWYWx1
ZVByb2ZpbGU6OmZyb21MYXp5T3BlcmFuZCk6CisgICAgICAgIChKU0M6Ok1ldGhvZE9mR2V0dGlu
Z0FWYWx1ZVByb2ZpbGU6OmdldFNwZWNGYWlsQnVja2V0KToKKyAgICAgICAgKiBieXRlY29kZS9P
cGVyYW5kcy5oOgorICAgICAgICAoSlNDOjpsb2NhbFRvT3BlcmFuZCk6CisgICAgICAgIChKU0M6
Om9wZXJhbmRJc0xvY2FsKToKKyAgICAgICAgKEpTQzo6b3BlcmFuZFRvTG9jYWwpOgorICAgICAg
ICAoSlNDOjpvcGVyYW5kSXNBcmd1bWVudCk6CisgICAgICAgIChKU0M6Om9wZXJhbmRUb0FyZ3Vt
ZW50KToKKyAgICAgICAgKEpTQzo6YXJndW1lbnRUb09wZXJhbmQpOgorICAgICAgICAoSlNDOjpP
cGVyYW5kczo6b3BlcmFuZCk6CisgICAgICAgIChKU0M6Ok9wZXJhbmRzOjpoYXNPcGVyYW5kKToK
KyAgICAgICAgKEpTQzo6T3BlcmFuZHM6OnNldE9wZXJhbmQpOgorICAgICAgICAoSlNDOjpPcGVy
YW5kczo6b3BlcmFuZEZvckluZGV4KToKKyAgICAgICAgKEpTQzo6T3BlcmFuZHM6OnNldE9wZXJh
bmRGaXJzdFRpbWUpOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcDoK
KyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKToKKyAg
ICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpVbmxp
bmtlZENvZGVCbG9jazo6c2V0VGhpc1JlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRD
b2RlQmxvY2s6OnNldEFjdGl2YXRpb25SZWdpc3Rlcik6CisgICAgICAgIChKU0M6OlVubGlua2Vk
Q29kZUJsb2NrOjpzZXRBcmd1bWVudHNSZWdpc3Rlcik6CisgICAgICAgIChKU0M6OlVubGlua2Vk
Q29kZUJsb2NrOjp1c2VzQXJndW1lbnRzKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxv
Y2s6OmFyZ3VtZW50c1JlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6
OnVzZXNHbG9iYWxPYmplY3QpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6c2V0
R2xvYmFsT2JqZWN0UmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6
Z2xvYmFsT2JqZWN0UmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6
dGhpc1JlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OmFjdGl2YXRp
b25SZWdpc3Rlcik6CisgICAgICAgICogYnl0ZWNvZGUvVmFsdWVSZWNvdmVyeS5oOgorICAgICAg
ICAoSlNDOjpWYWx1ZVJlY292ZXJ5OjpkaXNwbGFjZWRJbkpTU3RhY2spOgorICAgICAgICAoSlND
OjpWYWx1ZVJlY292ZXJ5Ojp2aXJ0dWFsUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpWYWx1ZVJl
Y292ZXJ5OjpkdW1wSW5Db250ZXh0KToKKyAgICAgICAgKiBieXRlY29kZS9WaXJ0dWFsUmVnaXN0
ZXIuaDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OmdlbmVyYXRlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmFkZFZhcik6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpjcmVhdGVMYXp5UmVnaXN0ZXJJZk5lY2Vz
c2FyeSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpuZXdSZWdpc3Rlcik6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TG9hZEdsb2JhbE9iamVjdCk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0QXJndW1lbnRzTGVuZ3RoKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRBcmd1bWVudEJ5VmFsKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmNyZWF0ZUFyZ3VtZW50c0lmTmVjZXNz
YXJ5KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXR1cm4pOgorICAg
ICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6cmVnaXN0ZXJGb3IpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9S
ZWdpc3RlcklELmg6CisgICAgICAgIChKU0M6OlJlZ2lzdGVySUQ6OlJlZ2lzdGVySUQpOgorICAg
ICAgICAoSlNDOjpSZWdpc3RlcklEOjpzZXRJbmRleCk6CisgICAgICAgIChKU0M6OlJlZ2lzdGVy
SUQ6OmluZGV4KToKKyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHA6Cisg
ICAgICAgIChKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lOjp0aGlzT2JqZWN0KToKKyAgICAgICAgKiBk
ZmcvREZHQWJzdHJhY3RIZWFwLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RIZWFwOjpQ
YXlsb2FkOjpQYXlsb2FkKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklu
bGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjo6OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAg
KEpTQzo6REZHOjo6OmNsb2JiZXJDYXB0dXJlZFZhcnMpOgorICAgICAgICAqIGRmZy9ERkdBcmd1
bWVudFBvc2l0aW9uLmg6CisgICAgICAgIChKU0M6OkRGRzo6QXJndW1lbnRQb3NpdGlvbjo6ZHVt
cCk6CisgICAgICAgICogZGZnL0RGR0FyZ3VtZW50c1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OkFyZ3VtZW50c1NpbXBsaWZpY2F0aW9uUGhhc2U6OnJ1bik6Cisg
ICAgICAgIChKU0M6OkRGRzo6QXJndW1lbnRzU2ltcGxpZmljYXRpb25QaGFzZTo6b2JzZXJ2ZUJh
ZEFyZ3VtZW50c1VzZSk6CisgICAgICAgIChKU0M6OkRGRzo6QXJndW1lbnRzU2ltcGxpZmljYXRp
b25QaGFzZTo6aXNPS1RvT3B0aW1pemUpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNl
ci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6Om5ld1ZhcmlhYmxlQWNj
ZXNzRGF0YSk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmdldERpcmVjdCk6
CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmdldCk6CisgICAgICAgIChKU0M6
OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnNldERpcmVjdCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0
ZUNvZGVQYXJzZXI6OnNldCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6Omdl
dExvY2FsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6c2V0TG9jYWwpOgor
ICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpnZXRBcmd1bWVudCk6CisgICAgICAg
IChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnNldEFyZ3VtZW50KToKKyAgICAgICAgKEpTQzo6
REZHOjpCeXRlQ29kZVBhcnNlcjo6ZmluZEFyZ3VtZW50UG9zaXRpb25Gb3JMb2NhbCk6CisgICAg
ICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmZpbmRBcmd1bWVudFBvc2l0aW9uKToKKyAg
ICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6Zmx1c2gpOgorICAgICAgICAoSlNDOjpE
Rkc6OkJ5dGVDb2RlUGFyc2VyOjpmbHVzaERpcmVjdCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0
ZUNvZGVQYXJzZXI6OmdldFRvSW50MzIpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFy
c2VyOjpnZXRUaGlzKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6YWRkQ2Fs
bCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OklubGluZVN0YWNrRW50cnk6
OnJlbWFwT3BlcmFuZCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRs
ZUNhbGwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjplbWl0RnVuY3Rpb25D
aGVja3MpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjplbWl0QXJndW1lbnRQ
aGFudG9tcyk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGlu
aW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlTWluTWF4KToK
KyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljKToKKyAg
ICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlVHlwZWRBcnJheUNvbnN0cnVj
dG9yKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ29uc3RhbnRJ
bnRlcm5hbEZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFu
ZGxlR2V0QnlPZmZzZXQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5k
bGVHZXRCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9j
ayk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OklubGluZVN0YWNrRW50cnk6
OklubGluZVN0YWNrRW50cnkpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpw
YXJzZSk6CisgICAgICAgICogZGZnL0RGR0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwOgorICAg
ICAgICAqIGRmZy9ERkdDUFNSZXRocmVhZGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpDUFNSZXRocmVhZGluZ1BoYXNlOjpjYW5vbmljYWxpemVHZXRMb2NhbCk6CisgICAgICAgIChK
U0M6OkRGRzo6Q1BTUmV0aHJlYWRpbmdQaGFzZTo6Y2Fub25pY2FsaXplRmx1c2hPclBoYW50b21M
b2NhbCk6CisgICAgICAgIChKU0M6OkRGRzo6Q1BTUmV0aHJlYWRpbmdQaGFzZTo6Y2Fub25pY2Fs
aXplU2V0QXJndW1lbnQpOgorICAgICAgICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OmNhcGFiaWxpdHlMZXZlbCk6CisgICAgICAgICogZGZnL0RGR0NvbnN0
YW50Rm9sZGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQ
aGFzZTo6aXNDYXB0dXJlZEF0T3JBZnRlcik6CisgICAgICAgICogZGZnL0RGR0ZsdXNoTGl2ZW5l
c3NBbmFseXNpc1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGbHVzaExpdmVuZXNzQW5h
bHlzaXNQaGFzZTo6c2V0Rm9yTm9kZSk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpHcmFwaDo6ZHVtcCk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmg6
CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmFyZ3VtZW50c1JlZ2lzdGVyRm9yKToKKyAgICAg
ICAgKEpTQzo6REZHOjpHcmFwaDo6dW5jaGVja2VkQXJndW1lbnRzUmVnaXN0ZXJGb3IpOgorICAg
ICAgICAoSlNDOjpERkc6OkdyYXBoOjp1bmNoZWNrZWRBY3RpdmF0aW9uUmVnaXN0ZXJGb3IpOgor
ICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjp2YWx1ZVByb2ZpbGVGb3IpOgorICAgICAgICAqIGRm
Zy9ERkdKSVRDb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb2RlOjpyZWNvbnN0cnVj
dCk6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpO
b2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpjb252ZXJ0VG9HZXRMb2NhbFVubGlua2Vk
KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNWaXJ0dWFsUmVnaXN0ZXIpOgorICAgICAg
ICAoSlNDOjpERkc6Ok5vZGU6OnZpcnR1YWxSZWdpc3Rlcik6CisgICAgICAgIChKU0M6OkRGRzo6
Tm9kZTo6c2V0VmlydHVhbFJlZ2lzdGVyKToKKyAgICAgICAgKiBkZmcvREZHT1NSRW50cnkuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OnByZXBhcmVPU1JFbnRyeSk6CisgICAgICAgICogZGZnL0RG
R09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpPU1JF
bnRyeXBvaW50Q3JlYXRpb25QaGFzZTo6cnVuKToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdC5o
OgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6T1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdCk6CisgICAgICAgICogZGZnL0RG
R09TUkV4aXRDb21waWxlcjY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0Q29tcGls
ZXI6OmNvbXBpbGVFeGl0KToKKyAgICAgICAgKiBkZmcvREZHUmVnaXN0ZXJCYW5rLmg6CisgICAg
ICAgIChKU0M6OkRGRzo6UmVnaXN0ZXJCYW5rOjp0cnlBbGxvY2F0ZSk6CisgICAgICAgIChKU0M6
OkRGRzo6UmVnaXN0ZXJCYW5rOjphbGxvY2F0ZVNwZWNpZmljKToKKyAgICAgICAgKEpTQzo6REZH
OjpSZWdpc3RlckJhbms6OnJldGFpbik6CisgICAgICAgIChKU0M6OkRGRzo6UmVnaXN0ZXJCYW5r
Ojppc0luVXNlKToKKyAgICAgICAgKEpTQzo6REZHOjpSZWdpc3RlckJhbms6OmR1bXApOgorICAg
ICAgICAoSlNDOjpERkc6OlJlZ2lzdGVyQmFuazo6cmVsZWFzZUF0SW5kZXgpOgorICAgICAgICAo
SlNDOjpERkc6OlJlZ2lzdGVyQmFuazo6YWxsb2NhdGVJbnRlcm5hbCk6CisgICAgICAgIChKU0M6
OkRGRzo6UmVnaXN0ZXJCYW5rOjpNYXBFbnRyeTo6TWFwRW50cnkpOgorICAgICAgICAqIGRmZy9E
RkdTY29yZUJvYXJkLmg6CisgICAgICAgIChKU0M6OkRGRzo6U2NvcmVCb2FyZDo6YWxsb2NhdGUp
OgorICAgICAgICAoSlNDOjpERkc6OlNjb3JlQm9hcmQ6OnVzZSk6CisgICAgICAgICogZGZnL0RG
R1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
U3BlY3VsYXRpdmVKSVQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjaGVj
a0NvbnNpc3RlbmN5KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZU1vdkhpbnQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5s
aW5lU3RhcnQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3Vy
cmVudEJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6YWxsb2NhdGUpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpmcHJBbGxvY2F0ZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OnNpbGVudFNwaWxsQWxsUmVnaXN0ZXJzSW1wbCk6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmZsdXNoUmVnaXN0ZXJzKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6aXNGbHVzaGVkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6YXJndW1lbnRTbG90KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
YXJndW1lbnRUYWdTbG90KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6YXJn
dW1lbnRQYXlsb2FkU2xvdCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnZh
bHVlU291cmNlRm9yT3BlcmFuZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OnNldE5vZGVGb3JPcGVyYW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
dmFsdWVTb3VyY2VSZWZlcmVuY2VGb3JPcGVyYW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6cmVjb3JkU2V0TG9jYWwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpnZW5lcmF0aW9uSW5mb0Zyb21WaXJ0dWFsUmVnaXN0ZXIpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21wdXRlVmFsdWVSZWNvdmVyeUZvcik6CisgICAgICAg
ICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHVmFsaWRhdGUuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OlZhbGlkYXRlOjp2YWxpZGF0ZSk6CisgICAgICAgIChKU0M6OkRGRzo6
VmFsaWRhdGU6OnZhbGlkYXRlQ1BTKToKKyAgICAgICAgKEpTQzo6REZHOjpWYWxpZGF0ZTo6Y2hl
Y2tPcGVyYW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpWYWxpZGF0ZTo6cmVwb3J0VmFsaWRhdGlv
bkNvbnRleHQpOgorICAgICAgICAqIGRmZy9ERkdWYWx1ZVJlY292ZXJ5T3ZlcnJpZGUuaDoKKyAg
ICAgICAgKEpTQzo6REZHOjpWYWx1ZVJlY292ZXJ5T3ZlcnJpZGU6OlZhbHVlUmVjb3ZlcnlPdmVy
cmlkZSk6CisgICAgICAgICogZGZnL0RGR1ZhcmlhYmxlQWNjZXNzRGF0YS5oOgorICAgICAgICAo
SlNDOjpERkc6OlZhcmlhYmxlQWNjZXNzRGF0YTo6b3BlcmFuZCk6CisgICAgICAgIChKU0M6OkRG
Rzo6VmFyaWFibGVBY2Nlc3NEYXRhOjpzaG91bGRVc2VEb3VibGVGb3JtYXRBY2NvcmRpbmdUb1Zv
dGUpOgorICAgICAgICAoSlNDOjpERkc6OlZhcmlhYmxlQWNjZXNzRGF0YTo6dGFsbHlWb3Rlc0Zv
clNob3VsZFVzZURvdWJsZUZvcm1hdCk6CisgICAgICAgIChKU0M6OkRGRzo6VmFyaWFibGVBY2Nl
c3NEYXRhOjpmbHVzaEZvcm1hdCk6CisgICAgICAgICogZGZnL0RGR1ZhcmlhYmxlRXZlbnQuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpWYXJpYWJsZUV2ZW50OjpzcGlsbCk6CisgICAgICAgIChKU0M6
OkRGRzo6VmFyaWFibGVFdmVudDo6c2V0TG9jYWwpOgorICAgICAgICAqIGRmZy9ERkdWYXJpYWJs
ZUV2ZW50U3RyZWFtLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpWYXJpYWJsZUV2ZW50U3RyZWFt
OjpyZWNvbnN0cnVjdCk6CisgICAgICAgICogZGZnL0RGR1ZpcnR1YWxSZWdpc3RlckFsbG9jYXRp
b25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6VmlydHVhbFJlZ2lzdGVyQWxsb2NhdGlv
blBoYXNlOjpydW4pOgorICAgICAgICAqIGZ0bC9GVExFeGl0QXJndW1lbnRGb3JPcGVyYW5kLmg6
CisgICAgICAgIChKU0M6OkZUTDo6RXhpdEFyZ3VtZW50Rm9yT3BlcmFuZDo6RXhpdEFyZ3VtZW50
Rm9yT3BlcmFuZCk6CisgICAgICAgIChKU0M6OkZUTDo6RXhpdEFyZ3VtZW50Rm9yT3BlcmFuZDo6
b3BlcmFuZCk6CisgICAgICAgICogZnRsL0ZUTExpbmsuY3BwOgorICAgICAgICAoSlNDOjpGVEw6
OmxpbmspOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvTExWTS5jcHA6CisgICAgICAgIChK
U0M6OkZUTDo6TG93ZXJERkdUb0xMVk06Okxvd2VyREZHVG9MTFZNKToKKyAgICAgICAgKEpTQzo6
RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUdldEFyZ3VtZW50KToKKyAgICAgICAgKEpTQzo6
RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUV4dHJhY3RPU1JFbnRyeUxvY2FsKToKKyAgICAg
ICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUNhbGxPckNvbnN0cnVjdCk6Cisg
ICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmFwcGVuZE9TUkV4aXQpOgorICAgICAg
ICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpvYnNlcnZlTW92SGludCk6CisgICAgICAgIChK
U0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmFkZHJlc3NGb3IpOgorICAgICAgICAoSlNDOjpGVEw6
Okxvd2VyREZHVG9MTFZNOjpwYXlsb2FkRm9yKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRG
R1RvTExWTTo6dGFnRm9yKToKKyAgICAgICAgKiBmdGwvRlRMT1NSRW50cnkuY3BwOgorICAgICAg
ICAoSlNDOjpGVEw6OnByZXBhcmVPU1JFbnRyeSk6CisgICAgICAgICogZnRsL0ZUTE9TUkV4aXQu
Y3BwOgorICAgICAgICAoSlNDOjpGVEw6Ok9TUkV4aXQ6OmNvbnZlcnRUb0ZvcndhcmQpOgorICAg
ICAgICAqIGZ0bC9GVExPU1JFeGl0Lmg6CisgICAgICAgICogZnRsL0ZUTE9TUkV4aXRDb21waWxl
ci5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y29tcGlsZVN0dWIpOgorICAgICAgICAqIGludGVy
cHJldGVyL0NhbGxGcmFtZS5oOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNw
cDoKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmR1bXBSZWdpc3RlcnMpOgorICAgICAgICAo
SlNDOjp1bndpbmRDYWxsRnJhbWUpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6dW53aW5k
KToKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmg6CisgICAgICAgIChKU0M6OkFzc2Vt
Ymx5SGVscGVyczo6YWRkcmVzc0Zvcik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6
dGFnRm9yKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpwYXlsb2FkRm9yKToKKyAg
ICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjphcmd1bWVudHNSZWdpc3RlckZvcik6CisgICAg
ICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRDYWxsLmNwcDoKKyAgICAgICAgKEpT
Qzo6SklUOjpjb21waWxlTG9hZFZhcmFyZ3MpOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEdldFZpcnR1YWxSZWdpc3Rlcik6CisgICAgICAgICog
aml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfdGVhcl9vZmZf
YXJndW1lbnRzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9wbmFtZXMpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZW50ZXIpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfY3JlYXRlX2FyZ3VtZW50cyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0
X2FyZ3VtZW50X2J5X3ZhbCk6CisgICAgICAgICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9lbnRlcik6CisgICAgICAgICogaml0L0pJVFN0dWJz
LmNwcDoKKyAgICAgICAgKEpTQzo6REVGSU5FX1NUVUJfRlVOQ1RJT04pOgorICAgICAgICAqIGxs
aW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NMT1df
UEFUSF9ERUNMKToKKyAgICAgICAgKiBwcm9maWxlci9Qcm9maWxlckJ5dGVjb2RlU2VxdWVuY2Uu
Y3BwOgorICAgICAgICAoSlNDOjpQcm9maWxlcjo6Qnl0ZWNvZGVTZXF1ZW5jZTo6Qnl0ZWNvZGVT
ZXF1ZW5jZSk6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAg
ICAoSlNDOjpTTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogcnVudGltZS9KU0FjdGl2YXRpb24u
Y3BwOgorICAgICAgICAoSlNDOjpKU0FjdGl2YXRpb246OmFyZ3VtZW50c0dldHRlcik6CisKIDIw
MTMtMDktMjYgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBBdHRl
bXB0IHRvIGZpeCBNU1ZDIGJ1aWxkCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suY3BwCmluZGV4IGUxMWZiYmQxZWYxM2M5ZjNlNmE1NWQzOGRlZDE2MDYzMzk4MzQx
ZmMuLmU3YjY2ZGM4MjVmMmRkYjY3OWU3MDJkNDE3MWYzMzEwZDg4MWMyM2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC0xNjgsMTIgKzE2OCwx
MiBAQCBDU3RyaW5nIENvZGVCbG9jazo6cmVnaXN0ZXJOYW1lKGludCByKSBjb25zdAogICAgICAg
ICByZXR1cm4gY29uc3RhbnROYW1lKHIsIGdldENvbnN0YW50KHIpKTsKIAogICAgIGlmIChvcGVy
YW5kSXNBcmd1bWVudChyKSkgewotICAgICAgICBpZiAoIVZpcnR1YWxSZWdpc3RlcihyKS50b0Fy
Z3VtZW50KCkpCisgICAgICAgIGlmICghb3BlcmFuZFRvQXJndW1lbnQocikpCiAgICAgICAgICAg
ICByZXR1cm4gInRoaXMiOwotICAgICAgICByZXR1cm4gdG9DU3RyaW5nKCJhcmciLCBWaXJ0dWFs
UmVnaXN0ZXIocikudG9Bcmd1bWVudCgpKTsKKyAgICAgICAgcmV0dXJuIHRvQ1N0cmluZygiYXJn
Iiwgb3BlcmFuZFRvQXJndW1lbnQocikpOwogICAgIH0KIAotICAgIHJldHVybiB0b0NTdHJpbmco
ImxvYyIsIFZpcnR1YWxSZWdpc3RlcihyKS50b0xvY2FsKCkpOworICAgIHJldHVybiB0b0NTdHJp
bmcoImxvYyIsIG9wZXJhbmRUb0xvY2FsKHIpKTsKIH0KIAogc3RhdGljIENTdHJpbmcgcmVnZXhw
VG9Tb3VyY2VTdHJpbmcoUmVnRXhwKiByZWdFeHApCkBAIC01MTQsMTEgKzUxNCwxMSBAQCB2b2lk
IENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtJiBvdXQpCiAgICAgaWYgKHVzZXNB
cmd1bWVudHMoKSkgewogICAgICAgICBvdXQucHJpbnRmKAogICAgICAgICAgICAgIjsgdXNlcyBh
cmd1bWVudHMsIGluIHIlZCwgciVkIiwKLSAgICAgICAgICAgIGFyZ3VtZW50c1JlZ2lzdGVyKCku
b2Zmc2V0KCksCi0gICAgICAgICAgICB1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIoYXJndW1l
bnRzUmVnaXN0ZXIoKSkub2Zmc2V0KCkpOworICAgICAgICAgICAgYXJndW1lbnRzUmVnaXN0ZXIo
KSwKKyAgICAgICAgICAgIHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3Rlcihhcmd1bWVudHNSZWdp
c3RlcigpKSk7CiAgICAgfQogICAgIGlmIChuZWVkc0Z1bGxTY29wZUNoYWluKCkgJiYgY29kZVR5
cGUoKSA9PSBGdW5jdGlvbkNvZGUpCi0gICAgICAgIG91dC5wcmludGYoIjsgYWN0aXZhdGlvbiBp
biByJWQiLCBhY3RpdmF0aW9uUmVnaXN0ZXIoKS5vZmZzZXQoKSk7CisgICAgICAgIG91dC5wcmlu
dGYoIjsgYWN0aXZhdGlvbiBpbiByJWQiLCBhY3RpdmF0aW9uUmVnaXN0ZXIoKSk7CiAgICAgb3V0
LnByaW50ZigiXG4iKTsKICAgICAKICAgICBjb25zdCBJbnN0cnVjdGlvbiogYmVnaW4gPSBpbnN0
cnVjdGlvbnMoKS5iZWdpbigpOwpAQCAtMTYxOSw3ICsxNjE5LDcgQEAgQ29kZUJsb2NrOjpDb2Rl
QmxvY2soU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmtlZENvZGVCbG9j
ayogdW5saW4KIAogICAgIHNldENvbnN0YW50UmVnaXN0ZXJzKHVubGlua2VkQ29kZUJsb2NrLT5j
b25zdGFudFJlZ2lzdGVycygpKTsKICAgICBpZiAodW5saW5rZWRDb2RlQmxvY2stPnVzZXNHbG9i
YWxPYmplY3QoKSkKLSAgICAgICAgbV9jb25zdGFudFJlZ2lzdGVyc1t1bmxpbmtlZENvZGVCbG9j
ay0+Z2xvYmFsT2JqZWN0UmVnaXN0ZXIoKS5vZmZzZXQoKV0uc2V0KCptX3ZtLCBvd25lckV4ZWN1
dGFibGUsIG1fZ2xvYmFsT2JqZWN0LmdldCgpKTsKKyAgICAgICAgbV9jb25zdGFudFJlZ2lzdGVy
c1t1bmxpbmtlZENvZGVCbG9jay0+Z2xvYmFsT2JqZWN0UmVnaXN0ZXIoKV0uc2V0KCptX3ZtLCBv
d25lckV4ZWN1dGFibGUsIG1fZ2xvYmFsT2JqZWN0LmdldCgpKTsKICAgICBtX2Z1bmN0aW9uRGVj
bHMuZ3Jvdyh1bmxpbmtlZENvZGVCbG9jay0+bnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCkpOwogICAg
IGZvciAoc2l6ZV90IGNvdW50ID0gdW5saW5rZWRDb2RlQmxvY2stPm51bWJlck9mRnVuY3Rpb25E
ZWNscygpLCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKICAgICAgICAgVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUqIHVubGlua2VkRXhlY3V0YWJsZSA9IHVubGlua2VkQ29kZUJsb2NrLT5mdW5j
dGlvbkRlY2woaSk7CkBAIC0yNTU3LDkgKzI1NTcsOSBAQCB2b2lkIENvZGVCbG9jazo6Y3JlYXRl
QWN0aXZhdGlvbihDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBBU1NFUlQoY29kZVR5cGUo
KSA9PSBGdW5jdGlvbkNvZGUpOwogICAgIEFTU0VSVChuZWVkc0Z1bGxTY29wZUNoYWluKCkpOwot
ICAgIEFTU0VSVCghY2FsbEZyYW1lLT51bmNoZWNrZWRSKGFjdGl2YXRpb25SZWdpc3RlcigpLm9m
ZnNldCgpKS5qc1ZhbHVlKCkpOworICAgIEFTU0VSVCghY2FsbEZyYW1lLT51bmNoZWNrZWRSKGFj
dGl2YXRpb25SZWdpc3RlcigpKS5qc1ZhbHVlKCkpOwogICAgIEpTQWN0aXZhdGlvbiogYWN0aXZh
dGlvbiA9IEpTQWN0aXZhdGlvbjo6Y3JlYXRlKGNhbGxGcmFtZS0+dm0oKSwgY2FsbEZyYW1lLCB0
aGlzKTsKLSAgICBjYWxsRnJhbWUtPnVuY2hlY2tlZFIoYWN0aXZhdGlvblJlZ2lzdGVyKCkub2Zm
c2V0KCkpID0gSlNWYWx1ZShhY3RpdmF0aW9uKTsKKyAgICBjYWxsRnJhbWUtPnVuY2hlY2tlZFIo
YWN0aXZhdGlvblJlZ2lzdGVyKCkpID0gSlNWYWx1ZShhY3RpdmF0aW9uKTsKICAgICBjYWxsRnJh
bWUtPnNldFNjb3BlKGFjdGl2YXRpb24pOwogfQogCkBAIC0zMzI3LDMwICszMzI3LDMyIEBAIGJv
b2wgQ29kZUJsb2NrOjp1c2VzT3Bjb2RlKE9wY29kZUlEIG9wY29kZUlEKQogICAgIHJldHVybiBm
YWxzZTsKIH0KIAotU3RyaW5nIENvZGVCbG9jazo6bmFtZUZvclJlZ2lzdGVyKFZpcnR1YWxSZWdp
c3RlciB2aXJ0dWFsUmVnaXN0ZXIpCitTdHJpbmcgQ29kZUJsb2NrOjpuYW1lRm9yUmVnaXN0ZXIo
aW50IHJlZ2lzdGVyTnVtYmVyKQogewogICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHN5
bWJvbFRhYmxlKCktPm1fbG9jayk7CiAgICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgZW5k
ID0gc3ltYm9sVGFibGUoKS0+ZW5kKGxvY2tlcik7CiAgICAgZm9yIChTeW1ib2xUYWJsZTo6TWFw
OjppdGVyYXRvciBwdHIgPSBzeW1ib2xUYWJsZSgpLT5iZWdpbihsb2NrZXIpOyBwdHIgIT0gZW5k
OyArK3B0cikgewotICAgICAgICBpZiAocHRyLT52YWx1ZS5nZXRJbmRleCgpID09IHZpcnR1YWxS
ZWdpc3Rlci5vZmZzZXQoKSkgeworICAgICAgICBpZiAocHRyLT52YWx1ZS5nZXRJbmRleCgpID09
IHJlZ2lzdGVyTnVtYmVyKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyB3b24ndCB3b3Jr
IGZyb20gdGhlIGNvbXBpbGF0aW9uIHRocmVhZC4KICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTUzMDAKICAgICAgICAgICAgIHJldHVybiBT
dHJpbmcocHRyLT5rZXkpOwogICAgICAgICB9CiAgICAgfQotICAgIGlmIChuZWVkc0FjdGl2YXRp
b24oKSAmJiB2aXJ0dWFsUmVnaXN0ZXIgPT0gYWN0aXZhdGlvblJlZ2lzdGVyKCkpCisgICAgaWYg
KG5lZWRzQWN0aXZhdGlvbigpICYmIHJlZ2lzdGVyTnVtYmVyID09IGFjdGl2YXRpb25SZWdpc3Rl
cigpKQogICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJhY3RpdmF0aW9uIik7Ci0gICAgaWYg
KHZpcnR1YWxSZWdpc3RlciA9PSB0aGlzUmVnaXN0ZXIoKSkKKyAgICBpZiAocmVnaXN0ZXJOdW1i
ZXIgPT0gdGhpc1JlZ2lzdGVyKCkpCiAgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoInRoaXMi
KTsKICAgICBpZiAodXNlc0FyZ3VtZW50cygpKSB7Ci0gICAgICAgIGlmICh2aXJ0dWFsUmVnaXN0
ZXIgPT0gYXJndW1lbnRzUmVnaXN0ZXIoKSkKKyAgICAgICAgaWYgKHJlZ2lzdGVyTnVtYmVyID09
IGFyZ3VtZW50c1JlZ2lzdGVyKCkpCiAgICAgICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJh
cmd1bWVudHMiKTsKLSAgICAgICAgaWYgKHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3Rlcihhcmd1
bWVudHNSZWdpc3RlcigpKSA9PSB2aXJ0dWFsUmVnaXN0ZXIpCisgICAgICAgIGlmICh1bm1vZGlm
aWVkQXJndW1lbnRzUmVnaXN0ZXIoYXJndW1lbnRzUmVnaXN0ZXIoKSkgPT0gcmVnaXN0ZXJOdW1i
ZXIpCiAgICAgICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJyZWFsIGFyZ3VtZW50cyIpOwog
ICAgIH0KLSAgICBpZiAodmlydHVhbFJlZ2lzdGVyLmlzQXJndW1lbnQoKSkKLSAgICAgICAgcmV0
dXJuIFN0cmluZzo6Zm9ybWF0KCJhcmd1bWVudHNbJTNkXSIsIHZpcnR1YWxSZWdpc3Rlci50b0Fy
Z3VtZW50KCkpLmltcGwoKTsKLQorICAgIGlmIChyZWdpc3Rlck51bWJlciA8IDApIHsKKyAgICAg
ICAgaW50IGFyZ3VtZW50UG9zaXRpb24gPSAtcmVnaXN0ZXJOdW1iZXI7CisgICAgICAgIGFyZ3Vt
ZW50UG9zaXRpb24gLT0gSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSArIDE7CisgICAgICAg
IHJldHVybiBTdHJpbmc6OmZvcm1hdCgiYXJndW1lbnRzWyUzZF0iLCBhcmd1bWVudFBvc2l0aW9u
IC0gMSkuaW1wbCgpOworICAgIH0KICAgICByZXR1cm4gIiI7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAppbmRleCA1NTM5YWM5NmZkNzc2MzQzODM0NTlm
ZjY1MjcwYjgwMmY4MzViMTVhLi5hOTg3ZTI0YmMzNjhmNjQ2YjEwOGUyZDE0YTA5NjVlODU0MTFl
NGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCkBAIC03
MSw3ICs3MSw2IEBACiAjaW5jbHVkZSAiU3RydWN0dXJlU3R1YkluZm8uaCIKICNpbmNsdWRlICJV
bmNvbmRpdGlvbmFsRmluYWxpemVyLmgiCiAjaW5jbHVkZSAiVmFsdWVQcm9maWxlLmgiCi0jaW5j
bHVkZSAiVmlydHVhbFJlZ2lzdGVyLmgiCiAjaW5jbHVkZSAiV2F0Y2hwb2ludC5oIgogI2luY2x1
ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KQEAgLTg3
LDcgKzg2LDcgQEAgY2xhc3MgRXhlY1N0YXRlOwogY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9y
OwogY2xhc3MgUmVwYXRjaEJ1ZmZlcjsKIAotaW5saW5lIFZpcnR1YWxSZWdpc3RlciB1bm1vZGlm
aWVkQXJndW1lbnRzUmVnaXN0ZXIoVmlydHVhbFJlZ2lzdGVyIGFyZ3VtZW50c1JlZ2lzdGVyKSB7
IHJldHVybiBWaXJ0dWFsUmVnaXN0ZXIoYXJndW1lbnRzUmVnaXN0ZXIub2Zmc2V0KCkgKyAxKTsg
fQoraW5saW5lIGludCB1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIoaW50IGFyZ3VtZW50c1Jl
Z2lzdGVyKSB7IHJldHVybiBhcmd1bWVudHNSZWdpc3RlciArIDE7IH0KIAogc3RhdGljIEFMV0FZ
U19JTkxJTkUgaW50IG1pc3NpbmdUaGlzT2JqZWN0TWFya2VyKCkgeyByZXR1cm4gc3RkOjpudW1l
cmljX2xpbWl0czxpbnQ+OjptYXgoKTsgfQogCkBAIC0xNDksNyArMTQ4LDcgQEAgcHVibGljOgog
CiAgICAgaW5saW5lIGJvb2wgaXNLbm93bk5vdEltbWVkaWF0ZShpbnQgaW5kZXgpCiAgICAgewot
ICAgICAgICBpZiAoaW5kZXggPT0gbV90aGlzUmVnaXN0ZXIub2Zmc2V0KCkgJiYgIW1faXNTdHJp
Y3RNb2RlKQorICAgICAgICBpZiAoaW5kZXggPT0gbV90aGlzUmVnaXN0ZXIgJiYgIW1faXNTdHJp
Y3RNb2RlKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAgICAgaWYgKGlzQ29uc3Rh
bnRSZWdpc3RlckluZGV4KGluZGV4KSkKQEAgLTI5OSw2MSArMjk4LDU4IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldFZNKFZNKiB2bSkgeyBtX3ZtID0gdm07IH0KICAgICBWTSogdm0oKSB7IHJldHVy
biBtX3ZtOyB9CiAKLSAgICB2b2lkIHNldFRoaXNSZWdpc3RlcihWaXJ0dWFsUmVnaXN0ZXIgdGhp
c1JlZ2lzdGVyKSB7IG1fdGhpc1JlZ2lzdGVyID0gdGhpc1JlZ2lzdGVyOyB9Ci0gICAgVmlydHVh
bFJlZ2lzdGVyIHRoaXNSZWdpc3RlcigpIGNvbnN0IHsgcmV0dXJuIG1fdGhpc1JlZ2lzdGVyOyB9
CisgICAgdm9pZCBzZXRUaGlzUmVnaXN0ZXIoaW50IHRoaXNSZWdpc3RlcikgeyBtX3RoaXNSZWdp
c3RlciA9IHRoaXNSZWdpc3RlcjsgfQorICAgIGludCB0aGlzUmVnaXN0ZXIoKSBjb25zdCB7IHJl
dHVybiBtX3RoaXNSZWdpc3RlcjsgfQogCiAgICAgYm9vbCBuZWVkc0Z1bGxTY29wZUNoYWluKCkg
Y29uc3QgeyByZXR1cm4gbV91bmxpbmtlZENvZGUtPm5lZWRzRnVsbFNjb3BlQ2hhaW4oKTsgfQog
ICAgIGJvb2wgdXNlc0V2YWwoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkQ29kZS0+dXNlc0V2
YWwoKTsgfQogCi0gICAgdm9pZCBzZXRBcmd1bWVudHNSZWdpc3RlcihWaXJ0dWFsUmVnaXN0ZXIg
YXJndW1lbnRzUmVnaXN0ZXIpCisgICAgdm9pZCBzZXRBcmd1bWVudHNSZWdpc3RlcihpbnQgYXJn
dW1lbnRzUmVnaXN0ZXIpCiAgICAgewotICAgICAgICBBU1NFUlQoYXJndW1lbnRzUmVnaXN0ZXIu
aXNWYWxpZCgpKTsKKyAgICAgICAgQVNTRVJUKGFyZ3VtZW50c1JlZ2lzdGVyICE9IChpbnQpSW52
YWxpZFZpcnR1YWxSZWdpc3Rlcik7CiAgICAgICAgIG1fYXJndW1lbnRzUmVnaXN0ZXIgPSBhcmd1
bWVudHNSZWdpc3RlcjsKICAgICAgICAgQVNTRVJUKHVzZXNBcmd1bWVudHMoKSk7CiAgICAgfQot
ICAgIFZpcnR1YWxSZWdpc3RlciBhcmd1bWVudHNSZWdpc3RlcigpIGNvbnN0CisgICAgaW50IGFy
Z3VtZW50c1JlZ2lzdGVyKCkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVCh1c2VzQXJndW1l
bnRzKCkpOwogICAgICAgICByZXR1cm4gbV9hcmd1bWVudHNSZWdpc3RlcjsKICAgICB9Ci0gICAg
VmlydHVhbFJlZ2lzdGVyIHVuY2hlY2tlZEFyZ3VtZW50c1JlZ2lzdGVyKCkKKyAgICBpbnQgdW5j
aGVja2VkQXJndW1lbnRzUmVnaXN0ZXIoKQogICAgIHsKICAgICAgICAgaWYgKCF1c2VzQXJndW1l
bnRzKCkpCi0gICAgICAgICAgICByZXR1cm4gVmlydHVhbFJlZ2lzdGVyKCk7CisgICAgICAgICAg
ICByZXR1cm4gSW52YWxpZFZpcnR1YWxSZWdpc3RlcjsKICAgICAgICAgcmV0dXJuIGFyZ3VtZW50
c1JlZ2lzdGVyKCk7CiAgICAgfQotICAgIHZvaWQgc2V0QWN0aXZhdGlvblJlZ2lzdGVyKFZpcnR1
YWxSZWdpc3RlciBhY3RpdmF0aW9uUmVnaXN0ZXIpCisgICAgdm9pZCBzZXRBY3RpdmF0aW9uUmVn
aXN0ZXIoaW50IGFjdGl2YXRpb25SZWdpc3RlcikKICAgICB7CiAgICAgICAgIG1fYWN0aXZhdGlv
blJlZ2lzdGVyID0gYWN0aXZhdGlvblJlZ2lzdGVyOwogICAgIH0KLQotICAgIFZpcnR1YWxSZWdp
c3RlciBhY3RpdmF0aW9uUmVnaXN0ZXIoKSBjb25zdAorICAgIGludCBhY3RpdmF0aW9uUmVnaXN0
ZXIoKSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUKG5lZWRzRnVsbFNjb3BlQ2hhaW4oKSk7
CiAgICAgICAgIHJldHVybiBtX2FjdGl2YXRpb25SZWdpc3RlcjsKICAgICB9Ci0KLSAgICBWaXJ0
dWFsUmVnaXN0ZXIgdW5jaGVja2VkQWN0aXZhdGlvblJlZ2lzdGVyKCkKKyAgICBpbnQgdW5jaGVj
a2VkQWN0aXZhdGlvblJlZ2lzdGVyKCkKICAgICB7CiAgICAgICAgIGlmICghbmVlZHNGdWxsU2Nv
cGVDaGFpbigpKQotICAgICAgICAgICAgcmV0dXJuIFZpcnR1YWxSZWdpc3RlcigpOworICAgICAg
ICAgICAgcmV0dXJuIEludmFsaWRWaXJ0dWFsUmVnaXN0ZXI7CiAgICAgICAgIHJldHVybiBhY3Rp
dmF0aW9uUmVnaXN0ZXIoKTsKICAgICB9Ci0KLSAgICBib29sIHVzZXNBcmd1bWVudHMoKSBjb25z
dCB7IHJldHVybiBtX2FyZ3VtZW50c1JlZ2lzdGVyLmlzVmFsaWQoKTsgfQorICAgIGJvb2wgdXNl
c0FyZ3VtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fYXJndW1lbnRzUmVnaXN0ZXIgIT0gKGludClJ
bnZhbGlkVmlydHVhbFJlZ2lzdGVyOyB9CiAKICAgICBib29sIG5lZWRzQWN0aXZhdGlvbigpIGNv
bnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9uZWVkc0FjdGl2YXRpb247CiAgICAgfQogCi0g
ICAgYm9vbCBpc0NhcHR1cmVkKFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kLCBJbmxpbmVDYWxsRnJh
bWUqIGlubGluZUNhbGxGcmFtZSA9IDApIGNvbnN0CisgICAgYm9vbCBpc0NhcHR1cmVkKGludCBv
cGVyYW5kLCBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSA9IDApIGNvbnN0CiAgICAg
ewotICAgICAgICBpZiAob3BlcmFuZC5pc0FyZ3VtZW50KCkpCi0gICAgICAgICAgICByZXR1cm4g
b3BlcmFuZC50b0FyZ3VtZW50KCkgJiYgdXNlc0FyZ3VtZW50cygpOworICAgICAgICBpZiAob3Bl
cmFuZElzQXJndW1lbnQob3BlcmFuZCkpCisgICAgICAgICAgICByZXR1cm4gb3BlcmFuZFRvQXJn
dW1lbnQob3BlcmFuZCkgJiYgdXNlc0FyZ3VtZW50cygpOwogCiAgICAgICAgIGlmIChpbmxpbmVD
YWxsRnJhbWUpCi0gICAgICAgICAgICByZXR1cm4gaW5saW5lQ2FsbEZyYW1lLT5jYXB0dXJlZFZh
cnMuZ2V0KG9wZXJhbmQudG9Mb2NhbCgpKTsKKyAgICAgICAgICAgIHJldHVybiBpbmxpbmVDYWxs
RnJhbWUtPmNhcHR1cmVkVmFycy5nZXQob3BlcmFuZFRvTG9jYWwob3BlcmFuZCkpOwogCiAgICAg
ICAgIC8vIFRoZSBhY3RpdmF0aW9uIG9iamVjdCBpc24ndCBpbiB0aGUgY2FwdHVyZWQgcmVnaW9u
LCBidXQgaXQncyAiY2FwdHVyZWQiCiAgICAgICAgIC8vIGluIHRoZSBzZW5zZSB0aGF0IHN0b3Jl
cyB0byBpdHMgbG9jYXRpb24gY2FuIGJlIG9ic2VydmVkIGluZGlyZWN0bHkuCkBAIC0zNzIsOCAr
MzY4LDggQEAgcHVibGljOgogICAgICAgICBpZiAoIXN5bWJvbFRhYmxlKCkpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgcmV0dXJuIG9wZXJhbmQub2Zmc2V0KCkgPD0gc3lt
Ym9sVGFibGUoKS0+Y2FwdHVyZVN0YXJ0KCkKLSAgICAgICAgICAgICYmIG9wZXJhbmQub2Zmc2V0
KCkgPiBzeW1ib2xUYWJsZSgpLT5jYXB0dXJlRW5kKCk7CisgICAgICAgIHJldHVybiBvcGVyYW5k
IDw9IHN5bWJvbFRhYmxlKCktPmNhcHR1cmVTdGFydCgpCisgICAgICAgICAgICAmJiBvcGVyYW5k
ID4gc3ltYm9sVGFibGUoKS0+Y2FwdHVyZUVuZCgpOwogICAgIH0KIAogICAgIENvZGVUeXBlIGNv
ZGVUeXBlKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZENvZGUtPmNvZGVUeXBlKCk7IH0KQEAg
LTM5NSw3ICszOTEsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNsZWFyRXZhbENhY2hlKCk7CiAK
LSAgICBTdHJpbmcgbmFtZUZvclJlZ2lzdGVyKFZpcnR1YWxSZWdpc3Rlcik7CisgICAgU3RyaW5n
IG5hbWVGb3JSZWdpc3RlcihpbnQgcmVnaXN0ZXJOdW1iZXIpOwogCiAjaWYgRU5BQkxFKEpJVCkK
ICAgICB2b2lkIHNldE51bWJlck9mU3RydWN0dXJlU3R1YkluZm9zKHNpemVfdCBzaXplKSB7IG1f
c3RydWN0dXJlU3R1YkluZm9zLmdyb3coc2l6ZSk7IH0KQEAgLTEwMzEsOSArMTAyNyw5IEBAIHBy
aXZhdGU6CiAgICAgVk0qIG1fdm07CiAKICAgICBSZWZDb3VudGVkQXJyYXk8SW5zdHJ1Y3Rpb24+
IG1faW5zdHJ1Y3Rpb25zOwotICAgIFZpcnR1YWxSZWdpc3RlciBtX3RoaXNSZWdpc3RlcjsKLSAg
ICBWaXJ0dWFsUmVnaXN0ZXIgbV9hcmd1bWVudHNSZWdpc3RlcjsKLSAgICBWaXJ0dWFsUmVnaXN0
ZXIgbV9hY3RpdmF0aW9uUmVnaXN0ZXI7CisgICAgaW50IG1fdGhpc1JlZ2lzdGVyOworICAgIGlu
dCBtX2FyZ3VtZW50c1JlZ2lzdGVyOworICAgIGludCBtX2FjdGl2YXRpb25SZWdpc3RlcjsKIAog
ICAgIGJvb2wgbV9pc1N0cmljdE1vZGU7CiAgICAgYm9vbCBtX25lZWRzQWN0aXZhdGlvbjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgKaW5kZXggZGFjNTlh
MDYwMzgzMzk3MjIwYzE2NzIwYTlhYjJmM2ZlNTE5YzRmZC4uMzAxZjkwZjMwNjIxNzcyM2VjOTlh
MmM0OGY4MWM1NTgzNzJkZDYzMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0luc3RydWN0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0luc3RydWN0aW9uLmgKQEAgLTM1LDcgKzM1LDYgQEAKICNpbmNsdWRlICJTcGVjaWFsUG9pbnRl
ci5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUNoYWluLmgi
Ci0jaW5jbHVkZSAiVmlydHVhbFJlZ2lzdGVyLmgiCiAjaW5jbHVkZSA8d3RmL1ZlY3RvclRyYWl0
cy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9MYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0xhenlPcGVyYW5kVmFsdWVQcm9maWxlLmgKaW5kZXggNDgzZTViNWJiMTMw
YjQ3YzliZTZhZWJlMjE2MWY2ZWQ5YzEzMWQ2Mi4uNWE3ODM1YjY2NjU5MzUyNjU0NThkYjQ5MzMx
MDMwYzFkM2UzZjBjMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0xhenlPcGVyYW5kVmFsdWVQcm9maWxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0xhenlPcGVyYW5kVmFsdWVQcm9maWxlLmgKQEAgLTQ2LDI2ICs0NiwyNiBAQCBjbGFz
cyBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtleSB7CiBwdWJsaWM6CiAgICAgTGF6eU9wZXJhbmRW
YWx1ZVByb2ZpbGVLZXkoKQogICAgICAgICA6IG1fYnl0ZWNvZGVPZmZzZXQoMCkgLy8gMCA9IGVt
cHR5IHZhbHVlCi0gICAgICAgICwgbV9vcGVyYW5kKFZpcnR1YWxSZWdpc3RlcigpKSAvLyBub3Qg
YSB2YWxpZCBvcGVyYW5kIGluZGV4IGluIG91ciBjdXJyZW50IHNjaGVtZQorICAgICAgICAsIG1f
b3BlcmFuZChJbnZhbGlkVmlydHVhbFJlZ2lzdGVyKSAvLyBub3QgYSB2YWxpZCBvcGVyYW5kIGlu
ZGV4IGluIG91ciBjdXJyZW50IHNjaGVtZQogICAgIHsKICAgICB9CiAgICAgCiAgICAgTGF6eU9w
ZXJhbmRWYWx1ZVByb2ZpbGVLZXkoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKQogICAg
ICAgICA6IG1fYnl0ZWNvZGVPZmZzZXQoMSkgLy8gMSA9IGRlbGV0ZWQgdmFsdWUKLSAgICAgICAg
LCBtX29wZXJhbmQoVmlydHVhbFJlZ2lzdGVyKCkpIC8vIG5vdCBhIHZhbGlkIG9wZXJhbmQgaW5k
ZXggaW4gb3VyIGN1cnJlbnQgc2NoZW1lCisgICAgICAgICwgbV9vcGVyYW5kKEludmFsaWRWaXJ0
dWFsUmVnaXN0ZXIpIC8vIG5vdCBhIHZhbGlkIG9wZXJhbmQgaW5kZXggaW4gb3VyIGN1cnJlbnQg
c2NoZW1lCiAgICAgewogICAgIH0KICAgICAKLSAgICBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtl
eSh1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQpCisgICAg
TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXkodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIGludCBv
cGVyYW5kKQogICAgICAgICA6IG1fYnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpCiAgICAg
ICAgICwgbV9vcGVyYW5kKG9wZXJhbmQpCiAgICAgewotICAgICAgICBBU1NFUlQobV9vcGVyYW5k
LmlzVmFsaWQoKSk7CisgICAgICAgIEFTU0VSVChvcGVyYW5kICE9IEludmFsaWRWaXJ0dWFsUmVn
aXN0ZXIpOwogICAgIH0KICAgICAKICAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0CiAgICAgewot
ICAgICAgICByZXR1cm4gIW1fb3BlcmFuZC5pc1ZhbGlkKCk7CisgICAgICAgIHJldHVybiBtX29w
ZXJhbmQgPT0gSW52YWxpZFZpcnR1YWxSZWdpc3RlcjsKICAgICB9CiAgICAgCiAgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IExhenlPcGVyYW5kVmFsdWVQcm9maWxlS2V5JiBvdGhlcikgY29uc3QK
QEAgLTc2LDcgKzc2LDcgQEAgcHVibGljOgogICAgIAogICAgIHVuc2lnbmVkIGhhc2goKSBjb25z
dAogICAgIHsKLSAgICAgICAgcmV0dXJuIFdURjo6aW50SGFzaChtX2J5dGVjb2RlT2Zmc2V0KSAr
IG1fb3BlcmFuZC5vZmZzZXQoKTsKKyAgICAgICAgcmV0dXJuIFdURjo6aW50SGFzaChtX2J5dGVj
b2RlT2Zmc2V0KSArIG1fb3BlcmFuZDsKICAgICB9CiAgICAgCiAgICAgdW5zaWduZWQgYnl0ZWNv
ZGVPZmZzZXQoKSBjb25zdApAQCAtODQsOCArODQsNyBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VS
VCghISp0aGlzKTsKICAgICAgICAgcmV0dXJuIG1fYnl0ZWNvZGVPZmZzZXQ7CiAgICAgfQotCi0g
ICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQoKSBjb25zdAorICAgIGludCBvcGVyYW5kKCkgY29u
c3QKICAgICB7CiAgICAgICAgIEFTU0VSVCghISp0aGlzKTsKICAgICAgICAgcmV0dXJuIG1fb3Bl
cmFuZDsKQEAgLTkzLDExICs5MiwxMSBAQCBwdWJsaWM6CiAgICAgCiAgICAgYm9vbCBpc0hhc2hU
YWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gIW1fb3BlcmFu
ZC5pc1ZhbGlkKCkgJiYgbV9ieXRlY29kZU9mZnNldDsKKyAgICAgICAgcmV0dXJuIG1fb3BlcmFu
ZCA9PSBJbnZhbGlkVmlydHVhbFJlZ2lzdGVyICYmIG1fYnl0ZWNvZGVPZmZzZXQ7CiAgICAgfQog
cHJpdmF0ZTogCiAgICAgdW5zaWduZWQgbV9ieXRlY29kZU9mZnNldDsKLSAgICBWaXJ0dWFsUmVn
aXN0ZXIgbV9vcGVyYW5kOworICAgIGludCBtX29wZXJhbmQ7CiB9OwogCiBzdHJ1Y3QgTGF6eU9w
ZXJhbmRWYWx1ZVByb2ZpbGVLZXlIYXNoIHsKQEAgLTEzMCw3ICsxMjksNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKIHN0cnVjdCBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZSA6IHB1YmxpYyBNaW5pbWFsVmFs
dWVQcm9maWxlIHsKICAgICBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZSgpCiAgICAgICAgIDogTWlu
aW1hbFZhbHVlUHJvZmlsZSgpCi0gICAgICAgICwgbV9vcGVyYW5kKFZpcnR1YWxSZWdpc3Rlcigp
KQorICAgICAgICAsIG1fb3BlcmFuZChJbnZhbGlkVmlydHVhbFJlZ2lzdGVyKQogICAgIHsKICAg
ICB9CiAgICAgCkBAIC0xNDUsNyArMTQ0LDcgQEAgc3RydWN0IExhenlPcGVyYW5kVmFsdWVQcm9m
aWxlIDogcHVibGljIE1pbmltYWxWYWx1ZVByb2ZpbGUgewogICAgICAgICByZXR1cm4gTGF6eU9w
ZXJhbmRWYWx1ZVByb2ZpbGVLZXkobV9ieXRlY29kZU9mZnNldCwgbV9vcGVyYW5kKTsKICAgICB9
CiAgICAgCi0gICAgVmlydHVhbFJlZ2lzdGVyIG1fb3BlcmFuZDsKKyAgICBpbnQgbV9vcGVyYW5k
OwogICAgIAogICAgIHR5cGVkZWYgU2VnbWVudGVkVmVjdG9yPExhenlPcGVyYW5kVmFsdWVQcm9m
aWxlLCA4PiBMaXN0OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmNwcAppbmRleCAxYWM1
YmI1YTA0Zjc2MDVkMGRkYmNkZWY2NjRlZDI3YzQ4MjA2ZTU0Li4xMzgwYmY4ZTkyNDllYzJiYWYw
NGZkZTQ0OWI2ZjE0ZGNhOTY1ZjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwCkBA
IC0zOSw3ICszOSw3IEBAIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUgTWV0aG9kT2ZHZXR0
aW5nQVZhbHVlUHJvZmlsZTo6ZnJvbUxhenlPcGVyYW5kKAogICAgIHJlc3VsdC5tX2tpbmQgPSBM
YXp5T3BlcmFuZDsKICAgICByZXN1bHQudS5sYXp5T3BlcmFuZC5jb2RlQmxvY2sgPSBjb2RlQmxv
Y2s7CiAgICAgcmVzdWx0LnUubGF6eU9wZXJhbmQuYnl0ZWNvZGVPZmZzZXQgPSBrZXkuYnl0ZWNv
ZGVPZmZzZXQoKTsKLSAgICByZXN1bHQudS5sYXp5T3BlcmFuZC5vcGVyYW5kID0ga2V5Lm9wZXJh
bmQoKS5vZmZzZXQoKTsKKyAgICByZXN1bHQudS5sYXp5T3BlcmFuZC5vcGVyYW5kID0ga2V5Lm9w
ZXJhbmQoKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC01Myw3ICs1Myw3IEBAIEVuY29k
ZWRKU1ZhbHVlKiBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlOjpnZXRTcGVjRmFpbEJ1Y2tl
dCh1bnNpZ25lZCBpbmRleCkKICAgICAgICAgcmV0dXJuIHUucHJvZmlsZS0+c3BlY0ZhaWxCdWNr
ZXQoaW5kZXgpOwogICAgICAgICAKICAgICBjYXNlIExhenlPcGVyYW5kOiB7Ci0gICAgICAgIExh
enlPcGVyYW5kVmFsdWVQcm9maWxlS2V5IGtleSh1LmxhenlPcGVyYW5kLmJ5dGVjb2RlT2Zmc2V0
LCBWaXJ0dWFsUmVnaXN0ZXIodS5sYXp5T3BlcmFuZC5vcGVyYW5kKSk7CisgICAgICAgIExhenlP
cGVyYW5kVmFsdWVQcm9maWxlS2V5IGtleSh1LmxhenlPcGVyYW5kLmJ5dGVjb2RlT2Zmc2V0LCB1
LmxhenlPcGVyYW5kLm9wZXJhbmQpOwogICAgICAgICAKICAgICAgICAgQ29uY3VycmVudEpJVExv
Y2tlciBsb2NrZXIodS5sYXp5T3BlcmFuZC5jb2RlQmxvY2stPm1fbG9jayk7CiAgICAgICAgIExh
enlPcGVyYW5kVmFsdWVQcm9maWxlKiBwcm9maWxlID0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9PcGVyYW5kcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL09wZXJhbmRzLmgKaW5kZXggNzdkNzYwMjlmNWFiNGFiMjEyNTY4Y2E1YjY4MjJiNzU3
YmJhMTM1ZC4uMTI2YzU5OTE1ZDQ2YmRjZTUxZTU1NDM4NmFkNDgzNGMzOTcxMDU0YyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wZXJhbmRzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wZXJhbmRzLmgKQEAgLTI4LDEzICsyOCwyMCBA
QAogCiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKLSNpbmNs
dWRlICJWaXJ0dWFsUmVnaXN0ZXIuaCIKLQogI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgog
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKK2lubGluZSBpbnQg
bG9jYWxUb09wZXJhbmQoaW50IGxvY2FsKSB7IHJldHVybiAtbG9jYWw7IH0KK2lubGluZSBib29s
IG9wZXJhbmRJc0xvY2FsKGludCBvcGVyYW5kKSB7IHJldHVybiBvcGVyYW5kIDw9IDA7IH0KK2lu
bGluZSBpbnQgb3BlcmFuZFRvTG9jYWwoaW50IG9wZXJhbmQpIHsgcmV0dXJuIC1vcGVyYW5kOyB9
CisKKy8vIGFyZ3VtZW50IDAgaXMgJ3RoaXMnLgoraW5saW5lIGJvb2wgb3BlcmFuZElzQXJndW1l
bnQoaW50IG9wZXJhbmQpIHsgcmV0dXJuIG9wZXJhbmQgPiAwOyB9CitpbmxpbmUgaW50IG9wZXJh
bmRUb0FyZ3VtZW50KGludCBvcGVyYW5kKSB7IHJldHVybiBvcGVyYW5kIC0gQ2FsbEZyYW1lOjp0
aGlzQXJndW1lbnRPZmZzZXQoKTsgfQoraW5saW5lIGludCBhcmd1bWVudFRvT3BlcmFuZChpbnQg
YXJndW1lbnQpIHsgcmV0dXJuIGFyZ3VtZW50ICsgQ2FsbEZyYW1lOjp0aGlzQXJndW1lbnRPZmZz
ZXQoKTsgfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgT3BlcmFuZFZhbHVlVHJhaXRz
OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpAQCAtMTM2LDQzICsxNDMsMzMgQEAgcHVibGljOgog
ICAgIFQmIG9wZXJhbmQoaW50IG9wZXJhbmQpCiAgICAgewogICAgICAgICBpZiAob3BlcmFuZElz
QXJndW1lbnQob3BlcmFuZCkpIHsKLSAgICAgICAgICAgIGludCBhcmd1bWVudCA9IFZpcnR1YWxS
ZWdpc3RlcihvcGVyYW5kKS50b0FyZ3VtZW50KCk7CisgICAgICAgICAgICBpbnQgYXJndW1lbnQg
PSBvcGVyYW5kVG9Bcmd1bWVudChvcGVyYW5kKTsKICAgICAgICAgICAgIHJldHVybiBtX2FyZ3Vt
ZW50c1thcmd1bWVudF07CiAgICAgICAgIH0KLQotICAgICAgICByZXR1cm4gbV9sb2NhbHNbVmly
dHVhbFJlZ2lzdGVyKG9wZXJhbmQpLnRvTG9jYWwoKV07Ci0gICAgfQotCi0gICAgVCYgb3BlcmFu
ZChWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IG9wZXJhbmQodmlydHVhbFJlZ2lzdGVyLm9mZnNldCgpKTsKKyAgICAgICAgCisgICAgICAgIHJl
dHVybiBtX2xvY2Fsc1tvcGVyYW5kVG9Mb2NhbChvcGVyYW5kKV07CiAgICAgfQotCisgICAgCiAg
ICAgY29uc3QgVCYgb3BlcmFuZChpbnQgb3BlcmFuZCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2Fz
dDxjb25zdCBUJj4oY29uc3RfY2FzdDxPcGVyYW5kcyo+KHRoaXMpLT5vcGVyYW5kKG9wZXJhbmQp
KTsgfQogICAgIAogICAgIGJvb2wgaGFzT3BlcmFuZChpbnQgb3BlcmFuZCkgY29uc3QKICAgICB7
CiAgICAgICAgIGlmIChvcGVyYW5kSXNBcmd1bWVudChvcGVyYW5kKSkKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90PihWaXJ0dWFsUmVn
aXN0ZXIob3BlcmFuZCkudG9Mb2NhbCgpKSA8IG51bWJlck9mTG9jYWxzKCk7CisgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KG9wZXJhbmRUb0xvY2FsKG9wZXJhbmQpKSA8IG51bWJl
ck9mTG9jYWxzKCk7CiAgICAgfQogICAgIAogICAgIHZvaWQgc2V0T3BlcmFuZChpbnQgb3BlcmFu
ZCwgY29uc3QgVCYgdmFsdWUpCiAgICAgewogICAgICAgICBpZiAob3BlcmFuZElzQXJndW1lbnQo
b3BlcmFuZCkpIHsKLSAgICAgICAgICAgIGludCBhcmd1bWVudCA9IFZpcnR1YWxSZWdpc3Rlcihv
cGVyYW5kKS50b0FyZ3VtZW50KCk7CisgICAgICAgICAgICBpbnQgYXJndW1lbnQgPSBvcGVyYW5k
VG9Bcmd1bWVudChvcGVyYW5kKTsKICAgICAgICAgICAgIG1fYXJndW1lbnRzW2FyZ3VtZW50XSA9
IHZhbHVlOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAg
ICBzZXRMb2NhbChWaXJ0dWFsUmVnaXN0ZXIob3BlcmFuZCkudG9Mb2NhbCgpLCB2YWx1ZSk7Cisg
ICAgICAgIHNldExvY2FsKG9wZXJhbmRUb0xvY2FsKG9wZXJhbmQpLCB2YWx1ZSk7CiAgICAgfQog
ICAgIAotICAgIHZvaWQgc2V0T3BlcmFuZChWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVy
LCBjb25zdCBUJiB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIHNldE9wZXJhbmQodmlydHVhbFJlZ2lz
dGVyLm9mZnNldCgpLCB2YWx1ZSk7Ci0gICAgfQotCiAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7
IHJldHVybiBudW1iZXJPZkFyZ3VtZW50cygpICsgbnVtYmVyT2ZMb2NhbHMoKTsgfQogICAgIGNv
bnN0IFQmIGF0KHNpemVfdCBpbmRleCkgY29uc3QKICAgICB7CkBAIC0yMDIsMTggKzE5OSwxOCBA
QCBwdWJsaWM6CiAgICAgaW50IG9wZXJhbmRGb3JJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0CiAg
ICAgewogICAgICAgICBpZiAoaW5kZXggPCBudW1iZXJPZkFyZ3VtZW50cygpKQotICAgICAgICAg
ICAgcmV0dXJuIHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGluZGV4KS5vZmZzZXQoKTsKLSAg
ICAgICAgcmV0dXJuIHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGluZGV4IC0gbnVtYmVyT2ZBcmd1
bWVudHMoKSkub2Zmc2V0KCk7CisgICAgICAgICAgICByZXR1cm4gYXJndW1lbnRUb09wZXJhbmQo
aW5kZXgpOworICAgICAgICByZXR1cm4gbG9jYWxUb09wZXJhbmQoaW5kZXggLSBudW1iZXJPZkFy
Z3VtZW50cygpKTsKICAgICB9CiAgICAgCiAgICAgdm9pZCBzZXRPcGVyYW5kRmlyc3RUaW1lKGlu
dCBvcGVyYW5kLCBjb25zdCBUJiB2YWx1ZSkKICAgICB7CiAgICAgICAgIGlmIChvcGVyYW5kSXNB
cmd1bWVudChvcGVyYW5kKSkgewotICAgICAgICAgICAgc2V0QXJndW1lbnRGaXJzdFRpbWUoVmly
dHVhbFJlZ2lzdGVyKG9wZXJhbmQpLnRvQXJndW1lbnQoKSwgdmFsdWUpOworICAgICAgICAgICAg
c2V0QXJndW1lbnRGaXJzdFRpbWUob3BlcmFuZFRvQXJndW1lbnQob3BlcmFuZCksIHZhbHVlKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgc2V0TG9j
YWxGaXJzdFRpbWUoVmlydHVhbFJlZ2lzdGVyKG9wZXJhbmQpLnRvTG9jYWwoKSwgdmFsdWUpOwor
ICAgICAgICBzZXRMb2NhbEZpcnN0VGltZShvcGVyYW5kVG9Mb2NhbChvcGVyYW5kKSwgdmFsdWUp
OwogICAgIH0KICAgICAKICAgICB2b2lkIGZpbGwoVCB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCmluZGV4IGQxM2Fh
NjVhNTMzZTJjYTM2ZDMzMzlhMDY2M2UwZDNlZmQ2ZDlhYjguLjA0NjA1NzJlZWVkMjAxZWRmNTgx
ODFhMTAzNDJiNDRlZmE5NDE5NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcApAQCAtMTk0LDggKzE5NCw4IEBAIFVubGlu
a2VkQ29kZUJsb2NrOjpVbmxpbmtlZENvZGVCbG9jayhWTSogdm0sIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBDb2RlVHlwZSBjb2RlCiAgICAgLCBtX251bUNhbGxlZVJlZ2lzdGVycygwKQogICAgICwg
bV9udW1QYXJhbWV0ZXJzKDApCiAgICAgLCBtX3ZtKHZtKQotICAgICwgbV9hcmd1bWVudHNSZWdp
c3RlcihWaXJ0dWFsUmVnaXN0ZXIoKSkKLSAgICAsIG1fZ2xvYmFsT2JqZWN0UmVnaXN0ZXIoVmly
dHVhbFJlZ2lzdGVyKCkpCisgICAgLCBtX2FyZ3VtZW50c1JlZ2lzdGVyKChpbnQpSW52YWxpZFZp
cnR1YWxSZWdpc3RlcikKKyAgICAsIG1fZ2xvYmFsT2JqZWN0UmVnaXN0ZXIoKGludClJbnZhbGlk
VmlydHVhbFJlZ2lzdGVyKQogICAgICwgbV9uZWVkc0Z1bGxTY29wZUNoYWluKGluZm8ubV9uZWVk
c0FjdGl2YXRpb24pCiAgICAgLCBtX3VzZXNFdmFsKGluZm8ubV91c2VzRXZhbCkKICAgICAsIG1f
aXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uKGZhbHNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAppbmRleCA0MzNlZjFkYmMxNWQ0OGFk
MzRiZWJiZjc5ZDdiZTAwMDgyZmMxYzRiLi43YjYwNDcyMmNlZDg2MTA1MGIzYTFhNTI1YTJmMGFh
OTRhOTFhYzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suaApAQCAtMjU0LDE3ICsyNTQsMTcgQEAgcHVibGljOgogICAgIGJvb2wg
aGFzRXhwcmVzc2lvbkluZm8oKSB7IHJldHVybiBtX2V4cHJlc3Npb25JbmZvLnNpemUoKTsgfQog
CiAgICAgLy8gU3BlY2lhbCByZWdpc3RlcnMKLSAgICB2b2lkIHNldFRoaXNSZWdpc3RlcihWaXJ0
dWFsUmVnaXN0ZXIgdGhpc1JlZ2lzdGVyKSB7IG1fdGhpc1JlZ2lzdGVyID0gdGhpc1JlZ2lzdGVy
OyB9Ci0gICAgdm9pZCBzZXRBY3RpdmF0aW9uUmVnaXN0ZXIoVmlydHVhbFJlZ2lzdGVyIGFjdGl2
YXRpb25SZWdpc3RlcikgeyBtX2FjdGl2YXRpb25SZWdpc3RlciA9IGFjdGl2YXRpb25SZWdpc3Rl
cjsgfQorICAgIHZvaWQgc2V0VGhpc1JlZ2lzdGVyKGludCB0aGlzUmVnaXN0ZXIpIHsgbV90aGlz
UmVnaXN0ZXIgPSB0aGlzUmVnaXN0ZXI7IH0KKyAgICB2b2lkIHNldEFjdGl2YXRpb25SZWdpc3Rl
cihpbnQgYWN0aXZhdGlvblJlZ2lzdGVyKSB7IG1fYWN0aXZhdGlvblJlZ2lzdGVyID0gYWN0aXZh
dGlvblJlZ2lzdGVyOyB9CiAKLSAgICB2b2lkIHNldEFyZ3VtZW50c1JlZ2lzdGVyKFZpcnR1YWxS
ZWdpc3RlciBhcmd1bWVudHNSZWdpc3RlcikgeyBtX2FyZ3VtZW50c1JlZ2lzdGVyID0gYXJndW1l
bnRzUmVnaXN0ZXI7IH0KLSAgICBib29sIHVzZXNBcmd1bWVudHMoKSBjb25zdCB7IHJldHVybiBt
X2FyZ3VtZW50c1JlZ2lzdGVyLmlzVmFsaWQoKTsgfQotICAgIFZpcnR1YWxSZWdpc3RlciBhcmd1
bWVudHNSZWdpc3RlcigpIGNvbnN0IHsgcmV0dXJuIG1fYXJndW1lbnRzUmVnaXN0ZXI7IH0KKyAg
ICB2b2lkIHNldEFyZ3VtZW50c1JlZ2lzdGVyKGludCBhcmd1bWVudHNSZWdpc3RlcikgeyBtX2Fy
Z3VtZW50c1JlZ2lzdGVyID0gYXJndW1lbnRzUmVnaXN0ZXI7IH0KKyAgICBib29sIHVzZXNBcmd1
bWVudHMoKSBjb25zdCB7IHJldHVybiBtX2FyZ3VtZW50c1JlZ2lzdGVyICE9IChpbnQpSW52YWxp
ZFZpcnR1YWxSZWdpc3RlcjsgfQorICAgIGludCBhcmd1bWVudHNSZWdpc3RlcigpIGNvbnN0IHsg
cmV0dXJuIG1fYXJndW1lbnRzUmVnaXN0ZXI7IH0KIAogCi0gICAgYm9vbCB1c2VzR2xvYmFsT2Jq
ZWN0KCkgY29uc3QgeyByZXR1cm4gbV9nbG9iYWxPYmplY3RSZWdpc3Rlci5pc1ZhbGlkKCk7IH0K
LSAgICB2b2lkIHNldEdsb2JhbE9iamVjdFJlZ2lzdGVyKFZpcnR1YWxSZWdpc3RlciBnbG9iYWxP
YmplY3RSZWdpc3RlcikgeyBtX2dsb2JhbE9iamVjdFJlZ2lzdGVyID0gZ2xvYmFsT2JqZWN0UmVn
aXN0ZXI7IH0KLSAgICBWaXJ0dWFsUmVnaXN0ZXIgZ2xvYmFsT2JqZWN0UmVnaXN0ZXIoKSBjb25z
dCB7IHJldHVybiBtX2dsb2JhbE9iamVjdFJlZ2lzdGVyOyB9CisgICAgYm9vbCB1c2VzR2xvYmFs
T2JqZWN0KCkgY29uc3QgeyByZXR1cm4gbV9nbG9iYWxPYmplY3RSZWdpc3RlciAhPSAoaW50KUlu
dmFsaWRWaXJ0dWFsUmVnaXN0ZXI7IH0KKyAgICB2b2lkIHNldEdsb2JhbE9iamVjdFJlZ2lzdGVy
KGludCBnbG9iYWxPYmplY3RSZWdpc3RlcikgeyBtX2dsb2JhbE9iamVjdFJlZ2lzdGVyID0gZ2xv
YmFsT2JqZWN0UmVnaXN0ZXI7IH0KKyAgICBpbnQgZ2xvYmFsT2JqZWN0UmVnaXN0ZXIoKSBjb25z
dCB7IHJldHVybiBtX2dsb2JhbE9iamVjdFJlZ2lzdGVyOyB9CiAKICAgICAvLyBQYXJhbWV0ZXIg
aW5mb3JtYXRpb24KICAgICB2b2lkIHNldE51bVBhcmFtZXRlcnMoaW50IG5ld1ZhbHVlKSB7IG1f
bnVtUGFyYW1ldGVycyA9IG5ld1ZhbHVlOyB9CkBAIC0zOTksOCArMzk5LDggQEAgcHVibGljOgog
CiAgICAgQ29kZVR5cGUgY29kZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX2NvZGVUeXBlOyB9CiAK
LSAgICBWaXJ0dWFsUmVnaXN0ZXIgdGhpc1JlZ2lzdGVyKCkgY29uc3QgeyByZXR1cm4gbV90aGlz
UmVnaXN0ZXI7IH0KLSAgICBWaXJ0dWFsUmVnaXN0ZXIgYWN0aXZhdGlvblJlZ2lzdGVyKCkgY29u
c3QgeyByZXR1cm4gbV9hY3RpdmF0aW9uUmVnaXN0ZXI7IH0KKyAgICBpbnQgdGhpc1JlZ2lzdGVy
KCkgY29uc3QgeyByZXR1cm4gbV90aGlzUmVnaXN0ZXI7IH0KKyAgICBpbnQgYWN0aXZhdGlvblJl
Z2lzdGVyKCkgY29uc3QgeyByZXR1cm4gbV9hY3RpdmF0aW9uUmVnaXN0ZXI7IH0KIAogCiAgICAg
dm9pZCBhZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKHVuc2lnbmVkIHByb3BlcnR5QWNjZXNz
SW5zdHJ1Y3Rpb24pCkBAIC00NzksMTAgKzQ3OSwxMCBAQCBwcml2YXRlOgogICAgIGludCBtX251
bVBhcmFtZXRlcnM7CiAgICAgVk0qIG1fdm07CiAKLSAgICBWaXJ0dWFsUmVnaXN0ZXIgbV90aGlz
UmVnaXN0ZXI7Ci0gICAgVmlydHVhbFJlZ2lzdGVyIG1fYXJndW1lbnRzUmVnaXN0ZXI7Ci0gICAg
VmlydHVhbFJlZ2lzdGVyIG1fYWN0aXZhdGlvblJlZ2lzdGVyOwotICAgIFZpcnR1YWxSZWdpc3Rl
ciBtX2dsb2JhbE9iamVjdFJlZ2lzdGVyOworICAgIGludCBtX3RoaXNSZWdpc3RlcjsKKyAgICBp
bnQgbV9hcmd1bWVudHNSZWdpc3RlcjsKKyAgICBpbnQgbV9hY3RpdmF0aW9uUmVnaXN0ZXI7Cisg
ICAgaW50IG1fZ2xvYmFsT2JqZWN0UmVnaXN0ZXI7CiAKICAgICBib29sIG1fbmVlZHNGdWxsU2Nv
cGVDaGFpbiA6IDE7CiAgICAgYm9vbCBtX3VzZXNFdmFsIDogMTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVJlY292ZXJ5LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVSZWNvdmVyeS5oCmluZGV4IDU4ZTczNTMzODQzOTQyNWNj
MGMzMWZiNmU4Y2ZjNDU1OTZmZTQ2NzIuLjBiYWQ0YWM1NGQ0NTRlYzRkNDEyN2Y0Yjg0NWNjNDU4
NTcyNjU1MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1
ZVJlY292ZXJ5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUmVj
b3ZlcnkuaApAQCAtMjExLDcgKzIxMSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJlc3VsdC5t
X3RlY2huaXF1ZSA9IERpc3BsYWNlZEluSlNTdGFjazsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9Ci0gICAgICAgIHJlc3VsdC5tX3NvdXJjZS52aXJ0dWFsUmVnID0gdmlydHVhbFJlZy5v
ZmZzZXQoKTsKKyAgICAgICAgcmVzdWx0Lm1fc291cmNlLnZpcnR1YWxSZWcgPSB2aXJ0dWFsUmVn
OwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICAKQEAgLTI5NCw3ICsyOTQsNyBA
QCBwdWJsaWM6CiAgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlcigpIGNvbnN0CiAg
ICAgewogICAgICAgICBBU1NFUlQobV90ZWNobmlxdWUgPT0gRGlzcGxhY2VkSW5KU1N0YWNrIHx8
IG1fdGVjaG5pcXVlID09IEludDMyRGlzcGxhY2VkSW5KU1N0YWNrIHx8IG1fdGVjaG5pcXVlID09
IERvdWJsZURpc3BsYWNlZEluSlNTdGFjayB8fCBtX3RlY2huaXF1ZSA9PSBDZWxsRGlzcGxhY2Vk
SW5KU1N0YWNrIHx8IG1fdGVjaG5pcXVlID09IEJvb2xlYW5EaXNwbGFjZWRJbkpTU3RhY2sgfHwg
bV90ZWNobmlxdWUgPT0gSW50NTJEaXNwbGFjZWRJbkpTU3RhY2sgfHwgbV90ZWNobmlxdWUgPT0g
U3RyaWN0SW50NTJEaXNwbGFjZWRJbkpTU3RhY2spOwotICAgICAgICByZXR1cm4gVmlydHVhbFJl
Z2lzdGVyKG1fc291cmNlLnZpcnR1YWxSZWcpOworICAgICAgICByZXR1cm4gbV9zb3VyY2Uudmly
dHVhbFJlZzsKICAgICB9CiAgICAgCiAgICAgSlNWYWx1ZSBjb25zdGFudCgpIGNvbnN0CkBAIC0z
NTEsMjUgKzM1MSwyNSBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm47CiAjZW5kaWYKICAg
ICAgICAgY2FzZSBEaXNwbGFjZWRJbkpTU3RhY2s6Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIq
JWQiLCB2aXJ0dWFsUmVnaXN0ZXIoKS5vZmZzZXQoKSk7CisgICAgICAgICAgICBvdXQucHJpbnRm
KCIqJWQiLCB2aXJ0dWFsUmVnaXN0ZXIoKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IGNhc2UgSW50MzJEaXNwbGFjZWRJbkpTU3RhY2s6Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIq
aW50MzIoJWQpIiwgdmlydHVhbFJlZ2lzdGVyKCkub2Zmc2V0KCkpOworICAgICAgICAgICAgb3V0
LnByaW50ZigiKmludDMyKCVkKSIsIHZpcnR1YWxSZWdpc3RlcigpKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgY2FzZSBJbnQ1MkRpc3BsYWNlZEluSlNTdGFjazoKLSAgICAgICAgICAg
IG91dC5wcmludGYoIippbnQ1MiglZCkiLCB2aXJ0dWFsUmVnaXN0ZXIoKS5vZmZzZXQoKSk7Cisg
ICAgICAgICAgICBvdXQucHJpbnRmKCIqaW50NTIoJWQpIiwgdmlydHVhbFJlZ2lzdGVyKCkpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBjYXNlIFN0cmljdEludDUyRGlzcGxhY2VkSW5K
U1N0YWNrOgotICAgICAgICAgICAgb3V0LnByaW50ZigiKnN0cmljdEludDUyKCVkKSIsIHZpcnR1
YWxSZWdpc3RlcigpLm9mZnNldCgpKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIipzdHJpY3RJ
bnQ1MiglZCkiLCB2aXJ0dWFsUmVnaXN0ZXIoKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIGNhc2UgRG91YmxlRGlzcGxhY2VkSW5KU1N0YWNrOgotICAgICAgICAgICAgb3V0LnByaW50
ZigiKmRvdWJsZSglZCkiLCB2aXJ0dWFsUmVnaXN0ZXIoKS5vZmZzZXQoKSk7CisgICAgICAgICAg
ICBvdXQucHJpbnRmKCIqZG91YmxlKCVkKSIsIHZpcnR1YWxSZWdpc3RlcigpKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgY2FzZSBDZWxsRGlzcGxhY2VkSW5KU1N0YWNrOgotICAgICAg
ICAgICAgb3V0LnByaW50ZigiKmNlbGwoJWQpIiwgdmlydHVhbFJlZ2lzdGVyKCkub2Zmc2V0KCkp
OworICAgICAgICAgICAgb3V0LnByaW50ZigiKmNlbGwoJWQpIiwgdmlydHVhbFJlZ2lzdGVyKCkp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBjYXNlIEJvb2xlYW5EaXNwbGFjZWRJbkpT
U3RhY2s6Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIqYm9vbCglZCkiLCB2aXJ0dWFsUmVnaXN0
ZXIoKS5vZmZzZXQoKSk7CisgICAgICAgICAgICBvdXQucHJpbnRmKCIqYm9vbCglZCkiLCB2aXJ0
dWFsUmVnaXN0ZXIoKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGNhc2UgQXJndW1l
bnRzVGhhdFdlcmVOb3RDcmVhdGVkOgogICAgICAgICAgICAgb3V0LnByaW50ZigiYXJndW1lbnRz
Iik7CkBAIC00MDAsNyArNDAwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpSZWdpc3RlcklEIHBheWxvYWRHUFI7CiAgICAgICAgIH0gcGFpcjsKICNlbmRpZgotICAg
ICAgICBpbnQgdmlydHVhbFJlZzsKKyAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWc7
CiAgICAgICAgIEVuY29kZWRKU1ZhbHVlIGNvbnN0YW50OwogICAgIH0gbV9zb3VyY2U7CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZpcnR1YWxSZWdpc3Rl
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZpcnR1YWxSZWdpc3Rlci5oCmlu
ZGV4IDZkYzZiNjViOTQyZmU5NTBkYmRmNGY2NGUyYzcyYTA2Y2EyMTViMjAuLmU4ZmUxZDhlOTIz
M2U4NTg2ZTBjZDVlMjg4MjNhNjVmMDBlOTg4YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9WaXJ0dWFsUmVnaXN0ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVmlydHVhbFJlZ2lzdGVyLmgKQEAgLTI2LDgwICsyNiwyMyBAQAogI2lm
bmRlZiBWaXJ0dWFsUmVnaXN0ZXJfaAogI2RlZmluZSBWaXJ0dWFsUmVnaXN0ZXJfaAogCi0jaW5j
bHVkZSAiQ2FsbEZyYW1lLmgiCi0KICNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KICNpbmNsdWRl
IDx3dGYvUHJpbnRTdHJlYW0uaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKLWlubGluZSBib29sIG9w
ZXJhbmRJc0xvY2FsKGludCBvcGVyYW5kKQotewotICAgIHJldHVybiBvcGVyYW5kIDw9IDA7Ci19
Ci0KLWlubGluZSBib29sIG9wZXJhbmRJc0FyZ3VtZW50KGludCBvcGVyYW5kKQotewotICAgIHJl
dHVybiBvcGVyYW5kID4gMDsKLX0KLQotCi1jbGFzcyBWaXJ0dWFsUmVnaXN0ZXIgewotcHVibGlj
OgotICAgIGZyaWVuZCBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaW50
KTsKLSAgICBmcmllbmQgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50
KGludCwgaW50KTsKLQotICAgIFZpcnR1YWxSZWdpc3RlcigpCi0gICAgICAgIDogbV92aXJ0dWFs
UmVnaXN0ZXIoc19pbnZhbGlkVmlydHVhbFJlZ2lzdGVyKQotICAgIHsgfQotCi0gICAgZXhwbGlj
aXQgVmlydHVhbFJlZ2lzdGVyKGludCB2aXJ0dWFsUmVnaXN0ZXIpCi0gICAgICAgIDogbV92aXJ0
dWFsUmVnaXN0ZXIodmlydHVhbFJlZ2lzdGVyKQotICAgIHsgfQotCi0gICAgYm9vbCBpc1ZhbGlk
KCkgY29uc3QgeyByZXR1cm4gKG1fdmlydHVhbFJlZ2lzdGVyICE9IHNfaW52YWxpZFZpcnR1YWxS
ZWdpc3Rlcik7IH0KLSAgICBib29sIGlzTG9jYWwoKSBjb25zdCB7IHJldHVybiBvcGVyYW5kSXNM
b2NhbChtX3ZpcnR1YWxSZWdpc3Rlcik7IH0KLSAgICBib29sIGlzQXJndW1lbnQoKSBjb25zdCB7
IHJldHVybiBvcGVyYW5kSXNBcmd1bWVudChtX3ZpcnR1YWxSZWdpc3Rlcik7IH0KLSAgICBib29s
IGlzQ29uc3RhbnQoKSBjb25zdCB7IHJldHVybiBtX3ZpcnR1YWxSZWdpc3RlciA+PSBzX2ZpcnN0
Q29uc3RhbnRSZWdpc3RlckluZGV4OyB9Ci0gICAgaW50IHRvTG9jYWwoKSBjb25zdCB7IEFTU0VS
VChpc0xvY2FsKCkpOyByZXR1cm4gb3BlcmFuZFRvTG9jYWwobV92aXJ0dWFsUmVnaXN0ZXIpOyB9
Ci0gICAgaW50IHRvQXJndW1lbnQoKSBjb25zdCB7IEFTU0VSVChpc0FyZ3VtZW50KCkpOyByZXR1
cm4gb3BlcmFuZFRvQXJndW1lbnQobV92aXJ0dWFsUmVnaXN0ZXIpOyB9Ci0gICAgaW50IHRvQ29u
c3RhbnRJbmRleCgpIGNvbnN0IHsgQVNTRVJUKGlzQ29uc3RhbnQoKSk7IHJldHVybiBtX3ZpcnR1
YWxSZWdpc3RlciAtIHNfZmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXg7IH0KLSAgICBpbnQgb2Zm
c2V0KCkgY29uc3QgeyByZXR1cm4gbV92aXJ0dWFsUmVnaXN0ZXI7IH0KLQotICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBWaXJ0dWFsUmVnaXN0ZXIgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fdmly
dHVhbFJlZ2lzdGVyID09IG90aGVyLm1fdmlydHVhbFJlZ2lzdGVyOyB9Ci0gICAgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IFZpcnR1YWxSZWdpc3RlciBvdGhlcikgY29uc3QgeyByZXR1cm4gbV92aXJ0
dWFsUmVnaXN0ZXIgIT0gb3RoZXIubV92aXJ0dWFsUmVnaXN0ZXI7IH0KLQotcHJpdmF0ZToKLSAg
ICBzdGF0aWMgY29uc3QgaW50IHNfaW52YWxpZFZpcnR1YWxSZWdpc3RlciA9IDB4M2ZmZmZmZmY7
Ci0gICAgc3RhdGljIGNvbnN0IGludCBzX2ZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4ID0gMHg0
MDAwMDAwMDsKLQotICAgIHN0YXRpYyBpbnQgbG9jYWxUb09wZXJhbmQoaW50IGxvY2FsKSB7IHJl
dHVybiAtbG9jYWw7IH0KLSAgICBzdGF0aWMgaW50IG9wZXJhbmRUb0xvY2FsKGludCBvcGVyYW5k
KSB7IHJldHVybiAtb3BlcmFuZDsgfQotICAgIHN0YXRpYyBpbnQgb3BlcmFuZFRvQXJndW1lbnQo
aW50IG9wZXJhbmQpIHsgcmV0dXJuIG9wZXJhbmQgLSBDYWxsRnJhbWU6OnRoaXNBcmd1bWVudE9m
ZnNldCgpOyB9Ci0gICAgc3RhdGljIGludCBhcmd1bWVudFRvT3BlcmFuZChpbnQgYXJndW1lbnQp
IHsgcmV0dXJuIGFyZ3VtZW50ICsgQ2FsbEZyYW1lOjp0aGlzQXJndW1lbnRPZmZzZXQoKTsgfQot
Ci0gICAgaW50IG1fdmlydHVhbFJlZ2lzdGVyOwotfTsKLQorLy8gVHlwZSBmb3IgYSB2aXJ0dWFs
IHJlZ2lzdGVyIG51bWJlciAoc3BpbGwgbG9jYXRpb24pLgorLy8gVXNpbmcgYW4gZW51bSB0byBt
YWtlIHRoaXMgdHlwZS1jaGVja2VkIGF0IGNvbXBpbGUgdGltZSwgdG8gYXZlcnQgcHJvZ3JhbW1l
ciBlcnJvcnMuCitlbnVtIFZpcnR1YWxSZWdpc3RlciB7IEludmFsaWRWaXJ0dWFsUmVnaXN0ZXIg
PSAweDNmZmZmZmZmIH07CiBDT01QSUxFX0FTU0VSVChzaXplb2YoVmlydHVhbFJlZ2lzdGVyKSA9
PSBzaXplb2YoaW50KSwgVmlydHVhbFJlZ2lzdGVyX2lzXzMyYml0KTsKIAotaW5saW5lIFZpcnR1
YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpbnQgbG9jYWwpCi17Ci0gICAgcmV0
dXJuIFZpcnR1YWxSZWdpc3RlcihWaXJ0dWFsUmVnaXN0ZXI6OmxvY2FsVG9PcGVyYW5kKGxvY2Fs
KSk7Ci19Ci0KLWlubGluZSBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1l
bnQoaW50IGFyZ3VtZW50LCBpbnQgb2Zmc2V0ID0gMCkKLXsKLSAgICByZXR1cm4gVmlydHVhbFJl
Z2lzdGVyKFZpcnR1YWxSZWdpc3Rlcjo6YXJndW1lbnRUb09wZXJhbmQoYXJndW1lbnQpICsgb2Zm
c2V0KTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgSlNDCiAKIG5hbWVzcGFjZSBXVEYgewogCiBpbmxp
bmUgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEpTQzo6VmlydHVhbFJlZ2lz
dGVyIHZhbHVlKQogewotICAgIG91dC5wcmludCh2YWx1ZS5vZmZzZXQoKSk7CisgICAgb3V0LnBy
aW50KHN0YXRpY19jYXN0PGludD4odmFsdWUpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV1RGCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuY3BwCmluZGV4IGM5NjMyZWIxNjhlZGM5YjhlNzQ1YTJlYjBiZDg3YzVlNzY3Mzlj
MzAuLmRiOTZhNmM1NGUyZTQ3NGZkNjA3NzVjZDFmMTFjMmUxZmM5ZjdiYTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuY3BwCkBAIC02MCw3ICs2MCw3IEBAIFBhcnNlckVycm9yIEJ5dGVjb2RlR2VuZXJhdG9yOjpn
ZW5lcmF0ZSgpCiB7CiAgICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oIkJ5dGVjb2Rl
IEdlbmVyYXRpb24iKTsKICAgICAKLSAgICBtX2NvZGVCbG9jay0+c2V0VGhpc1JlZ2lzdGVyKG1f
dGhpc1JlZ2lzdGVyLnZpcnR1YWxSZWdpc3RlcigpKTsKKyAgICBtX2NvZGVCbG9jay0+c2V0VGhp
c1JlZ2lzdGVyKG1fdGhpc1JlZ2lzdGVyLmluZGV4KCkpOwogCiAgICAgbV9zY29wZU5vZGUtPmVt
aXRCeXRlY29kZSgqdGhpcyk7CiAKQEAgLTExNyw3ICsxMTcsNyBAQCBQYXJzZXJFcnJvciBCeXRl
Y29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQogYm9vbCBCeXRlY29kZUdlbmVyYXRvcjo6YWRkVmFy
KGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBib29sIGlzQ29uc3RhbnQsIFJlZ2lzdGVySUQqJiBy
MCkKIHsKICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZSgpLm1fbG9j
ayk7Ci0gICAgaW50IGluZGV4ID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobV9jYWxsZWVSZWdp
c3RlcnMuc2l6ZSgpKS5vZmZzZXQoKTsKKyAgICBpbnQgaW5kZXggPSBsb2NhbFRvT3BlcmFuZCht
X2NhbGxlZVJlZ2lzdGVycy5zaXplKCkpOwogICAgIFN5bWJvbFRhYmxlRW50cnkgbmV3RW50cnko
aW5kZXgsIGlzQ29uc3RhbnQgPyBSZWFkT25seSA6IDApOwogICAgIFN5bWJvbFRhYmxlOjpNYXA6
OkFkZFJlc3VsdCByZXN1bHQgPSBzeW1ib2xUYWJsZSgpLmFkZChsb2NrZXIsIGlkZW50LmltcGwo
KSwgbmV3RW50cnkpOwogCkBAIC0yMzAsMTAgKzIzMCwxMCBAQCBCeXRlY29kZUdlbmVyYXRvcjo6
Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbkJvZHlOb2RlKiBmdW5jdGlvbkJvZHks
IFVubAogICAgIGlmIChtX2NvZGVCbG9jay0+bmVlZHNGdWxsU2NvcGVDaGFpbigpKSB7CiAgICAg
ICAgIG1fYWN0aXZhdGlvblJlZ2lzdGVyID0gYWRkVmFyKCk7CiAgICAgICAgIGVtaXRJbml0TGF6
eVJlZ2lzdGVyKG1fYWN0aXZhdGlvblJlZ2lzdGVyKTsKLSAgICAgICAgbV9jb2RlQmxvY2stPnNl
dEFjdGl2YXRpb25SZWdpc3RlcihtX2FjdGl2YXRpb25SZWdpc3Rlci0+dmlydHVhbFJlZ2lzdGVy
KCkpOworICAgICAgICBtX2NvZGVCbG9jay0+c2V0QWN0aXZhdGlvblJlZ2lzdGVyKG1fYWN0aXZh
dGlvblJlZ2lzdGVyLT5pbmRleCgpKTsKICAgICB9CiAKLSAgICBtX3N5bWJvbFRhYmxlLT5zZXRD
YXB0dXJlU3RhcnQodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobV9jb2RlQmxvY2stPm1fbnVtVmFy
cykub2Zmc2V0KCkpOworICAgIG1fc3ltYm9sVGFibGUtPnNldENhcHR1cmVTdGFydChsb2NhbFRv
T3BlcmFuZChtX2NvZGVCbG9jay0+bV9udW1WYXJzKSk7CiAKICAgICBpZiAoZnVuY3Rpb25Cb2R5
LT51c2VzQXJndW1lbnRzKCkgfHwgY29kZUJsb2NrLT51c2VzRXZhbCgpKSB7IC8vIE1heSByZWlm
eSBhcmd1bWVudHMgb2JqZWN0LgogICAgICAgICBSZWdpc3RlcklEKiB1bm1vZGlmaWVkQXJndW1l
bnRzUmVnaXN0ZXIgPSBhZGRWYXIoKTsgLy8gQW5vbnltb3VzLCBzbyBpdCBjYW4ndCBiZSBtb2Rp
ZmllZCBieSB1c2VyIGNvZGUuCkBAIC0yNDIsOCArMjQyLDggQEAgQnl0ZWNvZGVHZW5lcmF0b3I6
OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Cb2R5Tm9kZSogZnVuY3Rpb25Cb2R5
LCBVbmwKICAgICAgICAgLy8gV2UgY2FuIHNhdmUgYSBsaXR0bGUgc3BhY2UgYnkgaGFyZC1jb2Rp
bmcgdGhlIGtub3dsZWRnZSB0aGF0IHRoZSB0d28KICAgICAgICAgLy8gJ2FyZ3VtZW50cycgdmFs
dWVzIGFyZSBzdG9yZWQgaW4gY29uc2VjdXRpdmUgcmVnaXN0ZXJzLCBhbmQgc3RvcmluZwogICAg
ICAgICAvLyBvbmx5IHRoZSBpbmRleCBvZiB0aGUgYXNzaWduYWJsZSBvbmUuCi0gICAgICAgIGNv
ZGVCbG9jay0+c2V0QXJndW1lbnRzUmVnaXN0ZXIoYXJndW1lbnRzUmVnaXN0ZXItPnZpcnR1YWxS
ZWdpc3RlcigpKTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRCh1bm1vZGlmaWVkQXJndW1lbnRzUmVn
aXN0ZXIsIHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3Rlci0+dmlydHVhbFJlZ2lzdGVyKCkgPT0g
SlNDOjp1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIoY29kZUJsb2NrLT5hcmd1bWVudHNSZWdp
c3RlcigpKSk7CisgICAgICAgIGNvZGVCbG9jay0+c2V0QXJndW1lbnRzUmVnaXN0ZXIoYXJndW1l
bnRzUmVnaXN0ZXItPmluZGV4KCkpOworICAgICAgICBBU1NFUlRfVU5VU0VEKHVubW9kaWZpZWRB
cmd1bWVudHNSZWdpc3RlciwgdW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyLT5pbmRleCgpID09
IEpTQzo6dW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKGNvZGVCbG9jay0+YXJndW1lbnRzUmVn
aXN0ZXIoKSkpOwogCiAgICAgICAgIGVtaXRJbml0TGF6eVJlZ2lzdGVyKGFyZ3VtZW50c1JlZ2lz
dGVyKTsKICAgICAgICAgZW1pdEluaXRMYXp5UmVnaXN0ZXIodW5tb2RpZmllZEFyZ3VtZW50c1Jl
Z2lzdGVyKTsKQEAgLTMyNCw3ICszMjQsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVH
ZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbkJvZHlOb2RlKiBmdW5jdGlvbkJvZHksIFVubAogICAg
ICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV9hY3RpdmF0aW9uUmVnaXN0ZXItPmluZGV4KCkp
OwogICAgIH0KIAotICAgIG1fc3ltYm9sVGFibGUtPnNldENhcHR1cmVFbmQodmlydHVhbFJlZ2lz
dGVyRm9yTG9jYWwoY29kZUJsb2NrLT5tX251bVZhcnMpLm9mZnNldCgpKTsKKyAgICBtX3N5bWJv
bFRhYmxlLT5zZXRDYXB0dXJlRW5kKGxvY2FsVG9PcGVyYW5kKGNvZGVCbG9jay0+bV9udW1WYXJz
KSk7CiAKICAgICBtX2ZpcnN0TGF6eUZ1bmN0aW9uID0gY29kZUJsb2NrLT5tX251bVZhcnM7CiAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmdW5jdGlvblN0YWNrLnNpemUoKTsgKytpKSB7CkBA
IC0zMzksNyArMzM5LDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZN
JiB2bSwgRnVuY3Rpb25Cb2R5Tm9kZSogZnVuY3Rpb25Cb2R5LCBVbmwKICAgICAgICAgICAgICAg
ICBlbWl0TmV3RnVuY3Rpb24ocmVnLmdldCgpLCBmdW5jdGlvbik7CiAgICAgICAgICAgICBlbHNl
IHsKICAgICAgICAgICAgICAgICBlbWl0SW5pdExhenlSZWdpc3RlcihyZWcuZ2V0KCkpOwotICAg
ICAgICAgICAgICAgIG1fbGF6eUZ1bmN0aW9ucy5zZXQocmVnLT52aXJ0dWFsUmVnaXN0ZXIoKS50
b0xvY2FsKCksIGZ1bmN0aW9uKTsKKyAgICAgICAgICAgICAgICBtX2xhenlGdW5jdGlvbnMuc2V0
KGxvY2FsVG9PcGVyYW5kKHJlZy0+aW5kZXgoKSksIGZ1bmN0aW9uKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQogICAgIH0KQEAgLTM1MSw3ICszNTEsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6
Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbkJvZHlOb2RlKiBmdW5jdGlvbkJvZHks
IFVubAogICAgIH0KIAogICAgIGlmIChzaG91bGRDYXB0dXJlQWxsVGhlVGhpbmdzKQotICAgICAg
ICBtX3N5bWJvbFRhYmxlLT5zZXRDYXB0dXJlRW5kKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGNv
ZGVCbG9jay0+bV9udW1WYXJzKS5vZmZzZXQoKSk7CisgICAgICAgIG1fc3ltYm9sVGFibGUtPnNl
dENhcHR1cmVFbmQobG9jYWxUb09wZXJhbmQoY29kZUJsb2NrLT5tX251bVZhcnMpKTsKIAogICAg
IG1fcGFyYW1ldGVycy5ncm93KHBhcmFtZXRlcnMuc2l6ZSgpICsgMSk7IC8vIHJlc2VydmUgc3Bh
Y2UgZm9yICJ0aGlzIgogCkBAIC01MzMsMTEgKzUzMyw4IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2Rl
R2VuZXJhdG9yOjp1bmNoZWNrZWRSZWdpc3RlckZvckFyZ3VtZW50cygpCiAKIFJlZ2lzdGVySUQq
IEJ5dGVjb2RlR2VuZXJhdG9yOjpjcmVhdGVMYXp5UmVnaXN0ZXJJZk5lY2Vzc2FyeShSZWdpc3Rl
cklEKiByZWcpCiB7Ci0gICAgaWYgKCFyZWctPnZpcnR1YWxSZWdpc3RlcigpLmlzTG9jYWwoKSkK
LSAgICAgICAgcmV0dXJuIHJlZzsKLQotICAgIGludCBsb2NhbFZhcmlhYmxlTnVtYmVyID0gcmVn
LT52aXJ0dWFsUmVnaXN0ZXIoKS50b0xvY2FsKCk7Ci0KKyAgICBpbnQgbG9jYWxWYXJpYWJsZU51
bWJlciA9IG9wZXJhbmRUb0xvY2FsKHJlZy0+aW5kZXgoKSk7CisgICAgCiAgICAgaWYgKG1fbGFz
dExhenlGdW5jdGlvbiA8PSBsb2NhbFZhcmlhYmxlTnVtYmVyIHx8IGxvY2FsVmFyaWFibGVOdW1i
ZXIgPCBtX2ZpcnN0TGF6eUZ1bmN0aW9uKQogICAgICAgICByZXR1cm4gcmVnOwogICAgIGVtaXRM
YXp5TmV3RnVuY3Rpb24ocmVnLCBtX2xhenlGdW5jdGlvbnMuZ2V0KGxvY2FsVmFyaWFibGVOdW1i
ZXIpKTsKQEAgLTU0Niw3ICs1NDMsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6
Y3JlYXRlTGF6eVJlZ2lzdGVySWZOZWNlc3NhcnkoUmVnaXN0ZXJJRCogcmVnKQogCiBSZWdpc3Rl
cklEKiBCeXRlY29kZUdlbmVyYXRvcjo6bmV3UmVnaXN0ZXIoKQogewotICAgIG1fY2FsbGVlUmVn
aXN0ZXJzLmFwcGVuZCh2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChtX2NhbGxlZVJlZ2lzdGVycy5z
aXplKCkpKTsKKyAgICBtX2NhbGxlZVJlZ2lzdGVycy5hcHBlbmQobG9jYWxUb09wZXJhbmQobV9j
YWxsZWVSZWdpc3RlcnMuc2l6ZSgpKSk7CiAgICAgbV9jb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVn
aXN0ZXJzID0gbWF4PGludD4obV9jb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzLCBtX2Nh
bGxlZVJlZ2lzdGVycy5zaXplKCkpOwogICAgIHJldHVybiAmbV9jYWxsZWVSZWdpc3RlcnMubGFz
dCgpOwogfQpAQCAtMTE0OSw3ICsxMTQ2LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRMb2FkR2xvYmFsT2JqZWN0KFJlZ2lzdGVySUQqIGRzdCkKICAgICAgICAgKyttX25l
eHRDb25zdGFudE9mZnNldDsKICAgICAgICAgbV9jb2RlQmxvY2stPmFkZENvbnN0YW50KEpTVmFs
dWUoKSk7CiAgICAgICAgIG1fZ2xvYmFsT2JqZWN0UmVnaXN0ZXIgPSAmbV9jb25zdGFudFBvb2xS
ZWdpc3RlcnNbaW5kZXhdOwotICAgICAgICBtX2NvZGVCbG9jay0+c2V0R2xvYmFsT2JqZWN0UmVn
aXN0ZXIoVmlydHVhbFJlZ2lzdGVyKGluZGV4KSk7CisgICAgICAgIG1fY29kZUJsb2NrLT5zZXRH
bG9iYWxPYmplY3RSZWdpc3RlcihpbmRleCk7CiAgICAgfQogICAgIGlmIChkc3QpCiAgICAgICAg
IGVtaXRNb3ZlKGRzdCwgbV9nbG9iYWxPYmplY3RSZWdpc3Rlcik7CkBAIC0xMjkzLDcgKzEyOTAs
NyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEFyZ3VtZW50c0xlbmd0
aChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySQogewogICAgIGVtaXRPcGNvZGUob3BfZ2V0X2Fy
Z3VtZW50c19sZW5ndGgpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkp
OwotICAgIEFTU0VSVChiYXNlLT52aXJ0dWFsUmVnaXN0ZXIoKSA9PSBtX2NvZGVCbG9jay0+YXJn
dW1lbnRzUmVnaXN0ZXIoKSk7CisgICAgQVNTRVJUKGJhc2UtPmluZGV4KCkgPT0gbV9jb2RlQmxv
Y2stPmFyZ3VtZW50c1JlZ2lzdGVyKCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChiYXNl
LT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYWRkQ29uc3RhbnQocHJvcGVy
dHlOYW1lcygpLmxlbmd0aCkpOwogICAgIHJldHVybiBkc3Q7CkBAIC0xMzY4LDcgKzEzNjUsNyBA
QCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEFyZ3VtZW50QnlWYWwoUmVn
aXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKgogICAgIFVubGlua2VkQXJyYXlQcm9maWxlIGFycmF5
UHJvZmlsZSA9IG5ld0FycmF5UHJvZmlsZSgpOwogICAgIFVubGlua2VkVmFsdWVQcm9maWxlIHBy
b2ZpbGUgPSBlbWl0UHJvZmlsZWRPcGNvZGUob3BfZ2V0X2FyZ3VtZW50X2J5X3ZhbCk7CiAgICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGtpbGwoZHN0KSk7Ci0gICAgQVNTRVJUKGJhc2UtPnZpcnR1
YWxSZWdpc3RlcigpID09IG1fY29kZUJsb2NrLT5hcmd1bWVudHNSZWdpc3RlcigpKTsKKyAgICBB
U1NFUlQoYmFzZS0+aW5kZXgoKSA9PSBtX2NvZGVCbG9jay0+YXJndW1lbnRzUmVnaXN0ZXIoKSk7
CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGJhc2UtPmluZGV4KCkpOwogICAgIGluc3RydWN0
aW9ucygpLmFwcGVuZChwcm9wZXJ0eS0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKGFycmF5UHJvZmlsZSk7CkBAIC0xNTg4LDcgKzE1ODUsNyBAQCB2b2lkIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjpjcmVhdGVBcmd1bWVudHNJZk5lY2Vzc2FyeSgpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIGVtaXRPcGNvZGUob3BfY3JlYXRlX2FyZ3VtZW50cyk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKG1fY29kZUJsb2NrLT5hcmd1bWVudHNSZWdpc3RlcigpLm9mZnNldCgpKTsKKyAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQobV9jb2RlQmxvY2stPmFyZ3VtZW50c1JlZ2lzdGVyKCkpOwog
fQogCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpjcmVhdGVBY3RpdmF0aW9uSWZOZWNlc3Nhcnko
KQpAQCAtMTc3Myw3ICsxNzcwLDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRSZXR1cm4oUmVnaXN0ZXJJRCogc3JjKQogCiAgICAgaWYgKG1fY29kZUJsb2NrLT51c2VzQXJn
dW1lbnRzKCkgJiYgbV9jb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSAhPSAxICYmICFpc1N0cmlj
dE1vZGUoKSkgewogICAgICAgICBlbWl0T3Bjb2RlKG9wX3RlYXJfb2ZmX2FyZ3VtZW50cyk7Ci0g
ICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX2NvZGVCbG9jay0+YXJndW1lbnRzUmVnaXN0
ZXIoKS5vZmZzZXQoKSk7CisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX2NvZGVCbG9j
ay0+YXJndW1lbnRzUmVnaXN0ZXIoKSk7CiAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCht
X2FjdGl2YXRpb25SZWdpc3RlciA/IG1fYWN0aXZhdGlvblJlZ2lzdGVyLT5pbmRleCgpIDogZW1p
dExvYWQoMCwgSlNWYWx1ZSgpKS0+aW5kZXgoKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXgg
ZmNjMTdkZjE0NDY4YzZiNmNjNmRiM2E2YzhhMjYzMTNmNzJmMGY0OC4uMWQxMzhjMGI0NGMwOTVl
YjY0MGUwNmZlNzc2YmViODBmYTA2NmJmOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtNTAyLDEzICs1MDIs
MTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZ2lzdGVySUQmIHJlZ2lzdGVyRm9yKGlu
dCBpbmRleCkKICAgICAgICAgewogICAgICAgICAgICAgaWYgKG9wZXJhbmRJc0xvY2FsKGluZGV4
KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gbV9jYWxsZWVSZWdpc3RlcnNbVmlydHVhbFJlZ2lz
dGVyKGluZGV4KS50b0xvY2FsKCldOworICAgICAgICAgICAgICAgIHJldHVybiBtX2NhbGxlZVJl
Z2lzdGVyc1tvcGVyYW5kVG9Mb2NhbChpbmRleCldOwogCiAgICAgICAgICAgICBpZiAoaW5kZXgg
PT0gSlNTdGFjazo6Q2FsbGVlKQogICAgICAgICAgICAgICAgIHJldHVybiBtX2NhbGxlZVJlZ2lz
dGVyOwogCiAgICAgICAgICAgICBBU1NFUlQobV9wYXJhbWV0ZXJzLnNpemUoKSk7Ci0gICAgICAg
ICAgICByZXR1cm4gbV9wYXJhbWV0ZXJzW1ZpcnR1YWxSZWdpc3RlcihpbmRleCkudG9Bcmd1bWVu
dCgpXTsKKyAgICAgICAgICAgIHJldHVybiBtX3BhcmFtZXRlcnNbb3BlcmFuZFRvQXJndW1lbnQo
aW5kZXgpXTsKICAgICAgICAgfQogCiAgICAgICAgIHVuc2lnbmVkIGFkZENvbnN0YW50KGNvbnN0
IElkZW50aWZpZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvUmVnaXN0ZXJJRC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9S
ZWdpc3RlcklELmgKaW5kZXggODMyMTZmNjEzM2MzZDdlYjUzNzJlMTUxMDEzNGFmNWI2OTc2NzQw
Ny4uNzhkNDlkMjkwODYzNjZmZDdmOWI3ZTlhZTM2Y2FjNzM2ODkyY2JjZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9SZWdpc3RlcklELmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9SZWdpc3RlcklELmgKQEAgLTI5LDggKzI5
LDYgQEAKICNpZm5kZWYgUmVnaXN0ZXJJRF9oCiAjZGVmaW5lIFJlZ2lzdGVySURfaAogCi0jaW5j
bHVkZSAiVmlydHVhbFJlZ2lzdGVyLmgiCi0KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgog
I2luY2x1ZGUgPHd0Zi9WZWN0b3JUcmFpdHMuaD4KIApAQCAtNDgsMTkgKzQ2LDkgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIFJlZ2lzdGVySUQoVmly
dHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlcikKLSAgICAgICAgICAgIDogbV9yZWZDb3VudCgw
KQotICAgICAgICAgICAgLCBtX3ZpcnR1YWxSZWdpc3Rlcih2aXJ0dWFsUmVnaXN0ZXIpCi0gICAg
ICAgICAgICAsIG1faXNUZW1wb3JhcnkoZmFsc2UpCi0jaWZuZGVmIE5ERUJVRwotICAgICAgICAg
ICAgLCBtX2RpZFNldEluZGV4KHRydWUpCi0jZW5kaWYKLSAgICAgICAgewotICAgICAgICB9Ci0g
ICAgICAgIAogICAgICAgICBleHBsaWNpdCBSZWdpc3RlcklEKGludCBpbmRleCkKICAgICAgICAg
ICAgIDogbV9yZWZDb3VudCgwKQotICAgICAgICAgICAgLCBtX3ZpcnR1YWxSZWdpc3RlcihWaXJ0
dWFsUmVnaXN0ZXIoaW5kZXgpKQorICAgICAgICAgICAgLCBtX2luZGV4KGluZGV4KQogICAgICAg
ICAgICAgLCBtX2lzVGVtcG9yYXJ5KGZhbHNlKQogI2lmbmRlZiBOREVCVUcKICAgICAgICAgICAg
ICwgbV9kaWRTZXRJbmRleCh0cnVlKQpAQCAtNzQsNyArNjIsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICNpZm5kZWYgTkRFQlVHCiAgICAgICAgICAgICBtX2RpZFNldEluZGV4ID0gdHJ1ZTsKICNlbmRp
ZgotICAgICAgICAgICAgbV92aXJ0dWFsUmVnaXN0ZXIgPSBWaXJ0dWFsUmVnaXN0ZXIoaW5kZXgp
OworICAgICAgICAgICAgbV9pbmRleCA9IGluZGV4OwogICAgICAgICB9CiAKICAgICAgICAgdm9p
ZCBzZXRUZW1wb3JhcnkoKQpAQCAtODUsMTMgKzczLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIGludCBpbmRleCgpIGNvbnN0CiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChtX2Rp
ZFNldEluZGV4KTsKLSAgICAgICAgICAgIHJldHVybiBtX3ZpcnR1YWxSZWdpc3Rlci5vZmZzZXQo
KTsKLSAgICAgICAgfQotCi0gICAgICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIo
KSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQobV92aXJ0dWFsUmVnaXN0ZXIu
aXNWYWxpZCgpKTsKLSAgICAgICAgICAgIHJldHVybiBtX3ZpcnR1YWxSZWdpc3RlcjsKKyAgICAg
ICAgICAgIHJldHVybiBtX2luZGV4OwogICAgICAgICB9CiAKICAgICAgICAgYm9vbCBpc1RlbXBv
cmFyeSgpCkBAIC0xMTgsNyArMTAwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJpdmF0ZToK
IAogICAgICAgICBpbnQgbV9yZWZDb3VudDsKLSAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG1fdmly
dHVhbFJlZ2lzdGVyOworICAgICAgICBpbnQgbV9pbmRleDsKICAgICAgICAgYm9vbCBtX2lzVGVt
cG9yYXJ5OwogI2lmbmRlZiBOREVCVUcKICAgICAgICAgYm9vbCBtX2RpZFNldEluZGV4OwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1l
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5j
cHAKaW5kZXggMDk4YTUyOTcxMjVmYjc2YmQ2Y2JlNjA2MDVjYmI0OWUzZmVkYmVkZC4uOTdkNjRh
OGIxMjFjNmEwMjhjNGVlMTg0MTBkNWZmNGExNDczZGU0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwCkBAIC0xMDksNyAr
MTA5LDcgQEAgSlNPYmplY3QqIERlYnVnZ2VyQ2FsbEZyYW1lOjp0aGlzT2JqZWN0KCkgY29uc3QK
ICAgICBpZiAoIWNvZGVCbG9jaykKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IG1fY2FsbEZyYW1lLT51bmNoZWNrZWRSKGNvZGVCbG9jay0+dGhpc1JlZ2lzdGVy
KCkub2Zmc2V0KCkpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IG1fY2FsbEZy
YW1lLT51bmNoZWNrZWRSKGNvZGVCbG9jay0+dGhpc1JlZ2lzdGVyKCkpLmpzVmFsdWUoKTsKICAg
ICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4gMDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEhlYXAuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RIZWFwLmgKaW5kZXggMzc5ZGUxMDZiNmY4
MmUwMTlhZTk3ZWE1YjU4M2Y0YTMyZDEwNmNjMC4uNjkxNGZkZmRjY2NiMTkyOGY0MWVlYTI1YjBh
Mzc3YzM1MGFlYzlkNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdEhlYXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0
SGVhcC5oCkBAIC0xMTMsNyArMTEzLDcgQEAgcHVibGljOgogICAgICAgICAKICAgICAgICAgUGF5
bG9hZChWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCkKICAgICAgICAgICAgIDogbV9pc1RvcChmYWxz
ZSkKLSAgICAgICAgICAgICwgbV92YWx1ZShvcGVyYW5kLm9mZnNldCgpKQorICAgICAgICAgICAg
LCBtX3ZhbHVlKHN0YXRpY19jYXN0PGludD4ob3BlcmFuZCkpCiAgICAgICAgIHsKICAgICAgICAg
fQogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJz
dHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAppbmRleCAxZDdlZmNkNzczYmVkYmNmNGE3ZTI3
ZDU2MTFkNWFmZjAxNjI3ZTQxLi4zNzU3NDYzYWUyN2JlZTljMjc5YWNhNmY0ZjA3OTRjNmUwYTYy
YmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50
ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0
cmFjdEludGVycHJldGVySW5saW5lcy5oCkBAIC0xNDIsNyArMTQyLDcgQEAgYm9vbCBBYnN0cmFj
dEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQg
Y2xvYmJlckxpbWkKICAgICBjYXNlIEdldEFyZ3VtZW50OiB7CiAgICAgICAgIEFTU0VSVChtX2dy
YXBoLm1fZm9ybSA9PSBTU0EpOwogICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxl
ID0gbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCk7Ci0gICAgICAgIEFic3RyYWN0VmFsdWUmIHZh
bHVlID0gbV9zdGF0ZS52YXJpYWJsZXMoKS5vcGVyYW5kKHZhcmlhYmxlLT5sb2NhbCgpLm9mZnNl
dCgpKTsKKyAgICAgICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBtX3N0YXRlLnZhcmlhYmxlcygp
Lm9wZXJhbmQodmFyaWFibGUtPmxvY2FsKCkpOwogICAgICAgICBBU1NFUlQodmFsdWUuaXNIZWFw
VG9wKCkpOwogICAgICAgICBGaWx0cmF0aW9uUmVzdWx0IHJlc3VsdCA9CiAgICAgICAgICAgICB2
YWx1ZS5maWx0ZXIodHlwZUZpbHRlckZvcih1c2VLaW5kRm9yKHZhcmlhYmxlLT5mbHVzaEZvcm1h
dCgpKSkpOwpAQCAtMTUyLDggKzE1Miw4IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0
cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAg
fQogICAgICAgICAKICAgICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxvY2FsOiB7Ci0gICAgICAgIGlm
ICghKG5vZGUtPnVubGlua2VkTG9jYWwoKS5pc0FyZ3VtZW50KCkpCi0gICAgICAgICAgICAmJiBt
X2dyYXBoLm1fbGF6eVZhcnMuZ2V0KG5vZGUtPnVubGlua2VkTG9jYWwoKS50b0xvY2FsKCkpKSB7
CisgICAgICAgIGlmICghb3BlcmFuZElzQXJndW1lbnQobm9kZS0+dW5saW5rZWRMb2NhbCgpKQor
ICAgICAgICAgICAgJiYgbV9ncmFwaC5tX2xhenlWYXJzLmdldChvcGVyYW5kVG9Mb2NhbChub2Rl
LT51bmxpbmtlZExvY2FsKCkpKSkgewogICAgICAgICAgICAgLy8gVGhpcyBpcyBraW5kIG9mIHBl
c3NpbWlzdGljIC0gd2UgY291bGQga25vdyBpbiBzb21lIGNhc2VzIHRoYXQgdGhlCiAgICAgICAg
ICAgICAvLyBERkcgY29kZSBhdCB0aGUgcG9pbnQgb2YgdGhlIE9TUiBoYWQgYWxyZWFkeSBpbml0
aWFsaXplZCB0aGUgbGF6eQogICAgICAgICAgICAgLy8gdmFyaWFibGUuIEJ1dCBtYXliZSB0aGlz
IGlzIGZpbmUsIHNpbmNlIHdlJ3JlIGluc2VydGluZyBPU1IKQEAgLTE3MSw3ICsxNzEsNyBAQCBi
b29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0
cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICAgICAgbV9zdGF0ZS5zZXRJc1ZhbGlkKGZh
bHNlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIEFic3RyYWN0VmFs
dWUgdmFsdWUgPSBtX3N0YXRlLnZhcmlhYmxlcygpLm9wZXJhbmQodmFyaWFibGVBY2Nlc3NEYXRh
LT5sb2NhbCgpLm9mZnNldCgpKTsKKyAgICAgICAgQWJzdHJhY3RWYWx1ZSB2YWx1ZSA9IG1fc3Rh
dGUudmFyaWFibGVzKCkub3BlcmFuZCh2YXJpYWJsZUFjY2Vzc0RhdGEtPmxvY2FsKCkpOwogICAg
ICAgICBpZiAoIXZhcmlhYmxlQWNjZXNzRGF0YS0+aXNDYXB0dXJlZCgpKSB7CiAgICAgICAgICAg
ICBpZiAodmFsdWUuaXNDbGVhcigpKQogICAgICAgICAgICAgICAgIG5vZGUtPnNldENhbkV4aXQo
dHJ1ZSk7CkBAIC0xODMsNyArMTgzLDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3Ry
YWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICB9
CiAgICAgICAgIAogICAgIGNhc2UgR2V0TG9jYWxVbmxpbmtlZDogewotICAgICAgICBBYnN0cmFj
dFZhbHVlIHZhbHVlID0gbV9zdGF0ZS52YXJpYWJsZXMoKS5vcGVyYW5kKG5vZGUtPnVubGlua2Vk
TG9jYWwoKS5vZmZzZXQoKSk7CisgICAgICAgIEFic3RyYWN0VmFsdWUgdmFsdWUgPSBtX3N0YXRl
LnZhcmlhYmxlcygpLm9wZXJhbmQobm9kZS0+dW5saW5rZWRMb2NhbCgpKTsKICAgICAgICAgaWYg
KHZhbHVlLnZhbHVlKCkpCiAgICAgICAgICAgICBtX3N0YXRlLnNldEZvdW5kQ29uc3RhbnRzKHRy
dWUpOwogICAgICAgICBmb3JOb2RlKG5vZGUpID0gdmFsdWU7CkBAIC0xOTEsNyArMTkxLDcgQEAg
Ym9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVj
dHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICB9CiAgICAgICAgIAogICAgIGNhc2UgU2V0TG9j
YWw6IHsKLSAgICAgICAgbV9zdGF0ZS52YXJpYWJsZXMoKS5vcGVyYW5kKG5vZGUtPmxvY2FsKCku
b2Zmc2V0KCkpID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIG1fc3RhdGUudmFy
aWFibGVzKCkub3BlcmFuZChub2RlLT5sb2NhbCgpKSA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkp
OwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIApAQCAtMTEzMyw3ICsxMTMzLDcgQEAg
Ym9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVj
dHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICBjYXNlIENoZWNrQXJndW1lbnRzTm90Q3JlYXRl
ZDoKICAgICAgICAgaWYgKGlzRW1wdHlTcGVjdWxhdGlvbigKICAgICAgICAgICAgICAgICBtX3N0
YXRlLnZhcmlhYmxlcygpLm9wZXJhbmQoCi0gICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguYXJn
dW1lbnRzUmVnaXN0ZXJGb3Iobm9kZS0+Y29kZU9yaWdpbikub2Zmc2V0KCkpLm1fdHlwZSkpCisg
ICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguYXJndW1lbnRzUmVnaXN0ZXJGb3Iobm9kZS0+Y29k
ZU9yaWdpbikpLm1fdHlwZSkpCiAgICAgICAgICAgICBtX3N0YXRlLnNldEZvdW5kQ29uc3RhbnRz
KHRydWUpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUp
OwpAQCAtMTYwNywxMyArMTYwNywxMyBAQCB2b2lkIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJh
Y3RTdGF0ZVR5cGU+OjpjbG9iYmVyQ2FwdHVyZWRWYXJzKGNvbnN0IENvZGVPcmlnaQogICAgICAg
ICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IG1fY29kZUJsb2NrLT5t
X251bVZhcnM7IGktLTspIHsKLSAgICAgICAgICAgIGlmIChtX2NvZGVCbG9jay0+aXNDYXB0dXJl
ZCh2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpKSkpCisgICAgICAgICAgICBpZiAobV9jb2RlQmxv
Y2stPmlzQ2FwdHVyZWQobG9jYWxUb09wZXJhbmQoaSkpKQogICAgICAgICAgICAgICAgIG1fc3Rh
dGUudmFyaWFibGVzKCkubG9jYWwoaSkubWFrZUhlYXBUb3AoKTsKICAgICAgICAgfQogICAgIH0K
IAogICAgIGZvciAoc2l6ZV90IGkgPSBtX3N0YXRlLnZhcmlhYmxlcygpLm51bWJlck9mQXJndW1l
bnRzKCk7IGktLTspIHsKLSAgICAgICAgaWYgKG1fY29kZUJsb2NrLT5pc0NhcHR1cmVkKHZpcnR1
YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpKSkKKyAgICAgICAgaWYgKG1fY29kZUJsb2NrLT5pc0Nh
cHR1cmVkKGFyZ3VtZW50VG9PcGVyYW5kKGkpKSkKICAgICAgICAgICAgIG1fc3RhdGUudmFyaWFi
bGVzKCkuYXJndW1lbnQoaSkubWFrZUhlYXBUb3AoKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50UG9zaXRpb24uaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRQb3NpdGlvbi5oCmluZGV4IGI0ZTRhZGUxNTMx
YTJhNTE1ZDZkYTdjYWRjMjFkMzk1NTJmMmY1OGQuLmViNmRiYzQ3NjlhMjNhNDI3NTZkN2Y0MTE1
MmI3MDUwYTkwOGI0MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QXJndW1lbnRQb3NpdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJn
dW1lbnRQb3NpdGlvbi5oCkBAIC0xMTgsMTUgKzExOCwxNSBAQCBwdWJsaWM6CiAgICAgewogICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV92YXJpYWJsZXMuc2l6ZSgpOyArK2kpIHsK
ICAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGUgPSBtX3ZhcmlhYmxlc1tp
XS0+ZmluZCgpOwotICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQgPSB2YXJpYWJs
ZS0+bG9jYWwoKTsKKyAgICAgICAgICAgIGludCBvcGVyYW5kID0gdmFyaWFibGUtPm9wZXJhbmQo
KTsKIAogICAgICAgICAgICAgaWYgKGkpCiAgICAgICAgICAgICAgICAgb3V0LnByaW50KCIgIik7
CiAKLSAgICAgICAgICAgIGlmIChvcGVyYW5kLmlzQXJndW1lbnQoKSkKLSAgICAgICAgICAgICAg
ICBvdXQucHJpbnQoImFyZyIsIG9wZXJhbmQudG9Bcmd1bWVudCgpLCAiKCIsIFZhcmlhYmxlQWNj
ZXNzRGF0YUR1bXAoKmdyYXBoLCB2YXJpYWJsZSksICIpIik7CisgICAgICAgICAgICBpZiAob3Bl
cmFuZElzQXJndW1lbnQob3BlcmFuZCkpCisgICAgICAgICAgICAgICAgb3V0LnByaW50KCJhcmci
LCBvcGVyYW5kVG9Bcmd1bWVudChvcGVyYW5kKSwgIigiLCBWYXJpYWJsZUFjY2Vzc0RhdGFEdW1w
KCpncmFwaCwgdmFyaWFibGUpLCAiKSIpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgIG91dC5wcmludCgiciIsIG9wZXJhbmQudG9Mb2NhbCgpLCAiKCIsIFZhcmlhYmxlQWNjZXNz
RGF0YUR1bXAoKmdyYXBoLCB2YXJpYWJsZSksICIpIik7CisgICAgICAgICAgICAgICAgb3V0LnBy
aW50KCJyIiwgb3BlcmFuZCwgIigiLCBWYXJpYWJsZUFjY2Vzc0RhdGFEdW1wKCpncmFwaCwgdmFy
aWFibGUpLCAiKSIpOwogICAgICAgICB9CiAgICAgICAgIG91dC5wcmludCgiXG4iKTsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c1NpbXBs
aWZpY2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVu
dHNTaW1wbGlmaWNhdGlvblBoYXNlLmNwcAppbmRleCBjMjJlNjllMGE5YjUwMzM2ZDY2MzMyMzk4
ODk5ZTE3ZGViYWIwNGYyLi42NjU0NGU3ODcyODMwZDU5ZWY3MTcxMjNkNTJjZWYwNWZkNzc0NjZi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c1NpbXBs
aWZpY2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJn
dW1lbnRzU2ltcGxpZmljYXRpb25QaGFzZS5jcHAKQEAgLTE4OCw3ICsxODgsNyBAQCBwdWJsaWM6
CiAgICAgICAgICAgICAgICAgY2FzZSBTZXRMb2NhbDogewogICAgICAgICAgICAgICAgICAgICBO
b2RlKiBzb3VyY2UgPSBub2RlLT5jaGlsZDEoKS5ub2RlKCk7CiAgICAgICAgICAgICAgICAgICAg
IFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGVBY2Nlc3NEYXRhID0gbm9kZS0+dmFyaWFibGVB
Y2Nlc3NEYXRhKCk7Ci0gICAgICAgICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBhcmd1bWVu
dHNSZWdpc3RlciA9CisgICAgICAgICAgICAgICAgICAgIGludCBhcmd1bWVudHNSZWdpc3RlciA9
CiAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLnVuY2hlY2tlZEFyZ3VtZW50c1JlZ2lz
dGVyRm9yKG5vZGUtPmNvZGVPcmlnaW4pOwogICAgICAgICAgICAgICAgICAgICBpZiAoc291cmNl
LT5vcCgpICE9IENyZWF0ZUFyZ3VtZW50cyAmJiBzb3VyY2UtPm9wKCkgIT0gUGhhbnRvbUFyZ3Vt
ZW50cykgewogICAgICAgICAgICAgICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIHNv
dXJjZSBvZiB0aGUgU2V0TG9jYWwga25vd3MgdGhhdCBpZiBpdCdzCkBAIC0yMTYsNyArMjE2LDcg
QEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFtX2lzTGl2ZS5jb250YWlu
cyh2YXJpYWJsZUFjY2Vzc0RhdGEpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAo
YXJndW1lbnRzUmVnaXN0ZXIuaXNWYWxpZCgpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
YXJndW1lbnRzUmVnaXN0ZXIgIT0gSW52YWxpZFZpcnR1YWxSZWdpc3RlcgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICYmICh2YXJpYWJsZUFjY2Vzc0RhdGEtPmxvY2FsKCkgPT0gYXJndW1l
bnRzUmVnaXN0ZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgdmFyaWFibGVB
Y2Nlc3NEYXRhLT5sb2NhbCgpID09IHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3Rlcihhcmd1bWVu
dHNSZWdpc3RlcikpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9jcmVhdGVzQXJn
dW1lbnRzLmFkZChub2RlLT5jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSk7CkBAIC0yMzQsNyAr
MjM0LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5tZXJnZUNhbGxD
b250ZXh0KG5vZGUtPmNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
ICAgIGlmIChhcmd1bWVudHNSZWdpc3Rlci5pc1ZhbGlkKCkKKyAgICAgICAgICAgICAgICAgICAg
aWYgKGFyZ3VtZW50c1JlZ2lzdGVyICE9IEludmFsaWRWaXJ0dWFsUmVnaXN0ZXIKICAgICAgICAg
ICAgICAgICAgICAgICAgICYmICh2YXJpYWJsZUFjY2Vzc0RhdGEtPmxvY2FsKCkgPT0gYXJndW1l
bnRzUmVnaXN0ZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCB2YXJpYWJsZUFjY2Vz
c0RhdGEtPmxvY2FsKCkgPT0gdW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKGFyZ3VtZW50c1Jl
Z2lzdGVyKSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5jb2RlT3JpZ2lu
LmlubGluZUNhbGxGcmFtZSA9PSBzb3VyY2UtPmNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKQpA
QCAtNjE5LDcgKzYxOSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgQWRqYWNlbmN5
TGlzdCBjaGlsZHJlbiA9IG5vZGUtPmNoaWxkcmVuOwogICAgICAgICAgICAgICAgICAgICAKICAg
ICAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvR2V0TG9jYWxVbmxpbmtlZCgKLSAgICAg
ICAgICAgICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlcigKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHN0YXRpY19jYXN0PFZpcnR1YWxSZWdpc3Rlcj4oCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbm9kZS0+Y29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLmJhc2VsaW5lQ29kZUJsb2NrRm9yKG5v
ZGUtPmNvZGVPcmlnaW4pLT5hcmd1bWVudEluZGV4QWZ0ZXJDYXB0dXJlKGluZGV4KSkpOwogCkBA
IC03MTEsOCArNzExLDggQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAg
ICAgIGNhc2UgR2V0TG9jYWw6IHsKLSAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBhcmd1bWVu
dHNSZWdpc3RlciA9IG1fZ3JhcGgudW5jaGVja2VkQXJndW1lbnRzUmVnaXN0ZXJGb3Iobm9kZS0+
Y29kZU9yaWdpbik7Ci0gICAgICAgICAgICBpZiAoYXJndW1lbnRzUmVnaXN0ZXIuaXNWYWxpZCgp
CisgICAgICAgICAgICBpbnQgYXJndW1lbnRzUmVnaXN0ZXIgPSBtX2dyYXBoLnVuY2hlY2tlZEFy
Z3VtZW50c1JlZ2lzdGVyRm9yKG5vZGUtPmNvZGVPcmlnaW4pOworICAgICAgICAgICAgaWYgKGFy
Z3VtZW50c1JlZ2lzdGVyICE9IEludmFsaWRWaXJ0dWFsUmVnaXN0ZXIKICAgICAgICAgICAgICAg
ICAmJiAobm9kZS0+bG9jYWwoKSA9PSBhcmd1bWVudHNSZWdpc3RlcgogICAgICAgICAgICAgICAg
ICAgICB8fCBub2RlLT5sb2NhbCgpID09IHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3Rlcihhcmd1
bWVudHNSZWdpc3RlcikpKSB7CiAgICAgICAgICAgICAgICAgbV9jcmVhdGVzQXJndW1lbnRzLmFk
ZChub2RlLT5jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSk7CkBAIC03ODMsOCArNzgzLDggQEAg
cHJpdmF0ZToKICAgICAgICAgc3dpdGNoIChzb3VyY2UtPm9wKCkpIHsKICAgICAgICAgY2FzZSBH
ZXRMb2NhbDogewogICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZUFjY2Vz
c0RhdGEgPSBzb3VyY2UtPnZhcmlhYmxlQWNjZXNzRGF0YSgpOwotICAgICAgICAgICAgVmlydHVh
bFJlZ2lzdGVyIGFyZ3VtZW50c1JlZ2lzdGVyID0gbV9ncmFwaC51bmNoZWNrZWRBcmd1bWVudHNS
ZWdpc3RlckZvcihzb3VyY2UtPmNvZGVPcmlnaW4pOwotICAgICAgICAgICAgaWYgKCFhcmd1bWVu
dHNSZWdpc3Rlci5pc1ZhbGlkKCkpCisgICAgICAgICAgICBpbnQgYXJndW1lbnRzUmVnaXN0ZXIg
PSBtX2dyYXBoLnVuY2hlY2tlZEFyZ3VtZW50c1JlZ2lzdGVyRm9yKHNvdXJjZS0+Y29kZU9yaWdp
bik7CisgICAgICAgICAgICBpZiAoYXJndW1lbnRzUmVnaXN0ZXIgPT0gSW52YWxpZFZpcnR1YWxS
ZWdpc3RlcikKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGlmIChhcmd1bWVu
dHNSZWdpc3RlciA9PSB2YXJpYWJsZUFjY2Vzc0RhdGEtPmxvY2FsKCkpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNv
ZGVQYXJzZXIuY3BwCmluZGV4IGNhNDdlMWQ3YjgzZjA0MWNkMTA5OTBlMjAzNzI0NTQxNWIxMzM4
OWUuLmNkOGMwNTMxMDQ5YTQxY2MyN2RkNTM0OWUwZjllMzA1ZWUzOTBiZTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC0xOTEsMzcg
KzE5MSwzNyBAQCBwcml2YXRlOgogICAgIHZvaWQgbGlua0Jsb2NrKEJhc2ljQmxvY2sqLCBWZWN0
b3I8QmFzaWNCbG9jayo+JiBwb3NzaWJsZVRhcmdldHMpOwogICAgIHZvaWQgbGlua0Jsb2NrcyhW
ZWN0b3I8VW5saW5rZWRCbG9jaz4mIHVubGlua2VkQmxvY2tzLCBWZWN0b3I8QmFzaWNCbG9jayo+
JiBwb3NzaWJsZVRhcmdldHMpOwogICAgIAotICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogbmV3VmFy
aWFibGVBY2Nlc3NEYXRhKFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kLCBib29sIGlzQ2FwdHVyZWQp
CisgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiBuZXdWYXJpYWJsZUFjY2Vzc0RhdGEoaW50IG9wZXJh
bmQsIGJvb2wgaXNDYXB0dXJlZCkKICAgICB7Ci0gICAgICAgIEFTU0VSVCghb3BlcmFuZC5pc0Nv
bnN0YW50KCkpOworICAgICAgICBBU1NFUlQob3BlcmFuZCA8IEZpcnN0Q29uc3RhbnRSZWdpc3Rl
ckluZGV4KTsKICAgICAgICAgCi0gICAgICAgIG1fZ3JhcGgubV92YXJpYWJsZUFjY2Vzc0RhdGEu
YXBwZW5kKFZhcmlhYmxlQWNjZXNzRGF0YShvcGVyYW5kLCBpc0NhcHR1cmVkKSk7CisgICAgICAg
IG1fZ3JhcGgubV92YXJpYWJsZUFjY2Vzc0RhdGEuYXBwZW5kKFZhcmlhYmxlQWNjZXNzRGF0YShz
dGF0aWNfY2FzdDxWaXJ0dWFsUmVnaXN0ZXI+KG9wZXJhbmQpLCBpc0NhcHR1cmVkKSk7CiAgICAg
ICAgIHJldHVybiAmbV9ncmFwaC5tX3ZhcmlhYmxlQWNjZXNzRGF0YS5sYXN0KCk7CiAgICAgfQog
ICAgIAogICAgIC8vIEdldC9TZXQgdGhlIG9wZXJhbmRzL3Jlc3VsdCBvZiBhIGJ5dGVjb2RlIGlu
c3RydWN0aW9uLgotICAgIE5vZGUqIGdldERpcmVjdChWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCkK
KyAgICBOb2RlKiBnZXREaXJlY3QoaW50IG9wZXJhbmQpCiAgICAgewogICAgICAgICAvLyBJcyB0
aGlzIGEgY29uc3RhbnQ/Ci0gICAgICAgIGlmIChvcGVyYW5kLmlzQ29uc3RhbnQoKSkgewotICAg
ICAgICAgICAgdW5zaWduZWQgY29uc3RhbnQgPSBvcGVyYW5kLnRvQ29uc3RhbnRJbmRleCgpOwor
ICAgICAgICBpZiAob3BlcmFuZCA+PSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCkgeworICAg
ICAgICAgICAgdW5zaWduZWQgY29uc3RhbnQgPSBvcGVyYW5kIC0gRmlyc3RDb25zdGFudFJlZ2lz
dGVySW5kZXg7CiAgICAgICAgICAgICBBU1NFUlQoY29uc3RhbnQgPCBtX2NvbnN0YW50cy5zaXpl
KCkpOwogICAgICAgICAgICAgcmV0dXJuIGdldEpTQ29uc3RhbnQoY29uc3RhbnQpOwogICAgICAg
ICB9CiAKLSAgICAgICAgQVNTRVJUKG9wZXJhbmQub2Zmc2V0KCkgIT0gSlNTdGFjazo6Q2FsbGVl
KTsKKyAgICAgICAgQVNTRVJUKG9wZXJhbmQgIT0gSlNTdGFjazo6Q2FsbGVlKTsKICAgICAgICAg
CiAgICAgICAgIC8vIElzIHRoaXMgYW4gYXJndW1lbnQ/Ci0gICAgICAgIGlmIChvcGVyYW5kLmlz
QXJndW1lbnQoKSkKKyAgICAgICAgaWYgKG9wZXJhbmRJc0FyZ3VtZW50KG9wZXJhbmQpKQogICAg
ICAgICAgICAgcmV0dXJuIGdldEFyZ3VtZW50KG9wZXJhbmQpOwogCiAgICAgICAgIC8vIE11c3Qg
YmUgYSBsb2NhbC4KICAgICAgICAgcmV0dXJuIGdldExvY2FsKG9wZXJhbmQpOwogICAgIH0KIAot
ICAgIE5vZGUqIGdldChWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCkKKyAgICBOb2RlKiBnZXQoaW50
IG9wZXJhbmQpCiAgICAgewotICAgICAgICBpZiAob3BlcmFuZC5vZmZzZXQoKSA9PSBKU1N0YWNr
OjpDYWxsZWUpIHsKKyAgICAgICAgaWYgKG9wZXJhbmQgPT0gSlNTdGFjazo6Q2FsbGVlKSB7CiAg
ICAgICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lKCkgJiYgaW5saW5lQ2FsbEZyYW1lKCktPmNh
bGxlZSkKICAgICAgICAgICAgICAgICByZXR1cm4gY2VsbENvbnN0YW50KGlubGluZUNhbGxGcmFt
ZSgpLT5jYWxsZWUuZ2V0KCkpOwogICAgICAgICAgICAgCkBAIC0yMzAsMTIgKzIzMCwxMiBAQCBw
cml2YXRlOgogICAgICAgICAKICAgICAgICAgcmV0dXJuIGdldERpcmVjdChtX2lubGluZVN0YWNr
VG9wLT5yZW1hcE9wZXJhbmQob3BlcmFuZCkpOwogICAgIH0KLSAgICAKKwogICAgIGVudW0gU2V0
TW9kZSB7IE5vcm1hbFNldCwgU2V0T25FbnRyeSB9OwotICAgIHZvaWQgc2V0RGlyZWN0KFZpcnR1
YWxSZWdpc3RlciBvcGVyYW5kLCBOb2RlKiB2YWx1ZSwgU2V0TW9kZSBzZXRNb2RlID0gTm9ybWFs
U2V0KQorICAgIHZvaWQgc2V0RGlyZWN0KGludCBvcGVyYW5kLCBOb2RlKiB2YWx1ZSwgU2V0TW9k
ZSBzZXRNb2RlID0gTm9ybWFsU2V0KQogICAgIHsKICAgICAgICAgLy8gSXMgdGhpcyBhbiBhcmd1
bWVudD8KLSAgICAgICAgaWYgKG9wZXJhbmQuaXNBcmd1bWVudCgpKSB7CisgICAgICAgIGlmIChv
cGVyYW5kSXNBcmd1bWVudChvcGVyYW5kKSkgewogICAgICAgICAgICAgc2V0QXJndW1lbnQob3Bl
cmFuZCwgdmFsdWUsIHNldE1vZGUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBA
IC0yNDQsNyArMjQ0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgc2V0TG9jYWwob3BlcmFuZCwgdmFs
dWUsIHNldE1vZGUpOwogICAgIH0KIAotICAgIHZvaWQgc2V0KFZpcnR1YWxSZWdpc3RlciBvcGVy
YW5kLCBOb2RlKiB2YWx1ZSwgU2V0TW9kZSBzZXRNb2RlID0gTm9ybWFsU2V0KQorICAgIHZvaWQg
c2V0KGludCBvcGVyYW5kLCBOb2RlKiB2YWx1ZSwgU2V0TW9kZSBzZXRNb2RlID0gTm9ybWFsU2V0
KQogICAgIHsKICAgICAgICAgc2V0RGlyZWN0KG1faW5saW5lU3RhY2tUb3AtPnJlbWFwT3BlcmFu
ZChvcGVyYW5kKSwgdmFsdWUsIHNldE1vZGUpOwogICAgIH0KQEAgLTI2NCw5ICsyNjQsOSBAQCBw
cml2YXRlOgogICAgIH0KIAogICAgIC8vIFVzZWQgaW4gaW1wbGVtZW50aW5nIGdldC9zZXQsIGFi
b3ZlLCB3aGVyZSB0aGUgb3BlcmFuZCBpcyBhIGxvY2FsIHZhcmlhYmxlLgotICAgIE5vZGUqIGdl
dExvY2FsKFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKQorICAgIE5vZGUqIGdldExvY2FsKGludCBv
cGVyYW5kKQogICAgIHsKLSAgICAgICAgdW5zaWduZWQgbG9jYWwgPSBvcGVyYW5kLnRvTG9jYWwo
KTsKKyAgICAgICAgdW5zaWduZWQgbG9jYWwgPSBvcGVyYW5kVG9Mb2NhbChvcGVyYW5kKTsKICAg
ICAgICAgTm9kZSogbm9kZSA9IG1fY3VycmVudEJsb2NrLT52YXJpYWJsZXNBdFRhaWwubG9jYWwo
bG9jYWwpOwogICAgICAgICBib29sIGlzQ2FwdHVyZWQgPSBtX2NvZGVCbG9jay0+aXNDYXB0dXJl
ZChvcGVyYW5kLCBpbmxpbmVDYWxsRnJhbWUoKSk7CiAgICAgICAgIApAQCAtMzAyLDkgKzMwMiw5
IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBub2RlOwogICAgIH0KIAotICAgIHZvaWQgc2V0
TG9jYWwoVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQsIE5vZGUqIHZhbHVlLCBTZXRNb2RlIHNldE1v
ZGUgPSBOb3JtYWxTZXQpCisgICAgdm9pZCBzZXRMb2NhbChpbnQgb3BlcmFuZCwgTm9kZSogdmFs
dWUsIFNldE1vZGUgc2V0TW9kZSA9IE5vcm1hbFNldCkKICAgICB7Ci0gICAgICAgIHVuc2lnbmVk
IGxvY2FsID0gb3BlcmFuZC50b0xvY2FsKCk7CisgICAgICAgIHVuc2lnbmVkIGxvY2FsID0gb3Bl
cmFuZFRvTG9jYWwob3BlcmFuZCk7CiAgICAgICAgIGJvb2wgaXNDYXB0dXJlZCA9IG1fY29kZUJs
b2NrLT5pc0NhcHR1cmVkKG9wZXJhbmQsIGlubGluZUNhbGxGcmFtZSgpKTsKICAgICAgICAgCiAg
ICAgICAgIGlmIChzZXRNb2RlID09IE5vcm1hbFNldCkgewpAQCAtMzIzLDkgKzMyMyw5IEBAIHBy
aXZhdGU6CiAgICAgfQogCiAgICAgLy8gVXNlZCBpbiBpbXBsZW1lbnRpbmcgZ2V0L3NldCwgYWJv
dmUsIHdoZXJlIHRoZSBvcGVyYW5kIGlzIGFuIGFyZ3VtZW50LgotICAgIE5vZGUqIGdldEFyZ3Vt
ZW50KFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKQorICAgIE5vZGUqIGdldEFyZ3VtZW50KHVuc2ln
bmVkIG9wZXJhbmQpCiAgICAgewotICAgICAgICB1bnNpZ25lZCBhcmd1bWVudCA9IG9wZXJhbmQu
dG9Bcmd1bWVudCgpOworICAgICAgICB1bnNpZ25lZCBhcmd1bWVudCA9IG9wZXJhbmRUb0FyZ3Vt
ZW50KG9wZXJhbmQpOwogICAgICAgICBBU1NFUlQoYXJndW1lbnQgPCBtX251bUFyZ3VtZW50cyk7
CiAgICAgICAgIAogICAgICAgICBOb2RlKiBub2RlID0gbV9jdXJyZW50QmxvY2stPnZhcmlhYmxl
c0F0VGFpbC5hcmd1bWVudChhcmd1bWVudCk7CkBAIC0zNTIsOSArMzUyLDkgQEAgcHJpdmF0ZToK
ICAgICAgICAgbV9jdXJyZW50QmxvY2stPnZhcmlhYmxlc0F0VGFpbC5hcmd1bWVudChhcmd1bWVu
dCkgPSBub2RlOwogICAgICAgICByZXR1cm4gbm9kZTsKICAgICB9Ci0gICAgdm9pZCBzZXRBcmd1
bWVudChWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCwgTm9kZSogdmFsdWUsIFNldE1vZGUgc2V0TW9k
ZSA9IE5vcm1hbFNldCkKKyAgICB2b2lkIHNldEFyZ3VtZW50KGludCBvcGVyYW5kLCBOb2RlKiB2
YWx1ZSwgU2V0TW9kZSBzZXRNb2RlID0gTm9ybWFsU2V0KQogICAgIHsKLSAgICAgICAgdW5zaWdu
ZWQgYXJndW1lbnQgPSBvcGVyYW5kLnRvQXJndW1lbnQoKTsKKyAgICAgICAgdW5zaWduZWQgYXJn
dW1lbnQgPSBvcGVyYW5kVG9Bcmd1bWVudChvcGVyYW5kKTsKICAgICAgICAgQVNTRVJUKGFyZ3Vt
ZW50IDwgbV9udW1Bcmd1bWVudHMpOwogICAgICAgICAKICAgICAgICAgYm9vbCBpc0NhcHR1cmVk
ID0gbV9jb2RlQmxvY2stPmlzQ2FwdHVyZWQob3BlcmFuZCk7CkBAIC0zODUsMjggKzM4NSwyOCBA
QCBwcml2YXRlOgogICAgICAgICByZXR1cm4gc3RhY2stPm1fYXJndW1lbnRQb3NpdGlvbnNbYXJn
dW1lbnRdOwogICAgIH0KICAgICAKLSAgICBBcmd1bWVudFBvc2l0aW9uKiBmaW5kQXJndW1lbnRQ
b3NpdGlvbkZvckxvY2FsKFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKQorICAgIEFyZ3VtZW50UG9z
aXRpb24qIGZpbmRBcmd1bWVudFBvc2l0aW9uRm9yTG9jYWwoaW50IG9wZXJhbmQpCiAgICAgewog
ICAgICAgICBmb3IgKElubGluZVN0YWNrRW50cnkqIHN0YWNrID0gbV9pbmxpbmVTdGFja1RvcDsg
OyBzdGFjayA9IHN0YWNrLT5tX2NhbGxlcikgewogICAgICAgICAgICAgSW5saW5lQ2FsbEZyYW1l
KiBpbmxpbmVDYWxsRnJhbWUgPSBzdGFjay0+bV9pbmxpbmVDYWxsRnJhbWU7CiAgICAgICAgICAg
ICBpZiAoIWlubGluZUNhbGxGcmFtZSkKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgIGlmIChvcGVyYW5kLm9mZnNldCgpIDw9IHN0YXRpY19jYXN0PGludD4oaW5saW5lQ2FsbEZy
YW1lLT5zdGFja09mZnNldCArIEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemUpKQorICAgICAg
ICAgICAgaWYgKG9wZXJhbmQgPD0gc3RhdGljX2Nhc3Q8aW50PihpbmxpbmVDYWxsRnJhbWUtPnN0
YWNrT2Zmc2V0ICsgSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSkpCiAgICAgICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgICAgICBpZiAob3BlcmFuZC5vZmZzZXQoKSA9PSBpbmxpbmVD
YWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lOjp0aGlzQXJndW1lbnRPZmZzZXQoKSkK
KyAgICAgICAgICAgIGlmIChvcGVyYW5kID09IGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQg
KyBDYWxsRnJhbWU6OnRoaXNBcmd1bWVudE9mZnNldCgpKQogICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICAgICAgaWYgKG9wZXJhbmQub2Zmc2V0KCkgPiBzdGF0aWNfY2FzdDxpbnQ+
KGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJT
aXplICsgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpKSkKKyAgICAgICAgICAgIGlm
IChvcGVyYW5kID4gc3RhdGljX2Nhc3Q8aW50PihpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0
ICsgSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSArIGlubGluZUNhbGxGcmFtZS0+YXJndW1l
bnRzLnNpemUoKSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBpbnQg
YXJndW1lbnQgPSBWaXJ0dWFsUmVnaXN0ZXIob3BlcmFuZC5vZmZzZXQoKSAtIGlubGluZUNhbGxG
cmFtZS0+c3RhY2tPZmZzZXQpLnRvQXJndW1lbnQoKTsKKyAgICAgICAgICAgIGludCBhcmd1bWVu
dCA9IG9wZXJhbmRUb0FyZ3VtZW50KG9wZXJhbmQgLSBpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zm
c2V0KTsKICAgICAgICAgICAgIHJldHVybiBzdGFjay0+bV9hcmd1bWVudFBvc2l0aW9uc1thcmd1
bWVudF07CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIAotICAgIEFy
Z3VtZW50UG9zaXRpb24qIGZpbmRBcmd1bWVudFBvc2l0aW9uKFZpcnR1YWxSZWdpc3RlciBvcGVy
YW5kKQorICAgIEFyZ3VtZW50UG9zaXRpb24qIGZpbmRBcmd1bWVudFBvc2l0aW9uKGludCBvcGVy
YW5kKQogICAgIHsKLSAgICAgICAgaWYgKG9wZXJhbmQuaXNBcmd1bWVudCgpKQotICAgICAgICAg
ICAgcmV0dXJuIGZpbmRBcmd1bWVudFBvc2l0aW9uRm9yQXJndW1lbnQob3BlcmFuZC50b0FyZ3Vt
ZW50KCkpOworICAgICAgICBpZiAob3BlcmFuZElzQXJndW1lbnQob3BlcmFuZCkpCisgICAgICAg
ICAgICByZXR1cm4gZmluZEFyZ3VtZW50UG9zaXRpb25Gb3JBcmd1bWVudChvcGVyYW5kVG9Bcmd1
bWVudChvcGVyYW5kKSk7CiAgICAgICAgIHJldHVybiBmaW5kQXJndW1lbnRQb3NpdGlvbkZvckxv
Y2FsKG9wZXJhbmQpOwogICAgIH0KIApAQCAtNDIyLDI0ICs0MjIsMjQgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgIHZhbHVlKTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBmbHVzaChWaXJ0dWFsUmVn
aXN0ZXIgb3BlcmFuZCkKKyAgICB2b2lkIGZsdXNoKGludCBvcGVyYW5kKQogICAgIHsKICAgICAg
ICAgZmx1c2hEaXJlY3QobV9pbmxpbmVTdGFja1RvcC0+cmVtYXBPcGVyYW5kKG9wZXJhbmQpKTsK
ICAgICB9CiAgICAgCi0gICAgdm9pZCBmbHVzaERpcmVjdChWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFu
ZCkKKyAgICB2b2lkIGZsdXNoRGlyZWN0KGludCBvcGVyYW5kKQogICAgIHsKICAgICAgICAgZmx1
c2hEaXJlY3Qob3BlcmFuZCwgZmluZEFyZ3VtZW50UG9zaXRpb24ob3BlcmFuZCkpOwogICAgIH0K
ICAgICAKLSAgICB2b2lkIGZsdXNoRGlyZWN0KFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kLCBBcmd1
bWVudFBvc2l0aW9uKiBhcmd1bWVudFBvc2l0aW9uKQorICAgIHZvaWQgZmx1c2hEaXJlY3QoaW50
IG9wZXJhbmQsIEFyZ3VtZW50UG9zaXRpb24qIGFyZ3VtZW50UG9zaXRpb24pCiAgICAgewogICAg
ICAgICBib29sIGlzQ2FwdHVyZWQgPSBtX2NvZGVCbG9jay0+aXNDYXB0dXJlZChvcGVyYW5kLCBp
bmxpbmVDYWxsRnJhbWUoKSk7CiAgICAgICAgIAotICAgICAgICBBU1NFUlQoIW9wZXJhbmQuaXND
b25zdGFudCgpKTsKKyAgICAgICAgQVNTRVJUKG9wZXJhbmQgPCBGaXJzdENvbnN0YW50UmVnaXN0
ZXJJbmRleCk7CiAgICAgICAgIAotICAgICAgICBpZiAob3BlcmFuZC5pc0xvY2FsKCkpCi0gICAg
ICAgICAgICBtX3ByZXNlcnZlZFZhcnMuc2V0KG9wZXJhbmQudG9Mb2NhbCgpKTsKKyAgICAgICAg
aWYgKCFvcGVyYW5kSXNBcmd1bWVudChvcGVyYW5kKSkKKyAgICAgICAgICAgIG1fcHJlc2VydmVk
VmFycy5zZXQob3BlcmFuZFRvTG9jYWwob3BlcmFuZCkpOwogICAgICAgICAKICAgICAgICAgTm9k
ZSogbm9kZSA9IG1fY3VycmVudEJsb2NrLT52YXJpYWJsZXNBdFRhaWwub3BlcmFuZChvcGVyYW5k
KTsKICAgICAgICAgCkBAIC00NjUsMTEgKzQ2NSwxMSBAQCBwcml2YXRlOgogICAgICAgICBlbHNl
CiAgICAgICAgICAgICBudW1Bcmd1bWVudHMgPSBpbmxpbmVTdGFja0VudHJ5LT5tX2NvZGVCbG9j
ay0+bnVtUGFyYW1ldGVycygpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGFyZ3VtZW50ID0gbnVt
QXJndW1lbnRzOyBhcmd1bWVudC0tID4gMTspCi0gICAgICAgICAgICBmbHVzaERpcmVjdChpbmxp
bmVTdGFja0VudHJ5LT5yZW1hcE9wZXJhbmQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoYXJn
dW1lbnQpKSk7CisgICAgICAgICAgICBmbHVzaERpcmVjdChpbmxpbmVTdGFja0VudHJ5LT5yZW1h
cE9wZXJhbmQoYXJndW1lbnRUb09wZXJhbmQoYXJndW1lbnQpKSk7CiAgICAgICAgIGZvciAoaW50
IGxvY2FsID0gMDsgbG9jYWwgPCBpbmxpbmVTdGFja0VudHJ5LT5tX2NvZGVCbG9jay0+bV9udW1W
YXJzOyArK2xvY2FsKSB7Ci0gICAgICAgICAgICBpZiAoIWlubGluZVN0YWNrRW50cnktPm1fY29k
ZUJsb2NrLT5pc0NhcHR1cmVkKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxvY2FsKSkpCisgICAg
ICAgICAgICBpZiAoIWlubGluZVN0YWNrRW50cnktPm1fY29kZUJsb2NrLT5pc0NhcHR1cmVkKGxv
Y2FsVG9PcGVyYW5kKGxvY2FsKSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAg
ICAgICBmbHVzaERpcmVjdChpbmxpbmVTdGFja0VudHJ5LT5yZW1hcE9wZXJhbmQodmlydHVhbFJl
Z2lzdGVyRm9yTG9jYWwobG9jYWwpKSk7CisgICAgICAgICAgICBmbHVzaERpcmVjdChpbmxpbmVT
dGFja0VudHJ5LT5yZW1hcE9wZXJhbmQobG9jYWxUb09wZXJhbmQobG9jYWwpKSk7CiAgICAgICAg
IH0KICAgICB9CiAKQEAgLTQ4Nyw3ICs0ODcsNyBAQCBwcml2YXRlOgogICAgIC8vIEdldCBhbiBv
cGVyYW5kLCBhbmQgcGVyZm9ybSBhIFRvSW50MzIvVG9OdW1iZXIgY29udmVyc2lvbiBvbiBpdC4K
ICAgICBOb2RlKiBnZXRUb0ludDMyKGludCBvcGVyYW5kKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IHRvSW50MzIoZ2V0KFZpcnR1YWxSZWdpc3RlcihvcGVyYW5kKSkpOworICAgICAgICByZXR1cm4g
dG9JbnQzMihnZXQob3BlcmFuZCkpOwogICAgIH0KIAogICAgIC8vIFBlcmZvcm0gYW4gRVM1IFRv
SW50MzIgb3BlcmF0aW9uIC0gcmV0dXJucyBhIG5vZGUgb2YgdHlwZSBOb2RlUmVzdWx0SW50MzIu
CkBAIC01NDksNyArNTQ5LDYgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIHJldHVybiBnZXQo
bV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxvY2stPnRoaXNSZWdpc3RlcigpKTsKICAgICB9Ci0K
ICAgICB2b2lkIHNldFRoaXMoTm9kZSogdmFsdWUpCiAgICAgewogICAgICAgICBzZXQobV9pbmxp
bmVTdGFja1RvcC0+bV9jb2RlQmxvY2stPnRoaXNSZWdpc3RlcigpLCB2YWx1ZSk7CkBAIC03NzEs
NyArNzcwLDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRp
Y3Rpb24gPSBnZXRQcmVkaWN0aW9uKCk7CiAgICAgICAgIAotICAgICAgICBhZGRWYXJBcmdDaGls
ZChnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKSk7
CisgICAgICAgIGFkZFZhckFyZ0NoaWxkKGdldChjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVy
YW5kKSk7CiAgICAgICAgIGludCBhcmdDb3VudCA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9w
ZXJhbmQ7CiAgICAgICAgIGlmIChKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplICsgKHVuc2ln
bmVkKWFyZ0NvdW50ID4gbV9wYXJhbWV0ZXJTbG90cykKICAgICAgICAgICAgIG1fcGFyYW1ldGVy
U2xvdHMgPSBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplICsgYXJnQ291bnQ7CkBAIC03Nzks
MTAgKzc3OCwxMCBAQCBwcml2YXRlOgogICAgICAgICBpbnQgcmVnaXN0ZXJPZmZzZXQgPSAtY3Vy
cmVudEluc3RydWN0aW9uWzRdLnUub3BlcmFuZDsKICAgICAgICAgaW50IGR1bW15VGhpc0FyZ3Vt
ZW50ID0gb3AgPT0gQ2FsbCA/IDAgOiAxOwogICAgICAgICBmb3IgKGludCBpID0gMCArIGR1bW15
VGhpc0FyZ3VtZW50OyBpIDwgYXJnQ291bnQ7ICsraSkKLSAgICAgICAgICAgIGFkZFZhckFyZ0No
aWxkKGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpLCByZWdpc3Rlck9mZnNldCkpKTsK
KyAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKGdldChyZWdpc3Rlck9mZnNldCArIGFyZ3VtZW50
VG9PcGVyYW5kKGkpKSk7CiAKICAgICAgICAgTm9kZSogY2FsbCA9IGFkZFRvR3JhcGgoTm9kZTo6
VmFyQXJnLCBvcCwgT3BJbmZvKDApLCBPcEluZm8ocHJlZGljdGlvbikpOwotICAgICAgICBzZXQo
VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpLCBjYWxsKTsK
KyAgICAgICAgc2V0KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIGNhbGwpOwogICAg
ICAgICByZXR1cm4gY2FsbDsKICAgICB9CiAgICAgCkBAIC0xMDk2LDIwICsxMDk1LDIwIEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICBtX2J5dGVDb2RlUGFyc2VyLT5tX2lubGluZVN0YWNrVG9wID0g
bV9jYWxsZXI7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIFZpcnR1YWxSZWdpc3RlciBy
ZW1hcE9wZXJhbmQoVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQpIGNvbnN0CisgICAgICAgIGludCBy
ZW1hcE9wZXJhbmQoaW50IG9wZXJhbmQpIGNvbnN0CiAgICAgICAgIHsKICAgICAgICAgICAgIGlm
ICghbV9pbmxpbmVDYWxsRnJhbWUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG9wZXJhbmQ7CiAg
ICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChvcGVyYW5kLmlzQ29uc3RhbnQoKSkgewotICAg
ICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciByZXN1bHQgPSBWaXJ0dWFsUmVnaXN0ZXIobV9j
b25zdGFudFJlbWFwW29wZXJhbmQudG9Db25zdGFudEluZGV4KCldKTsKLSAgICAgICAgICAgICAg
ICBBU1NFUlQocmVzdWx0LmlzQ29uc3RhbnQoKSk7CisgICAgICAgICAgICBpZiAob3BlcmFuZCA+
PSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCkgeworICAgICAgICAgICAgICAgIGludCByZXN1
bHQgPSBtX2NvbnN0YW50UmVtYXBbb3BlcmFuZCAtIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4
XTsKKyAgICAgICAgICAgICAgICBBU1NFUlQocmVzdWx0ID49IEZpcnN0Q29uc3RhbnRSZWdpc3Rl
ckluZGV4KTsKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAgfQog
Ci0gICAgICAgICAgICBBU1NFUlQob3BlcmFuZC5vZmZzZXQoKSAhPSBKU1N0YWNrOjpDYWxsZWUp
OworICAgICAgICAgICAgQVNTRVJUKG9wZXJhbmQgIT0gSlNTdGFjazo6Q2FsbGVlKTsKIAotICAg
ICAgICAgICAgcmV0dXJuIFZpcnR1YWxSZWdpc3RlcihvcGVyYW5kLm9mZnNldCgpICsgbV9pbmxp
bmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0KTsKKyAgICAgICAgICAgIHJldHVybiBvcGVyYW5kICsg
bV9pbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0OwogICAgICAgICB9CiAgICAgfTsKICAgICAK
QEAgLTExNDIsNyArMTE0MSw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwoSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgTm9kZVR5cGUgb3AsIENvCiB7CiAgICAgQVNT
RVJUKE9QQ09ERV9MRU5HVEgob3BfY2FsbCkgPT0gT1BDT0RFX0xFTkdUSChvcF9jb25zdHJ1Y3Qp
KTsKICAgICAKLSAgICBOb2RlKiBjYWxsVGFyZ2V0ID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJy
ZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSk7CisgICAgTm9kZSogY2FsbFRhcmdldCA9IGdl
dChjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKICAgICAKICAgICBDYWxsTGlua1N0
YXR1cyBjYWxsTGlua1N0YXR1czsKIApAQCAtMTIxNCw3ICsxMjEzLDcgQEAgdm9pZCBCeXRlQ29k
ZVBhcnNlcjo6ZW1pdEZ1bmN0aW9uQ2hlY2tzKGNvbnN0IENhbGxMaW5rU3RhdHVzJiBjYWxsTGlu
a1N0YXR1cywgTm8KIHsKICAgICBOb2RlKiB0aGlzQXJndW1lbnQ7CiAgICAgaWYgKGtpbmQgPT0g
Q29kZUZvckNhbGwpCi0gICAgICAgIHRoaXNBcmd1bWVudCA9IGdldCh2aXJ0dWFsUmVnaXN0ZXJG
b3JBcmd1bWVudCgwLCByZWdpc3Rlck9mZnNldCkpOworICAgICAgICB0aGlzQXJndW1lbnQgPSBn
ZXQocmVnaXN0ZXJPZmZzZXQgKyBhcmd1bWVudFRvT3BlcmFuZCgwKSk7CiAgICAgZWxzZQogICAg
ICAgICB0aGlzQXJndW1lbnQgPSAwOwogCkBAIC0xMjM5LDcgKzEyMzgsNyBAQCB2b2lkIEJ5dGVD
b2RlUGFyc2VyOjplbWl0RnVuY3Rpb25DaGVja3MoY29uc3QgQ2FsbExpbmtTdGF0dXMmIGNhbGxM
aW5rU3RhdHVzLCBObwogdm9pZCBCeXRlQ29kZVBhcnNlcjo6ZW1pdEFyZ3VtZW50UGhhbnRvbXMo
aW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIENvZGVT
cGVjaWFsaXphdGlvbktpbmQga2luZCkKIHsKICAgICBmb3IgKGludCBpID0ga2luZCA9PSBDb2Rl
Rm9yQ2FsbCA/IDAgOiAxOyBpIDwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7ICsraSkKLSAg
ICAgICAgYWRkVG9HcmFwaChQaGFudG9tLCBnZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQo
aSwgcmVnaXN0ZXJPZmZzZXQpKSk7CisgICAgICAgIGFkZFRvR3JhcGgoUGhhbnRvbSwgZ2V0KHJl
Z2lzdGVyT2Zmc2V0ICsgYXJndW1lbnRUb09wZXJhbmQoaSkpKTsKIH0KIAogYm9vbCBCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoTm9kZSogY2FsbFRhcmdldE5vZGUsIGludCByZXN1bHRP
cGVyYW5kLCBjb25zdCBDYWxsTGlua1N0YXR1cyYgY2FsbExpbmtTdGF0dXMsIGludCByZWdpc3Rl
ck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCB1bnNpZ25lZCBuZXh0T2Zm
c2V0LCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCkBAIC0xMjkzLDE0ICsxMjkyLDE0IEBA
IGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKE5vZGUqIGNhbGxUYXJnZXROb2Rl
LCBpbnQgcmVzdWx0T3BlcmFuZCwgY29uCiAgICAgCiAgICAgLy8gRklYTUU6IERvbid0IGZsdXNo
IGNvbnN0YW50cyEKICAgICAKLSAgICBpbnQgaW5saW5lQ2FsbEZyYW1lU3RhcnQgPSBtX2lubGlu
ZVN0YWNrVG9wLT5yZW1hcE9wZXJhbmQoVmlydHVhbFJlZ2lzdGVyKHJlZ2lzdGVyT2Zmc2V0KSku
b2Zmc2V0KCkgKyBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplOworICAgIGludCBpbmxpbmVD
YWxsRnJhbWVTdGFydCA9IG1faW5saW5lU3RhY2tUb3AtPnJlbWFwT3BlcmFuZChyZWdpc3Rlck9m
ZnNldCkgKyBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplOwogICAgIAogICAgIC8vIE1ha2Ug
c3VyZSB0aGF0IHRoZSBhcmVhIHVzZWQgYnkgdGhlIGNhbGwgZnJhbWUgaXMgcmVzZXJ2ZWQuCi0g
ICAgZm9yIChpbnQgYXJnID0gVmlydHVhbFJlZ2lzdGVyKGlubGluZUNhbGxGcmFtZVN0YXJ0KS50
b0xvY2FsKCkgKyBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplICsgY29kZUJsb2NrLT5tX251
bVZhcnM7IGFyZy0tID4gVmlydHVhbFJlZ2lzdGVyKGlubGluZUNhbGxGcmFtZVN0YXJ0KS50b0xv
Y2FsKCk7KQorICAgIGZvciAoaW50IGFyZyA9IG9wZXJhbmRUb0xvY2FsKGlubGluZUNhbGxGcmFt
ZVN0YXJ0KSArIEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemUgKyBjb2RlQmxvY2stPm1fbnVt
VmFyczsgYXJnLS0gPiBvcGVyYW5kVG9Mb2NhbChpbmxpbmVDYWxsRnJhbWVTdGFydCk7KQogICAg
ICAgICBtX3ByZXNlcnZlZFZhcnMuc2V0KGFyZyk7CiAgICAgCiAgICAgLy8gTWFrZSBzdXJlIHRo
YXQgd2UgaGF2ZSBlbm91Z2ggbG9jYWxzLgotICAgIHVuc2lnbmVkIG5ld051bUxvY2FscyA9IFZp
cnR1YWxSZWdpc3RlcihpbmxpbmVDYWxsRnJhbWVTdGFydCkudG9Mb2NhbCgpICsgSlNTdGFjazo6
Q2FsbEZyYW1lSGVhZGVyU2l6ZSArIGNvZGVCbG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnM7Cisg
ICAgdW5zaWduZWQgbmV3TnVtTG9jYWxzID0gb3BlcmFuZFRvTG9jYWwoaW5saW5lQ2FsbEZyYW1l
U3RhcnQpICsgSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSArIGNvZGVCbG9jay0+bV9udW1D
YWxsZWVSZWdpc3RlcnM7CiAgICAgaWYgKG5ld051bUxvY2FscyA+IG1fbnVtTG9jYWxzKSB7CiAg
ICAgICAgIG1fbnVtTG9jYWxzID0gbmV3TnVtTG9jYWxzOwogICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG1fZ3JhcGgubnVtQmxvY2tzKCk7ICsraSkKQEAgLTEzMTEsNyArMTMxMCw3IEBA
IGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKE5vZGUqIGNhbGxUYXJnZXROb2Rl
LCBpbnQgcmVzdWx0T3BlcmFuZCwgY29uCiAKICAgICBJbmxpbmVTdGFja0VudHJ5IGlubGluZVN0
YWNrRW50cnkoCiAgICAgICAgIHRoaXMsIGNvZGVCbG9jaywgY29kZUJsb2NrLCBtX2dyYXBoLmxh
c3RCbG9jaygpLCBjYWxsTGlua1N0YXR1cy5mdW5jdGlvbigpLAotICAgICAgICBtX2lubGluZVN0
YWNrVG9wLT5yZW1hcE9wZXJhbmQoVmlydHVhbFJlZ2lzdGVyKHJlc3VsdE9wZXJhbmQpKSwKKyAg
ICAgICAgKFZpcnR1YWxSZWdpc3RlciltX2lubGluZVN0YWNrVG9wLT5yZW1hcE9wZXJhbmQocmVz
dWx0T3BlcmFuZCksCiAgICAgICAgIChWaXJ0dWFsUmVnaXN0ZXIpaW5saW5lQ2FsbEZyYW1lU3Rh
cnQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBraW5kKTsKICAgICAKICAgICAvLyBUaGlz
IGlzIHdoZXJlIHRoZSBhY3R1YWwgaW5saW5pbmcgcmVhbGx5IGhhcHBlbnMuCkBAIC0xNDI4LDE5
ICsxNDI3LDE5IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKE5vZGUqIGNh
bGxUYXJnZXROb2RlLCBpbnQgcmVzdWx0T3BlcmFuZCwgY29uCiBib29sIEJ5dGVDb2RlUGFyc2Vy
OjpoYW5kbGVNaW5NYXgoaW50IHJlc3VsdE9wZXJhbmQsIE5vZGVUeXBlIG9wLCBpbnQgcmVnaXN0
ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykKIHsKICAgICBpZiAoYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPT0gMSkgeyAvLyBNYXRoLm1pbigpCi0gICAgICAgIHNl
dChWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0T3BlcmFuZCksIGNvbnN0YW50TmFOKCkpOworICAgICAg
ICBzZXQocmVzdWx0T3BlcmFuZCwgY29uc3RhbnROYU4oKSk7CiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KICAgICAgCiAgICAgaWYgKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID09IDIp
IHsgLy8gTWF0aC5taW4oeCkKLSAgICAgICAgTm9kZSogcmVzdWx0ID0gZ2V0KFZpcnR1YWxSZWdp
c3Rlcih2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCgxLCByZWdpc3Rlck9mZnNldCkpKTsKKyAg
ICAgICAgTm9kZSogcmVzdWx0ID0gZ2V0KHJlZ2lzdGVyT2Zmc2V0ICsgYXJndW1lbnRUb09wZXJh
bmQoMSkpOwogICAgICAgICBhZGRUb0dyYXBoKFBoYW50b20sIEVkZ2UocmVzdWx0LCBOdW1iZXJV
c2UpKTsKLSAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihyZXN1bHRPcGVyYW5kKSwgcmVzdWx0
KTsKKyAgICAgICAgc2V0KHJlc3VsdE9wZXJhbmQsIHJlc3VsdCk7CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KICAgICAKICAgICBpZiAoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPT0g
MykgeyAvLyBNYXRoLm1pbih4LCB5KQotICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKHJlc3Vs
dE9wZXJhbmQpLCBhZGRUb0dyYXBoKG9wLCBnZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQo
MSwgcmVnaXN0ZXJPZmZzZXQpKSwgZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDIsIHJl
Z2lzdGVyT2Zmc2V0KSkpKTsKKyAgICAgICAgc2V0KHJlc3VsdE9wZXJhbmQsIGFkZFRvR3JhcGgo
b3AsIGdldChyZWdpc3Rlck9mZnNldCArIGFyZ3VtZW50VG9PcGVyYW5kKDEpKSwgZ2V0KHJlZ2lz
dGVyT2Zmc2V0ICsgYXJndW1lbnRUb09wZXJhbmQoMikpKSk7CiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KICAgICAKQEAgLTE0NTUsMTcgKzE0NTQsMTcgQEAgYm9vbCBCeXRlQ29kZVBhcnNl
cjo6aGFuZGxlSW50cmluc2ljKGludCByZXN1bHRPcGVyYW5kLCBJbnRyaW5zaWMgaW50cmluc2lj
LCBpbnQKICAgICBzd2l0Y2ggKGludHJpbnNpYykgewogICAgIGNhc2UgQWJzSW50cmluc2ljOiB7
CiAgICAgICAgIGlmIChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9PSAxKSB7IC8vIE1hdGgu
YWJzKCkKLSAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0T3BlcmFuZCksIGNv
bnN0YW50TmFOKCkpOworICAgICAgICAgICAgc2V0KHJlc3VsdE9wZXJhbmQsIGNvbnN0YW50TmFO
KCkpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAo
IU1hY3JvQXNzZW1ibGVyOjpzdXBwb3J0c0Zsb2F0aW5nUG9pbnRBYnMoKSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgICAgICBOb2RlKiBub2RlID0gYWRkVG9HcmFwaChBcml0aEFi
cywgZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDEsIHJlZ2lzdGVyT2Zmc2V0KSkpOwor
ICAgICAgICBOb2RlKiBub2RlID0gYWRkVG9HcmFwaChBcml0aEFicywgZ2V0KHJlZ2lzdGVyT2Zm
c2V0ICsgYXJndW1lbnRUb09wZXJhbmQoMSkpKTsKICAgICAgICAgaWYgKG1faW5saW5lU3RhY2tU
b3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIE92ZXJmbG93KSkK
ICAgICAgICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MoTm9kZU1heU92ZXJmbG93KTsKLSAgICAgICAg
c2V0KFZpcnR1YWxSZWdpc3RlcihyZXN1bHRPcGVyYW5kKSwgbm9kZSk7CisgICAgICAgIHNldChy
ZXN1bHRPcGVyYW5kLCBub2RlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC0x
NDc3LDE0ICsxNDc2LDE0IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpYyhp
bnQgcmVzdWx0T3BlcmFuZCwgSW50cmluc2ljIGludHJpbnNpYywgaW50CiAgICAgICAgIAogICAg
IGNhc2UgU3FydEludHJpbnNpYzogewogICAgICAgICBpZiAoYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMgPT0gMSkgeyAvLyBNYXRoLnNxcnQoKQotICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdp
c3RlcihyZXN1bHRPcGVyYW5kKSwgY29uc3RhbnROYU4oKSk7CisgICAgICAgICAgICBzZXQocmVz
dWx0T3BlcmFuZCwgY29uc3RhbnROYU4oKSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKCFNYWNyb0Fzc2VtYmxlcjo6c3VwcG9ydHNG
bG9hdGluZ1BvaW50U3FydCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAg
IHNldChWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0T3BlcmFuZCksIGFkZFRvR3JhcGgoQXJpdGhTcXJ0
LCBnZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoMSwgcmVnaXN0ZXJPZmZzZXQpKSkpOwor
ICAgICAgICBzZXQocmVzdWx0T3BlcmFuZCwgYWRkVG9HcmFwaChBcml0aFNxcnQsIGdldChyZWdp
c3Rlck9mZnNldCArIGFyZ3VtZW50VG9PcGVyYW5kKDEpKSkpOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CiAgICAgICAgIApAQCAtMTUwMSw4ICsxNTAwLDggQEAgYm9vbCBCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlSW50cmluc2ljKGludCByZXN1bHRPcGVyYW5kLCBJbnRyaW5zaWMgaW50cmlu
c2ljLCBpbnQKICAgICAgICAgY2FzZSBBcnJheTo6RG91YmxlOgogICAgICAgICBjYXNlIEFycmF5
OjpDb250aWd1b3VzOgogICAgICAgICBjYXNlIEFycmF5OjpBcnJheVN0b3JhZ2U6IHsKLSAgICAg
ICAgICAgIE5vZGUqIGFycmF5UHVzaCA9IGFkZFRvR3JhcGgoQXJyYXlQdXNoLCBPcEluZm8oYXJy
YXlNb2RlLmFzV29yZCgpKSwgT3BJbmZvKHByZWRpY3Rpb24pLCBnZXQodmlydHVhbFJlZ2lzdGVy
Rm9yQXJndW1lbnQoMCwgcmVnaXN0ZXJPZmZzZXQpKSwgZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFy
Z3VtZW50KDEsIHJlZ2lzdGVyT2Zmc2V0KSkpOwotICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdp
c3RlcihyZXN1bHRPcGVyYW5kKSwgYXJyYXlQdXNoKTsKKyAgICAgICAgICAgIE5vZGUqIGFycmF5
UHVzaCA9IGFkZFRvR3JhcGgoQXJyYXlQdXNoLCBPcEluZm8oYXJyYXlNb2RlLmFzV29yZCgpKSwg
T3BJbmZvKHByZWRpY3Rpb24pLCBnZXQocmVnaXN0ZXJPZmZzZXQgKyBhcmd1bWVudFRvT3BlcmFu
ZCgwKSksIGdldChyZWdpc3Rlck9mZnNldCArIGFyZ3VtZW50VG9PcGVyYW5kKDEpKSk7CisgICAg
ICAgICAgICBzZXQocmVzdWx0T3BlcmFuZCwgYXJyYXlQdXNoKTsKICAgICAgICAgICAgIAogICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTE1MjQsOCArMTUyMyw4IEBAIGJv
b2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpYyhpbnQgcmVzdWx0T3BlcmFuZCwgSW50
cmluc2ljIGludHJpbnNpYywgaW50CiAgICAgICAgIGNhc2UgQXJyYXk6OkRvdWJsZToKICAgICAg
ICAgY2FzZSBBcnJheTo6Q29udGlndW91czoKICAgICAgICAgY2FzZSBBcnJheTo6QXJyYXlTdG9y
YWdlOiB7Ci0gICAgICAgICAgICBOb2RlKiBhcnJheVBvcCA9IGFkZFRvR3JhcGgoQXJyYXlQb3As
IE9wSW5mbyhhcnJheU1vZGUuYXNXb3JkKCkpLCBPcEluZm8ocHJlZGljdGlvbiksIGdldCh2aXJ0
dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCgwLCByZWdpc3Rlck9mZnNldCkpKTsKLSAgICAgICAgICAg
IHNldChWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0T3BlcmFuZCksIGFycmF5UG9wKTsKKyAgICAgICAg
ICAgIE5vZGUqIGFycmF5UG9wID0gYWRkVG9HcmFwaChBcnJheVBvcCwgT3BJbmZvKGFycmF5TW9k
ZS5hc1dvcmQoKSksIE9wSW5mbyhwcmVkaWN0aW9uKSwgZ2V0KHJlZ2lzdGVyT2Zmc2V0ICsgYXJn
dW1lbnRUb09wZXJhbmQoMCkpKTsKKyAgICAgICAgICAgIHNldChyZXN1bHRPcGVyYW5kLCBhcnJh
eVBvcCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICAgICAg
CkBAIC0xNTM4LDExICsxNTM3LDExIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJp
bnNpYyhpbnQgcmVzdWx0T3BlcmFuZCwgSW50cmluc2ljIGludHJpbnNpYywgaW50CiAgICAgICAg
IGlmIChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyAhPSAyKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgICAgIGludCB0aGlzT3BlcmFuZCA9IHZpcnR1YWxSZWdpc3RlckZvckFy
Z3VtZW50KDAsIHJlZ2lzdGVyT2Zmc2V0KS5vZmZzZXQoKTsKLSAgICAgICAgaW50IGluZGV4T3Bl
cmFuZCA9IHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDEsIHJlZ2lzdGVyT2Zmc2V0KS5vZmZz
ZXQoKTsKLSAgICAgICAgTm9kZSogY2hhckNvZGUgPSBhZGRUb0dyYXBoKFN0cmluZ0NoYXJDb2Rl
QXQsIE9wSW5mbyhBcnJheU1vZGUoQXJyYXk6OlN0cmluZykuYXNXb3JkKCkpLCBnZXQoVmlydHVh
bFJlZ2lzdGVyKHRoaXNPcGVyYW5kKSksIGdldFRvSW50MzIoaW5kZXhPcGVyYW5kKSk7CisgICAg
ICAgIGludCB0aGlzT3BlcmFuZCA9IHJlZ2lzdGVyT2Zmc2V0ICsgYXJndW1lbnRUb09wZXJhbmQo
MCk7CisgICAgICAgIGludCBpbmRleE9wZXJhbmQgPSByZWdpc3Rlck9mZnNldCArIGFyZ3VtZW50
VG9PcGVyYW5kKDEpOworICAgICAgICBOb2RlKiBjaGFyQ29kZSA9IGFkZFRvR3JhcGgoU3RyaW5n
Q2hhckNvZGVBdCwgT3BJbmZvKEFycmF5TW9kZShBcnJheTo6U3RyaW5nKS5hc1dvcmQoKSksIGdl
dCh0aGlzT3BlcmFuZCksIGdldFRvSW50MzIoaW5kZXhPcGVyYW5kKSk7CiAKLSAgICAgICAgc2V0
KFZpcnR1YWxSZWdpc3RlcihyZXN1bHRPcGVyYW5kKSwgY2hhckNvZGUpOworICAgICAgICBzZXQo
cmVzdWx0T3BlcmFuZCwgY2hhckNvZGUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAK
QEAgLTE1NTAsMjEgKzE1NDksMjEgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmlu
c2ljKGludCByZXN1bHRPcGVyYW5kLCBJbnRyaW5zaWMgaW50cmluc2ljLCBpbnQKICAgICAgICAg
aWYgKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICE9IDIpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICAgICAgaW50IHRoaXNPcGVyYW5kID0gdmlydHVhbFJlZ2lzdGVyRm9yQXJn
dW1lbnQoMCwgcmVnaXN0ZXJPZmZzZXQpLm9mZnNldCgpOwotICAgICAgICBpbnQgaW5kZXhPcGVy
YW5kID0gdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoMSwgcmVnaXN0ZXJPZmZzZXQpLm9mZnNl
dCgpOwotICAgICAgICBOb2RlKiBjaGFyQ29kZSA9IGFkZFRvR3JhcGgoU3RyaW5nQ2hhckF0LCBP
cEluZm8oQXJyYXlNb2RlKEFycmF5OjpTdHJpbmcpLmFzV29yZCgpKSwgZ2V0KFZpcnR1YWxSZWdp
c3Rlcih0aGlzT3BlcmFuZCkpLCBnZXRUb0ludDMyKGluZGV4T3BlcmFuZCkpOworICAgICAgICBp
bnQgdGhpc09wZXJhbmQgPSByZWdpc3Rlck9mZnNldCArIGFyZ3VtZW50VG9PcGVyYW5kKDApOwor
ICAgICAgICBpbnQgaW5kZXhPcGVyYW5kID0gcmVnaXN0ZXJPZmZzZXQgKyBhcmd1bWVudFRvT3Bl
cmFuZCgxKTsKKyAgICAgICAgTm9kZSogY2hhckNvZGUgPSBhZGRUb0dyYXBoKFN0cmluZ0NoYXJB
dCwgT3BJbmZvKEFycmF5TW9kZShBcnJheTo6U3RyaW5nKS5hc1dvcmQoKSksIGdldCh0aGlzT3Bl
cmFuZCksIGdldFRvSW50MzIoaW5kZXhPcGVyYW5kKSk7CiAKLSAgICAgICAgc2V0KFZpcnR1YWxS
ZWdpc3RlcihyZXN1bHRPcGVyYW5kKSwgY2hhckNvZGUpOworICAgICAgICBzZXQocmVzdWx0T3Bl
cmFuZCwgY2hhckNvZGUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgY2FzZSBG
cm9tQ2hhckNvZGVJbnRyaW5zaWM6IHsKICAgICAgICAgaWYgKGFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzICE9IDIpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgaW50IGlu
ZGV4T3BlcmFuZCA9IHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDEsIHJlZ2lzdGVyT2Zmc2V0
KS5vZmZzZXQoKTsKKyAgICAgICAgaW50IGluZGV4T3BlcmFuZCA9IHJlZ2lzdGVyT2Zmc2V0ICsg
YXJndW1lbnRUb09wZXJhbmQoMSk7CiAgICAgICAgIE5vZGUqIGNoYXJDb2RlID0gYWRkVG9HcmFw
aChTdHJpbmdGcm9tQ2hhckNvZGUsIGdldFRvSW50MzIoaW5kZXhPcGVyYW5kKSk7CiAKLSAgICAg
ICAgc2V0KFZpcnR1YWxSZWdpc3RlcihyZXN1bHRPcGVyYW5kKSwgY2hhckNvZGUpOworICAgICAg
ICBzZXQocmVzdWx0T3BlcmFuZCwgY2hhckNvZGUpOwogCiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KQEAgLTE1NzMsOCArMTU3Miw4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlu
dHJpbnNpYyhpbnQgcmVzdWx0T3BlcmFuZCwgSW50cmluc2ljIGludHJpbnNpYywgaW50CiAgICAg
ICAgIGlmIChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyAhPSAyKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICAKLSAgICAgICAgTm9kZSogcmVnRXhwRXhlYyA9IGFkZFRvR3Jh
cGgoUmVnRXhwRXhlYywgT3BJbmZvKDApLCBPcEluZm8ocHJlZGljdGlvbiksIGdldCh2aXJ0dWFs
UmVnaXN0ZXJGb3JBcmd1bWVudCgwLCByZWdpc3Rlck9mZnNldCkpLCBnZXQodmlydHVhbFJlZ2lz
dGVyRm9yQXJndW1lbnQoMSwgcmVnaXN0ZXJPZmZzZXQpKSk7Ci0gICAgICAgIHNldChWaXJ0dWFs
UmVnaXN0ZXIocmVzdWx0T3BlcmFuZCksIHJlZ0V4cEV4ZWMpOworICAgICAgICBOb2RlKiByZWdF
eHBFeGVjID0gYWRkVG9HcmFwaChSZWdFeHBFeGVjLCBPcEluZm8oMCksIE9wSW5mbyhwcmVkaWN0
aW9uKSwgZ2V0KHJlZ2lzdGVyT2Zmc2V0ICsgYXJndW1lbnRUb09wZXJhbmQoMCkpLCBnZXQocmVn
aXN0ZXJPZmZzZXQgKyBhcmd1bWVudFRvT3BlcmFuZCgxKSkpOworICAgICAgICBzZXQocmVzdWx0
T3BlcmFuZCwgcmVnRXhwRXhlYyk7CiAgICAgICAgIAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CkBAIC0xNTgzLDggKzE1ODIsOCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRy
aW5zaWMoaW50IHJlc3VsdE9wZXJhbmQsIEludHJpbnNpYyBpbnRyaW5zaWMsIGludAogICAgICAg
ICBpZiAoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgIT0gMikKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgCi0gICAgICAgIE5vZGUqIHJlZ0V4cEV4ZWMgPSBhZGRUb0dyYXBo
KFJlZ0V4cFRlc3QsIE9wSW5mbygwKSwgT3BJbmZvKHByZWRpY3Rpb24pLCBnZXQodmlydHVhbFJl
Z2lzdGVyRm9yQXJndW1lbnQoMCwgcmVnaXN0ZXJPZmZzZXQpKSwgZ2V0KHZpcnR1YWxSZWdpc3Rl
ckZvckFyZ3VtZW50KDEsIHJlZ2lzdGVyT2Zmc2V0KSkpOwotICAgICAgICBzZXQoVmlydHVhbFJl
Z2lzdGVyKHJlc3VsdE9wZXJhbmQpLCByZWdFeHBFeGVjKTsKKyAgICAgICAgTm9kZSogcmVnRXhw
RXhlYyA9IGFkZFRvR3JhcGgoUmVnRXhwVGVzdCwgT3BJbmZvKDApLCBPcEluZm8ocHJlZGljdGlv
biksIGdldChyZWdpc3Rlck9mZnNldCArIGFyZ3VtZW50VG9PcGVyYW5kKDApKSwgZ2V0KHJlZ2lz
dGVyT2Zmc2V0ICsgYXJndW1lbnRUb09wZXJhbmQoMSkpKTsKKyAgICAgICAgc2V0KHJlc3VsdE9w
ZXJhbmQsIHJlZ0V4cEV4ZWMpOwogICAgICAgICAKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQpAQCAtMTU5MiwxMSArMTU5MSwxMSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRy
aW5zaWMoaW50IHJlc3VsdE9wZXJhbmQsIEludHJpbnNpYyBpbnRyaW5zaWMsIGludAogICAgIGNh
c2UgSU11bEludHJpbnNpYzogewogICAgICAgICBpZiAoYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMgIT0gMykKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgaW50IGxlZnRPcGVy
YW5kID0gdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoMSwgcmVnaXN0ZXJPZmZzZXQpLm9mZnNl
dCgpOwotICAgICAgICBpbnQgcmlnaHRPcGVyYW5kID0gdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1l
bnQoMiwgcmVnaXN0ZXJPZmZzZXQpLm9mZnNldCgpOworICAgICAgICBpbnQgbGVmdE9wZXJhbmQg
PSByZWdpc3Rlck9mZnNldCArIGFyZ3VtZW50VG9PcGVyYW5kKDEpOworICAgICAgICBpbnQgcmln
aHRPcGVyYW5kID0gcmVnaXN0ZXJPZmZzZXQgKyBhcmd1bWVudFRvT3BlcmFuZCgyKTsKICAgICAg
ICAgTm9kZSogbGVmdCA9IGdldFRvSW50MzIobGVmdE9wZXJhbmQpOwogICAgICAgICBOb2RlKiBy
aWdodCA9IGdldFRvSW50MzIocmlnaHRPcGVyYW5kKTsKLSAgICAgICAgc2V0KFZpcnR1YWxSZWdp
c3RlcihyZXN1bHRPcGVyYW5kKSwgYWRkVG9HcmFwaChBcml0aElNdWwsIGxlZnQsIHJpZ2h0KSk7
CisgICAgICAgIHNldChyZXN1bHRPcGVyYW5kLCBhZGRUb0dyYXBoKEFyaXRoSU11bCwgbGVmdCwg
cmlnaHQpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgICAgICAKQEAgLTE2NTIs
OCArMTY1MSw4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVR5cGVkQXJyYXlDb25zdHJ1
Y3RvcigKICAgICBpZiAoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgIT0gMikKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIAotICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0T3BlcmFu
ZCksCi0gICAgICAgIGFkZFRvR3JhcGgoTmV3VHlwZWRBcnJheSwgT3BJbmZvKHR5cGUpLCBnZXQo
dmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoMSwgcmVnaXN0ZXJPZmZzZXQpKSkpOworICAgIHNl
dChyZXN1bHRPcGVyYW5kLAorICAgICAgICBhZGRUb0dyYXBoKE5ld1R5cGVkQXJyYXksIE9wSW5m
byh0eXBlKSwgZ2V0KHJlZ2lzdGVyT2Zmc2V0ICsgYXJndW1lbnRUb09wZXJhbmQoMSkpKSk7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTE2NzUsMTQgKzE2NzQsMTQgQEAgYm9vbCBCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlQ29uc3RhbnRJbnRlcm5hbEZ1bmN0aW9uKAogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICAKICAgICAgICAgaWYgKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzID09IDIpIHsKLSAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0T3BlcmFu
ZCksCi0gICAgICAgICAgICAgICAgYWRkVG9HcmFwaChOZXdBcnJheVdpdGhTaXplLCBPcEluZm8o
QXJyYXlXaXRoVW5kZWNpZGVkKSwgZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDEsIHJl
Z2lzdGVyT2Zmc2V0KSkpKTsKKyAgICAgICAgICAgIHNldChyZXN1bHRPcGVyYW5kLAorICAgICAg
ICAgICAgICAgIGFkZFRvR3JhcGgoTmV3QXJyYXlXaXRoU2l6ZSwgT3BJbmZvKEFycmF5V2l0aFVu
ZGVjaWRlZCksIGdldChyZWdpc3Rlck9mZnNldCArIGFyZ3VtZW50VG9PcGVyYW5kKDEpKSkpOwog
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGZv
ciAoaW50IGkgPSAxOyBpIDwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7ICsraSkKLSAgICAg
ICAgICAgIGFkZFZhckFyZ0NoaWxkKGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpLCBy
ZWdpc3Rlck9mZnNldCkpKTsKLSAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihyZXN1bHRPcGVy
YW5kKSwKKyAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKGdldChyZWdpc3Rlck9mZnNldCArIGFy
Z3VtZW50VG9PcGVyYW5kKGkpKSk7CisgICAgICAgIHNldChyZXN1bHRPcGVyYW5kLAogICAgICAg
ICAgICAgYWRkVG9HcmFwaChOb2RlOjpWYXJBcmcsIE5ld0FycmF5LCBPcEluZm8oQXJyYXlXaXRo
VW5kZWNpZGVkKSwgT3BJbmZvKDApKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAg
LTE2OTMsMTIgKzE2OTIsMTIgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ29uc3RhbnRJ
bnRlcm5hbEZ1bmN0aW9uKAogICAgICAgICBpZiAoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMg
PD0gMSkKICAgICAgICAgICAgIHJlc3VsdCA9IGNlbGxDb25zdGFudChtX3ZtLT5zbWFsbFN0cmlu
Z3MuZW1wdHlTdHJpbmcoKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlc3VsdCA9IGFk
ZFRvR3JhcGgoVG9TdHJpbmcsIGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCgxLCByZWdp
c3Rlck9mZnNldCkpKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IGFkZFRvR3JhcGgoVG9TdHJpbmcs
IGdldChyZWdpc3Rlck9mZnNldCArIGFyZ3VtZW50VG9PcGVyYW5kKDEpKSk7CiAgICAgICAgIAog
ICAgICAgICBpZiAoa2luZCA9PSBDb2RlRm9yQ29uc3RydWN0KQogICAgICAgICAgICAgcmVzdWx0
ID0gYWRkVG9HcmFwaChOZXdTdHJpbmdPYmplY3QsIE9wSW5mbyhmdW5jdGlvbi0+Z2xvYmFsT2Jq
ZWN0KCktPnN0cmluZ09iamVjdFN0cnVjdHVyZSgpKSwgcmVzdWx0KTsKICAgICAgICAgCi0gICAg
ICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0T3BlcmFuZCksIHJlc3VsdCk7CisgICAgICAg
IHNldChyZXN1bHRPcGVyYW5kLCByZXN1bHQpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CiAgICAgCkBAIC0xNzM0LDcgKzE3MzMsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVH
ZXRCeU9mZnNldCgKICAgICBpbnQgZGVzdGluYXRpb25PcGVyYW5kLCBTcGVjdWxhdGVkVHlwZSBw
cmVkaWN0aW9uLCBOb2RlKiBiYXNlLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLAogICAgIFBy
b3BlcnR5T2Zmc2V0IG9mZnNldCkKIHsKLSAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGRlc3RpbmF0
aW9uT3BlcmFuZCksIGhhbmRsZUdldEJ5T2Zmc2V0KHByZWRpY3Rpb24sIGJhc2UsIGlkZW50aWZp
ZXJOdW1iZXIsIG9mZnNldCkpOworICAgIHNldChkZXN0aW5hdGlvbk9wZXJhbmQsIGhhbmRsZUdl
dEJ5T2Zmc2V0KHByZWRpY3Rpb24sIGJhc2UsIGlkZW50aWZpZXJOdW1iZXIsIG9mZnNldCkpOwog
fQogCiBOb2RlKiBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlPZmZzZXQoTm9kZSogYmFzZSwg
dW5zaWduZWQgaWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBOb2RlKiB2YWx1ZSkK
QEAgLTE3NjEsNyArMTc2MCw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5SWQo
CiAgICAgaWYgKCFnZXRCeUlkU3RhdHVzLmlzU2ltcGxlKCkKICAgICAgICAgfHwgbV9pbmxpbmVT
dGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkQ2Fj
aGUpCiAgICAgICAgIHx8IG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNp
dGUobV9jdXJyZW50SW5kZXgsIEJhZFdlYWtDb25zdGFudENhY2hlKSkgewotICAgICAgICBzZXQo
VmlydHVhbFJlZ2lzdGVyKGRlc3RpbmF0aW9uT3BlcmFuZCksCisgICAgICAgIHNldChkZXN0aW5h
dGlvbk9wZXJhbmQsCiAgICAgICAgICAgICBhZGRUb0dyYXBoKAogICAgICAgICAgICAgICAgIGdl
dEJ5SWRTdGF0dXMubWFrZXNDYWxscygpID8gR2V0QnlJZEZsdXNoIDogR2V0QnlJZCwKICAgICAg
ICAgICAgICAgICBPcEluZm8oaWRlbnRpZmllck51bWJlciksIE9wSW5mbyhwcmVkaWN0aW9uKSwg
YmFzZSkpOwpAQCAtMTgwNCw3ICsxODAzLDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxl
R2V0QnlJZCgKICAgICBpZiAoZ2V0QnlJZFN0YXR1cy5zcGVjaWZpY1ZhbHVlKCkpIHsKICAgICAg
ICAgQVNTRVJUKGdldEJ5SWRTdGF0dXMuc3BlY2lmaWNWYWx1ZSgpLmlzQ2VsbCgpKTsKICAgICAg
ICAgCi0gICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoZGVzdGluYXRpb25PcGVyYW5kKSwgY2Vs
bENvbnN0YW50KGdldEJ5SWRTdGF0dXMuc3BlY2lmaWNWYWx1ZSgpLmFzQ2VsbCgpKSk7CisgICAg
ICAgIHNldChkZXN0aW5hdGlvbk9wZXJhbmQsIGNlbGxDb25zdGFudChnZXRCeUlkU3RhdHVzLnNw
ZWNpZmljVmFsdWUoKS5hc0NlbGwoKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIApA
QCAtMTg1MSw3ICsxODUwLDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNp
Z25lZCBsaW1pdCkKICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50cy5yZXNpemUobV9udW1Bcmd1
bWVudHMpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGFyZ3VtZW50ID0gMDsgYXJndW1lbnQgPCBt
X251bUFyZ3VtZW50czsgKythcmd1bWVudCkgewogICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NE
YXRhKiB2YXJpYWJsZSA9IG5ld1ZhcmlhYmxlQWNjZXNzRGF0YSgKLSAgICAgICAgICAgICAgICB2
aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChhcmd1bWVudCksIG1fY29kZUJsb2NrLT5pc0NhcHR1
cmVkKHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGFyZ3VtZW50KSkpOworICAgICAgICAgICAg
ICAgIGFyZ3VtZW50VG9PcGVyYW5kKGFyZ3VtZW50KSwgbV9jb2RlQmxvY2stPmlzQ2FwdHVyZWQo
YXJndW1lbnRUb09wZXJhbmQoYXJndW1lbnQpKSk7CiAgICAgICAgICAgICB2YXJpYWJsZS0+bWVy
Z2VTdHJ1Y3R1cmVDaGVja0hvaXN0aW5nRmFpbGVkKAogICAgICAgICAgICAgICAgIG1faW5saW5l
U3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZENh
Y2hlKSk7CiAgICAgICAgICAgICB2YXJpYWJsZS0+bWVyZ2VDaGVja0FycmF5SG9pc3RpbmdGYWls
ZWQoCkBAIC0xOTAwLDcgKzE4OTksNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2Nr
KHVuc2lnbmVkIGxpbWl0KQogICAgICAgICBjYXNlIG9wX2VudGVyOgogICAgICAgICAgICAgLy8g
SW5pdGlhbGl6ZSBhbGwgbG9jYWxzIHRvIHVuZGVmaW5lZC4KICAgICAgICAgICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgbV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxvY2stPm1fbnVtVmFyczsgKytp
KQotICAgICAgICAgICAgICAgIHNldCh2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpKSwgY29uc3Rh
bnRVbmRlZmluZWQoKSwgU2V0T25FbnRyeSk7CisgICAgICAgICAgICAgICAgc2V0KGxvY2FsVG9P
cGVyYW5kKGkpLCBjb25zdGFudFVuZGVmaW5lZCgpLCBTZXRPbkVudHJ5KTsKICAgICAgICAgICAg
IE5FWFRfT1BDT0RFKG9wX2VudGVyKTsKIAogICAgICAgICBjYXNlIG9wX3RvX3RoaXM6IHsKQEAg
LTE5MjQsNyArMTkyMyw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWdu
ZWQgbGltaXQpCiAKICAgICAgICAgY2FzZSBvcF9jcmVhdGVfdGhpczogewogICAgICAgICAgICAg
aW50IGNhbGxlZU9wZXJhbmQgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwotICAg
ICAgICAgICAgTm9kZSogY2FsbGVlID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjYWxsZWVPcGVyYW5k
KSk7CisgICAgICAgICAgICBOb2RlKiBjYWxsZWUgPSBnZXQoY2FsbGVlT3BlcmFuZCk7CiAgICAg
ICAgICAgICBib29sIGFscmVhZHlFbWl0dGVkID0gZmFsc2U7CiAgICAgICAgICAgICBpZiAoY2Fs
bGVlLT5vcCgpID09IFdlYWtKU0NvbnN0YW50KSB7CiAgICAgICAgICAgICAgICAgSlNDZWxsKiBj
ZWxsID0gY2FsbGVlLT53ZWFrQ29uc3RhbnQoKTsKQEAgLTE5MzYsMTkgKzE5MzUsMTkgQEAgYm9v
bCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAg
ICAgICAgICAgYWRkVG9HcmFwaChBbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnQsIE9wSW5mbyhm
dW5jdGlvbikpOwogICAgICAgICAgICAgICAgICAgICAvLyBUaGUgY2FsbGVlIGlzIHN0aWxsIGxp
dmUgdXAgdG8gdGhpcyBwb2ludC4KICAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChQaGFu
dG9tLCBjYWxsZWUpOwotICAgICAgICAgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1
cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpLAorICAgICAgICAgICAgICAgICAgICBzZXQo
Y3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwKICAgICAgICAgICAgICAgICAgICAgICAg
IGFkZFRvR3JhcGgoTmV3T2JqZWN0LCBPcEluZm8oYWxsb2NhdGlvblByb2ZpbGUtPnN0cnVjdHVy
ZSgpKSkpOwogICAgICAgICAgICAgICAgICAgICBhbHJlYWR5RW1pdHRlZCA9IHRydWU7CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCFhbHJlYWR5RW1p
dHRlZCkKLSAgICAgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVj
dGlvblsxXS51Lm9wZXJhbmQpLAorICAgICAgICAgICAgICAgIHNldChjdXJyZW50SW5zdHJ1Y3Rp
b25bMV0udS5vcGVyYW5kLAogICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKENyZWF0ZVRo
aXMsIE9wSW5mbyhjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKSwgY2FsbGVlKSk7CiAg
ICAgICAgICAgICBORVhUX09QQ09ERShvcF9jcmVhdGVfdGhpcyk7CiAgICAgICAgIH0KIAogICAg
ICAgICBjYXNlIG9wX25ld19vYmplY3Q6IHsKLSAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0
ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCksCisgICAgICAgICAgICBzZXQoY3Vy
cmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwKICAgICAgICAgICAgICAgICBhZGRUb0dyYXBo
KE5ld09iamVjdCwKICAgICAgICAgICAgICAgICAgICAgT3BJbmZvKGN1cnJlbnRJbnN0cnVjdGlv
blszXS51Lm9iamVjdEFsbG9jYXRpb25Qcm9maWxlLT5zdHJ1Y3R1cmUoKSkpKTsKICAgICAgICAg
ICAgIE5FWFRfT1BDT0RFKG9wX25ld19vYmplY3QpOwpAQCAtMTk1OSwxNSArMTk1OCwxNSBAQCBi
b29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAg
ICAgaW50IG51bU9wZXJhbmRzID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKICAg
ICAgICAgICAgIEFycmF5QWxsb2NhdGlvblByb2ZpbGUqIHByb2ZpbGUgPSBjdXJyZW50SW5zdHJ1
Y3Rpb25bNF0udS5hcnJheUFsbG9jYXRpb25Qcm9maWxlOwogICAgICAgICAgICAgZm9yIChpbnQg
b3BlcmFuZElkeCA9IHN0YXJ0T3BlcmFuZDsgb3BlcmFuZElkeCA+IHN0YXJ0T3BlcmFuZCAtIG51
bU9wZXJhbmRzOyAtLW9wZXJhbmRJZHgpCi0gICAgICAgICAgICAgICAgYWRkVmFyQXJnQ2hpbGQo
Z2V0KFZpcnR1YWxSZWdpc3RlcihvcGVyYW5kSWR4KSkpOwotICAgICAgICAgICAgc2V0KFZpcnR1
YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSwgYWRkVG9HcmFwaChO
b2RlOjpWYXJBcmcsIE5ld0FycmF5LCBPcEluZm8ocHJvZmlsZS0+c2VsZWN0SW5kZXhpbmdUeXBl
KCkpLCBPcEluZm8oMCkpKTsKKyAgICAgICAgICAgICAgICBhZGRWYXJBcmdDaGlsZChnZXQob3Bl
cmFuZElkeCkpOworICAgICAgICAgICAgc2V0KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJh
bmQsIGFkZFRvR3JhcGgoTm9kZTo6VmFyQXJnLCBOZXdBcnJheSwgT3BJbmZvKHByb2ZpbGUtPnNl
bGVjdEluZGV4aW5nVHlwZSgpKSwgT3BJbmZvKDApKSk7CiAgICAgICAgICAgICBORVhUX09QQ09E
RShvcF9uZXdfYXJyYXkpOwogICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBv
cF9uZXdfYXJyYXlfd2l0aF9zaXplOiB7CiAgICAgICAgICAgICBpbnQgbGVuZ3RoT3BlcmFuZCA9
IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBBcnJheUFsbG9j
YXRpb25Qcm9maWxlKiBwcm9maWxlID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUuYXJyYXlBbGxv
Y2F0aW9uUHJvZmlsZTsKLSAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudElu
c3RydWN0aW9uWzFdLnUub3BlcmFuZCksIGFkZFRvR3JhcGgoTmV3QXJyYXlXaXRoU2l6ZSwgT3BJ
bmZvKHByb2ZpbGUtPnNlbGVjdEluZGV4aW5nVHlwZSgpKSwgZ2V0KFZpcnR1YWxSZWdpc3Rlcihs
ZW5ndGhPcGVyYW5kKSkpKTsKKyAgICAgICAgICAgIHNldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0u
dS5vcGVyYW5kLCBhZGRUb0dyYXBoKE5ld0FycmF5V2l0aFNpemUsIE9wSW5mbyhwcm9maWxlLT5z
ZWxlY3RJbmRleGluZ1R5cGUoKSksIGdldChsZW5ndGhPcGVyYW5kKSkpOwogICAgICAgICAgICAg
TkVYVF9PUENPREUob3BfbmV3X2FycmF5X3dpdGhfc2l6ZSk7CiAgICAgICAgIH0KICAgICAgICAg
ICAgIApAQCAtMTk4OSwxMiArMTk4OCwxMiBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJs
b2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAg
ICAgICBtX2dyYXBoLm1fbmV3QXJyYXlCdWZmZXJEYXRhLmFwcGVuZChkYXRhKTsKLSAgICAgICAg
ICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCks
IGFkZFRvR3JhcGgoTmV3QXJyYXlCdWZmZXIsIE9wSW5mbygmbV9ncmFwaC5tX25ld0FycmF5QnVm
ZmVyRGF0YS5sYXN0KCkpKSk7CisgICAgICAgICAgICBzZXQoY3VycmVudEluc3RydWN0aW9uWzFd
LnUub3BlcmFuZCwgYWRkVG9HcmFwaChOZXdBcnJheUJ1ZmZlciwgT3BJbmZvKCZtX2dyYXBoLm1f
bmV3QXJyYXlCdWZmZXJEYXRhLmxhc3QoKSkpKTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9w
X25ld19hcnJheV9idWZmZXIpOwogICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2Fz
ZSBvcF9uZXdfcmVnZXhwOiB7Ci0gICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJl
bnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpLCBhZGRUb0dyYXBoKE5ld1JlZ2V4cCwgT3BJbmZv
KGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKSk7CisgICAgICAgICAgICBzZXQoY3Vy
cmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgYWRkVG9HcmFwaChOZXdSZWdleHAsIE9wSW5m
byhjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSkpOwogICAgICAgICAgICAgTkVYVF9P
UENPREUob3BfbmV3X3JlZ2V4cCk7CiAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtMjAwMywx
MiArMjAwMiwxMiBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxp
bWl0KQogICAgICAgICAgICAgaWYgKCFjYWNoZWRGdW5jdGlvbiAKICAgICAgICAgICAgICAgICB8
fCBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPmNvdWxkVGFrZVNsb3dDYXNlKG1f
Y3VycmVudEluZGV4KQogICAgICAgICAgICAgICAgIHx8IG1faW5saW5lU3RhY2tUb3AtPm1fZXhp
dFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZEZ1bmN0aW9uKSkgewotICAg
ICAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUu
b3BlcmFuZCksIGdldChWaXJ0dWFsUmVnaXN0ZXIoSlNTdGFjazo6Q2FsbGVlKSkpOworICAgICAg
ICAgICAgICAgIHNldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCBnZXQoSlNTdGFj
azo6Q2FsbGVlKSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIEFTU0VS
VChjYWNoZWRGdW5jdGlvbi0+aW5oZXJpdHMoSlNGdW5jdGlvbjo6aW5mbygpKSk7Ci0gICAgICAg
ICAgICAgICAgTm9kZSogYWN0dWFsQ2FsbGVlID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihKU1N0YWNr
OjpDYWxsZWUpKTsKKyAgICAgICAgICAgICAgICBOb2RlKiBhY3R1YWxDYWxsZWUgPSBnZXQoSlNT
dGFjazo6Q2FsbGVlKTsKICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKENoZWNrRnVuY3Rpb24s
IE9wSW5mbyhjYWNoZWRGdW5jdGlvbiksIGFjdHVhbENhbGxlZSk7Ci0gICAgICAgICAgICAgICAg
c2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSwgYWRk
VG9HcmFwaChXZWFrSlNDb25zdGFudCwgT3BJbmZvKGNhY2hlZEZ1bmN0aW9uKSkpOworICAgICAg
ICAgICAgICAgIHNldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCBhZGRUb0dyYXBo
KFdlYWtKU0NvbnN0YW50LCBPcEluZm8oY2FjaGVkRnVuY3Rpb24pKSk7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9nZXRfY2FsbGVlKTsKICAgICAgICAgfQpAQCAt
MjAxOCwyMSArMjAxNywyMSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2ln
bmVkIGxpbWl0KQogICAgICAgICBjYXNlIG9wX2JpdGFuZDogewogICAgICAgICAgICAgTm9kZSog
b3AxID0gZ2V0VG9JbnQzMihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKICAgICAg
ICAgICAgIE5vZGUqIG9wMiA9IGdldFRvSW50MzIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3Bl
cmFuZCk7Ci0gICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlv
blsxXS51Lm9wZXJhbmQpLCBhZGRUb0dyYXBoKEJpdEFuZCwgb3AxLCBvcDIpKTsKKyAgICAgICAg
ICAgIHNldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCBhZGRUb0dyYXBoKEJpdEFu
ZCwgb3AxLCBvcDIpKTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2JpdGFuZCk7CiAgICAg
ICAgIH0KIAogICAgICAgICBjYXNlIG9wX2JpdG9yOiB7CiAgICAgICAgICAgICBOb2RlKiBvcDEg
PSBnZXRUb0ludDMyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOwogICAgICAgICAg
ICAgTm9kZSogb3AyID0gZ2V0VG9JbnQzMihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5k
KTsKLSAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFd
LnUub3BlcmFuZCksIGFkZFRvR3JhcGgoQml0T3IsIG9wMSwgb3AyKSk7CisgICAgICAgICAgICBz
ZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgYWRkVG9HcmFwaChCaXRPciwgb3Ax
LCBvcDIpKTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2JpdG9yKTsKICAgICAgICAgfQog
CiAgICAgICAgIGNhc2Ugb3BfYml0eG9yOiB7CiAgICAgICAgICAgICBOb2RlKiBvcDEgPSBnZXRU
b0ludDMyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOwogICAgICAgICAgICAgTm9k
ZSogb3AyID0gZ2V0VG9JbnQzMihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKTsKLSAg
ICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3Bl
cmFuZCksIGFkZFRvR3JhcGgoQml0WG9yLCBvcDEsIG9wMikpOworICAgICAgICAgICAgc2V0KGN1
cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIGFkZFRvR3JhcGgoQml0WG9yLCBvcDEsIG9w
MikpOwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfYml0eG9yKTsKICAgICAgICAgfQogCkBA
IC0yMDQ1LDcgKzIwNDQsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2ln
bmVkIGxpbWl0KQogICAgICAgICAgICAgICAgIHJlc3VsdCA9IG9wMTsKICAgICAgICAgICAgIGVs
c2UKICAgICAgICAgICAgICAgICByZXN1bHQgPSBhZGRUb0dyYXBoKEJpdFJTaGlmdCwgb3AxLCBv
cDIpOwotICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25b
MV0udS5vcGVyYW5kKSwgcmVzdWx0KTsKKyAgICAgICAgICAgIHNldChjdXJyZW50SW5zdHJ1Y3Rp
b25bMV0udS5vcGVyYW5kLCByZXN1bHQpOwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfcnNo
aWZ0KTsKICAgICAgICAgfQogCkBAIC0yMDU4LDcgKzIwNTcsNyBAQCBib29sIEJ5dGVDb2RlUGFy
c2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgICAgIHJlc3VsdCA9
IG9wMTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICByZXN1bHQgPSBhZGRUb0dy
YXBoKEJpdExTaGlmdCwgb3AxLCBvcDIpOwotICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3Rl
cihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSwgcmVzdWx0KTsKKyAgICAgICAgICAg
IHNldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCByZXN1bHQpOwogICAgICAgICAg
ICAgTkVYVF9PUENPREUob3BfbHNoaWZ0KTsKICAgICAgICAgfQogCkBAIC0yMDg1LDcgKzIwODQs
NyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAg
ICAgICAgICAgICAgIHJlc3VsdCA9IGFkZFRvR3JhcGgoQml0VVJTaGlmdCwgb3AxLCBvcDIpOwog
ICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VTYWZlKGFkZFRvR3JhcGgoVUludDMyVG9OdW1i
ZXIsIHJlc3VsdCkpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdp
c3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSwgcmVzdWx0KTsKKyAgICAgICAg
ICAgIHNldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCByZXN1bHQpOwogICAgICAg
ICAgICAgTkVYVF9PUENPREUob3BfdXJzaGlmdCk7CiAgICAgICAgIH0KIApAQCAtMjA5Myw2NCAr
MjA5Miw2MiBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0
KQogCiAgICAgICAgIGNhc2Ugb3BfaW5jOiB7CiAgICAgICAgICAgICBpbnQgc3JjRHN0ID0gY3Vy
cmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKLSAgICAgICAgICAgIFZpcnR1YWxSZWdpc3Rl
ciBzcmNEc3RWaXJ0dWFsUmVnaXN0ZXIgPSBWaXJ0dWFsUmVnaXN0ZXIoc3JjRHN0KTsKLSAgICAg
ICAgICAgIE5vZGUqIG9wID0gZ2V0KHNyY0RzdFZpcnR1YWxSZWdpc3Rlcik7Ci0gICAgICAgICAg
ICBzZXQoc3JjRHN0VmlydHVhbFJlZ2lzdGVyLCBtYWtlU2FmZShhZGRUb0dyYXBoKEFyaXRoQWRk
LCBvcCwgb25lKCkpKSk7CisgICAgICAgICAgICBOb2RlKiBvcCA9IGdldChzcmNEc3QpOworICAg
ICAgICAgICAgc2V0KHNyY0RzdCwgbWFrZVNhZmUoYWRkVG9HcmFwaChBcml0aEFkZCwgb3AsIG9u
ZSgpKSkpOwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfaW5jKTsKICAgICAgICAgfQogCiAg
ICAgICAgIGNhc2Ugb3BfZGVjOiB7CiAgICAgICAgICAgICBpbnQgc3JjRHN0ID0gY3VycmVudElu
c3RydWN0aW9uWzFdLnUub3BlcmFuZDsKLSAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBzcmNE
c3RWaXJ0dWFsUmVnaXN0ZXIgPSBWaXJ0dWFsUmVnaXN0ZXIoc3JjRHN0KTsKLSAgICAgICAgICAg
IE5vZGUqIG9wID0gZ2V0KHNyY0RzdFZpcnR1YWxSZWdpc3Rlcik7Ci0gICAgICAgICAgICBzZXQo
c3JjRHN0VmlydHVhbFJlZ2lzdGVyLCBtYWtlU2FmZShhZGRUb0dyYXBoKEFyaXRoU3ViLCBvcCwg
b25lKCkpKSk7CisgICAgICAgICAgICBOb2RlKiBvcCA9IGdldChzcmNEc3QpOworICAgICAgICAg
ICAgc2V0KHNyY0RzdCwgbWFrZVNhZmUoYWRkVG9HcmFwaChBcml0aFN1Yiwgb3AsIG9uZSgpKSkp
OwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfZGVjKTsKICAgICAgICAgfQogCiAgICAgICAg
IC8vID09PSBBcml0aG1ldGljIG9wZXJhdGlvbnMgPT09CiAKICAgICAgICAgY2FzZSBvcF9hZGQ6
IHsKLSAgICAgICAgICAgIE5vZGUqIG9wMSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudElu
c3RydWN0aW9uWzJdLnUub3BlcmFuZCkpOwotICAgICAgICAgICAgTm9kZSogb3AyID0gZ2V0KFZp
cnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKSk7CisgICAgICAg
ICAgICBOb2RlKiBvcDEgPSBnZXQoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCk7Cisg
ICAgICAgICAgICBOb2RlKiBvcDIgPSBnZXQoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFu
ZCk7CiAgICAgICAgICAgICBpZiAob3AxLT5oYXNOdW1iZXJSZXN1bHQoKSAmJiBvcDItPmhhc051
bWJlclJlc3VsdCgpKQotICAgICAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVu
dEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCksIG1ha2VTYWZlKGFkZFRvR3JhcGgoQXJpdGhBZGQs
IG9wMSwgb3AyKSkpOworICAgICAgICAgICAgICAgIHNldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0u
dS5vcGVyYW5kLCBtYWtlU2FmZShhZGRUb0dyYXBoKEFyaXRoQWRkLCBvcDEsIG9wMikpKTsKICAg
ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJl
bnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpLCBtYWtlU2FmZShhZGRUb0dyYXBoKFZhbHVlQWRk
LCBvcDEsIG9wMikpKTsKKyAgICAgICAgICAgICAgICBzZXQoY3VycmVudEluc3RydWN0aW9uWzFd
LnUub3BlcmFuZCwgbWFrZVNhZmUoYWRkVG9HcmFwaChWYWx1ZUFkZCwgb3AxLCBvcDIpKSk7CiAg
ICAgICAgICAgICBORVhUX09QQ09ERShvcF9hZGQpOwogICAgICAgICB9CiAKICAgICAgICAgY2Fz
ZSBvcF9zdWI6IHsKLSAgICAgICAgICAgIE5vZGUqIG9wMSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIo
Y3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCkpOwotICAgICAgICAgICAgTm9kZSogb3Ay
ID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKSk7
Ci0gICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51
Lm9wZXJhbmQpLCBtYWtlU2FmZShhZGRUb0dyYXBoKEFyaXRoU3ViLCBvcDEsIG9wMikpKTsKKyAg
ICAgICAgICAgIE5vZGUqIG9wMSA9IGdldChjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5k
KTsKKyAgICAgICAgICAgIE5vZGUqIG9wMiA9IGdldChjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5v
cGVyYW5kKTsKKyAgICAgICAgICAgIHNldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5k
LCBtYWtlU2FmZShhZGRUb0dyYXBoKEFyaXRoU3ViLCBvcDEsIG9wMikpKTsKICAgICAgICAgICAg
IE5FWFRfT1BDT0RFKG9wX3N1Yik7CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIG9wX25lZ2F0
ZTogewotICAgICAgICAgICAgTm9kZSogb3AxID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50
SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSk7Ci0gICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lz
dGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpLCBtYWtlU2FmZShhZGRUb0dyYXBo
KEFyaXRoTmVnYXRlLCBvcDEpKSk7CisgICAgICAgICAgICBOb2RlKiBvcDEgPSBnZXQoY3VycmVu
dEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCk7CisgICAgICAgICAgICBzZXQoY3VycmVudEluc3Ry
dWN0aW9uWzFdLnUub3BlcmFuZCwgbWFrZVNhZmUoYWRkVG9HcmFwaChBcml0aE5lZ2F0ZSwgb3Ax
KSkpOwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfbmVnYXRlKTsKICAgICAgICAgfQogCiAg
ICAgICAgIGNhc2Ugb3BfbXVsOiB7CiAgICAgICAgICAgICAvLyBNdWx0aXBseSByZXF1aXJlcyB0
aGF0IHRoZSBpbnB1dHMgYXJlIG5vdCB0cnVuY2F0ZWQsIHVuZm9ydHVuYXRlbHkuCi0gICAgICAg
ICAgICBOb2RlKiBvcDEgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsy
XS51Lm9wZXJhbmQpKTsKLSAgICAgICAgICAgIE5vZGUqIG9wMiA9IGdldChWaXJ0dWFsUmVnaXN0
ZXIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCkpOwotICAgICAgICAgICAgc2V0KFZp
cnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSwgbWFrZVNhZmUo
YWRkVG9HcmFwaChBcml0aE11bCwgb3AxLCBvcDIpKSk7CisgICAgICAgICAgICBOb2RlKiBvcDEg
PSBnZXQoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCk7CisgICAgICAgICAgICBOb2Rl
KiBvcDIgPSBnZXQoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCk7CisgICAgICAgICAg
ICBzZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgbWFrZVNhZmUoYWRkVG9HcmFw
aChBcml0aE11bCwgb3AxLCBvcDIpKSk7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9tdWwp
OwogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBvcF9tb2Q6IHsKLSAgICAgICAgICAgIE5vZGUq
IG9wMSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFu
ZCkpOwotICAgICAgICAgICAgTm9kZSogb3AyID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50
SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKSk7Ci0gICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lz
dGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpLCBtYWtlU2FmZShhZGRUb0dyYXBo
KEFyaXRoTW9kLCBvcDEsIG9wMikpKTsKKyAgICAgICAgICAgIE5vZGUqIG9wMSA9IGdldChjdXJy
ZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKKyAgICAgICAgICAgIE5vZGUqIG9wMiA9IGdl
dChjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKTsKKyAgICAgICAgICAgIHNldChjdXJy
ZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCBtYWtlU2FmZShhZGRUb0dyYXBoKEFyaXRoTW9k
LCBvcDEsIG9wMikpKTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX21vZCk7CiAgICAgICAg
IH0KIAogICAgICAgICBjYXNlIG9wX2RpdjogewotICAgICAgICAgICAgTm9kZSogb3AxID0gZ2V0
KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSk7Ci0gICAg
ICAgICAgICBOb2RlKiBvcDIgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlv
blszXS51Lm9wZXJhbmQpKTsKLSAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVu
dEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCksIG1ha2VEaXZTYWZlKGFkZFRvR3JhcGgoQXJpdGhE
aXYsIG9wMSwgb3AyKSkpOworICAgICAgICAgICAgTm9kZSogb3AxID0gZ2V0KGN1cnJlbnRJbnN0
cnVjdGlvblsyXS51Lm9wZXJhbmQpOworICAgICAgICAgICAgTm9kZSogb3AyID0gZ2V0KGN1cnJl
bnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpOworICAgICAgICAgICAgc2V0KGN1cnJlbnRJbnN0
cnVjdGlvblsxXS51Lm9wZXJhbmQsIG1ha2VEaXZTYWZlKGFkZFRvR3JhcGgoQXJpdGhEaXYsIG9w
MSwgb3AyKSkpOwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfZGl2KTsKICAgICAgICAgfQog
CkBAIC0yMTYyLDY3ICsyMTU5LDY3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2so
dW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9kZWJ1Zyk7CiAjZW5k
aWYKICAgICAgICAgY2FzZSBvcF9tb3Y6IHsKLSAgICAgICAgICAgIE5vZGUqIG9wID0gZ2V0KFZp
cnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSk7Ci0gICAgICAg
ICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQp
LCBvcCk7CisgICAgICAgICAgICBOb2RlKiBvcCA9IGdldChjdXJyZW50SW5zdHJ1Y3Rpb25bMl0u
dS5vcGVyYW5kKTsKKyAgICAgICAgICAgIHNldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVy
YW5kLCBvcCk7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9tb3YpOwogICAgICAgICB9CiAK
ICAgICAgICAgY2FzZSBvcF9jaGVja19oYXNfaW5zdGFuY2U6Ci0gICAgICAgICAgICBhZGRUb0dy
YXBoKENoZWNrSGFzSW5zdGFuY2UsIGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0
aW9uWzNdLnUub3BlcmFuZCkpKTsKKyAgICAgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tIYXNJbnN0
YW5jZSwgZ2V0KGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpKTsKICAgICAgICAgICAg
IE5FWFRfT1BDT0RFKG9wX2NoZWNrX2hhc19pbnN0YW5jZSk7CiAKICAgICAgICAgY2FzZSBvcF9p
bnN0YW5jZW9mOiB7Ci0gICAgICAgICAgICBOb2RlKiB2YWx1ZSA9IGdldChWaXJ0dWFsUmVnaXN0
ZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCkpOwotICAgICAgICAgICAgTm9kZSog
cHJvdG90eXBlID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5v
cGVyYW5kKSk7Ci0gICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVj
dGlvblsxXS51Lm9wZXJhbmQpLCBhZGRUb0dyYXBoKEluc3RhbmNlT2YsIHZhbHVlLCBwcm90b3R5
cGUpKTsKKyAgICAgICAgICAgIE5vZGUqIHZhbHVlID0gZ2V0KGN1cnJlbnRJbnN0cnVjdGlvblsy
XS51Lm9wZXJhbmQpOworICAgICAgICAgICAgTm9kZSogcHJvdG90eXBlID0gZ2V0KGN1cnJlbnRJ
bnN0cnVjdGlvblszXS51Lm9wZXJhbmQpOworICAgICAgICAgICAgc2V0KGN1cnJlbnRJbnN0cnVj
dGlvblsxXS51Lm9wZXJhbmQsIGFkZFRvR3JhcGgoSW5zdGFuY2VPZiwgdmFsdWUsIHByb3RvdHlw
ZSkpOwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfaW5zdGFuY2VvZik7CiAgICAgICAgIH0K
ICAgICAgICAgICAgIAogICAgICAgICBjYXNlIG9wX2lzX3VuZGVmaW5lZDogewotICAgICAgICAg
ICAgTm9kZSogdmFsdWUgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsy
XS51Lm9wZXJhbmQpKTsKLSAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudElu
c3RydWN0aW9uWzFdLnUub3BlcmFuZCksIGFkZFRvR3JhcGgoSXNVbmRlZmluZWQsIHZhbHVlKSk7
CisgICAgICAgICAgICBOb2RlKiB2YWx1ZSA9IGdldChjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5v
cGVyYW5kKTsKKyAgICAgICAgICAgIHNldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5k
LCBhZGRUb0dyYXBoKElzVW5kZWZpbmVkLCB2YWx1ZSkpOwogICAgICAgICAgICAgTkVYVF9PUENP
REUob3BfaXNfdW5kZWZpbmVkKTsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2Ugb3BfaXNfYm9v
bGVhbjogewotICAgICAgICAgICAgTm9kZSogdmFsdWUgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1
cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKTsKLSAgICAgICAgICAgIHNldChWaXJ0dWFs
UmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCksIGFkZFRvR3JhcGgoSXNC
b29sZWFuLCB2YWx1ZSkpOworICAgICAgICAgICAgTm9kZSogdmFsdWUgPSBnZXQoY3VycmVudElu
c3RydWN0aW9uWzJdLnUub3BlcmFuZCk7CisgICAgICAgICAgICBzZXQoY3VycmVudEluc3RydWN0
aW9uWzFdLnUub3BlcmFuZCwgYWRkVG9HcmFwaChJc0Jvb2xlYW4sIHZhbHVlKSk7CiAgICAgICAg
ICAgICBORVhUX09QQ09ERShvcF9pc19ib29sZWFuKTsKICAgICAgICAgfQogCiAgICAgICAgIGNh
c2Ugb3BfaXNfbnVtYmVyOiB7Ci0gICAgICAgICAgICBOb2RlKiB2YWx1ZSA9IGdldChWaXJ0dWFs
UmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCkpOwotICAgICAgICAgICAg
c2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSwgYWRk
VG9HcmFwaChJc051bWJlciwgdmFsdWUpKTsKKyAgICAgICAgICAgIE5vZGUqIHZhbHVlID0gZ2V0
KGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOworICAgICAgICAgICAgc2V0KGN1cnJl
bnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIGFkZFRvR3JhcGgoSXNOdW1iZXIsIHZhbHVlKSk7
CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9pc19udW1iZXIpOwogICAgICAgICB9CiAKICAg
ICAgICAgY2FzZSBvcF9pc19zdHJpbmc6IHsKLSAgICAgICAgICAgIE5vZGUqIHZhbHVlID0gZ2V0
KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSk7Ci0gICAg
ICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJh
bmQpLCBhZGRUb0dyYXBoKElzU3RyaW5nLCB2YWx1ZSkpOworICAgICAgICAgICAgTm9kZSogdmFs
dWUgPSBnZXQoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCk7CisgICAgICAgICAgICBz
ZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgYWRkVG9HcmFwaChJc1N0cmluZywg
dmFsdWUpKTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2lzX3N0cmluZyk7CiAgICAgICAg
IH0KIAogICAgICAgICBjYXNlIG9wX2lzX29iamVjdDogewotICAgICAgICAgICAgTm9kZSogdmFs
dWUgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQp
KTsKLSAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFd
LnUub3BlcmFuZCksIGFkZFRvR3JhcGgoSXNPYmplY3QsIHZhbHVlKSk7CisgICAgICAgICAgICBO
b2RlKiB2YWx1ZSA9IGdldChjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKKyAgICAg
ICAgICAgIHNldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCBhZGRUb0dyYXBoKElz
T2JqZWN0LCB2YWx1ZSkpOwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfaXNfb2JqZWN0KTsK
ICAgICAgICAgfQogCiAgICAgICAgIGNhc2Ugb3BfaXNfZnVuY3Rpb246IHsKLSAgICAgICAgICAg
IE5vZGUqIHZhbHVlID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0u
dS5vcGVyYW5kKSk7Ci0gICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0
cnVjdGlvblsxXS51Lm9wZXJhbmQpLCBhZGRUb0dyYXBoKElzRnVuY3Rpb24sIHZhbHVlKSk7Cisg
ICAgICAgICAgICBOb2RlKiB2YWx1ZSA9IGdldChjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVy
YW5kKTsKKyAgICAgICAgICAgIHNldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCBh
ZGRUb0dyYXBoKElzRnVuY3Rpb24sIHZhbHVlKSk7CiAgICAgICAgICAgICBORVhUX09QQ09ERShv
cF9pc19mdW5jdGlvbik7CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIG9wX25vdDogewotICAg
ICAgICAgICAgTm9kZSogdmFsdWUgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVj
dGlvblsyXS51Lm9wZXJhbmQpKTsKLSAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoY3Vy
cmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCksIGFkZFRvR3JhcGgoTG9naWNhbE5vdCwgdmFs
dWUpKTsKKyAgICAgICAgICAgIE5vZGUqIHZhbHVlID0gZ2V0KGN1cnJlbnRJbnN0cnVjdGlvblsy
XS51Lm9wZXJhbmQpOworICAgICAgICAgICAgc2V0KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9w
ZXJhbmQsIGFkZFRvR3JhcGgoTG9naWNhbE5vdCwgdmFsdWUpKTsKICAgICAgICAgICAgIE5FWFRf
T1BDT0RFKG9wX25vdCk7CiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIG9w
X3RvX3ByaW1pdGl2ZTogewotICAgICAgICAgICAgTm9kZSogdmFsdWUgPSBnZXQoVmlydHVhbFJl
Z2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKTsKLSAgICAgICAgICAgIHNl
dChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCksIGFkZFRv
R3JhcGgoVG9QcmltaXRpdmUsIHZhbHVlKSk7CisgICAgICAgICAgICBOb2RlKiB2YWx1ZSA9IGdl
dChjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKKyAgICAgICAgICAgIHNldChjdXJy
ZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCBhZGRUb0dyYXBoKFRvUHJpbWl0aXZlLCB2YWx1
ZSkpOwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfdG9fcHJpbWl0aXZlKTsKICAgICAgICAg
fQogICAgICAgICAgICAgCkBAIC0yMjM4LDcgKzIyMzUsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2Vy
OjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogI2VuZGlmCiAgICAgICAgICAgICBhdXRvIHRv
U3RyaW5nTm9kZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPE5vZGUqW10+KG51bU9wZXJhbmRzKTsKICAg
ICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtT3BlcmFuZHM7IGkrKykKLSAgICAgICAg
ICAgICAgICB0b1N0cmluZ05vZGVzW2ldID0gYWRkVG9HcmFwaChUb1N0cmluZywgZ2V0KFZpcnR1
YWxSZWdpc3RlcihzdGFydE9wZXJhbmQgLSBpKSkpOworICAgICAgICAgICAgICAgIHRvU3RyaW5n
Tm9kZXNbaV0gPSBhZGRUb0dyYXBoKFRvU3RyaW5nLCBnZXQoc3RhcnRPcGVyYW5kIC0gaSkpOwog
CiAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bU9wZXJhbmRzOyBpKyspCiAgICAg
ICAgICAgICAgICAgYWRkVG9HcmFwaChQaGFudG9tLCB0b1N0cmluZ05vZGVzW2ldKTsKQEAgLTIy
NTksMTQxICsyMjU2LDE0MSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2ln
bmVkIGxpbWl0KQogICAgICAgICAgICAgICAgIEFTU0VSVChpbmRleEluT3BlcmFuZHMgPCBtYXhS
b3BlQXJndW1lbnRzKTsKICAgICAgICAgICAgICAgICBvcGVyYW5kc1tpbmRleEluT3BlcmFuZHMr
K10gPSB0b1N0cmluZ05vZGVzW29wZXJhbmRJZHhdOwogICAgICAgICAgICAgfQotICAgICAgICAg
ICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSwK
KyAgICAgICAgICAgIHNldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLAogICAgICAg
ICAgICAgICAgIGFkZFRvR3JhcGgoTWFrZVJvcGUsIG9wZXJhbmRzWzBdLCBvcGVyYW5kc1sxXSwg
b3BlcmFuZHNbMl0pKTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3N0cmNhdCk7CiAgICAg
ICAgIH0KIAogICAgICAgICBjYXNlIG9wX2xlc3M6IHsKLSAgICAgICAgICAgIE5vZGUqIG9wMSA9
IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCkpOwot
ICAgICAgICAgICAgTm9kZSogb3AyID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1
Y3Rpb25bM10udS5vcGVyYW5kKSk7CisgICAgICAgICAgICBOb2RlKiBvcDEgPSBnZXQoY3VycmVu
dEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCk7CisgICAgICAgICAgICBOb2RlKiBvcDIgPSBnZXQo
Y3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCk7CiAgICAgICAgICAgICBpZiAoY2FuRm9s
ZChvcDEpICYmIGNhbkZvbGQob3AyKSkgewogICAgICAgICAgICAgICAgIEpTVmFsdWUgYSA9IHZh
bHVlT2ZKU0NvbnN0YW50KG9wMSk7CiAgICAgICAgICAgICAgICAgSlNWYWx1ZSBiID0gdmFsdWVP
ZkpTQ29uc3RhbnQob3AyKTsKICAgICAgICAgICAgICAgICBpZiAoYS5pc051bWJlcigpICYmIGIu
aXNOdW1iZXIoKSkgewotICAgICAgICAgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1
cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpLAorICAgICAgICAgICAgICAgICAgICBzZXQo
Y3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwKICAgICAgICAgICAgICAgICAgICAgICAg
IGdldEpTQ29uc3RhbnRGb3JWYWx1ZShqc0Jvb2xlYW4oYS5hc051bWJlcigpIDwgYi5hc051bWJl
cigpKSkpOwogICAgICAgICAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9sZXNzKTsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lz
dGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpLCBhZGRUb0dyYXBoKENvbXBhcmVM
ZXNzLCBvcDEsIG9wMikpOworICAgICAgICAgICAgc2V0KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51
Lm9wZXJhbmQsIGFkZFRvR3JhcGgoQ29tcGFyZUxlc3MsIG9wMSwgb3AyKSk7CiAgICAgICAgICAg
ICBORVhUX09QQ09ERShvcF9sZXNzKTsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2Ugb3BfbGVz
c2VxOiB7Ci0gICAgICAgICAgICBOb2RlKiBvcDEgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJl
bnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKTsKLSAgICAgICAgICAgIE5vZGUqIG9wMiA9IGdl
dChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCkpOworICAg
ICAgICAgICAgTm9kZSogb3AxID0gZ2V0KGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQp
OworICAgICAgICAgICAgTm9kZSogb3AyID0gZ2V0KGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9w
ZXJhbmQpOwogICAgICAgICAgICAgaWYgKGNhbkZvbGQob3AxKSAmJiBjYW5Gb2xkKG9wMikpIHsK
ICAgICAgICAgICAgICAgICBKU1ZhbHVlIGEgPSB2YWx1ZU9mSlNDb25zdGFudChvcDEpOwogICAg
ICAgICAgICAgICAgIEpTVmFsdWUgYiA9IHZhbHVlT2ZKU0NvbnN0YW50KG9wMik7CiAgICAgICAg
ICAgICAgICAgaWYgKGEuaXNOdW1iZXIoKSAmJiBiLmlzTnVtYmVyKCkpIHsKLSAgICAgICAgICAg
ICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVy
YW5kKSwKKyAgICAgICAgICAgICAgICAgICAgc2V0KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9w
ZXJhbmQsCiAgICAgICAgICAgICAgICAgICAgICAgICBnZXRKU0NvbnN0YW50Rm9yVmFsdWUoanNC
b29sZWFuKGEuYXNOdW1iZXIoKSA8PSBiLmFzTnVtYmVyKCkpKSk7CiAgICAgICAgICAgICAgICAg
ICAgIE5FWFRfT1BDT0RFKG9wX2xlc3NlcSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgfQotICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25b
MV0udS5vcGVyYW5kKSwgYWRkVG9HcmFwaChDb21wYXJlTGVzc0VxLCBvcDEsIG9wMikpOworICAg
ICAgICAgICAgc2V0KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIGFkZFRvR3JhcGgo
Q29tcGFyZUxlc3NFcSwgb3AxLCBvcDIpKTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2xl
c3NlcSk7CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIG9wX2dyZWF0ZXI6IHsKLSAgICAgICAg
ICAgIE5vZGUqIG9wMSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzJd
LnUub3BlcmFuZCkpOwotICAgICAgICAgICAgTm9kZSogb3AyID0gZ2V0KFZpcnR1YWxSZWdpc3Rl
cihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKSk7CisgICAgICAgICAgICBOb2RlKiBv
cDEgPSBnZXQoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCk7CisgICAgICAgICAgICBO
b2RlKiBvcDIgPSBnZXQoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCk7CiAgICAgICAg
ICAgICBpZiAoY2FuRm9sZChvcDEpICYmIGNhbkZvbGQob3AyKSkgewogICAgICAgICAgICAgICAg
IEpTVmFsdWUgYSA9IHZhbHVlT2ZKU0NvbnN0YW50KG9wMSk7CiAgICAgICAgICAgICAgICAgSlNW
YWx1ZSBiID0gdmFsdWVPZkpTQ29uc3RhbnQob3AyKTsKICAgICAgICAgICAgICAgICBpZiAoYS5p
c051bWJlcigpICYmIGIuaXNOdW1iZXIoKSkgewotICAgICAgICAgICAgICAgICAgICBzZXQoVmly
dHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpLAorICAgICAgICAg
ICAgICAgICAgICBzZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwKICAgICAgICAg
ICAgICAgICAgICAgICAgIGdldEpTQ29uc3RhbnRGb3JWYWx1ZShqc0Jvb2xlYW4oYS5hc051bWJl
cigpID4gYi5hc051bWJlcigpKSkpOwogICAgICAgICAgICAgICAgICAgICBORVhUX09QQ09ERShv
cF9ncmVhdGVyKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpLCBh
ZGRUb0dyYXBoKENvbXBhcmVHcmVhdGVyLCBvcDEsIG9wMikpOworICAgICAgICAgICAgc2V0KGN1
cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIGFkZFRvR3JhcGgoQ29tcGFyZUdyZWF0ZXIs
IG9wMSwgb3AyKSk7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9ncmVhdGVyKTsKICAgICAg
ICAgfQogCiAgICAgICAgIGNhc2Ugb3BfZ3JlYXRlcmVxOiB7Ci0gICAgICAgICAgICBOb2RlKiBv
cDEgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQp
KTsKLSAgICAgICAgICAgIE5vZGUqIG9wMiA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudElu
c3RydWN0aW9uWzNdLnUub3BlcmFuZCkpOworICAgICAgICAgICAgTm9kZSogb3AxID0gZ2V0KGN1
cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOworICAgICAgICAgICAgTm9kZSogb3AyID0g
Z2V0KGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpOwogICAgICAgICAgICAgaWYgKGNh
bkZvbGQob3AxKSAmJiBjYW5Gb2xkKG9wMikpIHsKICAgICAgICAgICAgICAgICBKU1ZhbHVlIGEg
PSB2YWx1ZU9mSlNDb25zdGFudChvcDEpOwogICAgICAgICAgICAgICAgIEpTVmFsdWUgYiA9IHZh
bHVlT2ZKU0NvbnN0YW50KG9wMik7CiAgICAgICAgICAgICAgICAgaWYgKGEuaXNOdW1iZXIoKSAm
JiBiLmlzTnVtYmVyKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3Rl
cihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSwKKyAgICAgICAgICAgICAgICAgICAg
c2V0KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICBnZXRKU0NvbnN0YW50Rm9yVmFsdWUoanNCb29sZWFuKGEuYXNOdW1iZXIoKSA+PSBiLmFz
TnVtYmVyKCkpKSk7CiAgICAgICAgICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2dyZWF0ZXJl
cSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICAgICAgc2V0KFZp
cnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSwgYWRkVG9HcmFw
aChDb21wYXJlR3JlYXRlckVxLCBvcDEsIG9wMikpOworICAgICAgICAgICAgc2V0KGN1cnJlbnRJ
bnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIGFkZFRvR3JhcGgoQ29tcGFyZUdyZWF0ZXJFcSwgb3Ax
LCBvcDIpKTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2dyZWF0ZXJlcSk7CiAgICAgICAg
IH0KIAogICAgICAgICBjYXNlIG9wX2VxOiB7Ci0gICAgICAgICAgICBOb2RlKiBvcDEgPSBnZXQo
VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKTsKLSAgICAg
ICAgICAgIE5vZGUqIG9wMiA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9u
WzNdLnUub3BlcmFuZCkpOworICAgICAgICAgICAgTm9kZSogb3AxID0gZ2V0KGN1cnJlbnRJbnN0
cnVjdGlvblsyXS51Lm9wZXJhbmQpOworICAgICAgICAgICAgTm9kZSogb3AyID0gZ2V0KGN1cnJl
bnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpOwogICAgICAgICAgICAgaWYgKGNhbkZvbGQob3Ax
KSAmJiBjYW5Gb2xkKG9wMikpIHsKICAgICAgICAgICAgICAgICBKU1ZhbHVlIGEgPSB2YWx1ZU9m
SlNDb25zdGFudChvcDEpOwogICAgICAgICAgICAgICAgIEpTVmFsdWUgYiA9IHZhbHVlT2ZKU0Nv
bnN0YW50KG9wMik7Ci0gICAgICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50
SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSwKKyAgICAgICAgICAgICAgICBzZXQoY3VycmVudElu
c3RydWN0aW9uWzFdLnUub3BlcmFuZCwKICAgICAgICAgICAgICAgICAgICAgZ2V0SlNDb25zdGFu
dEZvclZhbHVlKGpzQm9vbGVhbihKU1ZhbHVlOjplcXVhbChtX2NvZGVCbG9jay0+Z2xvYmFsT2Jq
ZWN0KCktPmdsb2JhbEV4ZWMoKSwgYSwgYikpKSk7CiAgICAgICAgICAgICAgICAgTkVYVF9PUENP
REUob3BfZXEpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3Rl
cihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSwgYWRkVG9HcmFwaChDb21wYXJlRXEs
IG9wMSwgb3AyKSk7CisgICAgICAgICAgICBzZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3Bl
cmFuZCwgYWRkVG9HcmFwaChDb21wYXJlRXEsIG9wMSwgb3AyKSk7CiAgICAgICAgICAgICBORVhU
X09QQ09ERShvcF9lcSk7CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIG9wX2VxX251bGw6IHsK
LSAgICAgICAgICAgIE5vZGUqIHZhbHVlID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5z
dHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSk7Ci0gICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVy
KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpLCBhZGRUb0dyYXBoKENvbXBhcmVFcUNv
bnN0YW50LCB2YWx1ZSwgY29uc3RhbnROdWxsKCkpKTsKKyAgICAgICAgICAgIE5vZGUqIHZhbHVl
ID0gZ2V0KGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOworICAgICAgICAgICAgc2V0
KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIGFkZFRvR3JhcGgoQ29tcGFyZUVxQ29u
c3RhbnQsIHZhbHVlLCBjb25zdGFudE51bGwoKSkpOwogICAgICAgICAgICAgTkVYVF9PUENPREUo
b3BfZXFfbnVsbCk7CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIG9wX3N0cmljdGVxOiB7Ci0g
ICAgICAgICAgICBOb2RlKiBvcDEgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVj
dGlvblsyXS51Lm9wZXJhbmQpKTsKLSAgICAgICAgICAgIE5vZGUqIG9wMiA9IGdldChWaXJ0dWFs
UmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCkpOworICAgICAgICAgICAg
Tm9kZSogb3AxID0gZ2V0KGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOworICAgICAg
ICAgICAgTm9kZSogb3AyID0gZ2V0KGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpOwog
ICAgICAgICAgICAgaWYgKGNhbkZvbGQob3AxKSAmJiBjYW5Gb2xkKG9wMikpIHsKICAgICAgICAg
ICAgICAgICBKU1ZhbHVlIGEgPSB2YWx1ZU9mSlNDb25zdGFudChvcDEpOwogICAgICAgICAgICAg
ICAgIEpTVmFsdWUgYiA9IHZhbHVlT2ZKU0NvbnN0YW50KG9wMik7Ci0gICAgICAgICAgICAgICAg
c2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSwKKyAg
ICAgICAgICAgICAgICBzZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwKICAgICAg
ICAgICAgICAgICAgICAgZ2V0SlNDb25zdGFudEZvclZhbHVlKGpzQm9vbGVhbihKU1ZhbHVlOjpz
dHJpY3RFcXVhbChtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSwgYSwg
YikpKSk7CiAgICAgICAgICAgICAgICAgTkVYVF9PUENPREUob3Bfc3RyaWN0ZXEpOwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgaWYgKGlzQ29uc3RhbnRGb3JDb21wYXJlU3RyaWN0RXEob3Ax
KSkKLSAgICAgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlv
blsxXS51Lm9wZXJhbmQpLCBhZGRUb0dyYXBoKENvbXBhcmVTdHJpY3RFcUNvbnN0YW50LCBvcDIs
IG9wMSkpOworICAgICAgICAgICAgICAgIHNldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVy
YW5kLCBhZGRUb0dyYXBoKENvbXBhcmVTdHJpY3RFcUNvbnN0YW50LCBvcDIsIG9wMSkpOwogICAg
ICAgICAgICAgZWxzZSBpZiAoaXNDb25zdGFudEZvckNvbXBhcmVTdHJpY3RFcShvcDIpKQotICAg
ICAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUu
b3BlcmFuZCksIGFkZFRvR3JhcGgoQ29tcGFyZVN0cmljdEVxQ29uc3RhbnQsIG9wMSwgb3AyKSk7
CisgICAgICAgICAgICAgICAgc2V0KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIGFk
ZFRvR3JhcGgoQ29tcGFyZVN0cmljdEVxQ29uc3RhbnQsIG9wMSwgb3AyKSk7CiAgICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1
Y3Rpb25bMV0udS5vcGVyYW5kKSwgYWRkVG9HcmFwaChDb21wYXJlU3RyaWN0RXEsIG9wMSwgb3Ay
KSk7CisgICAgICAgICAgICAgICAgc2V0KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQs
IGFkZFRvR3JhcGgoQ29tcGFyZVN0cmljdEVxLCBvcDEsIG9wMikpOwogICAgICAgICAgICAgTkVY
VF9PUENPREUob3Bfc3RyaWN0ZXEpOwogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBvcF9uZXE6
IHsKLSAgICAgICAgICAgIE5vZGUqIG9wMSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudElu
c3RydWN0aW9uWzJdLnUub3BlcmFuZCkpOwotICAgICAgICAgICAgTm9kZSogb3AyID0gZ2V0KFZp
cnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKSk7CisgICAgICAg
ICAgICBOb2RlKiBvcDEgPSBnZXQoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCk7Cisg
ICAgICAgICAgICBOb2RlKiBvcDIgPSBnZXQoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFu
ZCk7CiAgICAgICAgICAgICBpZiAoY2FuRm9sZChvcDEpICYmIGNhbkZvbGQob3AyKSkgewogICAg
ICAgICAgICAgICAgIEpTVmFsdWUgYSA9IHZhbHVlT2ZKU0NvbnN0YW50KG9wMSk7CiAgICAgICAg
ICAgICAgICAgSlNWYWx1ZSBiID0gdmFsdWVPZkpTQ29uc3RhbnQob3AyKTsKLSAgICAgICAgICAg
ICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQp
LAorICAgICAgICAgICAgICAgIHNldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLAog
ICAgICAgICAgICAgICAgICAgICBnZXRKU0NvbnN0YW50Rm9yVmFsdWUoanNCb29sZWFuKCFKU1Zh
bHVlOjplcXVhbChtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSwgYSwg
YikpKSk7CiAgICAgICAgICAgICAgICAgTkVYVF9PUENPREUob3BfbmVxKTsKICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFd
LnUub3BlcmFuZCksIGFkZFRvR3JhcGgoTG9naWNhbE5vdCwgYWRkVG9HcmFwaChDb21wYXJlRXEs
IG9wMSwgb3AyKSkpOworICAgICAgICAgICAgc2V0KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9w
ZXJhbmQsIGFkZFRvR3JhcGgoTG9naWNhbE5vdCwgYWRkVG9HcmFwaChDb21wYXJlRXEsIG9wMSwg
b3AyKSkpOwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfbmVxKTsKICAgICAgICAgfQogCiAg
ICAgICAgIGNhc2Ugb3BfbmVxX251bGw6IHsKLSAgICAgICAgICAgIE5vZGUqIHZhbHVlID0gZ2V0
KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSk7Ci0gICAg
ICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJh
bmQpLCBhZGRUb0dyYXBoKExvZ2ljYWxOb3QsIGFkZFRvR3JhcGgoQ29tcGFyZUVxQ29uc3RhbnQs
IHZhbHVlLCBjb25zdGFudE51bGwoKSkpKTsKKyAgICAgICAgICAgIE5vZGUqIHZhbHVlID0gZ2V0
KGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOworICAgICAgICAgICAgc2V0KGN1cnJl
bnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIGFkZFRvR3JhcGgoTG9naWNhbE5vdCwgYWRkVG9H
cmFwaChDb21wYXJlRXFDb25zdGFudCwgdmFsdWUsIGNvbnN0YW50TnVsbCgpKSkpOwogICAgICAg
ICAgICAgTkVYVF9PUENPREUob3BfbmVxX251bGwpOwogICAgICAgICB9CiAKICAgICAgICAgY2Fz
ZSBvcF9uc3RyaWN0ZXE6IHsKLSAgICAgICAgICAgIE5vZGUqIG9wMSA9IGdldChWaXJ0dWFsUmVn
aXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCkpOwotICAgICAgICAgICAgTm9k
ZSogb3AyID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVy
YW5kKSk7CisgICAgICAgICAgICBOb2RlKiBvcDEgPSBnZXQoY3VycmVudEluc3RydWN0aW9uWzJd
LnUub3BlcmFuZCk7CisgICAgICAgICAgICBOb2RlKiBvcDIgPSBnZXQoY3VycmVudEluc3RydWN0
aW9uWzNdLnUub3BlcmFuZCk7CiAgICAgICAgICAgICBpZiAoY2FuRm9sZChvcDEpICYmIGNhbkZv
bGQob3AyKSkgewogICAgICAgICAgICAgICAgIEpTVmFsdWUgYSA9IHZhbHVlT2ZKU0NvbnN0YW50
KG9wMSk7CiAgICAgICAgICAgICAgICAgSlNWYWx1ZSBiID0gdmFsdWVPZkpTQ29uc3RhbnQob3Ay
KTsKLSAgICAgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlv
blsxXS51Lm9wZXJhbmQpLAorICAgICAgICAgICAgICAgIHNldChjdXJyZW50SW5zdHJ1Y3Rpb25b
MV0udS5vcGVyYW5kLAogICAgICAgICAgICAgICAgICAgICBnZXRKU0NvbnN0YW50Rm9yVmFsdWUo
anNCb29sZWFuKCFKU1ZhbHVlOjpzdHJpY3RFcXVhbChtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0
KCktPmdsb2JhbEV4ZWMoKSwgYSwgYikpKSk7CiAgICAgICAgICAgICAgICAgTkVYVF9PUENPREUo
b3BfbnN0cmljdGVxKTsKICAgICAgICAgICAgIH0KQEAgLTI0MDQsNyArMjQwMSw3IEBAIGJvb2wg
Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICAg
ICAgaW52ZXJ0ZWRSZXN1bHQgPSBhZGRUb0dyYXBoKENvbXBhcmVTdHJpY3RFcUNvbnN0YW50LCBv
cDEsIG9wMik7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgaW52ZXJ0ZWRSZXN1
bHQgPSBhZGRUb0dyYXBoKENvbXBhcmVTdHJpY3RFcSwgb3AxLCBvcDIpOwotICAgICAgICAgICAg
c2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSwgYWRk
VG9HcmFwaChMb2dpY2FsTm90LCBpbnZlcnRlZFJlc3VsdCkpOworICAgICAgICAgICAgc2V0KGN1
cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIGFkZFRvR3JhcGgoTG9naWNhbE5vdCwgaW52
ZXJ0ZWRSZXN1bHQpKTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX25zdHJpY3RlcSk7CiAg
ICAgICAgIH0KIApAQCAtMjQxMywyMiArMjQxMCwyMiBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpw
YXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICBjYXNlIG9wX2dldF9ieV92YWw6IHsK
ICAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBnZXRQcmVkaWN0aW9uKCk7
CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQoVmlydHVhbFJlZ2lz
dGVyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKTsKKyAgICAgICAgICAgIE5vZGUq
IGJhc2UgPSBnZXQoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCk7CiAgICAgICAgICAg
ICBBcnJheU1vZGUgYXJyYXlNb2RlID0gZ2V0QXJyYXlNb2RlQ29uc2lkZXJpbmdTbG93UGF0aChj
dXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5hcnJheVByb2ZpbGUsIEFycmF5OjpSZWFkKTsKLSAgICAg
ICAgICAgIE5vZGUqIHByb3BlcnR5ID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1
Y3Rpb25bM10udS5vcGVyYW5kKSk7CisgICAgICAgICAgICBOb2RlKiBwcm9wZXJ0eSA9IGdldChj
dXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKTsKICAgICAgICAgICAgIE5vZGUqIGdldEJ5
VmFsID0gYWRkVG9HcmFwaChHZXRCeVZhbCwgT3BJbmZvKGFycmF5TW9kZS5hc1dvcmQoKSksIE9w
SW5mbyhwcmVkaWN0aW9uKSwgYmFzZSwgcHJvcGVydHkpOwotICAgICAgICAgICAgc2V0KFZpcnR1
YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSwgZ2V0QnlWYWwpOwor
ICAgICAgICAgICAgc2V0KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIGdldEJ5VmFs
KTsKIAogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfZ2V0X2J5X3ZhbCk7CiAgICAgICAgIH0K
IAogICAgICAgICBjYXNlIG9wX3B1dF9ieV92YWw6IHsKLSAgICAgICAgICAgIE5vZGUqIGJhc2Ug
PSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpKTsK
KyAgICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3Bl
cmFuZCk7CiAKICAgICAgICAgICAgIEFycmF5TW9kZSBhcnJheU1vZGUgPSBnZXRBcnJheU1vZGVD
b25zaWRlcmluZ1Nsb3dQYXRoKGN1cnJlbnRJbnN0cnVjdGlvbls0XS51LmFycmF5UHJvZmlsZSwg
QXJyYXk6OldyaXRlKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgTm9kZSogcHJvcGVydHkg
PSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKTsK
LSAgICAgICAgICAgIE5vZGUqIHZhbHVlID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5z
dHJ1Y3Rpb25bM10udS5vcGVyYW5kKSk7CisgICAgICAgICAgICBOb2RlKiBwcm9wZXJ0eSA9IGdl
dChjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKKyAgICAgICAgICAgIE5vZGUqIHZh
bHVlID0gZ2V0KGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpOwogICAgICAgICAgICAg
CiAgICAgICAgICAgICBhZGRWYXJBcmdDaGlsZChiYXNlKTsKICAgICAgICAgICAgIGFkZFZhckFy
Z0NoaWxkKHByb3BlcnR5KTsKQEAgLTI0NDQsNyArMjQ0MSw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJz
ZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgIGNhc2Ugb3BfZ2V0X2FycmF5
X2xlbmd0aDogewogICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiA9IGdldFBy
ZWRpY3Rpb24oKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgTm9kZSogYmFzZSA9IGdldChW
aXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCkpOworICAgICAg
ICAgICAgTm9kZSogYmFzZSA9IGdldChjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsK
ICAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBtX2lubGluZVN0YWNrVG9w
LT5tX2lkZW50aWZpZXJSZW1hcFtjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kXTsKICAg
ICAgICAgICAgIAogICAgICAgICAgICAgU3RyaW5nSW1wbCogdWlkID0gbV9ncmFwaC5pZGVudGlm
aWVycygpW2lkZW50aWZpZXJOdW1iZXJdOwpAQCAtMjQ2Miw4ICsyNDU5LDggQEAgYm9vbCBCeXRl
Q29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgY2FzZSBvcF9w
dXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3Ry
YW5zaXRpb25fZGlyZWN0X291dF9vZl9saW5lOgogICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90
cmFuc2l0aW9uX25vcm1hbF9vdXRfb2ZfbGluZTogewotICAgICAgICAgICAgTm9kZSogdmFsdWUg
PSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpKTsK
LSAgICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0
cnVjdGlvblsxXS51Lm9wZXJhbmQpKTsKKyAgICAgICAgICAgIE5vZGUqIHZhbHVlID0gZ2V0KGN1
cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpOworICAgICAgICAgICAgTm9kZSogYmFzZSA9
IGdldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKICAgICAgICAgICAgIHVuc2ln
bmVkIGlkZW50aWZpZXJOdW1iZXIgPSBtX2lubGluZVN0YWNrVG9wLT5tX2lkZW50aWZpZXJSZW1h
cFtjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kXTsKICAgICAgICAgICAgIGJvb2wgZGly
ZWN0ID0gY3VycmVudEluc3RydWN0aW9uWzhdLnUub3BlcmFuZDsKIApAQCAtMjU2OSw3ICsyNTY2
LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAg
ICAgICAgfQogCiAgICAgICAgIGNhc2Ugb3BfaW5pdF9nbG9iYWxfY29uc3Q6IHsKLSAgICAgICAg
ICAgIE5vZGUqIHZhbHVlID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25b
Ml0udS5vcGVyYW5kKSk7CisgICAgICAgICAgICBOb2RlKiB2YWx1ZSA9IGdldChjdXJyZW50SW5z
dHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKICAgICAgICAgICAgIGFkZFRvR3JhcGgoCiAgICAgICAg
ICAgICAgICAgUHV0R2xvYmFsVmFyLAogICAgICAgICAgICAgICAgIE9wSW5mbyhtX2lubGluZVN0
YWNrVG9wLT5tX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCktPmFzc2VydFJlZ2lzdGVySXNJblRo
aXNPYmplY3QoY3VycmVudEluc3RydWN0aW9uWzFdLnUucmVnaXN0ZXJQb2ludGVyKSksCkBAIC0y
NTg3LDcgKzI1ODQsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVk
IGxpbWl0KQogCiAgICAgICAgIGNhc2Ugb3BfanRydWU6IHsKICAgICAgICAgICAgIHVuc2lnbmVk
IHJlbGF0aXZlT2Zmc2V0ID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKLSAgICAg
ICAgICAgIE5vZGUqIGNvbmRpdGlvbiA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3Ry
dWN0aW9uWzFdLnUub3BlcmFuZCkpOworICAgICAgICAgICAgTm9kZSogY29uZGl0aW9uID0gZ2V0
KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwogICAgICAgICAgICAgaWYgKGNhbkZv
bGQoY29uZGl0aW9uKSkgewogICAgICAgICAgICAgICAgIFRyaVN0YXRlIHN0YXRlID0gdmFsdWVP
ZkpTQ29uc3RhbnQoY29uZGl0aW9uKS5wdXJlVG9Cb29sZWFuKCk7CiAgICAgICAgICAgICAgICAg
aWYgKHN0YXRlID09IFRydWVUcmlTdGF0ZSkgewpAQCAtMjYwNiw3ICsyNjAzLDcgQEAgYm9vbCBC
eXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKIAogICAgICAgICBjYXNl
IG9wX2pmYWxzZTogewogICAgICAgICAgICAgdW5zaWduZWQgcmVsYXRpdmVPZmZzZXQgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwotICAgICAgICAgICAgTm9kZSogY29uZGl0aW9u
ID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSk7
CisgICAgICAgICAgICBOb2RlKiBjb25kaXRpb24gPSBnZXQoY3VycmVudEluc3RydWN0aW9uWzFd
LnUub3BlcmFuZCk7CiAgICAgICAgICAgICBpZiAoY2FuRm9sZChjb25kaXRpb24pKSB7CiAgICAg
ICAgICAgICAgICAgVHJpU3RhdGUgc3RhdGUgPSB2YWx1ZU9mSlNDb25zdGFudChjb25kaXRpb24p
LnB1cmVUb0Jvb2xlYW4oKTsKICAgICAgICAgICAgICAgICBpZiAoc3RhdGUgPT0gRmFsc2VUcmlT
dGF0ZSkgewpAQCAtMjYyNSw3ICsyNjIyLDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VC
bG9jayh1bnNpZ25lZCBsaW1pdCkKIAogICAgICAgICBjYXNlIG9wX2plcV9udWxsOiB7CiAgICAg
ICAgICAgICB1bnNpZ25lZCByZWxhdGl2ZU9mZnNldCA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51
Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBOb2RlKiB2YWx1ZSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIo
Y3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCkpOworICAgICAgICAgICAgTm9kZSogdmFs
dWUgPSBnZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CiAgICAgICAgICAgICBO
b2RlKiBjb25kaXRpb24gPSBhZGRUb0dyYXBoKENvbXBhcmVFcUNvbnN0YW50LCB2YWx1ZSwgY29u
c3RhbnROdWxsKCkpOwogICAgICAgICAgICAgYWRkVG9HcmFwaChCcmFuY2gsIE9wSW5mbyhtX2N1
cnJlbnRJbmRleCArIHJlbGF0aXZlT2Zmc2V0KSwgT3BJbmZvKG1fY3VycmVudEluZGV4ICsgT1BD
T0RFX0xFTkdUSChvcF9qZXFfbnVsbCkpLCBjb25kaXRpb24pOwogICAgICAgICAgICAgTEFTVF9P
UENPREUob3BfamVxX251bGwpOwpAQCAtMjYzMyw3ICsyNjMwLDcgQEAgYm9vbCBCeXRlQ29kZVBh
cnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKIAogICAgICAgICBjYXNlIG9wX2puZXFf
bnVsbDogewogICAgICAgICAgICAgdW5zaWduZWQgcmVsYXRpdmVPZmZzZXQgPSBjdXJyZW50SW5z
dHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwotICAgICAgICAgICAgTm9kZSogdmFsdWUgPSBnZXQoVmly
dHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpKTsKKyAgICAgICAg
ICAgIE5vZGUqIHZhbHVlID0gZ2V0KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwog
ICAgICAgICAgICAgTm9kZSogY29uZGl0aW9uID0gYWRkVG9HcmFwaChDb21wYXJlRXFDb25zdGFu
dCwgdmFsdWUsIGNvbnN0YW50TnVsbCgpKTsKICAgICAgICAgICAgIGFkZFRvR3JhcGgoQnJhbmNo
LCBPcEluZm8obV9jdXJyZW50SW5kZXggKyBPUENPREVfTEVOR1RIKG9wX2puZXFfbnVsbCkpLCBP
cEluZm8obV9jdXJyZW50SW5kZXggKyByZWxhdGl2ZU9mZnNldCksIGNvbmRpdGlvbik7CiAgICAg
ICAgICAgICBMQVNUX09QQ09ERShvcF9qbmVxX251bGwpOwpAQCAtMjY0MSw4ICsyNjM4LDggQEAg
Ym9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKIAogICAgICAg
ICBjYXNlIG9wX2psZXNzOiB7CiAgICAgICAgICAgICB1bnNpZ25lZCByZWxhdGl2ZU9mZnNldCA9
IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBOb2RlKiBvcDEg
PSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpKTsK
LSAgICAgICAgICAgIE5vZGUqIG9wMiA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3Ry
dWN0aW9uWzJdLnUub3BlcmFuZCkpOworICAgICAgICAgICAgTm9kZSogb3AxID0gZ2V0KGN1cnJl
bnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOworICAgICAgICAgICAgTm9kZSogb3AyID0gZ2V0
KGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOwogICAgICAgICAgICAgaWYgKGNhbkZv
bGQob3AxKSAmJiBjYW5Gb2xkKG9wMikpIHsKICAgICAgICAgICAgICAgICBKU1ZhbHVlIGFWYWx1
ZSA9IHZhbHVlT2ZKU0NvbnN0YW50KG9wMSk7CiAgICAgICAgICAgICAgICAgSlNWYWx1ZSBiVmFs
dWUgPSB2YWx1ZU9mSlNDb25zdGFudChvcDIpOwpAQCAtMjY2Nyw4ICsyNjY0LDggQEAgYm9vbCBC
eXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKIAogICAgICAgICBjYXNl
IG9wX2psZXNzZXE6IHsKICAgICAgICAgICAgIHVuc2lnbmVkIHJlbGF0aXZlT2Zmc2V0ID0gY3Vy
cmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKLSAgICAgICAgICAgIE5vZGUqIG9wMSA9IGdl
dChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCkpOwotICAg
ICAgICAgICAgTm9kZSogb3AyID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rp
b25bMl0udS5vcGVyYW5kKSk7CisgICAgICAgICAgICBOb2RlKiBvcDEgPSBnZXQoY3VycmVudElu
c3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CisgICAgICAgICAgICBOb2RlKiBvcDIgPSBnZXQoY3Vy
cmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCk7CiAgICAgICAgICAgICBpZiAoY2FuRm9sZChv
cDEpICYmIGNhbkZvbGQob3AyKSkgewogICAgICAgICAgICAgICAgIEpTVmFsdWUgYVZhbHVlID0g
dmFsdWVPZkpTQ29uc3RhbnQob3AxKTsKICAgICAgICAgICAgICAgICBKU1ZhbHVlIGJWYWx1ZSA9
IHZhbHVlT2ZKU0NvbnN0YW50KG9wMik7CkBAIC0yNjkzLDggKzI2OTAsOCBAQCBib29sIEJ5dGVD
b2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogCiAgICAgICAgIGNhc2Ugb3Bf
amdyZWF0ZXI6IHsKICAgICAgICAgICAgIHVuc2lnbmVkIHJlbGF0aXZlT2Zmc2V0ID0gY3VycmVu
dEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKLSAgICAgICAgICAgIE5vZGUqIG9wMSA9IGdldChW
aXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCkpOwotICAgICAg
ICAgICAgTm9kZSogb3AyID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25b
Ml0udS5vcGVyYW5kKSk7CisgICAgICAgICAgICBOb2RlKiBvcDEgPSBnZXQoY3VycmVudEluc3Ry
dWN0aW9uWzFdLnUub3BlcmFuZCk7CisgICAgICAgICAgICBOb2RlKiBvcDIgPSBnZXQoY3VycmVu
dEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCk7CiAgICAgICAgICAgICBpZiAoY2FuRm9sZChvcDEp
ICYmIGNhbkZvbGQob3AyKSkgewogICAgICAgICAgICAgICAgIEpTVmFsdWUgYVZhbHVlID0gdmFs
dWVPZkpTQ29uc3RhbnQob3AxKTsKICAgICAgICAgICAgICAgICBKU1ZhbHVlIGJWYWx1ZSA9IHZh
bHVlT2ZKU0NvbnN0YW50KG9wMik7CkBAIC0yNzE5LDggKzI3MTYsOCBAQCBib29sIEJ5dGVDb2Rl
UGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogCiAgICAgICAgIGNhc2Ugb3Bfamdy
ZWF0ZXJlcTogewogICAgICAgICAgICAgdW5zaWduZWQgcmVsYXRpdmVPZmZzZXQgPSBjdXJyZW50
SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOwotICAgICAgICAgICAgTm9kZSogb3AxID0gZ2V0KFZp
cnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSk7Ci0gICAgICAg
ICAgICBOb2RlKiBvcDIgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsy
XS51Lm9wZXJhbmQpKTsKKyAgICAgICAgICAgIE5vZGUqIG9wMSA9IGdldChjdXJyZW50SW5zdHJ1
Y3Rpb25bMV0udS5vcGVyYW5kKTsKKyAgICAgICAgICAgIE5vZGUqIG9wMiA9IGdldChjdXJyZW50
SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKICAgICAgICAgICAgIGlmIChjYW5Gb2xkKG9wMSkg
JiYgY2FuRm9sZChvcDIpKSB7CiAgICAgICAgICAgICAgICAgSlNWYWx1ZSBhVmFsdWUgPSB2YWx1
ZU9mSlNDb25zdGFudChvcDEpOwogICAgICAgICAgICAgICAgIEpTVmFsdWUgYlZhbHVlID0gdmFs
dWVPZkpTQ29uc3RhbnQob3AyKTsKQEAgLTI3NDUsOCArMjc0Miw4IEBAIGJvb2wgQnl0ZUNvZGVQ
YXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAKICAgICAgICAgY2FzZSBvcF9qbmxl
c3M6IHsKICAgICAgICAgICAgIHVuc2lnbmVkIHJlbGF0aXZlT2Zmc2V0ID0gY3VycmVudEluc3Ry
dWN0aW9uWzNdLnUub3BlcmFuZDsKLSAgICAgICAgICAgIE5vZGUqIG9wMSA9IGdldChWaXJ0dWFs
UmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCkpOwotICAgICAgICAgICAg
Tm9kZSogb3AyID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5v
cGVyYW5kKSk7CisgICAgICAgICAgICBOb2RlKiBvcDEgPSBnZXQoY3VycmVudEluc3RydWN0aW9u
WzFdLnUub3BlcmFuZCk7CisgICAgICAgICAgICBOb2RlKiBvcDIgPSBnZXQoY3VycmVudEluc3Ry
dWN0aW9uWzJdLnUub3BlcmFuZCk7CiAgICAgICAgICAgICBpZiAoY2FuRm9sZChvcDEpICYmIGNh
bkZvbGQob3AyKSkgewogICAgICAgICAgICAgICAgIEpTVmFsdWUgYVZhbHVlID0gdmFsdWVPZkpT
Q29uc3RhbnQob3AxKTsKICAgICAgICAgICAgICAgICBKU1ZhbHVlIGJWYWx1ZSA9IHZhbHVlT2ZK
U0NvbnN0YW50KG9wMik7CkBAIC0yNzcxLDggKzI3NjgsOCBAQCBib29sIEJ5dGVDb2RlUGFyc2Vy
OjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogCiAgICAgICAgIGNhc2Ugb3Bfam5sZXNzZXE6
IHsKICAgICAgICAgICAgIHVuc2lnbmVkIHJlbGF0aXZlT2Zmc2V0ID0gY3VycmVudEluc3RydWN0
aW9uWzNdLnUub3BlcmFuZDsKLSAgICAgICAgICAgIE5vZGUqIG9wMSA9IGdldChWaXJ0dWFsUmVn
aXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCkpOwotICAgICAgICAgICAgTm9k
ZSogb3AyID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVy
YW5kKSk7CisgICAgICAgICAgICBOb2RlKiBvcDEgPSBnZXQoY3VycmVudEluc3RydWN0aW9uWzFd
LnUub3BlcmFuZCk7CisgICAgICAgICAgICBOb2RlKiBvcDIgPSBnZXQoY3VycmVudEluc3RydWN0
aW9uWzJdLnUub3BlcmFuZCk7CiAgICAgICAgICAgICBpZiAoY2FuRm9sZChvcDEpICYmIGNhbkZv
bGQob3AyKSkgewogICAgICAgICAgICAgICAgIEpTVmFsdWUgYVZhbHVlID0gdmFsdWVPZkpTQ29u
c3RhbnQob3AxKTsKICAgICAgICAgICAgICAgICBKU1ZhbHVlIGJWYWx1ZSA9IHZhbHVlT2ZKU0Nv
bnN0YW50KG9wMik7CkBAIC0yNzk3LDggKzI3OTQsOCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpw
YXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogCiAgICAgICAgIGNhc2Ugb3Bfam5ncmVhdGVyOiB7
CiAgICAgICAgICAgICB1bnNpZ25lZCByZWxhdGl2ZU9mZnNldCA9IGN1cnJlbnRJbnN0cnVjdGlv
blszXS51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBOb2RlKiBvcDEgPSBnZXQoVmlydHVhbFJlZ2lz
dGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpKTsKLSAgICAgICAgICAgIE5vZGUq
IG9wMiA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFu
ZCkpOworICAgICAgICAgICAgTm9kZSogb3AxID0gZ2V0KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51
Lm9wZXJhbmQpOworICAgICAgICAgICAgTm9kZSogb3AyID0gZ2V0KGN1cnJlbnRJbnN0cnVjdGlv
blsyXS51Lm9wZXJhbmQpOwogICAgICAgICAgICAgaWYgKGNhbkZvbGQob3AxKSAmJiBjYW5Gb2xk
KG9wMikpIHsKICAgICAgICAgICAgICAgICBKU1ZhbHVlIGFWYWx1ZSA9IHZhbHVlT2ZKU0NvbnN0
YW50KG9wMSk7CiAgICAgICAgICAgICAgICAgSlNWYWx1ZSBiVmFsdWUgPSB2YWx1ZU9mSlNDb25z
dGFudChvcDIpOwpAQCAtMjgyMyw4ICsyODIwLDggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFy
c2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKIAogICAgICAgICBjYXNlIG9wX2puZ3JlYXRlcmVxOiB7
CiAgICAgICAgICAgICB1bnNpZ25lZCByZWxhdGl2ZU9mZnNldCA9IGN1cnJlbnRJbnN0cnVjdGlv
blszXS51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBOb2RlKiBvcDEgPSBnZXQoVmlydHVhbFJlZ2lz
dGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpKTsKLSAgICAgICAgICAgIE5vZGUq
IG9wMiA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFu
ZCkpOworICAgICAgICAgICAgTm9kZSogb3AxID0gZ2V0KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51
Lm9wZXJhbmQpOworICAgICAgICAgICAgTm9kZSogb3AyID0gZ2V0KGN1cnJlbnRJbnN0cnVjdGlv
blsyXS51Lm9wZXJhbmQpOwogICAgICAgICAgICAgaWYgKGNhbkZvbGQob3AxKSAmJiBjYW5Gb2xk
KG9wMikpIHsKICAgICAgICAgICAgICAgICBKU1ZhbHVlIGFWYWx1ZSA9IHZhbHVlT2ZKU0NvbnN0
YW50KG9wMSk7CiAgICAgICAgICAgICAgICAgSlNWYWx1ZSBiVmFsdWUgPSB2YWx1ZU9mSlNDb25z
dGFudChvcDIpOwpAQCAtMjg2Miw3ICsyODU5LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFy
c2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgICAgICBkYXRhLmNhc2VzLmFwcGVu
ZChTd2l0Y2hDYXNlOjp3aXRoQnl0ZWNvZGVJbmRleChqc051bWJlcihzdGF0aWNfY2FzdDxpbnQz
Ml90Pih0YWJsZS5taW4gKyBpKSksIHRhcmdldCkpOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgbV9ncmFwaC5tX3N3aXRjaERhdGEuYXBwZW5kKGRhdGEpOwotICAgICAgICAgICAgYWRkVG9H
cmFwaChTd2l0Y2gsIE9wSW5mbygmbV9ncmFwaC5tX3N3aXRjaERhdGEubGFzdCgpKSwgZ2V0KFZp
cnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKSkpOworICAgICAg
ICAgICAgYWRkVG9HcmFwaChTd2l0Y2gsIE9wSW5mbygmbV9ncmFwaC5tX3N3aXRjaERhdGEubGFz
dCgpKSwgZ2V0KGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpKTsKICAgICAgICAgICAg
IExBU1RfT1BDT0RFKG9wX3N3aXRjaF9pbW0pOwogICAgICAgICB9CiAgICAgICAgICAgICAKQEAg
LTI4ODIsNyArMjg3OSw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWdu
ZWQgbGltaXQpCiAgICAgICAgICAgICAgICAgICAgIFN3aXRjaENhc2U6OndpdGhCeXRlY29kZUlu
ZGV4KExhenlKU1ZhbHVlOjpzaW5nbGVDaGFyYWN0ZXJTdHJpbmcodGFibGUubWluICsgaSksIHRh
cmdldCkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgbV9ncmFwaC5tX3N3aXRjaERhdGEu
YXBwZW5kKGRhdGEpOwotICAgICAgICAgICAgYWRkVG9HcmFwaChTd2l0Y2gsIE9wSW5mbygmbV9n
cmFwaC5tX3N3aXRjaERhdGEubGFzdCgpKSwgZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5z
dHJ1Y3Rpb25bM10udS5vcGVyYW5kKSkpOworICAgICAgICAgICAgYWRkVG9HcmFwaChTd2l0Y2gs
IE9wSW5mbygmbV9ncmFwaC5tX3N3aXRjaERhdGEubGFzdCgpKSwgZ2V0KGN1cnJlbnRJbnN0cnVj
dGlvblszXS51Lm9wZXJhbmQpKTsKICAgICAgICAgICAgIExBU1RfT1BDT0RFKG9wX3N3aXRjaF9j
aGFyKTsKICAgICAgICAgfQogCkBAIC0yOTAyLDE1ICsyODk5LDE1IEBAIGJvb2wgQnl0ZUNvZGVQ
YXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICAgICAgICAgIFN3
aXRjaENhc2U6OndpdGhCeXRlY29kZUluZGV4KExhenlKU1ZhbHVlOjprbm93blN0cmluZ0ltcGwo
aXRlci0+a2V5LmdldCgpKSwgdGFyZ2V0KSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBt
X2dyYXBoLm1fc3dpdGNoRGF0YS5hcHBlbmQoZGF0YSk7Ci0gICAgICAgICAgICBhZGRUb0dyYXBo
KFN3aXRjaCwgT3BJbmZvKCZtX2dyYXBoLm1fc3dpdGNoRGF0YS5sYXN0KCkpLCBnZXQoVmlydHVh
bFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpKSk7CisgICAgICAgICAg
ICBhZGRUb0dyYXBoKFN3aXRjaCwgT3BJbmZvKCZtX2dyYXBoLm1fc3dpdGNoRGF0YS5sYXN0KCkp
LCBnZXQoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCkpOwogICAgICAgICAgICAgTEFT
VF9PUENPREUob3Bfc3dpdGNoX3N0cmluZyk7CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIG9w
X3JldDoKICAgICAgICAgICAgIGZsdXNoQXJndW1lbnRzQW5kQ2FwdHVyZWRWYXJpYWJsZXMoKTsK
ICAgICAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUoKSkgewotICAgICAgICAgICAgICAgIEFT
U0VSVChtX2lubGluZVN0YWNrVG9wLT5tX3JldHVyblZhbHVlLmlzVmFsaWQoKSk7Ci0gICAgICAg
ICAgICAgICAgc2V0RGlyZWN0KG1faW5saW5lU3RhY2tUb3AtPm1fcmV0dXJuVmFsdWUsIGdldChW
aXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCkpKTsKKyAgICAg
ICAgICAgICAgICBBU1NFUlQobV9pbmxpbmVTdGFja1RvcC0+bV9yZXR1cm5WYWx1ZSAhPSBJbnZh
bGlkVmlydHVhbFJlZ2lzdGVyKTsKKyAgICAgICAgICAgICAgICBzZXREaXJlY3QobV9pbmxpbmVT
dGFja1RvcC0+bV9yZXR1cm5WYWx1ZSwgZ2V0KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJh
bmQpKTsKICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2RpZFJldHVybiA9IHRy
dWU7CiAgICAgICAgICAgICAgICAgaWYgKG1faW5saW5lU3RhY2tUb3AtPm1fdW5saW5rZWRCbG9j
a3MuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIElmIHdlJ3JlIHJldHVybmlu
ZyBmcm9tIHRoZSBmaXJzdCBibG9jaywgdGhlbiB3ZSdyZSBkb25lIHBhcnNpbmcuCkBAIC0yOTMx
LDE3ICsyOTI4LDE3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQg
bGltaXQpCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIExBU1RfT1BDT0RFKG9w
X3JldCk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBhZGRUb0dyYXBoKFJldHVybiwgZ2V0
KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSkpOworICAg
ICAgICAgICAgYWRkVG9HcmFwaChSZXR1cm4sIGdldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kKSk7CiAgICAgICAgICAgICBMQVNUX09QQ09ERShvcF9yZXQpOwogICAgICAgICAgICAg
CiAgICAgICAgIGNhc2Ugb3BfZW5kOgogICAgICAgICAgICAgZmx1c2hBcmd1bWVudHNBbmRDYXB0
dXJlZFZhcmlhYmxlcygpOwogICAgICAgICAgICAgQVNTRVJUKCFpbmxpbmVDYWxsRnJhbWUoKSk7
Ci0gICAgICAgICAgICBhZGRUb0dyYXBoKFJldHVybiwgZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJy
ZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSkpOworICAgICAgICAgICAgYWRkVG9HcmFwaChS
ZXR1cm4sIGdldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSk7CiAgICAgICAgICAg
ICBMQVNUX09QQ09ERShvcF9lbmQpOwogCiAgICAgICAgIGNhc2Ugb3BfdGhyb3c6Ci0gICAgICAg
ICAgICBhZGRUb0dyYXBoKFRocm93LCBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVj
dGlvblsxXS51Lm9wZXJhbmQpKSk7CisgICAgICAgICAgICBhZGRUb0dyYXBoKFRocm93LCBnZXQo
Y3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCkpOwogICAgICAgICAgICAgZmx1c2hBbGxB
cmd1bWVudHNBbmRDYXB0dXJlZFZhcmlhYmxlc0luSW5saW5lU3RhY2soKTsKICAgICAgICAgICAg
IGFkZFRvR3JhcGgoVW5yZWFjaGFibGUpOwogICAgICAgICAgICAgTEFTVF9PUENPREUob3BfdGhy
b3cpOwpAQCAtMjk2Miw3ICsyOTU5LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9j
ayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIAogICAgICAgICBjYXNlIG9wX2NhbGxfdmFy
YXJnczogewogICAgICAgICAgICAgQVNTRVJUKGlubGluZUNhbGxGcmFtZSgpKTsKLSAgICAgICAg
ICAgIEFTU0VSVChjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kID09IG1faW5saW5lU3Rh
Y2tUb3AtPm1fY29kZUJsb2NrLT5hcmd1bWVudHNSZWdpc3RlcigpLm9mZnNldCgpKTsKKyAgICAg
ICAgICAgIEFTU0VSVChjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kID09IG1faW5saW5l
U3RhY2tUb3AtPm1fY29kZUJsb2NrLT5hcmd1bWVudHNSZWdpc3RlcigpKTsKICAgICAgICAgICAg
IEFTU0VSVCghbV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxvY2stPnN5bWJvbFRhYmxlKCktPnNs
b3dBcmd1bWVudHMoKSk7CiAgICAgICAgICAgICAvLyBJdCB3b3VsZCBiZSBjb29sIHRvIGZ1bm5l
bCB0aGlzIGludG8gaGFuZGxlQ2FsbCgpIHNvIHRoYXQgaXQgY2FuIGhhbmRsZQogICAgICAgICAg
ICAgLy8gaW5saW5pbmcuIEJ1dCBjdXJyZW50bHkgdGhhdCB3b24ndCBiZSBwcm9maXRhYmxlIGFu
eXdheSwgc2luY2Ugbm9uZSBvZiB0aGUKQEAgLTI5NzcsMTIgKzI5NzQsMTIgQEAgYm9vbCBCeXRl
Q29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIGlmIChK
U1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplICsgYXJnQ291bnQgPiBtX3BhcmFtZXRlclNsb3Rz
KQogICAgICAgICAgICAgICAgIG1fcGFyYW1ldGVyU2xvdHMgPSBKU1N0YWNrOjpDYWxsRnJhbWVI
ZWFkZXJTaXplICsgYXJnQ291bnQ7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGFkZFZhckFy
Z0NoaWxkKGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFu
ZCkpKTsgLy8gY2FsbGVlCi0gICAgICAgICAgICBhZGRWYXJBcmdDaGlsZChnZXQoVmlydHVhbFJl
Z2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpKSk7IC8vIHRoaXMKKyAgICAg
ICAgICAgIGFkZFZhckFyZ0NoaWxkKGdldChjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5k
KSk7IC8vIGNhbGxlZQorICAgICAgICAgICAgYWRkVmFyQXJnQ2hpbGQoZ2V0KGN1cnJlbnRJbnN0
cnVjdGlvblszXS51Lm9wZXJhbmQpKTsgLy8gdGhpcwogICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBhcmd1bWVudCA9IDE7IGFyZ3VtZW50IDwgYXJnQ291bnQ7ICsrYXJndW1lbnQpCi0gICAgICAg
ICAgICAgICAgYWRkVmFyQXJnQ2hpbGQoZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGFy
Z3VtZW50KSkpOworICAgICAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKGdldChhcmd1bWVudFRv
T3BlcmFuZChhcmd1bWVudCkpKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgc2V0KFZpcnR1
YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSwKKyAgICAgICAgICAg
IHNldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLAogICAgICAgICAgICAgICAgIGFk
ZFRvR3JhcGgoTm9kZTo6VmFyQXJnLCBDYWxsLCBPcEluZm8oMCksIE9wSW5mbyhwcmVkaWN0aW9u
KSkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9jYWxsX3ZhcmFy
Z3MpOwpAQCAtMjk5Niw3ICsyOTkzLDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9j
ayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIGFkZFRvR3JhcGgoCiAgICAgICAgICAgICAg
ICAgQ2hlY2tGdW5jdGlvbiwKICAgICAgICAgICAgICAgICBPcEluZm8oYWN0dWFsUG9pbnRlckZv
cihtX2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9jaywgY3VycmVudEluc3RydWN0aW9uWzJdLnUu
c3BlY2lhbFBvaW50ZXIpKSwKLSAgICAgICAgICAgICAgICBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1
cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpKSk7CisgICAgICAgICAgICAgICAgZ2V0KGN1
cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpKTsKICAgICAgICAgICAgIGFkZFRvR3JhcGgo
SnVtcCwgT3BJbmZvKG1fY3VycmVudEluZGV4ICsgT1BDT0RFX0xFTkdUSChvcF9qbmVxX3B0cikp
KTsKICAgICAgICAgICAgIExBU1RfT1BDT0RFKG9wX2puZXFfcHRyKTsKIApAQCAtMzAxNCwxMSAr
MzAxMSwxMSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0
KQogICAgICAgICAgICAgY2FzZSBHbG9iYWxWYXI6CiAgICAgICAgICAgICBjYXNlIEdsb2JhbFBy
b3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrczoKICAgICAgICAgICAgIGNhc2UgR2xvYmFsVmFy
V2l0aFZhckluamVjdGlvbkNoZWNrczoKLSAgICAgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lz
dGVyKGRzdCksIGNlbGxDb25zdGFudChtX2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9jay0+Z2xv
YmFsT2JqZWN0KCkpKTsKKyAgICAgICAgICAgICAgICBzZXQoZHN0LCBjZWxsQ29uc3RhbnQobV9p
bmxpbmVTdGFja1RvcC0+bV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENsb3N1cmVWYXI6CiAgICAgICAgICAgICBj
YXNlIENsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOgotICAgICAgICAgICAgICAgIHNl
dChWaXJ0dWFsUmVnaXN0ZXIoZHN0KSwgZ2V0U2NvcGUobV9pbmxpbmVTdGFja1RvcC0+bV9jb2Rl
QmxvY2stPm5lZWRzQWN0aXZhdGlvbigpLCBkZXB0aCkpOworICAgICAgICAgICAgICAgIHNldChk
c3QsIGdldFNjb3BlKG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrLT5uZWVkc0FjdGl2YXRp
b24oKSwgZGVwdGgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2Ug
RHluYW1pYzoKICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpA
QCAtMzA1MCwzNCArMzA0NywzNCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVu
c2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgY2FzZSBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmpl
Y3Rpb25DaGVja3M6IHsKICAgICAgICAgICAgICAgICBHZXRCeUlkU3RhdHVzIHN0YXR1cyA9IEdl
dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoKm1fdm0sIHN0cnVjdHVyZSwgdWlkKTsKICAgICAgICAg
ICAgICAgICBpZiAoc3RhdHVzLnRha2VzU2xvd1BhdGgoKSkgewotICAgICAgICAgICAgICAgICAg
ICBzZXQoVmlydHVhbFJlZ2lzdGVyKGRzdCksIGFkZFRvR3JhcGgoR2V0QnlJZEZsdXNoLCBPcElu
Zm8oaWRlbnRpZmllck51bWJlciksIE9wSW5mbyhwcmVkaWN0aW9uKSwgZ2V0KFZpcnR1YWxSZWdp
c3RlcihzY29wZSkpKSk7CisgICAgICAgICAgICAgICAgICAgIHNldChkc3QsIGFkZFRvR3JhcGgo
R2V0QnlJZEZsdXNoLCBPcEluZm8oaWRlbnRpZmllck51bWJlciksIE9wSW5mbyhwcmVkaWN0aW9u
KSwgZ2V0KHNjb3BlKSkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgTm9kZSogYmFzZSA9IGNlbGxDb25zdGFudFdpdGhTdHJ1
Y3R1cmVDaGVjayhnbG9iYWxPYmplY3QsIHN0YXR1cy5zdHJ1Y3R1cmVTZXQoKS5zaW5nbGV0b25T
dHJ1Y3R1cmUoKSk7CiAgICAgICAgICAgICAgICAgaWYgKEpTVmFsdWUgc3BlY2lmaWNWYWx1ZSA9
IHN0YXR1cy5zcGVjaWZpY1ZhbHVlKCkpCi0gICAgICAgICAgICAgICAgICAgIHNldChWaXJ0dWFs
UmVnaXN0ZXIoZHN0KSwgY2VsbENvbnN0YW50KHNwZWNpZmljVmFsdWUuYXNDZWxsKCkpKTsKKyAg
ICAgICAgICAgICAgICAgICAgc2V0KGRzdCwgY2VsbENvbnN0YW50KHNwZWNpZmljVmFsdWUuYXND
ZWxsKCkpKTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHNldChW
aXJ0dWFsUmVnaXN0ZXIoZHN0KSwgaGFuZGxlR2V0QnlPZmZzZXQocHJlZGljdGlvbiwgYmFzZSwg
aWRlbnRpZmllck51bWJlciwgb3BlcmFuZCkpOworICAgICAgICAgICAgICAgICAgICBzZXQoZHN0
LCBoYW5kbGVHZXRCeU9mZnNldChwcmVkaWN0aW9uLCBiYXNlLCBpZGVudGlmaWVyTnVtYmVyLCBv
cGVyYW5kKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBjYXNlIEdsb2JhbFZhcjoKICAgICAgICAgICAgIGNhc2UgR2xvYmFsVmFyV2l0aFZhcklu
amVjdGlvbkNoZWNrczogewogICAgICAgICAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkg
PSBnbG9iYWxPYmplY3QtPnN5bWJvbFRhYmxlKCktPmdldCh1aWQpOwogICAgICAgICAgICAgICAg
IGlmICghZW50cnkuY291bGRCZVdhdGNoZWQoKSB8fCAhbV9ncmFwaC53YXRjaHBvaW50cygpLmlz
U3RpbGxWYWxpZChlbnRyeS53YXRjaHBvaW50U2V0KCkpKSB7Ci0gICAgICAgICAgICAgICAgICAg
IHNldChWaXJ0dWFsUmVnaXN0ZXIoZHN0KSwgYWRkVG9HcmFwaChHZXRHbG9iYWxWYXIsIE9wSW5m
byhvcGVyYW5kKSwgT3BJbmZvKHByZWRpY3Rpb24pKSk7CisgICAgICAgICAgICAgICAgICAgIHNl
dChkc3QsIGFkZFRvR3JhcGgoR2V0R2xvYmFsVmFyLCBPcEluZm8ob3BlcmFuZCksIE9wSW5mbyhw
cmVkaWN0aW9uKSkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg
ICB9CiAKICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEdsb2JhbFZhcldhdGNocG9pbnQsIE9w
SW5mbyhvcGVyYW5kKSwgT3BJbmZvKGlkZW50aWZpZXJOdW1iZXIpKTsKICAgICAgICAgICAgICAg
ICBKU1ZhbHVlIHNwZWNpZmljVmFsdWUgPSBnbG9iYWxPYmplY3QtPnJlZ2lzdGVyQXQoZW50cnku
Z2V0SW5kZXgoKSkuZ2V0KCk7Ci0gICAgICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3Rlcihk
c3QpLCBjZWxsQ29uc3RhbnQoc3BlY2lmaWNWYWx1ZS5hc0NlbGwoKSkpOworICAgICAgICAgICAg
ICAgIHNldChkc3QsIGNlbGxDb25zdGFudChzcGVjaWZpY1ZhbHVlLmFzQ2VsbCgpKSk7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIENsb3N1
cmVWYXI6CiAgICAgICAgICAgICBjYXNlIENsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tz
OgotICAgICAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoZHN0KSwKKyAgICAgICAgICAg
ICAgICBzZXQoZHN0LCAKICAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChHZXRDbG9zdXJl
VmFyLCBPcEluZm8ob3BlcmFuZCksIE9wSW5mbyhwcmVkaWN0aW9uKSwgCi0gICAgICAgICAgICAg
ICAgICAgICAgICBhZGRUb0dyYXBoKEdldENsb3N1cmVSZWdpc3RlcnMsIGdldChWaXJ0dWFsUmVn
aXN0ZXIoc2NvcGUpKSkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoR2V0
Q2xvc3VyZVJlZ2lzdGVycywgZ2V0KHNjb3BlKSkpKTsKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIGNhc2UgRHluYW1pYzoKICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwpAQCAtMzEwOCwyOSArMzEwNSwyOSBAQCBib29sIEJ5dGVDb2RlUGFy
c2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgY2FzZSBHbG9iYWxQ
cm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3M6IHsKICAgICAgICAgICAgICAgICBQdXRCeUlk
U3RhdHVzIHN0YXR1cyA9IFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoKm1fdm0sIGdsb2JhbE9i
amVjdCwgc3RydWN0dXJlLCB1aWQsIGZhbHNlKTsKICAgICAgICAgICAgICAgICBpZiAoIXN0YXR1
cy5pc1NpbXBsZVJlcGxhY2UoKSkgewotICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFB1
dEJ5SWQsIE9wSW5mbyhpZGVudGlmaWVyTnVtYmVyKSwgZ2V0KFZpcnR1YWxSZWdpc3RlcihzY29w
ZSkpLCBnZXQoVmlydHVhbFJlZ2lzdGVyKHZhbHVlKSkpOworICAgICAgICAgICAgICAgICAgICBh
ZGRUb0dyYXBoKFB1dEJ5SWQsIE9wSW5mbyhpZGVudGlmaWVyTnVtYmVyKSwgZ2V0KHNjb3BlKSwg
Z2V0KHZhbHVlKSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICBOb2RlKiBiYXNlID0gY2VsbENvbnN0YW50V2l0aFN0cnVjdHVy
ZUNoZWNrKGdsb2JhbE9iamVjdCwgc3RhdHVzLm9sZFN0cnVjdHVyZSgpKTsKLSAgICAgICAgICAg
ICAgICBoYW5kbGVQdXRCeU9mZnNldChiYXNlLCBpZGVudGlmaWVyTnVtYmVyLCBzdGF0aWNfY2Fz
dDxQcm9wZXJ0eU9mZnNldD4ob3BlcmFuZCksIGdldChWaXJ0dWFsUmVnaXN0ZXIodmFsdWUpKSk7
CisgICAgICAgICAgICAgICAgaGFuZGxlUHV0QnlPZmZzZXQoYmFzZSwgaWRlbnRpZmllck51bWJl
ciwgc3RhdGljX2Nhc3Q8UHJvcGVydHlPZmZzZXQ+KG9wZXJhbmQpLCBnZXQodmFsdWUpKTsKICAg
ICAgICAgICAgICAgICAvLyBLZWVwIHNjb3BlIGFsaXZlIHVudGlsIGFmdGVyIHB1dC4KLSAgICAg
ICAgICAgICAgICBhZGRUb0dyYXBoKFBoYW50b20sIGdldChWaXJ0dWFsUmVnaXN0ZXIoc2NvcGUp
KSk7CisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChQaGFudG9tLCBnZXQoc2NvcGUpKTsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNhc2UgR2xv
YmFsVmFyOgogICAgICAgICAgICAgY2FzZSBHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tz
OiB7CiAgICAgICAgICAgICAgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IGdsb2JhbE9iamVj
dC0+c3ltYm9sVGFibGUoKS0+Z2V0KHVpZCk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKCFlbnRy
eS5jb3VsZEJlV2F0Y2hlZCgpIHx8ICFtX2dyYXBoLndhdGNocG9pbnRzKCkuaXNTdGlsbFZhbGlk
KGVudHJ5LndhdGNocG9pbnRTZXQoKSkpOwotICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoUHV0
R2xvYmFsVmFyLCBPcEluZm8ob3BlcmFuZCksIGdldChWaXJ0dWFsUmVnaXN0ZXIodmFsdWUpKSk7
CisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChQdXRHbG9iYWxWYXIsIE9wSW5mbyhvcGVyYW5k
KSwgZ2V0KHZhbHVlKSk7CiAgICAgICAgICAgICAgICAgLy8gS2VlcCBzY29wZSBhbGl2ZSB1bnRp
bCBhZnRlciBwdXQuCi0gICAgICAgICAgICAgICAgYWRkVG9HcmFwaChQaGFudG9tLCBnZXQoVmly
dHVhbFJlZ2lzdGVyKHNjb3BlKSkpOworICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoUGhhbnRv
bSwgZ2V0KHNjb3BlKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBjYXNlIENsb3N1cmVWYXI6CiAgICAgICAgICAgICBjYXNlIENsb3N1cmVWYXJX
aXRoVmFySW5qZWN0aW9uQ2hlY2tzOiB7Ci0gICAgICAgICAgICAgICAgTm9kZSogc2NvcGVOb2Rl
ID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihzY29wZSkpOworICAgICAgICAgICAgICAgIE5vZGUqIHNj
b3BlTm9kZSA9IGdldChzY29wZSk7CiAgICAgICAgICAgICAgICAgTm9kZSogc2NvcGVSZWdpc3Rl
cnMgPSBhZGRUb0dyYXBoKEdldENsb3N1cmVSZWdpc3RlcnMsIHNjb3BlTm9kZSk7Ci0gICAgICAg
ICAgICAgICAgYWRkVG9HcmFwaChQdXRDbG9zdXJlVmFyLCBPcEluZm8ob3BlcmFuZCksIHNjb3Bl
Tm9kZSwgc2NvcGVSZWdpc3RlcnMsIGdldChWaXJ0dWFsUmVnaXN0ZXIodmFsdWUpKSk7CisgICAg
ICAgICAgICAgICAgYWRkVG9HcmFwaChQdXRDbG9zdXJlVmFyLCBPcEluZm8ob3BlcmFuZCksIHNj
b3BlTm9kZSwgc2NvcGVSZWdpc3RlcnMsIGdldCh2YWx1ZSkpOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSBEeW5hbWljOgpAQCAtMzE2MSw4
NiArMzE1OCw4NiBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxp
bWl0KQogICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBvcF9pbml0X2xhenlf
cmVnOiB7Ci0gICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlv
blsxXS51Lm9wZXJhbmQpLCBnZXRKU0NvbnN0YW50Rm9yVmFsdWUoSlNWYWx1ZSgpKSk7CisgICAg
ICAgICAgICBzZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgZ2V0SlNDb25zdGFu
dEZvclZhbHVlKEpTVmFsdWUoKSkpOwogICAgICAgICAgICAgQVNTRVJUKG9wZXJhbmRJc0xvY2Fs
KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpKTsKLSAgICAgICAgICAgIG1fZ3JhcGgu
bV9sYXp5VmFycy5zZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9w
ZXJhbmQpLnRvTG9jYWwoKSk7CisgICAgICAgICAgICBtX2dyYXBoLm1fbGF6eVZhcnMuc2V0KG9w
ZXJhbmRUb0xvY2FsKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpKTsKICAgICAgICAg
ICAgIE5FWFRfT1BDT0RFKG9wX2luaXRfbGF6eV9yZWcpOwogICAgICAgICB9CiAgICAgICAgICAg
ICAKICAgICAgICAgY2FzZSBvcF9jcmVhdGVfYWN0aXZhdGlvbjogewotICAgICAgICAgICAgc2V0
KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSwgYWRkVG9H
cmFwaChDcmVhdGVBY3RpdmF0aW9uLCBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVj
dGlvblsxXS51Lm9wZXJhbmQpKSkpOworICAgICAgICAgICAgc2V0KGN1cnJlbnRJbnN0cnVjdGlv
blsxXS51Lm9wZXJhbmQsIGFkZFRvR3JhcGgoQ3JlYXRlQWN0aXZhdGlvbiwgZ2V0KGN1cnJlbnRJ
bnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpKSk7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9j
cmVhdGVfYWN0aXZhdGlvbik7CiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNl
IG9wX2NyZWF0ZV9hcmd1bWVudHM6IHsKICAgICAgICAgICAgIG1fZ3JhcGgubV9oYXNBcmd1bWVu
dHMgPSB0cnVlOwotICAgICAgICAgICAgTm9kZSogY3JlYXRlQXJndW1lbnRzID0gYWRkVG9HcmFw
aChDcmVhdGVBcmd1bWVudHMsIGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9u
WzFdLnUub3BlcmFuZCkpKTsKLSAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVu
dEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCksIGNyZWF0ZUFyZ3VtZW50cyk7Ci0gICAgICAgICAg
ICBzZXQodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKFZpcnR1YWxSZWdpc3RlcihjdXJyZW50
SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSksIGNyZWF0ZUFyZ3VtZW50cyk7CisgICAgICAgICAg
ICBOb2RlKiBjcmVhdGVBcmd1bWVudHMgPSBhZGRUb0dyYXBoKENyZWF0ZUFyZ3VtZW50cywgZ2V0
KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpKTsKKyAgICAgICAgICAgIHNldChjdXJy
ZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCBjcmVhdGVBcmd1bWVudHMpOworICAgICAgICAg
ICAgc2V0KHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0u
dS5vcGVyYW5kKSwgY3JlYXRlQXJndW1lbnRzKTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9w
X2NyZWF0ZV9hcmd1bWVudHMpOwogICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2Fz
ZSBvcF90ZWFyX29mZl9hY3RpdmF0aW9uOiB7Ci0gICAgICAgICAgICBhZGRUb0dyYXBoKFRlYXJP
ZmZBY3RpdmF0aW9uLCBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51
Lm9wZXJhbmQpKSk7CisgICAgICAgICAgICBhZGRUb0dyYXBoKFRlYXJPZmZBY3RpdmF0aW9uLCBn
ZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCkpOwogICAgICAgICAgICAgTkVYVF9P
UENPREUob3BfdGVhcl9vZmZfYWN0aXZhdGlvbik7CiAgICAgICAgIH0KIAogICAgICAgICBjYXNl
IG9wX3RlYXJfb2ZmX2FyZ3VtZW50czogewogICAgICAgICAgICAgbV9ncmFwaC5tX2hhc0FyZ3Vt
ZW50cyA9IHRydWU7Ci0gICAgICAgICAgICBhZGRUb0dyYXBoKFRlYXJPZmZBcmd1bWVudHMsIGdl
dCh1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0
cnVjdGlvblsxXS51Lm9wZXJhbmQpKSksIGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3Ry
dWN0aW9uWzJdLnUub3BlcmFuZCkpKTsKKyAgICAgICAgICAgIGFkZFRvR3JhcGgoVGVhck9mZkFy
Z3VtZW50cywgZ2V0KHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rp
b25bMV0udS5vcGVyYW5kKSksIGdldChjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSk7
CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF90ZWFyX29mZl9hcmd1bWVudHMpOwogICAgICAg
ICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBvcF9nZXRfYXJndW1lbnRzX2xlbmd0aDog
ewogICAgICAgICAgICAgbV9ncmFwaC5tX2hhc0FyZ3VtZW50cyA9IHRydWU7Ci0gICAgICAgICAg
ICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpLCBh
ZGRUb0dyYXBoKEdldE15QXJndW1lbnRzTGVuZ3RoU2FmZSkpOworICAgICAgICAgICAgc2V0KGN1
cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIGFkZFRvR3JhcGgoR2V0TXlBcmd1bWVudHNM
ZW5ndGhTYWZlKSk7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9nZXRfYXJndW1lbnRzX2xl
bmd0aCk7CiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIG9wX2dldF9hcmd1
bWVudF9ieV92YWw6IHsKICAgICAgICAgICAgIG1fZ3JhcGgubV9oYXNBcmd1bWVudHMgPSB0cnVl
OwotICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0u
dS5vcGVyYW5kKSwKKyAgICAgICAgICAgIHNldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVy
YW5kLAogICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoCiAgICAgICAgICAgICAgICAgICAgIEdl
dE15QXJndW1lbnRCeVZhbFNhZmUsIE9wSW5mbygwKSwgT3BJbmZvKGdldFByZWRpY3Rpb24oKSks
Ci0gICAgICAgICAgICAgICAgICAgIGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0
aW9uWzNdLnUub3BlcmFuZCkpKSk7CisgICAgICAgICAgICAgICAgICAgIGdldChjdXJyZW50SW5z
dHJ1Y3Rpb25bM10udS5vcGVyYW5kKSkpOwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfZ2V0
X2FyZ3VtZW50X2J5X3ZhbCk7CiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNl
IG9wX25ld19mdW5jOiB7CiAgICAgICAgICAgICBpZiAoIWN1cnJlbnRJbnN0cnVjdGlvblszXS51
Lm9wZXJhbmQpIHsKLSAgICAgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJ
bnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpLAorICAgICAgICAgICAgICAgIHNldChjdXJyZW50SW5z
dHJ1Y3Rpb25bMV0udS5vcGVyYW5kLAogICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKE5l
d0Z1bmN0aW9uTm9DaGVjaywgT3BJbmZvKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQp
KSk7CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHNldChWaXJ0dWFsUmVn
aXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCksCisgICAgICAgICAgICAgICAg
c2V0KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsCiAgICAgICAgICAgICAgICAgICAg
IGFkZFRvR3JhcGgoCiAgICAgICAgICAgICAgICAgICAgICAgICBOZXdGdW5jdGlvbiwKICAgICAg
ICAgICAgICAgICAgICAgICAgIE9wSW5mbyhjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5k
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudElu
c3RydWN0aW9uWzFdLnUub3BlcmFuZCkpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBnZXQo
Y3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCkpKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIE5FWFRfT1BDT0RFKG9wX25ld19mdW5jKTsKICAgICAgICAgfQogICAgICAgICAgICAg
CiAgICAgICAgIGNhc2Ugb3BfbmV3X2Z1bmNfZXhwOiB7Ci0gICAgICAgICAgICBzZXQoVmlydHVh
bFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpLAorICAgICAgICAgICAg
c2V0KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsCiAgICAgICAgICAgICAgICAgYWRk
VG9HcmFwaChOZXdGdW5jdGlvbkV4cHJlc3Npb24sIE9wSW5mbyhjdXJyZW50SW5zdHJ1Y3Rpb25b
Ml0udS5vcGVyYW5kKSkpOwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfbmV3X2Z1bmNfZXhw
KTsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2Ugb3BfdHlwZW9mOiB7Ci0gICAgICAgICAgICBz
ZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpLAotICAg
ICAgICAgICAgICAgIGFkZFRvR3JhcGgoVHlwZU9mLCBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJl
bnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKSkpOworICAgICAgICAgICAgc2V0KGN1cnJlbnRJ
bnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsCisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChUeXBl
T2YsIGdldChjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSkpOwogICAgICAgICAgICAg
TkVYVF9PUENPREUob3BfdHlwZW9mKTsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2Ugb3BfdG9f
bnVtYmVyOiB7Ci0gICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVj
dGlvblsxXS51Lm9wZXJhbmQpLAotICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoSWRlbnRpdHks
IEVkZ2UoZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5k
KSksIE51bWJlclVzZSkpKTsKKyAgICAgICAgICAgIHNldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0u
dS5vcGVyYW5kLAorICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoSWRlbnRpdHksIEVkZ2UoZ2V0
KGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpLCBOdW1iZXJVc2UpKSk7CiAgICAgICAg
ICAgICBORVhUX09QQ09ERShvcF90b19udW1iZXIpOwogICAgICAgICB9CiAgICAgICAgICAgICAK
ICAgICAgICAgY2FzZSBvcF9pbjogewotICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3Rlcihj
dXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSwKLSAgICAgICAgICAgICAgICBhZGRUb0dy
YXBoKEluLCBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJh
bmQpKSwgZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5k
KSkpKTsKKyAgICAgICAgICAgIHNldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLAor
ICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoSW4sIGdldChjdXJyZW50SW5zdHJ1Y3Rpb25bMl0u
dS5vcGVyYW5kKSwgZ2V0KGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpKSk7CiAgICAg
ICAgICAgICBORVhUX09QQ09ERShvcF9pbik7CiAgICAgICAgIH0KIApAQCAtMzM2Myw3ICszMzYw
LDcgQEAgQnl0ZUNvZGVQYXJzZXI6OklubGluZVN0YWNrRW50cnk6OklubGluZVN0YWNrRW50cnko
CiAgICAgaWYgKG1fY2FsbGVyKSB7CiAgICAgICAgIC8vIElubGluZSBjYXNlLgogICAgICAgICBB
U1NFUlQoY29kZUJsb2NrICE9IGJ5dGVDb2RlUGFyc2VyLT5tX2NvZGVCbG9jayk7Ci0gICAgICAg
IEFTU0VSVChpbmxpbmVDYWxsRnJhbWVTdGFydC5pc1ZhbGlkKCkpOworICAgICAgICBBU1NFUlQo
aW5saW5lQ2FsbEZyYW1lU3RhcnQgIT0gSW52YWxpZFZpcnR1YWxSZWdpc3Rlcik7CiAgICAgICAg
IEFTU0VSVChjYWxsc2l0ZUJsb2NrSGVhZCk7CiAgICAgICAgIAogICAgICAgICBtX2lubGluZUNh
bGxGcmFtZSA9IGJ5dGVDb2RlUGFyc2VyLT5tX2dyYXBoLm1faW5saW5lQ2FsbEZyYW1lcy0+YWRk
KCk7CkBAIC0zMzc0LDcgKzMzNzEsNyBAQCBCeXRlQ29kZVBhcnNlcjo6SW5saW5lU3RhY2tFbnRy
eTo6SW5saW5lU3RhY2tFbnRyeSgKICAgICAgICAgICAgIG1faW5saW5lQ2FsbEZyYW1lLAogICAg
ICAgICAgICAgYnl0ZUNvZGVQYXJzZXItPm1fY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwg
CiAgICAgICAgICAgICBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpKTsKLSAgICAgICAgbV9p
bmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ID0gaW5saW5lQ2FsbEZyYW1lU3RhcnQub2Zmc2V0
KCkgLSBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplOworICAgICAgICBtX2lubGluZUNhbGxG
cmFtZS0+c3RhY2tPZmZzZXQgPSBpbmxpbmVDYWxsRnJhbWVTdGFydCAtIEpTU3RhY2s6OkNhbGxG
cmFtZUhlYWRlclNpemU7CiAgICAgICAgIGlmIChjYWxsZWUpIHsKICAgICAgICAgICAgIGluaXRp
YWxpemVMYXp5V3JpdGVCYXJyaWVyRm9ySW5saW5lQ2FsbEZyYW1lQ2FsbGVlKAogICAgICAgICAg
ICAgICAgIGJ5dGVDb2RlUGFyc2VyLT5tX2dyYXBoLm1fcGxhbi53cml0ZUJhcnJpZXJzLApAQCAt
MzM5MiwyMCArMzM4OSwxOSBAQCBCeXRlQ29kZVBhcnNlcjo6SW5saW5lU3RhY2tFbnRyeTo6SW5s
aW5lU3RhY2tFbnRyeSgKICAgICAgICAgICAgIG1faW5saW5lQ2FsbEZyYW1lLT5jYXB0dXJlZFZh
cnMgPSBtX2lubGluZUNhbGxGcmFtZS0+Y2FsbGVyLmlubGluZUNhbGxGcmFtZS0+Y2FwdHVyZWRW
YXJzOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGZvciAoaW50IGkgPSBieXRlQ29kZVBh
cnNlci0+bV9jb2RlQmxvY2stPm1fbnVtVmFyczsgaS0tOykgewotICAgICAgICAgICAgICAgIGlm
IChieXRlQ29kZVBhcnNlci0+bV9jb2RlQmxvY2stPmlzQ2FwdHVyZWQodmlydHVhbFJlZ2lzdGVy
Rm9yTG9jYWwoaSkpKQorICAgICAgICAgICAgICAgIGlmIChieXRlQ29kZVBhcnNlci0+bV9jb2Rl
QmxvY2stPmlzQ2FwdHVyZWQobG9jYWxUb09wZXJhbmQoaSkpKQogICAgICAgICAgICAgICAgICAg
ICBtX2lubGluZUNhbGxGcmFtZS0+Y2FwdHVyZWRWYXJzLnNldChpKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQogCiAgICAgICAgIGZvciAoaW50IGkgPSBhcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpczsgaS0tOykgewotICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIGFyZ3VtZW50ID0gdmly
dHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSk7Ci0gICAgICAgICAgICBpZiAoY29kZUJsb2NrLT5p
c0NhcHR1cmVkKGFyZ3VtZW50KSkKLSAgICAgICAgICAgICAgICBtX2lubGluZUNhbGxGcmFtZS0+
Y2FwdHVyZWRWYXJzLnNldChWaXJ0dWFsUmVnaXN0ZXIoYXJndW1lbnQub2Zmc2V0KCkgKyBtX2lu
bGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQpLnRvTG9jYWwoKSk7CisgICAgICAgICAgICBpZiAo
Y29kZUJsb2NrLT5pc0NhcHR1cmVkKGFyZ3VtZW50VG9PcGVyYW5kKGkpKSkKKyAgICAgICAgICAg
ICAgICBtX2lubGluZUNhbGxGcmFtZS0+Y2FwdHVyZWRWYXJzLnNldChvcGVyYW5kVG9Mb2NhbChh
cmd1bWVudFRvT3BlcmFuZChpKSArIG1faW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCkpOwog
ICAgICAgICB9CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSBjb2RlQmxvY2stPm1fbnVtVmFyczsg
aS0tOykgewotICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIGxvY2FsID0gdmlydHVhbFJlZ2lz
dGVyRm9yTG9jYWwoaSk7Ci0gICAgICAgICAgICBpZiAoY29kZUJsb2NrLT5pc0NhcHR1cmVkKGxv
Y2FsKSkKLSAgICAgICAgICAgICAgICBtX2lubGluZUNhbGxGcmFtZS0+Y2FwdHVyZWRWYXJzLnNl
dChWaXJ0dWFsUmVnaXN0ZXIobG9jYWwub2Zmc2V0KCkgKyBtX2lubGluZUNhbGxGcmFtZS0+c3Rh
Y2tPZmZzZXQpLnRvTG9jYWwoKSk7CisgICAgICAgICAgICBpbnQgbG9jYWxPcGVyYW5kID0gbG9j
YWxUb09wZXJhbmQoaSk7CisgICAgICAgICAgICBpZiAoY29kZUJsb2NrLT5pc0NhcHR1cmVkKGxv
Y2FsT3BlcmFuZCkpCisgICAgICAgICAgICAgICAgbV9pbmxpbmVDYWxsRnJhbWUtPmNhcHR1cmVk
VmFycy5zZXQob3BlcmFuZFRvTG9jYWwobG9jYWxPcGVyYW5kICsgbV9pbmxpbmVDYWxsRnJhbWUt
PnN0YWNrT2Zmc2V0KSk7CiAgICAgICAgIH0KIAogI2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9T
RSkKQEAgLTM0NjksOCArMzQ2NSw4IEBAIEJ5dGVDb2RlUGFyc2VyOjpJbmxpbmVTdGFja0VudHJ5
OjpJbmxpbmVTdGFja0VudHJ5KAogICAgICAgICAvLyBNYWNoaW5lIGNvZGUgYmxvY2sgY2FzZS4K
ICAgICAgICAgQVNTRVJUKGNvZGVCbG9jayA9PSBieXRlQ29kZVBhcnNlci0+bV9jb2RlQmxvY2sp
OwogICAgICAgICBBU1NFUlQoIWNhbGxlZSk7Ci0gICAgICAgIEFTU0VSVCghcmV0dXJuVmFsdWVW
Ui5pc1ZhbGlkKCkpOwotICAgICAgICBBU1NFUlQoIWlubGluZUNhbGxGcmFtZVN0YXJ0LmlzVmFs
aWQoKSk7CisgICAgICAgIEFTU0VSVChyZXR1cm5WYWx1ZVZSID09IEludmFsaWRWaXJ0dWFsUmVn
aXN0ZXIpOworICAgICAgICBBU1NFUlQoaW5saW5lQ2FsbEZyYW1lU3RhcnQgPT0gSW52YWxpZFZp
cnR1YWxSZWdpc3Rlcik7CiAgICAgICAgIEFTU0VSVCghY2FsbHNpdGVCbG9ja0hlYWQpOwogCiAg
ICAgICAgIG1faW5saW5lQ2FsbEZyYW1lID0gMDsKQEAgLTM2MjMsNyArMzYxOSw3IEBAIGJvb2wg
Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlKCkKICNlbmRpZgogICAgIAogICAgIElubGluZVN0YWNrRW50
cnkgaW5saW5lU3RhY2tFbnRyeSgKLSAgICAgICAgdGhpcywgbV9jb2RlQmxvY2ssIG1fcHJvZmls
ZWRCbG9jaywgMCwgMCwgVmlydHVhbFJlZ2lzdGVyKCksIFZpcnR1YWxSZWdpc3RlcigpLAorICAg
ICAgICB0aGlzLCBtX2NvZGVCbG9jaywgbV9wcm9maWxlZEJsb2NrLCAwLCAwLCBJbnZhbGlkVmly
dHVhbFJlZ2lzdGVyLCBJbnZhbGlkVmlydHVhbFJlZ2lzdGVyLAogICAgICAgICBtX2NvZGVCbG9j
ay0+bnVtUGFyYW1ldGVycygpLCBDb2RlRm9yQ2FsbCk7CiAgICAgCiAgICAgcGFyc2VDb2RlQmxv
Y2soKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZHU2ltcGxp
ZmljYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGR1NpbXBs
aWZpY2F0aW9uUGhhc2UuY3BwCmluZGV4IGI2ZmM5NTEyN2U1OWFiYTQyZDVkYmViMzlmNWY0YTY0
ZTMzMjdkZDEuLmJiNjIwYTdlMjcxNDQyZmJkOGNkMzViNGQ2YzhlMzA3NTYwY2Y4NjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZHU2ltcGxpZmljYXRpb25QaGFz
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkdTaW1wbGlmaWNhdGlv
blBoYXNlLmNwcApAQCAtMzExLDcgKzMxMSw3IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICB9
CiAKLSAgICB2b2lkIGtlZXBPcGVyYW5kQWxpdmUoQmFzaWNCbG9jayogYmxvY2ssIEJhc2ljQmxv
Y2sqIGpldHRpc29uZWRCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBWaXJ0dWFsUmVnaXN0
ZXIgb3BlcmFuZCkKKyAgICB2b2lkIGtlZXBPcGVyYW5kQWxpdmUoQmFzaWNCbG9jayogYmxvY2ss
IEJhc2ljQmxvY2sqIGpldHRpc29uZWRCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBpbnQg
b3BlcmFuZCkKICAgICB7CiAgICAgICAgIE5vZGUqIGxpdmVuZXNzTm9kZSA9IGpldHRpc29uZWRC
bG9jay0+dmFyaWFibGVzQXRIZWFkLm9wZXJhbmQob3BlcmFuZCk7CiAgICAgICAgIGlmICghbGl2
ZW5lc3NOb2RlKQpAQCAtMzI2LDkgKzMyNiw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBqZXR0aXNv
bkJsb2NrKEJhc2ljQmxvY2sqIGJsb2NrLCBCYXNpY0Jsb2NrKiBqZXR0aXNvbmVkQmxvY2ssIENv
ZGVPcmlnaW4gYm91bmRhcnlDb2RlT3JpZ2luKQogICAgIHsKICAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBqZXR0aXNvbmVkQmxvY2stPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZkFyZ3Vt
ZW50cygpOyArK2kpCi0gICAgICAgICAgICBrZWVwT3BlcmFuZEFsaXZlKGJsb2NrLCBqZXR0aXNv
bmVkQmxvY2ssIGJvdW5kYXJ5Q29kZU9yaWdpbiwgdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQo
aSkpOworICAgICAgICAgICAga2VlcE9wZXJhbmRBbGl2ZShibG9jaywgamV0dGlzb25lZEJsb2Nr
LCBib3VuZGFyeUNvZGVPcmlnaW4sIGFyZ3VtZW50VG9PcGVyYW5kKGkpKTsKICAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBqZXR0aXNvbmVkQmxvY2stPnZhcmlhYmxlc0F0SGVhZC5udW1i
ZXJPZkxvY2FscygpOyArK2kpCi0gICAgICAgICAgICBrZWVwT3BlcmFuZEFsaXZlKGJsb2NrLCBq
ZXR0aXNvbmVkQmxvY2ssIGJvdW5kYXJ5Q29kZU9yaWdpbiwgdmlydHVhbFJlZ2lzdGVyRm9yTG9j
YWwoaSkpOworICAgICAgICAgICAga2VlcE9wZXJhbmRBbGl2ZShibG9jaywgamV0dGlzb25lZEJs
b2NrLCBib3VuZGFyeUNvZGVPcmlnaW4sIGxvY2FsVG9PcGVyYW5kKGkpKTsKICAgICAgICAgCiAg
ICAgICAgIGZpeEpldHRpc29uZWRQcmVkZWNlc3NvcnMoYmxvY2ssIGpldHRpc29uZWRCbG9jayk7
CiAgICAgfQpAQCAtMzgwLDkgKzM4MCw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAvLyBkaWZm
ZXJlbnQgcGF0aCB0aGFuIHNlY29uZEJsb2NrLgogICAgICAgICAgICAgCiAgICAgICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGpldHRpc29uZWRCbG9jay0+dmFyaWFibGVzQXRIZWFkLm51
bWJlck9mQXJndW1lbnRzKCk7ICsraSkKLSAgICAgICAgICAgICAgICBrZWVwT3BlcmFuZEFsaXZl
KGZpcnN0QmxvY2ssIGpldHRpc29uZWRCbG9jaywgYm91bmRhcnlDb2RlT3JpZ2luLCB2aXJ0dWFs
UmVnaXN0ZXJGb3JBcmd1bWVudChpKSk7CisgICAgICAgICAgICAgICAga2VlcE9wZXJhbmRBbGl2
ZShmaXJzdEJsb2NrLCBqZXR0aXNvbmVkQmxvY2ssIGJvdW5kYXJ5Q29kZU9yaWdpbiwgYXJndW1l
bnRUb09wZXJhbmQoaSkpOwogICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBqZXR0
aXNvbmVkQmxvY2stPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZkxvY2FscygpOyArK2kpCi0gICAg
ICAgICAgICAgICAga2VlcE9wZXJhbmRBbGl2ZShmaXJzdEJsb2NrLCBqZXR0aXNvbmVkQmxvY2ss
IGJvdW5kYXJ5Q29kZU9yaWdpbiwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaSkpOworICAgICAg
ICAgICAgICAgIGtlZXBPcGVyYW5kQWxpdmUoZmlyc3RCbG9jaywgamV0dGlzb25lZEJsb2NrLCBi
b3VuZGFyeUNvZGVPcmlnaW4sIGxvY2FsVG9PcGVyYW5kKGkpKTsKICAgICAgICAgfQogICAgICAg
ICAKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzZWNvbmRCbG9jay0+cGhpcy5zaXpl
KCk7ICsraSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1BTUmV0
aHJlYWRpbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NQU1JldGhy
ZWFkaW5nUGhhc2UuY3BwCmluZGV4IDVmNjQ2ZjNhMDExMDdjNDJkMWJhNzNhNWVkMDk1MzlhZWZk
MmJlMzEuLjJiZGUzODYzM2YwZDBiMDAwOTg0MWZkNTE1MDM5YzdiMjQ0NTllOGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDUFNSZXRocmVhZGluZ1BoYXNlLmNw
cApAQCAtMjE3LDEwICsyMTcsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNhbm9uaWNhbGl6ZUdl
dExvY2FsKE5vZGUqIG5vZGUpCiAgICAgewogICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZh
cmlhYmxlID0gbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCk7Ci0gICAgICAgIGlmICh2YXJpYWJs
ZS0+bG9jYWwoKS5pc0FyZ3VtZW50KCkpCi0gICAgICAgICAgICBjYW5vbmljYWxpemVHZXRMb2Nh
bEZvcjxBcmd1bWVudE9wZXJhbmQ+KG5vZGUsIHZhcmlhYmxlLCB2YXJpYWJsZS0+bG9jYWwoKS50
b0FyZ3VtZW50KCkpOworICAgICAgICBpZiAob3BlcmFuZElzQXJndW1lbnQodmFyaWFibGUtPmxv
Y2FsKCkpKQorICAgICAgICAgICAgY2Fub25pY2FsaXplR2V0TG9jYWxGb3I8QXJndW1lbnRPcGVy
YW5kPihub2RlLCB2YXJpYWJsZSwgb3BlcmFuZFRvQXJndW1lbnQodmFyaWFibGUtPmxvY2FsKCkp
KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgY2Fub25pY2FsaXplR2V0TG9jYWxGb3I8TG9j
YWxPcGVyYW5kPihub2RlLCB2YXJpYWJsZSwgdmFyaWFibGUtPmxvY2FsKCkudG9Mb2NhbCgpKTsK
KyAgICAgICAgICAgIGNhbm9uaWNhbGl6ZUdldExvY2FsRm9yPExvY2FsT3BlcmFuZD4obm9kZSwg
dmFyaWFibGUsIG9wZXJhbmRUb0xvY2FsKHZhcmlhYmxlLT5sb2NhbCgpKSk7CiAgICAgfQogICAg
IAogICAgIHZvaWQgY2Fub25pY2FsaXplU2V0TG9jYWwoTm9kZSogbm9kZSkKQEAgLTI4NSwxNyAr
Mjg1LDE3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjYW5vbmljYWxpemVGbHVzaE9yUGhhbnRvbUxv
Y2FsKE5vZGUqIG5vZGUpCiAgICAgewogICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlh
YmxlID0gbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCk7Ci0gICAgICAgIGlmICh2YXJpYWJsZS0+
bG9jYWwoKS5pc0FyZ3VtZW50KCkpCi0gICAgICAgICAgICBjYW5vbmljYWxpemVGbHVzaE9yUGhh
bnRvbUxvY2FsRm9yPG5vZGVUeXBlLCBBcmd1bWVudE9wZXJhbmQ+KG5vZGUsIHZhcmlhYmxlLCB2
YXJpYWJsZS0+bG9jYWwoKS50b0FyZ3VtZW50KCkpOworICAgICAgICBpZiAob3BlcmFuZElzQXJn
dW1lbnQodmFyaWFibGUtPmxvY2FsKCkpKQorICAgICAgICAgICAgY2Fub25pY2FsaXplRmx1c2hP
clBoYW50b21Mb2NhbEZvcjxub2RlVHlwZSwgQXJndW1lbnRPcGVyYW5kPihub2RlLCB2YXJpYWJs
ZSwgb3BlcmFuZFRvQXJndW1lbnQodmFyaWFibGUtPmxvY2FsKCkpKTsKICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgY2Fub25pY2FsaXplRmx1c2hPclBoYW50b21Mb2NhbEZvcjxub2RlVHlwZSwg
TG9jYWxPcGVyYW5kPihub2RlLCB2YXJpYWJsZSwgdmFyaWFibGUtPmxvY2FsKCkudG9Mb2NhbCgp
KTsKKyAgICAgICAgICAgIGNhbm9uaWNhbGl6ZUZsdXNoT3JQaGFudG9tTG9jYWxGb3I8bm9kZVR5
cGUsIExvY2FsT3BlcmFuZD4obm9kZSwgdmFyaWFibGUsIG9wZXJhbmRUb0xvY2FsKHZhcmlhYmxl
LT5sb2NhbCgpKSk7CiAgICAgfQogICAgIAogICAgIHZvaWQgY2Fub25pY2FsaXplU2V0QXJndW1l
bnQoTm9kZSogbm9kZSkKICAgICB7Ci0gICAgICAgIFZpcnR1YWxSZWdpc3RlciBsb2NhbCA9IG5v
ZGUtPmxvY2FsKCk7Ci0gICAgICAgIEFTU0VSVChsb2NhbC5pc0FyZ3VtZW50KCkpOwotICAgICAg
ICBpbnQgYXJndW1lbnQgPSBsb2NhbC50b0FyZ3VtZW50KCk7CisgICAgICAgIGludCBsb2NhbCA9
IG5vZGUtPmxvY2FsKCk7CisgICAgICAgIEFTU0VSVChvcGVyYW5kSXNBcmd1bWVudChsb2NhbCkp
OworICAgICAgICBpbnQgYXJndW1lbnQgPSBvcGVyYW5kVG9Bcmd1bWVudChsb2NhbCk7CiAgICAg
ICAgIG1fYmxvY2stPnZhcmlhYmxlc0F0SGVhZC5zZXRBcmd1bWVudEZpcnN0VGltZShhcmd1bWVu
dCwgbm9kZSk7CiAgICAgICAgIG1fYmxvY2stPnZhcmlhYmxlc0F0VGFpbC5zZXRBcmd1bWVudEZp
cnN0VGltZShhcmd1bWVudCwgbm9kZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCmluZGV4IDM1OGVhYmM0OGMwNTM3ZmQ3MzU5NjcxYWQz
YTFkYmQ5YThhZWJiZDcuLmVhODg2OTdkMWUwM2IwZjUzNzZmZDAzNzAxZmI5ZjE0NzNkMzQ2Yzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKQEAg
LTE5MCw3ICsxOTAsNyBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29kZUlE
IG9wY29kZUlELCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1YwogICAgIH0KIAogICAgIGNh
c2Ugb3BfY2FsbF92YXJhcmdzOgotICAgICAgICBpZiAoY29kZUJsb2NrLT51c2VzQXJndW1lbnRz
KCkgJiYgcGNbNF0udS5vcGVyYW5kID09IGNvZGVCbG9jay0+YXJndW1lbnRzUmVnaXN0ZXIoKS5v
ZmZzZXQoKSkKKyAgICAgICAgaWYgKGNvZGVCbG9jay0+dXNlc0FyZ3VtZW50cygpICYmIHBjWzRd
LnUub3BlcmFuZCA9PSBjb2RlQmxvY2stPmFyZ3VtZW50c1JlZ2lzdGVyKCkpCiAgICAgICAgICAg
ICByZXR1cm4gQ2FuSW5saW5lOwogICAgICAgICByZXR1cm4gQ2Fubm90Q29tcGlsZTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFz
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNl
LmNwcAppbmRleCBjZWQyMTI2ZjgwYWIwNzJiMTY4MTFmMWRiOWRkYWE0YzQwNDZkMDk4Li4yNzQ1
MTFlMDQ5MGIwNzVkMDQ0Y2I4YjVlNTI0MTBkN2Q0ZDFiNzdhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcApAQCAtMzg1
LDcgKzM4NSwyMyBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAgcmV0dXJuIGNoYW5nZWQ7
CiAgICAgfQotCisgICAgCisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgIGJvb2wgaXNDYXB0dXJl
ZEF0T3JBZnRlcihCYXNpY0Jsb2NrKiBibG9jaywgdW5zaWduZWQgaW5kZXhJbkJsb2NrLCBpbnQg
b3BlcmFuZCkKKyAgICB7CisgICAgICAgIGZvciAoOyBpbmRleEluQmxvY2sgPCBibG9jay0+c2l6
ZSgpOyArK2luZGV4SW5CbG9jaykgeworICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5h
dChpbmRleEluQmxvY2spOworICAgICAgICAgICAgaWYgKCFub2RlLT5oYXNMb2NhbChtX2dyYXBo
KSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGlmIChub2RlLT5sb2Nh
bCgpICE9IG9wZXJhbmQpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBp
ZiAobm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPmlzQ2FwdHVyZWQoKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorI2VuZGlmIC8vICFBU1NFUlRfRElTQUJMRUQKKyAgICAKICAgICB2b2lkIGFkZFN0cnVjdHVy
ZVRyYW5zaXRpb25DaGVjayhDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIHVuc2lnbmVkIGluZGV4SW5C
bG9jaywgSlNDZWxsKiBjZWxsKQogICAgIHsKICAgICAgICAgTm9kZSogd2Vha0NvbnN0YW50ID0g
bV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRmx1c2hMaXZlbmVzc0FuYWx5c2lzUGhhc2UuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdGbHVzaExpdmVuZXNzQW5hbHlzaXNQaGFzZS5jcHAKaW5kZXggYjg2
ZmFjNTllOGY4ZTkyNzU0OWFhNGY2NTEwZTFmZDZkYjE5MmU0OS4uOTYxMmQzZDU3NmM4NDdiODUw
OTkyZTkzMTM1YjdlYjEzNTlhY2ExYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdGbHVzaExpdmVuZXNzQW5hbHlzaXNQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdGbHVzaExpdmVuZXNzQW5hbHlzaXNQaGFzZS5jcHAKQEAgLTE2Nyw3
ICsxNjcsNyBAQCBwcml2YXRlOgogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIHZvaWQgc2V0
Rm9yTm9kZShOb2RlKiBub2RlLCBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCwgRmx1c2hGb3JtYXQg
bm9kZUZvcm1hdCwgRmx1c2hGb3JtYXQgbmV3Rm9ybWF0KQorICAgIHZvaWQgc2V0Rm9yTm9kZShO
b2RlKiBub2RlLCBpbnQgb3BlcmFuZCwgRmx1c2hGb3JtYXQgbm9kZUZvcm1hdCwgRmx1c2hGb3Jt
YXQgbmV3Rm9ybWF0KQogICAgIHsKICAgICAgICAgRmx1c2hGb3JtYXQmIGN1cnJlbnRGb3JtYXQg
PSBtX2xpdmUub3BlcmFuZChvcGVyYW5kKTsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHR3JhcGguY3BwCmluZGV4IDVhMmRkZmQ2MTFjMTVmN2QzMTM3ZmE1NDk3MTdiZDA0ZjA3
MjliNGUuLjc5NjYzNGEzZDQ1MTQwZDA1MDc1YmJiMGFmNDUwZmZhYmI4OGM4ZjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCkBAIC0yMzQsMTggKzIzNCwxOCBAQCB2b2lk
IEdyYXBoOjpkdW1wKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IGNoYXIqIHByZWZpeCwgTm9kZSog
bm9kZSwgRHVtcENvbnRleHQqCiAgICAgQVNTRVJUKG5vZGUtPmhhc1ZhcmlhYmxlQWNjZXNzRGF0
YSgqdGhpcykgPT0gbm9kZS0+aGFzTG9jYWwoKnRoaXMpKTsKICAgICBpZiAobm9kZS0+aGFzVmFy
aWFibGVBY2Nlc3NEYXRhKCp0aGlzKSkgewogICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZh
cmlhYmxlQWNjZXNzRGF0YSA9IG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpOwotICAgICAgICBW
aXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCA9IHZhcmlhYmxlQWNjZXNzRGF0YS0+bG9jYWwoKTsKLSAg
ICAgICAgaWYgKG9wZXJhbmQuaXNBcmd1bWVudCgpKQotICAgICAgICAgICAgb3V0LnByaW50KGNv
bW1hLCAiYXJnIiwgb3BlcmFuZC50b0FyZ3VtZW50KCksICIoIiwgVmFyaWFibGVBY2Nlc3NEYXRh
RHVtcCgqdGhpcywgdmFyaWFibGVBY2Nlc3NEYXRhKSwgIikiKTsKKyAgICAgICAgaW50IG9wZXJh
bmQgPSB2YXJpYWJsZUFjY2Vzc0RhdGEtPm9wZXJhbmQoKTsKKyAgICAgICAgaWYgKG9wZXJhbmRJ
c0FyZ3VtZW50KG9wZXJhbmQpKQorICAgICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiYXJnIiwg
b3BlcmFuZFRvQXJndW1lbnQob3BlcmFuZCksICIoIiwgVmFyaWFibGVBY2Nlc3NEYXRhRHVtcCgq
dGhpcywgdmFyaWFibGVBY2Nlc3NEYXRhKSwgIikiKTsKICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgb3V0LnByaW50KGNvbW1hLCAibG9jIiwgb3BlcmFuZC50b0xvY2FsKCksICIoIiwgVmFyaWFi
bGVBY2Nlc3NEYXRhRHVtcCgqdGhpcywgdmFyaWFibGVBY2Nlc3NEYXRhKSwgIikiKTsKKyAgICAg
ICAgICAgIG91dC5wcmludChjb21tYSwgImxvYyIsIG9wZXJhbmRUb0xvY2FsKG9wZXJhbmQpLCAi
KCIsIFZhcmlhYmxlQWNjZXNzRGF0YUR1bXAoKnRoaXMsIHZhcmlhYmxlQWNjZXNzRGF0YSksICIp
Iik7CiAgICAgfQogICAgIGlmIChub2RlLT5oYXNVbmxpbmtlZExvY2FsKCkpIHsKLSAgICAgICAg
VmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQgPSBub2RlLT51bmxpbmtlZExvY2FsKCk7Ci0gICAgICAg
IGlmIChvcGVyYW5kLmlzQXJndW1lbnQoKSkKLSAgICAgICAgICAgIG91dC5wcmludChjb21tYSwg
ImFyZyIsIG9wZXJhbmQudG9Bcmd1bWVudCgpKTsKKyAgICAgICAgaW50IG9wZXJhbmQgPSBub2Rl
LT51bmxpbmtlZExvY2FsKCk7CisgICAgICAgIGlmIChvcGVyYW5kSXNBcmd1bWVudChvcGVyYW5k
KSkKKyAgICAgICAgICAgIG91dC5wcmludChjb21tYSwgImFyZyIsIG9wZXJhbmRUb0FyZ3VtZW50
KG9wZXJhbmQpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAi
bG9jIiwgb3BlcmFuZC50b0xvY2FsKCkpOworICAgICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAi
bG9jIiwgb3BlcmFuZFRvTG9jYWwob3BlcmFuZCkpOwogICAgIH0KICAgICBpZiAobm9kZS0+aGFz
Q29uc3RhbnRCdWZmZXIoKSkgewogICAgICAgICBvdXQucHJpbnQoY29tbWEpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdHcmFwaC5oCmluZGV4IGMyM2ZhZjQ3MTg3YzljMTRkZGVkOWQxZjE4ZGRi
NzhhZDNjZjAyNzAuLjE5MWJjNzc5OGMyNTMyODcyNzY4MTMzYTQyODgyMjk4YjIwODQwYjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKQEAgLTQyOSwxNyArNDI5LDE3IEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuIGhhc0V4aXRTaXRlKG5vZGUtPmNvZGVPcmlnaW4sIGV4aXRL
aW5kKTsKICAgICB9CiAgICAgCi0gICAgVmlydHVhbFJlZ2lzdGVyIGFyZ3VtZW50c1JlZ2lzdGVy
Rm9yKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4pCisgICAgaW50IGFyZ3VtZW50c1JlZ2lz
dGVyRm9yKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4pCiAgICAgewogICAgICAgICBpZiAo
IWNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKQogICAgICAgICAgICAgcmV0dXJuIG1fY29kZUJs
b2NrLT5hcmd1bWVudHNSZWdpc3RlcigpOwogICAgICAgICAKLSAgICAgICAgcmV0dXJuIFZpcnR1
YWxSZWdpc3RlcihiYXNlbGluZUNvZGVCbG9ja0ZvcklubGluZUNhbGxGcmFtZSgKLSAgICAgICAg
ICAgIGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKS0+YXJndW1lbnRzUmVnaXN0ZXIoKS5vZmZz
ZXQoKSArCi0gICAgICAgICAgICBjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZz
ZXQpOworICAgICAgICByZXR1cm4gYmFzZWxpbmVDb2RlQmxvY2tGb3JJbmxpbmVDYWxsRnJhbWUo
CisgICAgICAgICAgICBjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSktPmFyZ3VtZW50c1JlZ2lz
dGVyKCkgKworICAgICAgICAgICAgY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zm
c2V0OwogICAgIH0KICAgICAKLSAgICBWaXJ0dWFsUmVnaXN0ZXIgdW5jaGVja2VkQXJndW1lbnRz
UmVnaXN0ZXJGb3IoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbikKKyAgICBpbnQgdW5jaGVj
a2VkQXJndW1lbnRzUmVnaXN0ZXJGb3IoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbikKICAg
ICB7CiAgICAgICAgIGlmICghY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUpCiAgICAgICAgICAg
ICByZXR1cm4gbV9jb2RlQmxvY2stPnVuY2hlY2tlZEFyZ3VtZW50c1JlZ2lzdGVyKCk7CkBAIC00
NDcsMTMgKzQ0NywxMyBAQCBwdWJsaWM6CiAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0g
YmFzZWxpbmVDb2RlQmxvY2tGb3JJbmxpbmVDYWxsRnJhbWUoCiAgICAgICAgICAgICBjb2RlT3Jp
Z2luLmlubGluZUNhbGxGcmFtZSk7CiAgICAgICAgIGlmICghY29kZUJsb2NrLT51c2VzQXJndW1l
bnRzKCkpCi0gICAgICAgICAgICByZXR1cm4gVmlydHVhbFJlZ2lzdGVyKCk7CisgICAgICAgICAg
ICByZXR1cm4gSW52YWxpZFZpcnR1YWxSZWdpc3RlcjsKICAgICAgICAgCi0gICAgICAgIHJldHVy
biBWaXJ0dWFsUmVnaXN0ZXIoY29kZUJsb2NrLT5hcmd1bWVudHNSZWdpc3RlcigpLm9mZnNldCgp
ICsKLSAgICAgICAgICAgIGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCk7
CisgICAgICAgIHJldHVybiBjb2RlQmxvY2stPmFyZ3VtZW50c1JlZ2lzdGVyKCkgKworICAgICAg
ICAgICAgY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0OwogICAgIH0KICAg
ICAKLSAgICBWaXJ0dWFsUmVnaXN0ZXIgdW5jaGVja2VkQWN0aXZhdGlvblJlZ2lzdGVyRm9yKGNv
bnN0IENvZGVPcmlnaW4mKQorICAgIGludCB1bmNoZWNrZWRBY3RpdmF0aW9uUmVnaXN0ZXJGb3Io
Y29uc3QgQ29kZU9yaWdpbiYpCiAgICAgewogICAgICAgICAvLyBUaGlzIHdpbGwgaWdub3JlIENv
ZGVPcmlnaW4gYmVjYXVzZSB3ZSBkb24ndCBpbmxpbmUgY29kZSB0aGF0IHVzZXMgYWN0aXZhdGlv
bnMuCiAgICAgICAgIC8vIEhlbmNlIGZvciBpbmxpbmVkIGNhbGwgZnJhbWVzIGl0IHdpbGwgcmV0
dXJuIHRoZSBvdXRlcm1vc3QgY29kZSBibG9jaydzCkBAIC00NzIsMTQgKzQ3MiwxNCBAQCBwdWJs
aWM6CiAgICAgICAgIENvZGVCbG9jayogcHJvZmlsZWRCbG9jayA9IGJhc2VsaW5lQ29kZUJsb2Nr
Rm9yKG5vZGUtPmNvZGVPcmlnaW4pOwogICAgICAgICAKICAgICAgICAgaWYgKG5vZGUtPm9wKCkg
PT0gR2V0QXJndW1lbnQpCi0gICAgICAgICAgICByZXR1cm4gcHJvZmlsZWRCbG9jay0+dmFsdWVQ
cm9maWxlRm9yQXJndW1lbnQobm9kZS0+bG9jYWwoKS50b0FyZ3VtZW50KCkpOworICAgICAgICAg
ICAgcmV0dXJuIHByb2ZpbGVkQmxvY2stPnZhbHVlUHJvZmlsZUZvckFyZ3VtZW50KG9wZXJhbmRU
b0FyZ3VtZW50KG5vZGUtPmxvY2FsKCkpKTsKICAgICAgICAgCiAgICAgICAgIGlmIChub2RlLT5o
YXNMb2NhbCgqdGhpcykpIHsKICAgICAgICAgICAgIGlmIChtX2Zvcm0gPT0gU1NBKQogICAgICAg
ICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgaWYgKCFub2RlLT5sb2NhbCgpLmlzQXJn
dW1lbnQoKSkKKyAgICAgICAgICAgIGlmICghb3BlcmFuZElzQXJndW1lbnQobm9kZS0+bG9jYWwo
KSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICBpbnQgYXJndW1lbnQg
PSBub2RlLT5sb2NhbCgpLnRvQXJndW1lbnQoKTsKKyAgICAgICAgICAgIGludCBhcmd1bWVudCA9
IG9wZXJhbmRUb0FyZ3VtZW50KG5vZGUtPmxvY2FsKCkpOwogICAgICAgICAgICAgaWYgKG5vZGUt
PnZhcmlhYmxlQWNjZXNzRGF0YSgpICE9IG1fYXJndW1lbnRzW2FyZ3VtZW50XS0+dmFyaWFibGVB
Y2Nlc3NEYXRhKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICByZXR1
cm4gcHJvZmlsZWRCbG9jay0+dmFsdWVQcm9maWxlRm9yQXJndW1lbnQoYXJndW1lbnQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5jcHAKaW5kZXggZDE2MzZiYzYyNDE2MjU3
NmRmMzg0NTIzZTlmOTc4MWEyMDdiNjVhYy4uYTBkYjVhNDEyZTkxYTA0YTI0MDVkY2EwYjZiOGJh
ZjNkNWZiMjI2MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRD
b2RlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuY3BwCkBA
IC04MSw3ICs4MSw3IEBAIHZvaWQgSklUQ29kZTo6cmVjb25zdHJ1Y3QoCiAgICAgICAgIGludCBv
cGVyYW5kID0gcmVzdWx0Lm9wZXJhbmRGb3JJbmRleChpKTsKICAgICAgICAgCiAgICAgICAgIGlm
IChvcGVyYW5kSXNBcmd1bWVudChvcGVyYW5kKQotICAgICAgICAgICAgJiYgIVZpcnR1YWxSZWdp
c3RlcihvcGVyYW5kKS50b0FyZ3VtZW50KCkKKyAgICAgICAgICAgICYmICFvcGVyYW5kVG9Bcmd1
bWVudChvcGVyYW5kKQogICAgICAgICAgICAgJiYgY29kZUJsb2NrLT5jb2RlVHlwZSgpID09IEZ1
bmN0aW9uQ29kZQogICAgICAgICAgICAgJiYgY29kZUJsb2NrLT5zcGVjaWFsaXphdGlvbktpbmQo
KSA9PSBDb2RlRm9yQ29uc3RydWN0KSB7CiAgICAgICAgICAgICAvLyBVZ2guIElmIHdlJ3JlIGlu
IGEgY29uc3RydWN0b3IsIHRoZSAndGhpcycgYXJndW1lbnQgbWF5IGhvbGQgZ2FyYmFnZS4gSXQg
d2lsbApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAppbmRleCBmNTczMzY0MWQ2YTFjZWYy
ZDQyYzgyNTg4YzVmOTNmY2EwYTFiZTQ1Li5jOGRiYjFlZTkxOWZhZWQ3YjBhMTA0MTlmYTc2Nzkw
ZTVhZDhlYjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaApAQCAtMTY0LDcgKzE2
NCw3IEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAgOiBjb2RlT3JpZ2luKGNvZGVPcmlnaW4pCiAg
ICAgICAgICwgY29kZU9yaWdpbkZvckV4aXRUYXJnZXQoY29kZU9yaWdpbikKICAgICAgICAgLCBj
aGlsZHJlbihjaGlsZHJlbikKLSAgICAgICAgLCBtX3ZpcnR1YWxSZWdpc3RlcihWaXJ0dWFsUmVn
aXN0ZXIoKSkKKyAgICAgICAgLCBtX3ZpcnR1YWxSZWdpc3RlcihJbnZhbGlkVmlydHVhbFJlZ2lz
dGVyKQogICAgICAgICAsIG1fcmVmQ291bnQoMSkKICAgICAgICAgLCBtX3ByZWRpY3Rpb24oU3Bl
Y05vbmUpCiAgICAgewpAQCAtMTc3LDcgKzE3Nyw3IEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAg
OiBjb2RlT3JpZ2luKGNvZGVPcmlnaW4pCiAgICAgICAgICwgY29kZU9yaWdpbkZvckV4aXRUYXJn
ZXQoY29kZU9yaWdpbikKICAgICAgICAgLCBjaGlsZHJlbihBZGphY2VuY3lMaXN0OjpGaXhlZCwg
Y2hpbGQxLCBjaGlsZDIsIGNoaWxkMykKLSAgICAgICAgLCBtX3ZpcnR1YWxSZWdpc3RlcihWaXJ0
dWFsUmVnaXN0ZXIoKSkKKyAgICAgICAgLCBtX3ZpcnR1YWxSZWdpc3RlcihJbnZhbGlkVmlydHVh
bFJlZ2lzdGVyKQogICAgICAgICAsIG1fcmVmQ291bnQoMSkKICAgICAgICAgLCBtX3ByZWRpY3Rp
b24oU3BlY05vbmUpCiAgICAgewpAQCAtMTkxLDcgKzE5MSw3IEBAIHN0cnVjdCBOb2RlIHsKICAg
ICAgICAgOiBjb2RlT3JpZ2luKGNvZGVPcmlnaW4pCiAgICAgICAgICwgY29kZU9yaWdpbkZvckV4
aXRUYXJnZXQoY29kZU9yaWdpbikKICAgICAgICAgLCBjaGlsZHJlbihBZGphY2VuY3lMaXN0OjpG
aXhlZCwgY2hpbGQxLCBjaGlsZDIsIGNoaWxkMykKLSAgICAgICAgLCBtX3ZpcnR1YWxSZWdpc3Rl
cihWaXJ0dWFsUmVnaXN0ZXIoKSkKKyAgICAgICAgLCBtX3ZpcnR1YWxSZWdpc3RlcihJbnZhbGlk
VmlydHVhbFJlZ2lzdGVyKQogICAgICAgICAsIG1fcmVmQ291bnQoMSkKICAgICAgICAgLCBtX3By
ZWRpY3Rpb24oU3BlY05vbmUpCiAgICAgICAgICwgbV9vcEluZm8oaW1tLm1fdmFsdWUpCkBAIC0y
MDYsNyArMjA2LDcgQEAgc3RydWN0IE5vZGUgewogICAgICAgICA6IGNvZGVPcmlnaW4oY29kZU9y
aWdpbikKICAgICAgICAgLCBjb2RlT3JpZ2luRm9yRXhpdFRhcmdldChjb2RlT3JpZ2luKQogICAg
ICAgICAsIGNoaWxkcmVuKEFkamFjZW5jeUxpc3Q6OkZpeGVkLCBjaGlsZDEsIGNoaWxkMiwgY2hp
bGQzKQotICAgICAgICAsIG1fdmlydHVhbFJlZ2lzdGVyKFZpcnR1YWxSZWdpc3RlcigpKQorICAg
ICAgICAsIG1fdmlydHVhbFJlZ2lzdGVyKEludmFsaWRWaXJ0dWFsUmVnaXN0ZXIpCiAgICAgICAg
ICwgbV9yZWZDb3VudCgxKQogICAgICAgICAsIG1fcHJlZGljdGlvbihTcGVjTm9uZSkKICAgICAg
ICAgLCBtX29wSW5mbyhpbW0xLm1fdmFsdWUpCkBAIC0yMjIsNyArMjIyLDcgQEAgc3RydWN0IE5v
ZGUgewogICAgICAgICA6IGNvZGVPcmlnaW4oY29kZU9yaWdpbikKICAgICAgICAgLCBjb2RlT3Jp
Z2luRm9yRXhpdFRhcmdldChjb2RlT3JpZ2luKQogICAgICAgICAsIGNoaWxkcmVuKEFkamFjZW5j
eUxpc3Q6OlZhcmlhYmxlLCBmaXJzdENoaWxkLCBudW1DaGlsZHJlbikKLSAgICAgICAgLCBtX3Zp
cnR1YWxSZWdpc3RlcihWaXJ0dWFsUmVnaXN0ZXIoKSkKKyAgICAgICAgLCBtX3ZpcnR1YWxSZWdp
c3RlcihJbnZhbGlkVmlydHVhbFJlZ2lzdGVyKQogICAgICAgICAsIG1fcmVmQ291bnQoMSkKICAg
ICAgICAgLCBtX3ByZWRpY3Rpb24oU3BlY05vbmUpCiAgICAgICAgICwgbV9vcEluZm8oaW1tMS5t
X3ZhbHVlKQpAQCAtMzkwLDcgKzM5MCw3IEBAIHN0cnVjdCBOb2RlIHsKICAgICB7CiAgICAgICAg
IG1fb3AgPSBHZXRMb2NhbFVubGlua2VkOwogICAgICAgICBtX2ZsYWdzICY9IH4oTm9kZU11c3RH
ZW5lcmF0ZSB8IE5vZGVNaWdodENsb2JiZXIgfCBOb2RlQ2xvYmJlcnNXb3JsZCk7Ci0gICAgICAg
IG1fb3BJbmZvID0gbG9jYWwub2Zmc2V0KCk7CisgICAgICAgIG1fb3BJbmZvID0gbG9jYWw7CiAg
ICAgICAgIGNoaWxkcmVuLnJlc2V0KCk7CiAgICAgfQogICAgIApAQCAtMTA1NywyMCArMTA1Nywy
MCBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgCiAgICAgYm9vbCBoYXNWaXJ0dWFsUmVnaXN0ZXIoKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIG1fdmlydHVhbFJlZ2lzdGVyLmlzVmFsaWQoKTsKKyAgICAg
ICAgcmV0dXJuIG1fdmlydHVhbFJlZ2lzdGVyICE9IEludmFsaWRWaXJ0dWFsUmVnaXN0ZXI7CiAg
ICAgfQogICAgIAogICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIoKQogICAgIHsK
ICAgICAgICAgQVNTRVJUKGhhc1Jlc3VsdCgpKTsKLSAgICAgICAgQVNTRVJUKG1fdmlydHVhbFJl
Z2lzdGVyLmlzVmFsaWQoKSk7CisgICAgICAgIEFTU0VSVChtX3ZpcnR1YWxSZWdpc3RlciAhPSBJ
bnZhbGlkVmlydHVhbFJlZ2lzdGVyKTsKICAgICAgICAgcmV0dXJuIG1fdmlydHVhbFJlZ2lzdGVy
OwogICAgIH0KICAgICAKICAgICB2b2lkIHNldFZpcnR1YWxSZWdpc3RlcihWaXJ0dWFsUmVnaXN0
ZXIgdmlydHVhbFJlZ2lzdGVyKQogICAgIHsKICAgICAgICAgQVNTRVJUKGhhc1Jlc3VsdCgpKTsK
LSAgICAgICAgQVNTRVJUKCFtX3ZpcnR1YWxSZWdpc3Rlci5pc1ZhbGlkKCkpOworICAgICAgICBB
U1NFUlQobV92aXJ0dWFsUmVnaXN0ZXIgPT0gSW52YWxpZFZpcnR1YWxSZWdpc3Rlcik7CiAgICAg
ICAgIG1fdmlydHVhbFJlZ2lzdGVyID0gdmlydHVhbFJlZ2lzdGVyOwogICAgIH0KICAgICAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnkuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5jcHAKaW5kZXggMDFkZGJjM2JiZDE2
YTgyOGYzZGVkZmU2M2FjYjQ3YzA3ZGM2ZjRlOC4uNTk5ZjQ1YTc2YjFhOTgzMmIzMDQ1YjUwODE1
OGFjMWFhN2JlZmEwOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
U1JFbnRyeS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5j
cHAKQEAgLTEzOCwzNSArMTM4LDM0IEBAIHZvaWQqIHByZXBhcmVPU1JFbnRyeShFeGVjU3RhdGUq
IGV4ZWMsIENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUluCiAgICAgfQog
ICAgIAogICAgIGZvciAoc2l6ZV90IGxvY2FsID0gMDsgbG9jYWwgPCBlbnRyeS0+bV9leHBlY3Rl
ZFZhbHVlcy5udW1iZXJPZkxvY2FscygpOyArK2xvY2FsKSB7Ci0gICAgICAgIGludCBsb2NhbE9m
ZnNldCA9IHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxvY2FsKS5vZmZzZXQoKTsKICAgICAgICAg
aWYgKGVudHJ5LT5tX2xvY2Fsc0ZvcmNlZERvdWJsZS5nZXQobG9jYWwpKSB7Ci0gICAgICAgICAg
ICBpZiAoIWV4ZWMtPnJlZ2lzdGVycygpW2xvY2FsT2Zmc2V0XS5qc1ZhbHVlKCkuaXNOdW1iZXIo
KSkgeworICAgICAgICAgICAgaWYgKCFleGVjLT5yZWdpc3RlcnMoKVtsb2NhbFRvT3BlcmFuZChs
b2NhbCldLmpzVmFsdWUoKS5pc051bWJlcigpKSB7CiAgICAgICAgICAgICAgICAgaWYgKE9wdGlv
bnM6OnZlcmJvc2VPU1IoKSkgewogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKAotICAgICAg
ICAgICAgICAgICAgICAgICAgIiAgICBPU1IgZmFpbGVkIGJlY2F1c2UgdmFyaWFibGUgIiwgbG9j
YWxPZmZzZXQsICIgaXMgIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWMtPnJlZ2lzdGVy
cygpW2xvY2FsT2Zmc2V0XS5qc1ZhbHVlKCksICIsIGV4cGVjdGVkIG51bWJlci5cbiIpOworICAg
ICAgICAgICAgICAgICAgICAgICAgIiAgICBPU1IgZmFpbGVkIGJlY2F1c2UgdmFyaWFibGUgIiwg
bG9jYWxUb09wZXJhbmQobG9jYWwpLCAiIGlzICIsCisgICAgICAgICAgICAgICAgICAgICAgICBl
eGVjLT5yZWdpc3RlcnMoKVtsb2NhbFRvT3BlcmFuZChsb2NhbCldLmpzVmFsdWUoKSwgIiwgZXhw
ZWN0ZWQgbnVtYmVyLlxuIik7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHJl
dHVybiAwOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0K
ICAgICAgICAgaWYgKGVudHJ5LT5tX2xvY2Fsc0ZvcmNlZE1hY2hpbmVJbnQuZ2V0KGxvY2FsKSkg
ewotICAgICAgICAgICAgaWYgKCFleGVjLT5yZWdpc3RlcnMoKVtsb2NhbE9mZnNldF0uanNWYWx1
ZSgpLmlzTWFjaGluZUludCgpKSB7CisgICAgICAgICAgICBpZiAoIWV4ZWMtPnJlZ2lzdGVycygp
W2xvY2FsVG9PcGVyYW5kKGxvY2FsKV0uanNWYWx1ZSgpLmlzTWFjaGluZUludCgpKSB7CiAgICAg
ICAgICAgICAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkgewogICAgICAgICAgICAgICAg
ICAgICBkYXRhTG9nKAotICAgICAgICAgICAgICAgICAgICAgICAgIiAgICBPU1IgZmFpbGVkIGJl
Y2F1c2UgdmFyaWFibGUgIiwgbG9jYWxPZmZzZXQsICIgaXMgIiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGV4ZWMtPnJlZ2lzdGVycygpW2xvY2FsT2Zmc2V0XS5qc1ZhbHVlKCksICIsIGV4cGVj
dGVkICIsCisgICAgICAgICAgICAgICAgICAgICAgICAiICAgIE9TUiBmYWlsZWQgYmVjYXVzZSB2
YXJpYWJsZSAiLCBsb2NhbFRvT3BlcmFuZChsb2NhbCksICIgaXMgIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGV4ZWMtPnJlZ2lzdGVycygpW2xvY2FsVG9PcGVyYW5kKGxvY2FsKV0uanNWYWx1
ZSgpLCAiLCBleHBlY3RlZCAiLAogICAgICAgICAgICAgICAgICAgICAgICAgIm1hY2hpbmUgaW50
LlxuIik7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICAgICAgaWYg
KCFlbnRyeS0+bV9leHBlY3RlZFZhbHVlcy5sb2NhbChsb2NhbCkudmFsaWRhdGUoZXhlYy0+cmVn
aXN0ZXJzKClbbG9jYWxPZmZzZXRdLmpzVmFsdWUoKSkpIHsKKyAgICAgICAgaWYgKCFlbnRyeS0+
bV9leHBlY3RlZFZhbHVlcy5sb2NhbChsb2NhbCkudmFsaWRhdGUoZXhlYy0+cmVnaXN0ZXJzKClb
bG9jYWxUb09wZXJhbmQobG9jYWwpXS5qc1ZhbHVlKCkpKSB7CiAgICAgICAgICAgICBpZiAoT3B0
aW9uczo6dmVyYm9zZU9TUigpKSB7CiAgICAgICAgICAgICAgICAgZGF0YUxvZygKLSAgICAgICAg
ICAgICAgICAgICAgIiAgICBPU1IgZmFpbGVkIGJlY2F1c2UgdmFyaWFibGUgIiwgbG9jYWxPZmZz
ZXQsICIgaXMgIiwKLSAgICAgICAgICAgICAgICAgICAgZXhlYy0+cmVnaXN0ZXJzKClbbG9jYWxP
ZmZzZXRdLmpzVmFsdWUoKSwgIiwgZXhwZWN0ZWQgIiwKKyAgICAgICAgICAgICAgICAgICAgIiAg
ICBPU1IgZmFpbGVkIGJlY2F1c2UgdmFyaWFibGUgIiwgbG9jYWxUb09wZXJhbmQobG9jYWwpLCAi
IGlzICIsCisgICAgICAgICAgICAgICAgICAgIGV4ZWMtPnJlZ2lzdGVycygpW2xvY2FsVG9PcGVy
YW5kKGxvY2FsKV0uanNWYWx1ZSgpLCAiLCBleHBlY3RlZCAiLAogICAgICAgICAgICAgICAgICAg
ICBlbnRyeS0+bV9leHBlY3RlZFZhbHVlcy5sb2NhbChsb2NhbCksICIuXG4iKTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIHJldHVybiAwOwpAQCAtMTgwLDcgKzE3OSw3IEBAIHZvaWQqIHBy
ZXBhcmVPU1JFbnRyeShFeGVjU3RhdGUqIGV4ZWMsIENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNp
Z25lZCBieXRlY29kZUluCiAgICAgLy8gICAgaXQgc2VlbXMgc2lsbHk6IHlvdSdkIGJlIGRpdmVy
dGluZyB0aGUgcHJvZ3JhbSB0byBlcnJvciBoYW5kbGluZyB3aGVuIGl0CiAgICAgLy8gICAgd291
bGQgaGF2ZSBvdGhlcndpc2UganVzdCBrZXB0IHJ1bm5pbmcgYWxiZWl0IGxlc3MgcXVpY2tseS4K
ICAgICAKLSAgICBpZiAoIXZtLT5pbnRlcnByZXRlci0+c3RhY2soKS5ncm93KCZleGVjLT5yZWdp
c3RlcnMoKVt2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChjb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVn
aXN0ZXJzKS5vZmZzZXQoKV0pKSB7CisgICAgaWYgKCF2bS0+aW50ZXJwcmV0ZXItPnN0YWNrKCku
Z3JvdygmZXhlYy0+cmVnaXN0ZXJzKClbbG9jYWxUb09wZXJhbmQoY29kZUJsb2NrLT5tX251bUNh
bGxlZVJlZ2lzdGVycyldKSkgewogICAgICAgICBpZiAoT3B0aW9uczo6dmVyYm9zZU9TUigpKQog
ICAgICAgICAgICAgZGF0YUxvZ0YoIiAgICBPU1IgZmFpbGVkIGJlY2F1c2Ugc3RhY2sgZ3Jvd3Ro
IGZhaWxlZC5cbiIpOwogICAgICAgICByZXR1cm4gMDsKQEAgLTE5Miw5ICsxOTEsOSBAQCB2b2lk
KiBwcmVwYXJlT1NSRW50cnkoRXhlY1N0YXRlKiBleGVjLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywg
dW5zaWduZWQgYnl0ZWNvZGVJbgogICAgIC8vIDMpIFBlcmZvcm0gZGF0YSBmb3JtYXQgY29udmVy
c2lvbnMuCiAgICAgZm9yIChzaXplX3QgbG9jYWwgPSAwOyBsb2NhbCA8IGVudHJ5LT5tX2V4cGVj
dGVkVmFsdWVzLm51bWJlck9mTG9jYWxzKCk7ICsrbG9jYWwpIHsKICAgICAgICAgaWYgKGVudHJ5
LT5tX2xvY2Fsc0ZvcmNlZERvdWJsZS5nZXQobG9jYWwpKQotICAgICAgICAgICAgKmJpdHdpc2Vf
Y2FzdDxkb3VibGUqPihleGVjLT5yZWdpc3RlcnMoKSArIHZpcnR1YWxSZWdpc3RlckZvckxvY2Fs
KGxvY2FsKS5vZmZzZXQoKSkgPSBleGVjLT5yZWdpc3RlcnMoKVt2aXJ0dWFsUmVnaXN0ZXJGb3JM
b2NhbChsb2NhbCkub2Zmc2V0KCldLmpzVmFsdWUoKS5hc051bWJlcigpOworICAgICAgICAgICAg
KmJpdHdpc2VfY2FzdDxkb3VibGUqPihleGVjLT5yZWdpc3RlcnMoKSArIGxvY2FsVG9PcGVyYW5k
KGxvY2FsKSkgPSBleGVjLT5yZWdpc3RlcnMoKVtsb2NhbFRvT3BlcmFuZChsb2NhbCldLmpzVmFs
dWUoKS5hc051bWJlcigpOwogICAgICAgICBpZiAoZW50cnktPm1fbG9jYWxzRm9yY2VkTWFjaGlu
ZUludC5nZXQobG9jYWwpKQotICAgICAgICAgICAgKmJpdHdpc2VfY2FzdDxpbnQ2NF90Kj4oZXhl
Yy0+cmVnaXN0ZXJzKCkgKyB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChsb2NhbCkub2Zmc2V0KCkp
ID0gZXhlYy0+cmVnaXN0ZXJzKClbdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobG9jYWwpLm9mZnNl
dCgpXS5qc1ZhbHVlKCkuYXNNYWNoaW5lSW50KCkgPDwgSlNWYWx1ZTo6aW50NTJTaGlmdEFtb3Vu
dDsKKyAgICAgICAgICAgICpiaXR3aXNlX2Nhc3Q8aW50NjRfdCo+KGV4ZWMtPnJlZ2lzdGVycygp
ICsgbG9jYWxUb09wZXJhbmQobG9jYWwpKSA9IGV4ZWMtPnJlZ2lzdGVycygpW2xvY2FsVG9PcGVy
YW5kKGxvY2FsKV0uanNWYWx1ZSgpLmFzTWFjaGluZUludCgpIDw8IEpTVmFsdWU6OmludDUyU2hp
ZnRBbW91bnQ7CiAgICAgfQogICAgIAogICAgIC8vIDQpIEZpeCB0aGUgY2FsbCBmcmFtZS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnlwb2ludENyZWF0
aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeXBvaW50
Q3JlYXRpb25QaGFzZS5jcHAKaW5kZXggZjk4Y2ZlOGExNjQ0N2JlN2MxNDA3Nzk0YzQxN2RiNWIx
ZTdmNDVmMy4uZWY0ZjRiY2YwZGY5OTljMGQ1M2M4OTk0NzUzNjgwYWVmYjM3ODMzMSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeXBvaW50Q3JlYXRpb25Q
aGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeXBvaW50
Q3JlYXRpb25QaGFzZS5jcHAKQEAgLTEwMSw3ICsxMDEsNyBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlID0gcHJldmlvdXNIZWFkLT52YXJpYWJsZUFj
Y2Vzc0RhdGEoKTsKICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBuZXdSb290LT5hcHBlbmROb2Rl
KAogICAgICAgICAgICAgICAgIG1fZ3JhcGgsIHZhcmlhYmxlLT5wcmVkaWN0aW9uKCksIEV4dHJh
Y3RPU1JFbnRyeUxvY2FsLCBjb2RlT3JpZ2luLAotICAgICAgICAgICAgICAgIE9wSW5mbyh2YXJp
YWJsZS0+bG9jYWwoKS5vZmZzZXQoKSkpOworICAgICAgICAgICAgICAgIE9wSW5mbyh2YXJpYWJs
ZS0+bG9jYWwoKSkpOwogICAgICAgICAgICAgbmV3Um9vdC0+YXBwZW5kTm9kZSgKICAgICAgICAg
ICAgICAgICBtX2dyYXBoLCBTcGVjTm9uZSwgU2V0TG9jYWwsIGNvZGVPcmlnaW4sIE9wSW5mbyh2
YXJpYWJsZSksIEVkZ2Uobm9kZSkpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT1NSRXhpdC5oCmluZGV4IGUzZjIxOTkxYmFiYTMzMWZjMzMxYzA1MDBiZmE5YTc2OWI2ODI3
Y2IuLjE5ZWU1MDQ2OWY5OTJmNmFhNmNlZWNlNDU4NGNlYWNmYWU4YTRiMDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5oCkBAIC0xMDYsNyArMTA2LDcgQEAgc3RydWN0IE9T
UkV4aXQgOiBwdWJsaWMgT1NSRXhpdEJhc2UgewogICAgIHZvaWQgY29udmVydFRvRm9yd2FyZChC
YXNpY0Jsb2NrKiwgTm9kZSosIHVuc2lnbmVkIG5vZGVJbmRleCwgY29uc3QgVmFsdWVSZWNvdmVy
eSYpOwogCiAgICAgdW5zaWduZWQgbV9zdHJlYW1JbmRleDsKLSAgICBWaXJ0dWFsUmVnaXN0ZXIg
bV9sYXN0U2V0T3BlcmFuZDsKKyAgICBpbnQgbV9sYXN0U2V0T3BlcmFuZDsKICAgICAKICAgICBS
ZWZQdHI8VmFsdWVSZWNvdmVyeU92ZXJyaWRlPiBtX3ZhbHVlUmVjb3ZlcnlPdmVycmlkZTsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxl
cjMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVy
MzJfNjQuY3BwCmluZGV4IDM1MzU0Y2Q2MGZjNzZmMTE5ZGVlM2Y4YzlkYTNiYTRmMzA1NTI4MDEu
LmYyNWFkMjQyNGU1ZDg0NDQ3Y2VlNGZmOWE5YjRhMmJhNjRiOWNmMTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyMzJfNjQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyMzJfNjQuY3BwCkBA
IC0yMDEsNyArMjAxLDcgQEAgdm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KGNvbnN0
IE9TUkV4aXQmIGV4aXQsIGNvbnN0IE9wZXJhbmRzPFZhbHVlUmVjb3YKICAgICAgICAgY2FzZSBD
ZWxsRGlzcGxhY2VkSW5KU1N0YWNrOgogICAgICAgICBjYXNlIEJvb2xlYW5EaXNwbGFjZWRJbkpT
U3RhY2s6IHsKICAgICAgICAgICAgIG51bWJlck9mRGlzcGxhY2VkVmlydHVhbFJlZ2lzdGVycysr
OwotICAgICAgICAgICAgQVNTRVJUKHJlY292ZXJ5LnZpcnR1YWxSZWdpc3RlcigpLmlzTG9jYWwo
KSk7CisgICAgICAgICAgICBBU1NFUlQob3BlcmFuZElzTG9jYWwocmVjb3ZlcnkudmlydHVhbFJl
Z2lzdGVyKCkpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gU2VlIGlmIHdlIG1pZ2h0
IGxpa2UgdG8gc3RvcmUgdG8gdGhpcyB2aXJ0dWFsIHJlZ2lzdGVyIGJlZm9yZSBkb2luZwogICAg
ICAgICAgICAgLy8gdmlydHVhbCByZWdpc3RlciBzaHVmZmxpbmcuIElmIHNvLCB3ZSBzYXkgdGhh
dCB0aGUgdmlydHVhbCByZWdpc3RlcgpAQCAtMjEwLDcgKzIxMCw3IEBAIHZvaWQgT1NSRXhpdENv
bXBpbGVyOjpjb21waWxlRXhpdChjb25zdCBPU1JFeGl0JiBleGl0LCBjb25zdCBPcGVyYW5kczxW
YWx1ZVJlY292CiAgICAgICAgICAgICAvLyB0byBlbnN1cmUgdGhpcyBoYXBwZW5zIGVmZmljaWVu
dGx5LiBOb3RlIHRoYXQgd2UgZXhwZWN0IHRoaXMgY2FzZQogICAgICAgICAgICAgLy8gdG8gYmUg
cmFyZSwgc28gdGhlIGhhbmRsaW5nIG9mIGl0IGlzIG9wdGltaXplZCBmb3IgdGhlIGNhc2VzIGlu
CiAgICAgICAgICAgICAvLyB3aGljaCBpdCBkb2VzIG5vdCBoYXBwZW4uCi0gICAgICAgICAgICBp
bnQgbG9jYWwgPSByZWNvdmVyeS52aXJ0dWFsUmVnaXN0ZXIoKS50b0xvY2FsKCk7CisgICAgICAg
ICAgICBpbnQgbG9jYWwgPSBvcGVyYW5kVG9Mb2NhbChyZWNvdmVyeS52aXJ0dWFsUmVnaXN0ZXIo
KSk7CiAgICAgICAgICAgICBpZiAobG9jYWwgPCAoaW50KW9wZXJhbmRzLm51bWJlck9mTG9jYWxz
KCkpIHsKICAgICAgICAgICAgICAgICBzd2l0Y2ggKG9wZXJhbmRzLmxvY2FsKGxvY2FsKS50ZWNo
bmlxdWUoKSkgewogICAgICAgICAgICAgICAgIGNhc2UgSW5HUFI6CkBAIC01MzUsMTkgKzUzNSwx
NyBAQCB2b2lkIE9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQoY29uc3QgT1NSRXhpdCYgZXhp
dCwgY29uc3QgT3BlcmFuZHM8VmFsdWVSZWNvdgogICAgIC8vIDkpIER1bXAgYWxsIHBvaXNvbmVk
IHZpcnR1YWwgcmVnaXN0ZXJzLgogICAgIAogICAgIGlmIChudW1iZXJPZlBvaXNvbmVkVmlydHVh
bFJlZ2lzdGVycykgewotICAgICAgICBmb3IgKGludCBsb2NhbEluZGV4ID0gMDsgbG9jYWxJbmRl
eCA8IChpbnQpb3BlcmFuZHMubnVtYmVyT2ZMb2NhbHMoKTsgKytsb2NhbEluZGV4KSB7Ci0gICAg
ICAgICAgICBpZiAoIXBvaXNvbmVkVmlydHVhbFJlZ2lzdGVyc1tsb2NhbEluZGV4XSkKKyAgICAg
ICAgZm9yIChpbnQgdmlydHVhbFJlZ2lzdGVyID0gMDsgdmlydHVhbFJlZ2lzdGVyIDwgKGludClv
cGVyYW5kcy5udW1iZXJPZkxvY2FscygpOyArK3ZpcnR1YWxSZWdpc3RlcikgeworICAgICAgICAg
ICAgaWYgKCFwb2lzb25lZFZpcnR1YWxSZWdpc3RlcnNbdmlydHVhbFJlZ2lzdGVyXSkKICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgVmlydHVhbFJl
Z2lzdGVyIHZpcnR1YWxSZWdpc3RlciA9IHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxvY2FsSW5k
ZXgpOwotCi0gICAgICAgICAgICBjb25zdCBWYWx1ZVJlY292ZXJ5JiByZWNvdmVyeSA9IG9wZXJh
bmRzLmxvY2FsKGxvY2FsSW5kZXgpOworICAgICAgICAgICAgY29uc3QgVmFsdWVSZWNvdmVyeSYg
cmVjb3ZlcnkgPSBvcGVyYW5kcy5sb2NhbCh2aXJ0dWFsUmVnaXN0ZXIpOwogICAgICAgICAgICAg
c3dpdGNoIChyZWNvdmVyeS50ZWNobmlxdWUoKSkgewogICAgICAgICAgICAgY2FzZSBJbkdQUjoK
ICAgICAgICAgICAgIGNhc2UgVW5ib3hlZEludDMySW5HUFI6CiAgICAgICAgICAgICBjYXNlIFVu
Ym94ZWRCb29sZWFuSW5HUFI6IHsKLSAgICAgICAgICAgICAgICBtX2ppdC5sb2FkMzIocmVpbnRl
cnByZXRfY2FzdDxjaGFyKj4oc2NyYXRjaERhdGFCdWZmZXIgKyBwb2lzb25JbmRleChsb2NhbElu
ZGV4KSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBh
eWxvYWQpLCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgICAgICAgICAgbV9qaXQuc3RvcmUzMihH
UFJJbmZvOjpyZWdUMCwgQXNzZW1ibHlIZWxwZXJzOjpwYXlsb2FkRm9yKHZpcnR1YWxSZWdpc3Rl
cikpOworICAgICAgICAgICAgICAgIG1faml0LmxvYWQzMihyZWludGVycHJldF9jYXN0PGNoYXIq
PihzY3JhdGNoRGF0YUJ1ZmZlciArIHBvaXNvbkluZGV4KHZpcnR1YWxSZWdpc3RlcikpICsgT0JK
RUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSwgR1BS
SW5mbzo6cmVnVDApOworICAgICAgICAgICAgICAgIG1faml0LnN0b3JlMzIoR1BSSW5mbzo6cmVn
VDAsIEFzc2VtYmx5SGVscGVyczo6cGF5bG9hZEZvcigoVmlydHVhbFJlZ2lzdGVyKWxvY2FsVG9P
cGVyYW5kKHZpcnR1YWxSZWdpc3RlcikpKTsKICAgICAgICAgICAgICAgICB1aW50MzJfdCB0YWcg
PSBKU1ZhbHVlOjpFbXB0eVZhbHVlVGFnOwogICAgICAgICAgICAgICAgIGlmIChyZWNvdmVyeS50
ZWNobmlxdWUoKSA9PSBJbkdQUikKICAgICAgICAgICAgICAgICAgICAgdGFnID0gSlNWYWx1ZTo6
Q2VsbFRhZzsKQEAgLTU1NSwxNyArNTUzLDE3IEBAIHZvaWQgT1NSRXhpdENvbXBpbGVyOjpjb21w
aWxlRXhpdChjb25zdCBPU1JFeGl0JiBleGl0LCBjb25zdCBPcGVyYW5kczxWYWx1ZVJlY292CiAg
ICAgICAgICAgICAgICAgICAgIHRhZyA9IEpTVmFsdWU6OkludDMyVGFnOwogICAgICAgICAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgdGFnID0gSlNWYWx1ZTo6Qm9vbGVhblRhZzsK
LSAgICAgICAgICAgICAgICBtX2ppdC5zdG9yZTMyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZElt
bTMyKHRhZyksIEFzc2VtYmx5SGVscGVyczo6dGFnRm9yKHZpcnR1YWxSZWdpc3RlcikpOworICAg
ICAgICAgICAgICAgIG1faml0LnN0b3JlMzIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIo
dGFnKSwgQXNzZW1ibHlIZWxwZXJzOjp0YWdGb3IoKFZpcnR1YWxSZWdpc3Rlcilsb2NhbFRvT3Bl
cmFuZCh2aXJ0dWFsUmVnaXN0ZXIpKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICB9CiAKICAgICAgICAgICAgIGNhc2UgSW5GUFI6CiAgICAgICAgICAgICBjYXNlIEluUGFp
cjoKICAgICAgICAgICAgIGNhc2UgVUludDMySW5HUFI6Ci0gICAgICAgICAgICAgICAgbV9qaXQu
bG9hZDMyKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHNjcmF0Y2hEYXRhQnVmZmVyICsgcG9pc29u
SW5kZXgobG9jYWxJbmRleCkpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0
b3IsIGFzQml0cy5wYXlsb2FkKSwgR1BSSW5mbzo6cmVnVDApOwotICAgICAgICAgICAgICAgIG1f
aml0LmxvYWQzMihyZWludGVycHJldF9jYXN0PGNoYXIqPihzY3JhdGNoRGF0YUJ1ZmZlciArIHBv
aXNvbkluZGV4KGxvY2FsSW5kZXgpKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNj
cmlwdG9yLCBhc0JpdHMudGFnKSwgR1BSSW5mbzo6cmVnVDEpOwotICAgICAgICAgICAgICAgIG1f
aml0LnN0b3JlMzIoR1BSSW5mbzo6cmVnVDAsIEFzc2VtYmx5SGVscGVyczo6cGF5bG9hZEZvcih2
aXJ0dWFsUmVnaXN0ZXIpKTsKLSAgICAgICAgICAgICAgICBtX2ppdC5zdG9yZTMyKEdQUkluZm86
OnJlZ1QxLCBBc3NlbWJseUhlbHBlcnM6OnRhZ0Zvcih2aXJ0dWFsUmVnaXN0ZXIpKTsKKyAgICAg
ICAgICAgICAgICBtX2ppdC5sb2FkMzIocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oc2NyYXRjaERh
dGFCdWZmZXIgKyBwb2lzb25JbmRleCh2aXJ0dWFsUmVnaXN0ZXIpKSArIE9CSkVDVF9PRkZTRVRP
RihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCksIEdQUkluZm86OnJlZ1Qw
KTsKKyAgICAgICAgICAgICAgICBtX2ppdC5sb2FkMzIocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4o
c2NyYXRjaERhdGFCdWZmZXIgKyBwb2lzb25JbmRleCh2aXJ0dWFsUmVnaXN0ZXIpKSArIE9CSkVD
VF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSwgR1BSSW5mbzo6
cmVnVDEpOworICAgICAgICAgICAgICAgIG1faml0LnN0b3JlMzIoR1BSSW5mbzo6cmVnVDAsIEFz
c2VtYmx5SGVscGVyczo6cGF5bG9hZEZvcigoVmlydHVhbFJlZ2lzdGVyKWxvY2FsVG9PcGVyYW5k
KHZpcnR1YWxSZWdpc3RlcikpKTsKKyAgICAgICAgICAgICAgICBtX2ppdC5zdG9yZTMyKEdQUklu
Zm86OnJlZ1QxLCBBc3NlbWJseUhlbHBlcnM6OnRhZ0ZvcigoVmlydHVhbFJlZ2lzdGVyKWxvY2Fs
VG9PcGVyYW5kKHZpcnR1YWxSZWdpc3RlcikpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgICAgICAKICAgICAgICAgICAgIGRlZmF1bHQ6CkBAIC03MDgsOSArNzA2LDkgQEAg
dm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KGNvbnN0IE9TUkV4aXQmIGV4aXQsIGNv
bnN0IE9wZXJhbmRzPFZhbHVlUmVjb3YKICAgICAKICAgICAvLyAxNSkgTG9hZCB0aGUgcmVzdWx0
IG9mIHRoZSBsYXN0IGJ5dGVjb2RlIG9wZXJhdGlvbiBpbnRvIHJlZ1QwLgogICAgIAotICAgIGlm
IChleGl0Lm1fbGFzdFNldE9wZXJhbmQuaXNWYWxpZCgpKSB7Ci0gICAgICAgIG1faml0LmxvYWQz
MihBc3NlbWJseUhlbHBlcnM6OnBheWxvYWRGb3IoZXhpdC5tX2xhc3RTZXRPcGVyYW5kKSwgR1BS
SW5mbzo6Y2FjaGVkUmVzdWx0UmVnaXN0ZXIpOwotICAgICAgICBtX2ppdC5sb2FkMzIoQXNzZW1i
bHlIZWxwZXJzOjp0YWdGb3IoZXhpdC5tX2xhc3RTZXRPcGVyYW5kKSwgR1BSSW5mbzo6Y2FjaGVk
UmVzdWx0UmVnaXN0ZXIyKTsKKyAgICBpZiAoZXhpdC5tX2xhc3RTZXRPcGVyYW5kICE9IHN0ZDo6
bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCkpIHsKKyAgICAgICAgbV9qaXQubG9hZDMyKEFzc2Vt
Ymx5SGVscGVyczo6cGF5bG9hZEZvcigoVmlydHVhbFJlZ2lzdGVyKWV4aXQubV9sYXN0U2V0T3Bl
cmFuZCksIEdQUkluZm86OmNhY2hlZFJlc3VsdFJlZ2lzdGVyKTsKKyAgICAgICAgbV9qaXQubG9h
ZDMyKEFzc2VtYmx5SGVscGVyczo6dGFnRm9yKChWaXJ0dWFsUmVnaXN0ZXIpZXhpdC5tX2xhc3RT
ZXRPcGVyYW5kKSwgR1BSSW5mbzo6Y2FjaGVkUmVzdWx0UmVnaXN0ZXIyKTsKICAgICB9CiAgICAg
CiAgICAgLy8gMTYpIEFuZCBmaW5pc2guCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT1NSRXhpdENvbXBpbGVyNjQuY3BwCmluZGV4IDc0ZDJiOThkNTU3MGViNmE2N2Y2ZTBi
ODA1MWY1NjAwZjUyNGM0NGUuLjUyM2FjMzg5M2IxYmJmOTdhYzQzZTcxYjRkZjRlNTJmYTE2YTVl
M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBp
bGVyNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBp
bGVyNjQuY3BwCkBAIC0zMSw4ICszMSw2IEBACiAjaW5jbHVkZSAiREZHT3BlcmF0aW9ucy5oIgog
I2luY2x1ZGUgIkRGR09TUkV4aXRDb21waWxlckNvbW1vbi5oIgogI2luY2x1ZGUgIk9wZXJhdGlv
bnMuaCIKLSNpbmNsdWRlICJWaXJ0dWFsUmVnaXN0ZXIuaCIKLQogI2luY2x1ZGUgPHd0Zi9EYXRh
TG9nLmg+CiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKQEAgLTM5Niw3ICszOTQs
NyBAQCB2b2lkIE9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQoY29uc3QgT1NSRXhpdCYgZXhp
dCwgY29uc3QgT3BlcmFuZHM8VmFsdWVSZWNvdgogCiAgICAgICAgICAgICBpZiAoIW1faml0LmJh
c2VsaW5lQ29kZUJsb2NrRm9yKGlubGluZUNhbGxGcmFtZSktPnVzZXNBcmd1bWVudHMoKSkKICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBhcmd1
bWVudHNSZWdpc3RlciA9IG1faml0LmFyZ3VtZW50c1JlZ2lzdGVyRm9yKGlubGluZUNhbGxGcmFt
ZSk7CisgICAgICAgICAgICBpbnQgYXJndW1lbnRzUmVnaXN0ZXIgPSBtX2ppdC5hcmd1bWVudHNS
ZWdpc3RlckZvcihpbmxpbmVDYWxsRnJhbWUpOwogICAgICAgICAgICAgaWYgKGRpZENyZWF0ZUFy
Z3VtZW50c09iamVjdC5hZGQoaW5saW5lQ2FsbEZyYW1lKS5pc05ld0VudHJ5KSB7CiAgICAgICAg
ICAgICAgICAgLy8gV2Uga25vdyB0aGlzIGNhbGwgZnJhbWUgb3B0aW1pemVkIG91dCBhbiBhcmd1
bWVudHMgb2JqZWN0IHRoYXQKICAgICAgICAgICAgICAgICAvLyB0aGUgYmFzZWxpbmUgSklUIHdv
dWxkIGhhdmUgY3JlYXRlZC4gRG8gdGhhdCBjcmVhdGlvbiBub3cuCkBAIC00MjQsNyArNDIyLDcg
QEAgdm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KGNvbnN0IE9TUkV4aXQmIGV4aXQs
IGNvbnN0IE9wZXJhbmRzPFZhbHVlUmVjb3YKICAgICAKICAgICAvLyAxMCkgTG9hZCB0aGUgcmVz
dWx0IG9mIHRoZSBsYXN0IGJ5dGVjb2RlIG9wZXJhdGlvbiBpbnRvIHJlZ1QwLgogICAgIAotICAg
IGlmIChleGl0Lm1fbGFzdFNldE9wZXJhbmQuaXNWYWxpZCgpKQorICAgIGlmIChleGl0Lm1fbGFz
dFNldE9wZXJhbmQgIT0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptYXgoKSkKICAgICAgICAg
bV9qaXQubG9hZDY0KEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcihleGl0Lm1fbGFzdFNldE9w
ZXJhbmQpLCBHUFJJbmZvOjpjYWNoZWRSZXN1bHRSZWdpc3Rlcik7CiAgICAgCiAgICAgLy8gMTEp
IEFuZCBmaW5pc2guCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Jl
Z2lzdGVyQmFuay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZWdpc3RlckJhbmsu
aAppbmRleCBmZmE4MjJhMTg0Yzg1YzRjYzExNTNmZWY2YmYzZDdmMGMwMTQ4NDU3Li4wZGJhZWM0
Zjc1OTYxZTgyNjgwNWI2ZTAwZTc3YTIwMmYzN2NhYmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1JlZ2lzdGVyQmFuay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUmVnaXN0ZXJCYW5rLmgKQEAgLTg1LDEwICs4NSwxMCBAQCBwdWJsaWM6CiAg
ICAgLy8gcmV0dXJucyAtMSAoSW52YWxpZEdQUlJlZyBvciBJbnZhbGlkRlBSUmVnKS4KICAgICBS
ZWdJRCB0cnlBbGxvY2F0ZSgpCiAgICAgewotICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgaWdub3Jl
ZCA9IFZpcnR1YWxSZWdpc3RlcigpOworICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgaWdub3JlZDsK
ICAgICAgICAgCiAgICAgICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBOVU1fUkVHUzsgKytp
KSB7Ci0gICAgICAgICAgICBpZiAoIW1fZGF0YVtpXS5sb2NrQ291bnQgJiYgIW1fZGF0YVtpXS5u
YW1lLmlzVmFsaWQoKSkKKyAgICAgICAgICAgIGlmICghbV9kYXRhW2ldLmxvY2tDb3VudCAmJiBt
X2RhdGFbaV0ubmFtZSA9PSBJbnZhbGlkVmlydHVhbFJlZ2lzdGVyKQogICAgICAgICAgICAgICAg
IHJldHVybiBhbGxvY2F0ZUludGVybmFsKGksIGlnbm9yZWQpOwogICAgICAgICB9CiAgICAgICAg
IApAQCAtMTQ3LDcgKzE0Nyw3IEBAIHB1YmxpYzoKIAogICAgICAgICArK21fZGF0YVtpbmRleF0u
bG9ja0NvdW50OwogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgbmFtZSA9IG5hbWVBdEluZGV4KGlu
ZGV4KTsKLSAgICAgICAgaWYgKG5hbWUuaXNWYWxpZCgpKQorICAgICAgICBpZiAobmFtZSAhPSBJ
bnZhbGlkVmlydHVhbFJlZ2lzdGVyKQogICAgICAgICAgICAgcmVsZWFzZUF0SW5kZXgoaW5kZXgp
OwogICAgICAgICAKICAgICAgICAgcmV0dXJuIG5hbWU7CkBAIC0xNjUsOCArMTY1LDggQEAgcHVi
bGljOgogICAgICAgICBBU1NFUlQoaW5kZXggPCBOVU1fUkVHUyk7CiAgICAgICAgIEFTU0VSVCht
X2RhdGFbaW5kZXhdLmxvY2tDb3VudCk7CiAgICAgICAgIC8vICdpbmRleCcgc2hvdWxkIG5vdCBj
dXJyZW50bHkgYmUgbmFtZWQsIHRoZSBuZXcgbmFtZSBtdXN0IGJlIHZhbGlkLgotICAgICAgICBB
U1NFUlQoIW1fZGF0YVtpbmRleF0ubmFtZS5pc1ZhbGlkKCkpOwotICAgICAgICBBU1NFUlQobmFt
ZS5pc1ZhbGlkKCkpOworICAgICAgICBBU1NFUlQobV9kYXRhW2luZGV4XS5uYW1lID09IEludmFs
aWRWaXJ0dWFsUmVnaXN0ZXIpOworICAgICAgICBBU1NFUlQobmFtZSAhPSBJbnZhbGlkVmlydHVh
bFJlZ2lzdGVyKTsKICAgICAgICAgLy8gJ2luZGV4JyBzaG91bGQgbm90IGN1cnJlbnRseSBoYXZl
IGEgc3BpbGxPcmRlci4KICAgICAgICAgQVNTRVJUKG1fZGF0YVtpbmRleF0uc3BpbGxPcmRlciA9
PSBTcGlsbEhpbnRJbnZhbGlkKTsKIApAQCAtMjAxLDcgKzIwMSw3IEBAIHB1YmxpYzoKICAgICB9
CiAKICAgICAvLyBHZXQgdGhlIG5hbWUgKFZpcnR1YWxSZWdpc3RlcikgYXNzb2NpYXRlZCB3aXRo
IHRoZQotICAgIC8vIGdpdmVuIHJlZ2lzdGVyIChvciBkZWZhdWx0IFZpcnR1YWxSZWdpc3Rlcigp
IGZvciBub25lKS4KKyAgICAvLyBnaXZlbiByZWdpc3RlciAob3IgSW52YWxpZFZpcnR1YWxSZWdp
c3RlciBmb3Igbm9uZSkuCiAgICAgVmlydHVhbFJlZ2lzdGVyIG5hbWUoUmVnSUQgcmVnKSBjb25z
dAogICAgIHsKICAgICAgICAgcmV0dXJuIG5hbWVBdEluZGV4KEJhbmtJbmZvOjp0b0luZGV4KHJl
ZykpOwpAQCAtMjA5LDcgKzIwOSw3IEBAIHB1YmxpYzoKICAgICAKICAgICBib29sIGlzSW5Vc2Uo
UmVnSUQgcmVnKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIGlzTG9ja2VkKHJlZykgfHwg
bmFtZShyZWcpLmlzVmFsaWQoKTsKKyAgICAgICAgcmV0dXJuIGlzTG9ja2VkKHJlZykgfHwgbmFt
ZShyZWcpICE9IEludmFsaWRWaXJ0dWFsUmVnaXN0ZXI7CiAgICAgfQogICAgIAogI2lmbmRlZiBO
REVCVUcKQEAgLTIxNyw4ICsyMTcsOCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICAvLyBGb3Ig
ZWFjaCByZWdpc3RlciwgcHJpbnQgdGhlIFZpcnR1YWxSZWdpc3RlciAnbmFtZScuCiAgICAgICAg
IGZvciAodWludDMyX3QgaSA9MDsgaSA8IE5VTV9SRUdTOyArK2kpIHsKLSAgICAgICAgICAgIGlm
IChtX2RhdGFbaV0ubmFtZS5pc1ZhbGlkKCkpCi0gICAgICAgICAgICAgICAgZGF0YUxvZ0YoIlsl
MDJkXSIsIG1fZGF0YVtpXS5uYW1lLm9mZnNldCgpKTsKKyAgICAgICAgICAgIGlmIChtX2RhdGFb
aV0ubmFtZSAhPSBJbnZhbGlkVmlydHVhbFJlZ2lzdGVyKQorICAgICAgICAgICAgICAgIGRhdGFM
b2dGKCJbJTAyZF0iLCBtX2RhdGFbaV0ubmFtZSk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAg
ICAgICAgICAgZGF0YUxvZ0YoIlstLV0iKTsKICAgICAgICAgfQpAQCAtMzEyLDExICszMTIsMTEg
QEAgcHJpdmF0ZToKICAgICAgICAgLy8gJ2luZGV4JyBtdXN0IGJlIGEgdmFsaWQgcmVnaXN0ZXIu
CiAgICAgICAgIEFTU0VSVChpbmRleCA8IE5VTV9SRUdTKTsKICAgICAgICAgLy8gJ2luZGV4JyBz
aG91bGQgY3VycmVudGx5IGJlIG5hbWVkLgotICAgICAgICBBU1NFUlQobV9kYXRhW2luZGV4XS5u
YW1lLmlzVmFsaWQoKSk7CisgICAgICAgIEFTU0VSVChtX2RhdGFbaW5kZXhdLm5hbWUgIT0gSW52
YWxpZFZpcnR1YWxSZWdpc3Rlcik7CiAgICAgICAgIC8vICdpbmRleCcgc2hvdWxkIGN1cnJlbnRs
eSBoYXZlIGEgdmFsaWQgc3BpbGwgb3JkZXIuCiAgICAgICAgIEFTU0VSVChtX2RhdGFbaW5kZXhd
LnNwaWxsT3JkZXIgIT0gU3BpbGxIaW50SW52YWxpZCk7CiAKLSAgICAgICAgbV9kYXRhW2luZGV4
XS5uYW1lID0gVmlydHVhbFJlZ2lzdGVyKCk7CisgICAgICAgIG1fZGF0YVtpbmRleF0ubmFtZSA9
IEludmFsaWRWaXJ0dWFsUmVnaXN0ZXI7CiAgICAgICAgIG1fZGF0YVtpbmRleF0uc3BpbGxPcmRl
ciA9IFNwaWxsSGludEludmFsaWQ7CiAgICAgfQogCkBAIC0zMjcsNyArMzI3LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgQVNTRVJUKGkgPCBOVU1fUkVHUyAmJiAhbV9kYXRhW2ldLmxvY2tDb3VudCk7
CiAKICAgICAgICAgLy8gUmV0dXJuIHRoZSBWaXJ0dWFsUmVnaXN0ZXIgb2YgdGhlIG5hbWVkIHZh
bHVlIGN1cnJlbnRseSBzdG9yZWQgaW4KLSAgICAgICAgLy8gdGhlIHJlZ2lzdGVyIGJlaW5nIHJl
dHVybmVkIC0gb3IgZGVmYXVsdCBWaXJ0dWFsUmVnaXN0ZXIoKSBpZiBub25lLgorICAgICAgICAv
LyB0aGUgcmVnaXN0ZXIgYmVpbmcgcmV0dXJuZWQgLSBvciBJbnZhbGlkVmlydHVhbFJlZ2lzdGVy
IGlmIG5vbmUuCiAgICAgICAgIHNwaWxsTWUgPSBtX2RhdGFbaV0ubmFtZTsKIAogICAgICAgICAv
LyBDbGVhciBhbnkgbmFtZS9zcGlsbE9yZGVyIGN1cnJlbnRseSBhc3NvY2lhdGVkIHdpdGggdGhl
IHJlZ2lzdGVyLApAQCAtMzQ1LDcgKzM0NSw3IEBAIHByaXZhdGU6CiAgICAgLy8gY291bnQsIG5h
bWUgYW5kIHNwaWxsT3JkZXIgaGludC4KICAgICBzdHJ1Y3QgTWFwRW50cnkgewogICAgICAgICBN
YXBFbnRyeSgpCi0gICAgICAgICAgICA6IG5hbWUoVmlydHVhbFJlZ2lzdGVyKCkpCisgICAgICAg
ICAgICA6IG5hbWUoSW52YWxpZFZpcnR1YWxSZWdpc3RlcikKICAgICAgICAgICAgICwgc3BpbGxP
cmRlcihTcGlsbEhpbnRJbnZhbGlkKQogICAgICAgICAgICAgLCBsb2NrQ291bnQoMCkKICAgICAg
ICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTY29yZUJvYXJk
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Njb3JlQm9hcmQuaAppbmRleCAwZjI0
ZjRlMzY2MjJhMDhiMjE3MmJlNDVjNWIwMDdjNzM0YzgwZTU2Li5mMGMxN2U1YzY3YTM5ZjRmNjFj
NWQxNTcwNDVmOGU2ZTIzNTA1NGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1Njb3JlQm9hcmQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nj
b3JlQm9hcmQuaApAQCAtODksMTQgKzg5LDE0IEBAIHB1YmxpYzoKICAgICAgICAgICAgIC8vIFVz
ZSBjb3VudCBtdXN0IGhhdmUgaGl0IHplcm8gZm9yIGl0IHRvIGhhdmUgYmVlbiBhZGRlZCB0byB0
aGUgZnJlZSBsaXN0IQogICAgICAgICAgICAgQVNTRVJUKCFtX3VzZWRbaW5kZXhdKTsKICAgICAg
ICAgICAgIG1faGlnaFdhdGVybWFyayA9IHN0ZDo6bWF4KG1faGlnaFdhdGVybWFyaywgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KGluZGV4KSArIDEpOwotICAgICAgICAgICAgcmV0dXJuIHZpcnR1YWxS
ZWdpc3RlckZvckxvY2FsKGluZGV4KTsKKyAgICAgICAgICAgIHJldHVybiAoVmlydHVhbFJlZ2lz
dGVyKWxvY2FsVG9PcGVyYW5kKGluZGV4KTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIEFsbG9j
YXRlIGEgbmV3IFZpcnR1YWxSZWdpc3RlciwgYW5kIGFkZCBhIGNvcnJlc3BvbmRpbmcgZW50cnkg
dG8gbV91c2VkLgogICAgICAgICBzaXplX3QgbmV4dCA9IG1fdXNlZC5zaXplKCk7CiAgICAgICAg
IG1fdXNlZC5hcHBlbmQoMCk7CiAgICAgICAgIG1faGlnaFdhdGVybWFyayA9IHN0ZDo6bWF4KG1f
aGlnaFdhdGVybWFyaywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG5leHQpICsgMSk7Ci0gICAgICAg
IHJldHVybiB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChuZXh0KTsKKyAgICAgICAgcmV0dXJuIChW
aXJ0dWFsUmVnaXN0ZXIpbG9jYWxUb09wZXJhbmQobmV4dCk7CiAgICAgfQogCiAgICAgLy8gSW5j
cmVtZW50IHRoZSB1c2Vjb3VudCBmb3IgdGhlIFZpcnR1YWxSZWdpc3RlciBhc3NvY2lhdGVkIHdp
dGggJ2NoaWxkJywKQEAgLTEwNyw3ICsxMDcsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1
cm47CiAKICAgICAgICAgLy8gRmluZCB0aGUgdmlydHVhbCByZWdpc3RlciBudW1iZXIgZm9yIHRo
aXMgY2hpbGQsIGluY3JlbWVudCBpdHMgdXNlIGNvdW50LgotICAgICAgICB1aW50MzJfdCBpbmRl
eCA9IGNoaWxkLT52aXJ0dWFsUmVnaXN0ZXIoKS50b0xvY2FsKCk7CisgICAgICAgIHVpbnQzMl90
IGluZGV4ID0gb3BlcmFuZFRvTG9jYWwoY2hpbGQtPnZpcnR1YWxSZWdpc3RlcigpKTsKICAgICAg
ICAgQVNTRVJUKG1fdXNlZFtpbmRleF0gIT0gbWF4KCkpOwogICAgICAgICBpZiAoY2hpbGQtPnJl
ZkNvdW50KCkgPT0gKyttX3VzZWRbaW5kZXhdKSB7CiAjaWYgREZHX0VOQUJMRShERUJVR19QUk9Q
QUdBVElPTl9WRVJCT1NFKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcAppbmRleCBmMzc3NWU4MjE2MDVjZTRhNDdhNGM4M2ZmNjkxN2Q5OGViZWMx
YzQyLi5iZjNmNmZiYTA0MWI3ZjhlOTFhMTNmMmNiNzU1ODUzNGMwOTU4OWQzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtNDgsNyAr
NDgsNyBAQCBTcGVjdWxhdGl2ZUpJVDo6U3BlY3VsYXRpdmVKSVQoSklUQ29tcGlsZXImIGppdCkK
ICAgICAsIG1fZ2VuZXJhdGlvbkluZm8obV9qaXQuY29kZUJsb2NrKCktPm1fbnVtQ2FsbGVlUmVn
aXN0ZXJzKQogICAgICwgbV9hcmd1bWVudHMoaml0LmNvZGVCbG9jaygpLT5udW1QYXJhbWV0ZXJz
KCkpCiAgICAgLCBtX3ZhcmlhYmxlcyhqaXQuZ3JhcGgoKS5tX2xvY2FsVmFycykKLSAgICAsIG1f
bGFzdFNldE9wZXJhbmQoVmlydHVhbFJlZ2lzdGVyKCkpCisgICAgLCBtX2xhc3RTZXRPcGVyYW5k
KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCkpCiAgICAgLCBtX3N0YXRlKG1faml0Lmdy
YXBoKCkpCiAgICAgLCBtX2ludGVycHJldGVyKG1faml0LmdyYXBoKCksIG1fc3RhdGUpCiAgICAg
LCBtX3N0cmVhbSgmaml0LmppdENvZGUoKS0+dmFyaWFibGVFdmVudFN0cmVhbSkKQEAgLTExODMs
NyArMTE4Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNoZWNrQ29uc2lzdGVuY3koKQogCiAg
ICAgZm9yIChncHJfaXRlcmF0b3IgaXRlciA9IG1fZ3Bycy5iZWdpbigpOyBpdGVyICE9IG1fZ3By
cy5lbmQoKTsgKytpdGVyKSB7CiAgICAgICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0
ZXIgPSBpdGVyLm5hbWUoKTsKLSAgICAgICAgaWYgKCF2aXJ0dWFsUmVnaXN0ZXIuaXNWYWxpZCgp
KQorICAgICAgICBpZiAodmlydHVhbFJlZ2lzdGVyID09IEludmFsaWRWaXJ0dWFsUmVnaXN0ZXIp
CiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBHZW5lcmF0aW9uSW5mbyYgaW5mbyA9
IGdlbmVyYXRpb25JbmZvRnJvbVZpcnR1YWxSZWdpc3Rlcih2aXJ0dWFsUmVnaXN0ZXIpOwpAQCAt
MTIwOSw3ICsxMjA5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2hlY2tDb25zaXN0ZW5jeSgp
CiAKICAgICBmb3IgKGZwcl9pdGVyYXRvciBpdGVyID0gbV9mcHJzLmJlZ2luKCk7IGl0ZXIgIT0g
bV9mcHJzLmVuZCgpOyArK2l0ZXIpIHsKICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxS
ZWdpc3RlciA9IGl0ZXIubmFtZSgpOwotICAgICAgICBpZiAoIXZpcnR1YWxSZWdpc3Rlci5pc1Zh
bGlkKCkpCisgICAgICAgIGlmICh2aXJ0dWFsUmVnaXN0ZXIgPT0gSW52YWxpZFZpcnR1YWxSZWdp
c3RlcikKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIEdlbmVyYXRpb25JbmZvJiBp
bmZvID0gZ2VuZXJhdGlvbkluZm9Gcm9tVmlydHVhbFJlZ2lzdGVyKHZpcnR1YWxSZWdpc3Rlcik7
CkBAIC0xNTM4LDcgKzE1MzgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTW92SGlu
dChOb2RlKiBub2RlKQogICAgIGlmIChjaGlsZC0+b3AoKSA9PSBVSW50MzJUb051bWJlcikKICAg
ICAgICAgbm90aWNlT1NSQmlydGgoY2hpbGQtPmNoaWxkMSgpLm5vZGUoKSk7CiAgICAgCi0gICAg
bV9zdHJlYW0tPmFwcGVuZEFuZExvZyhWYXJpYWJsZUV2ZW50Ojptb3ZIaW50KE1pbmlmaWVkSUQo
Y2hpbGQpLCBub2RlLT5sb2NhbCgpLm9mZnNldCgpKSk7CisgICAgbV9zdHJlYW0tPmFwcGVuZEFu
ZExvZyhWYXJpYWJsZUV2ZW50Ojptb3ZIaW50KE1pbmlmaWVkSUQoY2hpbGQpLCBub2RlLT5sb2Nh
bCgpKSk7CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVNb3ZIaW50QW5kQ2hlY2so
Tm9kZSogbm9kZSkKQEAgLTE1NTYsNyArMTU1Niw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVJbmxpbmVTdGFydChOb2RlKiBub2RlKQogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0g
YmFzZWxpbmVDb2RlQmxvY2tGb3JJbmxpbmVDYWxsRnJhbWUoaW5saW5lQ2FsbEZyYW1lKTsKICAg
ICBmb3IgKGludCBpID0gMDsgaSA8IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOyArK2kpIHsK
ICAgICAgICAgVmFsdWVSZWNvdmVyeSByZWNvdmVyeTsKLSAgICAgICAgaWYgKGNvZGVCbG9jay0+
aXNDYXB0dXJlZCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKSkpCisgICAgICAgIGlmIChj
b2RlQmxvY2stPmlzQ2FwdHVyZWQoYXJndW1lbnRUb09wZXJhbmQoaSkpKQogICAgICAgICAgICAg
cmVjb3ZlcnkgPSBWYWx1ZVJlY292ZXJ5OjphbHJlYWR5SW5KU1N0YWNrKCk7CiAgICAgICAgIGVs
c2UgewogICAgICAgICAgICAgQXJndW1lbnRQb3NpdGlvbiYgYXJndW1lbnRQb3NpdGlvbiA9CkBA
IC0xNjM5LDcgKzE2MzksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3VycmVudEJs
b2NrKCkKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fYXJndW1lbnRzLnNpemUoKTsgKytp
KSB7CiAgICAgICAgIFZhbHVlU291cmNlIHZhbHVlU291cmNlID0gVmFsdWVTb3VyY2UoVmFsdWVJ
bkpTU3RhY2spOwogICAgICAgICBtX2FyZ3VtZW50c1tpXSA9IHZhbHVlU291cmNlOwotICAgICAg
ICBtX3N0cmVhbS0+YXBwZW5kQW5kTG9nKFZhcmlhYmxlRXZlbnQ6OnNldExvY2FsKHZpcnR1YWxS
ZWdpc3RlckZvckFyZ3VtZW50KGkpLCB2YWx1ZVNvdXJjZS5kYXRhRm9ybWF0KCkpKTsKKyAgICAg
ICAgbV9zdHJlYW0tPmFwcGVuZEFuZExvZyhWYXJpYWJsZUV2ZW50OjpzZXRMb2NhbChhcmd1bWVu
dFRvT3BlcmFuZChpKSwgdmFsdWVTb3VyY2UuZGF0YUZvcm1hdCgpKSk7CiAgICAgfQogICAgIAog
ICAgIG1fc3RhdGUucmVzZXQoKTsKQEAgLTE2NTksMTAgKzE2NTksMTAgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUN1cnJlbnRCbG9jaygpCiAgICAgICAgICAgICB2YWx1ZVNvdXJjZSA9
IFZhbHVlU291cmNlOjpmb3JGbHVzaEZvcm1hdChub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+
Zmx1c2hGb3JtYXQoKSk7CiAgICAgICAgIG1fdmFyaWFibGVzW2ldID0gdmFsdWVTb3VyY2U7CiAg
ICAgICAgIC8vIEZJWE1FOiBEb24ndCBlbWl0IFNldExvY2FsKERlYWQpLiBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA4MDE5Ci0gICAgICAgIG1fc3RyZWFtLT5hcHBl
bmRBbmRMb2coVmFyaWFibGVFdmVudDo6c2V0TG9jYWwodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwo
aSksIHZhbHVlU291cmNlLmRhdGFGb3JtYXQoKSkpOworICAgICAgICBtX3N0cmVhbS0+YXBwZW5k
QW5kTG9nKFZhcmlhYmxlRXZlbnQ6OnNldExvY2FsKGxvY2FsVG9PcGVyYW5kKGkpLCB2YWx1ZVNv
dXJjZS5kYXRhRm9ybWF0KCkpKTsKICAgICB9CiAgICAgCi0gICAgbV9sYXN0U2V0T3BlcmFuZCA9
IFZpcnR1YWxSZWdpc3RlcigpOworICAgIG1fbGFzdFNldE9wZXJhbmQgPSBzdGQ6Om51bWVyaWNf
bGltaXRzPGludD46Om1heCgpOwogICAgIG1fY29kZU9yaWdpbkZvckV4aXRUYXJnZXQgPSBDb2Rl
T3JpZ2luKCk7CiAgICAgbV9jb2RlT3JpZ2luRm9yRXhpdFByb2ZpbGUgPSBDb2RlT3JpZ2luKCk7
CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgK
aW5kZXggOGM0YjI5YjBmY2EwN2Y3Y2IxMGQ4ZmNlMWJiZjIzOWEzM2Q1NTg2YS4uNGFiNTQwNDkx
YzZmOGM5NWJiZjUyZGU5YzQyNjA5MTlhNjhmMDYyZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaApAQCAtNDEsNyArNDEsNiBAQAogI2luY2x1ZGUg
IkRGR1ZhbHVlU291cmNlLmgiCiAjaW5jbHVkZSAiTWFya2VkQWxsb2NhdG9yLmgiCiAjaW5jbHVk
ZSAiVmFsdWVSZWNvdmVyeS5oIgotI2luY2x1ZGUgIlZpcnR1YWxSZWdpc3Rlci5oIgogCiBuYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKQEAgLTE4NSw3ICsxODQsNyBAQCBwdWJsaWM6
CiAjZW5kaWYKICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHNwaWxsTWU7CiAgICAgICAgIEdQUlJl
ZyBncHIgPSBtX2dwcnMuYWxsb2NhdGUoc3BpbGxNZSk7Ci0gICAgICAgIGlmIChzcGlsbE1lLmlz
VmFsaWQoKSkgeworICAgICAgICBpZiAoc3BpbGxNZSAhPSBJbnZhbGlkVmlydHVhbFJlZ2lzdGVy
KSB7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICAgICAgICAgIEdlbmVyYXRpb25JbmZvJiBp
bmZvID0gZ2VuZXJhdGlvbkluZm9Gcm9tVmlydHVhbFJlZ2lzdGVyKHNwaWxsTWUpOwogICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoaW5mby5yZWdpc3RlckZvcm1hdCgpICE9IERhdGFGb3JtYXRK
U0RvdWJsZSk7CkBAIC0yMDIsNyArMjAxLDcgQEAgcHVibGljOgogICAgICAgICBtX2ppdC5hZGRS
ZWdpc3RlckFsbG9jYXRpb25BdE9mZnNldChtX2ppdC5kZWJ1Z09mZnNldCgpKTsKICNlbmRpZgog
ICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgc3BpbGxNZSA9IG1fZ3Bycy5hbGxvY2F0ZVNwZWNpZmlj
KHNwZWNpZmljKTsKLSAgICAgICAgaWYgKHNwaWxsTWUuaXNWYWxpZCgpKSB7CisgICAgICAgIGlm
IChzcGlsbE1lICE9IEludmFsaWRWaXJ0dWFsUmVnaXN0ZXIpIHsKICNpZiBVU0UoSlNWQUxVRTMy
XzY0KQogICAgICAgICAgICAgR2VuZXJhdGlvbkluZm8mIGluZm8gPSBnZW5lcmF0aW9uSW5mb0Zy
b21WaXJ0dWFsUmVnaXN0ZXIoc3BpbGxNZSk7CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChp
bmZvLnJlZ2lzdGVyRm9ybWF0KCkgIT0gRGF0YUZvcm1hdEpTRG91YmxlKTsKQEAgLTIyNCw3ICsy
MjMsNyBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHNwaWxsTWU7
CiAgICAgICAgIEZQUlJlZyBmcHIgPSBtX2ZwcnMuYWxsb2NhdGUoc3BpbGxNZSk7Ci0gICAgICAg
IGlmIChzcGlsbE1lLmlzVmFsaWQoKSkKKyAgICAgICAgaWYgKHNwaWxsTWUgIT0gSW52YWxpZFZp
cnR1YWxSZWdpc3RlcikKICAgICAgICAgICAgIHNwaWxsKHNwaWxsTWUpOwogICAgICAgICByZXR1
cm4gZnByOwogICAgIH0KQEAgLTM2MSw3ICszNjAsNyBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VS
VChwbGFucy5pc0VtcHR5KCkpOwogICAgICAgICBmb3IgKGdwcl9pdGVyYXRvciBpdGVyID0gbV9n
cHJzLmJlZ2luKCk7IGl0ZXIgIT0gbV9ncHJzLmVuZCgpOyArK2l0ZXIpIHsKICAgICAgICAgICAg
IEdQUlJlZyBncHIgPSBpdGVyLnJlZ0lEKCk7Ci0gICAgICAgICAgICBpZiAoaXRlci5uYW1lKCku
aXNWYWxpZCgpICYmIGdwciAhPSBleGNsdWRlICYmIGdwciAhPSBleGNsdWRlMikgeworICAgICAg
ICAgICAgaWYgKGl0ZXIubmFtZSgpICE9IEludmFsaWRWaXJ0dWFsUmVnaXN0ZXIgJiYgZ3ByICE9
IGV4Y2x1ZGUgJiYgZ3ByICE9IGV4Y2x1ZGUyKSB7CiAgICAgICAgICAgICAgICAgU2lsZW50UmVn
aXN0ZXJTYXZlUGxhbiBwbGFuID0gc2lsZW50U2F2ZVBsYW5Gb3JHUFIoaXRlci5uYW1lKCksIGdw
cik7CiAgICAgICAgICAgICAgICAgaWYgKGRvU3BpbGwpCiAgICAgICAgICAgICAgICAgICAgIHNp
bGVudFNwaWxsKHBsYW4pOwpAQCAtMzY5LDcgKzM2OCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAg
IH0KICAgICAgICAgfQogICAgICAgICBmb3IgKGZwcl9pdGVyYXRvciBpdGVyID0gbV9mcHJzLmJl
Z2luKCk7IGl0ZXIgIT0gbV9mcHJzLmVuZCgpOyArK2l0ZXIpIHsKLSAgICAgICAgICAgIGlmIChp
dGVyLm5hbWUoKS5pc1ZhbGlkKCkgJiYgaXRlci5yZWdJRCgpICE9IGZwckV4Y2x1ZGUpIHsKKyAg
ICAgICAgICAgIGlmIChpdGVyLm5hbWUoKSAhPSBJbnZhbGlkVmlydHVhbFJlZ2lzdGVyICYmIGl0
ZXIucmVnSUQoKSAhPSBmcHJFeGNsdWRlKSB7CiAgICAgICAgICAgICAgICAgU2lsZW50UmVnaXN0
ZXJTYXZlUGxhbiBwbGFuID0gc2lsZW50U2F2ZVBsYW5Gb3JGUFIoaXRlci5uYW1lKCksIGl0ZXIu
cmVnSUQoKSk7CiAgICAgICAgICAgICAgICAgaWYgKGRvU3BpbGwpCiAgICAgICAgICAgICAgICAg
ICAgIHNpbGVudFNwaWxsKHBsYW4pOwpAQCAtNjAyLDEzICs2MDEsMTMgQEAgcHVibGljOgogICAg
IHZvaWQgZmx1c2hSZWdpc3RlcnMoKQogICAgIHsKICAgICAgICAgZm9yIChncHJfaXRlcmF0b3Ig
aXRlciA9IG1fZ3Bycy5iZWdpbigpOyBpdGVyICE9IG1fZ3Bycy5lbmQoKTsgKytpdGVyKSB7Ci0g
ICAgICAgICAgICBpZiAoaXRlci5uYW1lKCkuaXNWYWxpZCgpKSB7CisgICAgICAgICAgICBpZiAo
aXRlci5uYW1lKCkgIT0gSW52YWxpZFZpcnR1YWxSZWdpc3RlcikgewogICAgICAgICAgICAgICAg
IHNwaWxsKGl0ZXIubmFtZSgpKTsKICAgICAgICAgICAgICAgICBpdGVyLnJlbGVhc2UoKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBmb3IgKGZwcl9pdGVyYXRvciBpdGVyID0g
bV9mcHJzLmJlZ2luKCk7IGl0ZXIgIT0gbV9mcHJzLmVuZCgpOyArK2l0ZXIpIHsKLSAgICAgICAg
ICAgIGlmIChpdGVyLm5hbWUoKS5pc1ZhbGlkKCkpIHsKKyAgICAgICAgICAgIGlmIChpdGVyLm5h
bWUoKSAhPSBJbnZhbGlkVmlydHVhbFJlZ2lzdGVyKSB7CiAgICAgICAgICAgICAgICAgc3BpbGwo
aXRlci5uYW1lKCkpOwogICAgICAgICAgICAgICAgIGl0ZXIucmVsZWFzZSgpOwogICAgICAgICAg
ICAgfQpAQCAtNjIxLDExICs2MjAsMTEgQEAgcHVibGljOgogICAgIGJvb2wgaXNGbHVzaGVkKCkK
ICAgICB7CiAgICAgICAgIGZvciAoZ3ByX2l0ZXJhdG9yIGl0ZXIgPSBtX2dwcnMuYmVnaW4oKTsg
aXRlciAhPSBtX2dwcnMuZW5kKCk7ICsraXRlcikgewotICAgICAgICAgICAgaWYgKGl0ZXIubmFt
ZSgpLmlzVmFsaWQoKSkKKyAgICAgICAgICAgIGlmIChpdGVyLm5hbWUoKSAhPSBJbnZhbGlkVmly
dHVhbFJlZ2lzdGVyKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQog
ICAgICAgICBmb3IgKGZwcl9pdGVyYXRvciBpdGVyID0gbV9mcHJzLmJlZ2luKCk7IGl0ZXIgIT0g
bV9mcHJzLmVuZCgpOyArK2l0ZXIpIHsKLSAgICAgICAgICAgIGlmIChpdGVyLm5hbWUoKS5pc1Zh
bGlkKCkpCisgICAgICAgICAgICBpZiAoaXRlci5uYW1lKCkgIT0gSW52YWxpZFZpcnR1YWxSZWdp
c3RlcikKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAg
cmV0dXJuIHRydWU7CkBAIC03NjAsNyArNzU5LDcgQEAgcHVibGljOgogICAgIC8vIEFjY2VzcyB0
byBvdXIgZml4ZWQgY2FsbGVlIENhbGxGcmFtZS4KICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyBhcmd1bWVudFNsb3QoaW50IGFyZ3VtZW50KQogICAgIHsKLSAgICAgICAgcmV0dXJuIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCAoLW1faml0LmNv
ZGVCbG9jaygpLT5tX251bUNhbGxlZVJlZ2lzdGVycyArIHZpcnR1YWxSZWdpc3RlckZvckFyZ3Vt
ZW50KGFyZ3VtZW50KS5vZmZzZXQoKSkgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3Rl
cikpKTsKKyAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKEdQUkluZm86OmNh
bGxGcmFtZVJlZ2lzdGVyLCAoLW1faml0LmNvZGVCbG9jaygpLT5tX251bUNhbGxlZVJlZ2lzdGVy
cyArIGFyZ3VtZW50VG9PcGVyYW5kKGFyZ3VtZW50KSkgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVv
ZihSZWdpc3RlcikpKTsKICAgICB9CiAKICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyBjYWxs
RnJhbWVUYWdTbG90KGludCBzbG90KQpAQCAtNzc1LDEyICs3NzQsMTIgQEAgcHVibGljOgogCiAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MgYXJndW1lbnRUYWdTbG90KGludCBhcmd1bWVudCkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZvOjpj
YWxsRnJhbWVSZWdpc3RlciwgKC1tX2ppdC5jb2RlQmxvY2soKS0+bV9udW1DYWxsZWVSZWdpc3Rl
cnMgKyB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChhcmd1bWVudCkub2Zmc2V0KCkpICogc3Rh
dGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVk
VmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSk7CisgICAgICAgIHJldHVybiBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgKC1tX2ppdC5jb2RlQmxv
Y2soKS0+bV9udW1DYWxsZWVSZWdpc3RlcnMgKyBhcmd1bWVudFRvT3BlcmFuZChhcmd1bWVudCkp
ICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIE9CSkVDVF9PRkZTRVRPRihF
bmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSk7CiAgICAgfQogCiAgICAgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3MgYXJndW1lbnRQYXlsb2FkU2xvdChpbnQgYXJndW1lbnQpCiAgICAg
ewotICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZy
YW1lUmVnaXN0ZXIsICgtbV9qaXQuY29kZUJsb2NrKCktPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzICsg
dmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoYXJndW1lbnQpLm9mZnNldCgpKSAqIHN0YXRpY19j
YXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVl
RGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKTsKKyAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCAoLW1faml0LmNvZGVCbG9j
aygpLT5tX251bUNhbGxlZVJlZ2lzdGVycyArIGFyZ3VtZW50VG9PcGVyYW5kKGFyZ3VtZW50KSkg
KiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgT0JKRUNUX09GRlNFVE9GKEVu
Y29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSk7CiAgICAgfQogCiAgICAgdm9p
ZCBlbWl0Q2FsbChOb2RlKik7CkBAIC0yMTg5LDEyICsyMTg4LDEyIEBAIHB1YmxpYzoKICAgICAv
LyBUcmFja2luZyBmb3Igd2hpY2ggbm9kZXMgYXJlIGN1cnJlbnRseSBob2xkaW5nIHRoZSB2YWx1
ZXMgb2YgYXJndW1lbnRzIGFuZCBieXRlY29kZQogICAgIC8vIG9wZXJhbmQtaW5kZXhlZCB2YXJp
YWJsZXMuCiAgICAgCi0gICAgVmFsdWVTb3VyY2UgdmFsdWVTb3VyY2VGb3JPcGVyYW5kKFZpcnR1
YWxSZWdpc3RlciBvcGVyYW5kKQorICAgIFZhbHVlU291cmNlIHZhbHVlU291cmNlRm9yT3BlcmFu
ZChpbnQgb3BlcmFuZCkKICAgICB7CiAgICAgICAgIHJldHVybiB2YWx1ZVNvdXJjZVJlZmVyZW5j
ZUZvck9wZXJhbmQob3BlcmFuZCk7CiAgICAgfQogICAgIAotICAgIHZvaWQgc2V0Tm9kZUZvck9w
ZXJhbmQoTm9kZSogbm9kZSwgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQpCisgICAgdm9pZCBzZXRO
b2RlRm9yT3BlcmFuZChOb2RlKiBub2RlLCBpbnQgb3BlcmFuZCkKICAgICB7CiAgICAgICAgIHZh
bHVlU291cmNlUmVmZXJlbmNlRm9yT3BlcmFuZChvcGVyYW5kKSA9IFZhbHVlU291cmNlKE1pbmlm
aWVkSUQobm9kZSkpOwogICAgIH0KQEAgLTIyMDMsMjEgKzIyMDIsMjEgQEAgcHVibGljOgogICAg
IC8vIGFuZCBwb3RlbnRpYWxseSByZXNpemVzIHRoZSBhcnJheS4gU28gaXQgd291bGQgbm90IGJl
IHJpZ2h0IHRvIGNhbGwgdGhpcwogICAgIC8vIHR3aWNlIGFuZCB0aGVuIHBlcmZvcm0gb3BlcmFu
ZHMgb24gYm90aCByZWZlcmVuY2VzLCBzaW5jZSB0aGUgb25lIGZyb20KICAgICAvLyB0aGUgZmly
c3QgY2FsbCBtYXkgbm8gbG9uZ2VyIGJlIHZhbGlkLgotICAgIFZhbHVlU291cmNlJiB2YWx1ZVNv
dXJjZVJlZmVyZW5jZUZvck9wZXJhbmQoVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQpCisgICAgVmFs
dWVTb3VyY2UmIHZhbHVlU291cmNlUmVmZXJlbmNlRm9yT3BlcmFuZChpbnQgb3BlcmFuZCkKICAg
ICB7Ci0gICAgICAgIGlmIChvcGVyYW5kLmlzQXJndW1lbnQoKSkgewotICAgICAgICAgICAgaW50
IGFyZ3VtZW50ID0gb3BlcmFuZC50b0FyZ3VtZW50KCk7CisgICAgICAgIGlmIChvcGVyYW5kSXNB
cmd1bWVudChvcGVyYW5kKSkgeworICAgICAgICAgICAgaW50IGFyZ3VtZW50ID0gb3BlcmFuZFRv
QXJndW1lbnQob3BlcmFuZCk7CiAgICAgICAgICAgICByZXR1cm4gbV9hcmd1bWVudHNbYXJndW1l
bnRdOwogICAgICAgICB9CiAKLSAgICAgICAgaW50IGxvY2FsID0gb3BlcmFuZC50b0xvY2FsKCk7
CisgICAgICAgIGludCBsb2NhbCA9IG9wZXJhbmRUb0xvY2FsKG9wZXJhbmQpOwogICAgICAgICBp
ZiAoKHVuc2lnbmVkKWxvY2FsID49IG1fdmFyaWFibGVzLnNpemUoKSkKICAgICAgICAgICAgIG1f
dmFyaWFibGVzLnJlc2l6ZShsb2NhbCArIDEpOwogICAgICAgICAKICAgICAgICAgcmV0dXJuIG1f
dmFyaWFibGVzW2xvY2FsXTsKICAgICB9CiAgICAgCi0gICAgdm9pZCByZWNvcmRTZXRMb2NhbChW
aXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCwgVmFsdWVTb3VyY2UgdmFsdWVTb3VyY2UpCisgICAgdm9p
ZCByZWNvcmRTZXRMb2NhbChpbnQgb3BlcmFuZCwgVmFsdWVTb3VyY2UgdmFsdWVTb3VyY2UpCiAg
ICAgewogICAgICAgICB2YWx1ZVNvdXJjZVJlZmVyZW5jZUZvck9wZXJhbmQob3BlcmFuZCkgPSB2
YWx1ZVNvdXJjZTsKICAgICAgICAgbV9zdHJlYW0tPmFwcGVuZEFuZExvZyhWYXJpYWJsZUV2ZW50
OjpzZXRMb2NhbChvcGVyYW5kLCB2YWx1ZVNvdXJjZS5kYXRhRm9ybWF0KCkpKTsKQEAgLTIyMjUs
NyArMjIyNCw3IEBAIHB1YmxpYzoKIAogICAgIEdlbmVyYXRpb25JbmZvJiBnZW5lcmF0aW9uSW5m
b0Zyb21WaXJ0dWFsUmVnaXN0ZXIoVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlcikKICAg
ICB7Ci0gICAgICAgIHJldHVybiBtX2dlbmVyYXRpb25JbmZvW3ZpcnR1YWxSZWdpc3Rlci50b0xv
Y2FsKCldOworICAgICAgICByZXR1cm4gbV9nZW5lcmF0aW9uSW5mb1tvcGVyYW5kVG9Mb2NhbCh2
aXJ0dWFsUmVnaXN0ZXIpXTsKICAgICB9CiAgICAgCiAgICAgR2VuZXJhdGlvbkluZm8mIGdlbmVy
YXRpb25JbmZvKE5vZGUqIG5vZGUpCkBAIC0yMjY4LDcgKzIyNjcsNyBAQCBwdWJsaWM6CiAKICAg
ICBWZWN0b3I8VmFsdWVTb3VyY2UsIDA+IG1fYXJndW1lbnRzOwogICAgIFZlY3RvcjxWYWx1ZVNv
dXJjZSwgMD4gbV92YXJpYWJsZXM7Ci0gICAgVmlydHVhbFJlZ2lzdGVyIG1fbGFzdFNldE9wZXJh
bmQ7CisgICAgaW50IG1fbGFzdFNldE9wZXJhbmQ7CiAgICAgQ29kZU9yaWdpbiBtX2NvZGVPcmln
aW5Gb3JFeGl0VGFyZ2V0OwogICAgIENvZGVPcmlnaW4gbV9jb2RlT3JpZ2luRm9yRXhpdFByb2Zp
bGU7CiAgICAgCkBAIC0yMjg3LDcgKzIyODYsNyBAQCBwdWJsaWM6CiAKICAgICBWYWx1ZVJlY292
ZXJ5IGNvbXB1dGVWYWx1ZVJlY292ZXJ5Rm9yKGludCBvcGVyYW5kKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIGNvbXB1dGVWYWx1ZVJlY292ZXJ5Rm9yKHZhbHVlU291cmNlRm9yT3BlcmFuZChWaXJ0
dWFsUmVnaXN0ZXIob3BlcmFuZCkpKTsKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVWYWx1ZVJlY292
ZXJ5Rm9yKHZhbHVlU291cmNlRm9yT3BlcmFuZChvcGVyYW5kKSk7CiAgICAgfQogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5k
ZXggMjY2MTgyNjJiOGYxZDcwZWFjM2VmYmZiNzk4YTYwNGZiNmU4MGQyMy4uNTM4ZjU4YWEzYzQ3
MmU0NTk2ODVkZmUwZmI1YzY3YjVlMzc0ODAwZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC00NzgwLDcgKzQ3ODAsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGFkZFNsb3dQ
YXRoR2VuZXJhdG9yKAogICAgICAgICAgICAgc2xvd1BhdGhDYWxsKAogICAgICAgICAgICAgICAg
IGNyZWF0ZWQsIHRoaXMsIG9wZXJhdGlvbkdldEFyZ3VtZW50c0xlbmd0aCwgcmVzdWx0R1BSLAot
ICAgICAgICAgICAgICAgIG1faml0LmFyZ3VtZW50c1JlZ2lzdGVyRm9yKG5vZGUtPmNvZGVPcmln
aW4pLm9mZnNldCgpKSk7CisgICAgICAgICAgICAgICAgbV9qaXQuYXJndW1lbnRzUmVnaXN0ZXJG
b3Iobm9kZS0+Y29kZU9yaWdpbikpKTsKICAgICAgICAgCiAgICAgICAgIGpzVmFsdWVSZXN1bHQo
cmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC00OTE5LDE0ICs0OTE5LDE0IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIGFk
ZFNsb3dQYXRoR2VuZXJhdG9yKAogICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCgKICAgICAg
ICAgICAgICAgICAgICAgc2xvd1BhdGgsIHRoaXMsIG9wZXJhdGlvbkdldElubGluZWRBcmd1bWVu
dEJ5VmFsLCByZXN1bHRHUFIsIAotICAgICAgICAgICAgICAgICAgICBtX2ppdC5hcmd1bWVudHNS
ZWdpc3RlckZvcihub2RlLT5jb2RlT3JpZ2luKS5vZmZzZXQoKSwKKyAgICAgICAgICAgICAgICAg
ICAgbV9qaXQuYXJndW1lbnRzUmVnaXN0ZXJGb3Iobm9kZS0+Y29kZU9yaWdpbiksCiAgICAgICAg
ICAgICAgICAgICAgIG5vZGUtPmNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLAogICAgICAgICAg
ICAgICAgICAgICBpbmRleEdQUikpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgYWRk
U2xvd1BhdGhHZW5lcmF0b3IoCiAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsKAogICAgICAg
ICAgICAgICAgICAgICBzbG93UGF0aCwgdGhpcywgb3BlcmF0aW9uR2V0QXJndW1lbnRCeVZhbCwg
cmVzdWx0R1BSLCAKLSAgICAgICAgICAgICAgICAgICAgbV9qaXQuYXJndW1lbnRzUmVnaXN0ZXJG
b3Iobm9kZS0+Y29kZU9yaWdpbikub2Zmc2V0KCksCisgICAgICAgICAgICAgICAgICAgIG1faml0
LmFyZ3VtZW50c1JlZ2lzdGVyRm9yKG5vZGUtPmNvZGVPcmlnaW4pLAogICAgICAgICAgICAgICAg
ICAgICBpbmRleEdQUikpOwogICAgICAgICB9CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAppbmRleCBiOTQ2ZTQ2NmI4NDBlMDZjMmFkMzg5ZWFiZGE1
MjEwYzc3YTA2YjI2Li44OGJmZGQ0MDRkNDM2NWU4NzFkNWYzZDVkZjM0YTY2OGNjYWQxZjhmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcApAQCAtNzgsNyArNzgs
NyBAQCBwdWJsaWM6CiAgICAgICAgIC8vIFZhbGlkYXRlIHRoYXQgYWxsIGxvY2FsIHZhcmlhYmxl
cyBhdCB0aGUgaGVhZCBvZiB0aGUgcm9vdCBibG9jayBhcmUgZGVhZC4KICAgICAgICAgQmFzaWNC
bG9jayogcm9vdCA9IG1fZ3JhcGguYmxvY2soMCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCByb290LT52YXJpYWJsZXNBdEhlYWQubnVtYmVyT2ZMb2NhbHMoKTsgKytpKQotICAg
ICAgICAgICAgVl9FUVVBTCgodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaSksIDApLCBzdGF0aWNf
Y2FzdDxOb2RlKj4oMCksIHJvb3QtPnZhcmlhYmxlc0F0SGVhZC5sb2NhbChpKSk7CisgICAgICAg
ICAgICBWX0VRVUFMKChzdGF0aWNfY2FzdDxWaXJ0dWFsUmVnaXN0ZXI+KGxvY2FsVG9PcGVyYW5k
KGkpKSwgMCksIHN0YXRpY19jYXN0PE5vZGUqPigwKSwgcm9vdC0+dmFyaWFibGVzQXRIZWFkLmxv
Y2FsKGkpKTsKICAgICAgICAgCiAgICAgICAgIC8vIFZhbGlkYXRlIHJlZiBjb3VudHMgYW5kIHVz
ZXMuCiAgICAgICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gMDsgYmxvY2tJbmRleCA8
IG1fZ3JhcGgubnVtQmxvY2tzKCk7ICsrYmxvY2tJbmRleCkgewpAQCAtMzE3LDE3ICszMTcsMTcg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBibG9jay0+dmFyaWFibGVzQXRIZWFkLm51bWJl
ck9mTG9jYWxzKCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGJsb2NrLT52YXJpYWJsZXNBdEhlYWQubnVtYmVyT2ZBcmd1bWVudHMoKTsgKytpKSB7
Ci0gICAgICAgICAgICAgICAgVkFMSURBVEUoKHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkp
LCBibG9jayksICFibG9jay0+dmFyaWFibGVzQXRIZWFkLmFyZ3VtZW50KGkpIHx8IGJsb2NrLT52
YXJpYWJsZXNBdEhlYWQuYXJndW1lbnQoaSktPmhhc1ZhcmlhYmxlQWNjZXNzRGF0YShtX2dyYXBo
KSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUoKHN0YXRpY19jYXN0PFZpcnR1YWxSZWdpc3Rl
cj4oYXJndW1lbnRUb09wZXJhbmQoaSkpLCBibG9jayksICFibG9jay0+dmFyaWFibGVzQXRIZWFk
LmFyZ3VtZW50KGkpIHx8IGJsb2NrLT52YXJpYWJsZXNBdEhlYWQuYXJndW1lbnQoaSktPmhhc1Zh
cmlhYmxlQWNjZXNzRGF0YShtX2dyYXBoKSk7CiAgICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGgu
bV9mb3JtID09IFRocmVhZGVkQ1BTKQotICAgICAgICAgICAgICAgICAgICBWQUxJREFURSgodmly
dHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSksIGJsb2NrKSwgIWJsb2NrLT52YXJpYWJsZXNBdFRh
aWwuYXJndW1lbnQoaSkgfHwgYmxvY2stPnZhcmlhYmxlc0F0VGFpbC5hcmd1bWVudChpKS0+aGFz
VmFyaWFibGVBY2Nlc3NEYXRhKG1fZ3JhcGgpKTsKKyAgICAgICAgICAgICAgICAgICAgVkFMSURB
VEUoKHN0YXRpY19jYXN0PFZpcnR1YWxSZWdpc3Rlcj4oYXJndW1lbnRUb09wZXJhbmQoaSkpLCBi
bG9jayksICFibG9jay0+dmFyaWFibGVzQXRUYWlsLmFyZ3VtZW50KGkpIHx8IGJsb2NrLT52YXJp
YWJsZXNBdFRhaWwuYXJndW1lbnQoaSktPmhhc1ZhcmlhYmxlQWNjZXNzRGF0YShtX2dyYXBoKSk7
CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgZ2V0TG9jYWxQb3NpdGlvbnMuYXJn
dW1lbnQoaSkgPSBub3RTZXQ7CiAgICAgICAgICAgICAgICAgc2V0TG9jYWxQb3NpdGlvbnMuYXJn
dW1lbnQoaSkgPSBub3RTZXQ7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGJsb2NrLT52YXJpYWJsZXNBdEhlYWQubnVtYmVyT2ZMb2NhbHMoKTsgKytp
KSB7Ci0gICAgICAgICAgICAgICAgVkFMSURBVEUoKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGkp
LCBibG9jayksICFibG9jay0+dmFyaWFibGVzQXRIZWFkLmxvY2FsKGkpIHx8IGJsb2NrLT52YXJp
YWJsZXNBdEhlYWQubG9jYWwoaSktPmhhc1ZhcmlhYmxlQWNjZXNzRGF0YShtX2dyYXBoKSk7Cisg
ICAgICAgICAgICAgICAgVkFMSURBVEUoKHN0YXRpY19jYXN0PFZpcnR1YWxSZWdpc3Rlcj4obG9j
YWxUb09wZXJhbmQoaSkpLCBibG9jayksICFibG9jay0+dmFyaWFibGVzQXRIZWFkLmxvY2FsKGkp
IHx8IGJsb2NrLT52YXJpYWJsZXNBdEhlYWQubG9jYWwoaSktPmhhc1ZhcmlhYmxlQWNjZXNzRGF0
YShtX2dyYXBoKSk7CiAgICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGgubV9mb3JtID09IFRocmVh
ZGVkQ1BTKQotICAgICAgICAgICAgICAgICAgICBWQUxJREFURSgodmlydHVhbFJlZ2lzdGVyRm9y
TG9jYWwoaSksIGJsb2NrKSwgIWJsb2NrLT52YXJpYWJsZXNBdFRhaWwubG9jYWwoaSkgfHwgYmxv
Y2stPnZhcmlhYmxlc0F0VGFpbC5sb2NhbChpKS0+aGFzVmFyaWFibGVBY2Nlc3NEYXRhKG1fZ3Jh
cGgpKTsKKyAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoKHN0YXRpY19jYXN0PFZpcnR1YWxS
ZWdpc3Rlcj4obG9jYWxUb09wZXJhbmQoaSkpLCBibG9jayksICFibG9jay0+dmFyaWFibGVzQXRU
YWlsLmxvY2FsKGkpIHx8IGJsb2NrLT52YXJpYWJsZXNBdFRhaWwubG9jYWwoaSktPmhhc1Zhcmlh
YmxlQWNjZXNzRGF0YShtX2dyYXBoKSk7CiAKICAgICAgICAgICAgICAgICBnZXRMb2NhbFBvc2l0
aW9ucy5sb2NhbChpKSA9IG5vdFNldDsKICAgICAgICAgICAgICAgICBzZXRMb2NhbFBvc2l0aW9u
cy5sb2NhbChpKSA9IG5vdFNldDsKQEAgLTM4OSwxOCArMzg5LDE4IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYmxvY2stPnZhcmlh
Ymxlc0F0SGVhZC5udW1iZXJPZkFyZ3VtZW50cygpOyArK2kpIHsKICAgICAgICAgICAgICAgICBj
aGVja09wZXJhbmQoCi0gICAgICAgICAgICAgICAgICAgIGJsb2NrLCBnZXRMb2NhbFBvc2l0aW9u
cywgc2V0TG9jYWxQb3NpdGlvbnMsIHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpKTsKKyAg
ICAgICAgICAgICAgICAgICAgYmxvY2ssIGdldExvY2FsUG9zaXRpb25zLCBzZXRMb2NhbFBvc2l0
aW9ucywgYXJndW1lbnRUb09wZXJhbmQoaSkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBibG9jay0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mTG9j
YWxzKCk7ICsraSkgewogICAgICAgICAgICAgICAgIGNoZWNrT3BlcmFuZCgKLSAgICAgICAgICAg
ICAgICAgICAgYmxvY2ssIGdldExvY2FsUG9zaXRpb25zLCBzZXRMb2NhbFBvc2l0aW9ucywgdmly
dHVhbFJlZ2lzdGVyRm9yTG9jYWwoaSkpOworICAgICAgICAgICAgICAgICAgICBibG9jaywgZ2V0
TG9jYWxQb3NpdGlvbnMsIHNldExvY2FsUG9zaXRpb25zLCBsb2NhbFRvT3BlcmFuZChpKSk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAgICAgCiAgICAgdm9pZCBjaGVja09wZXJh
bmQoCiAgICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrLCBPcGVyYW5kczxzaXplX3Q+JiBnZXRMb2Nh
bFBvc2l0aW9ucywKLSAgICAgICAgT3BlcmFuZHM8c2l6ZV90PiYgc2V0TG9jYWxQb3NpdGlvbnMs
IFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKQorICAgICAgICBPcGVyYW5kczxzaXplX3Q+JiBzZXRM
b2NhbFBvc2l0aW9ucywgaW50IG9wZXJhbmQpCiAgICAgewogICAgICAgICBpZiAoZ2V0TG9jYWxQ
b3NpdGlvbnMub3BlcmFuZChvcGVyYW5kKSA9PSBub3RTZXQpCiAgICAgICAgICAgICByZXR1cm47
CkBAIC00MzIsMjMgKzQzMiwyMyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVwb3J0VmFsaWRhdGlv
bkNvbnRleHQoVmlydHVhbFJlZ2lzdGVyIGxvY2FsLCBCYXNpY0Jsb2NrKiBibG9jaykKICAgICB7
CiAgICAgICAgIGlmICghYmxvY2spIHsKLSAgICAgICAgICAgIGRhdGFMb2coInIiLCBsb2NhbCwg
IiBpbiBudWxsIEJsb2NrICIpOworICAgICAgICAgICAgZGF0YUxvZygiciIsIHN0YXRpY19jYXN0
PGludD4obG9jYWwpLCAiIGluIG51bGwgQmxvY2sgIik7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KIAotICAgICAgICBkYXRhTG9nKCJyIiwgbG9jYWwsICIgaW4gQmxvY2sgIiwgKmJs
b2NrKTsKKyAgICAgICAgZGF0YUxvZygiciIsIHN0YXRpY19jYXN0PGludD4obG9jYWwpLCAiIGlu
IEJsb2NrICIsICpibG9jayk7CiAgICAgfQogICAgIAogICAgIHZvaWQgcmVwb3J0VmFsaWRhdGlv
bkNvbnRleHQoCiAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBsb2NhbCwgQmFzaWNCbG9jayogc291
cmNlQmxvY2ssIEJhc2ljQmxvY2sqIGRlc3RpbmF0aW9uQmxvY2spCiAgICAgewotICAgICAgICBk
YXRhTG9nKCJyIiwgbG9jYWwsICIgaW4gQmxvY2sgIiwgKnNvdXJjZUJsb2NrLCAiIC0+ICIsICpk
ZXN0aW5hdGlvbkJsb2NrKTsKKyAgICAgICAgZGF0YUxvZygiciIsIHN0YXRpY19jYXN0PGludD4o
bG9jYWwpLCAiIGluIEJsb2NrICIsICpzb3VyY2VCbG9jaywgIiAtPiAiLCAqZGVzdGluYXRpb25C
bG9jayk7CiAgICAgfQogICAgIAogICAgIHZvaWQgcmVwb3J0VmFsaWRhdGlvbkNvbnRleHQoCiAg
ICAgICAgIFZpcnR1YWxSZWdpc3RlciBsb2NhbCwgQmFzaWNCbG9jayogc291cmNlQmxvY2ssIE5v
ZGUqIHByZXZOb2RlKQogICAgIHsKLSAgICAgICAgZGF0YUxvZyhwcmV2Tm9kZSwgIiBmb3IgciIs
IGxvY2FsLCAiIGluIEJsb2NrICIsICpzb3VyY2VCbG9jayk7CisgICAgICAgIGRhdGFMb2cocHJl
dk5vZGUsICIgZm9yIHIiLCBzdGF0aWNfY2FzdDxpbnQ+KGxvY2FsKSwgIiBpbiBCbG9jayAiLCAq
c291cmNlQmxvY2spOwogICAgIH0KICAgICAKICAgICB2b2lkIHJlcG9ydFZhbGlkYXRpb25Db250
ZXh0KE5vZGUqIG5vZGUsIEJhc2ljQmxvY2sqIGJsb2NrKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdWYWx1ZVJlY292ZXJ5T3ZlcnJpZGUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHVmFsdWVSZWNvdmVyeU92ZXJyaWRlLmgKaW5kZXggODlkZTlmZDA4
MWJjNzllMjFmNDI2ZGM2MWMwMGY5NDQ5MTAwYWUyOC4uMzE3MTExYWVjMTU5OWY4OTAzNDQ2YTJk
MzEyOTc4Y2MwYjNhMjY3MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdWYWx1ZVJlY292ZXJ5T3ZlcnJpZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1ZhbHVlUmVjb3ZlcnlPdmVycmlkZS5oCkBAIC0zOSwxMyArMzksMTMgQEAgY2xhc3MgVmFs
dWVSZWNvdmVyeU92ZXJyaWRlIDogcHVibGljIFJlZkNvdW50ZWQ8VmFsdWVSZWNvdmVyeU92ZXJy
aWRlPiB7CiBwdWJsaWM6CiAgICAgVmFsdWVSZWNvdmVyeU92ZXJyaWRlKCkgeyB9CiAgICAgCi0g
ICAgVmFsdWVSZWNvdmVyeU92ZXJyaWRlKFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kLCBjb25zdCBW
YWx1ZVJlY292ZXJ5JiByZWNvdmVyeSkKKyAgICBWYWx1ZVJlY292ZXJ5T3ZlcnJpZGUoaW50IG9w
ZXJhbmQsIGNvbnN0IFZhbHVlUmVjb3ZlcnkmIHJlY292ZXJ5KQogICAgICAgICA6IG9wZXJhbmQo
b3BlcmFuZCkKICAgICAgICAgLCByZWNvdmVyeShyZWNvdmVyeSkKICAgICB7CiAgICAgfQogICAg
IAotICAgIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kOworICAgIGludCBvcGVyYW5kOwogICAgIFZh
bHVlUmVjb3ZlcnkgcmVjb3Zlcnk7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1ZhcmlhYmxlQWNjZXNzRGF0YS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdWYXJpYWJsZUFjY2Vzc0RhdGEuaAppbmRleCAwN2FhNTRmMmQwMTFhODkxZGZlNzg1
OWU3MjE0NjlhMWNlOTlmYWIyLi4zZTY4ZjQ0OThhZTU0N2NlZjExNDIwOGM3OGVlZjYwZTc2ZTdl
MTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhYmxlQWNj
ZXNzRGF0YS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyaWFibGVBY2Nl
c3NEYXRhLmgKQEAgLTgwLDcgKzgwLDEyIEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKG1fbG9j
YWwgPT0gZmluZCgpLT5tX2xvY2FsKTsKICAgICAgICAgcmV0dXJuIG1fbG9jYWw7CiAgICAgfQot
CisgICAgCisgICAgaW50IG9wZXJhbmQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PGludD4obG9jYWwoKSk7CisgICAgfQorICAgIAogICAgIGJvb2wgbWVyZ2VJc0NhcHR1cmVk
KGJvb2wgaXNDYXB0dXJlZCkKICAgICB7CiAgICAgICAgIHJldHVybiBjaGVja0FuZFNldChtX3No
b3VsZE5ldmVyVW5ib3gsIG1fc2hvdWxkTmV2ZXJVbmJveCB8IGlzQ2FwdHVyZWQpCkBAIC0yMjUs
NyArMjMwLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgLy8gV2UgZG9uJ3Qgc3VwcG9ydCB0
aGlzIGZhY2lsaXR5IGZvciBhcmd1bWVudHMsIHlldC4KICAgICAgICAgLy8gRklYTUU6IG1ha2Ug
dGhpcyB3b3JrIGZvciBhcmd1bWVudHMuCi0gICAgICAgIGlmIChsb2NhbCgpLmlzQXJndW1lbnQo
KSkKKyAgICAgICAgaWYgKG9wZXJhbmRJc0FyZ3VtZW50KG9wZXJhbmQoKSkpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAogICAgICAgICAvLyBJZiB0aGUgdmFyaWFibGUgaXMg
bm90IGEgbnVtYmVyIHByZWRpY3Rpb24sIHRoZW4gdGhpcyBkb2Vzbid0CkBAIC0yNzMsNyArMjc4
LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgQVNTRVJUKGlzUm9vdCgpKTsKICAgICAgICAg
Ci0gICAgICAgIGlmIChsb2NhbCgpLmlzQXJndW1lbnQoKSB8fCBzaG91bGROZXZlclVuYm94KCkp
CisgICAgICAgIGlmIChvcGVyYW5kSXNBcmd1bWVudChsb2NhbCgpKSB8fCBzaG91bGROZXZlclVu
Ym94KCkpCiAgICAgICAgICAgICByZXR1cm4gREZHOjptZXJnZURvdWJsZUZvcm1hdFN0YXRlKG1f
ZG91YmxlRm9ybWF0U3RhdGUsIE5vdFVzaW5nRG91YmxlRm9ybWF0KTsKICAgICAgICAgCiAgICAg
ICAgIGlmIChtX2RvdWJsZUZvcm1hdFN0YXRlID09IENhbnRVc2VEb3VibGVGb3JtYXQpCkBAIC0z
MjgsNyArMzMzLDcgQEAgcHVibGljOgogICAgICAgICBpZiAoaXNJbnQzMlNwZWN1bGF0aW9uKHBy
ZWRpY3Rpb24pKQogICAgICAgICAgICAgcmV0dXJuIEZsdXNoZWRJbnQzMjsKICAgICAgICAgCi0g
ICAgICAgIGlmIChlbmFibGVJbnQ1MigpICYmICFtX2xvY2FsLmlzQXJndW1lbnQoKSAmJiBpc01h
Y2hpbmVJbnRTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSkKKyAgICAgICAgaWYgKGVuYWJsZUludDUy
KCkgJiYgIW9wZXJhbmRJc0FyZ3VtZW50KG1fbG9jYWwpICYmIGlzTWFjaGluZUludFNwZWN1bGF0
aW9uKHByZWRpY3Rpb24pKQogICAgICAgICAgICAgcmV0dXJuIEZsdXNoZWRJbnQ1MjsKICAgICAg
ICAgCiAgICAgICAgIGlmIChpc0NlbGxTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyaWFibGVFdmVudC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJsZUV2ZW50LmgKaW5kZXggNzNlYTRhMjJjYjRj
MzFmNTUwY2Q0ODYyYTQ4YWU0MTJkMDVmZTRjZi4uMTYwNWY3OWI4NjdmZmY5YjU3NzFhOTVkNTFk
NWQ1NmExYjkxM2VhYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdW
YXJpYWJsZUV2ZW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJs
ZUV2ZW50LmgKQEAgLTE0MSw3ICsxNDEsNyBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChraW5k
ID09IEJpcnRoVG9TcGlsbCB8fCBraW5kID09IFNwaWxsKTsKICAgICAgICAgVmFyaWFibGVFdmVu
dCBldmVudDsKICAgICAgICAgZXZlbnQubV9pZCA9IGlkOwotICAgICAgICBldmVudC51LnZpcnR1
YWxSZWcgPSB2aXJ0dWFsUmVnaXN0ZXIub2Zmc2V0KCk7CisgICAgICAgIGV2ZW50LnUudmlydHVh
bFJlZyA9IHZpcnR1YWxSZWdpc3RlcjsKICAgICAgICAgZXZlbnQubV9raW5kID0ga2luZDsKICAg
ICAgICAgZXZlbnQubV9kYXRhRm9ybWF0ID0gZm9ybWF0OwogICAgICAgICByZXR1cm4gZXZlbnQ7
CkBAIC0xNTUsMTAgKzE1NSwxMCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBldmVudDsKICAg
ICB9CiAgICAgCi0gICAgc3RhdGljIFZhcmlhYmxlRXZlbnQgc2V0TG9jYWwoVmlydHVhbFJlZ2lz
dGVyIHZpcnR1YWxSZWdpc3RlciwgRGF0YUZvcm1hdCBmb3JtYXQpCisgICAgc3RhdGljIFZhcmlh
YmxlRXZlbnQgc2V0TG9jYWwoaW50IG9wZXJhbmQsIERhdGFGb3JtYXQgZm9ybWF0KQogICAgIHsK
ICAgICAgICAgVmFyaWFibGVFdmVudCBldmVudDsKLSAgICAgICAgZXZlbnQudS52aXJ0dWFsUmVn
ID0gdmlydHVhbFJlZ2lzdGVyLm9mZnNldCgpOworICAgICAgICBldmVudC51LnZpcnR1YWxSZWcg
PSBvcGVyYW5kOwogICAgICAgICBldmVudC5tX2tpbmQgPSBTZXRMb2NhbEV2ZW50OwogICAgICAg
ICBldmVudC5tX2RhdGFGb3JtYXQgPSBmb3JtYXQ7CiAgICAgICAgIHJldHVybiBldmVudDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyaWFibGVFdmVudFN0cmVh
bS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhYmxlRXZlbnRTdHJlYW0u
Y3BwCmluZGV4IDA5ZTdkNTMyMDE1ZWUzYzkzYmE1Yjg0ZGYwYjAzZThjY2I1Mjg1YTMuLjM5MTgy
N2ZlYjhmZDQ1NTQ0ODYxZmUwNTFkZDcyYThjMDk4OWYwY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyaWFibGVFdmVudFN0cmVhbS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJsZUV2ZW50U3RyZWFtLmNwcApAQCAtMTE1LDcg
KzExNSw3IEBAIHZvaWQgVmFyaWFibGVFdmVudFN0cmVhbTo6cmVjb25zdHJ1Y3QoCiAgICAgCiAg
ICAgdW5zaWduZWQgbnVtVmFyaWFibGVzOwogICAgIGlmIChjb2RlT3JpZ2luLmlubGluZUNhbGxG
cmFtZSkKLSAgICAgICAgbnVtVmFyaWFibGVzID0gYmFzZWxpbmVDb2RlQmxvY2tGb3JJbmxpbmVD
YWxsRnJhbWUoY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUpLT5tX251bUNhbGxlZVJlZ2lzdGVy
cyArIFZpcnR1YWxSZWdpc3Rlcihjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZz
ZXQpLnRvTG9jYWwoKTsKKyAgICAgICAgbnVtVmFyaWFibGVzID0gYmFzZWxpbmVDb2RlQmxvY2tG
b3JJbmxpbmVDYWxsRnJhbWUoY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUpLT5tX251bUNhbGxl
ZVJlZ2lzdGVycyArIG9wZXJhbmRUb0xvY2FsKGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5z
dGFja09mZnNldCk7CiAgICAgZWxzZQogICAgICAgICBudW1WYXJpYWJsZXMgPSBiYXNlbGluZUNv
ZGVCbG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnM7CiAgICAgCkBAIC0yODMsNyArMjgzLDcgQEAg
dm9pZCBWYXJpYWJsZUV2ZW50U3RyZWFtOjpyZWNvbnN0cnVjdCgKICAgICAvLyB0aGF0IHRob3Nl
IHZhbHVlcyBkb24ndCBoYXZlIHRvIGJlIHJlY292ZXJlZC4gU2lnbmFsIHRoaXMgYnkgdXNpbmcg
VmFsdWVSZWNvdmVyeTo6YWxyZWFkeUluSlNTdGFjaygpCiAgICAgZm9yIChJbmxpbmVDYWxsRnJh
bWUqIGlubGluZUNhbGxGcmFtZSA9IGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lOyBpbmxpbmVD
YWxsRnJhbWU7IGlubGluZUNhbGxGcmFtZSA9IGlubGluZUNhbGxGcmFtZS0+Y2FsbGVyLmlubGlu
ZUNhbGxGcmFtZSkgewogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBKU1N0YWNrOjpDYWxsRnJh
bWVIZWFkZXJTaXplOyBpLS07KQotICAgICAgICAgICAgdmFsdWVSZWNvdmVyaWVzLnNldExvY2Fs
KFZpcnR1YWxSZWdpc3RlcihpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0KS50b0xvY2FsKCkg
LSBpIC0gMSwgVmFsdWVSZWNvdmVyeTo6YWxyZWFkeUluSlNTdGFjaygpKTsKKyAgICAgICAgICAg
IHZhbHVlUmVjb3Zlcmllcy5zZXRMb2NhbChvcGVyYW5kVG9Mb2NhbChpbmxpbmVDYWxsRnJhbWUt
PnN0YWNrT2Zmc2V0KSAtIGkgLSAxLCBWYWx1ZVJlY292ZXJ5OjphbHJlYWR5SW5KU1N0YWNrKCkp
OwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdW
aXJ0dWFsUmVnaXN0ZXJBbGxvY2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdWaXJ0dWFsUmVnaXN0ZXJBbGxvY2F0aW9uUGhhc2UuY3BwCmluZGV4IGIyZDdhNzdk
ODA3MzhhZmE3NmE5ZDVlNjAwYWU1NzkwYzllOTFmNDYuLjQ0NmUwNjA4MWQ3MzBiZTZjNjAxMzQ1
OWE3ZTMxNjQ4YmM2YWM4MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHVmlydHVhbFJlZ2lzdGVyQWxsb2NhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ZpcnR1YWxSZWdpc3RlckFsbG9jYXRpb25QaGFzZS5jcHAKQEAgLTEy
Niw3ICsxMjYsNyBAQCBwdWJsaWM6CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW5s
aW5lQ2FsbEZyYW1lQ291bnQ7IGkrKykgewogICAgICAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBp
bmxpbmVDYWxsRnJhbWUgPSBtX2dyYXBoLm1faW5saW5lQ2FsbEZyYW1lcy0+YXQoaSk7CiAgICAg
ICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGJhc2VsaW5lQ29kZUJsb2NrRm9ySW5saW5l
Q2FsbEZyYW1lKGlubGluZUNhbGxGcmFtZSk7Ci0gICAgICAgICAgICB1bnNpZ25lZCByZXF1aXJl
ZENhbGxlZVJlZ2lzdGVycyA9IFZpcnR1YWxSZWdpc3RlcihpbmxpbmVDYWxsRnJhbWUtPnN0YWNr
T2Zmc2V0KS50b0xvY2FsKCkgKyBjb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzOworICAg
ICAgICAgICAgdW5zaWduZWQgcmVxdWlyZWRDYWxsZWVSZWdpc3RlcnMgPSBvcGVyYW5kVG9Mb2Nh
bChpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0KSArIGNvZGVCbG9jay0+bV9udW1DYWxsZWVS
ZWdpc3RlcnM7CiAgICAgICAgICAgICBpZiAocmVxdWlyZWRDYWxsZWVSZWdpc3RlcnMgPiBjYWxs
ZWVSZWdpc3RlcnMpCiAgICAgICAgICAgICAgICAgY2FsbGVlUmVnaXN0ZXJzID0gcmVxdWlyZWRD
YWxsZWVSZWdpc3RlcnM7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMRXhpdEFyZ3VtZW50Rm9yT3BlcmFuZC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExFeGl0QXJndW1lbnRGb3JPcGVyYW5kLmgKaW5kZXggYTVlYzczN2MwYWI2YTgw
NzE5NGVmNzgzOGZiOTJhOTg5YzZlOWY0My4uM2NiMTI1NTYzYzNjZDA2ODM0MTczNjY1ZGRkODMx
ZjFiYzZhODgxZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExFeGl0
QXJndW1lbnRGb3JPcGVyYW5kLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExF
eGl0QXJndW1lbnRGb3JPcGVyYW5kLmgKQEAgLTM4LDExICszOCwxMSBAQCBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIEZUTCB7CiBjbGFzcyBFeGl0QXJndW1lbnRGb3JPcGVyYW5kIHsKIHB1Ymxp
YzoKICAgICBFeGl0QXJndW1lbnRGb3JPcGVyYW5kKCkKLSAgICAgICAgOiBtX29wZXJhbmQoVmly
dHVhbFJlZ2lzdGVyKCkpCisgICAgICAgIDogbV9vcGVyYW5kKEludmFsaWRWaXJ0dWFsUmVnaXN0
ZXIpCiAgICAgewogICAgIH0KICAgICAKLSAgICBFeGl0QXJndW1lbnRGb3JPcGVyYW5kKEV4aXRB
cmd1bWVudCBleGl0QXJndW1lbnQsIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKQorICAgIEV4aXRB
cmd1bWVudEZvck9wZXJhbmQoRXhpdEFyZ3VtZW50IGV4aXRBcmd1bWVudCwgaW50IG9wZXJhbmQp
CiAgICAgICAgIDogbV9leGl0QXJndW1lbnQoZXhpdEFyZ3VtZW50KQogICAgICAgICAsIG1fb3Bl
cmFuZChvcGVyYW5kKQogICAgIHsKQEAgLTUxLDEzICs1MSwxMyBAQCBwdWJsaWM6CiAgICAgYm9v
bCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9leGl0QXJndW1lbnQ7IH0KICAgICAKICAg
ICBjb25zdCBFeGl0QXJndW1lbnQmIGV4aXRBcmd1bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZXhp
dEFyZ3VtZW50OyB9Ci0gICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQoKSBjb25zdCB7IHJldHVy
biBtX29wZXJhbmQ7IH0KKyAgICBpbnQgb3BlcmFuZCgpIGNvbnN0IHsgcmV0dXJuIG1fb3BlcmFu
ZDsgfQogICAgIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwogICAgIAogcHJp
dmF0ZToKICAgICBFeGl0QXJndW1lbnQgbV9leGl0QXJndW1lbnQ7Ci0gICAgVmlydHVhbFJlZ2lz
dGVyIG1fb3BlcmFuZDsKKyAgICBpbnQgbV9vcGVyYW5kOwogfTsKIAogaW5saW5lIGJvb2wgbGVz
c2VyQXJndW1lbnRJbmRleCgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMTGluay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCmluZGV4
IGJjMzdiNzRhN2E5YzYxMmY4YzRmNDQxMDUyY2IyMDhjYmNjYWQzNzguLmNjNDAwOTk0MGI3M2Qw
MzI4MGZiMjUwZWIwMmUwNmYxYzY3OTBlZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTGluay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
aW5rLmNwcApAQCAtMzUsNyArMzUsNiBAQAogI2luY2x1ZGUgIkZUTEpJVENvZGUuaCIKICNpbmNs
dWRlICJKSVRTdHVicy5oIgogI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKLSNpbmNsdWRlICJWaXJ0
dWFsUmVnaXN0ZXIuaCIKICNpbmNsdWRlIDx3dGYvTExWTUhlYWRlcnMuaD4KIAogbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBGVEwgewpAQCAtNzYsNyArNzUsNyBAQCB2b2lkIGxpbmsoU3RhdGUm
IHN0YXRlKQogICAgICAgICAvLyBQbGFudCBhIGNoZWNrIHRoYXQgc3VmZmljaWVudCBzcGFjZSBp
cyBhdmFpbGFibGUgaW4gdGhlIEpTU3RhY2suCiAgICAgICAgIC8vIEZJWE1FOiBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTYyOTEKICAgICAgICAgaml0LmFkZFB0cigK
LSAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHZpcnR1YWxSZWdpc3RlckZv
ckxvY2FsKGNvZGVCbG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnMpLm9mZnNldCgpICogc2l6ZW9m
KFJlZ2lzdGVyKSksCisgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihsb2Nh
bFRvT3BlcmFuZChjb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKSAqIHNpemVvZihSZWdp
c3RlcikpLAogICAgICAgICAgICAgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86
OnJlZ1QxKTsKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIHN0YWNrQ2hlY2sgPSBqaXQuYnJh
bmNoUHRyKAogICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpBYm92ZSwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAKaW5kZXggMjM5NjI4NzIzZDhm
M2RjMTU4NGFhZmQ2NjNiYTMxNGY1Y2MwYTAwNi4uOGEzYjIwNDIwZjEyOTBmYzQ0ZGNkNmM3OWY0
MmEzZTdjYTYzM2YwMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
b3dlckRGR1RvTExWTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dl
ckRGR1RvTExWTS5jcHAKQEAgLTQyLDggKzQyLDYgQEAKICNpbmNsdWRlICJMaW5rQnVmZmVyLmgi
CiAjaW5jbHVkZSAiT3BlcmFuZHNJbmxpbmVzLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgot
I2luY2x1ZGUgIlZpcnR1YWxSZWdpc3Rlci5oIgotCiAjaW5jbHVkZSA8d3RmL1Byb2Nlc3NJRC5o
PgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CkBAIC03MSw3ICs2OSw3IEBAIHB1
YmxpYzoKICAgICAgICAgLCBtX2hlYXBzKHN0YXRlLmNvbnRleHQpCiAgICAgICAgICwgbV9vdXQo
c3RhdGUuY29udGV4dCkKICAgICAgICAgLCBtX3ZhbHVlU291cmNlcyhPcGVyYW5kc0xpa2UsIHN0
YXRlLmdyYXBoLmJsb2NrKDApLT52YXJpYWJsZXNBdEhlYWQpCi0gICAgICAgICwgbV9sYXN0U2V0
T3BlcmFuZChWaXJ0dWFsUmVnaXN0ZXIoKSkKKyAgICAgICAgLCBtX2xhc3RTZXRPcGVyYW5kKHN0
ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCkpCiAgICAgICAgICwgbV9leGl0VGh1bmtHZW5l
cmF0b3Ioc3RhdGUpCiAgICAgICAgICwgbV9zdGF0ZShzdGF0ZS5ncmFwaCkKICAgICAgICAgLCBt
X2ludGVycHJldGVyKHN0YXRlLmdyYXBoLCBtX3N0YXRlKQpAQCAtNTI2LDcgKzUyNCw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBjb21waWxlR2V0QXJndW1lbnQoKQogICAgIHsKICAgICAgICAgVmFy
aWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9IG1fbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCk7
Ci0gICAgICAgIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kID0gdmFyaWFibGUtPmxvY2FsKCk7Cisg
ICAgICAgIGludCBvcGVyYW5kID0gdmFyaWFibGUtPm9wZXJhbmQoKTsKIAogICAgICAgICBMVmFs
dWUganNWYWx1ZSA9IG1fb3V0LmxvYWQ2NChhZGRyZXNzRm9yKG9wZXJhbmQpKTsKIApAQCAtNTU2
LDcgKzU1NCw3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBFbmNvZGVkSlNWYWx1ZSogYnVm
ZmVyID0gc3RhdGljX2Nhc3Q8RW5jb2RlZEpTVmFsdWUqPigKICAgICAgICAgICAgIG1fZnRsU3Rh
dGUuaml0Q29kZS0+ZnRsRm9yT1NSRW50cnkoKS0+ZW50cnlCdWZmZXIoKS0+ZGF0YUJ1ZmZlcigp
KTsKLSAgICAgICAgc2V0SlNWYWx1ZShtX291dC5sb2FkNjQobV9vdXQuYWJzb2x1dGUoYnVmZmVy
ICsgbV9ub2RlLT51bmxpbmtlZExvY2FsKCkudG9Mb2NhbCgpKSkpOworICAgICAgICBzZXRKU1Zh
bHVlKG1fb3V0LmxvYWQ2NChtX291dC5hYnNvbHV0ZShidWZmZXIgKyBvcGVyYW5kVG9Mb2NhbCht
X25vZGUtPnVubGlua2VkTG9jYWwoKSkpKSk7CiAgICAgfQogICAgIAogICAgIHZvaWQgY29tcGls
ZUdldExvY2FsKCkKQEAgLTIwMDUsNyArMjAwMyw3IEBAIHByaXZhdGU6CiAgICAgICAgIAogICAg
ICAgICBMVmFsdWUgY2FsbGVlRnJhbWUgPSBtX291dC5hZGQoCiAgICAgICAgICAgICBtX2NhbGxG
cmFtZSwKLSAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKHNpemVvZihSZWdpc3RlcikgKiB2
aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChjb2RlQmxvY2soKS0+bV9udW1DYWxsZWVSZWdpc3RlcnMp
Lm9mZnNldCgpKSk7CisgICAgICAgICAgICBtX291dC5jb25zdEludFB0cihzaXplb2YoUmVnaXN0
ZXIpICogbG9jYWxUb09wZXJhbmQoY29kZUJsb2NrKCktPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKSkp
OwogICAgICAgICAKICAgICAgICAgbV9vdXQuc3RvcmUzMigKICAgICAgICAgICAgIG1fb3V0LmNv
bnN0SW50MzIobnVtUGFzc2VkQXJncyArIGR1bW15VGhpc0FyZ3VtZW50KSwKQEAgLTIwMTgsNyAr
MjAxNiw3IEBAIHByaXZhdGU6CiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtUGFzc2Vk
QXJnczsgKytpKSB7CiAgICAgICAgICAgICBtX291dC5zdG9yZTY0KAogICAgICAgICAgICAgICAg
IGxvd0pTVmFsdWUobV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDEgKyBpKSksCi0gICAgICAg
ICAgICAgICAgYWRkcmVzc0ZvcihjYWxsZWVGcmFtZSwgdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1l
bnQoaSArIGR1bW15VGhpc0FyZ3VtZW50KS5vZmZzZXQoKSkpOworICAgICAgICAgICAgICAgIGFk
ZHJlc3NGb3IoY2FsbGVlRnJhbWUsIGFyZ3VtZW50VG9PcGVyYW5kKGkgKyBkdW1teVRoaXNBcmd1
bWVudCkpKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwo
bV9vdXQub3BlcmF0aW9uKGZ1bmN0aW9uKSwgY2FsbGVlRnJhbWUpKTsKQEAgLTMzNTMsNyArMzM1
MSw3IEBAIHByaXZhdGU6CiAgICAgICAgIAogICAgICAgICBtX2Z0bFN0YXRlLmppdENvZGUtPm9z
ckV4aXQuYXBwZW5kKE9TUkV4aXQoCiAgICAgICAgICAgICBraW5kLCBsb3dWYWx1ZS5mb3JtYXQo
KSwgbV9ncmFwaC5tZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlRm9yKGhpZ2hWYWx1ZSksCi0g
ICAgICAgICAgICBtX2NvZGVPcmlnaW5Gb3JFeGl0VGFyZ2V0LCBtX2NvZGVPcmlnaW5Gb3JFeGl0
UHJvZmlsZSwgbV9sYXN0U2V0T3BlcmFuZC5vZmZzZXQoKSwKKyAgICAgICAgICAgIG1fY29kZU9y
aWdpbkZvckV4aXRUYXJnZXQsIG1fY29kZU9yaWdpbkZvckV4aXRQcm9maWxlLCBtX2xhc3RTZXRP
cGVyYW5kLAogICAgICAgICAgICAgbV92YWx1ZVNvdXJjZXMubnVtYmVyT2ZBcmd1bWVudHMoKSwg
bV92YWx1ZVNvdXJjZXMubnVtYmVyT2ZMb2NhbHMoKSkpOwogICAgICAgICBtX2Z0bFN0YXRlLm9z
ckV4aXQuYXBwZW5kKE9TUkV4aXRDb21waWxhdGlvbkluZm8oKSk7CiAgICAgICAgIApAQCAtMzYy
OCw3ICszNjI2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgQVNTRVJUKG5vZGUtPmNvbnRhaW5zTW92
SGludCgpKTsKICAgICAgICAgQVNTRVJUKG5vZGUtPm9wKCkgIT0gWm9tYmllSGludCk7CiAgICAg
ICAgIAotICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCA9IG5vZGUtPmxvY2FsKCk7Cisg
ICAgICAgIGludCBvcGVyYW5kID0gbm9kZS0+bG9jYWwoKTsKICAgICAgICAgCiAgICAgICAgIG1f
bGFzdFNldE9wZXJhbmQgPSBvcGVyYW5kOwogICAgICAgICBtX3ZhbHVlU291cmNlcy5vcGVyYW5k
KG9wZXJhbmQpID0gVmFsdWVTb3VyY2Uobm9kZS0+Y2hpbGQxKCkubm9kZSgpKTsKQEAgLTM3NDYs
MjYgKzM3NDQsMTQgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIHJldHVybiBhZGRyZXNzRm9y
KG1fY2FsbEZyYW1lLCBvcGVyYW5kKTsKICAgICB9Ci0gICAgVHlwZWRQb2ludGVyIGFkZHJlc3NG
b3IoVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQpCi0gICAgewotICAgICAgICByZXR1cm4gYWRkcmVz
c0ZvcihtX2NhbGxGcmFtZSwgb3BlcmFuZC5vZmZzZXQoKSk7Ci0gICAgfQogICAgIFR5cGVkUG9p
bnRlciBwYXlsb2FkRm9yKGludCBvcGVyYW5kKQogICAgIHsKICAgICAgICAgcmV0dXJuIHBheWxv
YWRGb3IobV9jYWxsRnJhbWUsIG9wZXJhbmQpOwogICAgIH0KLSAgICBUeXBlZFBvaW50ZXIgcGF5
bG9hZEZvcihWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBw
YXlsb2FkRm9yKG1fY2FsbEZyYW1lLCBvcGVyYW5kLm9mZnNldCgpKTsKLSAgICB9CiAgICAgVHlw
ZWRQb2ludGVyIHRhZ0ZvcihpbnQgb3BlcmFuZCkKICAgICB7CiAgICAgICAgIHJldHVybiB0YWdG
b3IobV9jYWxsRnJhbWUsIG9wZXJhbmQpOwogICAgIH0KLSAgICBUeXBlZFBvaW50ZXIgdGFnRm9y
KFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRhZ0Zvciht
X2NhbGxGcmFtZSwgb3BlcmFuZC5vZmZzZXQoKSk7Ci0gICAgfQogICAgIAogICAgIFZNJiB2bSgp
IHsgcmV0dXJuIG1fZ3JhcGgubV92bTsgfQogICAgIENvZGVCbG9jayogY29kZUJsb2NrKCkgeyBy
ZXR1cm4gbV9ncmFwaC5tX2NvZGVCbG9jazsgfQpAQCAtMzc5NSw3ICszNzgxLDcgQEAgcHJpdmF0
ZToKICAgICBIYXNoTWFwPE5vZGUqLCBMVmFsdWU+IG1fcGhpczsKICAgICAKICAgICBPcGVyYW5k
czxWYWx1ZVNvdXJjZT4gbV92YWx1ZVNvdXJjZXM7Ci0gICAgVmlydHVhbFJlZ2lzdGVyIG1fbGFz
dFNldE9wZXJhbmQ7CisgICAgaW50IG1fbGFzdFNldE9wZXJhbmQ7CiAgICAgRXhpdFRodW5rR2Vu
ZXJhdG9yIG1fZXhpdFRodW5rR2VuZXJhdG9yOwogICAgIAogICAgIEluUGxhY2VBYnN0cmFjdFN0
YXRlIG1fc3RhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9T
UkVudHJ5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRW50cnkuY3BwCmlu
ZGV4IDA5MTA2MjQ2ZDBkNTJlODAyZGViMDE0OTJiMTQ0ZDYyNGUxZDhhNDUuLjMzMGUxYjI4ZjA0
M2E5MzI0MWE0NzAxYmMwNjk4YzRiYWQwODE4YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMT1NSRW50cnkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMT1NSRW50cnkuY3BwCkBAIC02NSw3ICs2NSw3IEBAIHZvaWQqIHByZXBhcmVPU1JFbnRy
eSgKICAgICAKICAgICBmb3IgKGludCBhcmd1bWVudCA9IHZhbHVlcy5udW1iZXJPZkFyZ3VtZW50
cygpOyBhcmd1bWVudC0tOykgewogICAgICAgICBSRUxFQVNFX0FTU0VSVCgKLSAgICAgICAgICAg
IGV4ZWMtPnIodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoYXJndW1lbnQpLm9mZnNldCgpKS5q
c1ZhbHVlKCkgPT0gdmFsdWVzLmFyZ3VtZW50KGFyZ3VtZW50KSk7CisgICAgICAgICAgICBleGVj
LT5yKGFyZ3VtZW50VG9PcGVyYW5kKGFyZ3VtZW50KSkuanNWYWx1ZSgpID09IHZhbHVlcy5hcmd1
bWVudChhcmd1bWVudCkpOwogICAgIH0KICAgICAKICAgICBSRUxFQVNFX0FTU0VSVCgKQEAgLTc4
LDcgKzc4LDcgQEAgdm9pZCogcHJlcGFyZU9TUkVudHJ5KAogICAgICAgICBzY3JhdGNoW2xvY2Fs
XSA9IEpTVmFsdWU6OmVuY29kZSh2YWx1ZXMubG9jYWwobG9jYWwpKTsKICAgICAKICAgICBpbnQg
c3RhY2tGcmFtZVNpemUgPSBlbnRyeUNvZGVCbG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnM7Ci0g
ICAgaWYgKCF2bS5pbnRlcnByZXRlci0+c3RhY2soKS5ncm93KCZleGVjLT5yZWdpc3RlcnMoKVt2
aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChzdGFja0ZyYW1lU2l6ZSkub2Zmc2V0KCldKSkgeworICAg
IGlmICghdm0uaW50ZXJwcmV0ZXItPnN0YWNrKCkuZ3JvdygmZXhlYy0+cmVnaXN0ZXJzKClbbG9j
YWxUb09wZXJhbmQoc3RhY2tGcmFtZVNpemUpXSkpIHsKICAgICAgICAgaWYgKE9wdGlvbnM6OnZl
cmJvc2VPU1IoKSkKICAgICAgICAgICAgIGRhdGFMb2coIiAgICBPU1IgZmFpbGVkIGJjYXVzZSBz
dGFjayBncm93dGggZmFpbGVkLlxuIik7CiAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMT1NSRXhpdC5jcHAKaW5kZXggZmZkMGQwNzE1MDhkNzM1MTY4NThiYjcz
YmMxN2JkMTAyOGFlNGFlMy4uMDE4OGU2MGYyYWJjZWVlMTNhNmY2ZGNlZDMyMTFhOTg4ODQyODZj
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXQuY3BwCkBAIC03OCwyMyAr
NzgsMjMgQEAgdm9pZCBPU1JFeGl0Ojpjb252ZXJ0VG9Gb3J3YXJkKAogICAgIGlmICghdmFsdWUp
CiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBWaXJ0dWFsUmVnaXN0ZXIgb3ZlcnJpZGRlbk9w
ZXJhbmQgPSBsYXN0TW92SGludC0+bG9jYWwoKTsKKyAgICBpbnQgb3ZlcnJpZGRlbk9wZXJhbmQg
PSBsYXN0TW92SGludC0+bG9jYWwoKTsKICAgICBtX2xhc3RTZXRPcGVyYW5kID0gb3ZlcnJpZGRl
bk9wZXJhbmQ7CiAgICAgCiAgICAgLy8gSXMgdGhlIHZhbHVlIGZvciB0aGlzIG9wZXJhbmQgYmVp
bmcgcGFzc2VkIGFzIGFuIGFyZ3VtZW50IHRvIHRoZSBleGl0LCBvciBpcwogICAgIC8vIGl0IHNv
bWV0aGluZyBlbHNlPyBJZiBpdCdzIGFuIGFyZ3VtZW50IGFscmVhZHksIHRoZW4gcmVwbGFjZSB0
aGF0IGFyZ3VtZW50OwogICAgIC8vIG90aGVyd2lzZSBhZGQgYW5vdGhlciBhcmd1bWVudC4KLSAg
ICBpZiAobV92YWx1ZXNbb3ZlcnJpZGRlbk9wZXJhbmQub2Zmc2V0KCldLmlzQXJndW1lbnQoKSkg
ewotICAgICAgICBFeGl0QXJndW1lbnQgZXhpdEFyZ3VtZW50ID0gbV92YWx1ZXNbb3ZlcnJpZGRl
bk9wZXJhbmQub2Zmc2V0KCldLmV4aXRBcmd1bWVudCgpOworICAgIGlmIChtX3ZhbHVlc1tvdmVy
cmlkZGVuT3BlcmFuZF0uaXNBcmd1bWVudCgpKSB7CisgICAgICAgIEV4aXRBcmd1bWVudCBleGl0
QXJndW1lbnQgPSBtX3ZhbHVlc1tvdmVycmlkZGVuT3BlcmFuZF0uZXhpdEFyZ3VtZW50KCk7CiAg
ICAgICAgIGFyZ3VtZW50c1tleGl0QXJndW1lbnQuYXJndW1lbnQoKV0gPSB2YWx1ZS52YWx1ZSgp
OwotICAgICAgICBtX3ZhbHVlc1tvdmVycmlkZGVuT3BlcmFuZC5vZmZzZXQoKV0gPSBFeGl0VmFs
dWU6OmV4aXRBcmd1bWVudCgKKyAgICAgICAgbV92YWx1ZXNbb3ZlcnJpZGRlbk9wZXJhbmRdID0g
RXhpdFZhbHVlOjpleGl0QXJndW1lbnQoCiAgICAgICAgICAgICBleGl0QXJndW1lbnQud2l0aEZv
cm1hdCh2YWx1ZS5mb3JtYXQoKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAogICAg
IHVuc2lnbmVkIGFyZ3VtZW50ID0gYXJndW1lbnRzLnNpemUoKTsKICAgICBhcmd1bWVudHMuYXBw
ZW5kKHZhbHVlLnZhbHVlKCkpOwotICAgIG1fdmFsdWVzW21fbGFzdFNldE9wZXJhbmQub2Zmc2V0
KCldID0gRXhpdFZhbHVlOjpleGl0QXJndW1lbnQoCisgICAgbV92YWx1ZXNbbV9sYXN0U2V0T3Bl
cmFuZF0gPSBFeGl0VmFsdWU6OmV4aXRBcmd1bWVudCgKICAgICAgICAgRXhpdEFyZ3VtZW50KHZh
bHVlLmZvcm1hdCgpLCBhcmd1bWVudCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTE9TUkV4aXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
T1NSRXhpdC5oCmluZGV4IDgyNGZlN2QxZTE3ZmU0M2RmMDNjYjVkYzczZTc5MzU4YmYyNjhlZjYu
LmJjMjgzMGU3NjRmMjVkYmY2ZDcyMDA2NDk5YWIxYjk4NGExMjRmMzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMT1NSRXhpdC5oCkBAIC00MCw3ICs0MCw2IEBACiAjaW5jbHVkZSAiTWV0
aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5oIgogI2luY2x1ZGUgIk9wZXJhbmRzLmgiCiAjaW5j
bHVkZSAiVmFsdWVQcm9maWxlLmgiCi0jaW5jbHVkZSAiVmlydHVhbFJlZ2lzdGVyLmgiCiAKIG5h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKIApAQCAtMTYxLDcgKzE2MCw3IEBAIHN0cnVj
dCBPU1JFeGl0IDogcHVibGljIERGRzo6T1NSRXhpdEJhc2UgewogICAgIC8vIE9mZnNldCB3aXRo
aW4gdGhlIGV4aXQgc3R1YnMgb2YgdGhlIHN0dWIgZm9yIHRoaXMgZXhpdC4KICAgICB1bnNpZ25l
ZCBtX3BhdGNoYWJsZUNvZGVPZmZzZXQ7CiAgICAgCi0gICAgVmlydHVhbFJlZ2lzdGVyIG1fbGFz
dFNldE9wZXJhbmQ7CisgICAgaW50IG1fbGFzdFNldE9wZXJhbmQ7CiAgICAgCiAgICAgT3BlcmFu
ZHM8RXhpdFZhbHVlPiBtX3ZhbHVlczsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcAppbmRleCAwZTVlMTRhZTIzZTA5NjM5M2RlNDM4
OTZjYmQwYmFmZDQ3ZTBlZmJjLi5jZjA2MDVhNmFiY2RmNDE3YTM3MzIyZTAyZDUzMWZjMjU0NzZi
NGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRDb21w
aWxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGls
ZXIuY3BwCkBAIC05Myw3ICs5Myw3IEBAIHN0YXRpYyB2b2lkIGNvbXBpbGVTdHViKAogICAgICAg
ICBpZiAoIXZhbHVlLmlzQXJndW1lbnQoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICAKLSAgICAgICAgc29ydGVkQXJndW1lbnRzLmFwcGVuZChFeGl0QXJndW1lbnRGb3JPcGVyYW5k
KHZhbHVlLmV4aXRBcmd1bWVudCgpLCBWaXJ0dWFsUmVnaXN0ZXIob3BlcmFuZCkpKTsKKyAgICAg
ICAgc29ydGVkQXJndW1lbnRzLmFwcGVuZChFeGl0QXJndW1lbnRGb3JPcGVyYW5kKHZhbHVlLmV4
aXRBcmd1bWVudCgpLCBvcGVyYW5kKSk7CiAgICAgfQogICAgIHN0ZDo6c29ydChzb3J0ZWRBcmd1
bWVudHMuYmVnaW4oKSwgc29ydGVkQXJndW1lbnRzLmVuZCgpLCBsZXNzZXJBcmd1bWVudEluZGV4
KTsKICAgICAKQEAgLTE1OCw3ICsxNTgsNyBAQCBzdGF0aWMgdm9pZCBjb21waWxlU3R1YigKICAg
ICBqaXQucG9wKE1hY3JvQXNzZW1ibGVyOjpmcmFtZVBvaW50ZXJSZWdpc3Rlcik7CiAgICAgaml0
LnBvcChHUFJJbmZvOjpub25BcmdHUFIwKTsgLy8gaWdub3JlIHRoZSByZXN1bHQuCiAgICAgCi0g
ICAgaWYgKGV4aXQubV9sYXN0U2V0T3BlcmFuZC5pc1ZhbGlkKCkpIHsKKyAgICBpZiAoZXhpdC5t
X2xhc3RTZXRPcGVyYW5kICE9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCkpIHsKICAg
ICAgICAgaml0LmxvYWQ2NCgKICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0Zv
cihleGl0Lm1fbGFzdFNldE9wZXJhbmQpLCBHUFJJbmZvOjpjYWNoZWRSZXN1bHRSZWdpc3Rlcik7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0Nh
bGxGcmFtZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5o
CmluZGV4IGQ1M2I2YWFiOTRiNGM0YjU3NTQ5Y2RjODZhZWM1YjhhMGM0MjUyMGQuLjYzYTNkMjdl
NDNkYjRlNWRmYmY5ODM3MWFkOTNjNGIyNmJhNjFkNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgKQEAgLTIxOCw3ICsyMTgsNyBAQCBuYW1lc3Bh
Y2UgSlNDICB7CiAKICAgICAgICAgLy8gUmVhZCBhIHJlZ2lzdGVyIGZyb20gdGhlIGNvZGVmcmFt
ZSAob3IgY29uc3RhbnQgZnJvbSB0aGUgQ29kZUJsb2NrKS4KICAgICAgICAgUmVnaXN0ZXImIHIo
aW50KTsKLSAgICAgICAgLy8gUmVhZCBhIHJlZ2lzdGVyIGZvciBhIG5vbi1jb25zdGFudAorICAg
ICAgICAvLyBSZWFkIGEgcmVnaXN0ZXIgZm9yIGEgbm9uLWNvbnN0YW50IAogICAgICAgICBSZWdp
c3RlciYgdW5jaGVja2VkUihpbnQpOwogCiAgICAgICAgIC8vIEFjY2VzcyB0byBhcmd1bWVudHMg
YXMgcGFzc2VkLiAoQWZ0ZXIgY2FwdHVyZSwgYXJndW1lbnRzIG1heSBtb3ZlIHRvIGEgZGlmZmVy
ZW50IGxvY2F0aW9uLikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9JbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
SW50ZXJwcmV0ZXIuY3BwCmluZGV4IDlhZWExNTkyNmQzYzk5NWFiOWI3MTFkNmE1NzBkYWNiNzkx
YWVlZjkuLmQ2NTBiMWEwNDIyZDBkMmQ3YWZkNTJjNWZhZGMwMDA3Y2IyZDkxYmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcApAQCAt
NjcsOCArNjcsNiBAQAogI2luY2x1ZGUgIlN0cmljdEV2YWxBY3RpdmF0aW9uLmgiCiAjaW5jbHVk
ZSAiU3Ryb25nSW5saW5lcy5oIgogI2luY2x1ZGUgIlZNU3RhY2tCb3VuZHMuaCIKLSNpbmNsdWRl
ICJWaXJ0dWFsUmVnaXN0ZXIuaCIKLQogI2luY2x1ZGUgPGxpbWl0cy5oPgogI2luY2x1ZGUgPHN0
ZGlvLmg+CiAjaW5jbHVkZSA8d3RmL1N0YWNrU3RhdHMuaD4KQEAgLTMyMCw3ICszMTgsNyBAQCB2
b2lkIEludGVycHJldGVyOjpkdW1wUmVnaXN0ZXJzKENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAg
IHdoaWxlIChpdCA+IGVuZCkgewogICAgICAgICBKU1ZhbHVlIHYgPSBpdC0+anNWYWx1ZSgpOwog
ICAgICAgICBpbnQgcmVnaXN0ZXJOdW1iZXIgPSBpdCAtIGNhbGxGcmFtZS0+cmVnaXN0ZXJzKCk7
Ci0gICAgICAgIFN0cmluZyBuYW1lID0gY29kZUJsb2NrLT5uYW1lRm9yUmVnaXN0ZXIoVmlydHVh
bFJlZ2lzdGVyKHJlZ2lzdGVyTnVtYmVyKSk7CisgICAgICAgIFN0cmluZyBuYW1lID0gY29kZUJs
b2NrLT5uYW1lRm9yUmVnaXN0ZXIocmVnaXN0ZXJOdW1iZXIpOwogICAgICAgICBkYXRhTG9nRigi
W3IlIDNkICUxNHNdICAgICAgfCAlMTBwIHwgJS0xNnMgMHglbGxkIFxuIiwgcmVnaXN0ZXJOdW1i
ZXIsIG5hbWUuYXNjaWkoKS5kYXRhKCksIGl0LCB0b0NTdHJpbmcodikuZGF0YSgpLCAobG9uZyBs
b25nKUpTVmFsdWU6OmVuY29kZSh2KSk7CiAgICAgICAgIGl0Kys7CiAgICAgfQpAQCAtMzU0LDcg
KzM1Miw3IEBAIHZvaWQgSW50ZXJwcmV0ZXI6OmR1bXBSZWdpc3RlcnMoQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCiAgICAgICAgIGRvIHsKICAgICAgICAgICAgIEpTVmFsdWUgdiA9IGl0LT5qc1ZhbHVl
KCk7CiAgICAgICAgICAgICBpbnQgcmVnaXN0ZXJOdW1iZXIgPSBpdCAtIGNhbGxGcmFtZS0+cmVn
aXN0ZXJzKCk7Ci0gICAgICAgICAgICBTdHJpbmcgbmFtZSA9IGNvZGVCbG9jay0+bmFtZUZvclJl
Z2lzdGVyKFZpcnR1YWxSZWdpc3RlcihyZWdpc3Rlck51bWJlcikpOworICAgICAgICAgICAgU3Ry
aW5nIG5hbWUgPSBjb2RlQmxvY2stPm5hbWVGb3JSZWdpc3RlcihyZWdpc3Rlck51bWJlcik7CiAg
ICAgICAgICAgICBkYXRhTG9nRigiW3IlIDNkICUxNHNdICAgICAgfCAlMTBwIHwgJS0xNnMgMHgl
bGxkIFxuIiwgcmVnaXN0ZXJOdW1iZXIsIG5hbWUuYXNjaWkoKS5kYXRhKCksIGl0LCB0b0NTdHJp
bmcodikuZGF0YSgpLCAobG9uZyBsb25nKUpTVmFsdWU6OmVuY29kZSh2KSk7CiAgICAgICAgICAg
ICAtLWl0OwogICAgICAgICAgICAgLS1yZWdpc3RlckNvdW50OwpAQCAtNDEwLDEzICs0MDgsMTMg
QEAgc3RhdGljIGJvb2wgdW53aW5kQ2FsbEZyYW1lKFN0YWNrVmlzaXRvciYgdmlzaXRvcikKICNp
ZiBFTkFCTEUoREZHX0pJVCkKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIXZpc2l0b3ItPmlzSW5s
aW5lZEZyYW1lKCkpOwogI2VuZGlmCi0gICAgICAgIGFjdGl2YXRpb24gPSBjYWxsRnJhbWUtPnVu
Y2hlY2tlZFIob2xkQ29kZUJsb2NrLT5hY3RpdmF0aW9uUmVnaXN0ZXIoKS5vZmZzZXQoKSkuanNW
YWx1ZSgpOworICAgICAgICBhY3RpdmF0aW9uID0gY2FsbEZyYW1lLT51bmNoZWNrZWRSKG9sZENv
ZGVCbG9jay0+YWN0aXZhdGlvblJlZ2lzdGVyKCkpLmpzVmFsdWUoKTsKICAgICAgICAgaWYgKGFj
dGl2YXRpb24pCiAgICAgICAgICAgICBqc0Nhc3Q8SlNBY3RpdmF0aW9uKj4oYWN0aXZhdGlvbikt
PnRlYXJPZmYoKnNjb3BlLT52bSgpKTsKICAgICB9CiAKICAgICBpZiAob2xkQ29kZUJsb2NrLT5j
b2RlVHlwZSgpID09IEZ1bmN0aW9uQ29kZSAmJiBvbGRDb2RlQmxvY2stPnVzZXNBcmd1bWVudHMo
KSkgewotICAgICAgICBpZiAoSlNWYWx1ZSBhcmd1bWVudHMgPSB2aXNpdG9yLT5yKHVubW9kaWZp
ZWRBcmd1bWVudHNSZWdpc3RlcihvbGRDb2RlQmxvY2stPmFyZ3VtZW50c1JlZ2lzdGVyKCkpLm9m
ZnNldCgpKS5qc1ZhbHVlKCkpIHsKKyAgICAgICAgaWYgKEpTVmFsdWUgYXJndW1lbnRzID0gdmlz
aXRvci0+cih1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIob2xkQ29kZUJsb2NrLT5hcmd1bWVu
dHNSZWdpc3RlcigpKSkuanNWYWx1ZSgpKSB7CiAgICAgICAgICAgICBpZiAoYWN0aXZhdGlvbikK
ICAgICAgICAgICAgICAgICBqc0Nhc3Q8QXJndW1lbnRzKj4oYXJndW1lbnRzKS0+ZGlkVGVhck9m
ZkFjdGl2YXRpb24oY2FsbEZyYW1lLCBqc0Nhc3Q8SlNBY3RpdmF0aW9uKj4oYWN0aXZhdGlvbikp
OwogI2lmIEVOQUJMRShERkdfSklUKQpAQCAtNjkxLDcgKzY4OSw3IEBAIE5FVkVSX0lOTElORSBI
YW5kbGVySW5mbyogSW50ZXJwcmV0ZXI6OnVud2luZChDYWxsRnJhbWUqJiBjYWxsRnJhbWUsIEpT
VmFsdWUmIGV4CiAKICAgICAvLyBVbndpbmQgdGhlIHNjb3BlIGNoYWluIHdpdGhpbiB0aGUgZXhj
ZXB0aW9uIGhhbmRsZXIncyBjYWxsIGZyYW1lLgogICAgIGludCB0YXJnZXRTY29wZURlcHRoID0g
aGFuZGxlci0+c2NvcGVEZXB0aDsKLSAgICBpZiAoY29kZUJsb2NrLT5uZWVkc0FjdGl2YXRpb24o
KSAmJiBjYWxsRnJhbWUtPnVuY2hlY2tlZFIoY29kZUJsb2NrLT5hY3RpdmF0aW9uUmVnaXN0ZXIo
KS5vZmZzZXQoKSkuanNWYWx1ZSgpKQorICAgIGlmIChjb2RlQmxvY2stPm5lZWRzQWN0aXZhdGlv
bigpICYmIGNhbGxGcmFtZS0+dW5jaGVja2VkUihjb2RlQmxvY2stPmFjdGl2YXRpb25SZWdpc3Rl
cigpKS5qc1ZhbHVlKCkpCiAgICAgICAgICsrdGFyZ2V0U2NvcGVEZXB0aDsKIAogICAgIEpTU2Nv
cGUqIHNjb3BlID0gY2FsbEZyYW1lLT5zY29wZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvQXNzZW1ibHlIZWxwZXJzLmgKaW5kZXggNmU1MmVmZWVlNDRhOGYwZDI1YjFhODkyMDA5YmUz
N2I3OGFiZWMyMi4uN2I3YmNjY2ViM2NiNDFiYjdlMmFmMjE4ODIwMWRjOTBiNDkzMzNlZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCkBAIC0xNTYsNyAr
MTU2LDcgQEAgcHVibGljOgogICAgIAogICAgIHN0YXRpYyBBZGRyZXNzIGFkZHJlc3NGb3IoVmly
dHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlcikKICAgICB7Ci0gICAgICAgIHJldHVybiBBZGRy
ZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCB2aXJ0dWFsUmVnaXN0ZXIub2Zmc2V0KCkg
KiBzaXplb2YoUmVnaXN0ZXIpKTsKKyAgICAgICAgcmV0dXJuIEFkZHJlc3MoR1BSSW5mbzo6Y2Fs
bEZyYW1lUmVnaXN0ZXIsIHZpcnR1YWxSZWdpc3RlciAqIHNpemVvZihSZWdpc3RlcikpOwogICAg
IH0KICAgICBzdGF0aWMgQWRkcmVzcyBhZGRyZXNzRm9yKGludCBvcGVyYW5kKQogICAgIHsKQEAg
LTE2NSw3ICsxNjUsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgQWRkcmVzcyB0YWdGb3IoVmly
dHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlcikKICAgICB7Ci0gICAgICAgIHJldHVybiBBZGRy
ZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCB2aXJ0dWFsUmVnaXN0ZXIub2Zmc2V0KCkg
KiBzaXplb2YoUmVnaXN0ZXIpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0
b3IsIGFzQml0cy50YWcpKTsKKyAgICAgICAgcmV0dXJuIEFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZy
YW1lUmVnaXN0ZXIsIHZpcnR1YWxSZWdpc3RlciAqIHNpemVvZihSZWdpc3RlcikgKyBPQkpFQ1Rf
T0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykpOwogICAgIH0KICAg
ICBzdGF0aWMgQWRkcmVzcyB0YWdGb3IoaW50IG9wZXJhbmQpCiAgICAgewpAQCAtMTc0LDcgKzE3
NCw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBBZGRyZXNzIHBheWxvYWRGb3IoVmlydHVhbFJl
Z2lzdGVyIHZpcnR1YWxSZWdpc3RlcikKICAgICB7Ci0gICAgICAgIHJldHVybiBBZGRyZXNzKEdQ
UkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCB2aXJ0dWFsUmVnaXN0ZXIub2Zmc2V0KCkgKiBzaXpl
b2YoUmVnaXN0ZXIpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFz
Qml0cy5wYXlsb2FkKSk7CisgICAgICAgIHJldHVybiBBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFt
ZVJlZ2lzdGVyLCB2aXJ0dWFsUmVnaXN0ZXIgKiBzaXplb2YoUmVnaXN0ZXIpICsgT0JKRUNUX09G
RlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSk7CiAgICAgfQog
ICAgIHN0YXRpYyBBZGRyZXNzIHBheWxvYWRGb3IoaW50IG9wZXJhbmQpCiAgICAgewpAQCAtMzgw
LDE2ICszODAsMTYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9iYXNlbGluZUNvZGVCbG9j
azsKICAgICB9CiAgICAgCi0gICAgVmlydHVhbFJlZ2lzdGVyIGFyZ3VtZW50c1JlZ2lzdGVyRm9y
KElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lKQorICAgIGludCBhcmd1bWVudHNSZWdp
c3RlckZvcihJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSkKICAgICB7CiAgICAgICAg
IGlmICghaW5saW5lQ2FsbEZyYW1lKQogICAgICAgICAgICAgcmV0dXJuIGNvZGVCbG9jaygpLT5h
cmd1bWVudHNSZWdpc3RlcigpOwogICAgICAgICAKLSAgICAgICAgcmV0dXJuIFZpcnR1YWxSZWdp
c3RlcihiYXNlbGluZUNvZGVCbG9ja0ZvcklubGluZUNhbGxGcmFtZSgKLSAgICAgICAgICAgIGlu
bGluZUNhbGxGcmFtZSktPmFyZ3VtZW50c1JlZ2lzdGVyKCkub2Zmc2V0KCkgKyBpbmxpbmVDYWxs
RnJhbWUtPnN0YWNrT2Zmc2V0KTsKKyAgICAgICAgcmV0dXJuIGJhc2VsaW5lQ29kZUJsb2NrRm9y
SW5saW5lQ2FsbEZyYW1lKAorICAgICAgICAgICAgaW5saW5lQ2FsbEZyYW1lKS0+YXJndW1lbnRz
UmVnaXN0ZXIoKSArIGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQ7CiAgICAgfQogICAgIAot
ICAgIFZpcnR1YWxSZWdpc3RlciBhcmd1bWVudHNSZWdpc3RlckZvcihjb25zdCBDb2RlT3JpZ2lu
JiBjb2RlT3JpZ2luKQorICAgIGludCBhcmd1bWVudHNSZWdpc3RlckZvcihjb25zdCBDb2RlT3Jp
Z2luJiBjb2RlT3JpZ2luKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFyZ3VtZW50c1JlZ2lzdGVy
Rm9yKGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuaAppbmRleCAxNDQzZGRkZGM4MTczNGQ3MWMzOTdmMzRjOTQ0ZTYzZWNhMDgxMjllLi5lZWUx
NTFiNzk0NTYwZmU4NjI0YTM1MTUyMTVkMjQ1YTY4YzcyOWJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmgKQEAgLTU4MywxMSArNTgzLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQg
ZW1pdEdldEpJVFN0dWJBcmcoaW50IGFyZ3VtZW50TnVtYmVyLCBSZWdpc3RlcklEIGRzdCk7CiAK
ICAgICAgICAgdm9pZCBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGludCBzcmMsIFJlZ2lzdGVySUQg
ZHN0KTsKLSAgICAgICAgdm9pZCBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKFZpcnR1YWxSZWdpc3Rl
ciBzcmMsIFJlZ2lzdGVySUQgZHN0KTsKICAgICAgICAgdm9pZCBlbWl0R2V0VmlydHVhbFJlZ2lz
dGVycyhpbnQgc3JjMSwgUmVnaXN0ZXJJRCBkc3QxLCBpbnQgc3JjMiwgUmVnaXN0ZXJJRCBkc3Qy
KTsKLSAgICAgICAgdm9pZCBlbWl0R2V0VmlydHVhbFJlZ2lzdGVycyhWaXJ0dWFsUmVnaXN0ZXIg
c3JjMSwgUmVnaXN0ZXJJRCBkc3QxLCBWaXJ0dWFsUmVnaXN0ZXIgc3JjMiwgUmVnaXN0ZXJJRCBk
c3QyKTsKICAgICAgICAgdm9pZCBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGludCBkc3QsIFJlZ2lz
dGVySUQgZnJvbSA9IHJlZ1QwKTsKLSAgICAgICAgdm9pZCBlbWl0UHV0VmlydHVhbFJlZ2lzdGVy
KFZpcnR1YWxSZWdpc3RlciBkc3QsIFJlZ2lzdGVySUQgZnJvbSA9IHJlZ1QwKTsKICAgICAgICAg
dm9pZCBlbWl0U3RvcmVDZWxsKGludCBkc3QsIFJlZ2lzdGVySUQgcGF5bG9hZCwgYm9vbCAvKiBv
bmx5IHVzZWQgaW4gSlNWYWx1ZTMyXzY0ICovID0gZmFsc2UpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCBwYXlsb2FkKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVENhbGwuY3BwCmluZGV4IDk1MGZmNzNkODAwNWI2Mzg1NDcxNGQ0Yjk5NjgxYzg0
YzU0ZTJmZGEuLmU4MzdmYWJhM2I2OGM3NDg5YjJiZDEyMzBhNjJmMzZjMWYwNWJlMDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcApAQCAtNzYsNyArNzYsNyBAQCB2b2lkIEpJ
VDo6Y29tcGlsZUxvYWRWYXJhcmdzKEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikKICAgICBKdW1w
TGlzdCBzbG93Q2FzZTsKICAgICBKdW1wTGlzdCBlbmQ7CiAgICAgYm9vbCBjYW5PcHRpbWl6ZSA9
IG1fY29kZUJsb2NrLT51c2VzQXJndW1lbnRzKCkKLSAgICAgICAgJiYgYXJndW1lbnRzID09IG1f
Y29kZUJsb2NrLT5hcmd1bWVudHNSZWdpc3RlcigpLm9mZnNldCgpCisgICAgICAgICYmIGFyZ3Vt
ZW50cyA9PSBtX2NvZGVCbG9jay0+YXJndW1lbnRzUmVnaXN0ZXIoKQogICAgICAgICAmJiAhbV9j
b2RlQmxvY2stPnN5bWJvbFRhYmxlKCktPnNsb3dBcmd1bWVudHMoKTsKIAogICAgIGlmIChjYW5P
cHRpbWl6ZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxp
bmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAppbmRleCA4ZDAy
MTU3NTg2ZGQxOWJlNmM4ZTI2M2VkN2Y4NmIxMzYwYmFiNmI5Li4wYTc2YmYyNWFkM2I5NzM4OTkw
MjEzMTdhMDIxMGEyMDkzYjZkNzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGlu
ZXMuaApAQCAtNzU4LDcgKzc1OCw3IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmVtaXRHZXRW
aXJ0dWFsUmVnaXN0ZXIoaW50IHNyYywgUmVnaXN0ZXJJRCBkc3QpCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBpZiAoc3JjID09IG1fbGFzdFJlc3VsdEJ5dGVjb2RlUmVnaXN0ZXIgJiYg
b3BlcmFuZElzTG9jYWwoc3JjKSAmJiBtX2NvZGVCbG9jay0+aXNUZW1wb3JhcnlSZWdpc3Rlcklu
ZGV4KFZpcnR1YWxSZWdpc3RlcihzcmMpLnRvTG9jYWwoKSkgJiYgIWF0SnVtcFRhcmdldCgpKSB7
CisgICAgaWYgKHNyYyA9PSBtX2xhc3RSZXN1bHRCeXRlY29kZVJlZ2lzdGVyICYmIG1fY29kZUJs
b2NrLT5pc1RlbXBvcmFyeVJlZ2lzdGVySW5kZXgob3BlcmFuZFRvTG9jYWwoc3JjKSkgJiYgIWF0
SnVtcFRhcmdldCgpKSB7CiAgICAgICAgIC8vIFRoZSBhcmd1bWVudCB3ZSB3YW50IGlzIGFscmVh
ZHkgc3RvcmVkIGluIGVheAogICAgICAgICBpZiAoZHN0ICE9IGNhY2hlZFJlc3VsdFJlZ2lzdGVy
KQogICAgICAgICAgICAgbW92ZShjYWNoZWRSZXN1bHRSZWdpc3RlciwgZHN0KTsKQEAgLTc3MCwx
MSArNzcwLDYgQEAgQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6ZW1pdEdldFZpcnR1YWxSZWdpc3Rl
cihpbnQgc3JjLCBSZWdpc3RlcklEIGRzdCkKICAgICBraWxsTGFzdFJlc3VsdFJlZ2lzdGVyKCk7
CiB9CiAKLUFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoVmly
dHVhbFJlZ2lzdGVyIHNyYywgUmVnaXN0ZXJJRCBkc3QpCi17Ci0gICAgZW1pdEdldFZpcnR1YWxS
ZWdpc3RlcihzcmMub2Zmc2V0KCksIGRzdCk7Ci19Ci0KIEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6
OmVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXJzKGludCBzcmMxLCBSZWdpc3RlcklEIGRzdDEsIGludCBz
cmMyLCBSZWdpc3RlcklEIGRzdDIpCiB7CiAgICAgaWYgKHNyYzIgPT0gbV9sYXN0UmVzdWx0Qnl0
ZWNvZGVSZWdpc3RlcikgewpAQCAtNzg2LDExICs3ODEsNiBAQCBBTFdBWVNfSU5MSU5FIHZvaWQg
SklUOjplbWl0R2V0VmlydHVhbFJlZ2lzdGVycyhpbnQgc3JjMSwgUmVnaXN0ZXJJRCBkc3QxLCBp
bnQgcwogICAgIH0KIH0KIAotQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6ZW1pdEdldFZpcnR1YWxS
ZWdpc3RlcnMoVmlydHVhbFJlZ2lzdGVyIHNyYzEsIFJlZ2lzdGVySUQgZHN0MSwgVmlydHVhbFJl
Z2lzdGVyIHNyYzIsIFJlZ2lzdGVySUQgZHN0MikKLXsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lz
dGVycyhzcmMxLm9mZnNldCgpLCBkc3QxLCBzcmMyLm9mZnNldCgpLCBkc3QyKTsKLX0KLQogQUxX
QVlTX0lOTElORSBpbnQzMl90IEpJVDo6Z2V0Q29uc3RhbnRPcGVyYW5kSW1tZWRpYXRlSW50KGlu
dCBzcmMpCiB7CiAgICAgcmV0dXJuIGdldENvbnN0YW50T3BlcmFuZChzcmMpLmFzSW50MzIoKTsK
QEAgLTgwNywxMSArNzk3LDYgQEAgQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6ZW1pdFB1dFZpcnR1
YWxSZWdpc3RlcihpbnQgZHN0LCBSZWdpc3RlcklEIGZyb20pCiAgICAgbV9sYXN0UmVzdWx0Qnl0
ZWNvZGVSZWdpc3RlciA9IChmcm9tID09IGNhY2hlZFJlc3VsdFJlZ2lzdGVyKSA/IGRzdCA6IHN0
ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCk7CiB9CiAKLUFMV0FZU19JTkxJTkUgdm9pZCBK
SVQ6OmVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoVmlydHVhbFJlZ2lzdGVyIGRzdCwgUmVnaXN0ZXJJ
RCBmcm9tKQotewotICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0Lm9mZnNldCgpLCBmcm9t
KTsKLX0KLQogQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6ZW1pdEluaXRSZWdpc3RlcihpbnQgZHN0
KQogewogICAgIHN0b3JlNjQoVHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKSksIEFkZHJlc3MoY2FsbEZyYW1lUmVnaXN0ZXIsIGRzdCAqIHNpemVvZihSZWdpc3Rlcikp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCmluZGV4IDBlY2NhYzFj
YmMwMDMyMWVmNzIxOGY2NTUzOWZiNzc5Njc5YzY5NGIuLmI0ZGM5MjliNTZlNTg1MDQ5NjE2ZDNl
OWQ4OTI3ODY1MGQwODkwMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3Bjb2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVz
LmNwcApAQCAtMzksNyArMzksNiBAQAogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lSXRlcmF0b3Iu
aCIKICNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCiAjaW5jbHVkZSAiU2xvd1BhdGhDYWxsLmgiCi0j
aW5jbHVkZSAiVmlydHVhbFJlZ2lzdGVyLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC0yNTgs
OSArMjU3LDkgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfdGVhcl9vZmZfYXJndW1lbnRzKEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgaW50IGFyZ3VtZW50cyA9IGN1cnJlbnRJbnN0
cnVjdGlvblsxXS51Lm9wZXJhbmQ7CiAgICAgaW50IGFjdGl2YXRpb24gPSBjdXJyZW50SW5zdHJ1
Y3Rpb25bMl0udS5vcGVyYW5kOwogCi0gICAgSnVtcCBhcmdzTm90Q3JlYXRlZCA9IGJyYW5jaFRl
c3Q2NChaZXJvLCBBZGRyZXNzKGNhbGxGcmFtZVJlZ2lzdGVyLCBzaXplb2YoUmVnaXN0ZXIpICog
KHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcihWaXJ0dWFsUmVnaXN0ZXIoYXJndW1lbnRzKSku
b2Zmc2V0KCkpKSk7CisgICAgSnVtcCBhcmdzTm90Q3JlYXRlZCA9IGJyYW5jaFRlc3Q2NChaZXJv
LCBBZGRyZXNzKGNhbGxGcmFtZVJlZ2lzdGVyLCBzaXplb2YoUmVnaXN0ZXIpICogKHVubW9kaWZp
ZWRBcmd1bWVudHNSZWdpc3Rlcihhcmd1bWVudHMpKSkpOwogICAgIEpJVFN0dWJDYWxsIHN0dWJD
YWxsKHRoaXMsIGN0aV9vcF90ZWFyX29mZl9hcmd1bWVudHMpOwotICAgIHN0dWJDYWxsLmFkZEFy
Z3VtZW50KHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcihWaXJ0dWFsUmVnaXN0ZXIoYXJndW1l
bnRzKSkub2Zmc2V0KCksIHJlZ1QyKTsKKyAgICBzdHViQ2FsbC5hZGRBcmd1bWVudCh1bm1vZGlm
aWVkQXJndW1lbnRzUmVnaXN0ZXIoYXJndW1lbnRzKSwgcmVnVDIpOwogICAgIHN0dWJDYWxsLmFk
ZEFyZ3VtZW50KGFjdGl2YXRpb24sIHJlZ1QyKTsKICAgICBzdHViQ2FsbC5jYWxsKCk7CiAgICAg
YXJnc05vdENyZWF0ZWQubGluayh0aGlzKTsKQEAgLTUwOCw3ICs1MDcsNyBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF9nZXRfcG5hbWVzKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAg
ZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCByZWdUMCk7CiAgICAgaWYgKCFtX2NvZGVCbG9j
ay0+aXNLbm93bk5vdEltbWVkaWF0ZShiYXNlKSkKICAgICAgICAgaXNOb3RPYmplY3QuYXBwZW5k
KGVtaXRKdW1wSWZOb3RKU0NlbGwocmVnVDApKTsKLSAgICBpZiAoYmFzZSAhPSBtX2NvZGVCbG9j
ay0+dGhpc1JlZ2lzdGVyKCkub2Zmc2V0KCkgfHwgbV9jb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgp
KSB7CisgICAgaWYgKGJhc2UgIT0gbV9jb2RlQmxvY2stPnRoaXNSZWdpc3RlcigpIHx8IG1fY29k
ZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkgewogICAgICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAs
IEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMik7CiAgICAgICAgIGlzTm90T2JqZWN0
LmFwcGVuZChlbWl0SnVtcElmTm90T2JqZWN0KHJlZ1QyKSk7CiAgICAgfQpAQCAtODM0LDcgKzgz
Myw3IEBAIHZvaWQgSklUOjplbWl0X29wX2VudGVyKEluc3RydWN0aW9uKikKICAgICAvLyBvYmpl
Y3QgbGlmZXRpbWUgYW5kIGluY3JlYXNpbmcgR0MgcHJlc3N1cmUuCiAgICAgc2l6ZV90IGNvdW50
ID0gbV9jb2RlQmxvY2stPm1fbnVtVmFyczsKICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IGNv
dW50OyArK2opCi0gICAgICAgIGVtaXRJbml0UmVnaXN0ZXIodmlydHVhbFJlZ2lzdGVyRm9yTG9j
YWwoaikub2Zmc2V0KCkpOworICAgICAgICBlbWl0SW5pdFJlZ2lzdGVyKGxvY2FsVG9PcGVyYW5k
KGopKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfY3JlYXRlX2FjdGl2YXRpb24oSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTg1Myw3ICs4NTIsNyBAQCB2b2lkIEpJVDo6ZW1p
dF9vcF9jcmVhdGVfYXJndW1lbnRzKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAg
ICAgSnVtcCBhcmdzQ3JlYXRlZCA9IGJyYW5jaFRlc3Q2NChOb25aZXJvLCBBZGRyZXNzKGNhbGxG
cmFtZVJlZ2lzdGVyLCBzaXplb2YoUmVnaXN0ZXIpICogZHN0KSk7CiAgICAgSklUU3R1YkNhbGwo
dGhpcywgY3RpX29wX2NyZWF0ZV9hcmd1bWVudHMpLmNhbGwoKTsKICAgICBlbWl0UHV0VmlydHVh
bFJlZ2lzdGVyKGRzdCk7Ci0gICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcih1bm1vZGlmaWVkQXJn
dW1lbnRzUmVnaXN0ZXIoVmlydHVhbFJlZ2lzdGVyKGRzdCkpKTsKKyAgICBlbWl0UHV0VmlydHVh
bFJlZ2lzdGVyKHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3Rlcihkc3QpKTsKICAgICBhcmdzQ3Jl
YXRlZC5saW5rKHRoaXMpOwogfQogCkBAIC0xMTQ2LDcgKzExNDUsNyBAQCB2b2lkIEpJVDo6ZW1p
dFNsb3dfb3BfZ2V0X2FyZ3VtZW50X2J5X3ZhbChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uLCBWZWN0bwogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKICAgICBKSVRTdHViQ2FsbCh0aGlz
LCBjdGlfb3BfY3JlYXRlX2FyZ3VtZW50cykuY2FsbCgpOwogICAgIGVtaXRQdXRWaXJ0dWFsUmVn
aXN0ZXIoYXJndW1lbnRzKTsKLSAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKHVubW9kaWZpZWRB
cmd1bWVudHNSZWdpc3RlcihWaXJ0dWFsUmVnaXN0ZXIoYXJndW1lbnRzKSkpOworICAgIGVtaXRQ
dXRWaXJ0dWFsUmVnaXN0ZXIodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKGFyZ3VtZW50cykp
OwogICAgIAogICAgIHNraXBBcmd1bWVudHNDcmVhdGlvbi5saW5rKHRoaXMpOwogICAgIEpJVFN0
dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9vcF9nZXRfYnlfdmFsX2dlbmVyaWMpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCmluZGV4IDQ3Nzc2Yjdm
NDI5YzVhYTg5ZDI0NWNlNjYxOTEzMzNjZjk5NDJhNDYuLjEwMzIyYjIwOWY2NzdiNzQzZjUwMThj
Y2E3YzQ2NDhhZjUzOWY3MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3Bjb2RlczMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
Y29kZXMzMl82NC5jcHAKQEAgLTM5LDcgKzM5LDYgQEAKICNpbmNsdWRlICJKU1ZhcmlhYmxlT2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgogI2luY2x1ZGUgIlNsb3dQYXRoQ2FsbC5o
IgotI2luY2x1ZGUgIlZpcnR1YWxSZWdpc3Rlci5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAt
MTA5Nyw3ICsxMDk2LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZW50ZXIoSW5zdHJ1Y3Rpb24qKQog
ICAgIC8vIHJlZ2lzdGVycyB0byB6YXAgc3RhbGUgcG9pbnRlcnMsIHRvIGF2b2lkIHVubmVjZXNz
YXJpbHkgcHJvbG9uZ2luZwogICAgIC8vIG9iamVjdCBsaWZldGltZSBhbmQgaW5jcmVhc2luZyBH
QyBwcmVzc3VyZS4KICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1fY29kZUJsb2NrLT5tX251bVZh
cnM7ICsraSkKLSAgICAgICAgZW1pdFN0b3JlKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGkpLm9m
ZnNldCgpLCBqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgZW1pdFN0b3JlKGxvY2FsVG9PcGVyYW5k
KGkpLCBqc1VuZGVmaW5lZCgpKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfY3JlYXRlX2FjdGl2
YXRpb24oSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRTdHVicy5jcHAKaW5kZXggYmQ1MzYzZGFjOGYxNzZjMTM4ZGI4YmRhNWExMjUxZmE4
OWE0NzViOS4uNWZlYzIxYmUzOTA4NTBjZTE2NWRjYzZjNWNjM2QxMDY0ZjI3MmUxMyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKQEAgLTEwNDcsNyArMTA0Nyw3IEBAIERF
RklORV9TVFVCX0ZVTkNUSU9OKHZvaWQsIG9wdGltaXplKQogICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG11c3RIYW5kbGVWYWx1ZXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAgIGlu
dCBvcGVyYW5kID0gbXVzdEhhbmRsZVZhbHVlcy5vcGVyYW5kRm9ySW5kZXgoaSk7CiAgICAgICAg
ICAgICBpZiAob3BlcmFuZElzQXJndW1lbnQob3BlcmFuZCkKLSAgICAgICAgICAgICAgICAmJiAh
VmlydHVhbFJlZ2lzdGVyKG9wZXJhbmQpLnRvQXJndW1lbnQoKQorICAgICAgICAgICAgICAgICYm
ICFvcGVyYW5kVG9Bcmd1bWVudChvcGVyYW5kKQogICAgICAgICAgICAgICAgICYmIGNvZGVCbG9j
ay0+Y29kZVR5cGUoKSA9PSBGdW5jdGlvbkNvZGUKICAgICAgICAgICAgICAgICAmJiBjb2RlQmxv
Y2stPnNwZWNpYWxpemF0aW9uS2luZCgpID09IENvZGVGb3JDb25zdHJ1Y3QpIHsKICAgICAgICAg
ICAgICAgICAvLyBVZ2guIElmIHdlJ3JlIGluIGEgY29uc3RydWN0b3IsIHRoZSAndGhpcycgYXJn
dW1lbnQgbWF5IGhvbGQgZ2FyYmFnZS4gSXQgd2lsbApAQCAtMTE1NCw3ICsxMTU0LDcgQEAgREVG
SU5FX1NUVUJfRlVOQ1RJT04oSlNPYmplY3QqLCBvcF9uZXdfZnVuYykKIHsKICAgICBTVFVCX0lO
SVRfU1RBQ0tfRlJBTUUoc3RhY2tGcmFtZSk7CiAgICAgCi0gICAgQVNTRVJUKHN0YWNrRnJhbWUu
Y2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+Y29kZVR5cGUoKSAhPSBGdW5jdGlvbkNvZGUgfHwgIXN0
YWNrRnJhbWUuY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+bmVlZHNGdWxsU2NvcGVDaGFpbigpIHx8
IHN0YWNrRnJhbWUuY2FsbEZyYW1lLT51bmNoZWNrZWRSKHN0YWNrRnJhbWUuY2FsbEZyYW1lLT5j
b2RlQmxvY2soKS0+YWN0aXZhdGlvblJlZ2lzdGVyKCkub2Zmc2V0KCkpLmpzVmFsdWUoKSk7Cisg
ICAgQVNTRVJUKHN0YWNrRnJhbWUuY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+Y29kZVR5cGUoKSAh
PSBGdW5jdGlvbkNvZGUgfHwgIXN0YWNrRnJhbWUuY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+bmVl
ZHNGdWxsU2NvcGVDaGFpbigpIHx8IHN0YWNrRnJhbWUuY2FsbEZyYW1lLT51bmNoZWNrZWRSKHN0
YWNrRnJhbWUuY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+YWN0aXZhdGlvblJlZ2lzdGVyKCkpLmpz
VmFsdWUoKSk7CiAgICAgcmV0dXJuIEpTRnVuY3Rpb246OmNyZWF0ZShzdGFja0ZyYW1lLmNhbGxG
cmFtZSwgc3RhY2tGcmFtZS5hcmdzWzBdLmZ1bmN0aW9uKCksIHN0YWNrRnJhbWUuY2FsbEZyYW1l
LT5zY29wZSgpKTsKIH0KIApAQCAtMTkzMSw3ICsxOTMxLDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJ
T04oSlNPYmplY3QqLCBvcF9uZXdfZnVuY19leHApCiAKICAgICBGdW5jdGlvbkV4ZWN1dGFibGUq
IGZ1bmN0aW9uID0gc3RhY2tGcmFtZS5hcmdzWzBdLmZ1bmN0aW9uKCk7CiAgICAgSlNGdW5jdGlv
biogZnVuYyA9IEpTRnVuY3Rpb246OmNyZWF0ZShjYWxsRnJhbWUsIGZ1bmN0aW9uLCBjYWxsRnJh
bWUtPnNjb3BlKCkpOwotICAgIEFTU0VSVChjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5jb2RlVHlw
ZSgpICE9IEZ1bmN0aW9uQ29kZSB8fCAhY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+bmVlZHNGdWxs
U2NvcGVDaGFpbigpIHx8IGNhbGxGcmFtZS0+dW5jaGVja2VkUihjYWxsRnJhbWUtPmNvZGVCbG9j
aygpLT5hY3RpdmF0aW9uUmVnaXN0ZXIoKS5vZmZzZXQoKSkuanNWYWx1ZSgpKTsKKyAgICBBU1NF
UlQoY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+Y29kZVR5cGUoKSAhPSBGdW5jdGlvbkNvZGUgfHwg
IWNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPm5lZWRzRnVsbFNjb3BlQ2hhaW4oKSB8fCBjYWxsRnJh
bWUtPnVuY2hlY2tlZFIoY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+YWN0aXZhdGlvblJlZ2lzdGVy
KCkpLmpzVmFsdWUoKSk7CiAKICAgICByZXR1cm4gZnVuYzsKIH0KQEAgLTE5NTksNyArMTk1OSw3
IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKEVuY29kZWRKU1ZhbHVlLCBvcF9jYWxsX2V2YWwpCiAg
ICAgQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZSA9IGNhbGxGcmFtZS0+Y2FsbGVyRnJhbWUoKTsKICAg
ICBBU1NFUlQoY2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgpLT5jb2RlQmxvY2soKS0+Y29kZVR5cGUo
KSAhPSBGdW5jdGlvbkNvZGUKICAgICAgICAgfHwgIWNhbGxGcmFtZS0+Y2FsbGVyRnJhbWUoKS0+
Y29kZUJsb2NrKCktPm5lZWRzRnVsbFNjb3BlQ2hhaW4oKQotICAgICAgICB8fCBjYWxsRnJhbWUt
PmNhbGxlckZyYW1lKCktPnVuY2hlY2tlZFIoY2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgpLT5jb2Rl
QmxvY2soKS0+YWN0aXZhdGlvblJlZ2lzdGVyKCkub2Zmc2V0KCkpLmpzVmFsdWUoKSk7CisgICAg
ICAgIHx8IGNhbGxGcmFtZS0+Y2FsbGVyRnJhbWUoKS0+dW5jaGVja2VkUihjYWxsRnJhbWUtPmNh
bGxlckZyYW1lKCktPmNvZGVCbG9jaygpLT5hY3RpdmF0aW9uUmVnaXN0ZXIoKSkuanNWYWx1ZSgp
KTsKIAogICAgIGNhbGxGcmFtZS0+c2V0U2NvcGUoY2FsbGVyRnJhbWUtPnNjb3BlKCkpOwogICAg
IGNhbGxGcmFtZS0+c2V0UmV0dXJuUEMoc3RhdGljX2Nhc3Q8SW5zdHJ1Y3Rpb24qPigoU1RVQl9S
RVRVUk5fQUREUkVTUykudmFsdWUoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludFNsb3dQYXRocy5jcHAKaW5kZXggNjBkMDNiYmNkZjRmZDI3OGEwYjBmMDYyMWM4MTc0
YjdmYjI2MTgxMS4uNTNmNDE5NWQ0OWMzOGJkOGQxOGVmMjM1NjdjMDU1OTIyZDdkMjI2OCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCkBAIC02
OTcsNyArNjk3LDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9hcmd1bWVu
dF9ieV92YWwpCiAgICAgICAgIGFyZ3VtZW50cyA9IEFyZ3VtZW50czo6Y3JlYXRlKHZtLCBleGVj
KTsKICAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CiAgICAgICAgIExMSU5UX09QKDIp
ID0gYXJndW1lbnRzOwotICAgICAgICBleGVjLT51bmNoZWNrZWRSKHVubW9kaWZpZWRBcmd1bWVu
dHNSZWdpc3RlcihWaXJ0dWFsUmVnaXN0ZXIocGNbMl0udS5vcGVyYW5kKSkub2Zmc2V0KCkpID0g
YXJndW1lbnRzOworICAgICAgICBleGVjLT51bmNoZWNrZWRSKHVubW9kaWZpZWRBcmd1bWVudHNS
ZWdpc3RlcihwY1syXS51Lm9wZXJhbmQpKSA9IGFyZ3VtZW50czsKICAgICB9CiAgICAgCiAgICAg
TExJTlRfUkVUVVJOX1BST0ZJTEVEKG9wX2dldF9hcmd1bWVudF9ieV92YWwsIGdldEJ5VmFsKGV4
ZWMsIGFyZ3VtZW50cywgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKTsKQEAgLTkxNyw3ICs5MTcs
NyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmV3X2Z1bmMpCiAgICAgQ29kZUJs
b2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKICAgICBBU1NFUlQoY29kZUJsb2Nr
LT5jb2RlVHlwZSgpICE9IEZ1bmN0aW9uQ29kZQogICAgICAgICAgICB8fCAhY29kZUJsb2NrLT5u
ZWVkc0Z1bGxTY29wZUNoYWluKCkKLSAgICAgICAgICAgfHwgZXhlYy0+dW5jaGVja2VkUihjb2Rl
QmxvY2stPmFjdGl2YXRpb25SZWdpc3RlcigpLm9mZnNldCgpKS5qc1ZhbHVlKCkpOworICAgICAg
ICAgICB8fCBleGVjLT51bmNoZWNrZWRSKGNvZGVCbG9jay0+YWN0aXZhdGlvblJlZ2lzdGVyKCkp
LmpzVmFsdWUoKSk7CiAjaWYgTExJTlRfU0xPV19QQVRIX1RSQUNJTkcKICAgICBkYXRhTG9nRigi
Q3JlYXRpbmcgZnVuY3Rpb24hXG4iKTsKICNlbmRpZgpAQCAtMTEyOCw3ICsxMTI4LDcgQEAgTExJ
TlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3RlYXJfb2ZmX2FyZ3VtZW50cykKIHsKICAgICBM
TElOVF9CRUdJTigpOwogICAgIEFTU0VSVChleGVjLT5jb2RlQmxvY2soKS0+dXNlc0FyZ3VtZW50
cygpKTsKLSAgICBBcmd1bWVudHMqIGFyZ3VtZW50cyA9IGpzQ2FzdDxBcmd1bWVudHMqPihleGVj
LT51bmNoZWNrZWRSKHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcihWaXJ0dWFsUmVnaXN0ZXIo
cGNbMV0udS5vcGVyYW5kKSkub2Zmc2V0KCkpLmpzVmFsdWUoKSk7CisgICAgQXJndW1lbnRzKiBh
cmd1bWVudHMgPSBqc0Nhc3Q8QXJndW1lbnRzKj4oZXhlYy0+dW5jaGVja2VkUih1bm1vZGlmaWVk
QXJndW1lbnRzUmVnaXN0ZXIocGNbMV0udS5vcGVyYW5kKSkuanNWYWx1ZSgpKTsKICAgICBpZiAo
SlNWYWx1ZSBhY3RpdmF0aW9uVmFsdWUgPSBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkKICAgICAg
ICAgYXJndW1lbnRzLT5kaWRUZWFyT2ZmQWN0aXZhdGlvbihleGVjLCBqc0Nhc3Q8SlNBY3RpdmF0
aW9uKj4oYWN0aXZhdGlvblZhbHVlKSk7CiAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyQnl0ZWNvZGVTZXF1ZW5jZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJCeXRlY29kZVNlcXVlbmNlLmNwcApp
bmRleCBkMDBlMzcxYWY3MzAxNTAwYjllN2VkMzNjNjZiOTVlNGNjYjA0Y2FiLi45OTNlMTY4ZTc3
MDNjZGVmMGJlMjI4YjE3ZWMxYmZhODlmNDUxNDRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJCeXRlY29kZVNlcXVlbmNlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJCeXRlY29kZVNlcXVlbmNlLmNwcApA
QCAtNDUsNyArNDUsNyBAQCBCeXRlY29kZVNlcXVlbmNlOjpCeXRlY29kZVNlcXVlbmNlKENvZGVC
bG9jayogY29kZUJsb2NrKQogICAgICAgICBpZiAoIWRlc2NyaXB0aW9uLmxlbmd0aCgpKQogICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgIG91dC5yZXNldCgpOwotICAgICAgICBvdXQucHJp
bnQoImFyZyIsIGksICIgKHIiLCB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKS5vZmZzZXQo
KSwgIik6ICIsIGRlc2NyaXB0aW9uKTsKKyAgICAgICAgb3V0LnByaW50KCJhcmciLCBpLCAiIChy
IiwgYXJndW1lbnRUb09wZXJhbmQoaSksICIpOiAiLCBkZXNjcmlwdGlvbik7CiAgICAgICAgIG1f
aGVhZGVyLmFwcGVuZChvdXQudG9DU3RyaW5nKCkpOwogICAgIH0KICNlbmRpZiAvLyBFTkFCTEUo
VkFMVUVfUFJPRklMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmNwcAppbmRleCBiZTZhYzU5MDk5NWE0ZjMwMmE2NmY5NWJjMjkzNTIyYTY0
ZjUyOTZiLi5lN2M1Nzk1ZDlkNTc1N2IyOWJkMWNkMDk2NDJmOWE0MTE1Yzc5Y2U0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKQEAg
LTIwNyw3ICsyMDcsNyBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY3JlYXRlX2FyZ3VtZW50
cykKICAgICBKU1ZhbHVlIGFyZ3VtZW50cyA9IEpTVmFsdWUoQXJndW1lbnRzOjpjcmVhdGUodm0s
IGV4ZWMpKTsKICAgICBDSEVDS19FWENFUFRJT04oKTsKICAgICBleGVjLT51bmNoZWNrZWRSKHBj
WzFdLnUub3BlcmFuZCkgPSBhcmd1bWVudHM7Ci0gICAgZXhlYy0+dW5jaGVja2VkUih1bm1vZGlm
aWVkQXJndW1lbnRzUmVnaXN0ZXIoVmlydHVhbFJlZ2lzdGVyKHBjWzFdLnUub3BlcmFuZCkpLm9m
ZnNldCgpKSA9IGFyZ3VtZW50czsKKyAgICBleGVjLT51bmNoZWNrZWRSKHVubW9kaWZpZWRBcmd1
bWVudHNSZWdpc3RlcihwY1sxXS51Lm9wZXJhbmQpKSA9IGFyZ3VtZW50czsKICAgICBFTkQoKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0
aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5jcHAK
aW5kZXggYTgzOWM5NDExZmQ2YThhOWVmYjdmZDFhYTg4N2NlZDY1NTA2NjhmYy4uNDRmMjU3ZTMy
MzFhMDM2ZmEwNzM4YjZkODAyZmIxNWRlOThhZDljYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uY3BwCkBAIC0yMTgsMTMgKzIxOCwxMyBAQCBKU1Zh
bHVlIEpTQWN0aXZhdGlvbjo6YXJndW1lbnRzR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUgc2xv
dEJhc2UsIFByb3BlcnR5TmFtZQogICAgIGlmIChhY3RpdmF0aW9uLT5pc1Rvcm5PZmYoKSB8fCAh
KGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPnVzZXNBcmd1bWVudHMoKSB8fCBjYWxsRnJhbWUtPmNv
ZGVCbG9jaygpLT51c2VzRXZhbCgpKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAK
LSAgICBWaXJ0dWFsUmVnaXN0ZXIgYXJndW1lbnRzUmVnaXN0ZXIgPSBjYWxsRnJhbWUtPmNvZGVC
bG9jaygpLT5hcmd1bWVudHNSZWdpc3RlcigpOwotICAgIGlmIChKU1ZhbHVlIGFyZ3VtZW50cyA9
IGNhbGxGcmFtZS0+dW5jaGVja2VkUihhcmd1bWVudHNSZWdpc3Rlci5vZmZzZXQoKSkuanNWYWx1
ZSgpKQorICAgIGludCBhcmd1bWVudHNSZWdpc3RlciA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCkt
PmFyZ3VtZW50c1JlZ2lzdGVyKCk7CisgICAgaWYgKEpTVmFsdWUgYXJndW1lbnRzID0gY2FsbEZy
YW1lLT51bmNoZWNrZWRSKGFyZ3VtZW50c1JlZ2lzdGVyKS5qc1ZhbHVlKCkpCiAgICAgICAgIHJl
dHVybiBhcmd1bWVudHM7Ci0gICAgaW50IHJlYWxBcmd1bWVudHNSZWdpc3RlciA9IHVubW9kaWZp
ZWRBcmd1bWVudHNSZWdpc3Rlcihhcmd1bWVudHNSZWdpc3Rlcikub2Zmc2V0KCk7CisgICAgaW50
IHJlYWxBcmd1bWVudHNSZWdpc3RlciA9IHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3Rlcihhcmd1
bWVudHNSZWdpc3Rlcik7CiAKICAgICBKU1ZhbHVlIGFyZ3VtZW50cyA9IEpTVmFsdWUoQXJndW1l
bnRzOjpjcmVhdGUoY2FsbEZyYW1lLT52bSgpLCBjYWxsRnJhbWUpKTsKLSAgICBjYWxsRnJhbWUt
PnVuY2hlY2tlZFIoYXJndW1lbnRzUmVnaXN0ZXIub2Zmc2V0KCkpID0gYXJndW1lbnRzOworICAg
IGNhbGxGcmFtZS0+dW5jaGVja2VkUihhcmd1bWVudHNSZWdpc3RlcikgPSBhcmd1bWVudHM7CiAg
ICAgY2FsbEZyYW1lLT51bmNoZWNrZWRSKHJlYWxBcmd1bWVudHNSZWdpc3RlcikgPSBhcmd1bWVu
dHM7CiAgICAgCiAgICAgQVNTRVJUKGNhbGxGcmFtZS0+dW5jaGVja2VkUihyZWFsQXJndW1lbnRz
UmVnaXN0ZXIpLmpzVmFsdWUoKS5pbmhlcml0cyhBcmd1bWVudHM6OmluZm8oKSkpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>