<?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>174265</bug_id>
          
          <creation_ts>2017-07-07 11:26:23 -0700</creation_ts>
          <short_desc>REGRESSION(r219238): &quot;fast/workers/dedicated-worker-lifecycle.html is flaky&quot; (Requested by yusukesuzuki on #webkit).</short_desc>
          <delta_ts>2017-07-07 13:14:35 -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>174081</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>jlewis3</cc>
    
    <cc>mark.lam</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1326531</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-07-07 11:26:23 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/219238 broke the build:
&quot;fast/workers/dedicated-worker-lifecycle.html is flaky&quot; (Requested by yusukesuzuki 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>1326533</commentid>
    <comment_count>1</comment_count>
      <attachid>314857</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-07-07 11:26:33 -0700</bug_when>
    <thetext>Created attachment 314857
ROLLOUT of r219238

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>1326534</commentid>
    <comment_count>2</comment_count>
      <attachid>314857</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-07-07 11:30:13 -0700</bug_when>
    <thetext>Comment on attachment 314857
ROLLOUT of r219238

Clearing flags on attachment: 314857

Committed r219260: &lt;http://trac.webkit.org/changeset/219260&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326535</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-07-07 11:30:14 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326575</commentid>
    <comment_count>4</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-07-07 13:14:35 -0700</bug_when>
    <thetext>*** Bug 174262 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>314857</attachid>
            <date>2017-07-07 11:26:33 -0700</date>
            <delta_ts>2017-07-07 11:30:13 -0700</delta_ts>
            <desc>ROLLOUT of r219238</desc>
            <filename>bug-174265-20170707142633.patch</filename>
            <type>text/plain</type>
            <size>57438</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE5MjU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
MGMyYzU1ZWNjYWYyMWE2ZTU4MGZmNzdkNTU0ZGYyMWUwZDNkYTk5Li5hMmUxZDM0OWM1MWM0M2Nj
MGNkYWU3YmEzZDUzZDUzNTBiOTExMWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNSBAQAorMjAxNy0wNy0wNyAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIxOTIzOCwgcjIxOTIz
OSwgYW5kIHIyMTkyNDEuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNzQyNjUKKworICAgICAgICAiZmFzdC93b3JrZXJzL2RlZGljYXRlZC13b3JrZXIt
bGlmZWN5Y2xlLmh0bWwgaXMgZmxha3kiCisgICAgICAgIChSZXF1ZXN0ZWQgYnkgeXVzdWtlc3V6
dWtpIG9uICN3ZWJraXQpLgorCisgICAgICAgIFJldmVydGVkIGNoYW5nZXNldHM6CisKKyAgICAg
ICAgIltXVEZdIEltcGxlbWVudCBXVEY6OlRocmVhZEdyb3VwIgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0MDgxCisgICAgICAgIGh0dHA6Ly90cmFj
LndlYmtpdC5vcmcvY2hhbmdlc2V0LzIxOTIzOAorCisgICAgICAgICJVbnJldmlld2VkLCBidWls
ZCBmaXggYWZ0ZXIgcjIxOTIzOCIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3NDA4MQorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5n
ZXNldC8yMTkyMzkKKworICAgICAgICAiVW5yZXZpZXdlZCwgQ0xvb3AgYnVpbGQgZml4IGFmdGVy
IHIyMTkyMzgiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzQwODEKKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjE5MjQx
CisKIDIwMTctMDctMDYgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAK
ICAgICAgICAgVW5yZXZpZXdlZCwgQ0xvb3AgYnVpbGQgZml4IGFmdGVyIHIyMTkyMzgKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXgg
NmIxZTU1YzMyNzY1YWU0MGZiYjNiYTZjODFjYzA4YmMzNmI2ZDhhNy4uODUzMTc2Mzk1ZTYzNWNm
ZjA0ZjcwYzZhOTU2ZGJhNmIwNzY3YWIzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxNy0wNy0w
NyAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVW5y
ZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIxOTIzOCwgcjIxOTIzOSwgYW5kIHIyMTkyNDEuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQyNjUKKworICAg
ICAgICAiZmFzdC93b3JrZXJzL2RlZGljYXRlZC13b3JrZXItbGlmZWN5Y2xlLmh0bWwgaXMgZmxh
a3kiCisgICAgICAgIChSZXF1ZXN0ZWQgYnkgeXVzdWtlc3V6dWtpIG9uICN3ZWJraXQpLgorCisg
ICAgICAgIFJldmVydGVkIGNoYW5nZXNldHM6CisKKyAgICAgICAgIltXVEZdIEltcGxlbWVudCBX
VEY6OlRocmVhZEdyb3VwIgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTc0MDgxCisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0
LzIxOTIzOAorCisgICAgICAgICJVbnJldmlld2VkLCBidWlsZCBmaXggYWZ0ZXIgcjIxOTIzOCIK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDA4MQor
ICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yMTkyMzkKKworICAgICAg
ICAiVW5yZXZpZXdlZCwgQ0xvb3AgYnVpbGQgZml4IGFmdGVyIHIyMTkyMzgiCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQwODEKKyAgICAgICAgaHR0
cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjE5MjQxCisKIDIwMTctMDctMDcgIFl1c3Vr
ZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwg
V2luZG93cyBidWlsZCBmaXggYWZ0ZXIgcjIxOTIzMyBwYXJ0IDQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyMTIw
Y2NmMGU2NGMzMDkwMjFkMDljZWMwZjA5MTRkYjI2YzY4NjhkLi40MTdkZGI1ZTFlMWViODA1YzRk
MDg0YTc1ZDdkYjg1NTJiMDFlMDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTct
MDctMDcgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgorCisgICAgICAg
IFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMTkyMzgsIHIyMTkyMzksIGFuZCByMjE5MjQxLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0MjY1CisK
KyAgICAgICAgImZhc3Qvd29ya2Vycy9kZWRpY2F0ZWQtd29ya2VyLWxpZmVjeWNsZS5odG1sIGlz
IGZsYWt5IgorICAgICAgICAoUmVxdWVzdGVkIGJ5IHl1c3VrZXN1enVraSBvbiAjd2Via2l0KS4K
KworICAgICAgICBSZXZlcnRlZCBjaGFuZ2VzZXRzOgorCisgICAgICAgICJbV1RGXSBJbXBsZW1l
bnQgV1RGOjpUaHJlYWRHcm91cCIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3NDA4MQorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5n
ZXNldC8yMTkyMzgKKworICAgICAgICAiVW5yZXZpZXdlZCwgYnVpbGQgZml4IGFmdGVyIHIyMTky
MzgiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQw
ODEKKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjE5MjM5CisKKyAg
ICAgICAgIlVucmV2aWV3ZWQsIENMb29wIGJ1aWxkIGZpeCBhZnRlciByMjE5MjM4IgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0MDgxCisgICAgICAg
IGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzIxOTI0MQorCiAyMDE3LTA1LTI0ICBT
ZXJnaW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtTVkdd
IExlYWsgaW4gU1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZjFi
OGJjNWMwYTFhMTcxZmEzYzY3MjdkODYxNzdkMDY4NDgzYTU1Mi4uZjAwYWZlOWY4YzU1Njc4MTk0
M2FhYzkwMDhkMWU5ZDdlZjU0YTc3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE3
LTA3LTA3ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KKworICAgICAg
ICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjE5MjM4LCByMjE5MjM5LCBhbmQgcjIxOTI0MS4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDI2NQor
CisgICAgICAgICJmYXN0L3dvcmtlcnMvZGVkaWNhdGVkLXdvcmtlci1saWZlY3ljbGUuaHRtbCBp
cyBmbGFreSIKKyAgICAgICAgKFJlcXVlc3RlZCBieSB5dXN1a2VzdXp1a2kgb24gI3dlYmtpdCku
CisKKyAgICAgICAgUmV2ZXJ0ZWQgY2hhbmdlc2V0czoKKworICAgICAgICAiW1dURl0gSW1wbGVt
ZW50IFdURjo6VGhyZWFkR3JvdXAiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNzQwODEKKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFu
Z2VzZXQvMjE5MjM4CisKKyAgICAgICAgIlVucmV2aWV3ZWQsIGJ1aWxkIGZpeCBhZnRlciByMjE5
MjM4IgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0
MDgxCisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzIxOTIzOQorCisg
ICAgICAgICJVbnJldmlld2VkLCBDTG9vcCBidWlsZCBmaXggYWZ0ZXIgcjIxOTIzOCIKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDA4MQorICAgICAg
ICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yMTkyNDEKKwogMjAxNy0wNy0wNyAg
QW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgV0tXZWJTaXRlRGF0
YVN0b3JlLnJlbW92ZURhdGFPZlR5cGVzIHNob3VsZCB3YWl0IHVudGlsIGRpc2sgY2FjaGUgZmls
ZXMgYXJlIGFjdHVhbGx5IHJlbW92ZWQgYmVmb3JlIGludm9raW5nIGNvbXBsZXRpb24gaGFuZGxl
cgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9FeGVjdXRpb25U
aW1lTGltaXRUZXN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvRXhlY3V0
aW9uVGltZUxpbWl0VGVzdC5jcHAKaW5kZXggMDVjMDExNDhmNjM4YjQyNTA3ZWFkMDk4M2I4Yzk4
NDQ2ZjlmODBkYS4uNzNmMzI0ZGIwZGI0ODQ1ZjYxMDNmZTNiMmY1ZjRhMmNlODk5YTVkOSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9FeGVjdXRpb25UaW1lTGlt
aXRUZXN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0V4ZWN1dGlv
blRpbWVMaW1pdFRlc3QuY3BwCkBAIC0zNiw3ICszNiw2IEBACiAjaW5jbHVkZSA8d3RmL0NvbmRp
dGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9Mb2Nr
Lmg+Ci0jaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0J1aWxkZXIuaD4KIAogI2lmIEhBVkUoTUFDSF9FWENFUFRJT05TKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFjaGluZVN0YWNrTWFya2VyLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL01hY2hpbmVTdGFja01hcmtlci5jcHAKaW5kZXggMTg4NzcwZjhj
MTVhOGUyYzgwNGNjYzVkNTNmN2VkYmNmZTY2MWQzNi4uOGI5YmI2ODY0NWNjZDRkOGIwMzFiNmNj
YWRkMjgwNTkzYjg5NzBkMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TWFjaGluZVN0YWNrTWFya2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9N
YWNoaW5lU3RhY2tNYXJrZXIuY3BwCkBAIC0yMywyMCArMjMsMjA1IEBACiAjaW5jbHVkZSAiTWFj
aGluZVN0YWNrTWFya2VyLmgiCiAKICNpbmNsdWRlICJDb25zZXJ2YXRpdmVSb290cy5oIgotI2lu
Y2x1ZGUgIk1hY2hpbmVDb250ZXh0LmgiCisjaW5jbHVkZSAiR1BSSW5mby5oIgorI2luY2x1ZGUg
IkhlYXAuaCIKKyNpbmNsdWRlICJKU0FycmF5LmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgor
I2luY2x1ZGUgIkxMSW50UENSYW5nZXMuaCIKKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgor
I2luY2x1ZGUgIlZNLmgiCiAjaW5jbHVkZSA8c2V0am1wLmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+
Ci0jaW5jbHVkZSA8d3RmL0JpdFZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi9QYWdlQmxvY2suaD4K
KyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3ll
ZC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdU
RjsKIAogbmFtZXNwYWNlIEpTQyB7CiAKK2NsYXNzIEFjdGl2ZU1hY2hpbmVUaHJlYWRzTWFuYWdl
cjsKK3N0YXRpYyBBY3RpdmVNYWNoaW5lVGhyZWFkc01hbmFnZXImIGFjdGl2ZU1hY2hpbmVUaHJl
YWRzTWFuYWdlcigpOworCitjbGFzcyBBY3RpdmVNYWNoaW5lVGhyZWFkc01hbmFnZXIgeworICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKEFjdGl2ZU1hY2hpbmVUaHJlYWRzTWFuYWdlcik7CitwdWJs
aWM6CisKKyAgICBjbGFzcyBMb2NrZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAgTG9ja2VyKEFj
dGl2ZU1hY2hpbmVUaHJlYWRzTWFuYWdlciYgbWFuYWdlcikKKyAgICAgICAgICAgIDogbV9sb2Nr
ZXIobWFuYWdlci5tX2xvY2spCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgcHJpdmF0ZToK
KyAgICAgICAgTG9ja0hvbGRlciBtX2xvY2tlcjsKKyAgICB9OworCisgICAgdm9pZCBhZGQoTWFj
aGluZVRocmVhZHMqIG1hY2hpbmVUaHJlYWRzKQorICAgIHsKKyAgICAgICAgTG9ja0hvbGRlciBt
YW5hZ2VyTG9jayhtX2xvY2spOworICAgICAgICBtX3NldC5hZGQobWFjaGluZVRocmVhZHMpOwor
ICAgIH0KKworICAgIHZvaWQgVEhSRUFEX1NQRUNJRklDX0NBTEwgcmVtb3ZlKE1hY2hpbmVUaHJl
YWRzKiBtYWNoaW5lVGhyZWFkcykKKyAgICB7CisgICAgICAgIExvY2tIb2xkZXIgbWFuYWdlckxv
Y2sobV9sb2NrKTsKKyAgICAgICAgYXV0byByZWNvcmRlZE1hY2hpbmVUaHJlYWRzID0gbV9zZXQu
dGFrZShtYWNoaW5lVGhyZWFkcyk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJlY29yZGVkTWFj
aGluZVRocmVhZHMgPT0gbWFjaGluZVRocmVhZHMpOworICAgIH0KKworICAgIGJvb2wgY29udGFp
bnMoTWFjaGluZVRocmVhZHMqIG1hY2hpbmVUaHJlYWRzKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IG1fc2V0LmNvbnRhaW5zKG1hY2hpbmVUaHJlYWRzKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAg
dHlwZWRlZiBIYXNoU2V0PE1hY2hpbmVUaHJlYWRzKj4gTWFjaGluZVRocmVhZHNTZXQ7CisKKyAg
ICBBY3RpdmVNYWNoaW5lVGhyZWFkc01hbmFnZXIoKSB7IH0KKyAgICAKKyAgICBMb2NrIG1fbG9j
azsKKyAgICBNYWNoaW5lVGhyZWFkc1NldCBtX3NldDsKKworICAgIGZyaWVuZCBBY3RpdmVNYWNo
aW5lVGhyZWFkc01hbmFnZXImIGFjdGl2ZU1hY2hpbmVUaHJlYWRzTWFuYWdlcigpOworfTsKKwor
c3RhdGljIEFjdGl2ZU1hY2hpbmVUaHJlYWRzTWFuYWdlciYgYWN0aXZlTWFjaGluZVRocmVhZHNN
YW5hZ2VyKCkKK3sKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgaW5pdGlhbGl6ZU1hbmFnZXJP
bmNlRmxhZzsKKyAgICBzdGF0aWMgQWN0aXZlTWFjaGluZVRocmVhZHNNYW5hZ2VyKiBtYW5hZ2Vy
ID0gbnVsbHB0cjsKKworICAgIHN0ZDo6Y2FsbF9vbmNlKGluaXRpYWxpemVNYW5hZ2VyT25jZUZs
YWcsIFtdIHsKKyAgICAgICAgbWFuYWdlciA9IG5ldyBBY3RpdmVNYWNoaW5lVGhyZWFkc01hbmFn
ZXIoKTsKKyAgICB9KTsKKyAgICByZXR1cm4gKm1hbmFnZXI7Cit9CisKKyNpZiBDUFUoWDg2XzY0
KSAmJiBPUyhEQVJXSU4pCisjZGVmaW5lIEZJTExfQ0FMTEVFX1NBVkVTX0ZPUl9DUkFTSF9JTkZP
KG51bWJlcikgICAgIFwKKyAgICBhc20gdm9sYXRpbGUoICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICAibW92cSAkMHhjMGRlZmVmZTAwMDAwMCIgbnVtYmVyICIs
ICUlcmJ4OyIgXAorICAgICAgICAibW92cSAkMHhjMGRlZmVmZTAwMDAwMCIgbnVtYmVyICIsICUl
cjEyOyIgXAorICAgICAgICAibW92cSAkMHhjMGRlZmVmZTAwMDAwMCIgbnVtYmVyICIsICUlcjEz
OyIgXAorICAgICAgICAibW92cSAkMHhjMGRlZmVmZTAwMDAwMCIgbnVtYmVyICIsICUlcjE0OyIg
XAorICAgICAgICAibW92cSAkMHhjMGRlZmVmZTAwMDAwMCIgbnVtYmVyICIsICUlcjE1OyIgXAor
ICAgICAgICA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICAgIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgOiAiJXJieCIsICIlcjEyIiwgIiVyMTMiLCAiJXIxNCIsICIlcjE1IiAgICAgXAorICAg
ICk7CisKKyNkZWZpbmUgRklMTF9DQUxMRVJfU0FWRVNfRk9SX0NSQVNIX0lORk8obnVtYmVyKSAg
ICAgXAorICAgIGFzbSB2b2xhdGlsZSggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgICAgICJtb3ZxICQweGMwZGVmZWZlMDAwMDAwIiBudW1iZXIgIiwgJSVyYXg7IiBc
CisgICAgICAgICJtb3ZxICQweGMwZGVmZWZlMDAwMDAwIiBudW1iZXIgIiwgJSVyZGk7IiBcCisg
ICAgICAgICJtb3ZxICQweGMwZGVmZWZlMDAwMDAwIiBudW1iZXIgIiwgJSVyc2k7IiBcCisgICAg
ICAgICJtb3ZxICQweGMwZGVmZWZlMDAwMDAwIiBudW1iZXIgIiwgJSVyZHg7IiBcCisgICAgICAg
ICJtb3ZxICQweGMwZGVmZWZlMDAwMDAwIiBudW1iZXIgIiwgJSVyY3g7IiBcCisgICAgICAgICJt
b3ZxICQweGMwZGVmZWZlMDAwMDAwIiBudW1iZXIgIiwgJSVyODsiICBcCisgICAgICAgICJtb3Zx
ICQweGMwZGVmZWZlMDAwMDAwIiBudW1iZXIgIiwgJSVyOTsiICBcCisgICAgICAgICJtb3ZxICQw
eGMwZGVmZWZlMDAwMDAwIiBudW1iZXIgIiwgJSVyMTA7IiBcCisgICAgICAgICJtb3ZxICQweGMw
ZGVmZWZlMDAwMDAwIiBudW1iZXIgIiwgJSVyMTE7IiBcCisgICAgICAgIDogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgOiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICA6ICIlcmF4IiwgIiVyZGki
LCAiJXJzaSIsICIlcmR4IiwgIiVyY3giLCAiJXI4IiwgIiVyOSIsICIlcjEwIiwgIiVyMTEiIFwK
KyAgICApOworI2Vsc2UKKyNkZWZpbmUgRklMTF9DQUxMRUVfU0FWRVNfRk9SX0NSQVNIX0lORk8o
bnVtYmVyKQorI2RlZmluZSBGSUxMX0NBTExFUl9TQVZFU19GT1JfQ1JBU0hfSU5GTyhudW1iZXIp
CisjZW5kaWYKKwogTWFjaGluZVRocmVhZHM6Ok1hY2hpbmVUaHJlYWRzKCkKLSAgICA6IG1fdGhy
ZWFkR3JvdXAoVGhyZWFkR3JvdXA6OmNyZWF0ZSgpKQorICAgIDogbV9yZWdpc3RlcmVkVGhyZWFk
cygpCisgICAgLCBtX3RocmVhZFNwZWNpZmljRm9yTWFjaGluZVRocmVhZHMoMCkKK3sKKyAgICBG
SUxMX0NBTExFRV9TQVZFU19GT1JfQ1JBU0hfSU5GTygiMDEiKTsKKyAgICB0aHJlYWRTcGVjaWZp
Y0tleUNyZWF0ZSgmbV90aHJlYWRTcGVjaWZpY0Zvck1hY2hpbmVUaHJlYWRzLCByZW1vdmVUaHJl
YWQpOworICAgIEZJTExfQ0FMTEVFX1NBVkVTX0ZPUl9DUkFTSF9JTkZPKCIwMiIpOworICAgIGFj
dGl2ZU1hY2hpbmVUaHJlYWRzTWFuYWdlcigpLmFkZCh0aGlzKTsKKyAgICBGSUxMX0NBTExFUl9T
QVZFU19GT1JfQ1JBU0hfSU5GTygiMDMiKTsKK30KKworTWFjaGluZVRocmVhZHM6On5NYWNoaW5l
VGhyZWFkcygpCiB7CisgICAgYWN0aXZlTWFjaGluZVRocmVhZHNNYW5hZ2VyKCkucmVtb3ZlKHRo
aXMpOworICAgIHRocmVhZFNwZWNpZmljS2V5RGVsZXRlKG1fdGhyZWFkU3BlY2lmaWNGb3JNYWNo
aW5lVGhyZWFkcyk7CisKKyAgICBMb2NrSG9sZGVyIHJlZ2lzdGVyZWRUaHJlYWRzTG9jayhtX3Jl
Z2lzdGVyZWRUaHJlYWRzTXV0ZXgpOworICAgIGZvciAoTWFjaGluZVRocmVhZCogY3VycmVudCA9
IG1fcmVnaXN0ZXJlZFRocmVhZHMuaGVhZCgpOyBjdXJyZW50OykgeworICAgICAgICBNYWNoaW5l
VGhyZWFkKiBuZXh0ID0gY3VycmVudC0+bmV4dCgpOworICAgICAgICBkZWxldGUgY3VycmVudDsK
KyAgICAgICAgY3VycmVudCA9IG5leHQ7CisgICAgfQorfQorCit2b2lkIE1hY2hpbmVUaHJlYWRz
OjphZGRDdXJyZW50VGhyZWFkKCkKK3sKKyAgICBpZiAodGhyZWFkU3BlY2lmaWNHZXQobV90aHJl
YWRTcGVjaWZpY0Zvck1hY2hpbmVUaHJlYWRzKSkgeworI2lmbmRlZiBOREVCVUcKKyAgICAgICAg
TG9ja0hvbGRlciBsb2NrKG1fcmVnaXN0ZXJlZFRocmVhZHNNdXRleCk7CisgICAgICAgIEFTU0VS
VCh0aHJlYWRTcGVjaWZpY0dldChtX3RocmVhZFNwZWNpZmljRm9yTWFjaGluZVRocmVhZHMpID09
IHRoaXMpOworI2VuZGlmCisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBNYWNoaW5lVGhy
ZWFkKiB0aHJlYWQgPSBuZXcgTWFjaGluZVRocmVhZCgpOworICAgIHRocmVhZFNwZWNpZmljU2V0
KG1fdGhyZWFkU3BlY2lmaWNGb3JNYWNoaW5lVGhyZWFkcywgdGhpcyk7CisKKyAgICBMb2NrSG9s
ZGVyIGxvY2sobV9yZWdpc3RlcmVkVGhyZWFkc011dGV4KTsKKworICAgIG1fcmVnaXN0ZXJlZFRo
cmVhZHMuYXBwZW5kKHRocmVhZCk7Cit9CisKK2F1dG8gTWFjaGluZVRocmVhZHM6Om1hY2hpbmVU
aHJlYWRGb3JDdXJyZW50VGhyZWFkKCkgLT4gTWFjaGluZVRocmVhZCoKK3sKKyAgICBMb2NrSG9s
ZGVyIGxvY2sobV9yZWdpc3RlcmVkVGhyZWFkc011dGV4KTsKKyAgICBUaHJlYWRJZGVudGlmaWVy
IGlkID0gY3VycmVudFRocmVhZCgpOworICAgIGZvciAoTWFjaGluZVRocmVhZCogdGhyZWFkID0g
bV9yZWdpc3RlcmVkVGhyZWFkcy5oZWFkKCk7IHRocmVhZDsgdGhyZWFkID0gdGhyZWFkLT5uZXh0
KCkpIHsKKyAgICAgICAgaWYgKHRocmVhZC0+dGhyZWFkSUQoKSA9PSBpZCkKKyAgICAgICAgICAg
IHJldHVybiB0aHJlYWQ7CisgICAgfQorCisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwordm9pZCBUSFJFQURfU1BFQ0lGSUNfQ0FMTCBN
YWNoaW5lVGhyZWFkczo6cmVtb3ZlVGhyZWFkKHZvaWQqIHApCit7CisgICAgYXV0byYgbWFuYWdl
ciA9IGFjdGl2ZU1hY2hpbmVUaHJlYWRzTWFuYWdlcigpOworICAgIEFjdGl2ZU1hY2hpbmVUaHJl
YWRzTWFuYWdlcjo6TG9ja2VyIGxvY2sobWFuYWdlcik7CisgICAgYXV0byBtYWNoaW5lVGhyZWFk
cyA9IHN0YXRpY19jYXN0PE1hY2hpbmVUaHJlYWRzKj4ocCk7CisgICAgaWYgKG1hbmFnZXIuY29u
dGFpbnMobWFjaGluZVRocmVhZHMpKSB7CisgICAgICAgIC8vIFRoZXJlJ3MgYSBjaGFuY2UgdGhh
dCB0aGUgTWFjaGluZVRocmVhZHMgcmVnaXN0cnkgdGhhdCB0aGlzIHRocmVhZAorICAgICAgICAv
LyB3YXMgcmVnaXN0ZXJlZCB3aXRoIHdhcyBhbHJlYWR5IGRlc3RydWN0ZWQsIGFuZCBhbm90aGVy
IG9uZSBoYXBwZW5lZAorICAgICAgICAvLyB0byBiZSBpbnN0YW50aWF0ZWQgYXQgdGhlIHNhbWUg
YWRkcmVzcy4gSGVuY2UsIHRoaXMgdGhyZWFkIG1heSBvcgorICAgICAgICAvLyBtYXkgbm90IGJl
IGZvdW5kIGluIHRoaXMgTWFjaGluZVRocmVhZHMgcmVnaXN0cnkuIFdlIG9ubHkgbmVlZCB0bwor
ICAgICAgICAvLyBkbyBhIHJlbW92YWwgaWYgdGhpcyB0aHJlYWQgaXMgZm91bmQgaW4gaXQuCisK
KyNpZiBPUyhXSU5ET1dTKQorICAgICAgICAvLyBPbiBXaW5kb3dzIHRoZSB0aHJlYWQgc3BlY2lm
aWMgZGVzdHJ1Y3RvciBpcyBhbHNvIGNhbGxlZCB3aGVuIHRoZQorICAgICAgICAvLyBtYWluIHRo
cmVhZCBpcyBleGl0aW5nLiBUaGlzIG1heSBsZWFkIHRvIHRoZSBtYWluIHRocmVhZCB3YWl0aW5n
CisgICAgICAgIC8vIGZvcmV2ZXIgZm9yIHRoZSBtYWNoaW5lIHRocmVhZCBsb2NrIHdoZW4gZXhp
dGluZywgaWYgdGhlIHNhbXBsaW5nCisgICAgICAgIC8vIHByb2ZpbGVyIHRocmVhZCB3YXMgdGVy
bWluYXRlZCBieSB0aGUgc3lzdGVtIHdoaWxlIGhvbGRpbmcgdGhlCisgICAgICAgIC8vIG1hY2hp
bmUgdGhyZWFkIGxvY2suCisgICAgICAgIGlmIChXVEY6OmlzTWFpblRocmVhZCgpKQorICAgICAg
ICAgICAgcmV0dXJuOworI2VuZGlmCisKKyAgICAgICAgbWFjaGluZVRocmVhZHMtPnJlbW92ZVRo
cmVhZElmRm91bmQoY3VycmVudFRocmVhZCgpKTsKKyAgICB9Cit9CisKK3ZvaWQgTWFjaGluZVRo
cmVhZHM6OnJlbW92ZVRocmVhZElmRm91bmQoVGhyZWFkSWRlbnRpZmllciBpZCkKK3sKKyAgICBM
b2NrSG9sZGVyIGxvY2sobV9yZWdpc3RlcmVkVGhyZWFkc011dGV4KTsKKyAgICBmb3IgKE1hY2hp
bmVUaHJlYWQqIGN1cnJlbnQgPSBtX3JlZ2lzdGVyZWRUaHJlYWRzLmhlYWQoKTsgY3VycmVudDsg
Y3VycmVudCA9IGN1cnJlbnQtPm5leHQoKSkgeworICAgICAgICBpZiAoY3VycmVudC0+dGhyZWFk
SUQoKSA9PSBpZCkgeworICAgICAgICAgICAgbV9yZWdpc3RlcmVkVGhyZWFkcy5yZW1vdmUoY3Vy
cmVudCk7CisgICAgICAgICAgICBkZWxldGUgY3VycmVudDsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisgICAgfQogfQogCiBTVVBQUkVTU19BU0FOCkBAIC01MSw2ICsyMzYsNTIgQEAg
dm9pZCBNYWNoaW5lVGhyZWFkczo6Z2F0aGVyRnJvbUN1cnJlbnRUaHJlYWQoQ29uc2VydmF0aXZl
Um9vdHMmIGNvbnNlcnZhdGl2ZVJvb3QKICAgICBjb25zZXJ2YXRpdmVSb290cy5hZGQoY3VycmVu
dFRocmVhZFN0YXRlLnN0YWNrVG9wLCBjdXJyZW50VGhyZWFkU3RhdGUuc3RhY2tPcmlnaW4sIGpp
dFN0dWJSb3V0aW5lcywgY29kZUJsb2Nrcyk7CiB9CiAKK01hY2hpbmVUaHJlYWRzOjpNYWNoaW5l
VGhyZWFkOjpNYWNoaW5lVGhyZWFkKCkKKyAgICA6IG1fdGhyZWFkKFdURjo6VGhyZWFkOjpjdXJy
ZW50KCkpCit7Cit9CisKK3NpemVfdCBNYWNoaW5lVGhyZWFkczo6TWFjaGluZVRocmVhZDo6Z2V0
UmVnaXN0ZXJzKE1hY2hpbmVUaHJlYWQ6OlJlZ2lzdGVycyYgcmVnaXN0ZXJzKQoreworICAgIFdU
Rjo6UGxhdGZvcm1SZWdpc3RlcnMmIHJlZ3MgPSByZWdpc3RlcnMucmVnczsKKyAgICByZXR1cm4g
bV90aHJlYWQtPmdldFJlZ2lzdGVycyhyZWdzKTsKK30KKwordm9pZCogTWFjaGluZVRocmVhZHM6
Ok1hY2hpbmVUaHJlYWQ6OlJlZ2lzdGVyczo6c3RhY2tQb2ludGVyKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gTWFjaGluZUNvbnRleHQ6OnN0YWNrUG9pbnRlcihyZWdzKTsKK30KKworI2lmIEVOQUJM
RShTQU1QTElOR19QUk9GSUxFUikKK3ZvaWQqIE1hY2hpbmVUaHJlYWRzOjpNYWNoaW5lVGhyZWFk
OjpSZWdpc3RlcnM6OmZyYW1lUG9pbnRlcigpIGNvbnN0Cit7CisjaWYgT1MoV0lORE9XUykgfHwg
SEFWRShNQUNISU5FX0NPTlRFWFQpCisgICAgcmV0dXJuIE1hY2hpbmVDb250ZXh0OjpmcmFtZVBv
aW50ZXIocmVncyk7CisjZWxzZQorI2Vycm9yIE5lZWQgYSB3YXkgdG8gZ2V0IHRoZSBmcmFtZSBw
b2ludGVyIGZvciBhbm90aGVyIHRocmVhZCBvbiB0aGlzIHBsYXRmb3JtCisjZW5kaWYKK30KKwor
dm9pZCogTWFjaGluZVRocmVhZHM6Ok1hY2hpbmVUaHJlYWQ6OlJlZ2lzdGVyczo6aW5zdHJ1Y3Rp
b25Qb2ludGVyKCkgY29uc3QKK3sKKyNpZiBPUyhXSU5ET1dTKSB8fCBIQVZFKE1BQ0hJTkVfQ09O
VEVYVCkKKyAgICByZXR1cm4gTWFjaGluZUNvbnRleHQ6Omluc3RydWN0aW9uUG9pbnRlcihyZWdz
KTsKKyNlbHNlCisjZXJyb3IgTmVlZCBhIHdheSB0byBnZXQgdGhlIGluc3RydWN0aW9uIHBvaW50
ZXIgZm9yIGFub3RoZXIgdGhyZWFkIG9uIHRoaXMgcGxhdGZvcm0KKyNlbmRpZgorfQorCit2b2lk
KiBNYWNoaW5lVGhyZWFkczo6TWFjaGluZVRocmVhZDo6UmVnaXN0ZXJzOjpsbGludFBDKCkgY29u
c3QKK3sKKyAgICAvLyBMTEludCB1c2VzIHJlZ1Q0IGFzIFBDLgorI2lmIE9TKFdJTkRPV1MpIHx8
IEhBVkUoTUFDSElORV9DT05URVhUKQorICAgIHJldHVybiBNYWNoaW5lQ29udGV4dDo6bGxpbnRJ
bnN0cnVjdGlvblBvaW50ZXIocmVncyk7CisjZWxzZQorI2Vycm9yIE5lZWQgYSB3YXkgdG8gZ2V0
IHRoZSBMTEludFBDIGZvciBhbm90aGVyIHRocmVhZCBvbiB0aGlzIHBsYXRmb3JtCisjZW5kaWYK
K30KKyNlbmRpZiAvLyBFTkFCTEUoU0FNUExJTkdfUFJPRklMRVIpCisKIHN0YXRpYyBpbmxpbmUg
aW50IG9zUmVkWm9uZUFkanVzdG1lbnQoKQogewogICAgIGludCByZWRab25lQWRqdXN0bWVudCA9
IDA7CkBAIC02NiwxNyArMjk3LDE3IEBAIHN0YXRpYyBpbmxpbmUgaW50IG9zUmVkWm9uZUFkanVz
dG1lbnQoKQogICAgIHJldHVybiByZWRab25lQWRqdXN0bWVudDsKIH0KIAotc3RhdGljIHN0ZDo6
cGFpcjx2b2lkKiwgc2l6ZV90PiBjYXB0dXJlU3RhY2soVGhyZWFkJiB0aHJlYWQsIHZvaWQqIHN0
YWNrVG9wKQorc3RkOjpwYWlyPHZvaWQqLCBzaXplX3Q+IE1hY2hpbmVUaHJlYWRzOjpNYWNoaW5l
VGhyZWFkOjpjYXB0dXJlU3RhY2sodm9pZCogc3RhY2tUb3ApCiB7Ci0gICAgY2hhciogYmVnaW4g
PSByZWludGVycHJldF9jYXN0X3B0cjxjaGFyKj4odGhyZWFkLnN0YWNrKCkub3JpZ2luKCkpOwor
ICAgIGNoYXIqIGJlZ2luID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8Y2hhcio+KHN0YWNrQmFzZSgp
KTsKICAgICBjaGFyKiBlbmQgPSBiaXR3aXNlX2Nhc3Q8Y2hhcio+KFdURjo6cm91bmRVcFRvTXVs
dGlwbGVPZjxzaXplb2Yodm9pZCopPihyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oc3RhY2tU
b3ApKSk7CiAgICAgQVNTRVJUKGJlZ2luID49IGVuZCk7CiAKICAgICBjaGFyKiBlbmRXaXRoUmVk
Wm9uZSA9IGVuZCArIG9zUmVkWm9uZUFkanVzdG1lbnQoKTsKICAgICBBU1NFUlQoV1RGOjpyb3Vu
ZFVwVG9NdWx0aXBsZU9mPHNpemVvZih2b2lkKik+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90
PihlbmRXaXRoUmVkWm9uZSkpID09IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihlbmRXaXRo
UmVkWm9uZSkpOwogCi0gICAgaWYgKGVuZFdpdGhSZWRab25lIDwgdGhyZWFkLnN0YWNrKCkuZW5k
KCkpCi0gICAgICAgIGVuZFdpdGhSZWRab25lID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8Y2hhcio+
KHRocmVhZC5zdGFjaygpLmVuZCgpKTsKKyAgICBpZiAoZW5kV2l0aFJlZFpvbmUgPCBzdGFja0Vu
ZCgpKQorICAgICAgICBlbmRXaXRoUmVkWm9uZSA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPGNoYXIq
PihzdGFja0VuZCgpKTsKIAogICAgIHN0ZDo6c3dhcChiZWdpbiwgZW5kV2l0aFJlZFpvbmUpOwog
ICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihiZWdpbiwgZW5kV2l0aFJlZFpvbmUgLSBiZWdpbik7
CkBAIC0xMDksMjAgKzM0MCwyMCBAQCBzdGF0aWMgdm9pZCBjb3B5TWVtb3J5KHZvaWQqIGRzdCwg
Y29uc3Qgdm9pZCogc3JjLCBzaXplX3Qgc2l6ZSkKIC8vIHNpZ25pZmljYW50IHBlcmZvcm1hbmNl
IGxvc3MgYXMgdHJ5Q29weU90aGVyVGhyZWFkU3RhY2sgaXMgb25seSBjYWxsZWQgYXMgcGFydCBv
ZiBhbiBPKGhlYXBzaXplKQogLy8gb3BlcmF0aW9uLiBBcyB0aGUgaGVhcCBpcyBnZW5lcmFsbHkg
bXVjaCBsYXJnZXIgdGhhbiB0aGUgc3RhY2sgdGhlIHBlcmZvcm1hbmNlIGhpdCBpcyBtaW5pbWFs
LgogLy8gU2VlOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2Mjk3
Ci12b2lkIE1hY2hpbmVUaHJlYWRzOjp0cnlDb3B5T3RoZXJUaHJlYWRTdGFjayhUaHJlYWQmIHRo
cmVhZCwgdm9pZCogYnVmZmVyLCBzaXplX3QgY2FwYWNpdHksIHNpemVfdCogc2l6ZSkKK3ZvaWQg
TWFjaGluZVRocmVhZHM6OnRyeUNvcHlPdGhlclRocmVhZFN0YWNrKE1hY2hpbmVUaHJlYWQqIHRo
cmVhZCwgdm9pZCogYnVmZmVyLCBzaXplX3QgY2FwYWNpdHksIHNpemVfdCogc2l6ZSkKIHsKLSAg
ICBQbGF0Zm9ybVJlZ2lzdGVycyByZWdpc3RlcnM7Ci0gICAgc2l6ZV90IHJlZ2lzdGVyc1NpemUg
PSB0aHJlYWQuZ2V0UmVnaXN0ZXJzKHJlZ2lzdGVycyk7CisgICAgTWFjaGluZVRocmVhZDo6UmVn
aXN0ZXJzIHJlZ2lzdGVyczsKKyAgICBzaXplX3QgcmVnaXN0ZXJzU2l6ZSA9IHRocmVhZC0+Z2V0
UmVnaXN0ZXJzKHJlZ2lzdGVycyk7CiAKICAgICAvLyBUaGlzIGlzIGEgd29ya2Fyb3VuZCBmb3Ig
PHJkYXI6Ly9wcm9ibGVtLzI3NjA3Mzg0Pi4gbGliZGlzcGF0Y2ggcmVjeWNsZXMgd29yawogICAg
IC8vIHF1ZXVlIHRocmVhZHMgd2l0aG91dCBydW5uaW5nIHB0aHJlYWQgZXhpdCBkZXN0cnVjdG9y
cy4gVGhpcyBjYW4gY2F1c2UgdXMgdG8gc2NhbiBhCiAgICAgLy8gdGhyZWFkIGR1cmluZyB3b3Jr
IHF1ZXVlIGluaXRpYWxpemF0aW9uLCB3aGVuIHRoZSBzdGFjayBwb2ludGVyIGlzIG51bGwuCi0g
ICAgaWYgKFVOTElLRUxZKCFNYWNoaW5lQ29udGV4dDo6c3RhY2tQb2ludGVyKHJlZ2lzdGVycykp
KSB7CisgICAgaWYgKFVOTElLRUxZKCFyZWdpc3RlcnMuc3RhY2tQb2ludGVyKCkpKSB7CiAgICAg
ICAgICpzaXplID0gMDsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHN0ZDo6cGFpcjx2
b2lkKiwgc2l6ZV90PiBzdGFjayA9IGNhcHR1cmVTdGFjayh0aHJlYWQsIE1hY2hpbmVDb250ZXh0
OjpzdGFja1BvaW50ZXIocmVnaXN0ZXJzKSk7CisgICAgc3RkOjpwYWlyPHZvaWQqLCBzaXplX3Q+
IHN0YWNrID0gdGhyZWFkLT5jYXB0dXJlU3RhY2socmVnaXN0ZXJzLnN0YWNrUG9pbnRlcigpKTsK
IAogICAgIGJvb2wgY2FuQ29weSA9ICpzaXplICsgcmVnaXN0ZXJzU2l6ZSArIHN0YWNrLnNlY29u
ZCA8PSBjYXBhY2l0eTsKIApAQCAtMTM1LDcgKzM2Niw3IEBAIHZvaWQgTWFjaGluZVRocmVhZHM6
OnRyeUNvcHlPdGhlclRocmVhZFN0YWNrKFRocmVhZCYgdGhyZWFkLCB2b2lkKiBidWZmZXIsIHNp
emVfCiAgICAgKnNpemUgKz0gc3RhY2suc2Vjb25kOwogfQogCi1ib29sIE1hY2hpbmVUaHJlYWRz
Ojp0cnlDb3B5T3RoZXJUaHJlYWRTdGFja3MoY29uc3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlciwg
dm9pZCogYnVmZmVyLCBzaXplX3QgY2FwYWNpdHksIHNpemVfdCogc2l6ZSkKK2Jvb2wgTWFjaGlu
ZVRocmVhZHM6OnRyeUNvcHlPdGhlclRocmVhZFN0YWNrcyhjb25zdCBBYnN0cmFjdExvY2tlciYs
IHZvaWQqIGJ1ZmZlciwgc2l6ZV90IGNhcGFjaXR5LCBzaXplX3QqIHNpemUpCiB7CiAgICAgLy8g
UHJldmVudCB0d28gVk1zIGZyb20gc3VzcGVuZGluZyBlYWNoIG90aGVyJ3MgdGhyZWFkcyBhdCB0
aGUgc2FtZSB0aW1lLAogICAgIC8vIHdoaWNoIGNhbiBjYXVzZSBkZWFkbG9jazogPHJkYXI6Ly9w
cm9ibGVtLzIwMzAwODQyPi4KQEAgLTE0NCw0OSArMzc1LDYwIEBAIGJvb2wgTWFjaGluZVRocmVh
ZHM6OnRyeUNvcHlPdGhlclRocmVhZFN0YWNrcyhjb25zdCBBYnN0cmFjdExvY2tlciYgbG9ja2Vy
LCB2b2lkCiAKICAgICAqc2l6ZSA9IDA7CiAKLSAgICBUaHJlYWQmIGN1cnJlbnRUaHJlYWQgPSBU
aHJlYWQ6OmN1cnJlbnQoKTsKLSAgICBjb25zdCBhdXRvJiB0aHJlYWRzID0gbV90aHJlYWRHcm91
cC0+dGhyZWFkcyhsb2NrZXIpOwotICAgIEJpdFZlY3RvciBpc1N1c3BlbmRlZCh0aHJlYWRzLnNp
emUoKSk7CisgICAgVGhyZWFkSWRlbnRpZmllciBpZCA9IGN1cnJlbnRUaHJlYWQoKTsKKyAgICBp
bnQgbnVtYmVyT2ZUaHJlYWRzID0gMDsgLy8gVXNpbmcgMCB0byBkZW5vdGUgdGhhdCB3ZSBoYXZl
bid0IGNvdW50ZWQgdGhlIG51bWJlciBvZiB0aHJlYWRzIHlldC4KKyAgICBpbnQgaW5kZXggPSAx
OworICAgIERvdWJseUxpbmtlZExpc3Q8TWFjaGluZVRocmVhZD4gdGhyZWFkc1RvQmVEZWxldGVk
OwogCi0gICAgewotICAgICAgICB1bnNpZ25lZCBpbmRleCA9IDA7Ci0gICAgICAgIGZvciAoYXV0
byogdGhyZWFkIDogdGhyZWFkcykgewotICAgICAgICAgICAgaWYgKCp0aHJlYWQgIT0gY3VycmVu
dFRocmVhZCkgewotICAgICAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gdGhyZWFkLT5zdXNwZW5k
KCk7Ci0gICAgICAgICAgICAgICAgaWYgKHJlc3VsdCkKLSAgICAgICAgICAgICAgICAgICAgaXNT
dXNwZW5kZWQuc2V0KGluZGV4KTsKLSAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICBmb3IgKE1h
Y2hpbmVUaHJlYWQqIHRocmVhZCA9IG1fcmVnaXN0ZXJlZFRocmVhZHMuaGVhZCgpOyB0aHJlYWQ7
IGluZGV4KyspIHsKKyAgICAgICAgaWYgKHRocmVhZC0+dGhyZWFkSUQoKSAhPSBpZCkgeworICAg
ICAgICAgICAgYXV0byByZXN1bHQgPSB0aHJlYWQtPnN1c3BlbmQoKTsKICNpZiBPUyhEQVJXSU4p
Ci0gICAgICAgICAgICAgICAgICAgIC8vIFRoZXNlIHRocmVhZHMgd2lsbCBiZSByZW1vdmVkIGZy
b20gdGhlIFRocmVhZEdyb3VwLiBUaHVzLCB3ZSBkbyBub3QgZG8gYW55dGhpbmcgaGVyZSBleGNl
cHQgZm9yIHJlcG9ydGluZy4KLSAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHJlc3VsdC5lcnJv
cigpICE9IEtFUk5fU1VDQ0VTUyk7Ci0gICAgICAgICAgICAgICAgICAgIFdURlJlcG9ydEVycm9y
KF9fRklMRV9fLCBfX0xJTkVfXywgV1RGX1BSRVRUWV9GVU5DVElPTiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICJKYXZhU2NyaXB0IGdhcmJhZ2UgY29sbGVjdGlvbiBlbmNvdW50ZXJlZCBhbiBp
bnZhbGlkIHRocmVhZCAoZXJyIDB4JXgpOiBUaHJlYWQgWyVkLyVkOiAlcF0gaWQgJXUuIiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5lcnJvcigpLCBpbmRleCwgdGhyZWFkcy5zaXpl
KCksIHRocmVhZCwgdGhyZWFkLT5pZCgpKTsKLSNlbmRpZgotICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGlmICghcmVzdWx0KSB7CisgICAgICAgICAgICAgICAgaWYgKCFudW1iZXJPZlRo
cmVhZHMpCisgICAgICAgICAgICAgICAgICAgIG51bWJlck9mVGhyZWFkcyA9IG1fcmVnaXN0ZXJl
ZFRocmVhZHMuc2l6ZSgpOworCisgICAgICAgICAgICAgICAgQVNTRVJUKHJlc3VsdC5lcnJvcigp
ICE9IEtFUk5fU1VDQ0VTUyk7CisKKyAgICAgICAgICAgICAgICBXVEZSZXBvcnRFcnJvcihfX0ZJ
TEVfXywgX19MSU5FX18sIFdURl9QUkVUVFlfRlVOQ1RJT04sCisgICAgICAgICAgICAgICAgICAg
ICJKYXZhU2NyaXB0IGdhcmJhZ2UgY29sbGVjdGlvbiBlbmNvdW50ZXJlZCBhbiBpbnZhbGlkIHRo
cmVhZCAoZXJyIDB4JXgpOiBUaHJlYWQgWyVkLyVkOiAlcF0gaWQgJXUuIiwKKyAgICAgICAgICAg
ICAgICAgICAgcmVzdWx0LmVycm9yKCksIGluZGV4LCBudW1iZXJPZlRocmVhZHMsIHRocmVhZCwg
dGhyZWFkLT50aHJlYWRJRCgpKTsKKworICAgICAgICAgICAgICAgIC8vIFB1dCB0aGUgaW52YWxp
ZCB0aHJlYWQgb24gdGhlIHRocmVhZHNUb0JlRGVsZXRlZCBsaXN0LgorICAgICAgICAgICAgICAg
IC8vIFdlIGNhbid0IGp1c3QgZGVsZXRlIGl0IGhlcmUgYmVjYXVzZSB3ZSBoYXZlIHN1c3BlbmRl
ZCBvdGhlcgorICAgICAgICAgICAgICAgIC8vIHRocmVhZHMsIGFuZCB0aGV5IG1heSBzdGlsbCBi
ZSBob2xkaW5nIHRoZSBDIGhlYXAgbG9jayB3aGljaAorICAgICAgICAgICAgICAgIC8vIHdlIG5l
ZWQgZm9yIGRlbGV0aW5nIHRoZSBpbnZhbGlkIHRocmVhZC4gSGVuY2UsIHdlIG5lZWQgdG8KKyAg
ICAgICAgICAgICAgICAvLyBkZWZlciB0aGUgZGVsZXRpb24gdGlsbCBhZnRlciB3ZSBoYXZlIHJl
c3VtZWQgYWxsIHRocmVhZHMuCisgICAgICAgICAgICAgICAgTWFjaGluZVRocmVhZCogbmV4dFRo
cmVhZCA9IHRocmVhZC0+bmV4dCgpOworICAgICAgICAgICAgICAgIG1fcmVnaXN0ZXJlZFRocmVh
ZHMucmVtb3ZlKHRocmVhZCk7CisgICAgICAgICAgICAgICAgdGhyZWFkc1RvQmVEZWxldGVkLmFw
cGVuZCh0aHJlYWQpOworICAgICAgICAgICAgICAgIHRocmVhZCA9IG5leHRUaHJlYWQ7CisgICAg
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICArK2luZGV4
OworI2Vsc2UKKyAgICAgICAgICAgIFVOVVNFRF9QQVJBTShudW1iZXJPZlRocmVhZHMpOworICAg
ICAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7CisjZW5kaWYKICAgICAgICAg
fQorICAgICAgICB0aHJlYWQgPSB0aHJlYWQtPm5leHQoKTsKICAgICB9CiAKLSAgICB7Ci0gICAg
ICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKLSAgICAgICAgZm9yIChhdXRvKiB0aHJlYWQgOiB0aHJl
YWRzKSB7Ci0gICAgICAgICAgICBpZiAoaXNTdXNwZW5kZWQuZ2V0KGluZGV4KSkKLSAgICAgICAg
ICAgICAgICB0cnlDb3B5T3RoZXJUaHJlYWRTdGFjaygqdGhyZWFkLCBidWZmZXIsIGNhcGFjaXR5
LCBzaXplKTsKLSAgICAgICAgICAgICsraW5kZXg7Ci0gICAgICAgIH0KKyAgICBmb3IgKE1hY2hp
bmVUaHJlYWQqIHRocmVhZCA9IG1fcmVnaXN0ZXJlZFRocmVhZHMuaGVhZCgpOyB0aHJlYWQ7IHRo
cmVhZCA9IHRocmVhZC0+bmV4dCgpKSB7CisgICAgICAgIGlmICh0aHJlYWQtPnRocmVhZElEKCkg
IT0gaWQpCisgICAgICAgICAgICB0cnlDb3B5T3RoZXJUaHJlYWRTdGFjayh0aHJlYWQsIGJ1ZmZl
ciwgY2FwYWNpdHksIHNpemUpOwogICAgIH0KIAotICAgIHsKLSAgICAgICAgdW5zaWduZWQgaW5k
ZXggPSAwOwotICAgICAgICBmb3IgKGF1dG8qIHRocmVhZCA6IHRocmVhZHMpIHsKLSAgICAgICAg
ICAgIGlmIChpc1N1c3BlbmRlZC5nZXQoaW5kZXgpKQotICAgICAgICAgICAgICAgIHRocmVhZC0+
cmVzdW1lKCk7Ci0gICAgICAgICAgICArK2luZGV4OwotICAgICAgICB9CisgICAgZm9yIChNYWNo
aW5lVGhyZWFkKiB0aHJlYWQgPSBtX3JlZ2lzdGVyZWRUaHJlYWRzLmhlYWQoKTsgdGhyZWFkOyB0
aHJlYWQgPSB0aHJlYWQtPm5leHQoKSkgeworICAgICAgICBpZiAodGhyZWFkLT50aHJlYWRJRCgp
ICE9IGlkKQorICAgICAgICAgICAgdGhyZWFkLT5yZXN1bWUoKTsKICAgICB9CiAKKyAgICBmb3Ig
KE1hY2hpbmVUaHJlYWQqIHRocmVhZCA9IHRocmVhZHNUb0JlRGVsZXRlZC5oZWFkKCk7IHRocmVh
ZDsgKSB7CisgICAgICAgIE1hY2hpbmVUaHJlYWQqIG5leHRUaHJlYWQgPSB0aHJlYWQtPm5leHQo
KTsKKyAgICAgICAgZGVsZXRlIHRocmVhZDsKKyAgICAgICAgdGhyZWFkID0gbmV4dFRocmVhZDsK
KyAgICB9CisgICAgCiAgICAgcmV0dXJuICpzaXplIDw9IGNhcGFjaXR5OwogfQogCkBAIC0yMDcs
OCArNDQ5LDggQEAgdm9pZCBNYWNoaW5lVGhyZWFkczo6Z2F0aGVyQ29uc2VydmF0aXZlUm9vdHMo
Q29uc2VydmF0aXZlUm9vdHMmIGNvbnNlcnZhdGl2ZVJvb3QKICAgICBzaXplX3Qgc2l6ZTsKICAg
ICBzaXplX3QgY2FwYWNpdHkgPSAwOwogICAgIHZvaWQqIGJ1ZmZlciA9IG51bGxwdHI7Ci0gICAg
YXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3RocmVhZEdyb3VwLT5nZXRMb2NrKCkpOwotICAgIHdo
aWxlICghdHJ5Q29weU90aGVyVGhyZWFkU3RhY2tzKGxvY2tlciwgYnVmZmVyLCBjYXBhY2l0eSwg
JnNpemUpKQorICAgIExvY2tIb2xkZXIgbG9jayhtX3JlZ2lzdGVyZWRUaHJlYWRzTXV0ZXgpOwor
ICAgIHdoaWxlICghdHJ5Q29weU90aGVyVGhyZWFkU3RhY2tzKGxvY2ssIGJ1ZmZlciwgY2FwYWNp
dHksICZzaXplKSkKICAgICAgICAgZ3Jvd0J1ZmZlcihzaXplLCAmYnVmZmVyLCAmY2FwYWNpdHkp
OwogCiAgICAgaWYgKCFidWZmZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01h
Y2hpbmVTdGFja01hcmtlci5oCmluZGV4IGFlMjZkOGUzZTYxYWEwZTRhZjE2NDI3ZjYzYmEwZTEx
ZmNkMzBjYzIuLmMxNTEwZDYyNTFjMGIzNGFmOWE0ZWI5NTFhNTFlOTZlYTk0ZDVjMjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hY2hpbmVTdGFja01hcmtlci5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hY2hpbmVTdGFja01hcmtlci5oCkBAIC0y
MSwxMCArMjEsMTIgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJNYWNoaW5lQ29udGV4
dC5oIgogI2luY2x1ZGUgIlJlZ2lzdGVyU3RhdGUuaCIKKyNpbmNsdWRlIDx3dGYvRG91Ymx5TGlu
a2VkTGlzdC5oPgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL1Njb3BlZExh
bWJkYS5oPgotI2luY2x1ZGUgPHd0Zi9UaHJlYWRHcm91cC5oPgorI2luY2x1ZGUgPHd0Zi9UaHJl
YWRTcGVjaWZpYy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNDMsMjIgKzQ1LDU4IEBAIGNs
YXNzIE1hY2hpbmVUaHJlYWRzIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShNYWNoaW5lVGhy
ZWFkcyk7CiBwdWJsaWM6CiAgICAgTWFjaGluZVRocmVhZHMoKTsKKyAgICB+TWFjaGluZVRocmVh
ZHMoKTsKIAogICAgIHZvaWQgZ2F0aGVyQ29uc2VydmF0aXZlUm9vdHMoQ29uc2VydmF0aXZlUm9v
dHMmLCBKSVRTdHViUm91dGluZVNldCYsIENvZGVCbG9ja1NldCYsIEN1cnJlbnRUaHJlYWRTdGF0
ZSopOwogCi0gICAgLy8gT25seSBuZWVkcyB0byBiZSBjYWxsZWQgYnkgY2xpZW50cyB0aGF0IGNh
biB1c2UgdGhlIHNhbWUgaGVhcCBmcm9tIG11bHRpcGxlIHRocmVhZHMuCi0gICAgdm9pZCBhZGRD
dXJyZW50VGhyZWFkKCkgeyBtX3RocmVhZEdyb3VwLT5hZGRDdXJyZW50VGhyZWFkKCk7IH0KKyAg
ICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGFkZEN1cnJlbnRUaHJlYWQoKTsgLy8gT25seSBuZWVk
cyB0byBiZSBjYWxsZWQgYnkgY2xpZW50cyB0aGF0IGNhbiB1c2UgdGhlIHNhbWUgaGVhcCBmcm9t
IG11bHRpcGxlIHRocmVhZHMuCiAKLSAgICBzdGQ6Om11dGV4JiBnZXRMb2NrKCkgeyByZXR1cm4g
bV90aHJlYWRHcm91cC0+Z2V0TG9jaygpOyB9Ci0gICAgY29uc3QgTGlzdEhhc2hTZXQ8VGhyZWFk
Kj4mIHRocmVhZHMoY29uc3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlcikgY29uc3QgeyByZXR1cm4g
bV90aHJlYWRHcm91cC0+dGhyZWFkcyhsb2NrZXIpOyB9CisgICAgY2xhc3MgTWFjaGluZVRocmVh
ZCA6IHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0Tm9kZTxNYWNoaW5lVGhyZWFkPiB7CisgICAgICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIHB1YmxpYzoKKyAgICAgICAgTWFjaGluZVRo
cmVhZCgpOworCisgICAgICAgIHN0cnVjdCBSZWdpc3RlcnMgeworICAgICAgICAgICAgdm9pZCog
c3RhY2tQb2ludGVyKCkgY29uc3Q7CisjaWYgRU5BQkxFKFNBTVBMSU5HX1BST0ZJTEVSKQorICAg
ICAgICAgICAgdm9pZCogZnJhbWVQb2ludGVyKCkgY29uc3Q7CisgICAgICAgICAgICB2b2lkKiBp
bnN0cnVjdGlvblBvaW50ZXIoKSBjb25zdDsKKyAgICAgICAgICAgIHZvaWQqIGxsaW50UEMoKSBj
b25zdDsKKyNlbmRpZiAvLyBFTkFCTEUoU0FNUExJTkdfUFJPRklMRVIpCisgICAgICAgICAgICBQ
bGF0Zm9ybVJlZ2lzdGVycyByZWdzOworICAgICAgICB9OworCisgICAgICAgIEV4cGVjdGVkPHZv
aWQsIFRocmVhZDo6UGxhdGZvcm1TdXNwZW5kRXJyb3I+IHN1c3BlbmQoKSB7IHJldHVybiBtX3Ro
cmVhZC0+c3VzcGVuZCgpOyB9CisgICAgICAgIHZvaWQgcmVzdW1lKCkgeyBtX3RocmVhZC0+cmVz
dW1lKCk7IH0KKyAgICAgICAgc2l6ZV90IGdldFJlZ2lzdGVycyhSZWdpc3RlcnMmIHJlZ3MpOwor
ICAgICAgICBzdGQ6OnBhaXI8dm9pZCosIHNpemVfdD4gY2FwdHVyZVN0YWNrKHZvaWQqIHN0YWNr
VG9wKTsKKworICAgICAgICBXVEY6OlRocmVhZElkZW50aWZpZXIgdGhyZWFkSUQoKSBjb25zdCB7
IHJldHVybiBtX3RocmVhZC0+aWQoKTsgfQorICAgICAgICB2b2lkKiBzdGFja0Jhc2UoKSBjb25z
dCB7IHJldHVybiBtX3RocmVhZC0+c3RhY2soKS5vcmlnaW4oKTsgfQorICAgICAgICB2b2lkKiBz
dGFja0VuZCgpIGNvbnN0IHsgcmV0dXJuIG1fdGhyZWFkLT5zdGFjaygpLmVuZCgpOyB9CisKKyAg
ICAgICAgUmVmPFdURjo6VGhyZWFkPiBtX3RocmVhZDsKKyAgICAgICAgTWFjaGluZVRocmVhZCog
bV9uZXh0IHsgbnVsbHB0ciB9OworICAgICAgICBNYWNoaW5lVGhyZWFkKiBtX3ByZXYgeyBudWxs
cHRyIH07CisgICAgfTsKKworICAgIExvY2smIGdldExvY2soKSB7IHJldHVybiBtX3JlZ2lzdGVy
ZWRUaHJlYWRzTXV0ZXg7IH0KKyAgICBjb25zdCBEb3VibHlMaW5rZWRMaXN0PE1hY2hpbmVUaHJl
YWQ+JiB0aHJlYWRzTGlzdEhlYWQoY29uc3QgQWJzdHJhY3RMb2NrZXImKSBjb25zdCB7IEFTU0VS
VChtX3JlZ2lzdGVyZWRUaHJlYWRzTXV0ZXguaXNMb2NrZWQoKSk7IHJldHVybiBtX3JlZ2lzdGVy
ZWRUaHJlYWRzOyB9CisgICAgTWFjaGluZVRocmVhZCogbWFjaGluZVRocmVhZEZvckN1cnJlbnRU
aHJlYWQoKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIGdhdGhlckZyb21DdXJyZW50VGhyZWFkKENv
bnNlcnZhdGl2ZVJvb3RzJiwgSklUU3R1YlJvdXRpbmVTZXQmLCBDb2RlQmxvY2tTZXQmLCBDdXJy
ZW50VGhyZWFkU3RhdGUmKTsKIAotICAgIHZvaWQgdHJ5Q29weU90aGVyVGhyZWFkU3RhY2soVGhy
ZWFkJiwgdm9pZCosIHNpemVfdCBjYXBhY2l0eSwgc2l6ZV90Kik7CisgICAgdm9pZCB0cnlDb3B5
T3RoZXJUaHJlYWRTdGFjayhNYWNoaW5lVGhyZWFkKiwgdm9pZCosIHNpemVfdCBjYXBhY2l0eSwg
c2l6ZV90Kik7CiAgICAgYm9vbCB0cnlDb3B5T3RoZXJUaHJlYWRTdGFja3MoY29uc3QgQWJzdHJh
Y3RMb2NrZXImLCB2b2lkKiwgc2l6ZV90IGNhcGFjaXR5LCBzaXplX3QqKTsKIAotICAgIFJlZjxU
aHJlYWRHcm91cD4gbV90aHJlYWRHcm91cDsKKyAgICBzdGF0aWMgdm9pZCBUSFJFQURfU1BFQ0lG
SUNfQ0FMTCByZW1vdmVUaHJlYWQodm9pZCopOworCisgICAgdm9pZCByZW1vdmVUaHJlYWRJZkZv
dW5kKFRocmVhZElkZW50aWZpZXIpOworCisgICAgTG9jayBtX3JlZ2lzdGVyZWRUaHJlYWRzTXV0
ZXg7CisgICAgRG91Ymx5TGlua2VkTGlzdDxNYWNoaW5lVGhyZWFkPiBtX3JlZ2lzdGVyZWRUaHJl
YWRzOworICAgIFdURjo6VGhyZWFkU3BlY2lmaWNLZXkgbV90aHJlYWRTcGVjaWZpY0Zvck1hY2hp
bmVUaHJlYWRzOwogfTsKIAogI2RlZmluZSBERUNMQVJFX0FORF9DT01QVVRFX0NVUlJFTlRfVEhS
RUFEX1NUQVRFKHN0YXRlTmFtZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcAppbmRleCBlMzI0ODIwZWQ2YTJjMjY0OWVjYzliNDEw
ODFmM2U1YTNlNjc1NWFmLi40NGU4NGZlZjBjZDM3NzVjNWE2MThhNDFjZThiZTIxMmRhMmNlYjA4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2Zp
bGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2Zp
bGVyLmNwcApAQCAtMzksNyArMzksNiBAQAogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNs
dWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiTExJbnRQQ1Jhbmdlcy5oIgotI2luY2x1ZGUg
Ik1hY2hpbmVDb250ZXh0LmgiCiAjaW5jbHVkZSAiTWFya2VkQmxvY2suaCIKICNpbmNsdWRlICJN
YXJrZWRCbG9ja1NldC5oIgogI2luY2x1ZGUgIk1hcmtlZFNwYWNlSW5saW5lcy5oIgpAQCAtMTY2
LDkgKzE2NSwxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBpc1ZhbGlkRnJhbWVQb2ludGVyKHZv
aWQqIGV4ZWMpCiAgICAgewogICAgICAgICB1aW50OF90KiBmcENhc3QgPSBiaXR3aXNlX2Nhc3Q8
dWludDhfdCo+KGV4ZWMpOwotICAgICAgICBmb3IgKGF1dG8qIHRocmVhZCA6IG1fdm0uaGVhcC5t
YWNoaW5lVGhyZWFkcygpLnRocmVhZHMobV9tYWNoaW5lVGhyZWFkc0xvY2tlcikpIHsKLSAgICAg
ICAgICAgIHVpbnQ4X3QqIHN0YWNrQmFzZSA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPih0aHJlYWQt
PnN0YWNrKCkub3JpZ2luKCkpOwotICAgICAgICAgICAgdWludDhfdCogc3RhY2tMaW1pdCA9IHN0
YXRpY19jYXN0PHVpbnQ4X3QqPih0aHJlYWQtPnN0YWNrKCkuZW5kKCkpOworICAgICAgICBjb25z
dCBhdXRvJiB0aHJlYWRMaXN0ID0gbV92bS5oZWFwLm1hY2hpbmVUaHJlYWRzKCkudGhyZWFkc0xp
c3RIZWFkKG1fbWFjaGluZVRocmVhZHNMb2NrZXIpOworICAgICAgICBmb3IgKE1hY2hpbmVUaHJl
YWRzOjpNYWNoaW5lVGhyZWFkKiB0aHJlYWQgPSB0aHJlYWRMaXN0LmhlYWQoKTsgdGhyZWFkOyB0
aHJlYWQgPSB0aHJlYWQtPm5leHQoKSkgeworICAgICAgICAgICAgdWludDhfdCogc3RhY2tCYXNl
ID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KHRocmVhZC0+c3RhY2tCYXNlKCkpOworICAgICAgICAg
ICAgdWludDhfdCogc3RhY2tMaW1pdCA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPih0aHJlYWQtPnN0
YWNrRW5kKCkpOwogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoc3RhY2tCYXNlKTsKICAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKHN0YWNrTGltaXQpOwogICAgICAgICAgICAgaWYgKGZwQ2Fz
dCA8PSBzdGFja0Jhc2UgJiYgZnBDYXN0ID49IHN0YWNrTGltaXQpCkBAIC0yNzgsNiArMjc4LDcg
QEAgU2FtcGxpbmdQcm9maWxlcjo6U2FtcGxpbmdQcm9maWxlcihWTSYgdm0sIFJlZlB0cjxTdG9w
d2F0Y2g+JiYgc3RvcHdhdGNoKQogICAgICwgbV93ZWFrUmFuZG9tKCkKICAgICAsIG1fc3RvcHdh
dGNoKFdURk1vdmUoc3RvcHdhdGNoKSkKICAgICAsIG1fdGltaW5nSW50ZXJ2YWwoc3RkOjpjaHJv
bm86Om1pY3Jvc2Vjb25kcyhPcHRpb25zOjpzYW1wbGVJbnRlcnZhbCgpKSkKKyAgICAsIG1fanNj
RXhlY3V0aW9uVGhyZWFkKG51bGxwdHIpCiAgICAgLCBtX2lzUGF1c2VkKGZhbHNlKQogICAgICwg
bV9pc1NodXREb3duKGZhbHNlKQogewpAQCAtMzM3LDcgKzMzOCw3IEBAIHZvaWQgU2FtcGxpbmdQ
cm9maWxlcjo6dGFrZVNhbXBsZShjb25zdCBBYnN0cmFjdExvY2tlciYsIHN0ZDo6Y2hyb25vOjpt
aWNyb3NlY29uCiAgICAgaWYgKG1fdm0uZW50cnlTY29wZSkgewogICAgICAgICBkb3VibGUgbm93
VGltZSA9IG1fc3RvcHdhdGNoLT5lbGFwc2VkVGltZSgpOwogCi0gICAgICAgIGF1dG8gbWFjaGlu
ZVRocmVhZHNMb2NrZXIgPSBob2xkTG9jayhtX3ZtLmhlYXAubWFjaGluZVRocmVhZHMoKS5nZXRM
b2NrKCkpOworICAgICAgICBMb2NrSG9sZGVyIG1hY2hpbmVUaHJlYWRzTG9ja2VyKG1fdm0uaGVh
cC5tYWNoaW5lVGhyZWFkcygpLmdldExvY2soKSk7CiAgICAgICAgIExvY2tIb2xkZXIgY29kZUJs
b2NrU2V0TG9ja2VyKG1fdm0uaGVhcC5jb2RlQmxvY2tTZXQoKS5nZXRMb2NrKCkpOwogICAgICAg
ICBMb2NrSG9sZGVyIGV4ZWN1dGFibGVBbGxvY2F0b3JMb2NrZXIoRXhlY3V0YWJsZUFsbG9jYXRv
cjo6c2luZ2xldG9uKCkuZ2V0TG9jaygpKTsKIApAQCAtMzUxLDEyICszNTIsMTIgQEAgdm9pZCBT
YW1wbGluZ1Byb2ZpbGVyOjp0YWtlU2FtcGxlKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgc3RkOjpj
aHJvbm86Om1pY3Jvc2Vjb24KICAgICAgICAgICAgIGJvb2wgdG9wRnJhbWVJc0xMSW50ID0gZmFs
c2U7CiAgICAgICAgICAgICB2b2lkKiBsbGludFBDOwogICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIFBsYXRmb3JtUmVnaXN0ZXJzIHJlZ2lzdGVyczsKKyAgICAgICAgICAgICAgICBNYWNo
aW5lVGhyZWFkczo6TWFjaGluZVRocmVhZDo6UmVnaXN0ZXJzIHJlZ2lzdGVyczsKICAgICAgICAg
ICAgICAgICBtX2pzY0V4ZWN1dGlvblRocmVhZC0+Z2V0UmVnaXN0ZXJzKHJlZ2lzdGVycyk7Ci0g
ICAgICAgICAgICAgICAgbWFjaGluZUZyYW1lID0gTWFjaGluZUNvbnRleHQ6OmZyYW1lUG9pbnRl
cihyZWdpc3RlcnMpOworICAgICAgICAgICAgICAgIG1hY2hpbmVGcmFtZSA9IHJlZ2lzdGVycy5m
cmFtZVBvaW50ZXIoKTsKICAgICAgICAgICAgICAgICBjYWxsRnJhbWUgPSBzdGF0aWNfY2FzdDxF
eGVjU3RhdGUqPihtYWNoaW5lRnJhbWUpOwotICAgICAgICAgICAgICAgIG1hY2hpbmVQQyA9IE1h
Y2hpbmVDb250ZXh0OjppbnN0cnVjdGlvblBvaW50ZXIocmVnaXN0ZXJzKTsKLSAgICAgICAgICAg
ICAgICBsbGludFBDID0gTWFjaGluZUNvbnRleHQ6OmxsaW50SW5zdHJ1Y3Rpb25Qb2ludGVyKHJl
Z2lzdGVycyk7CisgICAgICAgICAgICAgICAgbWFjaGluZVBDID0gcmVnaXN0ZXJzLmluc3RydWN0
aW9uUG9pbnRlcigpOworICAgICAgICAgICAgICAgIGxsaW50UEMgPSByZWdpc3RlcnMubGxpbnRQ
QygpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgLy8gRklYTUU6IExldHMgaGF2ZSBhIHdh
eSBvZiBkZXRlY3Rpbmcgd2hlbiB3ZSdyZSBwYXJzaW5nIGNvZGUuCiAgICAgICAgICAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUyNzYxCkBAIC02NzcsNyAr
Njc4LDcgQEAgdm9pZCBTYW1wbGluZ1Byb2ZpbGVyOjpwYXVzZShjb25zdCBBYnN0cmFjdExvY2tl
ciYpCiB2b2lkIFNhbXBsaW5nUHJvZmlsZXI6Om5vdGljZUN1cnJlbnRUaHJlYWRBc0pTQ0V4ZWN1
dGlvblRocmVhZChjb25zdCBBYnN0cmFjdExvY2tlciYpCiB7CiAgICAgQVNTRVJUKG1fbG9jay5p
c0xvY2tlZCgpKTsKLSAgICBtX2pzY0V4ZWN1dGlvblRocmVhZCA9ICZUaHJlYWQ6OmN1cnJlbnQo
KTsKKyAgICBtX2pzY0V4ZWN1dGlvblRocmVhZCA9IG1fdm0uaGVhcC5tYWNoaW5lVGhyZWFkcygp
Lm1hY2hpbmVUaHJlYWRGb3JDdXJyZW50VGhyZWFkKCk7CiB9CiAKIHZvaWQgU2FtcGxpbmdQcm9m
aWxlcjo6bm90aWNlQ3VycmVudFRocmVhZEFzSlNDRXhlY3V0aW9uVGhyZWFkKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuaAppbmRleCAzOGEx
NzljYThjNmYxYWVjYzhjMDNjZDY0NDBhZjg2NzBmZGY5ZGFiLi43OGI5YmViMjk2Zjc0ZTc5YzZl
ZGEwZDQ5ZGVjNzRkNDdjYmY0OGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU2FtcGxpbmdQcm9maWxlci5oCkBAIC0xOTYsNyArMTk2LDcgQEAgcHJpdmF0ZToKICAg
ICBkb3VibGUgbV9sYXN0VGltZTsKICAgICBMb2NrIG1fbG9jazsKICAgICBSZWZQdHI8VGhyZWFk
PiBtX3RocmVhZDsKLSAgICBSZWZQdHI8VGhyZWFkPiBtX2pzY0V4ZWN1dGlvblRocmVhZDsKKyAg
ICBNYWNoaW5lVGhyZWFkczo6TWFjaGluZVRocmVhZCogbV9qc2NFeGVjdXRpb25UaHJlYWQ7CiAg
ICAgYm9vbCBtX2lzUGF1c2VkOwogICAgIGJvb2wgbV9pc1NodXREb3duOwogICAgIGJvb2wgbV9u
ZWVkc1JlcG9ydEF0RXhpdCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtTWFjaGluZVRocmVhZHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbU1hY2hpbmVUaHJlYWRzLmNwcAppbmRleCA5ZjZiZWNiZWE4YWRiNmQ3NmI5NzEx
YmQ4YjJlNTY2NThlMjE2ZDg4Li4wYTM2N2ZkNWUyMjUyN2U5YzNjODc1MzZlY2ZkNzJiMTNkZjc5
ZDViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWFjaGluZVRo
cmVhZHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NYWNoaW5lVGhy
ZWFkcy5jcHAKQEAgLTU1LDggKzU1LDEwIEBAIHZvaWQgc3RhcnRUcmFja2luZ0N1cnJlbnRUaHJl
YWQoKQogdm9pZCByZXNldEluc3RydWN0aW9uQ2FjaGVPbkFsbFRocmVhZHMoKQogewogICAgIGF1
dG8gbG9ja2VyID0gaG9sZExvY2sod2FzbVRocmVhZHMoKS5nZXRMb2NrKCkpOwotICAgIGZvciAo
YXV0byogdGhyZWFkIDogd2FzbVRocmVhZHMoKS50aHJlYWRzKGxvY2tlcikpIHsKLSAgICAgICAg
c2VuZE1lc3NhZ2UoKnRocmVhZCwgW10gKGNvbnN0IFBsYXRmb3JtUmVnaXN0ZXJzJikgeworCisg
ICAgY29uc3QgRG91Ymx5TGlua2VkTGlzdDxNYWNoaW5lVGhyZWFkczo6TWFjaGluZVRocmVhZD4m
IHRocmVhZHMgPSB3YXNtVGhyZWFkcygpLnRocmVhZHNMaXN0SGVhZChsb2NrZXIpOworICAgIGZv
ciAoY29uc3QgYXV0byogdGhyZWFkID0gdGhyZWFkcy5oZWFkKCk7IHRocmVhZDsgdGhyZWFkID0g
dGhyZWFkLT5uZXh0KCkpIHsKKyAgICAgICAgc2VuZE1lc3NhZ2UodGhyZWFkLT5tX3RocmVhZC5n
ZXQoKSwgW10gKGNvbnN0IFBsYXRmb3JtUmVnaXN0ZXJzJikgewogICAgICAgICAgICAgLy8gSXQn
cyBsaWtlbHkgdGhhdCB0aGUgc2lnbmFsIGhhbmRsZXIgd2lsbCBhbHJlYWR5IHJlc2V0IHRoZSBp
bnN0cnVjdGlvbiBjYWNoZSBidXQgd2UgbWlnaHQgYXMgd2VsbCBiZSBzdXJlLgogICAgICAgICAg
ICAgV1RGOjpjcm9zc01vZGlmeWluZ0NvZGVGZW5jZSgpOwogICAgICAgICB9KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV1RG
L1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDc4ODZmMTZjOTI0ZGE0YzI4NzBj
Y2I0ZjlkNzFlNTFlNWRhZjc4YWQuLjJlOTZjODMwNWMwYThiMWU0NDgzZDYzYzU4YThjN2ExZDNm
Y2EwMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTMx
LDcgKzEzMSw2IEBACiAJCURDRUUyMjAxMUNFQTc1NTEwMDBDMjM5NiAvKiBCbG9ja09iakNFeGNl
cHRpb25zLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RENFRTIxRkQxQ0VBNzU1MTAwMEMyMzk2IC8qIEJsb2NrT2JqQ0V4Y2VwdGlvbnMubW0gKi87IH07
CiAJCURDRUUyMjAzMUNFQTc1NTEwMDBDMjM5NiAvKiBQbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5n
dWFnZXNNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBEQ0VFMjFGRjFDRUE3NTUxMDAwQzIzOTYgLyogUGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3Vh
Z2VzTWFjLm1tICovOyB9OwogCQlFMTU1NTZGNTE4QTBDQzE4MDA2RjQ4RkIgLyogQ3J5cHRvZ3Jh
cGhpY1V0aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMTU1NTZGMzE4QTBDQzE4MDA2RjQ4RkIgLyogQ3J5cHRvZ3JhcGhpY1V0aWxpdGll
cy5jcHAgKi87IH07Ci0JCUUzMTFGQjE3MUYwQTU2OEIwMDNDMDhERSAvKiBUaHJlYWRHcm91cC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzExRkIx
NTFGMEE1NjhCMDAzQzA4REUgLyogVGhyZWFkR3JvdXAuY3BwICovOyB9OwogCQlFMzIwMEFCODFF
OUE1MzZEMDAzQjU5RDIgLyogVGhyZWFkSG9sZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMjAwQUI1MUU5QTUzNkQwMDNCNTlEMiAvKiBUaHJl
YWRIb2xkZXIuY3BwICovOyB9OwogCQlFMzhDNDEyNTFFQjRFMDRDMDA0Mjk1N0QgLyogQ1BVVGlt
ZUNvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTM4QzQxMjQxRUI0RTA0QzAwNDI5NTdEIC8qIENQVVRpbWVDb2NvYS5tbSAqLzsgfTsKIAkJRTM4
QzQxMjgxRUI0RTA2ODAwNDI5NTdEIC8qIENQVVRpbWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4QzQxMjYxRUI0RTA2ODAwNDI5NTdEIC8qIENQ
VVRpbWUuY3BwICovOyB9OwpAQCAtNTQwLDggKzUzOSw2IEBACiAJCURFNUEwOUZCMUJBMzY5OTIw
MDNENDQyNCAvKiBDb21tb25DcnlwdG9TUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQ29tbW9uQ3J5cHRvU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUx
NTU1NkYzMThBMENDMTgwMDZGNDhGQiAvKiBDcnlwdG9ncmFwaGljVXRpbGl0aWVzLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENyeXB0b2dyYXBoaWNVdGlsaXRpZXMu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTU1NTZGNDE4QTBDQzE4MDA2RjQ4
RkIgLyogQ3J5cHRvZ3JhcGhpY1V0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBDcnlwdG9ncmFwaGljVXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCUUzMTFGQjE1MUYwQTU2OEIwMDNDMDhERSAvKiBUaHJlYWRHcm91cC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUaHJlYWRHcm91cC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUUzMTFGQjE2MUYwQTU2OEIwMDNDMDhERSAvKiBUaHJlYWRH
cm91cC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUaHJlYWRHcm91cC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzIwMEFCNDFFOUE1MzZEMDAzQjU5RDIgLyog
UGxhdGZvcm1SZWdpc3RlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxh
dGZvcm1SZWdpc3RlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMyMDBBQjUx
RTlBNTM2RDAwM0I1OUQyIC8qIFRocmVhZEhvbGRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBUaHJlYWRIb2xkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFMzIwMEFCNjFFOUE1MzZEMDAzQjU5RDIgLyogVGhyZWFkSG9sZGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRocmVhZEhvbGRlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtOTU5LDggKzk1Niw2IEBACiAJCQkJRTNFMTU4MjUxRUFEQTUzQzAw
NEEwNzlEIC8qIFN5c3RlbUZyZWUuaCAqLywKIAkJCQkwRkIzMTdDMzFDNDg4MDAxMDA3RTM5NUEg
LyogU3lzdGVtVHJhY2luZy5oICovLAogCQkJCUE4QTQ3MzJGMTUxQTgyNUIwMDQxMjNGRiAvKiBU
aHJlYWRGdW5jdGlvbkludm9jYXRpb24uaCAqLywKLQkJCQlFMzExRkIxNTFGMEE1NjhCMDAzQzA4
REUgLyogVGhyZWFkR3JvdXAuY3BwICovLAotCQkJCUUzMTFGQjE2MUYwQTU2OEIwMDNDMDhERSAv
KiBUaHJlYWRHcm91cC5oICovLAogCQkJCUUzMjAwQUI1MUU5QTUzNkQwMDNCNTlEMiAvKiBUaHJl
YWRIb2xkZXIuY3BwICovLAogCQkJCUUzMjAwQUI2MUU5QTUzNkQwMDNCNTlEMiAvKiBUaHJlYWRI
b2xkZXIuaCAqLywKIAkJCQlBOEE0NzMzMDE1MUE4MjVCMDA0MTIzRkYgLyogVGhyZWFkSG9sZGVy
UHRocmVhZHMuY3BwICovLApAQCAtMTM5Myw3ICsxMzg4LDYgQEAKIAkJCQlBOEE0NzQ0ODE1MUE4
MjVCMDA0MTIzRkYgLyogVGhyZWFkSG9sZGVyUHRocmVhZHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQThBNDc0NEExNTFBODI1QjAwNDEyM0ZGIC8qIFRocmVhZGluZy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlBOEE0NzQ0RTE1MUE4MjVCMDA0MTIzRkYgLyogVGhyZWFkaW5nUHRocmVhZHMuY3Bw
IGluIFNvdXJjZXMgKi8sCi0JCQkJRTMxMUZCMTcxRjBBNTY4QjAwM0MwOERFIC8qIFRocmVhZEdy
b3VwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzMTFCRDVDMUVBODIyRjkwMDUyNTI4MSAvKiBU
aHJlYWRNZXNzYWdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNjZCMjkwMURDOTdCQUIwMDRB
MUQzRiAvKiBUaW1lV2l0aER5bmFtaWNDbG9ja1R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MUMxODFDOEYxRDMwN0FCODAwRjVGQTE2IC8qIFVUZXh0UHJvdmlkZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9BdXRvbWF0aWNUaHJlYWQuY3BwIGIvU291
cmNlL1dURi93dGYvQXV0b21hdGljVGhyZWFkLmNwcAppbmRleCA2OTBjODBmZTI2MzM1NjZlMzk1
ZDA0NGJiMzY5M2RlNzU2YTlmOTQzLi44MTExODc2MGIzOTY4ZGNkMDI0YjQ5MWQxMjk3NGE4NTAy
YjE4OGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9BdXRvbWF0aWNUaHJlYWQuY3BwCisr
KyBiL1NvdXJjZS9XVEYvd3RmL0F1dG9tYXRpY1RocmVhZC5jcHAKQEAgLTI3LDcgKzI3LDYgQEAK
ICNpbmNsdWRlICJBdXRvbWF0aWNUaHJlYWQuaCIKIAogI2luY2x1ZGUgIkRhdGFMb2cuaCIKLSNp
bmNsdWRlICJUaHJlYWRpbmcuaCIKIAogbmFtZXNwYWNlIFdURiB7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50
eHQKaW5kZXggMjA3MzNhMmViZGIyODZiZDYxNjVkNWMzOGFkMzNkY2ZjN2Y3NWQzZi4uOTM2YWZi
NTk4MDFkODUyN2I4ZDAwOWJiN2JiNTIwYjhmYzQzM2M4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQK
QEAgLTEzMiw3ICsxMzIsNiBAQCBzZXQoV1RGX0hFQURFUlMKICAgICBTdHJpbmdQcmludFN0cmVh
bS5oCiAgICAgU3lzdGVtRnJlZS5oCiAgICAgU3lzdGVtVHJhY2luZy5oCi0gICAgVGhyZWFkR3Jv
dXAuaAogICAgIFRocmVhZEhvbGRlci5jcHAKICAgICBUaHJlYWRNZXNzYWdlLmgKICAgICBUaHJl
YWRTYWZlUmVmQ291bnRlZC5oCkBAIC0yNDcsNyArMjQ2LDYgQEAgc2V0KFdURl9TT1VSQ0VTCiAg
ICAgU3RhY2tTdGF0cy5jcHAKICAgICBTdGFja1RyYWNlLmNwcAogICAgIFN0cmluZ1ByaW50U3Ry
ZWFtLmNwcAotICAgIFRocmVhZEdyb3VwLmNwcAogICAgIFRocmVhZE1lc3NhZ2UuY3BwCiAgICAg
VGhyZWFkaW5nLmNwcAogICAgIFRpbWVXaXRoRHluYW1pY0Nsb2NrVHlwZS5jcHAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL0Nyb3NzVGhyZWFkQ29waWVyLmggYi9Tb3VyY2UvV1RGL3d0Zi9D
cm9zc1RocmVhZENvcGllci5oCmluZGV4IDgzZjdiNGIxODEzNGYwZjA5NmJmN2FkODY1OTVlODRm
MjMzZGNhYzMuLjNmNjQ5ZGJmNzkxNzMxZDUxZTY0YTJiYmZlMTFmNWNhOTI5M2YwMzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Nyb3NzVGhyZWFkQ29waWVyLmgKKysrIGIvU291cmNlL1dU
Ri93dGYvQ3Jvc3NUaHJlYWRDb3BpZXIuaApAQCAtMzUsNyArMzUsNiBAQAogI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXVEYgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvUGFya2luZ0xvdC5oIGIvU291cmNlL1dURi93dGYvUGFya2luZ0xvdC5oCmlu
ZGV4IDg0ODdhYWExOWRlMWQwNjA0OWUzMDc0YjhlOGFhNWY3YjRkNWM1OWQuLmIzOGZmMzBjODQw
NTQyMzU0YTYyNzcwYzVkYTg1MmVlZjU4MDU2MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L1BhcmtpbmdMb3QuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QYXJraW5nTG90LmgKQEAgLTI4LDEy
ICsyOCwxMSBAQAogCiAjaW5jbHVkZSA8d3RmL0F0b21pY3MuaD4KICNpbmNsdWRlIDx3dGYvU2Nv
cGVkTGFtYmRhLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogI2luY2x1ZGUgPHd0Zi9U
aW1lV2l0aER5bmFtaWNDbG9ja1R5cGUuaD4KIAogbmFtZXNwYWNlIFdURiB7CiAKLWNsYXNzIFRo
cmVhZDsKLQogY2xhc3MgUGFya2luZ0xvdCB7CiAgICAgUGFya2luZ0xvdCgpID0gZGVsZXRlOwog
ICAgIFBhcmtpbmdMb3QoY29uc3QgUGFya2luZ0xvdCYpID0gZGVsZXRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvVGhyZWFkR3JvdXAuY3BwIGIvU291cmNlL1dURi93dGYvVGhyZWFkR3Jv
dXAuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NTA1OWJlZTk3OTE5NjRjNWY1
ZmQxMWNmNWYxMDExMzVkMmRhYmRhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZEdyb3VwLmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDcwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgWXVzdWtlIFN1enVr
aSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
Ci0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlRocmVhZEdyb3Vw
LmgiCi0KLSNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLQotbmFtZXNwYWNlIFdURiB7
Ci0KLXN0ZDo6bXV0ZXgmIFRocmVhZEdyb3VwOjpkZXN0cnVjdGlvbk11dGV4KCkKLXsKLSAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8c3RkOjptdXRleD4gbXV0ZXg7Ci0gICAgcmV0dXJuIG11dGV4
LmdldCgpOwotfQotCi1UaHJlYWRHcm91cDo6flRocmVhZEdyb3VwKCkKLXsKLSAgICBhdXRvIGRl
c3RydWN0aW9uTXV0ZXhMb2NrZXIgPSBob2xkTG9jayhkZXN0cnVjdGlvbk11dGV4KCkpOwotICAg
IGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsKLSAgICBmb3IgKGF1dG8qIHRocmVhZCA6
IG1fdGhyZWFkcykKLSAgICAgICAgdGhyZWFkLT5yZW1vdmVGcm9tVGhyZWFkR3JvdXAoZGVzdHJ1
Y3Rpb25NdXRleExvY2tlciwgKnRoaXMpOwotfQotCi1ib29sIFRocmVhZEdyb3VwOjphZGQoVGhy
ZWFkJiB0aHJlYWQpCi17Ci0gICAgYXV0byBkZXN0cnVjdGlvbk11dGV4TG9ja2VyID0gaG9sZExv
Y2soZGVzdHJ1Y3Rpb25NdXRleCgpKTsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbG9j
ayk7Ci0gICAgaWYgKCF0aHJlYWQuY2FuQWRkVG9UaHJlYWRHcm91cChkZXN0cnVjdGlvbk11dGV4
TG9ja2VyKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChtX3RocmVhZHMuYWRkKCZ0
aHJlYWQpLmlzTmV3RW50cnkpCi0gICAgICAgIHRocmVhZC5hZGRUb1RocmVhZEdyb3VwKGRlc3Ry
dWN0aW9uTXV0ZXhMb2NrZXIsICp0aGlzKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBU
aHJlYWRHcm91cDo6YWRkQ3VycmVudFRocmVhZCgpCi17Ci0gICAgYm9vbCBpc0FkZGVkID0gYWRk
KFRocmVhZDo6Y3VycmVudCgpKTsKLSAgICBBU1NFUlRfVU5VU0VEKGlzQWRkZWQsIGlzQWRkZWQp
OwotfQotCi12b2lkIFRocmVhZEdyb3VwOjpyZW1vdmVDdXJyZW50VGhyZWFkKGNvbnN0IEFic3Ry
YWN0TG9ja2VyJiwgVGhyZWFkJiB0aHJlYWQpCi17Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9j
ayhtX2xvY2spOwotICAgIG1fdGhyZWFkcy5yZW1vdmUoJnRocmVhZCk7Ci19Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGhyZWFkR3JvdXAuaCBiL1Nv
dXJjZS9XVEYvd3RmL1RocmVhZEdyb3VwLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDJjZGNiYWQzMzg0YjE2ZDBjMjUwNTg5MjY5Zjc4YjQzNDcwNzNkZGQuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dURi93dGYvVGhyZWFkR3Jv
dXAuaAorKysgL2Rldi9udWxsCkBAIC0xLDY1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTcgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRl
IDx3dGYvTGlzdEhhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvTG9jay5oPgotI2luY2x1ZGUgPHd0
Zi9UaHJlYWRpbmcuaD4KLQotbmFtZXNwYWNlIFdURiB7Ci0KLWNsYXNzIFRocmVhZEdyb3VwIDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFRocmVhZEdyb3VwPiB7Ci1wdWJsaWM6Ci0gICAg
ZnJpZW5kIGNsYXNzIFRocmVhZDsKLQotICAgIHN0YXRpYyBSZWY8VGhyZWFkR3JvdXA+IGNyZWF0
ZSgpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUaHJlYWRHcm91cCgpKTsK
LSAgICB9Ci0KLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBhZGQoVGhyZWFkJik7Ci0gICAg
V1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgYWRkQ3VycmVudFRocmVhZCgpOwotCi0gICAgY29uc3Qg
TGlzdEhhc2hTZXQ8VGhyZWFkKj4mIHRocmVhZHMoY29uc3QgQWJzdHJhY3RMb2NrZXImKSBjb25z
dCB7IHJldHVybiBtX3RocmVhZHM7IH0KLQotICAgIHN0ZDo6bXV0ZXgmIGdldExvY2soKSB7IHJl
dHVybiBtX2xvY2s7IH0KLQotICAgIFdURl9FWFBPUlRfUFJJVkFURSB+VGhyZWFkR3JvdXAoKTsK
LQotcHJpdmF0ZToKLSAgICBUaHJlYWRHcm91cCgpID0gZGVmYXVsdDsKLQotICAgIHN0YXRpYyBz
dGQ6Om11dGV4JiBkZXN0cnVjdGlvbk11dGV4KCk7Ci0gICAgdm9pZCByZW1vdmVDdXJyZW50VGhy
ZWFkKGNvbnN0IEFic3RyYWN0TG9ja2VyJiBkZXN0cnVjdGlvbk11dGV4TG9ja2VyLCBUaHJlYWQm
KTsKLQotICAgIC8vIFdlIHVzZSBzdGQ6Om11dGV4IHNpbmNlIGl0IGNhbiBiZSB1c2VkIHdoZW4g
ZGVhbGxvY2F0aW5nIFRMUy4KLSAgICBzdGQ6Om11dGV4IG1fbG9jazsKLSAgICBMaXN0SGFzaFNl
dDxUaHJlYWQqPiBtX3RocmVhZHM7Ci19OwotCi19Ci0KLXVzaW5nIFdURjo6VGhyZWFkR3JvdXA7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuY3BwIGIvU291cmNlL1dURi93
dGYvVGhyZWFkaW5nLmNwcAppbmRleCAyOTJiYmQwYzBhZGFkOGZjYzYzN2RmNGUzODQ1YzM2M2Y2
YWRhNmEyLi44MzYyZWUzOGY4NWMwNzg2MzMwNzFlOTBkMjI0NDFlMDc3ODk0ZTNjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL1Ro
cmVhZGluZy5jcHAKQEAgLTI2LDEzICsyNiwxNCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIlRocmVhZGluZy5oIgogCisjaW5jbHVkZSAiZHRvYS5oIgorI2luY2x1ZGUgImR0b2Ev
Y2FjaGVkLXBvd2Vycy5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxjbWF0aD4K
ICNpbmNsdWRlIDxjc3RyaW5nPgogI2luY2x1ZGUgPHd0Zi9EYXRlTWF0aC5oPgogI2luY2x1ZGUg
PHd0Zi9QcmludFN0cmVhbS5oPgogI2luY2x1ZGUgPHd0Zi9SYW5kb21OdW1iZXJTZWVkLmg+Ci0j
aW5jbHVkZSA8d3RmL1RocmVhZEdyb3VwLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZEhvbGRlci5o
PgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRNZXNzYWdlLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGlu
Z1ByaW1pdGl2ZXMuaD4KQEAgLTEyOSw0OCArMTMwLDEyIEBAIHZvaWQgVGhyZWFkOjppbml0aWFs
aXplKCkKICAgICBtX3N0YWNrID0gU3RhY2tCb3VuZHM6OmN1cnJlbnRUaHJlYWRTdGFja0JvdW5k
cygpOwogfQogCi1zdGF0aWMgYm9vbCBzaG91bGRSZW1vdmVUaHJlYWRGcm9tVGhyZWFkR3JvdXAo
KQotewotI2lmIE9TKFdJTkRPV1MpCi0gICAgLy8gT24gV2luZG93cyB0aGUgdGhyZWFkIHNwZWNp
ZmljIGRlc3RydWN0b3IgaXMgYWxzbyBjYWxsZWQgd2hlbiB0aGUKLSAgICAvLyBtYWluIHRocmVh
ZCBpcyBleGl0aW5nLiBUaGlzIG1heSBsZWFkIHRvIHRoZSBtYWluIHRocmVhZCB3YWl0aW5nCi0g
ICAgLy8gZm9yZXZlciBmb3IgdGhlIHRocmVhZCBncm91cCBsb2NrIHdoZW4gZXhpdGluZywgaWYg
dGhlIHNhbXBsaW5nCi0gICAgLy8gcHJvZmlsZXIgdGhyZWFkIHdhcyB0ZXJtaW5hdGVkIGJ5IHRo
ZSBzeXN0ZW0gd2hpbGUgaG9sZGluZyB0aGUKLSAgICAvLyB0aHJlYWQgZ3JvdXAgbG9jay4KLSAg
ICBpZiAoV1RGOjppc01haW5UaHJlYWQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotI2VuZGlm
Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgVGhyZWFkOjpjYW5BZGRUb1RocmVhZEdyb3Vw
KGNvbnN0IEFic3RyYWN0TG9ja2VyJikKLXsKLSAgICBzdGQ6OmxvY2tfZ3VhcmQ8c3RkOjptdXRl
eD4gbG9ja2VyKG1fbXV0ZXgpOwotICAgIHJldHVybiAhbV9kaWRFeGl0OwotfQotCiB2b2lkIFRo
cmVhZDo6ZGlkRXhpdCgpCiB7Ci0gICAgYXV0byBkZXN0cnVjdGlvbk11dGV4TG9ja2VyID0gaG9s
ZExvY2soVGhyZWFkR3JvdXA6OmRlc3RydWN0aW9uTXV0ZXgoKSk7Ci0gICAgaWYgKHNob3VsZFJl
bW92ZVRocmVhZEZyb21UaHJlYWRHcm91cCgpKSB7Ci0gICAgICAgIGZvciAoYXV0byogdGhyZWFk
R3JvdXAgOiBtX3RocmVhZEdyb3VwcykKLSAgICAgICAgICAgIHRocmVhZEdyb3VwLT5yZW1vdmVD
dXJyZW50VGhyZWFkKGRlc3RydWN0aW9uTXV0ZXhMb2NrZXIsICp0aGlzKTsKLSAgICB9CiAgICAg
c3RkOjpsb2NrX2d1YXJkPHN0ZDo6bXV0ZXg+IGxvY2tlcihtX211dGV4KTsKICAgICBtX2RpZEV4
aXQgPSB0cnVlOwogfQogCi12b2lkIFRocmVhZDo6YWRkVG9UaHJlYWRHcm91cChjb25zdCBBYnN0
cmFjdExvY2tlciYgZGVzdHJ1Y3Rpb25NdXRleExvY2tlciwgVGhyZWFkR3JvdXAmIHRocmVhZEdy
b3VwKQotewotICAgIEFTU0VSVF9VTlVTRUQoZGVzdHJ1Y3Rpb25NdXRleExvY2tlciwgY2FuQWRk
VG9UaHJlYWRHcm91cChkZXN0cnVjdGlvbk11dGV4TG9ja2VyKSk7Ci0gICAgbV90aHJlYWRHcm91
cHMuYWRkKCZ0aHJlYWRHcm91cCk7Ci19Ci0KLXZvaWQgVGhyZWFkOjpyZW1vdmVGcm9tVGhyZWFk
R3JvdXAoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBUaHJlYWRHcm91cCYgdGhyZWFkR3JvdXApCi17
Ci0gICAgbV90aHJlYWRHcm91cHMucmVtb3ZlKCZ0aHJlYWRHcm91cCk7Ci19Ci0KIHZvaWQgVGhy
ZWFkOjpzZXRDdXJyZW50VGhyZWFkSXNVc2VySW50ZXJhY3RpdmUoaW50IHJlbGF0aXZlUHJpb3Jp
dHkpCiB7CiAjaWYgSEFWRShRT1NfQ0xBU1NFUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L1RocmVhZGluZy5oIGIvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmgKaW5kZXggNjA1ZTUxN2M2
OTk4MzE3ZDI0MzRjMGYwNmU2NDMyNzNiYWI0NTkwMS4uODg4MWNjZWU4ZGE0MGUzZDBmNDJhYjgw
Njg0ODMwMDk4NzY2OWFiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmgK
KysrIGIvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmgKQEAgLTM2LDcgKzM2LDYgQEAKICNpbmNs
dWRlIDx3dGYvQXRvbWljcy5oPgogI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgogI2luY2x1ZGUg
PHd0Zi9GdW5jdGlvbi5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3Rm
L1BsYXRmb3JtUmVnaXN0ZXJzLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9TdGFja0JvdW5kcy5oPgpAQCAtNDksMTkgKzQ4LDE2IEBACiAKIG5hbWVzcGFjZSBXVEYg
ewogCi1jbGFzcyBBYnN0cmFjdExvY2tlcjsKIGNsYXNzIFRocmVhZE1lc3NhZ2VEYXRhOwogCiB1
c2luZyBUaHJlYWRJZGVudGlmaWVyID0gdWludDMyX3Q7CiB0eXBlZGVmIHZvaWQgKCpUaHJlYWRG
dW5jdGlvbikodm9pZCogYXJndW1lbnQpOwogCi1jbGFzcyBUaHJlYWRHcm91cDsKIGNsYXNzIFRo
cmVhZEhvbGRlcjsKIGNsYXNzIFByaW50U3RyZWFtOwogCiBjbGFzcyBUaHJlYWQgOiBwdWJsaWMg
VGhyZWFkU2FmZVJlZkNvdW50ZWQ8VGhyZWFkPiB7CiBwdWJsaWM6Ci0gICAgZnJpZW5kIGNsYXNz
IFRocmVhZEdyb3VwOwogICAgIGZyaWVuZCBjbGFzcyBUaHJlYWRIb2xkZXI7CiAKICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgflRocmVhZCgpOwpAQCAtMTc5LDE3ICsxNzUsMTEgQEAgcHJvdGVjdGVk
OgogICAgIHZvaWQgZGlkSm9pbigpIHsgbV9qb2luYWJsZVN0YXRlID0gSm9pbmVkOyB9CiAgICAg
Ym9vbCBoYXNFeGl0ZWQoKSB7IHJldHVybiBtX2RpZEV4aXQ7IH0KIAotICAgIC8vIFRoZXNlIGZ1
bmN0aW9ucyBhcmUgb25seSBjYWxsZWQgZnJvbSBUaHJlYWRHcm91cC4KLSAgICBib29sIGNhbkFk
ZFRvVGhyZWFkR3JvdXAoY29uc3QgQWJzdHJhY3RMb2NrZXImIGRlc3RydWN0aW9uTXV0ZXhMb2Nr
ZXIpOwotICAgIHZvaWQgYWRkVG9UaHJlYWRHcm91cChjb25zdCBBYnN0cmFjdExvY2tlciYgZGVz
dHJ1Y3Rpb25NdXRleExvY2tlciwgVGhyZWFkR3JvdXAmKTsKLSAgICB2b2lkIHJlbW92ZUZyb21U
aHJlYWRHcm91cChjb25zdCBBYnN0cmFjdExvY2tlciYgZGVzdHJ1Y3Rpb25NdXRleExvY2tlciwg
VGhyZWFkR3JvdXAmKTsKLQogICAgIC8vIFdvcmRMb2NrICYgTG9jayByZWx5IG9uIFRocmVhZFNw
ZWNpZmljLiBCdXQgVGhyZWFkIG9iamVjdCBjYW4gYmUgZGVzdHJveWVkIGV2ZW4gYWZ0ZXIgVGhy
ZWFkU3BlY2lmaWMgdGhpbmdzIGFyZSBkZXN0cm95ZWQuCiAgICAgc3RkOjptdXRleCBtX211dGV4
OwogICAgIFRocmVhZElkZW50aWZpZXIgbV9pZCB7IDAgfTsKICAgICBKb2luYWJsZVN0YXRlIG1f
am9pbmFibGVTdGF0ZSB7IEpvaW5hYmxlIH07CiAgICAgU3RhY2tCb3VuZHMgbV9zdGFjayB7IFN0
YWNrQm91bmRzOjplbXB0eUJvdW5kcygpIH07Ci0gICAgSGFzaFNldDxUaHJlYWRHcm91cCo+IG1f
dGhyZWFkR3JvdXBzOwogICAgIGJvb2wgbV9kaWRFeGl0IHsgZmFsc2UgfTsKICNpZiBVU0UoUFRI
UkVBRFMpCiAgICAgcHRocmVhZF90IG1faGFuZGxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9SZXNvdXJjZVVzYWdlVGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Jlc291
cmNlVXNhZ2VUaHJlYWQuaAppbmRleCA5NDE2Yzc2YjZhMDkwMDU1NzllOWNiZWYyOTY5YzQwMDRm
YjkxMDE4Li44MjRiNjQ4MzUxZDEzNTdjNzg5NDk0ZjI0MmQzNGI5ZDg3MGFmMGU1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Jlc291cmNlVXNhZ2VUaHJlYWQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1Jlc291cmNlVXNhZ2VUaHJlYWQuaApAQCAtMzUsNyArMzUsNiBAQAog
I2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAj
aW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgog
CiBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIFZNOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL0FzeW5jUmVxdWVzdC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FzeW5jUmVxdWVz
dC5oCmluZGV4IDc4YjI0MGRlYzFiMmIyZWIzNzA2NDViYWI2NDdiNWUxNzEzZjE1YWIuLjQyNzc2
MTY5MTM5Yzg5N2I2YzFjYTAyNjI1ZTc4NzYwM2ZkNTRiMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9Bc3luY1JlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
QXN5bmNSZXF1ZXN0LmgKQEAgLTI3LDcgKzI3LDYgQEAKICNpZm5kZWYgQXN5bmNSZXF1ZXN0X2gK
ICNkZWZpbmUgQXN5bmNSZXF1ZXN0X2gKIAotI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
U3RvcmFnZS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9TdG9yYWdlL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4IDJlNzFl
OWZlNDEwNDRjYjBkNDUyYzhkOWM0Y2Y5ZjVkMGIxMGFmYzMuLjIzYmI3NDJiYjA5MTc4MTJlMWVl
ZjMxYzIwMzU5MjNhZDU2MmRkMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9TdG9yYWdlL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9TdG9yYWdlL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCkBAIC0y
OSw3ICsyOSw2IEBACiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFz
aFNldC5oPgogI2luY2x1ZGUgPHd0Zi9Nb25vdG9uaWNUaW1lLmg+Ci0jaW5jbHVkZSA8d3RmL1Ro
cmVhZFNhZmVSZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1dhbGxUaW1lLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCAwYWUzZDYwNGQyNzBiNTk5ZDcxMzAzZTdhYmM1ZWE3ZjY2
Y2E2Nzk5Li5lMTc1NGUxZDZiNGFmYjk3YzdhYWU0ODFmNWM5MzZjMjM1MDVlZjI1IDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUg
QEAKKzIwMTctMDctMDcgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgor
CisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMTkyMzgsIHIyMTkyMzksIGFuZCBy
MjE5MjQxLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTc0MjY1CisKKyAgICAgICAgImZhc3Qvd29ya2Vycy9kZWRpY2F0ZWQtd29ya2VyLWxpZmVjeWNs
ZS5odG1sIGlzIGZsYWt5IgorICAgICAgICAoUmVxdWVzdGVkIGJ5IHl1c3VrZXN1enVraSBvbiAj
d2Via2l0KS4KKworICAgICAgICBSZXZlcnRlZCBjaGFuZ2VzZXRzOgorCisgICAgICAgICJbV1RG
XSBJbXBsZW1lbnQgV1RGOjpUaHJlYWRHcm91cCIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDA4MQorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQu
b3JnL2NoYW5nZXNldC8yMTkyMzgKKworICAgICAgICAiVW5yZXZpZXdlZCwgYnVpbGQgZml4IGFm
dGVyIHIyMTkyMzgiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzQwODEKKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjE5
MjM5CisKKyAgICAgICAgIlVucmV2aWV3ZWQsIENMb29wIGJ1aWxkIGZpeCBhZnRlciByMjE5MjM4
IgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0MDgx
CisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzIxOTI0MQorCiAyMDE3
LTA3LTA3ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAg
IFtHVEtdW1dQRV0gRW5hYmxlIFgtQ29udGVudC1UeXBlLU9wdGlvbnM6IG5vc25pZmYKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL0NNYWtlTGlzdHMudHh0CmluZGV4IGRjMjUxY2FkYzdlNTk5NGY5YTNkODk2ZWEwZjdi
NmYwZjFkNWQ1NjAuLjc5OWZkZDgzZjc4NmY5ZTE2M2Y5YzcwN2M1YWI5ZTIwNzg0MzBmYTUgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dApAQCAtODEsNyArODEsNiBAQCBzZXQoVGVzdFdU
Rl9TT1VSQ0VTCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL1N0cmluZ09wZXJh
dG9ycy5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvU3RyaW5nVmlldy5j
cHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvVGV4dEJyZWFrSXRlcmF0b3Iu
Y3BwCi0gICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL1RocmVhZEdyb3VwLmNwcAog
ICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9UaW1lLmNwcAogICAgICR7VEVTVFdF
QktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9VbmlxdWVSZWYuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJ
X0RJUn0vVGVzdHMvV1RGL1ZhcmlhbnQuY3BwCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGY2
MWNjMWM1YWVlNzY3MjVkMTk5Yjc3NTUzNzQ4N2E2ZWI1MjlmZGEuLmY2ODUwNjBjZWJmNTljNDY4
ZjA5MmM5YmEzODVkZjM5NmI3ZmI2OTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02MzEs
NyArNjMxLDYgQEAKIAkJRDM0RTA4NzYxRTRFNDJFMTAwNUZGMTRBIC8qIFdLV2ViVmlld0dldENv
bnRlbnRzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RDNCRTVFMzQxRTRDRTg1RTAwRkQ1NjNBIC8qIFdLV2ViVmlld0dldENvbnRlbnRzLm1tICovOyB9
OwogCQlFMTIyMERDQTE1NUIyOEFBMDAxM0UyRkMgLyogTWVtb3J5Q2FjaGVEaXNhYmxlV2l0aGlu
UmVzb3VyY2VMb2FkRGVsZWdhdGUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTIyMERDOTE1NUIyODdEMDAxM0UyRkMgLyogTWVtb3J5
Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUuaHRtbCAqLzsgfTsKIAkJRTE5
NEUxQkQxNzdFNTNDNzAwOUM0RDRFIC8qIFN0b3BMb2FkaW5nRnJvbURpZFJlY2VpdmVSZXNwb25z
ZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUxOTRFMUJDMTc3RTUzNEEwMDlDNEQ0RSAvKiBTdG9wTG9hZGluZ0Zyb21EaWRSZWNlaXZl
UmVzcG9uc2UuaHRtbCAqLzsgfTsKLQkJRTNERUE4MTExRjBBNTg5MDAwQ0JDMkU4IC8qIFRocmVh
ZEdyb3VwLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzREVBODEwMUYwQTU4ODAwMENCQzJFOCAvKiBUaHJlYWRHcm91cC5jcHAgKi87IH07CiAJCUVD
QTY4MENFMUU2OENDMDkwMDczMUQyMCAvKiBTdHJpbmdVdGlsaXRpZXMubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFQ0E2ODBDRDFFNjhDQzA5MDA3MzFE
MjAgLyogU3RyaW5nVXRpbGl0aWVzLm1tICovOyB9OwogCQlGNDE1MDg2RDFEQTA0MEM1MDA0NEJF
OUIgLyogcGxheS1hdWRpby1vbi1jbGljay5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0MTUwODZDMURBMDQwQzEwMDQ0QkU5QiAvKiBw
bGF5LWF1ZGlvLW9uLWNsaWNrLmh0bWwgKi87IH07CiAJCUY0MUFCOTlGMUVGNDY5NkIwMDgzRkEw
OCAvKiBhdXRvZm9jdXMtY29udGVudGVkaXRhYmxlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQxQUI5OTgxRUY0NjkyQzAwODNGQTA4
IC8qIGF1dG9mb2N1cy1jb250ZW50ZWRpdGFibGUuaHRtbCAqLzsgfTsKQEAgLTE2MTAsNyArMTYw
OSw2IEBACiAJCUUxOTRFMUJBMTc3RTUxNDUwMDlDNEQ0RSAvKiBTdG9wTG9hZGluZ0Zyb21EaWRS
ZWNlaXZlUmVzcG9uc2UubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBTdG9wTG9hZGluZ0Zyb21EaWRSZWNlaXZlUmVzcG9uc2UubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUxOTRFMUJDMTc3RTUzNEEwMDlDNEQ0RSAvKiBTdG9wTG9hZGluZ0Zyb21E
aWRSZWNlaXZlUmVzcG9uc2UuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IFN0b3BMb2FkaW5nRnJvbURpZFJlY2Vp
dmVSZXNwb25zZS5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTlEQjk3ODFC
MzIxMzdDMDBEQjM4RDQgLyogTmF2aWdhdG9yTGFuZ3VhZ2UubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBOYXZpZ2F0b3JMYW5ndWFnZS5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJRTNERUE4MTAxRjBBNTg4MDAwQ0JDMkU4IC8qIFRocmVhZEdyb3Vw
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRocmVhZEdyb3VwLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQwMDE5MzAxQUNFOUI1QzAwMUIwQTJB
IC8qIEJsb29tRmlsdGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEJsb29tRmlsdGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQ5MDI5Njcx
NEUyRTNBNDAwMkJFREQxIC8qIFR5cGluZ1N0eWxlQ3Jhc2gubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBUeXBpbmdTdHlsZUNyYXNoLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFNEE3NTdEMzE3OEFFQTVCMDBCNUQ3QTQgLyogRGVxdWUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gRGVxdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMjM5Myw3ICsyMzkxLDYgQEAKIAkJCQk3Qzc0RDQyRDE4ODIyOEYzMDBFNUVENTcgLyogU3Ry
aW5nVmlldy5jcHAgKi8sCiAJCQkJNTU5N0Y4MzQxRDk1OTZDODAwNjZCQzIxIC8qIFN5bmNocm9u
aXplZEZpeGVkUXVldWUuY3BwICovLAogCQkJCTkzMjlBQTI4MURFM0Y4MUUwMDNBQkQwNyAvKiBU
ZXh0QnJlYWtJdGVyYXRvci5jcHAgKi8sCi0JCQkJRTNERUE4MTAxRjBBNTg4MDAwQ0JDMkU4IC8q
IFRocmVhZEdyb3VwLmNwcCAqLywKIAkJCQk1MzExQkQ1RDFFQTk0OTBEMDA1MjUyODEgLyogVGhy
ZWFkTWVzc2FnZXMuY3BwICovLAogCQkJCTBGMkMyMEI3MURDRDU0NDgwMDU0MkQ5RSAvKiBUaW1l
LmNwcCAqLywKIAkJCQk1QzVFNjMzRDFEMEI2Nzk0MDA4NUEwMjUgLyogVW5pcXVlUmVmLmNwcCAq
LywKQEAgLTI4OTMsNyArMjg5MCw2IEBACiAJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsK
IAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKLQkJCQlFM0RF
QTgxMTFGMEE1ODkwMDBDQkMyRTggLyogVGhyZWFkR3JvdXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJN0M4M0RFOTkxRDBBNTkwQzAwRkVCQ0YzIC8qIEF0b21pY1N0cmluZy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxQURBRDE1MDFENzdBOUY2MDAyMTI1ODYgLyogQmxvY2tQdHIubW0gaW4gU291
cmNlcyAqLywKIAkJCQk3QzgzREU5QzFEMEE1OTBDMDBGRUJDRjMgLyogQmxvb21GaWx0ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9UaHJlYWRHcm91cC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9UaHJlYWRH
cm91cC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRiZTRkMzgwYmRjMDRkM2Ix
OTYzMzBiOWU2NDBkOWFkMTNlZjI4YjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVGhyZWFkR3JvdXAu
Y3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTQ1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTcgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaW5jbHVkZSA8d3RmL0NvbmRpdGlvbi5oPgotI2luY2x1
ZGUgPHd0Zi9UaHJlYWRHcm91cC5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNw
YWNlIFRlc3RXZWJLaXRBUEkgewotCi1lbnVtIGNsYXNzIE1vZGUgeyBBZGQsIEFkZEN1cnJlbnRU
aHJlYWQgfTsKLXN0YXRpYyB2b2lkIHRlc3RUaHJlYWRHcm91cChNb2RlIG1vZGUpCi17Ci0gICAg
UmVmPFRocmVhZEdyb3VwPiB0aHJlYWRHcm91cCA9IFRocmVhZEdyb3VwOjpjcmVhdGUoKTsKLSAg
ICB1bnNpZ25lZCBudW1iZXJPZlRocmVhZHMgPSAxNjsKLSAgICB1bnNpZ25lZCB3YWl0aW5nVGhy
ZWFkcyA9IDA7Ci0gICAgYm9vbCByZXN0YXJ0aW5nID0gZmFsc2U7Ci0gICAgTG9jayBsb2NrOwot
ICAgIENvbmRpdGlvbiBjb25kaXRpb247Ci0gICAgQ29uZGl0aW9uIHJlc3RhcnRDb25kaXRpb247
Ci0gICAgVmVjdG9yPFJlZlB0cjxUaHJlYWQ+PiB0aHJlYWRzOwotCi0gICAgewotICAgICAgICBh
dXRvIGxvY2tlciA9IGhvbGRMb2NrKGxvY2spOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbnVtYmVyT2ZUaHJlYWRzOyArK2kpIHsKLSAgICAgICAgICAgIFJlZlB0cjxUaHJlYWQ+
IHRocmVhZCA9IFRocmVhZDo6Y3JlYXRlKCJUaHJlYWRHcm91cFdvcmtlciIsIFsmXSB7Ci0gICAg
ICAgICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhsb2NrKTsKLSAgICAgICAgICAgICAg
ICBpZiAobW9kZSA9PSBNb2RlOjpBZGRDdXJyZW50VGhyZWFkKQotICAgICAgICAgICAgICAgICAg
ICB0aHJlYWRHcm91cC0+YWRkQ3VycmVudFRocmVhZCgpOwotICAgICAgICAgICAgICAgICsrd2Fp
dGluZ1RocmVhZHM7Ci0gICAgICAgICAgICAgICAgY29uZGl0aW9uLm5vdGlmeU9uZSgpOwotICAg
ICAgICAgICAgICAgIHJlc3RhcnRDb25kaXRpb24ud2FpdChsb2NrLCBbJl0gewotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gcmVzdGFydGluZzsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAg
ICAgICAgIH0pOwotICAgICAgICAgICAgaWYgKG1vZGUgPT0gTW9kZTo6QWRkKQotICAgICAgICAg
ICAgICAgIEVYUEVDVF9FUSh0aHJlYWRHcm91cC0+YWRkKCp0aHJlYWQpLCB0cnVlKTsKLSAgICAg
ICAgICAgIHRocmVhZHMuYXBwZW5kKHRocmVhZCk7Ci0gICAgICAgIH0KLQotICAgICAgICBjb25k
aXRpb24ud2FpdChsb2NrLCBbJl0gewotICAgICAgICAgICAgcmV0dXJuIHdhaXRpbmdUaHJlYWRz
ID09IG51bWJlck9mVGhyZWFkczsKLSAgICAgICAgfSk7Ci0gICAgfQotCi0gICAgewotICAgICAg
ICBhdXRvIHRocmVhZEdyb3VwTG9ja2VyID0gaG9sZExvY2sodGhyZWFkR3JvdXAtPmdldExvY2so
KSk7Ci0gICAgICAgIEVYUEVDVF9FUSh0aHJlYWRzLnNpemUoKSwgbnVtYmVyT2ZUaHJlYWRzKTsK
LSAgICAgICAgRVhQRUNUX0VRKHRocmVhZEdyb3VwLT50aHJlYWRzKHRocmVhZEdyb3VwTG9ja2Vy
KS5zaXplKCksIG51bWJlck9mVGhyZWFkcyk7Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGF1dG8g
bG9ja2VyID0gaG9sZExvY2sobG9jayk7Ci0gICAgICAgICAgICByZXN0YXJ0aW5nID0gdHJ1ZTsK
LSAgICAgICAgICAgIHJlc3RhcnRDb25kaXRpb24ubm90aWZ5QWxsKCk7Ci0gICAgICAgIH0KLQot
ICAgICAgICAvLyBXaGlsZSBob2xkaW5nIFRocmVhZEdyb3VwIGxvY2ssIHRocmVhZHMgZG8gbm90
IGV4aXQuCi0gICAgICAgIFdURjo6c2xlZXAoMC4xKTsKLSAgICAgICAgRVhQRUNUX0VRKHRocmVh
ZEdyb3VwLT50aHJlYWRzKHRocmVhZEdyb3VwTG9ja2VyKS5zaXplKCksIG51bWJlck9mVGhyZWFk
cyk7Ci0gICAgfQotICAgIHsKLSAgICAgICAgZm9yIChhdXRvJiB0aHJlYWQgOiB0aHJlYWRzKQot
ICAgICAgICAgICAgdGhyZWFkLT53YWl0Rm9yQ29tcGxldGlvbigpOwotCi0gICAgICAgIGF1dG8g
dGhyZWFkR3JvdXBMb2NrZXIgPSBob2xkTG9jayh0aHJlYWRHcm91cC0+Z2V0TG9jaygpKTsKLSAg
ICAgICAgRVhQRUNUX0VRKHRocmVhZEdyb3VwLT50aHJlYWRzKHRocmVhZEdyb3VwTG9ja2VyKS5z
aXplKCksIDB1KTsKLSAgICB9Ci19Ci0KLVRFU1QoV1RGLCBUaHJlYWRHcm91cEFkZCkKLXsKLSAg
ICB0ZXN0VGhyZWFkR3JvdXAoTW9kZTo6QWRkKTsKLX0KLQotVEVTVChXVEYsIFRocmVhZEdyb3Vw
QWRkQ3VycmVudFRocmVhZCkKLXsKLSAgICB0ZXN0VGhyZWFkR3JvdXAoTW9kZTo6QWRkQ3VycmVu
dFRocmVhZCk7Ci19Ci0KLVRFU1QoV1RGLCBUaHJlYWRHcm91cERvTm90QWRkRGVhZFRocmVhZCkK
LXsKLSAgICBSZWY8VGhyZWFkR3JvdXA+IHRocmVhZEdyb3VwID0gVGhyZWFkR3JvdXA6OmNyZWF0
ZSgpOwotICAgIFJlZlB0cjxUaHJlYWQ+IHRocmVhZCA9IFRocmVhZDo6Y3JlYXRlKCJUaHJlYWRH
cm91cFdvcmtlciIsIFsmXSB7IH0pOwotICAgIHRocmVhZC0+d2FpdEZvckNvbXBsZXRpb24oKTsK
LSAgICBFWFBFQ1RfRVEodGhyZWFkR3JvdXAtPmFkZCgqdGhyZWFkKSwgZmFsc2UpOwotCi0gICAg
YXV0byB0aHJlYWRHcm91cExvY2tlciA9IGhvbGRMb2NrKHRocmVhZEdyb3VwLT5nZXRMb2NrKCkp
OwotICAgIEVYUEVDVF9FUSh0aHJlYWRHcm91cC0+dGhyZWFkcyh0aHJlYWRHcm91cExvY2tlciku
c2l6ZSgpLCAwdSk7Ci19Ci0KLVRFU1QoV1RGLCBUaHJlYWRHcm91cEFkZER1cGxpY2F0ZVRocmVh
ZHMpCi17Ci0gICAgYm9vbCByZXN0YXJ0aW5nID0gZmFsc2U7Ci0gICAgTG9jayBsb2NrOwotICAg
IENvbmRpdGlvbiByZXN0YXJ0Q29uZGl0aW9uOwotICAgIFJlZjxUaHJlYWRHcm91cD4gdGhyZWFk
R3JvdXAgPSBUaHJlYWRHcm91cDo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPFRocmVhZD4gdGhyZWFk
ID0gVGhyZWFkOjpjcmVhdGUoIlRocmVhZEdyb3VwV29ya2VyIiwgWyZdIHsKLSAgICAgICAgYXV0
byBsb2NrZXIgPSBob2xkTG9jayhsb2NrKTsKLSAgICAgICAgcmVzdGFydENvbmRpdGlvbi53YWl0
KGxvY2ssIFsmXSB7Ci0gICAgICAgICAgICByZXR1cm4gcmVzdGFydGluZzsKLSAgICAgICAgfSk7
Ci0gICAgfSk7Ci0gICAgRVhQRUNUX0VRKHRocmVhZEdyb3VwLT5hZGQoKnRocmVhZCksIHRydWUp
OwotICAgIEVYUEVDVF9FUSh0aHJlYWRHcm91cC0+YWRkKCp0aHJlYWQpLCB0cnVlKTsKLQotICAg
IHsKLSAgICAgICAgYXV0byB0aHJlYWRHcm91cExvY2tlciA9IGhvbGRMb2NrKHRocmVhZEdyb3Vw
LT5nZXRMb2NrKCkpOwotICAgICAgICBFWFBFQ1RfRVEodGhyZWFkR3JvdXAtPnRocmVhZHModGhy
ZWFkR3JvdXBMb2NrZXIpLnNpemUoKSwgMXUpOwotICAgIH0KLQotICAgIHsKLSAgICAgICAgYXV0
byBsb2NrZXIgPSBob2xkTG9jayhsb2NrKTsKLSAgICAgICAgcmVzdGFydGluZyA9IHRydWU7Ci0g
ICAgICAgIHJlc3RhcnRDb25kaXRpb24ubm90aWZ5QWxsKCk7Ci0gICAgfQotICAgIHRocmVhZC0+
d2FpdEZvckNvbXBsZXRpb24oKTsKLSAgICB7Ci0gICAgICAgIGF1dG8gdGhyZWFkR3JvdXBMb2Nr
ZXIgPSBob2xkTG9jayh0aHJlYWRHcm91cC0+Z2V0TG9jaygpKTsKLSAgICAgICAgRVhQRUNUX0VR
KHRocmVhZEdyb3VwLT50aHJlYWRzKHRocmVhZEdyb3VwTG9ja2VyKS5zaXplKCksIDB1KTsKLSAg
ICB9Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkK
</data>

          </attachment>
      

    </bug>

</bugzilla>