<?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>164276</bug_id>
          
          <creation_ts>2016-11-01 10:20:27 -0700</creation_ts>
          <short_desc>REGRESSION(r208208): This change caused 28 JSC test failures. (Requested by ryanhaddad on #webkit).</short_desc>
          <delta_ts>2016-11-01 10:34:44 -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>WebKit 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>163925</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1246919</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-01 10:20:27 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/208208 broke the build:
This change caused 28 JSC test failures. (Requested by ryanhaddad 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>1246921</commentid>
    <comment_count>1</comment_count>
      <attachid>293556</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-01 10:21:11 -0700</bug_when>
    <thetext>Created attachment 293556
ROLLOUT of r208208

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>1246922</commentid>
    <comment_count>2</comment_count>
      <attachid>293556</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-01 10:23:22 -0700</bug_when>
    <thetext>Comment on attachment 293556
ROLLOUT of r208208

Clearing flags on attachment: 293556

Committed r208224: &lt;http://trac.webkit.org/changeset/208224&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246923</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-01 10:23:25 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246927</commentid>
    <comment_count>4</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2016-11-01 10:34:44 -0700</bug_when>
    <thetext>*** Bug 164274 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293556</attachid>
            <date>2016-11-01 10:21:11 -0700</date>
            <delta_ts>2016-11-01 10:23:22 -0700</delta_ts>
            <desc>ROLLOUT of r208208</desc>
            <filename>bug-164276-20161101101714.patch</filename>
            <type>text/plain</type>
            <size>76180</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4MjIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
OTFiYzllNmU3ZWMyZTg0MDRiOTg1MzBjOWVkM2UwYjU3N2I3ZGQ2Li43NzIxNDRhZGI5ODBlYmVk
ODk5ZjlkODk1NzJjODZjMGY3YzRjN2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMCBAQAorMjAxNi0xMS0wMSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIwODIwOCBhbmQgcjIw
ODIxMC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
NDI3NgorCisgICAgICAgIFRoaXMgY2hhbmdlIGNhdXNlZCAyOCBKU0MgdGVzdCBmYWlsdXJlcy4g
KFJlcXVlc3RlZCBieQorICAgICAgICByeWFuaGFkZGFkIG9uICN3ZWJraXQpLgorCisgICAgICAg
IFJldmVydGVkIGNoYW5nZXNldHM6CisKKyAgICAgICAgIldlIHNob3VsZCBiZSBhYmxlIHRvIGVs
aW1pbmF0ZSByZXN0IHBhcmFtZXRlciBhbGxvY2F0aW9ucyIKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzkyNQorICAgICAgICBodHRwOi8vdHJhYy53
ZWJraXQub3JnL2NoYW5nZXNldC8yMDgyMDgKKworICAgICAgICAiRml4IHRoZSBFRkwgYnVpbGQu
IgorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yMDgyMTAKKwogMjAx
Ni0xMS0wMSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBXZWIg
SW5zcGVjdG9yOiBBZGQgdGhlIHN1cHBvcnQgZm9yIGN1c3RvbSBlbGVtZW50cwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCAxMDY3YjIyNjg4MWMy
MWNhNWE1Yzk1MTE5OTNjMWJjYzNmMzNhMWY5Li41ODZmZjhjMWU3OTA5Mzc5NzEzOGExMTRjZmNj
NDZhOTA0ZWFjYTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcApAQCAtMjM2MCwxMyArMjM2MCw2IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIGNhc2Ugb3BfY3JlYXRlX3Jl
c3Q6IHsKLSAgICAgICAgICAgIGludCBudW1iZXJPZkFyZ3VtZW50c1RvU2tpcCA9IGluc3RydWN0
aW9uc1tpICsgM10udS5vcGVyYW5kOwotICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChudW1iZXJP
ZkFyZ3VtZW50c1RvU2tpcCwgbnVtYmVyT2ZBcmd1bWVudHNUb1NraXAgPj0gMCk7Ci0gICAgICAg
ICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKG51bWJlck9mQXJndW1lbnRzVG9Ta2lwID09IG51bVBh
cmFtZXRlcnMoKSAtIDEsICJXZSBhc3N1bWUgdGhhdCB0aGlzIGlzIHRydWUgd2hlbiByZW1hdGVy
aWFsaXppbmcgdGhlIHJlc3QgcGFyYW1ldGVyIGR1cmluZyBPU1IgZXhpdCBpbiB0aGUgRlRMIEpJ
VC4iKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0KICAgICAgICAgZGVmYXVsdDoK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggNDNi
NTFhMTZlY2JhZGE1MGY5ZDdmODhlZWUzY2YxMTI2YjdhMjI0YS4uMWQxZjMwODlhZTkwZDQ1NWRh
MGExM2VlMzBmYjkyMDJkYTgxNGI3OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtMTY2NSwxNyAr
MTY2NSwxNiBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+Ojpl
eGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICAgICAgLy8gdGhhdCdz
IHRoZSBjb25zZXJ2YXRpdmUgdGhpbmcgdG8gZG8uIE90aGVyd2lzZSB3ZSdkIG5lZWQgdG8gd3Jp
dGUgbW9yZSBjb2RlIHRvIG1hcmsgc3VjaAogICAgICAgICAgICAgLy8gcGF0aHMgYXMgdW5yZWFj
aGFibGUsIG9yIHRvIHJldHVybiB1bmRlZmluZWQuIFdlIGNvdWxkIGltcGxlbWVudCB0aGF0IGV2
ZW50dWFsbHkuCiAgICAgICAgICAgICAKLSAgICAgICAgICAgIHVuc2lnbmVkIGFyZ3VtZW50SW5k
ZXggPSBpbmRleC5hc1VJbnQzMigpICsgbm9kZS0+bnVtYmVyT2ZBcmd1bWVudHNUb1NraXAoKTsK
ICAgICAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUpIHsKLSAgICAgICAgICAgICAgICBpZiAo
YXJndW1lbnRJbmRleCA8IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSAtIDEpIHsK
KyAgICAgICAgICAgICAgICBpZiAoaW5kZXguYXNVSW50MzIoKSA8IGlubGluZUNhbGxGcmFtZS0+
YXJndW1lbnRzLnNpemUoKSAtIDEpIHsKICAgICAgICAgICAgICAgICAgICAgZm9yTm9kZShub2Rl
KSA9IG1fc3RhdGUudmFyaWFibGVzKCkub3BlcmFuZCgKLSAgICAgICAgICAgICAgICAgICAgICAg
IHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGFyZ3VtZW50SW5kZXggKyAxKSArIGlubGluZUNh
bGxGcmFtZS0+c3RhY2tPZmZzZXQpOworICAgICAgICAgICAgICAgICAgICAgICAgdmlydHVhbFJl
Z2lzdGVyRm9yQXJndW1lbnQoaW5kZXguYXNJbnQzMigpICsgMSkgKyBpbmxpbmVDYWxsRnJhbWUt
PnN0YWNrT2Zmc2V0KTsKICAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZS5zZXRGb3VuZENvbnN0
YW50cyh0cnVlKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBpZiAoYXJndW1lbnRJbmRl
eCA8IG1fc3RhdGUudmFyaWFibGVzKCkubnVtYmVyT2ZBcmd1bWVudHMoKSAtIDEpIHsKLSAgICAg
ICAgICAgICAgICAgICAgZm9yTm9kZShub2RlKSA9IG1fc3RhdGUudmFyaWFibGVzKCkuYXJndW1l
bnQoYXJndW1lbnRJbmRleCArIDEpOworICAgICAgICAgICAgICAgIGlmIChpbmRleC5hc1VJbnQz
MigpIDwgbV9zdGF0ZS52YXJpYWJsZXMoKS5udW1iZXJPZkFyZ3VtZW50cygpIC0gMSkgeworICAg
ICAgICAgICAgICAgICAgICBmb3JOb2RlKG5vZGUpID0gbV9zdGF0ZS52YXJpYWJsZXMoKS5hcmd1
bWVudChpbmRleC5hc0ludDMyKCkgKyAxKTsKICAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZS5z
ZXRGb3VuZENvbnN0YW50cyh0cnVlKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICAgICAgfQpAQCAtMTY4Niw3ICsxNjg1LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJl
dGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxp
bWkKICAgICAgICAgICAgIC8vIFdlIGhhdmUgYSBib3VuZCBvbiB0aGUgdHlwZXMgZXZlbiB0aG91
Z2ggaXQncyByYW5kb20gYWNjZXNzLiBUYWtlIGFkdmFudGFnZSBvZiB0aGlzLgogICAgICAgICAg
ICAgCiAgICAgICAgICAgICBBYnN0cmFjdFZhbHVlIHJlc3VsdDsKLSAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDEgKyBub2RlLT5udW1iZXJPZkFyZ3VtZW50c1RvU2tpcCgpOyBpIDwgaW5s
aW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKTsgaS0tID4gMTsp
IHsKICAgICAgICAgICAgICAgICByZXN1bHQubWVyZ2UoCiAgICAgICAgICAgICAgICAgICAgIG1f
c3RhdGUudmFyaWFibGVzKCkub3BlcmFuZCgKICAgICAgICAgICAgICAgICAgICAgICAgIHZpcnR1
YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpICsgaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCkp
OwpAQCAtMTk1MSw3ICsxOTUwLDYgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICBjYXNl
IFBoYW50b21DcmVhdGVBY3RpdmF0aW9uOgogICAgIGNhc2UgUGhhbnRvbURpcmVjdEFyZ3VtZW50
czoKICAgICBjYXNlIFBoYW50b21DbG9uZWRBcmd1bWVudHM6Ci0gICAgY2FzZSBQaGFudG9tQ3Jl
YXRlUmVzdDoKICAgICBjYXNlIEJvdHRvbVZhbHVlOgogICAgICAgICBtX3N0YXRlLnNldERpZENs
b2JiZXIodHJ1ZSk7IC8vIFByZXZlbnQgY29uc3RhbnQgZm9sZGluZy4KICAgICAgICAgLy8gVGhp
cyBjbGFpbXMgdG8gcmV0dXJuIGJvdHRvbS4KQEAgLTI4NjcsMTUgKzI4NjUsOSBAQCBib29sIEFi
c3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNp
Z25lZCBjbG9iYmVyTGltaQogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgQ3JlYXRlUmVzdDoK
LSAgICAgICAgaWYgKCFtX2dyYXBoLmlzV2F0Y2hpbmdIYXZpbmdBQmFkVGltZVdhdGNocG9pbnQo
bm9kZSkpIHsKLSAgICAgICAgICAgIC8vIFRoaXMgbWVhbnMgd2UncmUgYWxyZWFkeSBoYXZpbmcg
YSBiYWQgdGltZS4KKyAgICAgICAgaWYgKCFtX2dyYXBoLmlzV2F0Y2hpbmdIYXZpbmdBQmFkVGlt
ZVdhdGNocG9pbnQobm9kZSkpIC8vIFRoaXMgbWVhbnMgd2UncmUgYWxyZWFkeSBoYXZpbmcgYSBi
YWQgdGltZS4KICAgICAgICAgICAgIGNsb2JiZXJXb3JsZChub2RlLT5vcmlnaW4uc2VtYW50aWMs
IGNsb2JiZXJMaW1pdCk7Ci0gICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUobV9ncmFw
aCwgU3BlY0FycmF5KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGZv
ck5vZGUobm9kZSkuc2V0KAotICAgICAgICAgICAgbV9ncmFwaCwKLSAgICAgICAgICAgIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPnJlc3RQYXJhbWV0ZXJT
dHJ1Y3R1cmUoKSk7CisgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShtX2dyYXBoLCBTcGVj
QXJyYXkpOwogICAgICAgICBicmVhazsKICAgICAgICAgICAgIAogICAgIGNhc2UgQ2hlY2s6IHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWlu
YXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0Vs
aW1pbmF0aW9uUGhhc2UuY3BwCmluZGV4IDk3ODc5YmJkY2U5MjI1MDAyZjRkNTA0NzU2NmFhMTdk
YWNiMmQ0OTguLmJkZjI3NDE2MDE5NGIzZWEzZWZlMjFlODRhYzQ0NGI1N2YyMTFhYzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25Q
aGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGlt
aW5hdGlvblBoYXNlLmNwcApAQCAtOTcsMTcgKzk3LDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICBjYXNlIENyZWF0ZUNsb25lZEFyZ3VtZW50czoKICAgICAgICAgICAgICAgICAgICAgbV9j
YW5kaWRhdGVzLmFkZChub2RlKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAg
ICAgICAgICAgICBjYXNlIENyZWF0ZVJlc3Q6Ci0gICAgICAgICAgICAgICAgICAgIGlmIChtX2dy
YXBoLmlzV2F0Y2hpbmdIYXZpbmdBQmFkVGltZVdhdGNocG9pbnQobm9kZSkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIElmIHdlJ3JlIHdhdGNoaW5nIHRoZSBIYXZpbmdBQmFkVGltZSB3
YXRjaHBvaW50IGl0IG1lYW5zIHRoYXQgd2Ugd2lsbCBiZSBpbnZhbGlkYXRlZAotICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gd2hlbiBpdCBmaXJlcyAoaXQgbWF5IG9yIG1heSBub3QgaGF2ZSBh
Y3R1YWxseSBmaXJlZCB5ZXQpLiBXZSBkb24ndCB0cnkgdG8gZWxpbWluYXRlCi0gICAgICAgICAg
ICAgICAgICAgICAgICAvLyB0aGlzIGFsbG9jYXRpb24gd2hlbiB3ZSdyZSBub3Qgd2F0Y2hpbmcg
dGhlIHdhdGNocG9pbnQgYmVjYXVzZSBpdCBjb3VsZCBlbnRhaWwgY2FsbGluZwotICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gaW5kZXhlZCBhY2Nlc3NvcnMgKGFuZCBwcm9iYWJseSBtb3JlIGNy
YXp5IHRoaW5ncykgb24gb3V0IG9mIGJvdW5kIGFjY2Vzc2VzIHRvIHRoZQotICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gcmVzdCBwYXJhbWV0ZXIuIEl0J3MgYWxzbyBtdWNoIGVhc2llciB0byBy
ZWFzb24gYWJvdXQgdGhpcyB3YXkuCi0gICAgICAgICAgICAgICAgICAgICAgICBtX2NhbmRpZGF0
ZXMuYWRkKG5vZGUpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBjYXNlIENyZWF0
ZVNjb3BlZEFyZ3VtZW50czoKICAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFdlIGNvdWxk
IGhhbmRsZSB0aGlzIGlmIGl0IHdhc24ndCBmb3IgdGhlIGZhY3QgdGhhdCBzY29wZWQgYXJndW1l
bnRzIGFyZQpAQCAtMTQ1LDcgKzEzNCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGNhc2UgQXJyYXk6OkNvbnRpZ3VvdXM6IHsK
LSAgICAgICAgICAgICAgICBpZiAoZWRnZS0+b3AoKSAhPSBDcmVhdGVDbG9uZWRBcmd1bWVudHMg
JiYgZWRnZS0+b3AoKSAhPSBDcmVhdGVSZXN0KSB7CisgICAgICAgICAgICAgICAgaWYgKGVkZ2Ut
Pm9wKCkgIT0gQ3JlYXRlQ2xvbmVkQXJndW1lbnRzKSB7CiAgICAgICAgICAgICAgICAgICAgIGVz
Y2FwZShlZGdlLCBzb3VyY2UpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICAgICAgfQpAQCAtMjMzLDMyICsyMjIsNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
ICAgICBlc2NhcGVCYXNlZE9uQXJyYXlNb2RlKG5vZGUtPmFycmF5TW9kZSgpLCBub2RlLT5jaGls
ZDEoKSwgbm9kZSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgICAg
ICAgY2FzZSBDaGVja1N0cnVjdHVyZTogewotICAgICAgICAgICAgICAgICAgICBpZiAoIW1fY2Fu
ZGlkYXRlcy5jb250YWlucyhub2RlLT5jaGlsZDEoKS5ub2RlKCkpKQotICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUgPSBudWxscHRyOwotICAgICAgICAgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+Y2hpbGQxKCkubm9kZSgpLT5v
cmlnaW4uc2VtYW50aWMpOwotICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPmNoaWxk
MSgpLm5vZGUoKS0+b3AoKSkgewotICAgICAgICAgICAgICAgICAgICBjYXNlIENyZWF0ZURpcmVj
dEFyZ3VtZW50czoKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdHVyZSA9IGdsb2JhbE9i
amVjdC0+ZGlyZWN0QXJndW1lbnRzU3RydWN0dXJlKCk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBDcmVhdGVDbG9uZWRBcmd1bWVudHM6
Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPmNsb25l
ZEFyZ3VtZW50c1N0cnVjdHVyZSgpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgICAgIGNhc2UgQ3JlYXRlUmVzdDoKLSAgICAgICAgICAgICAgICAgICAg
ICAgIEFTU0VSVChtX2dyYXBoLmlzV2F0Y2hpbmdIYXZpbmdBQmFkVGltZVdhdGNocG9pbnQobm9k
ZSkpOwotICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5y
ZXN0UGFyYW1ldGVyU3RydWN0dXJlKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSk7Ci0KLSAgICAgICAgICAgICAgICAgICAg
aWYgKCFub2RlLT5zdHJ1Y3R1cmVTZXQoKS5jb250YWlucyhzdHJ1Y3R1cmUpKQotICAgICAgICAg
ICAgICAgICAgICAgICAgZXNjYXBlKG5vZGUtPmNoaWxkMSgpLCBub2RlKTsKLSAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAK
ICAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJlIGFibGUgdG8gaGFuZGxlIEdl
dEJ5SWQvR2V0QnlPZmZzZXQgb24gY2FsbGVlLgogICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDMwNzUKQEAgLTQzMiw3ICszOTUsNyBA
QCBwcml2YXRlOgogICAgIHsKICAgICAgICAgSW5zZXJ0aW9uU2V0IGluc2VydGlvblNldChtX2dy
YXBoKTsKICAgICAgICAgCi0gICAgICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBtX2dyYXBo
LmJsb2Nrc0luUHJlT3JkZXIoKSkgeworICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDog
bV9ncmFwaC5ibG9ja3NJbk5hdHVyYWxPcmRlcigpKSB7CiAgICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIG5vZGVJbmRleCA9IDA7IG5vZGVJbmRleCA8IGJsb2NrLT5zaXplKCk7ICsrbm9kZUluZGV4
KSB7CiAgICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChub2RlSW5kZXgpOwog
ICAgICAgICAgICAgICAgIApAQCAtNDQwLDE2ICs0MDMsNiBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZW1pdENvZGVUb0dldEFyZ3VtZW50c0FycmF5TGVuZ3RoKAogICAg
ICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0aW9uU2V0LCBjYW5kaWRhdGUsIG5vZGVJbmRleCwg
bm9kZS0+b3JpZ2luKTsKICAgICAgICAgICAgICAgICB9OwotCi0gICAgICAgICAgICAgICAgYXV0
byBpc0VsaW1pbmF0ZWRBbGxvY2F0aW9uID0gWyZdIChOb2RlKiBjYW5kaWRhdGUpIC0+IGJvb2wg
ewotICAgICAgICAgICAgICAgICAgICBpZiAoIW1fY2FuZGlkYXRlcy5jb250YWlucyhjYW5kaWRh
dGUpKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAg
ICAgICAgICAvLyBXZSB0cmF2ZXJzZSBpbiBzdWNoIGEgd2F5IHRoYXQgd2UgYXJlIGd1YXJhbnRl
ZWQgdG8gc2VlIGEgZGVmIGJlZm9yZSBhIHVzZS4KLSAgICAgICAgICAgICAgICAgICAgLy8gVGhl
cmVmb3JlLCB3ZSBzaG91bGQgaGF2ZSBhbHJlYWR5IHRyYW5zZm9ybWVkIHRoZSBhbGxvY2F0aW9u
IGJlZm9yZSB0aGUgdXNlCi0gICAgICAgICAgICAgICAgICAgIC8vIG9mIGFuIGFsbG9jYXRpb24u
Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VSVChjYW5kaWRhdGUtPm9wKCkgPT0gUGhhbnRvbUNy
ZWF0ZVJlc3QgfHwgY2FuZGlkYXRlLT5vcCgpID09IFBoYW50b21EaXJlY3RBcmd1bWVudHMgfHwg
Y2FuZGlkYXRlLT5vcCgpID09IFBoYW50b21DbG9uZWRBcmd1bWVudHMpOwotICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9OwogICAgICAgICAKICAgICAg
ICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKICAgICAgICAgICAgICAgICBjYXNlIENy
ZWF0ZURpcmVjdEFyZ3VtZW50czoKQEAgLTQ1OCwxNiArNDExLDYgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIG5vZGUtPnNldE9wQW5kRGVmYXVs
dEZsYWdzKFBoYW50b21EaXJlY3RBcmd1bWVudHMpOwogICAgICAgICAgICAgICAgICAgICBicmVh
azsKLQotICAgICAgICAgICAgICAgIGNhc2UgQ3JlYXRlUmVzdDoKLSAgICAgICAgICAgICAgICAg
ICAgaWYgKCFtX2NhbmRpZGF0ZXMuY29udGFpbnMobm9kZSkpCi0gICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLQotICAgICAgICAgICAgICAgICAgICBub2RlLT5zZXRPcEFuZERlZmF1bHRG
bGFncyhQaGFudG9tQ3JlYXRlUmVzdCk7Ci0gICAgICAgICAgICAgICAgICAgIC8vIFdlIGRvbid0
IG5lZWQgdGhpcyBwYXJhbWV0ZXIgZm9yIE9TUiBleGl0LCB3ZSBjYW4gZmluZCBvdXQgYWxsIHRo
ZSBpbmZvcm1hdGlvbgotICAgICAgICAgICAgICAgICAgICAvLyB3ZSBuZWVkIHZpYSB0aGUgc3Rh
dGljIHBhcmFtZXRlciBjb3VudCBhbmQgdGhlIGR5bmFtaWMgYXJndW1lbnQgY291bnQuCi0gICAg
ICAgICAgICAgICAgICAgIG5vZGUtPmNoaWxkMSgpID0gRWRnZSgpOyAKLSAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGNhc2Ug
Q3JlYXRlQ2xvbmVkQXJndW1lbnRzOgogICAgICAgICAgICAgICAgICAgICBpZiAoIW1fY2FuZGlk
YXRlcy5jb250YWlucyhub2RlKSkKQEAgLTQ3OCwxMSArNDIxLDEzIEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGNhc2UgR2V0RnJvbUFyZ3VtZW50czog
ewogICAgICAgICAgICAgICAgICAgICBOb2RlKiBjYW5kaWRhdGUgPSBub2RlLT5jaGlsZDEoKS5u
b2RlKCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghaXNFbGltaW5hdGVkQWxsb2NhdGlvbihj
YW5kaWRhdGUpKQorICAgICAgICAgICAgICAgICAgICBpZiAoIW1fY2FuZGlkYXRlcy5jb250YWlu
cyhjYW5kaWRhdGUpKQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICBERkdfQVNTRVJUKAotICAgICAgICAgICAg
ICAgICAgICAgICAgbV9ncmFwaCwgbm9kZSwgbm9kZS0+Y2hpbGQxKCktPm9wKCkgPT0gUGhhbnRv
bURpcmVjdEFyZ3VtZW50cyk7CisgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLCBub2Rl
LAorICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y2hpbGQxKCktPm9wKCkgPT0gQ3JlYXRl
RGlyZWN0QXJndW1lbnRzCisgICAgICAgICAgICAgICAgICAgICAgICB8fCBub2RlLT5jaGlsZDEo
KS0+b3AoKSA9PSBQaGFudG9tRGlyZWN0QXJndW1lbnRzKTsKICAgICAgICAgICAgICAgICAgICAg
VmlydHVhbFJlZ2lzdGVyIHJlZyA9CiAgICAgICAgICAgICAgICAgICAgICAgICB2aXJ0dWFsUmVn
aXN0ZXJGb3JBcmd1bWVudChub2RlLT5jYXB0dXJlZEFyZ3VtZW50c09mZnNldCgpLm9mZnNldCgp
ICsgMSkgKwogICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+b3JpZ2luLnNlbWFudGljLnN0
YWNrT2Zmc2V0KCk7CkBAIC00OTMsMTAgKzQzOCwxMCBAQCBwcml2YXRlOgogCiAgICAgICAgICAg
ICAgICAgY2FzZSBHZXRCeU9mZnNldDogewogICAgICAgICAgICAgICAgICAgICBOb2RlKiBjYW5k
aWRhdGUgPSBub2RlLT5jaGlsZDIoKS5ub2RlKCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICgh
aXNFbGltaW5hdGVkQWxsb2NhdGlvbihjYW5kaWRhdGUpKQorICAgICAgICAgICAgICAgICAgICBp
ZiAoIW1fY2FuZGlkYXRlcy5jb250YWlucyhjYW5kaWRhdGUpKQogICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAKLSAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMigpLT5v
cCgpICE9IFBoYW50b21DbG9uZWRBcmd1bWVudHMpCisgICAgICAgICAgICAgICAgICAgIGlmIChu
b2RlLT5jaGlsZDIoKS0+b3AoKSAhPSBQaGFudG9tQ2xvbmVkQXJndW1lbnRzICYmIG5vZGUtPmNo
aWxkMigpLT5vcCgpICE9IENyZWF0ZUNsb25lZEFyZ3VtZW50cykKICAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChub2RlLT5zdG9yYWdl
QWNjZXNzRGF0YSgpLm9mZnNldCA9PSBjbG9uZWRBcmd1bWVudHNMZW5ndGhQcm9wZXJ0eU9mZnNl
dCk7CkBAIC01MDksNyArNDU0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDogewogICAgICAgICAgICAgICAgICAg
ICBOb2RlKiBjYW5kaWRhdGUgPSBub2RlLT5jaGlsZDEoKS5ub2RlKCk7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmICghaXNFbGltaW5hdGVkQWxsb2NhdGlvbihjYW5kaWRhdGUpKQorICAgICAgICAg
ICAgICAgICAgICBpZiAoIW1fY2FuZGlkYXRlcy5jb250YWlucyhjYW5kaWRhdGUpKQogICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgICAgICAgICAvLyBNZWgsIHRoaXMgaXMga2luZCBvZiBoYWNraXNoIC0gd2UgdXNlIGFuIElk
ZW50aXR5IHNvIHRoYXQgd2UgY2FuIHJldXNlIHRoZQpAQCAtNTI3LDE4ICs0NzIsMTMgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE0MzA3NgogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg
ICAgICAgTm9kZSogY2FuZGlkYXRlID0gbm9kZS0+Y2hpbGQxKCkubm9kZSgpOwotICAgICAgICAg
ICAgICAgICAgICBpZiAoIWlzRWxpbWluYXRlZEFsbG9jYXRpb24oY2FuZGlkYXRlKSkKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKCFtX2NhbmRpZGF0ZXMuY29udGFpbnMoY2FuZGlkYXRlKSkKICAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIG51bWJlck9mQXJndW1lbnRzVG9Ta2lwID0gMDsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KGNhbmRpZGF0ZS0+b3AoKSA9PSBQaGFudG9tQ3JlYXRlUmVzdCkKLSAgICAgICAgICAgICAgICAg
ICAgICAgIG51bWJlck9mQXJndW1lbnRzVG9Ta2lwID0gY2FuZGlkYXRlLT5udW1iZXJPZkFyZ3Vt
ZW50c1RvU2tpcCgpOwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAg
Tm9kZSogcmVzdWx0ID0gbnVsbHB0cjsKICAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNo
aWxkMigpLT5pc0ludDMyQ29uc3RhbnQoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgaW5kZXggPSBub2RlLT5jaGlsZDIoKS0+YXNVSW50MzIoKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lID0gY2FuZGlkYXRlLT5v
cmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lOwotICAgICAgICAgICAgICAgICAgICAgICAg
aW5kZXggKz0gbnVtYmVyT2ZBcmd1bWVudHNUb1NraXA7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc2FmZVRvR2V0U3RhY2s7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lKQpAQCAtNTcyLDEwICs1MTIsMTAg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBvcCA9IEdldE15QXJndW1lbnRCeVZhbE91dE9mQm91bmRzOwogICAgICAg
ICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gaW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbm9kZUluZGV4LCBub2RlLT5wcmVkaWN0aW9uKCksIG9w
LCBub2RlLT5vcmlnaW4sIE9wSW5mbyhudW1iZXJPZkFyZ3VtZW50c1RvU2tpcCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbm9kZUluZGV4LCBub2RlLT5wcmVkaWN0aW9uKCksIG9wLCBu
b2RlLT5vcmlnaW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y2hpbGQxKCks
IG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgICAgICAgICAgfQotCisgICAgICAgICAgICAg
ICAgICAgIAogICAgICAgICAgICAgICAgICAgICAvLyBOZWVkIHRvIGRvIHRoaXMgYmVjYXVzZSB3
ZSBtYXkgaGF2ZSBhIGRhdGEgZm9ybWF0IGNvbnZlcnNpb24gaGVyZS4KICAgICAgICAgICAgICAg
ICAgICAgbm9kZS0+Y29udmVydFRvSWRlbnRpdHlPbihyZXN1bHQpOwogICAgICAgICAgICAgICAg
ICAgICBicmVhazsKQEAgLTU4Myw5NSArNTIzLDgzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgICAgIAogICAgICAgICAgICAgICAgIGNhc2UgTG9hZFZhcmFyZ3M6IHsKICAgICAgICAgICAg
ICAgICAgICAgTm9kZSogY2FuZGlkYXRlID0gbm9kZS0+Y2hpbGQxKCkubm9kZSgpOwotICAgICAg
ICAgICAgICAgICAgICBpZiAoIWlzRWxpbWluYXRlZEFsbG9jYXRpb24oY2FuZGlkYXRlKSkKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKCFtX2NhbmRpZGF0ZXMuY29udGFpbnMoY2FuZGlkYXRlKSkK
ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAKICAg
ICAgICAgICAgICAgICAgICAgTG9hZFZhcmFyZ3NEYXRhKiB2YXJhcmdzRGF0YSA9IG5vZGUtPmxv
YWRWYXJhcmdzRGF0YSgpOwotICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBudW1iZXJPZkFy
Z3VtZW50c1RvU2tpcCA9IDA7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChjYW5kaWRhdGUtPm9w
KCkgPT0gUGhhbnRvbUNyZWF0ZVJlc3QpCi0gICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJP
ZkFyZ3VtZW50c1RvU2tpcCA9IGNhbmRpZGF0ZS0+bnVtYmVyT2ZBcmd1bWVudHNUb1NraXAoKTsK
LSAgICAgICAgICAgICAgICAgICAgdmFyYXJnc0RhdGEtPm9mZnNldCArPSBudW1iZXJPZkFyZ3Vt
ZW50c1RvU2tpcDsKLQogICAgICAgICAgICAgICAgICAgICBJbmxpbmVDYWxsRnJhbWUqIGlubGlu
ZUNhbGxGcmFtZSA9IGNhbmRpZGF0ZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZTsK
LQogICAgICAgICAgICAgICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lCi0gICAgICAgICAgICAg
ICAgICAgICAgICAmJiAhaW5saW5lQ2FsbEZyYW1lLT5pc1ZhcmFyZ3MoKSkgewotCi0gICAgICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IGlu
bGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA+IHZhcmFyZ3NEYXRhLT5vZmZzZXQpCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgLT0g
dmFyYXJnc0RhdGEtPm9mZnNldDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IDE7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChhcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcyA+PSAxKTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzIDw9IHZhcmFyZ3NEYXRhLT5saW1pdCkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIExvYWRWYXJhcmdzIGNhbiBleGl0LCBzbyBpdCBiZXR0ZXIgYmUgZXhp
dE9LLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbm9k
ZSwgbm9kZS0+b3JpZ2luLmV4aXRPSyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9v
bCBjYW5FeGl0ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICYmICFpbmxpbmVDYWxs
RnJhbWUtPmlzVmFyYXJncygpCisgICAgICAgICAgICAgICAgICAgICAgICAmJiBpbmxpbmVDYWxs
RnJhbWUtPmFyZ3VtZW50cy5zaXplKCkgLSB2YXJhcmdzRGF0YS0+b2Zmc2V0IDw9IHZhcmFyZ3NE
YXRhLT5saW1pdCkgeworICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBMb2FkVmFyYXJncyBjYW4gZXhpdCwgc28gaXQgYmV0dGVyIGJlIGV4aXRPSy4K
KyAgICAgICAgICAgICAgICAgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbm9kZSwgbm9kZS0+
b3JpZ2luLmV4aXRPSyk7CisgICAgICAgICAgICAgICAgICAgICAgICBib29sIGNhbkV4aXQgPSB0
cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICBO
b2RlKiBhcmd1bWVudENvdW50ID0gaW5zZXJ0aW9uU2V0Lmluc2VydENvbnN0YW50KAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG5vZGVJbmRleCwgbm9kZS0+b3JpZ2luLndpdGhFeGl0T0so
Y2FuRXhpdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAganNOdW1iZXIoaW5saW5lQ2Fs
bEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpIC0gdmFyYXJnc0RhdGEtPm9mZnNldCkpOworICAgICAg
ICAgICAgICAgICAgICAgICAgaW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbm9kZUluZGV4LCBTcGVjTm9uZSwgTW92SGludCwgbm9kZS0+b3JpZ2lu
LnRha2VWYWxpZEV4aXQoY2FuRXhpdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3BJ
bmZvKHZhcmFyZ3NEYXRhLT5jb3VudC5vZmZzZXQoKSksIEVkZ2UoYXJndW1lbnRDb3VudCkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbm9kZUluZGV4LCBTcGVjTm9uZSwgUHV0U3RhY2ssIG5vZGUt
Pm9yaWdpbi53aXRoRXhpdE9LKGNhbkV4aXQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IE9wSW5mbyhtX2dyYXBoLm1fc3RhY2tBY2Nlc3NEYXRhLmFkZCh2YXJhcmdzRGF0YS0+Y291bnQs
IEZsdXNoZWRJbnQzMikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVkZ2UoYXJndW1l
bnRDb3VudCwgS25vd25JbnQzMlVzZSkpOworICAgICAgICAgICAgICAgICAgICAgICAgCisgICAg
ICAgICAgICAgICAgICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG5vZGUsIHZhcmFyZ3NEYXRh
LT5saW1pdCAtIDEgPj0gdmFyYXJnc0RhdGEtPm1hbmRhdG9yeU1pbmltdW0pOworICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gRGVmaW5lIG91ciBsaW1pdCB0byBub3QgaW5jbHVkZSAidGhpcyIs
IHNpbmNlIHRoYXQncyBhIGJpdCBlYXNpZXIgdG8gcmVhc29uIGFib3V0LgorICAgICAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgbGltaXQgPSB2YXJhcmdzRGF0YS0+bGltaXQgLSAxOworICAg
ICAgICAgICAgICAgICAgICAgICAgTm9kZSogdW5kZWZpbmVkID0gbnVsbHB0cjsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgc3RvcmVJbmRleCA9IDA7IHN0b3JlSW5kZXgg
PCBsaW1pdDsgKytzdG9yZUluZGV4KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
Rmlyc3QgZGV0ZXJtaW5lIGlmIHdlIGhhdmUgYW4gZWxlbWVudCB3ZSBjYW4gbG9hZCwgYW5kIGxv
YWQgaXQgaWYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwb3NzaWJsZS4KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb2Rl
KiBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpc05vZGUgPSBpbnNlcnRpb25TZXQuaW5zZXJ0Q29u
c3RhbnQoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVJbmRleCwgbm9kZS0+
b3JpZ2luLndpdGhFeGl0T0soY2FuRXhpdCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGpzTnVtYmVyKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG5vZGVJbmRleCwgU3BlY05vbmUsIE1vdkhpbnQsIG5vZGUtPm9yaWdp
bi50YWtlVmFsaWRFeGl0KGNhbkV4aXQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBPcEluZm8odmFyYXJnc0RhdGEtPmNvdW50Lm9mZnNldCgpKSwgRWRnZShhcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpc05vZGUpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnRp
b25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZUlu
ZGV4LCBTcGVjTm9uZSwgUHV0U3RhY2ssIG5vZGUtPm9yaWdpbi53aXRoRXhpdE9LKGNhbkV4aXQp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcEluZm8obV9ncmFwaC5tX3N0YWNr
QWNjZXNzRGF0YS5hZGQodmFyYXJnc0RhdGEtPmNvdW50LCBGbHVzaGVkSW50MzIpKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRWRnZShhcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
c05vZGUsIEtub3duSW50MzJVc2UpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBsb2FkSW5kZXggPSBzdG9yZUluZGV4ICsgdmFyYXJnc0RhdGEtPm9mZnNldDsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBERkdf
QVNTRVJUKG1fZ3JhcGgsIG5vZGUsIHZhcmFyZ3NEYXRhLT5saW1pdCAtIDEgPj0gdmFyYXJnc0Rh
dGEtPm1hbmRhdG9yeU1pbmltdW0pOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERl
ZmluZSBvdXIgbGltaXQgdG8gZXhjbHVkZSAidGhpcyIsIHNpbmNlIHRoYXQncyBhIGJpdCBlYXNp
ZXIgdG8gcmVhc29uIGFib3V0LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGxpbWl0ID0gdmFyYXJnc0RhdGEtPmxpbWl0IC0gMTsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBOb2RlKiB1bmRlZmluZWQgPSBudWxscHRyOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgc3RvcmVJbmRleCA9IDA7IHN0b3JlSW5kZXggPCBsaW1pdDsgKytz
dG9yZUluZGV4KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZpcnN0IGRl
dGVybWluZSBpZiB3ZSBoYXZlIGFuIGVsZW1lbnQgd2UgY2FuIGxvYWQsIGFuZCBsb2FkIGl0IGlm
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBvc3NpYmxlLgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIE5vZGUqIHZhbHVlOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChsb2FkSW5kZXggKyAxIDwgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgp
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciByZWcg
PQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlydHVhbFJlZ2lzdGVyRm9y
QXJndW1lbnQobG9hZEluZGV4ICsgMSkgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldDsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgU3RhY2tBY2Nlc3NEYXRhKiBkYXRhID0gbV9ncmFwaC5tX3N0YWNrQWNjZXNz
RGF0YS5hZGQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWcsIEZsdXNo
ZWRKU1ZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvYWRJbmRleCA9IHN0b3JlSW5kZXggKyB2
YXJhcmdzRGF0YS0+b2Zmc2V0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1
ZSA9IGluc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbm9kZUluZGV4LCBTcGVjTm9uZSwgR2V0U3RhY2ssIG5vZGUtPm9yaWdpbi53aXRo
RXhpdE9LKGNhbkV4aXQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3BJ
bmZvKGRhdGEpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkbid0IGhhdmUgdG8g
c3RvcmUgYW55dGhpbmcgaWYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3Rv
cmVJbmRleCA+PSB2YXJhcmdzRGF0YS0+bWFuZGF0b3J5TWluaW11bSwgYnV0IHdlIHdpbGwgc3Rp
bGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaGF2ZSBHZXRTdGFja3MgaW4g
dGhhdCByYW5nZS4gU28gaWYgd2UgZG9uJ3QgZG8gdGhlIHN0b3Jlcywgd2UnbGwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gaGF2ZSBkZWdlbmVyYXRlIElSOiB3ZSdsbCBoYXZl
IEdldFN0YWNrcyBvZiBzb21ldGhpbmcgdGhhdCBkaWRuJ3QKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gaGF2ZSBQdXRTdGFja3MuCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDc0MzQK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIE5vZGUqIHZhbHVlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAobG9hZEluZGV4ICsgMSA8IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHJlZyA9
IHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGxvYWRJbmRleCArIDEpICsgaW5saW5lQ2FsbEZy
YW1lLT5zdGFja09mZnNldDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0
YWNrQWNjZXNzRGF0YSogZGF0YSA9IG1fZ3JhcGgubV9zdGFja0FjY2Vzc0RhdGEuYWRkKAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZywgRmx1c2hlZEpTVmFsdWUp
OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGluc2VydGlvblNldC5pbnNlcnROb2RlKAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVJbmRleCwgU3BlY05vbmUs
IEdldFN0YWNrLCBub2RlLT5vcmlnaW4ud2l0aEV4aXRPSyhjYW5FeGl0KSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcEluZm8oZGF0YSkpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZG4ndCBoYXZlIHRvIHN0b3JlIGFueXRoaW5nIGlm
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdG9yZUluZGV4ID49IHZh
cmFyZ3NEYXRhLT5tYW5kYXRvcnlNaW5pbXVtLCBidXQgd2Ugd2lsbCBzdGlsbAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaGF2ZSBHZXRTdGFja3MgaW4gdGhhdCByYW5n
ZS4gU28gaWYgd2UgZG9uJ3QgZG8gdGhlIHN0b3Jlcywgd2UnbGwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIGhhdmUgZGVnZW5lcmF0ZSBJUjogd2UnbGwgaGF2ZSBHZXRT
dGFja3Mgb2Ygc29tZXRoaW5nIHRoYXQgZGlkbid0Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBoYXZlIFB1dFN0YWNrcy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDc0
MzQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKCF1bmRlZmluZWQpIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1bmRlZmluZWQgPSBpbnNlcnRpb25TZXQuaW5zZXJ0Q29u
c3RhbnQoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVJ
bmRleCwgbm9kZS0+b3JpZ2luLndpdGhFeGl0T0soY2FuRXhpdCksIGpzVW5kZWZpbmVkKCkpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdmFsdWUgPSB1bmRlZmluZWQ7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICghdW5kZWZpbmVkKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1bmRlZmluZWQgPSBpbnNlcnRpb25TZXQuaW5zZXJ0Q29uc3RhbnQoCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZUluZGV4LCBub2RlLT5vcmln
aW4ud2l0aEV4aXRPSyhjYW5FeGl0KSwganNVbmRlZmluZWQoKSk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5vdyB0aGF0IHdlIGhhdmUgYSB2YWx1ZSwg
c3RvcmUgaXQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVnID0gdmFyYXJnc0RhdGEtPnN0
YXJ0ICsgc3RvcmVJbmRleDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhY2tB
Y2Nlc3NEYXRhKiBkYXRhID0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1f
Z3JhcGgubV9zdGFja0FjY2Vzc0RhdGEuYWRkKHJlZywgRmx1c2hlZEpTVmFsdWUpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBub2RlSW5kZXgsIFNwZWNOb25lLCBNb3ZIaW50LCBub2RlLT5vcmlnaW4udGFrZVZh
bGlkRXhpdChjYW5FeGl0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9w
SW5mbyhyZWcub2Zmc2V0KCkpLCBFZGdlKHZhbHVlKSk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGluc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbm9kZUluZGV4LCBTcGVjTm9uZSwgUHV0U3RhY2ssIG5vZGUtPm9yaWdp
bi53aXRoRXhpdE9LKGNhbkV4aXQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgT3BJbmZvKGRhdGEpLCBFZGdlKHZhbHVlKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHZhbHVlID0gdW5kZWZpbmVkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBub2RlLT5yZW1vdmUoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5vcmln
aW4uZXhpdE9LID0gY2FuRXhpdDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOb3cgdGhhdCB3ZSBoYXZlIGEgdmFsdWUs
IHN0b3JlIGl0LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciByZWcgPSB2YXJhcmdzRGF0YS0+c3RhcnQgKyBz
dG9yZUluZGV4OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YWNrQWNjZXNzRGF0YSog
ZGF0YSA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9zdGFja0Fj
Y2Vzc0RhdGEuYWRkKHJlZywgRmx1c2hlZEpTVmFsdWUpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc2VydGlvblNldC5pbnNlcnRO
b2RlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlSW5kZXgsIFNwZWNOb25l
LCBNb3ZIaW50LCBub2RlLT5vcmlnaW4udGFrZVZhbGlkRXhpdChjYW5FeGl0KSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgT3BJbmZvKHJlZy5vZmZzZXQoKSksIEVkZ2UodmFsdWUp
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZUluZGV4LCBTcGVjTm9uZSwgUHV0
U3RhY2ssIG5vZGUtPm9yaWdpbi53aXRoRXhpdE9LKGNhbkV4aXQpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBPcEluZm8oZGF0YSksIEVkZ2UodmFsdWUpKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAg
ICAgICAgICAgbm9kZS0+cmVtb3ZlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5v
cmlnaW4uZXhpdE9LID0gY2FuRXhpdDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg
ICAgICAgICBub2RlLT5zZXRPcEFuZERlZmF1bHRGbGFncyhGb3J3YXJkVmFyYXJncyk7CkBAIC02
ODMsMTUgKzYxMSwxMCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGNhc2UgVGFpbENhbGxW
YXJhcmdzOgogICAgICAgICAgICAgICAgIGNhc2UgVGFpbENhbGxWYXJhcmdzSW5saW5lZENhbGxl
cjogewogICAgICAgICAgICAgICAgICAgICBOb2RlKiBjYW5kaWRhdGUgPSBub2RlLT5jaGlsZDMo
KS5ub2RlKCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghaXNFbGltaW5hdGVkQWxsb2NhdGlv
bihjYW5kaWRhdGUpKQorICAgICAgICAgICAgICAgICAgICBpZiAoIW1fY2FuZGlkYXRlcy5jb250
YWlucyhjYW5kaWRhdGUpKQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBudW1iZXJPZkFyZ3Vt
ZW50c1RvU2tpcCA9IDA7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChjYW5kaWRhdGUtPm9wKCkg
PT0gUGhhbnRvbUNyZWF0ZVJlc3QpCi0gICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJPZkFy
Z3VtZW50c1RvU2tpcCA9IGNhbmRpZGF0ZS0+bnVtYmVyT2ZBcmd1bWVudHNUb1NraXAoKTsKICAg
ICAgICAgICAgICAgICAgICAgQ2FsbFZhcmFyZ3NEYXRhKiB2YXJhcmdzRGF0YSA9IG5vZGUtPmNh
bGxWYXJhcmdzRGF0YSgpOwotICAgICAgICAgICAgICAgICAgICB2YXJhcmdzRGF0YS0+Zmlyc3RW
YXJBcmdPZmZzZXQgKz0gbnVtYmVyT2ZBcmd1bWVudHNUb1NraXA7Ci0KICAgICAgICAgICAgICAg
ICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSBjYW5kaWRhdGUtPm9yaWdp
bi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWU7CiAgICAgICAgICAgICAgICAgICAgIGlmIChpbmxp
bmVDYWxsRnJhbWUgJiYgIWlubGluZUNhbGxGcmFtZS0+aXNWYXJhcmdzKCkpIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgIFZlY3RvcjxOb2RlKj4gYXJndW1lbnRzOwpAQCAtNzU0LDE4ICs2Nzcs
MTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgY2Fz
ZSBDaGVja0FycmF5OgogICAgICAgICAgICAgICAgIGNhc2UgR2V0QnV0dGVyZmx5OiB7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmICghaXNFbGltaW5hdGVkQWxsb2NhdGlvbihub2RlLT5jaGlsZDEo
KS5ub2RlKCkpKQorICAgICAgICAgICAgICAgICAgICBpZiAoIW1fY2FuZGlkYXRlcy5jb250YWlu
cyhub2RlLT5jaGlsZDEoKS5ub2RlKCkpKQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAgICAgICAgIG5vZGUtPnJlbW92ZSgpOwogICAgICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBjYXNlIENoZWNr
U3RydWN0dXJlOgotICAgICAgICAgICAgICAgICAgICBpZiAoIWlzRWxpbWluYXRlZEFsbG9jYXRp
b24obm9kZS0+Y2hpbGQxKCkubm9kZSgpKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgICAgICAgICBub2RlLT5jaGlsZDEoKSA9IEVkZ2UoKTsgLy8gUmVtb3Zl
IHRoZSBjZWxsIGNoZWNrIHNpbmNlIHdlJ3ZlIHByb3ZlbiBpdCdzIG5vdCBuZWVkZWQgYW5kIEZU
TCBsb3dlcmluZyBtaWdodCBib3RjaCB0aGlzLgotICAgICAgICAgICAgICAgICAgICBub2RlLT5y
ZW1vdmUoKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNVdGlsaXRp
ZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNVdGlsaXRpZXMu
Y3BwCmluZGV4IDA2MWEyODRjZjVkNDk3Yzk1OTg3ZTlmNjMwNTZlNWU5NzQzZDZkZDEuLjAyMmUz
YjAzZmYwMjVlYjk3ZTUwZWVlNDI1MGE2N2RlYTFmZDMyZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c1V0aWxpdGllcy5jcHAKQEAgLTY0LDIzICs2
NCwxNCBAQCBOb2RlKiBlbWl0Q29kZVRvR2V0QXJndW1lbnRzQXJyYXlMZW5ndGgoCiAgICAgREZH
X0FTU0VSVCgKICAgICAgICAgZ3JhcGgsIGFyZ3VtZW50cywKICAgICAgICAgYXJndW1lbnRzLT5v
cCgpID09IENyZWF0ZURpcmVjdEFyZ3VtZW50cyB8fCBhcmd1bWVudHMtPm9wKCkgPT0gQ3JlYXRl
U2NvcGVkQXJndW1lbnRzCi0gICAgICAgIHx8IGFyZ3VtZW50cy0+b3AoKSA9PSBDcmVhdGVDbG9u
ZWRBcmd1bWVudHMgfHwgYXJndW1lbnRzLT5vcCgpID09IENyZWF0ZVJlc3QKLSAgICAgICAgfHwg
YXJndW1lbnRzLT5vcCgpID09IFBoYW50b21EaXJlY3RBcmd1bWVudHMgfHwgYXJndW1lbnRzLT5v
cCgpID09IFBoYW50b21DbG9uZWRBcmd1bWVudHMgfHwgYXJndW1lbnRzLT5vcCgpID09IFBoYW50
b21DcmVhdGVSZXN0KTsKKyAgICAgICAgfHwgYXJndW1lbnRzLT5vcCgpID09IENyZWF0ZUNsb25l
ZEFyZ3VtZW50cyB8fCBhcmd1bWVudHMtPm9wKCkgPT0gUGhhbnRvbURpcmVjdEFyZ3VtZW50cwor
ICAgICAgICB8fCBhcmd1bWVudHMtPm9wKCkgPT0gUGhhbnRvbUNsb25lZEFyZ3VtZW50cyk7CiAg
ICAgCiAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSBhcmd1bWVudHMtPm9y
aWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWU7Ci0KLSAgICB1bnNpZ25lZCBudW1iZXJPZkFy
Z3VtZW50c1RvU2tpcCA9IDA7Ci0gICAgaWYgKGFyZ3VtZW50cy0+b3AoKSA9PSBDcmVhdGVSZXN0
IHx8IGFyZ3VtZW50cy0+b3AoKSA9PSBQaGFudG9tQ3JlYXRlUmVzdCkKLSAgICAgICAgbnVtYmVy
T2ZBcmd1bWVudHNUb1NraXAgPSBhcmd1bWVudHMtPm51bWJlck9mQXJndW1lbnRzVG9Ta2lwKCk7
CiAgICAgCiAgICAgaWYgKGlubGluZUNhbGxGcmFtZSAmJiAhaW5saW5lQ2FsbEZyYW1lLT5pc1Zh
cmFyZ3MoKSkgewotICAgICAgICB1bnNpZ25lZCBhcmd1bWVudHNTaXplID0gaW5saW5lQ2FsbEZy
YW1lLT5hcmd1bWVudHMuc2l6ZSgpIC0gMTsKLSAgICAgICAgaWYgKGFyZ3VtZW50c1NpemUgPj0g
bnVtYmVyT2ZBcmd1bWVudHNUb1NraXApCi0gICAgICAgICAgICBhcmd1bWVudHNTaXplIC09IG51
bWJlck9mQXJndW1lbnRzVG9Ta2lwOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBhcmd1bWVu
dHNTaXplID0gMDsKICAgICAgICAgcmV0dXJuIGluc2VydGlvblNldC5pbnNlcnRDb25zdGFudCgK
LSAgICAgICAgICAgIG5vZGVJbmRleCwgb3JpZ2luLCBqc051bWJlcihhcmd1bWVudHNTaXplKSk7
CisgICAgICAgICAgICBub2RlSW5kZXgsIG9yaWdpbiwganNOdW1iZXIoaW5saW5lQ2FsbEZyYW1l
LT5hcmd1bWVudHMuc2l6ZSgpIC0gMSkpOwogICAgIH0KICAgICAKICAgICBOb2RlKiBhcmd1bWVu
dENvdW50OwpAQCAtOTMsMjMgKzg0LDEyIEBAIE5vZGUqIGVtaXRDb2RlVG9HZXRBcmd1bWVudHNB
cnJheUxlbmd0aCgKICAgICAgICAgICAgIG5vZGVJbmRleCwgU3BlY0ludDMyT25seSwgR2V0U3Rh
Y2ssIG9yaWdpbiwKICAgICAgICAgICAgIE9wSW5mbyhncmFwaC5tX3N0YWNrQWNjZXNzRGF0YS5h
ZGQoYXJndW1lbnRDb3VudFJlZ2lzdGVyLCBGbHVzaGVkSW50MzIpKSk7CiAgICAgfQotCi0gICAg
Tm9kZSogcmVzdWx0ID0gaW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgCisgICAgcmV0dXJu
IGluc2VydGlvblNldC5pbnNlcnROb2RlKAogICAgICAgICBub2RlSW5kZXgsIFNwZWNJbnQzMk9u
bHksIEFyaXRoU3ViLCBvcmlnaW4sIE9wSW5mbyhBcml0aDo6VW5jaGVja2VkKSwKICAgICAgICAg
RWRnZShhcmd1bWVudENvdW50LCBJbnQzMlVzZSksCiAgICAgICAgIGluc2VydGlvblNldC5pbnNl
cnRDb25zdGFudEZvclVzZSgKLSAgICAgICAgICAgIG5vZGVJbmRleCwgb3JpZ2luLCBqc051bWJl
cigxICsgbnVtYmVyT2ZBcmd1bWVudHNUb1NraXApLCBJbnQzMlVzZSkpOwotCi0gICAgaWYgKG51
bWJlck9mQXJndW1lbnRzVG9Ta2lwKSB7Ci0gICAgICAgIC8vIFRoZSBhYm92ZSBzdWJ0cmFjdGlv
biBtYXkgcHJvZHVjZSBhIG5lZ2F0aXZlIG51bWJlciBpZiB0aGlzIG51bWJlciBpcyBub24temVy
by4gV2UgY29ycmVjdCB0aGF0IGhlcmUuCi0gICAgICAgIHJlc3VsdCA9IGluc2VydGlvblNldC5p
bnNlcnROb2RlKAotICAgICAgICAgICAgbm9kZUluZGV4LCBTcGVjSW50MzJPbmx5LCBBcml0aE1h
eCwgb3JpZ2luLCAKLSAgICAgICAgICAgIEVkZ2UocmVzdWx0LCBJbnQzMlVzZSksIAotICAgICAg
ICAgICAgaW5zZXJ0aW9uU2V0Lmluc2VydENvbnN0YW50Rm9yVXNlKG5vZGVJbmRleCwgb3JpZ2lu
LCBqc051bWJlcigwKSwgSW50MzJVc2UpKTsKLSAgICAgICAgcmVzdWx0LT5zZXRSZXN1bHQoTm9k
ZVJlc3VsdEludDMyKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gcmVzdWx0OworICAgICAgICAgICAg
bm9kZUluZGV4LCBvcmlnaW4sIGpzTnVtYmVyKDEpLCBJbnQzMlVzZSkpOwogfQogCiB9IH0gLy8g
bmFtZXNwYWNlIEpTQzo6REZHCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Nsb2JiZXJpemUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6
ZS5oCmluZGV4IGI2MjFlZjAyMmQ4ODY1ZTJlN2EyMDExNmNkMjA4YzVjMjQ2YzlmZmIuLjVhMzI5
NGQwNTFjMzc4N2ZjMGNlMThiMDk3ZTM0NDU5ZDA3OWQ0MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCkBAIC00NzcsMTIgKzQ3Nyw2IEBAIHZvaWQgY2xvYmJl
cml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBj
b25zdCBXcml0ZUZ1CiAgICAgICAgIHdyaXRlKEhlYXBPYmplY3RDb3VudCk7CiAgICAgICAgIHJl
dHVybjsKIAotICAgIGNhc2UgUGhhbnRvbUNyZWF0ZVJlc3Q6Ci0gICAgICAgIC8vIEV2ZW4gdGhv
dWdoIGl0J3MgcGhhbnRvbSwgaXQgc3RpbGwgaGFzIHRoZSBwcm9wZXJ0eSB0aGF0IG9uZSBjYW4n
dCBiZSByZXBsYWNlZCB3aXRoIGFub3RoZXIuCi0gICAgICAgIHJlYWQoSGVhcE9iamVjdENvdW50
KTsKLSAgICAgICAgd3JpdGUoSGVhcE9iamVjdENvdW50KTsKLSAgICAgICAgcmV0dXJuOwotCiAg
ICAgY2FzZSBDYWxsT2JqZWN0Q29uc3RydWN0b3I6CiAgICAgY2FzZSBUb1RoaXM6CiAgICAgY2Fz
ZSBDcmVhdGVUaGlzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
b25zdGFudEZvbGRpbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nv
bnN0YW50Rm9sZGluZ1BoYXNlLmNwcAppbmRleCAzMjFkY2Y5MmY1YzVmYzlmODYwMGE5MTJmNzE3
ZTIzODVkYjdjODMwLi4zOGI2NDAyMDE2NWFiNTZjNTRkN2YyMmRhYTA0Y2RlMzA0YWZmODE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1Bo
YXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGlu
Z1BoYXNlLmNwcApAQCAtMzE0LDExICszMTQsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgY2FzZSBHZXRNeUFyZ3VtZW50QnlWYWw6CiAgICAgICAgICAgICBjYXNl
IEdldE15QXJndW1lbnRCeVZhbE91dE9mQm91bmRzOiB7Ci0gICAgICAgICAgICAgICAgSlNWYWx1
ZSBpbmRleFZhbHVlID0gbV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMigpKS52YWx1ZSgpOwot
ICAgICAgICAgICAgICAgIGlmICghaW5kZXhWYWx1ZSB8fCAhaW5kZXhWYWx1ZS5pc0ludDMyKCkp
CisgICAgICAgICAgICAgICAgSlNWYWx1ZSBpbmRleCA9IG1fc3RhdGUuZm9yTm9kZShub2RlLT5j
aGlsZDIoKSkudmFsdWUoKTsKKyAgICAgICAgICAgICAgICBpZiAoIWluZGV4IHx8ICFpbmRleC5p
c0ludDMyKCkpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICAgICAg
dW5zaWduZWQgaW5kZXggPSBpbmRleFZhbHVlLmFzVUludDMyKCkgKyBub2RlLT5udW1iZXJPZkFy
Z3VtZW50c1RvU2tpcCgpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIE5vZGUq
IGFyZ3VtZW50cyA9IG5vZGUtPmNoaWxkMSgpLm5vZGUoKTsKICAgICAgICAgICAgICAgICBJbmxp
bmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSA9IGFyZ3VtZW50cy0+b3JpZ2luLnNlbWFudGlj
LmlubGluZUNhbGxGcmFtZTsKQEAgLTMzNywxMCArMzM1LDEwIEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAgICAgLy8gR2V0TXlBcmd1bWVudEJ5VmFsIGluIHN1Y2ggc3RhdGljYWxseS1vdXQtb2Yt
Ym91bmRzIGFjY2Vzc2VzOyB3ZSBqdXN0IGxvc2UgQ0ZBIHVubGVzcwogICAgICAgICAgICAgICAg
IC8vIEdDU0UgcmVtb3ZlcyB0aGUgYWNjZXNzIGVudGlyZWx5LgogICAgICAgICAgICAgICAgIGlm
IChpbmxpbmVDYWxsRnJhbWUpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4ID49IGlu
bGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSAtIDEpCisgICAgICAgICAgICAgICAgICAg
IGlmIChpbmRleC5hc1VJbnQzMigpID49IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUo
KSAtIDEpCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPj0gbV9zdGF0ZS52YXJpYWJs
ZXMoKS5udW1iZXJPZkFyZ3VtZW50cygpIC0gMSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKGlu
ZGV4LmFzVUludDMyKCkgPj0gbV9zdGF0ZS52YXJpYWJsZXMoKS5udW1iZXJPZkFyZ3VtZW50cygp
IC0gMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAKQEAgLTM1MSwxNCArMzQ5LDE1IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAgICAgICAgIGRhdGEgPSBtX2dyYXBoLm1fc3RhY2tBY2Nlc3NEYXRhLmFkZCgKICAgICAg
ICAgICAgICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlcigKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBDYWxsRnJhbWU6OmFyZ3VtZW50T2Zmc2V0KGluZGV4KSksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQ2FsbEZyYW1lOjphcmd1bWVudE9mZnNldChpbmRleC5hc0ludDMy
KCkpKSwKICAgICAgICAgICAgICAgICAgICAgICAgIEZsdXNoZWRKU1ZhbHVlKTsKICAgICAgICAg
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBkYXRhID0gbV9ncmFwaC5tX3N0
YWNrQWNjZXNzRGF0YS5hZGQoCi0gICAgICAgICAgICAgICAgICAgICAgICB2aXJ0dWFsUmVnaXN0
ZXJGb3JBcmd1bWVudChpbmRleCArIDEpLCBGbHVzaGVkSlNWYWx1ZSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpbmRleC5hc0ludDMyKCkgKyAx
KSwgRmx1c2hlZEpTVmFsdWUpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAK
LSAgICAgICAgICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lICYmICFpbmxpbmVDYWxsRnJhbWUt
PmlzVmFyYXJncygpICYmIGluZGV4IDwgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgp
IC0gMSkgeworICAgICAgICAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUgJiYgIWlubGluZUNh
bGxGcmFtZS0+aXNWYXJhcmdzKCkKKyAgICAgICAgICAgICAgICAgICAgJiYgaW5kZXguYXNVSW50
MzIoKSA8IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSAtIDEpIHsKICAgICAgICAg
ICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvR2V0U3RhY2soZGF0YSk7CiAgICAgICAgICAgICAg
ICAgICAgIGVsaW1pbmF0ZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAppbmRleCA5N2NkODQ4NzQ3N2FjOTA4
NGZlOTBkZGI5OGQzMGY0NjZlNWNhMTZmLi5jYjQ4ZTVjM2ZlMzMxMjMyZmRlMjA0NTExYmY1Yzg2
NTljZjM3MDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNH
Qy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCkBAIC0y
NDYsNyArMjQ2LDYgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAg
IGNhc2UgUGhhbnRvbU5ld0dlbmVyYXRvckZ1bmN0aW9uOgogICAgIGNhc2UgUGhhbnRvbUNyZWF0
ZUFjdGl2YXRpb246CiAgICAgY2FzZSBQaGFudG9tRGlyZWN0QXJndW1lbnRzOgotICAgIGNhc2Ug
UGhhbnRvbUNyZWF0ZVJlc3Q6CiAgICAgY2FzZSBQaGFudG9tQ2xvbmVkQXJndW1lbnRzOgogICAg
IGNhc2UgR2V0TXlBcmd1bWVudEJ5VmFsOgogICAgIGNhc2UgR2V0TXlBcmd1bWVudEJ5VmFsT3V0
T2ZCb3VuZHM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVw
UGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApp
bmRleCAxZDRlOTA3YTdmMmZmY2MyZDlhMmEwMzc3MTE0NmE3OTEwMWYzY2QzLi43OGZlMGU5ZGZl
NzdlYWRlNWViZjJhODgzMmM5ZjY1ZGQ4OTNjODNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTEzOTksNyArMTM5OSw2IEBAIHByaXZhdGU6CiAg
ICAgICAgIGNhc2UgUGhhbnRvbU5ld0dlbmVyYXRvckZ1bmN0aW9uOgogICAgICAgICBjYXNlIFBo
YW50b21DcmVhdGVBY3RpdmF0aW9uOgogICAgICAgICBjYXNlIFBoYW50b21EaXJlY3RBcmd1bWVu
dHM6Ci0gICAgICAgIGNhc2UgUGhhbnRvbUNyZWF0ZVJlc3Q6CiAgICAgICAgIGNhc2UgUGhhbnRv
bUNsb25lZEFyZ3VtZW50czoKICAgICAgICAgY2FzZSBHZXRNeUFyZ3VtZW50QnlWYWw6CiAgICAg
ICAgIGNhc2UgR2V0TXlBcmd1bWVudEJ5VmFsT3V0T2ZCb3VuZHM6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZS5oCmluZGV4IDFkMWJkNGMyZjc0Mjk1ZDc2YjYwYjA4NDBjZjZiOThlYmRiZjgy
ZGIuLmE2N2IyOTNjZTg3NDUyNzNiZDMzMzgxZjM4MzNhNTAzYjQyYzYwNDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZS5oCkBAIC00NTgsNyArNDU4LDYgQEAgcHVibGljOgogICAgICAg
ICAgICAgCiAgICAgICAgIGNhc2UgUGhhbnRvbURpcmVjdEFyZ3VtZW50czoKICAgICAgICAgY2Fz
ZSBQaGFudG9tQ2xvbmVkQXJndW1lbnRzOgotICAgICAgICBjYXNlIFBoYW50b21DcmVhdGVSZXN0
OgogICAgICAgICAgICAgLy8gVGhlc2UgcHJldGVuZCB0byBiZSB0aGUgZW1wdHkgdmFsdWUgY29u
c3RhbnQgZm9yIHRoZSBiZW5lZml0IG9mIHRoZSBERkcgYmFja2VuZCwgd2hpY2gKICAgICAgICAg
ICAgIC8vIG90aGVyd2lzZSB3b3VsZG4ndCB0YWtlIGtpbmRseSB0byBhIG5vZGUgdGhhdCBkb2Vz
bid0IGNvbXB1dGUgYSB2YWx1ZS4KICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNDcyLDcg
KzQ3MSw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIEFTU0VSVChoYXNDb25zdGFudCgpKTsK
ICAgICAgICAgCi0gICAgICAgIGlmIChvcCgpID09IFBoYW50b21EaXJlY3RBcmd1bWVudHMgfHwg
b3AoKSA9PSBQaGFudG9tQ2xvbmVkQXJndW1lbnRzIHx8IG9wKCkgPT0gUGhhbnRvbUNyZWF0ZVJl
c3QpIHsKKyAgICAgICAgaWYgKG9wKCkgPT0gUGhhbnRvbURpcmVjdEFyZ3VtZW50cyB8fCBvcCgp
ID09IFBoYW50b21DbG9uZWRBcmd1bWVudHMpIHsKICAgICAgICAgICAgIC8vIFRoZXNlIHByZXRl
bmQgdG8gYmUgdGhlIGVtcHR5IHZhbHVlIGNvbnN0YW50IGZvciB0aGUgYmVuZWZpdCBvZiB0aGUg
REZHIGJhY2tlbmQsIHdoaWNoCiAgICAgICAgICAgICAvLyBvdGhlcndpc2Ugd291bGRuJ3QgdGFr
ZSBraW5kbHkgdG8gYSBub2RlIHRoYXQgZG9lc24ndCBjb21wdXRlIGEgdmFsdWUuCiAgICAgICAg
ICAgICByZXR1cm4gRnJvemVuVmFsdWU6OmVtcHR5U2luZ2xldG9uKCk7CkBAIC0xNzQ2LDcgKzE3
NDUsNiBAQCBwdWJsaWM6CiAgICAgICAgIHN3aXRjaCAob3AoKSkgewogICAgICAgICBjYXNlIFBo
YW50b21OZXdPYmplY3Q6CiAgICAgICAgIGNhc2UgUGhhbnRvbURpcmVjdEFyZ3VtZW50czoKLSAg
ICAgICAgY2FzZSBQaGFudG9tQ3JlYXRlUmVzdDoKICAgICAgICAgY2FzZSBQaGFudG9tQ2xvbmVk
QXJndW1lbnRzOgogICAgICAgICBjYXNlIFBoYW50b21OZXdGdW5jdGlvbjoKICAgICAgICAgY2Fz
ZSBQaGFudG9tTmV3R2VuZXJhdG9yRnVuY3Rpb246CkBAIC0yMzkwLDcgKzIzODgsNyBAQCBwdWJs
aWM6CiAKICAgICB1bnNpZ25lZCBudW1iZXJPZkFyZ3VtZW50c1RvU2tpcCgpCiAgICAgewotICAg
ICAgICBBU1NFUlQob3AoKSA9PSBDcmVhdGVSZXN0IHx8IG9wKCkgPT0gR2V0UmVzdExlbmd0aCB8
fCBvcCgpID09IEdldE15QXJndW1lbnRCeVZhbCB8fCBvcCgpID09IEdldE15QXJndW1lbnRCeVZh
bE91dE9mQm91bmRzKTsKKyAgICAgICAgQVNTRVJUKG9wKCkgPT0gQ3JlYXRlUmVzdCB8fCBvcCgp
ID09IEdldFJlc3RMZW5ndGgpOwogICAgICAgICByZXR1cm4gbV9vcEluZm8uYXM8dW5zaWduZWQ+
KCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGVUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKaW5kZXgg
ZDk3NWI3NjIyMGMwMmMxMzExYzE5MmVhOWFkMDJlNjAxYTUyMDRlMC4uY2QyNGE0NDMwYTk2YjRj
Nzg5OWMxMWMzYTNkOTk4ZjBiOTcyODMyZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdOb2RlVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZVR5cGUuaApAQCAtMzQyLDcgKzM0Miw2IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2Ug
REZHIHsKICAgICBcCiAgICAgbWFjcm8oQ3JlYXRlRGlyZWN0QXJndW1lbnRzLCBOb2RlUmVzdWx0
SlMpIFwKICAgICBtYWNybyhQaGFudG9tRGlyZWN0QXJndW1lbnRzLCBOb2RlUmVzdWx0SlMgfCBO
b2RlTXVzdEdlbmVyYXRlKSBcCi0gICAgbWFjcm8oUGhhbnRvbUNyZWF0ZVJlc3QsIE5vZGVSZXN1
bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhDcmVhdGVTY29wZWRBcmd1bWVu
dHMsIE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKENyZWF0ZUNsb25lZEFyZ3VtZW50cywgTm9k
ZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oUGhhbnRvbUNsb25lZEFyZ3VtZW50cywgTm9kZVJlc3Vs
dEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPU1JBdmFpbGFiaWxpdHlBbmFseXNpc1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXNQaGFzZS5jcHAKaW5kZXgg
YzE4ODc3NWUzZmY3YmI2NmE4ZDRkN2Q2ODFlNTVkMGJjYjQ1MzgzNi4uZWIyMTdlNmM5OTk2MDIz
YzFhMWRiYWNjNzg5Mjk0YTBkYWM1NTI4OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPU1JBdmFpbGFiaWxpdHlBbmFseXNpc1BoYXNlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkF2YWlsYWJpbGl0eUFuYWx5c2lzUGhhc2UuY3BwCkBA
IC0xNjUsNyArMTY1LDYgQEAgdm9pZCBMb2NhbE9TUkF2YWlsYWJpbGl0eUNhbGN1bGF0b3I6OmV4
ZWN1dGVOb2RlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCi0g
ICAgY2FzZSBQaGFudG9tQ3JlYXRlUmVzdDoKICAgICBjYXNlIFBoYW50b21EaXJlY3RBcmd1bWVu
dHM6CiAgICAgY2FzZSBQaGFudG9tQ2xvbmVkQXJndW1lbnRzOiB7CiAgICAgICAgIElubGluZUNh
bGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lID0gbm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNh
bGxGcmFtZTsKQEAgLTE3NCwxMCArMTczLDYgQEAgdm9pZCBMb2NhbE9TUkF2YWlsYWJpbGl0eUNh
bGN1bGF0b3I6OmV4ZWN1dGVOb2RlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAvLyBnaXZlbiB0
aGF0IHdlIGNhbiByZWFkIHRoZW0gZnJvbSB0aGUgc3RhY2suCiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQotCi0gICAgICAgIHVuc2lnbmVkIG51bWJlck9mQXJndW1lbnRzVG9Ta2lwID0g
MDsKLSAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gUGhhbnRvbUNyZWF0ZVJlc3QpCi0gICAgICAg
ICAgICBudW1iZXJPZkFyZ3VtZW50c1RvU2tpcCA9IG5vZGUtPm51bWJlck9mQXJndW1lbnRzVG9T
a2lwKCk7CiAgICAgICAgIAogICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lLT5pc1ZhcmFyZ3Mo
KSkgewogICAgICAgICAgICAgLy8gUmVjb3JkIGhvdyB0byByZWFkIGVhY2ggYXJndW1lbnQgYW5k
IHRoZSBhcmd1bWVudCBjb3VudC4KQEAgLTE5Myw3ICsxODgsNyBAQCB2b2lkIExvY2FsT1NSQXZh
aWxhYmlsaXR5Q2FsY3VsYXRvcjo6ZXhlY3V0ZU5vZGUoTm9kZSogbm9kZSkKICAgICAgICAgICAg
IG1fYXZhaWxhYmlsaXR5Lm1faGVhcC5zZXQoUHJvbW90ZWRIZWFwTG9jYXRpb24oQXJndW1lbnRz
Q2FsbGVlUExvYywgbm9kZSksIGNhbGxlZSk7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAg
IGZvciAodW5zaWduZWQgaSA9IG51bWJlck9mQXJndW1lbnRzVG9Ta2lwOyBpIDwgaW5saW5lQ2Fs
bEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpIC0gMTsgKytpKSB7CisgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkgLSAxOyArK2kp
IHsKICAgICAgICAgICAgIEF2YWlsYWJpbGl0eSBhcmd1bWVudCA9IG1fYXZhaWxhYmlsaXR5Lm1f
bG9jYWxzLm9wZXJhbmQoCiAgICAgICAgICAgICAgICAgaW5saW5lQ2FsbEZyYW1lLT5zdGFja09m
ZnNldCArIENhbGxGcmFtZTo6YXJndW1lbnRPZmZzZXQoaSkpOwogICAgICAgICAgICAgCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCBlMjA0ZDNlOTNk
ODg2NGI5MGY1YWNhYzkzZDQxNTJmMTc0Nzg5NzY5Li5mZGY2ODlkMGRlMjk2YzVjMjM1ZDI4ZWQ5
ODA0NTlkMDVhMzAzMmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0
aW9ucy5jcHAKQEAgLTEzNTgsNyArMTM1OCw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVy
YXRpb25DcmVhdGVSZXN0KEV4ZWNTdGF0ZSogZXhlYywgUmVnaXN0ZXIqIGFyZ3VtZW50U3RhCiAg
ICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CiAKICAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOwotICAg
IFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5yZXN0UGFyYW1ldGVyU3RydWN0
dXJlKCk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPmFycmF5U3Ry
dWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhDb250aWd1b3Vz
KTsKICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihSZWdpc3RlcikgPT0gc2l6ZW9mKEpTVmFsdWUp
LCAiVGhpcyBpcyBhIHN0cm9uZyBhc3N1bXB0aW9uIGhlcmUuIik7CiAgICAgSlNWYWx1ZSogYXJn
dW1lbnRzVG9Db3B5UmVnaW9uID0gYml0d2lzZV9jYXN0PEpTVmFsdWUqPihhcmd1bWVudFN0YXJ0
KSArIG51bWJlck9mUGFyYW1zVG9Ta2lwOwogICAgIHJldHVybiBjb25zdHJ1Y3RBcnJheShleGVj
LCBzdHJ1Y3R1cmUsIGFyZ3VtZW50c1RvQ29weVJlZ2lvbiwgYXJyYXlTaXplKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlY2lzZUxvY2FsQ2xvYmJlcml6ZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVjaXNlTG9jYWxDbG9iYmVyaXplLmgK
aW5kZXggNmZiZDdiZGY3OGYwZWEwMmM3OTcwYWQ1MGU0YWQ1ZGI2YTlmZTBhOS4uNzBlYjc1ZjI3
MmIwNzMxMDA0YWU5NjhjOWRmMGU4OTJmYzNiZjJlYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQcmVjaXNlTG9jYWxDbG9iYmVyaXplLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVjaXNlTG9jYWxDbG9iYmVyaXplLmgKQEAgLTEyMCwyNCAr
MTIwLDE1IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgaW5saW5lQ2FsbEZyYW1lID0gbV9u
b2RlLT5hcmd1bWVudHNDaGlsZCgpLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lOwog
ICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGlubGluZUNhbGxGcmFtZSA9IG1fbm9k
ZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZTsKLQotICAgICAgICAgICAgdW5zaWdu
ZWQgbnVtYmVyT2ZBcmd1bWVudHNUb1NraXAgPSAwOwotICAgICAgICAgICAgaWYgKG1fbm9kZS0+
b3AoKSA9PSBHZXRNeUFyZ3VtZW50QnlWYWwgfHwgbV9ub2RlLT5vcCgpID09IEdldE15QXJndW1l
bnRCeVZhbE91dE9mQm91bmRzKSB7Ci0gICAgICAgICAgICAgICAgLy8gVGhlIHZhbHVlIG9mIG51
bWJlck9mQXJndW1lbnRzVG9Ta2lwIGd1YXJhbnRlZXMgdGhhdCBHZXRNeUFyZ3VtZW50QnlWYWwq
IHdpbGwgbmV2ZXIKLSAgICAgICAgICAgICAgICAvLyByZWFkIGFueSBhcmd1bWVudHMgYmVsb3cg
dGhlIG51bWJlciBvZiBhcmd1bWVudHMgdG8gc2tpcC4gRm9yIGV4YW1wbGUsIGlmIG51bWJlck9m
QXJndW1lbnRzVG9Ta2lwIGlzIDIsCi0gICAgICAgICAgICAgICAgLy8gd2Ugd2lsbCBuZXZlciBy
ZWFkIGFyZ3VtZW50IDAgb3IgYXJndW1lbnQgMS4KLSAgICAgICAgICAgICAgICBudW1iZXJPZkFy
Z3VtZW50c1RvU2tpcCA9IG1fbm9kZS0+bnVtYmVyT2ZBcmd1bWVudHNUb1NraXAoKTsKLSAgICAg
ICAgICAgIH0KLQogICAgICAgICAgICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUpIHsKICAgICAgICAg
ICAgICAgICAvLyBSZWFkIHRoZSBvdXRlcm1vc3QgYXJndW1lbnRzIGFuZCBhcmd1bWVudCBjb3Vu
dC4KLSAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxICsgbnVtYmVyT2ZBcmd1bWVu
dHNUb1NraXA7IGkgPCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9ncmFwaC5tX2NvZGVCbG9jay0+
bnVtUGFyYW1ldGVycygpKTsgaSsrKQorICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IG1fZ3JhcGgubV9jb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKTsgaS0tID4gMTspCiAgICAgICAg
ICAgICAgICAgICAgIG1fcmVhZCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKSk7CiAgICAg
ICAgICAgICAgICAgbV9yZWFkKFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojphcmd1bWVu
dENvdW50KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDEgKyBudW1iZXJPZkFyZ3VtZW50
c1RvU2tpcDsgaSA8IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKTsgaSsrKQorICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6
ZSgpOyBpLS0gPiAxOykKICAgICAgICAgICAgICAgICBtX3JlYWQoVmlydHVhbFJlZ2lzdGVyKGlu
bGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChp
KS5vZmZzZXQoKSkpOwogICAgICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZS0+aXNWYXJhcmdz
KCkpCiAgICAgICAgICAgICAgICAgbV9yZWFkKFZpcnR1YWxSZWdpc3RlcihpbmxpbmVDYWxsRnJh
bWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25Q
aGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdh
dGlvblBoYXNlLmNwcAppbmRleCA2ZWQ3MjliM2I4NTczMWMwYTZlNTA5NjcwOWY5ODAxNmE0YjFm
OGUwLi4zOTdlOTk5M2I5MmU5NmNmMmU5ZDUxZTNiZDI4OWYzMGY4MzM5ZDcyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdh
dGlvblBoYXNlLmNwcApAQCAtMTAwNCw3ICsxMDA0LDYgQEAgcHJpdmF0ZToKICAgICAgICAgY2Fz
ZSBQaGFudG9tTmV3R2VuZXJhdG9yRnVuY3Rpb246CiAgICAgICAgIGNhc2UgUGhhbnRvbUNyZWF0
ZUFjdGl2YXRpb246CiAgICAgICAgIGNhc2UgUGhhbnRvbURpcmVjdEFyZ3VtZW50czoKLSAgICAg
ICAgY2FzZSBQaGFudG9tQ3JlYXRlUmVzdDoKICAgICAgICAgY2FzZSBQaGFudG9tQ2xvbmVkQXJn
dW1lbnRzOgogICAgICAgICBjYXNlIEdldE15QXJndW1lbnRCeVZhbDoKICAgICAgICAgY2FzZSBH
ZXRNeUFyZ3VtZW50QnlWYWxPdXRPZkJvdW5kczoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTYWZlVG9FeGVjdXRlLmgKaW5kZXggMmM5OTgwMjI1NjY3ZGYzNDA1MGRjYTZhMzRlODdm
MzRkNTk4ZWQyYi4uMGEyZWNkODAwNmIyZDYzMjg4MDA4MTQyZjU4ZGVjMWU0Yzc1N2YyYyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKQEAgLTM1NCw3
ICszNTQsNiBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBH
cmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBNYXRlcmlhbGl6ZU5ld09iamVjdDoK
ICAgICBjYXNlIE1hdGVyaWFsaXplQ3JlYXRlQWN0aXZhdGlvbjoKICAgICBjYXNlIFBoYW50b21E
aXJlY3RBcmd1bWVudHM6Ci0gICAgY2FzZSBQaGFudG9tQ3JlYXRlUmVzdDoKICAgICBjYXNlIFBo
YW50b21DbG9uZWRBcmd1bWVudHM6CiAgICAgY2FzZSBHZXRNeUFyZ3VtZW50QnlWYWw6CiAgICAg
Y2FzZSBHZXRNeUFyZ3VtZW50QnlWYWxPdXRPZkJvdW5kczoKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggMjczMmZlODU4NDRlNTFmNDY3
MGIwYWU0MDNmMmFjMjM1MDRjODcxYy4uN2I1N2IxODkyOTM3MDYxMGI3M2EwMGNlNWM1MDlkMzFj
ZmI1NTYxZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5jcHAKQEAgLTY4NTIsNyArNjg1Miw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVDcmVhdGVSZXN0KE5vZGUqIG5vZGUpCiAgICAgICAgIEdQUlJlZyBhcnJheVJlc3VsdEdQUiA9
IGFycmF5UmVzdWx0LmdwcigpOwogCiAgICAgICAgIGJvb2wgc2hvdWxkQWxsb3dGb3JBcnJheVN0
b3JhZ2VTdHJ1Y3R1cmVGb3JMYXJnZUFycmF5cyA9IGZhbHNlOwotICAgICAgICBBU1NFUlQobV9q
aXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+cmVzdFBh
cmFtZXRlclN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSA9PSBBcnJheVdpdGhDb250aWd1b3Vz
KTsKICAgICAgICAgY29tcGlsZUFsbG9jYXRlTmV3QXJyYXlXaXRoU2l6ZShtX2ppdC5ncmFwaCgp
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLCBhcnJheVJlc3VsdEdQUiwg
YXJyYXlMZW5ndGhHUFIsIEFycmF5V2l0aENvbnRpZ3VvdXMsIHNob3VsZEFsbG93Rm9yQXJyYXlT
dG9yYWdlU3RydWN0dXJlRm9yTGFyZ2VBcnJheXMpOwogCiAgICAgICAgIEdQUlRlbXBvcmFyeSBh
cmd1bWVudHNTdGFydCh0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IGNiMDRhNWE2NWM3NTBlMjNmMTdjOWRi
MjM0MTViNzM0YWVmNWI0YTQuLjhmNzJiMWU4ZGI2MWQ3ZjMzZTMwM2QzYjczZDViM2Y1MmJlY2U4
ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDMyXzY0LmNwcApAQCAtNTYwMSw3ICs1NjAxLDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgR2V0U3RhY2s6CiAgICAgY2FzZSBHZXRNeUFy
Z3VtZW50QnlWYWw6CiAgICAgY2FzZSBHZXRNeUFyZ3VtZW50QnlWYWxPdXRPZkJvdW5kczoKLSAg
ICBjYXNlIFBoYW50b21DcmVhdGVSZXN0OgogICAgICAgICBERkdfQ1JBU0gobV9qaXQuZ3JhcGgo
KSwgbm9kZSwgInVuZXhwZWN0ZWQgbm9kZSBpbiBERkcgYmFja2VuZCIpOwogICAgICAgICBicmVh
azsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcAppbmRleCBiNDFjNmYzMmIzM2Q4M2M2NWU4NTRmODYwNzhkNzRhNTI0MDI5ODEz
Li5mODljMWU2OTc1NjliMzI4YzFiMmRkNDI1ZGUzNWU0ZjQyYTM3NDg2IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTU4MTgs
NyArNTgxOCw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICBjYXNlIFB1dFN0YWNrOgogICAgIGNhc2UgS2lsbFN0YWNrOgogICAgIGNhc2UgR2V0U3RhY2s6
Ci0gICAgY2FzZSBQaGFudG9tQ3JlYXRlUmVzdDoKICAgICAgICAgREZHX0NSQVNIKG1faml0Lmdy
YXBoKCksIG5vZGUsICJVbmV4cGVjdGVkIG5vZGUiKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVSZWdpc3Ry
YXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZVJl
Z2lzdHJhdGlvblBoYXNlLmNwcAppbmRleCA4NmI1MGRkMzdmMmQyMTQ2MGE5ZWQ5ZDY1MTZkMDli
N2I1NjMzOTAwLi41MWNmNDg5NjBhOGIxZmY1NzJhODY5ZWFlMThiZjBhOWY1YTI3OWRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlv
blBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZVJl
Z2lzdHJhdGlvblBoYXNlLmNwcApAQCAtMTE4LDE0ICsxMTgsNiBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICAgICAgICAgIHJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+b3JpZ2luYWxBcnJh
eVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZShBcnJheVdpdGhTbG93UHV0QXJyYXlTdG9yYWdlKSk7
CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgICAgIGNhc2UgQ3JlYXRlUmVzdDogewotICAgICAgICAgICAgICAgICAgICBpZiAobV9n
cmFwaC5pc1dhdGNoaW5nSGF2aW5nQUJhZFRpbWVXYXRjaHBvaW50KG5vZGUpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+cmVzdFBhcmFtZXRlclN0cnVj
dHVyZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg
ICAgIGNhc2UgTmV3VHlwZWRBcnJheToKICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJTdHJ1
Y3R1cmUobV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+dHlw
ZWRBcnJheVN0cnVjdHVyZUNvbmN1cnJlbnRseShub2RlLT50eXBlZEFycmF5VHlwZSgpKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCmluZGV4IDQyMzMwMWM5MTli
OTI1YWZhYzFlMjJkNThkZmQ0ZGVlYWZkYTIzYzQuLjkxOGQ4YWQ0NTlmNjQxMTgyNGFiNmFlYmZj
NzYyY2FmMTNiOTQ3ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
VmFsaWRhdGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUu
Y3BwCkBAIC02NzAsNyArNjcwLDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBjYXNlIFBo
YW50b21OZXdHZW5lcmF0b3JGdW5jdGlvbjoKICAgICAgICAgICAgICAgICBjYXNlIFBoYW50b21D
cmVhdGVBY3RpdmF0aW9uOgogICAgICAgICAgICAgICAgIGNhc2UgUGhhbnRvbURpcmVjdEFyZ3Vt
ZW50czoKLSAgICAgICAgICAgICAgICBjYXNlIFBoYW50b21DcmVhdGVSZXN0OgogICAgICAgICAg
ICAgICAgIGNhc2UgUGhhbnRvbUNsb25lZEFyZ3VtZW50czoKICAgICAgICAgICAgICAgICBjYXNl
IE1vdkhpbnQ6CiAgICAgICAgICAgICAgICAgY2FzZSBVcHNpbG9uOgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCmluZGV4IDU0ZjRlNzJlNjQxOWJmZTI1
NTY1M2UzNjVmYmFjODIwMzJmZmRlOTcuLjNhZjFjYjc0NDk0NjYyNjUzNmFhYjljYTIxZGVhN2Ix
ZTM3NDdiNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJp
bGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGll
cy5jcHAKQEAgLTIzMCw3ICsyMzAsNiBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBp
bGUoTm9kZSogbm9kZSkKICAgICBjYXNlIE1hdGVyaWFsaXplTmV3T2JqZWN0OgogICAgIGNhc2Ug
TWF0ZXJpYWxpemVDcmVhdGVBY3RpdmF0aW9uOgogICAgIGNhc2UgUGhhbnRvbURpcmVjdEFyZ3Vt
ZW50czoKLSAgICBjYXNlIFBoYW50b21DcmVhdGVSZXN0OgogICAgIGNhc2UgUGhhbnRvbUNsb25l
ZEFyZ3VtZW50czoKICAgICBjYXNlIEdldE15QXJndW1lbnRCeVZhbDoKICAgICBjYXNlIEdldE15
QXJndW1lbnRCeVZhbE91dE9mQm91bmRzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvQjMuY3BwCmluZGV4IGFkMTYxNTcyMDI3YzQxZjMwMDY4M2RjMTIyNDJmOWI5
NWQ0NTkwYzIuLjNmMDlkY2ZkNjAyOGEwMmQ4MzcxZTcyNTUzNmFjZDE2MTVlYjkwZmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTEwNzQs
NyArMTA3NCw2IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgUGhhbnRvbU5ld0dlbmVyYXRvckZ1
bmN0aW9uOgogICAgICAgICBjYXNlIFBoYW50b21DcmVhdGVBY3RpdmF0aW9uOgogICAgICAgICBj
YXNlIFBoYW50b21EaXJlY3RBcmd1bWVudHM6Ci0gICAgICAgIGNhc2UgUGhhbnRvbUNyZWF0ZVJl
c3Q6CiAgICAgICAgIGNhc2UgUGhhbnRvbUNsb25lZEFyZ3VtZW50czoKICAgICAgICAgY2FzZSBQ
dXRIaW50OgogICAgICAgICBjYXNlIEJvdHRvbVZhbHVlOgpAQCAtMzQzNSw4ICszNDM0LDYgQEAg
cHJpdmF0ZToKICAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSBtX25v
ZGUtPmNoaWxkMSgpLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lOwogICAgICAgICAK
ICAgICAgICAgTFZhbHVlIGluZGV4ID0gbG93SW50MzIobV9ub2RlLT5jaGlsZDIoKSk7Ci0gICAg
ICAgIGlmIChtX25vZGUtPm51bWJlck9mQXJndW1lbnRzVG9Ta2lwKCkpCi0gICAgICAgICAgICBp
bmRleCA9IG1fb3V0LmFkZChpbmRleCwgbV9vdXQuY29uc3RJbnQzMihtX25vZGUtPm51bWJlck9m
QXJndW1lbnRzVG9Ta2lwKCkpKTsKICAgICAgICAgCiAgICAgICAgIExWYWx1ZSBsaW1pdDsKICAg
ICAgICAgaWYgKGlubGluZUNhbGxGcmFtZSAmJiAhaW5saW5lQ2FsbEZyYW1lLT5pc1ZhcmFyZ3Mo
KSkKQEAgLTQxNjAsNyArNDE1Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBMVmFsdWUgYXJy
YXlMZW5ndGggPSBsb3dJbnQzMihtX25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIExCYXNp
Y0Jsb2NrIGxvb3BTdGFydCA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgICAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5v
cmlnaW4uc2VtYW50aWMpOwotICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnbG9i
YWxPYmplY3QtPnJlc3RQYXJhbWV0ZXJTdHJ1Y3R1cmUoKTsKKyAgICAgICAgICAgIFN0cnVjdHVy
ZSogc3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlw
ZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoQ29udGlndW91cyk7CiAgICAgICAgICAgICBBcnJh
eVZhbHVlcyBhcnJheVZhbHVlcyA9IGFsbG9jYXRlVW5pbml0aWFsaXplZENvbnRpZ3VvdXNKU0Fy
cmF5KGFycmF5TGVuZ3RoLCBzdHJ1Y3R1cmUpOwogICAgICAgICAgICAgTFZhbHVlIGFycmF5ID0g
YXJyYXlWYWx1ZXMuYXJyYXk7CiAgICAgICAgICAgICBMVmFsdWUgYnV0dGVyZmx5ID0gYXJyYXlW
YWx1ZXMuYnV0dGVyZmx5OwpAQCAtNjI4OCw0NyArNjI4NSwxNyBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgaW5saW5lQ2FsbEZyYW1lID0gbV9ub2RlLT5jaGlsZDEoKS0+b3JpZ2luLnNlbWFudGlj
LmlubGluZUNhbGxGcmFtZTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgaW5saW5lQ2FsbEZy
YW1lID0gbV9ub2RlLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lOwotCi0gICAgICAg
IExWYWx1ZSBsZW5ndGggPSBudWxscHRyOyAKLSAgICAgICAgTFZhbHVlIGxlbmd0aEluY2x1ZGlu
Z1RoaXMgPSBudWxscHRyOwotICAgICAgICBBcmd1bWVudHNMZW5ndGggYXJndW1lbnRzTGVuZ3Ro
ID0gZ2V0QXJndW1lbnRzTGVuZ3RoKGlubGluZUNhbGxGcmFtZSk7Ci0gICAgICAgIGlmIChhcmd1
bWVudHNMZW5ndGguaXNLbm93bikgewotICAgICAgICAgICAgdW5zaWduZWQga25vd25MZW5ndGgg
PSBhcmd1bWVudHNMZW5ndGgua25vd247Ci0gICAgICAgICAgICBpZiAoa25vd25MZW5ndGggPj0g
ZGF0YS0+b2Zmc2V0KQotICAgICAgICAgICAgICAgIGtub3duTGVuZ3RoID0ga25vd25MZW5ndGgg
LSBkYXRhLT5vZmZzZXQ7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAga25vd25M
ZW5ndGggPSAwOwotICAgICAgICAgICAgbGVuZ3RoID0gbV9vdXQuY29uc3RJbnQzMihrbm93bkxl
bmd0aCk7Ci0gICAgICAgICAgICBsZW5ndGhJbmNsdWRpbmdUaGlzID0gbV9vdXQuY29uc3RJbnQz
Mihrbm93bkxlbmd0aCArIDEpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLy8gV2Ug
bmVlZCB0byBwZXJmb3JtIHRoZSBzYW1lIGxvZ2ljYWwgb3BlcmF0aW9uIGFzIHRoZSBjb2RlIGFi
b3ZlLCBidXQgdGhyb3VnaCBkeW5hbWljIG9wZXJhdGlvbnMuCi0gICAgICAgICAgICBpZiAoIWRh
dGEtPm9mZnNldCkKLSAgICAgICAgICAgICAgICBsZW5ndGggPSBhcmd1bWVudHNMZW5ndGgudmFs
dWU7Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBpc0xh
cmdlciA9IG1fb3V0Lm5ld0Jsb2NrKCk7Ci0gICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sgY29u
dGludWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsKLQotICAgICAgICAgICAgICAgIFZhbHVlRnJv
bUJsb2NrIHNtYWxsZXJPckVxdWFsTGVuZ3RoUmVzdWx0ID0gbV9vdXQuYW5jaG9yKG1fb3V0LmNv
bnN0SW50MzIoMCkpOwotICAgICAgICAgICAgICAgIG1fb3V0LmJyYW5jaCgKLSAgICAgICAgICAg
ICAgICAgICAgbV9vdXQuYWJvdmUoYXJndW1lbnRzTGVuZ3RoLnZhbHVlLCBtX291dC5jb25zdElu
dDMyKGRhdGEtPm9mZnNldCkpLCB1bnN1cmUoaXNMYXJnZXIpLCB1bnN1cmUoY29udGludWF0aW9u
KSk7Ci0gICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRU
byhpc0xhcmdlciwgY29udGludWF0aW9uKTsKLSAgICAgICAgICAgICAgICBWYWx1ZUZyb21CbG9j
ayBsYXJnZXJMZW5ndGhSZXN1bHQgPSBtX291dC5hbmNob3IobV9vdXQuc3ViKGFyZ3VtZW50c0xl
bmd0aC52YWx1ZSwgbV9vdXQuY29uc3RJbnQzMihkYXRhLT5vZmZzZXQpKSk7Ci0gICAgICAgICAg
ICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwotCi0gICAgICAgICAgICAgICAgbV9vdXQu
YXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7Ci0gICAgICAgICAgICAgICAgbGVuZ3Ro
ID0gbV9vdXQucGhpKEludDMyLCBzbWFsbGVyT3JFcXVhbExlbmd0aFJlc3VsdCwgbGFyZ2VyTGVu
Z3RoUmVzdWx0KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGxlbmd0aEluY2x1ZGluZ1Ro
aXMgPSBtX291dC5hZGQobGVuZ3RoLCBtX291dC5jb25zdEludDMyKDEpKTsKLSAgICAgICAgfQot
CisgICAgICAgIAorICAgICAgICBMVmFsdWUgbGVuZ3RoID0gZ2V0QXJndW1lbnRzTGVuZ3RoKGlu
bGluZUNhbGxGcmFtZSkudmFsdWU7CisgICAgICAgIExWYWx1ZSBsZW5ndGhJbmNsdWRpbmdUaGlz
ID0gbV9vdXQuYWRkKGxlbmd0aCwgbV9vdXQuY29uc3RJbnQzMigxIC0gZGF0YS0+b2Zmc2V0KSk7
CisgICAgICAgIAogICAgICAgICBzcGVjdWxhdGUoCiAgICAgICAgICAgICBWYXJhcmdzT3ZlcmZs
b3csIG5vVmFsdWUoKSwgbnVsbHB0ciwKICAgICAgICAgICAgIG1fb3V0LmFib3ZlKGxlbmd0aElu
Y2x1ZGluZ1RoaXMsIG1fb3V0LmNvbnN0SW50MzIoZGF0YS0+bGltaXQpKSk7CiAgICAgICAgIAog
ICAgICAgICBtX291dC5zdG9yZTMyKGxlbmd0aEluY2x1ZGluZ1RoaXMsIHBheWxvYWRGb3IoZGF0
YS0+bWFjaGluZUNvdW50KSk7CiAgICAgICAgIAotICAgICAgICB1bnNpZ25lZCBudW1iZXJPZkFy
Z3VtZW50c1RvU2tpcCA9IGRhdGEtPm9mZnNldDsKLSAgICAgICAgTFZhbHVlIHNvdXJjZVN0YXJ0
ID0gZ2V0QXJndW1lbnRzU3RhcnQoaW5saW5lQ2FsbEZyYW1lLCBudW1iZXJPZkFyZ3VtZW50c1Rv
U2tpcCk7CisgICAgICAgIExWYWx1ZSBzb3VyY2VTdGFydCA9IGdldEFyZ3VtZW50c1N0YXJ0KGlu
bGluZUNhbGxGcmFtZSk7CiAgICAgICAgIExWYWx1ZSB0YXJnZXRTdGFydCA9IGFkZHJlc3NGb3Io
ZGF0YS0+bWFjaGluZVN0YXJ0KS52YWx1ZSgpOwogCiAgICAgICAgIExCYXNpY0Jsb2NrIHVuZGVm
aW5lZExvb3AgPSBtX291dC5uZXdCbG9jaygpOwpAQCAtNjM2MSw3ICs2MzI4LDkgQEAgcHJpdmF0
ZToKICAgICAgICAgcHJldmlvdXNJbmRleCA9IG1fb3V0LnBoaShwb2ludGVyVHlwZSgpLCBsb29w
Qm91bmQpOwogICAgICAgICBjdXJyZW50SW5kZXggPSBtX291dC5zdWIocHJldmlvdXNJbmRleCwg
bV9vdXQuaW50UHRyT25lKTsKICAgICAgICAgTFZhbHVlIHZhbHVlID0gbV9vdXQubG9hZDY0KAot
ICAgICAgICAgICAgbV9vdXQuYmFzZUluZGV4KG1faGVhcHMudmFyaWFibGVzLCBzb3VyY2VTdGFy
dCwgY3VycmVudEluZGV4KSk7CisgICAgICAgICAgICBtX291dC5iYXNlSW5kZXgoCisgICAgICAg
ICAgICAgICAgbV9oZWFwcy52YXJpYWJsZXMsIHNvdXJjZVN0YXJ0LAorICAgICAgICAgICAgICAg
IG1fb3V0LmFkZChjdXJyZW50SW5kZXgsIG1fb3V0LmNvbnN0SW50UHRyKGRhdGEtPm9mZnNldCkp
KSk7CiAgICAgICAgIG1fb3V0LnN0b3JlNjQodmFsdWUsIG1fb3V0LmJhc2VJbmRleChtX2hlYXBz
LnZhcmlhYmxlcywgdGFyZ2V0U3RhcnQsIGN1cnJlbnRJbmRleCkpOwogICAgICAgICBuZXh0SW5k
ZXggPSBtX291dC5hbmNob3IoY3VycmVudEluZGV4KTsKICAgICAgICAgbV9vdXQuYWRkSW5jb21p
bmdUb1BoaShwcmV2aW91c0luZGV4LCBuZXh0SW5kZXgpOwpAQCAtODQwNyw5ICs4Mzc2LDkgQEAg
cHJpdmF0ZToKICAgICAgICAgcmV0dXJuIG1fb3V0LmxvYWRQdHIoYWRkcmVzc0ZvcihDYWxsRnJh
bWVTbG90OjpjYWxsZWUpKTsKICAgICB9CiAgICAgCi0gICAgTFZhbHVlIGdldEFyZ3VtZW50c1N0
YXJ0KElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lLCB1bnNpZ25lZCBvZmZzZXQgPSAw
KQorICAgIExWYWx1ZSBnZXRBcmd1bWVudHNTdGFydChJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNh
bGxGcmFtZSkKICAgICB7Ci0gICAgICAgIFZpcnR1YWxSZWdpc3RlciBzdGFydCA9IEFzc2VtYmx5
SGVscGVyczo6YXJndW1lbnRzU3RhcnQoaW5saW5lQ2FsbEZyYW1lKSArIG9mZnNldDsKKyAgICAg
ICAgVmlydHVhbFJlZ2lzdGVyIHN0YXJ0ID0gQXNzZW1ibHlIZWxwZXJzOjphcmd1bWVudHNTdGFy
dChpbmxpbmVDYWxsRnJhbWUpOwogICAgICAgICByZXR1cm4gYWRkcmVzc0ZvcihzdGFydCkudmFs
dWUoKTsKICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRp
b25zLmNwcAppbmRleCA2YzhlZjhlZjAxNzc2Y2NjZTA2OTEyZGM0ZDM0YTYzMTdhMTg4ZWFjLi5i
ZWVlYmMwM2VlM2U1NjQwMmNlMWU3N2UzM2EyODBmMjVkMGQ4MGVmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAKQEAgLTgzLDcgKzgzLDYgQEAgZXh0ZXJu
ICJDIiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUG9wdWxhdGVPYmplY3RJbk9TUigKICAg
ICBjYXNlIFBoYW50b21OZXdHZW5lcmF0b3JGdW5jdGlvbjoKICAgICBjYXNlIFBoYW50b21EaXJl
Y3RBcmd1bWVudHM6CiAgICAgY2FzZSBQaGFudG9tQ2xvbmVkQXJndW1lbnRzOgotICAgIGNhc2Ug
UGhhbnRvbUNyZWF0ZVJlc3Q6CiAgICAgICAgIC8vIFRob3NlIGFyZSBjb21wbGV0ZWx5IGhhbmRs
ZWQgYnkgb3BlcmF0aW9uTWF0ZXJpYWxpemVPYmplY3RJbk9TUgogICAgICAgICBicmVhazsKIApA
QCAtMjM1LDcgKzIzNCw2IEBAIGV4dGVybiAiQyIgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbk1hdGVyaWFsaXplT2JqZWN0SW5PU1IoCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAg
fQogCi0gICAgY2FzZSBQaGFudG9tQ3JlYXRlUmVzdDoKICAgICBjYXNlIFBoYW50b21EaXJlY3RB
cmd1bWVudHM6CiAgICAgY2FzZSBQaGFudG9tQ2xvbmVkQXJndW1lbnRzOiB7CiAgICAgICAgIGlm
ICghbWF0ZXJpYWxpemF0aW9uLT5vcmlnaW4oKS5pbmxpbmVDYWxsRnJhbWUpIHsKQEAgLTI0NCwx
NyArMjQyLDYgQEAgZXh0ZXJuICJDIiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTWF0
ZXJpYWxpemVPYmplY3RJbk9TUigKICAgICAgICAgICAgICAgICByZXR1cm4gRGlyZWN0QXJndW1l
bnRzOjpjcmVhdGVCeUNvcHlpbmcoZXhlYyk7CiAgICAgICAgICAgICBjYXNlIFBoYW50b21DbG9u
ZWRBcmd1bWVudHM6CiAgICAgICAgICAgICAgICAgcmV0dXJuIENsb25lZEFyZ3VtZW50czo6Y3Jl
YXRlV2l0aE1hY2hpbmVGcmFtZShleGVjLCBleGVjLCBBcmd1bWVudHNNb2RlOjpDbG9uZWQpOwot
ICAgICAgICAgICAgY2FzZSBQaGFudG9tQ3JlYXRlUmVzdDogewotICAgICAgICAgICAgICAgIENv
ZGVCbG9jayogY29kZUJsb2NrID0gYmFzZWxpbmVDb2RlQmxvY2tGb3JPcmlnaW5BbmRCYXNlbGlu
ZUNvZGVCbG9jaygKLSAgICAgICAgICAgICAgICAgICAgbWF0ZXJpYWxpemF0aW9uLT5vcmlnaW4o
KSwgZXhlYy0+Y29kZUJsb2NrKCkpOwotCi0gICAgICAgICAgICAgICAgdW5zaWduZWQgbnVtYmVy
T2ZBcmd1bWVudHNUb1NraXAgPSBjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSAtIDE7Ci0gICAg
ICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGNvZGVCbG9jay0+Z2xv
YmFsT2JqZWN0KCk7Ci0gICAgICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnbG9i
YWxPYmplY3QtPnJlc3RQYXJhbWV0ZXJTdHJ1Y3R1cmUoKTsKLSAgICAgICAgICAgICAgICBKU1Zh
bHVlKiBhcmd1bWVudHNUb0NvcHlSZWdpb24gPSBleGVjLT5hZGRyZXNzT2ZBcmd1bWVudHNTdGFy
dCgpICsgbnVtYmVyT2ZBcmd1bWVudHNUb1NraXA7Ci0gICAgICAgICAgICAgICAgdW5zaWduZWQg
YXJyYXlTaXplID0gZXhlYy0+YXJndW1lbnRDb3VudCgpID4gbnVtYmVyT2ZBcmd1bWVudHNUb1Nr
aXAgPyBleGVjLT5hcmd1bWVudENvdW50KCkgLSBudW1iZXJPZkFyZ3VtZW50c1RvU2tpcCA6IDA7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdEFycmF5KGV4ZWMsIHN0cnVjdHVyZSwg
YXJndW1lbnRzVG9Db3B5UmVnaW9uLCBhcnJheVNpemUpOwotICAgICAgICAgICAgfQogICAgICAg
ICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjY4LDEyICsyNTUsMTQg
QEAgZXh0ZXJuICJDIiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTWF0ZXJpYWxpemVP
YmplY3RJbk9TUigKICAgICAgICAgICAgICAgICBjb25zdCBFeGl0UHJvcGVydHlWYWx1ZSYgcHJv
cGVydHkgPSBtYXRlcmlhbGl6YXRpb24tPnByb3BlcnRpZXMoKVtpXTsKICAgICAgICAgICAgICAg
ICBpZiAocHJvcGVydHkubG9jYXRpb24oKSAhPSBQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRvcihB
cmd1bWVudENvdW50UExvYykpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgICAgIGFyZ3VtZW50Q291bnQgPSBKU1ZhbHVlOjpkZWNv
ZGUodmFsdWVzW2ldKS5hc1VJbnQzMigpOworICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KGFyZ3VtZW50Q291bnQpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQor
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoYXJndW1lbnRDb3VudCk7CiAgICAgICAgIH0gZWxz
ZQogICAgICAgICAgICAgYXJndW1lbnRDb3VudCA9IG1hdGVyaWFsaXphdGlvbi0+b3JpZ2luKCku
aW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpOwotICAgICAgICBSRUxFQVNFX0FTU0VS
VChhcmd1bWVudENvdW50KTsKICAgICAgICAgCiAgICAgICAgIEpTRnVuY3Rpb24qIGNhbGxlZSA9
IG51bGxwdHI7CiAgICAgICAgIGlmIChtYXRlcmlhbGl6YXRpb24tPm9yaWdpbigpLmlubGluZUNh
bGxGcmFtZS0+aXNDbG9zdXJlQ2FsbCkgewpAQCAtMzQxLDU2ICszMzAsNiBAQCBleHRlcm4gIkMi
IEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25NYXRlcmlhbGl6ZU9iamVjdEluT1NSKAog
ICAgICAgICAgICAgCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9Ci0gICAg
ICAgIGNhc2UgUGhhbnRvbUNyZWF0ZVJlc3Q6IHsKLSAgICAgICAgICAgIHVuc2lnbmVkIG51bWJl
ck9mQXJndW1lbnRzVG9Ta2lwID0gY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgLSAxOwotICAg
ICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGNvZGVCbG9jay0+Z2xvYmFs
T2JqZWN0KCk7Ci0gICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVj
dC0+cmVzdFBhcmFtZXRlclN0cnVjdHVyZSgpOwotICAgICAgICAgICAgQVNTRVJUKGFyZ3VtZW50
Q291bnQgPiAwKTsKLSAgICAgICAgICAgIHVuc2lnbmVkIGFycmF5U2l6ZSA9IChhcmd1bWVudENv
dW50IC0gMSkgPiBudW1iZXJPZkFyZ3VtZW50c1RvU2tpcCA/IGFyZ3VtZW50Q291bnQgLSAxIC0g
bnVtYmVyT2ZBcmd1bWVudHNUb1NraXAgOiAwOwotICAgICAgICAgICAgSlNBcnJheSogYXJyYXkg
PSBKU0FycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHZtLCBzdHJ1Y3R1cmUsIGFycmF5U2l6
ZSk7Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChhcnJheSk7Ci0KLSAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IG1hdGVyaWFsaXphdGlvbi0+cHJvcGVydGllcygpLnNpemUoKTsgaS0t
OykgewotICAgICAgICAgICAgICAgIGNvbnN0IEV4aXRQcm9wZXJ0eVZhbHVlJiBwcm9wZXJ0eSA9
IG1hdGVyaWFsaXphdGlvbi0+cHJvcGVydGllcygpW2ldOwotICAgICAgICAgICAgICAgIGlmIChw
cm9wZXJ0eS5sb2NhdGlvbigpLmtpbmQoKSAhPSBBcmd1bWVudFBMb2MpCi0gICAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICAgICAgdW5zaWduZWQgYXJnSW5kZXggPSBw
cm9wZXJ0eS5sb2NhdGlvbigpLmluZm8oKTsKLSAgICAgICAgICAgICAgICBpZiAobnVtYmVyT2ZB
cmd1bWVudHNUb1NraXAgPiBhcmdJbmRleCkKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7
Ci0gICAgICAgICAgICAgICAgdW5zaWduZWQgYXJyYXlJbmRleCA9IGFyZ0luZGV4IC0gbnVtYmVy
T2ZBcmd1bWVudHNUb1NraXA7Ci0gICAgICAgICAgICAgICAgaWYgKGFycmF5SW5kZXggPj0gYXJy
YXlTaXplKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICBh
cnJheS0+aW5pdGlhbGl6ZUluZGV4KHZtLCBhcnJheUluZGV4LCBKU1ZhbHVlOjpkZWNvZGUodmFs
dWVzW2ldKSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmICghQVNTRVJUX0RJU0FC
TEVEKSB7Ci0gICAgICAgICAgICAgICAgLy8gV2UgYXZvaWQgdGhpcyBPKG5eMikgbG9vcCB3aGVu
IGFzc2VydHMgYXJlIGRpc2FibGVkLCBidXQgdGhlIGNvbmRpdGlvbiBjaGVja2VkIGhlcmUKLSAg
ICAgICAgICAgICAgICAvLyBtdXN0IGhvbGQgdG8gZW5zdXJlIHRoZSBjb3JyZWN0bmVzcyBvZiB0
aGUgYWJvdmUgbG9vcCBiZWNhdXNlIG9mIGhvdyB3ZSBhbGxvY2F0ZSB0aGUgYXJyYXkuCi0gICAg
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCB0YXJnZXRJbmRleCA9IDA7IHRhcmdldEluZGV4IDwg
YXJyYXlTaXplOyArK3RhcmdldEluZGV4KSB7Ci0gICAgICAgICAgICAgICAgICAgIGJvb2wgZm91
bmQgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbWF0ZXJp
YWxpemF0aW9uLT5wcm9wZXJ0aWVzKCkuc2l6ZSgpOyBpLS07KSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBFeGl0UHJvcGVydHlWYWx1ZSYgcHJvcGVydHkgPSBtYXRlcmlhbGl6YXRp
b24tPnByb3BlcnRpZXMoKVtpXTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwcm9wZXJ0
eS5sb2NhdGlvbigpLmtpbmQoKSAhPSBBcmd1bWVudFBMb2MpCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGFy
Z0luZGV4ID0gcHJvcGVydHkubG9jYXRpb24oKS5pbmZvKCk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBpZiAobnVtYmVyT2ZBcmd1bWVudHNUb1NraXAgPiBhcmdJbmRleCkKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGFycmF5SW5kZXggPSBhcmdJbmRleCAtIG51bWJlck9mQXJndW1lbnRzVG9Ta2lwOwotICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKGFycmF5SW5kZXggPj0gYXJyYXlTaXplKQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKGFycmF5SW5kZXggPT0gdGFyZ2V0SW5kZXgpIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmb3VuZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChmb3VuZCwgZm91bmQpOwotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgcmV0dXJuIGFycmF5OwotICAgICAgICB9
CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1NldHVwVmFyYXJnc0ZyYW1lLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvU2V0dXBWYXJhcmdzRnJhbWUuY3BwCmluZGV4IGQyZDQ1MTVmNjEwNzJlNTM3MmFj
ZDU0NTZkODE5YjRiNzEzNTFiMzUuLjE5NGU5Nzk2OTQ5YzA4MWQ2ODIxZTdhYzRhNTE5MTg5Mjhm
MmE0ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2V0dXBWYXJhcmdz
RnJhbWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2V0dXBWYXJhcmdzRnJh
bWUuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIHZvaWQgZW1pdFNldFZhcmFyZ3NGcmFtZShDQ2FsbEhl
bHBlcnMmIGppdCwgR1BSUmVnIGxlbmd0aEdQUiwgYm9vbCBsZW5ndGhJbmNsdWRlCiAgICAgaml0
LmFuZFB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMih+KHN0YWNrQWxpZ25tZW50UmVnaXN0
ZXJzKCkgLSAxKSksIHJlc3VsdEdQUik7CiAKICAgICBqaXQuYWRkUHRyKGxlbmd0aEdQUiwgcmVz
dWx0R1BSKTsKLSAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKENhbGxG
cmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzICsgKGxlbmd0aEluY2x1ZGVzVGhpcyA/IDAgOiAx
KSksIHJlc3VsdEdQUik7CisgICAgaml0LmFkZFB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0z
MihDYWxsRnJhbWU6OmhlYWRlclNpemVJblJlZ2lzdGVycyArIChsZW5ndGhJbmNsdWRlc1RoaXM/
IDAgOiAxKSksIHJlc3VsdEdQUik7CiAgICAgCiAgICAgLy8gcmVzdWx0R1BSIG5vdyBoYXMgdGhl
IHJlcXVpcmVkIGZyYW1lIHNpemUgaW4gUmVnaXN0ZXIgdW5pdHMKICAgICAvLyBSb3VuZCByZXN1
bHRHUFIgdG8gbmV4dCBtdWx0aXBsZSBvZiBzdGFja0FsaWdubWVudFJlZ2lzdGVycygpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRl
eCA5ZjY0ZGEwZWU5YzcyMTE5ODAzMDUzNjQzNTgyYWMzNmQyY2YzNmQ5Li45NDdhZTg2OTVkYTY2
MDQxMGNlZDM2MzUzNTM4OTUzNzMxNjM5NTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKQEAgLTg1MSw3ICs4NTEsNyBAQCBTTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfY3JlYXRlX3Jlc3QpCiAgICAgQkVHSU4oKTsKICAgICB1bnNp
Z25lZCBhcnJheVNpemUgPSBPUF9DKDIpLmpzVmFsdWUoKS5hc1VJbnQzMigpOwogICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7Ci0g
ICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPnJlc3RQYXJhbWV0ZXJTdHJ1
Y3R1cmUoKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+YXJyYXlT
dHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0aENvbnRpZ3Vv
dXMpOwogICAgIHVuc2lnbmVkIG51bVBhcmFtc1RvU2tpcCA9IHBjWzNdLnUudW5zaWduZWRWYWx1
ZTsKICAgICBKU1ZhbHVlKiBhcmd1bWVudHNUb0NvcHlSZWdpb24gPSBleGVjLT5hZGRyZXNzT2ZB
cmd1bWVudHNTdGFydCgpICsgbnVtUGFyYW1zVG9Ta2lwOwogICAgIFJFVFVSTihjb25zdHJ1Y3RB
cnJheShleGVjLCBzdHJ1Y3R1cmUsIGFyZ3VtZW50c1RvQ29weVJlZ2lvbiwgYXJyYXlTaXplKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRl
eCBlYTU3NTA2Y2E1YTg3OThkZGIwZGRkMjVhZmRmODBlN2EwZWE2YjEyLi4wMWVjMzQxZmQyNTIx
OWJiODRmMTU1ZDY1YTc3Y2JjY2I3Mjc4ZmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTYyMyw3ICs2MjMsNiBAQCBwdWJsaWM6CiAg
ICAgU3RydWN0dXJlKiBjYWxsYWJsZVByb3h5T2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1
cm4gbV9jYWxsYWJsZVByb3h5T2JqZWN0U3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJl
KiBwcm94eVJldm9rZVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJveHlSZXZva2VTdHJ1
Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIG1vZHVsZUxvYWRlclN0cnVjdHVyZSgpIGNv
bnN0IHsgcmV0dXJuIG1fbW9kdWxlTG9hZGVyU3RydWN0dXJlLmdldCgpOyB9Ci0gICAgU3RydWN0
dXJlKiByZXN0UGFyYW1ldGVyU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gYXJyYXlTdHJ1Y3R1
cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0aENvbnRpZ3VvdXMpOyB9
CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHNldFJlbW90ZURlYnVnZ2luZ0VuYWJsZWQo
Ym9vbCk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCByZW1vdGVEZWJ1Z2dpbmdFbmFibGVk
KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdl
TG9nCmluZGV4IGQ5NjYxMzAzODkxNjlmMzQ2NDYzOWMwYWU1MDYzZTZjZmY4ODE0ZjQuLjJmMDI2
ODU4OWEzZmZhMWZmNDdkMWUxOTQzNzBiZjQ4MmNlYzVlYzAgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMv
Q2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTYt
MTEtMDEgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgorCisgICAgICAg
IFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMDgyMDggYW5kIHIyMDgyMTAuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQyNzYKKworICAgICAgICBU
aGlzIGNoYW5nZSBjYXVzZWQgMjggSlNDIHRlc3QgZmFpbHVyZXMuIChSZXF1ZXN0ZWQgYnkKKyAg
ICAgICAgcnlhbmhhZGRhZCBvbiAjd2Via2l0KS4KKworICAgICAgICBSZXZlcnRlZCBjaGFuZ2Vz
ZXRzOgorCisgICAgICAgICJXZSBzaG91bGQgYmUgYWJsZSB0byBlbGltaW5hdGUgcmVzdCBwYXJh
bWV0ZXIgYWxsb2NhdGlvbnMiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNjM5MjUKKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2Vz
ZXQvMjA4MjA4CisKKyAgICAgICAgIkZpeCB0aGUgRUZMIGJ1aWxkLiIKKyAgICAgICAgaHR0cDov
L3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjA4MjEwCisKIDIwMTYtMTAtMzEgIEZpbGlwIFBp
emxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBKU0Mgc2hvdWxkIHN1cHBvcnQgU2hh
cmVkQXJyYXlCdWZmZXIKZGlmZiAtLWdpdCBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL3Jlc3Qt
cGFyYW1ldGVyLWFsbG9jYXRpb24tZWxpbWluYXRpb24uanMgYi9KU1Rlc3RzL21pY3JvYmVuY2ht
YXJrcy9yZXN0LXBhcmFtZXRlci1hbGxvY2F0aW9uLWVsaW1pbmF0aW9uLmpzCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBkMzY5ZTMzYmQ3OGJmMzQ1MGU4NjA5ZTg5NjJmYzQ2NmZlNzVm
OWQ2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0pTVGVz
dHMvbWljcm9iZW5jaG1hcmtzL3Jlc3QtcGFyYW1ldGVyLWFsbG9jYXRpb24tZWxpbWluYXRpb24u
anMKKysrIC9kZXYvbnVsbApAQCAtMSw2MTMgKzAsMCBAQAotZnVuY3Rpb24gYXNzZXJ0KGIsIG0g
PSAiIikgewotICAgIGlmICghYikKLSAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQgYXNzZXJ0
aW9uOiAiICsgbSk7Ci19Ci1ub0lubGluZShhc3NlcnQpOwotCi1jb25zdCBpdGVyYXRpb25zID0g
MjAwMDA7Ci0KLWZ1bmN0aW9uIHRlc3QxKCkgewotICAgIGZ1bmN0aW9uIGJhcihhLCBiLCAuLi5h
cmdzKSB7Ci0gICAgICAgIHJldHVybiBhcmdzLmxlbmd0aDsKLSAgICB9Ci0gICAgbm9JbmxpbmUo
YmFyKTsKLSAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZXJhdGlvbnM7IGkrKykgewotICAgICAg
ICBhc3NlcnQoYmFyKCkgPT09IDAsIGJhcigpKTsKLSAgICAgICAgYXNzZXJ0KGJhcihpKSA9PT0g
MCk7Ci0gICAgICAgIGFzc2VydChiYXIoaSwgaSkgPT09IDApOwotICAgICAgICBhc3NlcnQoYmFy
KGksIGksIGkpID09PSAxKTsKLSAgICAgICAgYXNzZXJ0KGJhcihpLCBpLCBpLCBpLCBpKSA9PT0g
Myk7Ci0gICAgfQotfQotCi1mdW5jdGlvbiBzaGFsbG93RXEoYSwgYikgewotICAgIGlmIChhLmxl
bmd0aCAhPT0gYi5sZW5ndGgpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBmb3IgKGxldCBp
ID0gMDsgaSA8IGEubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgaWYgKGEubGVuZ3RoICE9PSBiLmxl
bmd0aCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7
Ci19Ci1ub0lubGluZShzaGFsbG93RXEpOwotCi1mdW5jdGlvbiB0ZXN0MigpIHsKLSAgICBmdW5j
dGlvbiBqYXooYSwgYiwgLi4uYXJncykgewotICAgICAgICBsZXQgcmVzdWx0ID0gW107Ci0gICAg
ICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJncy5sZW5ndGg7IGkrKykgewotICAgICAgICAgICAg
cmVzdWx0LnB1c2goYXJnc1tpXSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHJlc3VsdDsK
LSAgICB9Ci0gICAgbm9JbmxpbmUoamF6KTsKLQotICAgIGZ1bmN0aW9uIGphejIoLi4uYXJncykg
ewotICAgICAgICBmdW5jdGlvbiBrYXooYSwgYiwgLi4uYXJncykgewotICAgICAgICAgICAgbGV0
IHJlc3VsdCA9IFtdOwotICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcmdzLmxlbmd0
aDsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goYXJnc1tpXSk7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICB9Ci0gICAgICAgIHJl
dHVybiBrYXouYXBwbHkobnVsbCwgYXJncyk7Ci0gICAgfQotICAgIG5vSW5saW5lKGphejIpOwot
Ci0gICAgZm9yIChsZXQgZiBvZiBbamF6LCBqYXoyXSkgewotICAgICAgICBmb3IgKGxldCBpID0g
MDsgaSA8IGl0ZXJhdGlvbnM7IGkrKykgewotICAgICAgICAgICAgbGV0IHIgPSBmKCk7Ci0gICAg
ICAgICAgICBhc3NlcnQoIXIubGVuZ3RoKTsKLQotICAgICAgICAgICAgciA9IGYoaSk7Ci0gICAg
ICAgICAgICBhc3NlcnQoIXIubGVuZ3RoKTsKLQotICAgICAgICAgICAgciA9IGYoaSwgaSkKLSAg
ICAgICAgICAgIGFzc2VydCghci5sZW5ndGgpOwotCi0gICAgICAgICAgICByID0gZihpLCBpLCBp
KQotICAgICAgICAgICAgYXNzZXJ0KHIubGVuZ3RoID09PSAxKTsKLSAgICAgICAgICAgIGFzc2Vy
dChzaGFsbG93RXEociwgW2ldKSk7Ci0KLSAgICAgICAgICAgIHIgPSBmKGksIGksIGkpCi0gICAg
ICAgICAgICBhc3NlcnQoci5sZW5ndGggPT09IDEpOwotICAgICAgICAgICAgYXNzZXJ0KHNoYWxs
b3dFcShyLCBbaV0pKTsKLQotICAgICAgICAgICAgciA9IGYoaSwgaSwgaSwgaSoyLCBpKjQpCi0g
ICAgICAgICAgICBhc3NlcnQoci5sZW5ndGggPT09IDMpOwotICAgICAgICAgICAgYXNzZXJ0KHNo
YWxsb3dFcShyLCBbaSwgaSoyLCBpKjRdKSk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLWZ1bmN0
aW9uIHRlc3QzKCkgewotICAgIGZ1bmN0aW9uIGZvbyguLi5hcmdzKSB7Ci0gICAgICAgIHJldHVy
biBhcmdzOwotICAgIH0KLSAgICBmdW5jdGlvbiBiYXooYSwgYiwgYywgLi4uYXJncykgewotICAg
ICAgICByZXR1cm4gZm9vLmFwcGx5KG51bGwsIGFyZ3MpOwotICAgIH0KLSAgICBmdW5jdGlvbiBq
YXooYSwgYiwgYywgZCwgZSwgZikgewotICAgICAgICByZXR1cm4gYmF6KGEsIGIsIGMsIGQsIGUs
IGYpOwotICAgIH0KLSAgICBub0lubGluZShqYXopOwotCi0gICAgZm9yIChsZXQgaSA9IDA7IGkg
PCBpdGVyYXRpb25zOyBpKyspIHsKLSAgICAgICAgbGV0IHIgPSBqYXooKTsKLSAgICAgICAgYXNz
ZXJ0KHIubGVuZ3RoID09PSAzKTsKLSAgICAgICAgYXNzZXJ0KHNoYWxsb3dFcShyLCBbdW5kZWZp
bmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZF0pKTsKLQotICAgICAgICByID0gamF6KGksIGkpOwot
ICAgICAgICBhc3NlcnQoci5sZW5ndGggPT09IDMpOwotICAgICAgICBhc3NlcnQoc2hhbGxvd0Vx
KHIsIFt1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkXSkpOwotCi0gICAgICAgIHIgPSBq
YXooaSwgaSwgaSk7Ci0gICAgICAgIGFzc2VydChyLmxlbmd0aCA9PT0gMyk7Ci0gICAgICAgIGFz
c2VydChzaGFsbG93RXEociwgW3VuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWRdKSk7Ci0K
LSAgICAgICAgciA9IGpheihpLCBpLCBpLCBpKTsKLSAgICAgICAgYXNzZXJ0KHIubGVuZ3RoID09
PSAzKTsKLSAgICAgICAgYXNzZXJ0KHNoYWxsb3dFcShyLCBbaSwgdW5kZWZpbmVkLCB1bmRlZmlu
ZWRdKSk7Ci0KLSAgICAgICAgciA9IGpheihpLCBpLCBpLCBpLCBpLCBpKTsKLSAgICAgICAgYXNz
ZXJ0KHIubGVuZ3RoID09PSAzKTsKLSAgICAgICAgYXNzZXJ0KHNoYWxsb3dFcShyLCBbaSwgaSwg
aV0pKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHRlc3Q0KCkgewotICAgIGZ1bmN0aW9uIGJheigu
Li5hcmdzKSB7Ci0gICAgICAgIHJldHVybiBhcmdzOwotICAgIH0KLSAgICBmdW5jdGlvbiBqYXoo
YSwgYiwgLi4uYXJncykgewotICAgICAgICByZXR1cm4gYmF6LmFwcGx5KG51bGwsIGFyZ3MpOwot
ICAgIH0KLSAgICBub0lubGluZShqYXopOwotCi0gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVy
YXRpb25zOyBpKyspIHsKLSAgICAgICAgbGV0IHIgPSBqYXooKTsKLSAgICAgICAgYXNzZXJ0KHIu
bGVuZ3RoID09PSAwKTsKLQotICAgICAgICByID0gamF6KGkpOwotICAgICAgICBhc3NlcnQoci5s
ZW5ndGggPT09IDApOwotCi0gICAgICAgIHIgPSBqYXooaSwgaSk7Ci0gICAgICAgIGFzc2VydChy
Lmxlbmd0aCA9PT0gMCk7Ci0KLSAgICAgICAgciA9IGpheihpLCBpLCBpKTsKLSAgICAgICAgYXNz
ZXJ0KHIubGVuZ3RoID09PSAxKTsKLSAgICAgICAgYXNzZXJ0KHNoYWxsb3dFcShyLCBbaV0pKTsK
LQotICAgICAgICByID0gamF6KGksIGksIGksIGkqMTApOwotICAgICAgICBhc3NlcnQoci5sZW5n
dGggPT09IDIpOwotICAgICAgICBhc3NlcnQoc2hhbGxvd0VxKHIsIFtpLCBpKjEwXSkpOwotCi0g
ICAgICAgIGxldCBvID0ge307Ci0gICAgICAgIHIgPSBqYXooaSwgaSwgaSwgaSoxMCwgbyk7Ci0g
ICAgICAgIGFzc2VydChyLmxlbmd0aCA9PT0gMyk7Ci0gICAgICAgIGFzc2VydChzaGFsbG93RXEo
ciwgW2ksIGkqMTAsIG9dKSk7Ci0gICAgfQotfQotCi1mdW5jdGlvbiB0ZXN0NSgpIHsKLSAgICBm
dW5jdGlvbiBiYXooLi4uYXJncykgewotICAgICAgICByZXR1cm4gYXJnczsKLSAgICB9Ci0gICAg
bm9JbmxpbmUoYmF6KTsKLSAgICBmdW5jdGlvbiBqYXooYSwgYiwgLi4uYXJncykgewotICAgICAg
ICByZXR1cm4gYmF6LmFwcGx5KG51bGwsIGFyZ3MpOwotICAgIH0KLSAgICBub0lubGluZShqYXop
OwotCi0gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVyYXRpb25zOyBpKyspIHsKLSAgICAgICAg
bGV0IHIgPSBqYXooKTsKLSAgICAgICAgYXNzZXJ0KHIubGVuZ3RoID09PSAwKTsKLQotICAgICAg
ICByID0gamF6KGkpOwotICAgICAgICBhc3NlcnQoci5sZW5ndGggPT09IDApOwotCi0gICAgICAg
IHIgPSBqYXooaSwgaSk7Ci0gICAgICAgIGFzc2VydChyLmxlbmd0aCA9PT0gMCk7Ci0KLSAgICAg
ICAgciA9IGpheihpLCBpLCBpKTsKLSAgICAgICAgYXNzZXJ0KHIubGVuZ3RoID09PSAxKTsKLSAg
ICAgICAgYXNzZXJ0KHNoYWxsb3dFcShyLCBbaV0pKTsKLQotICAgICAgICByID0gamF6KGksIGks
IGksIGkqMTApOwotICAgICAgICBhc3NlcnQoci5sZW5ndGggPT09IDIpOwotICAgICAgICBhc3Nl
cnQoc2hhbGxvd0VxKHIsIFtpLCBpKjEwXSkpOwotCi0gICAgICAgIGxldCBvID0ge307Ci0gICAg
ICAgIHIgPSBqYXooaSwgaSwgaSwgaSoxMCwgbyk7Ci0gICAgICAgIGFzc2VydChyLmxlbmd0aCA9
PT0gMyk7Ci0gICAgICAgIGFzc2VydChzaGFsbG93RXEociwgW2ksIGkqMTAsIG9dKSk7Ci0gICAg
fQotfQotCi1mdW5jdGlvbiB0ZXN0NigpIHsKLSAgICAidXNlIHN0cmljdCI7Ci0gICAgZnVuY3Rp
b24gYmF6KC4uLmFyZ3MpIHsKLSAgICAgICAgcmV0dXJuIGFyZ3M7Ci0gICAgfQotICAgIG5vSW5s
aW5lKGJheik7Ci0gICAgZnVuY3Rpb24gamF6KGEsIGIsIC4uLmFyZ3MpIHsKLSAgICAgICAgcmV0
dXJuIGJhei5hcHBseShudWxsLCBhcmdzKTsKLSAgICB9Ci0gICAgbm9JbmxpbmUoamF6KTsKLQot
ICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlcmF0aW9uczsgaSsrKSB7Ci0gICAgICAgIGxldCBy
ID0gamF6KCk7Ci0gICAgICAgIGFzc2VydChyLmxlbmd0aCA9PT0gMCk7Ci0KLSAgICAgICAgciA9
IGpheihpKTsKLSAgICAgICAgYXNzZXJ0KHIubGVuZ3RoID09PSAwKTsKLQotICAgICAgICByID0g
amF6KGksIGkpOwotICAgICAgICBhc3NlcnQoci5sZW5ndGggPT09IDApOwotCi0gICAgICAgIHIg
PSBqYXooaSwgaSwgaSk7Ci0gICAgICAgIGFzc2VydChyLmxlbmd0aCA9PT0gMSk7Ci0gICAgICAg
IGFzc2VydChzaGFsbG93RXEociwgW2ldKSk7Ci0KLSAgICAgICAgciA9IGpheihpLCBpLCBpLCBp
KjEwKTsKLSAgICAgICAgYXNzZXJ0KHIubGVuZ3RoID09PSAyKTsKLSAgICAgICAgYXNzZXJ0KHNo
YWxsb3dFcShyLCBbaSwgaSoxMF0pKTsKLQotICAgICAgICBsZXQgbyA9IHt9OwotICAgICAgICBy
ID0gamF6KGksIGksIGksIGkqMTAsIG8pOwotICAgICAgICBhc3NlcnQoci5sZW5ndGggPT09IDMp
OwotICAgICAgICBhc3NlcnQoc2hhbGxvd0VxKHIsIFtpLCBpKjEwLCBvXSkpOwotICAgIH0KLX0K
LQotZnVuY3Rpb24gdGVzdDcoKSB7Ci0gICAgbGV0IHNob3VsZEV4aXQgPSBmYWxzZTsKLSAgICBm
dW5jdGlvbiBiYXooLi4uYXJncykgewotICAgICAgICBpZiAoc2hvdWxkRXhpdCkgewotICAgICAg
ICAgICAgT1NSRXhpdCgpOwotICAgICAgICAgICAgcmV0dXJuIFthcmdzLmxlbmd0aCwgYXJnc1sw
XSwgYXJnc1sxXSwgYXJnc1syXV07Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIFthcmdzLmxl
bmd0aCwgYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXV07Ci0gICAgfQotICAgIGZ1bmN0aW9uIGph
eihhLCBiLCAuLi5hcmdzKSB7Ci0gICAgICAgIHJldHVybiBiYXouYXBwbHkobnVsbCwgYXJncyk7
Ci0gICAgfQotICAgIG5vSW5saW5lKGpheik7Ci0KLSAgICBmdW5jdGlvbiBjaGVjayhpKSB7Ci0g
ICAgICAgIGxldCBbbGVuZ3RoLCBhLCBiLCBjXSA9IGpheigpOwotICAgICAgICBhc3NlcnQobGVu
Z3RoID09PSAwKTsKLSAgICAgICAgYXNzZXJ0KGEgPT09IHVuZGVmaW5lZCk7Ci0gICAgICAgIGFz
c2VydChiID09PSB1bmRlZmluZWQpOwotICAgICAgICBhc3NlcnQoYyA9PT0gdW5kZWZpbmVkKTsK
LQotICAgICAgICBbbGVuZ3RoLCBhLCBiLCBjXSA9IGpheihpKTsKLSAgICAgICAgYXNzZXJ0KGxl
bmd0aCA9PT0gMCk7Ci0gICAgICAgIGFzc2VydChhID09PSB1bmRlZmluZWQpOwotICAgICAgICBh
c3NlcnQoYiA9PT0gdW5kZWZpbmVkKTsKLSAgICAgICAgYXNzZXJ0KGMgPT09IHVuZGVmaW5lZCk7
Ci0KLSAgICAgICAgW2xlbmd0aCwgYSwgYiwgY10gPSBqYXooaSwgaSk7Ci0gICAgICAgIGFzc2Vy
dChsZW5ndGggPT09IDApOwotICAgICAgICBhc3NlcnQoYSA9PT0gdW5kZWZpbmVkKTsKLSAgICAg
ICAgYXNzZXJ0KGIgPT09IHVuZGVmaW5lZCk7Ci0gICAgICAgIGFzc2VydChjID09PSB1bmRlZmlu
ZWQpOwotCi0gICAgICAgIFtsZW5ndGgsIGEsIGIsIGNdID0gamF6KGksIGksIGkpOwotICAgICAg
ICBhc3NlcnQobGVuZ3RoID09PSAxKTsKLSAgICAgICAgYXNzZXJ0KGEgPT09IGksIEpTT04uc3Ry
aW5naWZ5KGEpKTsKLSAgICAgICAgYXNzZXJ0KGIgPT09IHVuZGVmaW5lZCk7Ci0gICAgICAgIGFz
c2VydChjID09PSB1bmRlZmluZWQpOwotCi0gICAgICAgIFtsZW5ndGgsIGEsIGIsIGNdID0gamF6
KGksIGksIGksIGkqMTApOwotICAgICAgICBhc3NlcnQobGVuZ3RoID09PSAyKTsKLSAgICAgICAg
YXNzZXJ0KGEgPT09IGkpOwotICAgICAgICBhc3NlcnQoYiA9PT0gaSoxMCk7Ci0gICAgICAgIGFz
c2VydChjID09PSB1bmRlZmluZWQpOwotCi0gICAgICAgIGxldCBvID0ge29vb286MjB9OwotICAg
ICAgICBbbGVuZ3RoLCBhLCBiLCBjXSA9IGpheihpLCBpLCBpLCBpKjEwLCBvKTsKLSAgICAgICAg
YXNzZXJ0KGxlbmd0aCA9PT0gMyk7Ci0gICAgICAgIGFzc2VydChhID09PSBpKTsKLSAgICAgICAg
YXNzZXJ0KGIgPT09IGkqMTApOwotICAgICAgICBhc3NlcnQoYyA9PT0gbyk7Ci0gICAgfQotCi0g
ICAgc2hvdWxkRXhpdCA9IHRydWU7Ci0gICAgZm9yIChsZXQgaSA9IDA7IGkgPCA0MDA7IGkrKykg
ewotICAgICAgICBjaGVjayhpKTsKLSAgICB9Ci0KLSAgICBzaG91bGRFeGl0ID0gZmFsc2U7Ci0g
ICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVyYXRpb25zOyBpKyspIHsKLSAgICAgICAgY2hlY2so
aSk7Ci0gICAgfQotCi0gICAgc2hvdWxkRXhpdCA9IGZhbHNlOwotICAgIGNoZWNrKDEwKTsKLX0K
LQotZnVuY3Rpb24gdGVzdDgoKSB7Ci0gICAgbGV0IHNob3VsZEV4aXQgPSBmYWxzZTsKLSAgICBm
dW5jdGlvbiBiYXooLi4uYXJncykgewotICAgICAgICBpZiAoc2hvdWxkRXhpdCkgewotICAgICAg
ICAgICAgT1NSRXhpdCgpOwotICAgICAgICAgICAgcmV0dXJuIGFyZ3M7Ci0gICAgICAgIH0KLSAg
ICAgICAgcmV0dXJuIGFyZ3M7Ci0gICAgfQotICAgIGZ1bmN0aW9uIGpheihhLCBiLCAuLi5hcmdz
KSB7Ci0gICAgICAgIHJldHVybiBiYXouYXBwbHkobnVsbCwgYXJncyk7Ci0gICAgfQotICAgIG5v
SW5saW5lKGpheik7Ci0KLSAgICBmdW5jdGlvbiBjaGVjayhpKSB7Ci0gICAgICAgIGxldCBhcmdz
ID0gamF6KCk7Ci0gICAgICAgIGFzc2VydChhcmdzLmxlbmd0aCA9PT0gMCk7Ci0KLSAgICAgICAg
YXJncyA9IGpheihpKTsKLSAgICAgICAgYXNzZXJ0KGFyZ3MubGVuZ3RoID09PSAwKTsKLQotICAg
ICAgICBhcmdzID0gamF6KGksIGkpOwotICAgICAgICBhc3NlcnQoYXJncy5sZW5ndGggPT09IDAp
OwotCi0gICAgICAgIGFyZ3MgPSBqYXooaSwgaSwgaSk7Ci0gICAgICAgIGFzc2VydChhcmdzLmxl
bmd0aCA9PT0gMSk7Ci0gICAgICAgIGFzc2VydChhcmdzWzBdID09PSBpKTsKLQotICAgICAgICBh
cmdzID0gamF6KGksIGksIGksIGkqMTApOwotICAgICAgICBhc3NlcnQoYXJncy5sZW5ndGggPT09
IDIpOwotICAgICAgICBhc3NlcnQoYXJnc1swXSA9PT0gaSk7Ci0gICAgICAgIGFzc2VydChhcmdz
WzFdID09PSBpKjEwKTsKLQotICAgICAgICBsZXQgbyA9IHtvb29vOjIwfTsKLSAgICAgICAgYXJn
cyA9IGpheihpLCBpLCBpLCBpKjEwLCBvKTsKLSAgICAgICAgYXNzZXJ0KGFyZ3MubGVuZ3RoID09
PSAzKTsKLSAgICAgICAgYXNzZXJ0KGFyZ3NbMF0gPT09IGkpOwotICAgICAgICBhc3NlcnQoYXJn
c1sxXSA9PT0gaSoxMCk7Ci0gICAgICAgIGFzc2VydChhcmdzWzJdID09PSBvKTsKLSAgICB9Ci0K
LSAgICBzaG91bGRFeGl0ID0gdHJ1ZTsKLSAgICBmb3IgKGxldCBpID0gMDsgaSA8IDQwMDsgaSsr
KSB7Ci0gICAgICAgIGNoZWNrKGkpOwotICAgIH0KLQotICAgIHNob3VsZEV4aXQgPSBmYWxzZTsK
LSAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZXJhdGlvbnM7IGkrKykgewotICAgICAgICBjaGVj
ayhpKTsKLSAgICB9Ci0KLSAgICBzaG91bGRFeGl0ID0gZmFsc2U7Ci0gICAgY2hlY2soMTApOwot
fQotCi1mdW5jdGlvbiB0ZXN0OSgpIHsKLSAgICBsZXQgc2hvdWxkRXhpdCA9IGZhbHNlOwotICAg
IGZ1bmN0aW9uIGJheihhLCAuLi5hcmdzKSB7Ci0gICAgICAgIGlmIChzaG91bGRFeGl0KSB7Ci0g
ICAgICAgICAgICBPU1JFeGl0KCk7Ci0gICAgICAgICAgICByZXR1cm4gW2FyZ3MubGVuZ3RoLCBh
cmdzWzBdLCBhcmdzWzFdXTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gW2FyZ3MubGVuZ3Ro
LCBhcmdzWzBdLCBhcmdzWzFdXTsKLSAgICB9Ci0gICAgZnVuY3Rpb24gamF6KC4uLmFyZ3MpIHsK
LSAgICAgICAgcmV0dXJuIGJhei5hcHBseShudWxsLCBhcmdzKTsKLSAgICB9Ci0gICAgbm9Jbmxp
bmUoamF6KTsKLQotICAgIGZ1bmN0aW9uIGNoZWNrKGkpIHsKLSAgICAgICAgbGV0IFtsZW5ndGgs
IGEsIGJdID0gamF6KCk7Ci0gICAgICAgIGFzc2VydChsZW5ndGggPT09IDApOwotCi0gICAgICAg
IFtsZW5ndGgsIGEsIGJdID0gamF6KGkpOwotICAgICAgICBhc3NlcnQobGVuZ3RoID09PSAwKTsK
LSAgICAgICAgYXNzZXJ0KGEgPT09IHVuZGVmaW5lZCk7Ci0gICAgICAgIGFzc2VydChiID09PSB1
bmRlZmluZWQpOwotCi0gICAgICAgIFtsZW5ndGgsIGEsIGJdID0gamF6KGksIGkgKyAxKTsKLSAg
ICAgICAgYXNzZXJ0KGxlbmd0aCA9PT0gMSk7Ci0gICAgICAgIGFzc2VydChhID09PSBpKzEpOwot
ICAgICAgICBhc3NlcnQoYiA9PT0gdW5kZWZpbmVkKTsKLQotICAgICAgICBbbGVuZ3RoLCBhLCBi
XSA9IGpheihpLCBpKzEsIGkrMik7Ci0gICAgICAgIGFzc2VydChsZW5ndGggPT09IDIpOwotICAg
ICAgICBhc3NlcnQoYSA9PT0gaSsxKTsKLSAgICAgICAgYXNzZXJ0KGIgPT09IGkrMik7Ci0KLSAg
ICAgICAgbGV0IG8gPSB7b29vbzoyMH07Ci0gICAgICAgIFtsZW5ndGgsIGEsIGJdID0gamF6KGks
IGkrMSwgbyk7Ci0gICAgICAgIGFzc2VydChsZW5ndGggPT09IDIpOwotICAgICAgICBhc3NlcnQo
YSA9PT0gaSsxKTsKLSAgICAgICAgYXNzZXJ0KGIgPT09IG8pOwotICAgIH0KLQotICAgIHNob3Vs
ZEV4aXQgPSB0cnVlOwotICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNDAwOyBpKyspIHsKLSAgICAg
ICAgY2hlY2soaSk7Ci0gICAgfQotCi0gICAgc2hvdWxkRXhpdCA9IGZhbHNlOwotICAgIGZvciAo
bGV0IGkgPSAwOyBpIDwgaXRlcmF0aW9uczsgaSsrKSB7Ci0gICAgICAgIGNoZWNrKGkpOwotICAg
IH0KLQotICAgIHNob3VsZEV4aXQgPSBmYWxzZTsKLSAgICBjaGVjaygxMCk7Ci19Ci0KLWZ1bmN0
aW9uIHRlc3QxMCgpIHsKLSAgICBmdW5jdGlvbiBiYXooYSwgYiwgYywgLi4uYXJncykgewotICAg
ICAgICByZXR1cm4gW2FyZ3MubGVuZ3RoLCBhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdLCBhcmdz
WzNdXTsKLSAgICB9Ci0gICAgZnVuY3Rpb24gamF6KGEsIGIsIGMsIGQsIGUsIGYpIHsKLSAgICAg
ICAgcmV0dXJuIGJheihhLCBiLCBjLCBkLCBlLCBmKTsKLSAgICB9Ci0gICAgbm9JbmxpbmUoamF6
KTsKLQotICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlcmF0aW9uczsgaSsrKSB7Ci0gICAgICAg
IGxldCBbbGVuZ3RoLCBhLCBiLCBjLCBkXSA9IGpheigxLCAyLCAzLCA0LCA1LCA2KTsKLSAgICAg
ICAgYXNzZXJ0KGxlbmd0aCA9PT0gMyk7Ci0gICAgICAgIGFzc2VydChhID09PSA0KTsKLSAgICAg
ICAgYXNzZXJ0KGIgPT09IDUpOwotICAgICAgICBhc3NlcnQoYyA9PT0gNik7Ci0gICAgICAgIGFz
c2VydChkID09PSB1bmRlZmluZWQpOwotICAgIH0KLX0KLQotZnVuY3Rpb24gdGVzdDExKCkgewot
ICAgIGZ1bmN0aW9uIGJhciguLi5hcmdzKSB7Ci0gICAgICAgIHJldHVybiBhcmdzOwotICAgIH0K
LSAgICBub0lubGluZShiYXIpOwotCi0gICAgZnVuY3Rpb24gZm9vKGEsIGIsIGMsIGQsIC4uLmFy
Z3MpIHsKLSAgICAgICAgcmV0dXJuIGJhci5hcHBseShudWxsLCBhcmdzKTsKLSAgICB9Ci0gICAg
bm9JbmxpbmUoZm9vKTsKLQotICAgIGZ1bmN0aW9uIG1ha2VBcmd1bWVudHMoYXJncykgewotICAg
ICAgICByZXR1cm4gWzEsMiwzLDQsIC4uLmFyZ3NdOwotICAgIH0KLSAgICBmb3IgKGxldCBpID0g
MDsgaSA8IGl0ZXJhdGlvbnM7IGkrKykgewotICAgICAgICBmdW5jdGlvbiB0ZXN0KCkgeyBhc3Nl
cnQoc2hhbGxvd0VxKGEsIGZvby5hcHBseShudWxsLCBtYWtlQXJndW1lbnRzKGEpKSkpOyB9Ci0g
ICAgICAgIGxldCBhID0gW3t9LCAyNSwgNTBdOwotICAgICAgICB0ZXN0KCk7Ci0KLSAgICAgICAg
YSA9IFtdOwotICAgICAgICB0ZXN0KCk7Ci0KLSAgICAgICAgYSA9IFt7Zm9vOiAyMH1dOwotICAg
ICAgICB0ZXN0KCk7Ci0KLSAgICAgICAgYSA9IFsxMCwgMjAsIDMwLCA0MCwgNTAsIDYwLCA3MCwg
ODBdOwotICAgICAgICB0ZXN0KCk7Ci0gICAgfQotfQotCi1mdW5jdGlvbiB0ZXN0MTIoKSB7Ci0g
ICAgInVzZSBzdHJpY3QiOwotICAgIGxldCB0aGlzVmFsdWUgPSB7fTsKLSAgICBmdW5jdGlvbiBn
ZXRUaGlzVmFsdWUoKSB7IHJldHVybiB0aGlzVmFsdWU7IH0KLSAgICBub0lubGluZShnZXRUaGlz
VmFsdWUpOwotCi0gICAgZnVuY3Rpb24gYmFyKC4uLmFyZ3MpIHsKLSAgICAgICAgYXNzZXJ0KHRo
aXMgPT09IHRoaXNWYWx1ZSk7Ci0gICAgICAgIHJldHVybiBhcmdzOwotICAgIH0KLSAgICBub0lu
bGluZShiYXIpOwotCi0gICAgZnVuY3Rpb24gZm9vKGEsIGIsIGMsIGQsIC4uLmFyZ3MpIHsKLSAg
ICAgICAgcmV0dXJuIGJhci5hcHBseShnZXRUaGlzVmFsdWUoKSwgYXJncyk7Ci0gICAgfQotICAg
IG5vSW5saW5lKGZvbyk7Ci0KLSAgICBmdW5jdGlvbiBtYWtlQXJndW1lbnRzKGFyZ3MpIHsKLSAg
ICAgICAgcmV0dXJuIFsxLDIsMyw0LCAuLi5hcmdzXTsKLSAgICB9Ci0gICAgZm9yIChsZXQgaSA9
IDA7IGkgPCBpdGVyYXRpb25zOyBpKyspIHsKLSAgICAgICAgZnVuY3Rpb24gdGVzdCgpIHsgYXNz
ZXJ0KHNoYWxsb3dFcShhLCBmb28uYXBwbHkobnVsbCwgbWFrZUFyZ3VtZW50cyhhKSkpKTsgfQot
ICAgICAgICBsZXQgYSA9IFt7fSwgMjUsIDUwXTsKLSAgICAgICAgdGVzdCgpOwotCi0gICAgICAg
IGEgPSBbXTsKLSAgICAgICAgdGVzdCgpOwotCi0gICAgICAgIGEgPSBbe2ZvbzogMjB9XTsKLSAg
ICAgICAgdGVzdCgpOwotCi0gICAgICAgIGEgPSBbMTAsIDIwLCAzMCwgNDAsIDUwLCA2MCwgNzAs
IDgwXTsKLSAgICAgICAgdGVzdCgpOwotICAgIH0KLX0KLQotZnVuY3Rpb24gdGVzdDEzKCkgewot
ICAgICJ1c2Ugc3RyaWN0IjsKLSAgICBmdW5jdGlvbiBiYXIoLi4uYXJncykgewotICAgICAgICBy
ZXR1cm4gYXJnczsKLSAgICB9Ci0gICAgbm9JbmxpbmUoYmFyKTsKLQotICAgIGZ1bmN0aW9uIHRv
cChhLCBiLCBjLCBkLCAuLi5hcmdzKSB7Ci0gICAgICAgIHJldHVybiBiYXIuYXBwbHkobnVsbCwg
YXJncyk7Ci0gICAgfQotICAgIGZ1bmN0aW9uIGZvbyguLi5hcmdzKSB7Ci0gICAgICAgIGxldCBy
ID0gdG9wLmFwcGx5KG51bGwsIGFyZ3MpOwotICAgICAgICByZXR1cm4gcjsKLSAgICB9Ci0gICAg
bm9JbmxpbmUoZm9vKTsKLQotICAgIGZ1bmN0aW9uIG1ha2VBcmd1bWVudHMoYXJncykgewotICAg
ICAgICByZXR1cm4gWzEsMiwzLDQsIC4uLmFyZ3NdOwotICAgIH0KLSAgICBmb3IgKGxldCBpID0g
MDsgaSA8IGl0ZXJhdGlvbnM7IGkrKykgewotICAgICAgICBmdW5jdGlvbiB0ZXN0KCkgeyBhc3Nl
cnQoc2hhbGxvd0VxKGEsIGZvby5hcHBseShudWxsLCBtYWtlQXJndW1lbnRzKGEpKSkpOyB9Ci0g
ICAgICAgIGxldCBhID0gW3t9LCAyNSwgNTBdOwotICAgICAgICB0ZXN0KCk7Ci0KLSAgICAgICAg
YSA9IFtdOwotICAgICAgICB0ZXN0KCk7Ci0KLSAgICAgICAgYSA9IFsxMCwgMjAsIDMwLCA0MCwg
NTAsIDYwLCA3MCwgODBdOwotICAgICAgICB0ZXN0KCk7Ci0gICAgfQotfQotCi1mdW5jdGlvbiB0
ZXN0MTQoKSB7Ci0gICAgInVzZSBzdHJpY3QiOwotICAgIGZ1bmN0aW9uIGJhciguLi5hcmdzKSB7
Ci0gICAgICAgIHJldHVybiBhcmdzOwotICAgIH0KLSAgICBub0lubGluZShiYXIpOwotCi0gICAg
ZnVuY3Rpb24gdG9wKGEsIGIsIGMsIGQsIC4uLmFyZ3MpIHsKLSAgICAgICAgcmV0dXJuIGJhci5h
cHBseShudWxsLCBhcmdzKTsKLSAgICB9Ci0gICAgZnVuY3Rpb24gZm9vKGExLCBhMiwgYTMsIGE0
LCBhNSwgYTYsIGE3LCBhOCwgYTksIGExMCwgYTExLCBhMTIsIGExMywgYTE0LCBhMTUsIGExNiwg
YTE3KSB7Ci0gICAgICAgIHJldHVybiB0b3AoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4
LCBhOSwgYTEwLCBhMTEsIGExMiwgYTEzLCBhMTQsIGExNSwgYTE2LCBhMTcpOwotICAgIH0KLSAg
ICBub0lubGluZShmb28pOwotCi0gICAgZnVuY3Rpb24gbWFrZUFyZ3VtZW50cyhhcmdzKSB7Ci0g
ICAgICAgIGxldCByID0gWzEsMiwzLDQsIC4uLmFyZ3NdOwotICAgICAgICB3aGlsZSAoci5sZW5n
dGggPCBmb28ubGVuZ3RoKQotICAgICAgICAgICAgci5wdXNoKHVuZGVmaW5lZCk7Ci0gICAgICAg
IHJldHVybiByOwotICAgIH0KLSAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZXJhdGlvbnM7IGkr
KykgewotICAgICAgICBmdW5jdGlvbiB0ZXN0KCkKLSAgICAgICAgewotICAgICAgICAgICAgbGV0
IGFyZ3MgPSBtYWtlQXJndW1lbnRzKGEpOwotICAgICAgICAgICAgYXNzZXJ0KHNoYWxsb3dFcShh
cmdzLnNsaWNlKDQpLCBmb28uYXBwbHkobnVsbCwgYXJncykpKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIGxldCBhID0gW3t9LCAyNSwgNTBdOwotICAgICAgICB0ZXN0KCk7Ci0KLSAgICAgICAgYSA9
IFtdOwotICAgICAgICB0ZXN0KCk7Ci0KLSAgICAgICAgYSA9IFsxMCwgMjAsIDMwLCA0MCwgNTAs
IDYwLCA3MCwgODBdOwotICAgICAgICB0ZXN0KCk7Ci0gICAgfQotfQotCi1mdW5jdGlvbiB0ZXN0
MTUoKSB7Ci0gICAgInVzZSBzdHJpY3QiOwotICAgIGZ1bmN0aW9uIGJhciguLi5hcmdzKSB7Ci0g
ICAgICAgIHJldHVybiBhcmdzOwotICAgIH0KLSAgICBub0lubGluZShiYXIpOwotCi0gICAgZnVu
Y3Rpb24gdG9wKGEsIGIsIGMsIGQsIC4uLmFyZ3MpIHsKLSAgICAgICAgcmV0dXJuIGJhci5hcHBs
eShudWxsLCBhcmdzKTsKLSAgICB9Ci0gICAgZnVuY3Rpb24gZm9vKGExLCBhMiwgYTMsIGE0LCBh
NSwgYTYsIGE3LCBhOCwgYTksIGExMCwgYTExLCBhMTIsIGExMywgYTE0LCBhMTUsIGExNiwgYTE3
KSB7Ci0gICAgICAgIGxldCByID0gdG9wKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCwg
YTksIGExMCwgYTExLCBhMTIsIGExMywgYTE0LCBhMTUsIGExNiwgYTE3KTsKLSAgICAgICAgcmV0
dXJuIHI7Ci0gICAgfQotICAgIG5vSW5saW5lKGZvbyk7Ci0KLSAgICBmdW5jdGlvbiBtYWtlQXJn
dW1lbnRzKGFyZ3MpIHsKLSAgICAgICAgbGV0IHIgPSBbMSwyLDMsNCwgLi4uYXJnc107Ci0gICAg
ICAgIHdoaWxlIChyLmxlbmd0aCA8IGZvby5sZW5ndGgpCi0gICAgICAgICAgICByLnB1c2godW5k
ZWZpbmVkKTsKLSAgICAgICAgcmV0dXJuIHI7Ci0gICAgfQotICAgIGZvciAobGV0IGkgPSAwOyBp
IDwgaXRlcmF0aW9uczsgaSsrKSB7Ci0gICAgICAgIGZ1bmN0aW9uIHRlc3QoKQotICAgICAgICB7
Ci0gICAgICAgICAgICBsZXQgYXJncyA9IG1ha2VBcmd1bWVudHMoYSk7Ci0gICAgICAgICAgICBh
c3NlcnQoc2hhbGxvd0VxKGFyZ3Muc2xpY2UoNCksIGZvby5hcHBseShudWxsLCBhcmdzKSkpOwot
ICAgICAgICB9Ci0KLSAgICAgICAgbGV0IGEgPSBbe30sIDI1LCA1MF07Ci0gICAgICAgIHRlc3Qo
KTsKLQotICAgICAgICBhID0gW107Ci0gICAgICAgIHRlc3QoKTsKLQotICAgICAgICBhID0gWzEw
LCAyMCwgMzAsIDQwLCA1MCwgNjAsIDcwLCA4MF07Ci0gICAgICAgIHRlc3QoKTsKLSAgICB9Ci19
Ci0KLWxldCBzdGFydCA9IERhdGUubm93KCk7Ci10ZXN0MSgpOwotdGVzdDIoKTsKLXRlc3QzKCk7
Ci10ZXN0NCgpOwotdGVzdDUoKTsKLXRlc3Q2KCk7Ci10ZXN0NygpOwotdGVzdDgoKTsKLXRlc3Q5
KCk7Ci10ZXN0MTAoKTsKLXRlc3QxMSgpOwotdGVzdDEyKCk7Ci10ZXN0MTMoKTsKLXRlc3QxNCgp
OwotdGVzdDE1KCk7Ci1jb25zdCB2ZXJib3NlID0gZmFsc2U7Ci1pZiAodmVyYm9zZSkKLSAgICBw
cmludChEYXRlLm5vdygpIC0gc3RhcnQpOwotCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>