<?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>206933</bug_id>
          
          <creation_ts>2020-01-29 08:03:06 -0800</creation_ts>
          <short_desc>REGRESSION(r255345): &quot;It breaks some internals builds&quot; (Requested by youenn on #webkit).</short_desc>
          <delta_ts>2020-01-29 08:11:14 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>206582</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>eric.carlson</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1612450</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-29 08:03:06 -0800</bug_when>
    <thetext>https://trac.webkit.org/changeset/255345 broke the build:
&quot;It breaks some internals builds&quot; (Requested by youenn 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>1612452</commentid>
    <comment_count>1</comment_count>
      <attachid>389139</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-29 08:03:13 -0800</bug_when>
    <thetext>Created attachment 389139
ROLLOUT of r255345

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>1612458</commentid>
    <comment_count>2</comment_count>
      <attachid>389139</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-29 08:10:28 -0800</bug_when>
    <thetext>Comment on attachment 389139
ROLLOUT of r255345

Clearing flags on attachment: 389139

Committed r255356: &lt;https://trac.webkit.org/changeset/255356&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1612459</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-29 08:10:29 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1612460</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-01-29 08:11:14 -0800</bug_when>
    <thetext>&lt;rdar://problem/58991648&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>389139</attachid>
            <date>2020-01-29 08:03:13 -0800</date>
            <delta_ts>2020-01-29 08:10:28 -0800</delta_ts>
            <desc>ROLLOUT of r255345</desc>
            <filename>bug-206933-20200129080312.patch</filename>
            <type>text/plain</type>
            <size>133120</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU1MzU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTA2YTE1ZDMxN2E4MmU3
OTUxNjhmNDNiZTNiMWFmOTVjNDYxMGQ5Mi4uNmU1OTQ1MDYwZjlkMThmYWIzODNlZDFhNjI3ZWFl
MzljNWUzNDhkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIwLTAxLTI5ICBDb21t
aXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KKworICAgICAgICBVbnJldmlld2Vk
LCByb2xsaW5nIG91dCByMjU1MzQ1LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjA2OTMzCisKKyAgICAgICAgIkl0IGJyZWFrcyBzb21lIGludGVybmFs
cyBidWlsZHMiIChSZXF1ZXN0ZWQgYnkgeW91ZW5uIG9uCisgICAgICAgICN3ZWJraXQpLgorCisg
ICAgICAgIFJldmVydGVkIGNoYW5nZXNldDoKKworICAgICAgICAiW0NvY29hXSBVc2UgQVZBc3Nl
dFdyaXRlckRlbGVnYXRlIHRvIGltcGxlbWVudCBNZWRpYVJlY29yZGVyIgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2NTgyCisgICAgICAgIGh0dHBz
Oi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yNTUzNDUKKwogMjAyMC0wMS0yOSAgeW91ZW5u
IGZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgQmxvYiBtZWRpYSBsb2FkaW5n
IGRvZXMgbm90IHdvcmsgd2l0aCBHUFVQcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9QQUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCAyOWQy
M2Y2NDhmNDJiZjM2NTk5OWJkZjQ2NGQ4ZmE3ZmU3YjAwZGJhLi5iY2JkZTlkNzRjZDM1OTNjOTdi
MWM3M2I0OGExYzI4ZjBhMmU3Y2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBA
QAorMjAyMC0wMS0yOSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjI1NTM0NS4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjkzMworCisgICAgICAgICJJdCBi
cmVha3Mgc29tZSBpbnRlcm5hbHMgYnVpbGRzIiAoUmVxdWVzdGVkIGJ5IHlvdWVubiBvbgorICAg
ICAgICAjd2Via2l0KS4KKworICAgICAgICBSZXZlcnRlZCBjaGFuZ2VzZXQ6CisKKyAgICAgICAg
IltDb2NvYV0gVXNlIEFWQXNzZXRXcml0ZXJEZWxlZ2F0ZSB0byBpbXBsZW1lbnQgTWVkaWFSZWNv
cmRlciIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
NjU4MgorICAgICAgICBodHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjU1MzQ1CisK
IDIwMjAtMDEtMjkgIHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAg
IFtDb2NvYV0gVXNlIEFWQXNzZXRXcml0ZXJEZWxlZ2F0ZSB0byBpbXBsZW1lbnQgTWVkaWFSZWNv
cmRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDNmODE0NmFkMTU1YWZjYzA4NThkNjhiM2QyNzRlMzkyZTBmZjQ3ZTguLmE0MTlh
Yzk4YjRkMTkyYzlmMzYxZGIxOTc3M2YyYjZmYjhlMGM5Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTExNSwxMCArMTE1LDYg
QEAKIAkJMkUxMzQyQ0MyMTVBQTEwQTAwNzE5OUQyIC8qIFVJS2l0U29mdExpbmsuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFMTM0MkNBMjE1QUExMEEw
MDcxOTlEMiAvKiBVSUtpdFNvZnRMaW5rLmggKi87IH07CiAJCTJFMTM0MkNEMjE1QUExMEEwMDcx
OTlEMiAvKiBVSUtpdFNvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMkUxMzQyQ0IyMTVBQTEwQTAwNzE5OUQyIC8qIFVJS2l0U29mdExpbmsu
bW0gKi87IH07CiAJCTMxMzA4QjE0MjBBMjE3MDUwMDNGQjkyOSAvKiBTeXN0ZW1QcmV2aWV3U1BJ
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTMwOEIx
MzIwQTIxNzA1MDAzRkI5MjkgLyogU3lzdGVtUHJldmlld1NQSS5oICovOyB9OwotCQk0MTZFOTk1
MzIzREFFNkJFMDBFODcxQ0IgLyogQXVkaW9Ub29sYm94U29mdExpbmsuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2RTk5NTEyM0RBRTZCRDAwRTg3
MUNCIC8qIEF1ZGlvVG9vbGJveFNvZnRMaW5rLmNwcCAqLzsgfTsKLQkJNDE2RTk5NTQyM0RBRTZC
RTAwRTg3MUNCIC8qIEF1ZGlvVG9vbGJveFNvZnRMaW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTZFOTk1MjIzREFFNkJFMDBFODcxQ0IgLyogQXVk
aW9Ub29sYm94U29mdExpbmsuaCAqLzsgfTsKLQkJNDE2RTk5NTcyM0RBRUZGODAwRTg3MUNCIC8q
IFZpZGVvVG9vbGJveFNvZnRMaW5rLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxNkU5OTU1MjNEQUVGRjcwMEU4NzFDQiAvKiBWaWRlb1Rvb2xib3hT
b2Z0TGluay5jcHAgKi87IH07Ci0JCTQxNkU5OTU4MjNEQUVGRjgwMEU4NzFDQiAvKiBWaWRlb1Rv
b2xib3hTb2Z0TGluay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDE2RTk5NTYyM0RBRUZGNzAwRTg3MUNCIC8qIFZpZGVvVG9vbGJveFNvZnRMaW5rLmgg
Ki87IH07CiAJCTQ0Mjk1NkNEMjE4QTcyREYwMDgwREI1NCAvKiBSZXZlYWxTUEkuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0Mjk1NkNDMjE4QTcyREUw
MDgwREI1NCAvKiBSZXZlYWxTUEkuaCAqLzsgfTsKIAkJNDQ1MEZDOUYyMUY1RjYwMjAwNERGQTU2
IC8qIFF1aWNrTG9va1NvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDQ1MEZDOUQyMUY1RjYwMjAwNERGQTU2IC8qIFF1aWNrTG9va1NvZnRM
aW5rLm1tICovOyB9OwogCQk0NDUwRkNBMDIxRjVGNjAyMDA0REZBNTYgLyogUXVpY2tMb29rU29m
dExpbmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0
NTBGQzlFMjFGNUY2MDIwMDRERkE1NiAvKiBRdWlja0xvb2tTb2Z0TGluay5oICovOyB9OwpAQCAt
Mjk1LDEwICsyOTEsNiBAQAogCQkyRTEzNDJDQjIxNUFBMTBBMDA3MTk5RDIgLyogVUlLaXRTb2Z0
TGluay5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFVJS2l0U29m
dExpbmsubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxMzA4QjEzMjBBMjE3MDUw
MDNGQjkyOSAvKiBTeXN0ZW1QcmV2aWV3U1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN5c3RlbVByZXZp
ZXdTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzcxMTlBNzgyMENDQjVGRjAw
MkM2REM5IC8qIFdlYktpdFRhcmdldENvbmRpdGlvbmFscy54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGgg
PSBXZWJLaXRUYXJnZXRDb25kaXRpb25hbHMueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTQxNkU5OTUxMjNEQUU2QkQwMEU4NzFDQiAvKiBBdWRpb1Rvb2xib3hTb2Z0TGlu
ay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdWRpb1Rvb2xib3hT
b2Z0TGluay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQxNkU5OTUyMjNEQUU2
QkUwMEU4NzFDQiAvKiBBdWRpb1Rvb2xib3hTb2Z0TGluay5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBBdWRpb1Rvb2xib3hTb2Z0TGluay5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQk0MTZFOTk1NTIzREFFRkY3MDBFODcxQ0IgLyogVmlkZW9Ub29sYm94U29mdExp
bmsuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVmlkZW9Ub29sYm94
U29mdExpbmsuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MTZFOTk1NjIzREFF
RkY3MDBFODcxQ0IgLyogVmlkZW9Ub29sYm94U29mdExpbmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gVmlkZW9Ub29sYm94U29mdExpbmsuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDQyOTU2Q0MyMThBNzJERTAwODBEQjU0IC8qIFJldmVhbFNQSS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXZlYWxTUEkuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDQ1MEZDOUQyMUY1RjYwMjAwNERGQTU2IC8qIFF1aWNrTG9va1NvZnRM
aW5rLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUXVpY2tMb29r
U29mdExpbmsubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0NTBGQzlFMjFGNUY2
MDIwMDRERkE1NiAvKiBRdWlja0xvb2tTb2Z0TGluay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBRdWlja0xvb2tTb2Z0TGluay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNTMyLDEyICs1MjQsOCBAQAogCQkwQ0Y5OUNBNTFGNzM4NDFDMDA3RUU3OTMgLyogY2Yg
Ki8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTQxNkU5OTUx
MjNEQUU2QkQwMEU4NzFDQiAvKiBBdWRpb1Rvb2xib3hTb2Z0TGluay5jcHAgKi8sCi0JCQkJNDE2
RTk5NTIyM0RBRTZCRTAwRTg3MUNCIC8qIEF1ZGlvVG9vbGJveFNvZnRMaW5rLmggKi8sCiAJCQkJ
MENGOTlDQTYxRjczODQzNjAwN0VFNzkzIC8qIENvcmVNZWRpYVNvZnRMaW5rLmNwcCAqLywKIAkJ
CQkwQ0Y5OUNBNzFGNzM4NDM3MDA3RUU3OTMgLyogQ29yZU1lZGlhU29mdExpbmsuaCAqLywKLQkJ
CQk0MTZFOTk1NTIzREFFRkY3MDBFODcxQ0IgLyogVmlkZW9Ub29sYm94U29mdExpbmsuY3BwICov
LAotCQkJCTQxNkU5OTU2MjNEQUVGRjcwMEU4NzFDQiAvKiBWaWRlb1Rvb2xib3hTb2Z0TGluay5o
ICovLAogCQkJKTsKIAkJCXBhdGggPSBjZjsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBA
IC03MjcsNyArNzE1LDYgQEAKIAkJCWZpbGVzID0gKAogCQkJCTU3RkQzMThCMjJCMzU5ODkwMDhE
MEU4QiAvKiBBcHBTU09Tb2Z0TGluay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTc2Q0E5RDYyMkI4
NTRBQjAwMzAxNDNDIC8qIEFwcFNTT1NQSS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDE2RTk5NTQy
M0RBRTZCRTAwRTg3MUNCIC8qIEF1ZGlvVG9vbGJveFNvZnRMaW5rLmggaW4gSGVhZGVycyAqLywK
IAkJCQkyRDAyRTkzQzIwNTZGQUE3MDBBMTM3OTcgLyogQXVkaW9Ub29sYm94U1BJLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1NzJBMTA3ODIyQjQ1NkY1MDBGNDEwQzggLyogQXV0aEtpdFNQSS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMDc3RTg3QjIyMjZBNDYwMzAwQTJBRkYwIC8qIEFWRm91bmRhdGlv
blNvZnRMaW5rLmggaW4gSGVhZGVycyAqLywKQEAgLTg1MSw3ICs4MzgsNiBAQAogCQkJCTJFMTM0
MkNDMjE1QUExMEEwMDcxOTlEMiAvKiBVSUtpdFNvZnRMaW5rLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwQzVBRjkyMjFGNDNBNEM3MDAyRUFDMDIgLyogVUlLaXRTUEkuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBDMkRBMTQ3MUYzQkVCNDkwMERCQzMxNyAvKiBVUkxGb3JtYXR0aW5nU1BJLmggaW4gSGVh
ZGVycyAqLywKLQkJCQk0MTZFOTk1ODIzREFFRkY4MDBFODcxQ0IgLyogVmlkZW9Ub29sYm94U29m
dExpbmsuaCBpbiBIZWFkZXJzICovLAogCQkJCTBDMkRBMTU5MUYzQkVCNDkwMERCQzMxNyAvKiBX
ZWJGaWx0ZXJFdmFsdWF0b3JTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCUExMDgyNkY5MUY1NzYy
OTIwMDQ3NzJBQyAvKiBXZWJQYW5lbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwpAQCAtOTQ0LDcg
KzkzMCw2IEBACiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAo
CiAJCQkJNTdGRDMxOEEyMkIzNTkzRTAwOEQwRThCIC8qIEFwcFNTT1NvZnRMaW5rLm1tIGluIFNv
dXJjZXMgKi8sCi0JCQkJNDE2RTk5NTMyM0RBRTZCRTAwRTg3MUNCIC8qIEF1ZGlvVG9vbGJveFNv
ZnRMaW5rLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3N0U4N0IxMjI2QTQ2MDIwMEEyQUZGMCAv
KiBBVkZvdW5kYXRpb25Tb2Z0TGluay5tbSBpbiBTb3VyY2VzICovLAogCQkJCTBDNUZGRjBGMUY3
OEQ5REEwMDlFRkYxQSAvKiBDbG9ja0NNLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMENGOTlDQTgx
RjczODQzNzAwN0VFNzkzIC8qIENvcmVNZWRpYVNvZnRMaW5rLmNwcCBpbiBTb3VyY2VzICovLApA
QCAtOTcxLDcgKzk1Niw2IEBACiAJCQkJQTNBQjZFNTcxRjNEMUREQjAwOUMxNEIxIC8qIFN5c3Rl
bVNsZWVwTGlzdGVuZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTNBQjZFNjUxRjNEMjE3RjAw
OUMxNEIxIC8qIFN5c3RlbVNsZWVwTGlzdGVuZXJNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQky
RTEzNDJDRDIxNUFBMTBBMDA3MTk5RDIgLyogVUlLaXRTb2Z0TGluay5tbSBpbiBTb3VyY2VzICov
LAotCQkJCTQxNkU5OTU3MjNEQUVGRjgwMEU4NzFDQiAvKiBWaWRlb1Rvb2xib3hTb2Z0TGluay5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlBMTA4MjZGQTFGNTc2MjkyMDA0NzcyQUMgLyogV2ViUGFu
ZWwubW0gaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rw
cm9jZXNzaW5nID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvQXVk
aW9Ub29sYm94U29mdExpbmsuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9BdWRpb1Rv
b2xib3hTb2Z0TGluay5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFjZjU1MDU2
YWNkYTZmNTY1M2FkYzdlMTdlYzAyYTJkODI2ZTQ0N2YuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9BdWRpb1Rv
b2xib3hTb2Z0TGluay5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAqIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIFVTRShBVkZPVU5EQVRJT04pCi0KLSNp
bmNsdWRlIDxBdWRpb1Rvb2xib3gvQXVkaW9Db252ZXJ0ZXIuaD4KLSNpbmNsdWRlIDxBdWRpb1Rv
b2xib3gvQXVkaW9Gb3JtYXQuaD4KLQotI2luY2x1ZGUgPHd0Zi9Tb2Z0TGlua2luZy5oPgotCi1T
T0ZUX0xJTktfRlJBTUVXT1JLX0ZPUl9TT1VSQ0UoUEFMLCBBdWRpb1Rvb2xib3gpCi0KLVNPRlRf
TElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQXVkaW9Ub29sYm94LCBBdWRpb0Zvcm1hdEdl
dFByb3BlcnR5LCBPU1N0YXR1cywgKEF1ZGlvRm9ybWF0UHJvcGVydHlJRCBpblByb3BlcnR5SUQs
IFVJbnQzMiBpblNwZWNpZmllclNpemUsIGNvbnN0IHZvaWQqIGluU3BlY2lmaWVyLCBVSW50MzIq
IGlvUHJvcGVydHlEYXRhU2l6ZSwgdm9pZCogb3V0UHJvcGVydHlEYXRhKSwgKGluUHJvcGVydHlJ
RCwgaW5TcGVjaWZpZXJTaXplLCBpblNwZWNpZmllciwgaW9Qcm9wZXJ0eURhdGFTaXplLCBvdXRQ
cm9wZXJ0eURhdGEpKQotU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBBdWRpb1Rv
b2xib3gsIEF1ZGlvQ29udmVydGVyTmV3LCBPU1N0YXR1cywgKGNvbnN0IEF1ZGlvU3RyZWFtQmFz
aWNEZXNjcmlwdGlvbiogaW5Tb3VyY2VGb3JtYXQsIGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNj
cmlwdGlvbiogaW5EZXN0aW5hdGlvbkZvcm1hdCwgQXVkaW9Db252ZXJ0ZXJSZWYqIG91dEF1ZGlv
Q29udmVydGVyKSwgKGluU291cmNlRm9ybWF0LCBpbkRlc3RpbmF0aW9uRm9ybWF0LCBvdXRBdWRp
b0NvbnZlcnRlcikpCi1TT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIEF1ZGlvVG9v
bGJveCwgQXVkaW9Db252ZXJ0ZXJTZXRQcm9wZXJ0eSwgT1NTdGF0dXMsIChBdWRpb0NvbnZlcnRl
clJlZiBpbkF1ZGlvQ29udmVydGVyLCBBdWRpb0NvbnZlcnRlclByb3BlcnR5SUQgaW5Qcm9wZXJ0
eUlELCBVSW50MzIgaW5Qcm9wZXJ0eURhdGFTaXplLCBjb25zdCB2b2lkKiBpblByb3BlcnR5RGF0
YSksIChpbkF1ZGlvQ29udmVydGVyLCBpblByb3BlcnR5SUQsIGluUHJvcGVydHlEYXRhU2l6ZSwg
aW5Qcm9wZXJ0eURhdGEpKQotU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBBdWRp
b1Rvb2xib3gsIEF1ZGlvQ29udmVydGVyR2V0UHJvcGVydHksIE9TU3RhdHVzLCAoQXVkaW9Db252
ZXJ0ZXJSZWYgaW5BdWRpb0NvbnZlcnRlciwgQXVkaW9Db252ZXJ0ZXJQcm9wZXJ0eUlEIGluUHJv
cGVydHlJRCwgVUludDMyKiBpb1Byb3BlcnR5RGF0YVNpemUsIHZvaWQqIG91dFByb3BlcnR5RGF0
YSksIChpbkF1ZGlvQ29udmVydGVyLCBpblByb3BlcnR5SUQsIGlvUHJvcGVydHlEYXRhU2l6ZSwg
b3V0UHJvcGVydHlEYXRhKSkKLQotI2VuZGlmIC8vIFVTRShBVkZPVU5EQVRJT04pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL0F1ZGlvVG9vbGJveFNvZnRMaW5rLmggYi9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL0F1ZGlvVG9vbGJveFNvZnRMaW5rLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA3MzExODcxNzRhYzE1NTQ0MzcxZGVlMDNiMTQzMmUzZTY1
NjMyZTAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9BdWRpb1Rvb2xib3hTb2Z0TGluay5oCisrKyAvZGV2L251
bGwKQEAgLTEsNDMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgotICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTCi0gKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIFVT
RShBVkZPVU5EQVRJT04pCi0KLSNpbmNsdWRlIDx3dGYvU29mdExpbmtpbmcuaD4KLQotU09GVF9M
SU5LX0ZSQU1FV09SS19GT1JfSEVBREVSKFBBTCwgQXVkaW9Ub29sYm94KQotCi1TT0ZUX0xJTktf
RlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIEF1ZGlvVG9vbGJveCwgQXVkaW9Db252ZXJ0ZXJHZXRQ
cm9wZXJ0eSwgT1NTdGF0dXMsIChBdWRpb0NvbnZlcnRlclJlZiBpbkF1ZGlvQ29udmVydGVyLCBB
dWRpb0NvbnZlcnRlclByb3BlcnR5SUQgaW5Qcm9wZXJ0eUlELCBVSW50MzIqIGlvUHJvcGVydHlE
YXRhU2l6ZSwgdm9pZCogb3V0UHJvcGVydHlEYXRhKSwgKGluQXVkaW9Db252ZXJ0ZXIsIGluUHJv
cGVydHlJRCwgaW9Qcm9wZXJ0eURhdGFTaXplLCBvdXRQcm9wZXJ0eURhdGEpKQotI2RlZmluZSBB
dWRpb0NvbnZlcnRlckdldFByb3BlcnR5IHNvZnRMaW5rX0F1ZGlvVG9vbGJveF9BdWRpb0NvbnZl
cnRlckdldFByb3BlcnR5Ci1TT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIEF1ZGlv
VG9vbGJveCwgQXVkaW9Db252ZXJ0ZXJOZXcsIE9TU3RhdHVzLCAoY29uc3QgQXVkaW9TdHJlYW1C
YXNpY0Rlc2NyaXB0aW9uKiBpblNvdXJjZUZvcm1hdCwgY29uc3QgQXVkaW9TdHJlYW1CYXNpY0Rl
c2NyaXB0aW9uKiBpbkRlc3RpbmF0aW9uRm9ybWF0LCBBdWRpb0NvbnZlcnRlclJlZiogb3V0QXVk
aW9Db252ZXJ0ZXIpLCAoaW5Tb3VyY2VGb3JtYXQsIGluRGVzdGluYXRpb25Gb3JtYXQsIG91dEF1
ZGlvQ29udmVydGVyKSkKLSNkZWZpbmUgQXVkaW9Db252ZXJ0ZXJOZXcgc29mdExpbmtfQXVkaW9U
b29sYm94X0F1ZGlvQ29udmVydGVyTmV3Ci1TT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQ
QUwsIEF1ZGlvVG9vbGJveCwgQXVkaW9Db252ZXJ0ZXJTZXRQcm9wZXJ0eSwgT1NTdGF0dXMsIChB
dWRpb0NvbnZlcnRlclJlZiBpbkF1ZGlvQ29udmVydGVyLCBBdWRpb0NvbnZlcnRlclByb3BlcnR5
SUQgaW5Qcm9wZXJ0eUlELCBVSW50MzIgaW5Qcm9wZXJ0eURhdGFTaXplLCBjb25zdCB2b2lkKiBp
blByb3BlcnR5RGF0YSksIChpbkF1ZGlvQ29udmVydGVyLCBpblByb3BlcnR5SUQsIGluUHJvcGVy
dHlEYXRhU2l6ZSwgaW5Qcm9wZXJ0eURhdGEpKQotI2RlZmluZSBBdWRpb0NvbnZlcnRlclNldFBy
b3BlcnR5IHNvZnRMaW5rX0F1ZGlvVG9vbGJveF9BdWRpb0NvbnZlcnRlclNldFByb3BlcnR5Ci1T
T0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIEF1ZGlvVG9vbGJveCwgQXVkaW9Gb3Jt
YXRHZXRQcm9wZXJ0eSwgT1NTdGF0dXMsIChBdWRpb0Zvcm1hdFByb3BlcnR5SUQgaW5Qcm9wZXJ0
eUlELCBVSW50MzIgaW5TcGVjaWZpZXJTaXplLCBjb25zdCB2b2lkKiBpblNwZWNpZmllciwgVUlu
dDMyKiBpb1Byb3BlcnR5RGF0YVNpemUsIHZvaWQqIG91dFByb3BlcnR5RGF0YSksIChpblByb3Bl
cnR5SUQsIGluU3BlY2lmaWVyU2l6ZSwgaW5TcGVjaWZpZXIsIGlvUHJvcGVydHlEYXRhU2l6ZSwg
b3V0UHJvcGVydHlEYXRhKSkKLSNkZWZpbmUgQXVkaW9Gb3JtYXRHZXRQcm9wZXJ0eSBzb2Z0TGlu
a19BdWRpb1Rvb2xib3hfQXVkaW9Gb3JtYXRHZXRQcm9wZXJ0eQotCi0KLSNlbmRpZiAvLyBVU0Uo
QVZGT1VOREFUSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9Db3Jl
TWVkaWFTb2Z0TGluay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL0NvcmVNZWRpYVNv
ZnRMaW5rLmNwcAppbmRleCBkYzhhYjQxY2JjNzhiYTE5Y2VjZGRhN2ZjZmE3MGQ5MzUwOTNjMjNh
Li4yYjgyMzEzNjVjYjlhYWY5MzU5N2YxODdmYTIyYzE0OWJlNDJmYjNhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmNwcApAQCAtNDYsNyArNDYs
NiBAQCBTT0ZUX0xJTktfRlJBTUVXT1JLX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEpCiAKIFNP
RlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhLCBDTUJsb2NrQnVmZmVy
Q29weURhdGFCeXRlcywgT1NTdGF0dXMsIChDTUJsb2NrQnVmZmVyUmVmIHRoZVNvdXJjZUJ1ZmZl
ciwgc2l6ZV90IG9mZnNldFRvRGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgsIHZvaWQqIGRlc3RpbmF0
aW9uKSwgKHRoZVNvdXJjZUJ1ZmZlciwgb2Zmc2V0VG9EYXRhLCBkYXRhTGVuZ3RoLCBkZXN0aW5h
dGlvbikpCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwgQ01C
bG9ja0J1ZmZlckdldERhdGFMZW5ndGgsIHNpemVfdCwgKENNQmxvY2tCdWZmZXJSZWYgdGhlQnVm
ZmVyKSwgKHRoZUJ1ZmZlcikpCi1TT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIENv
cmVNZWRpYSwgQ01CbG9ja0J1ZmZlclJlcGxhY2VEYXRhQnl0ZXMsIE9TU3RhdHVzLCAoY29uc3Qg
dm9pZCogc291cmNlQnl0ZXMsIENNQmxvY2tCdWZmZXJSZWYgZGVzdGluYXRpb25CdWZmZXIsIHNp
emVfdCBvZmZzZXRJbnRvRGVzdGluYXRpb24sIHNpemVfdCBkYXRhTGVuZ3RoKSwgKHNvdXJjZUJ5
dGVzLCBkZXN0aW5hdGlvbkJ1ZmZlciwgb2Zmc2V0SW50b0Rlc3RpbmF0aW9uLCBkYXRhTGVuZ3Ro
KSkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhLCBDTUZvcm1h
dERlc2NyaXB0aW9uR2V0RXh0ZW5zaW9ucywgQ0ZEaWN0aW9uYXJ5UmVmLCAoQ01Gb3JtYXREZXNj
cmlwdGlvblJlZiBkZXNjKSwgKGRlc2MpKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0Uo
UEFMLCBDb3JlTWVkaWEsIENNU2FtcGxlQnVmZmVyR2V0VHlwZUlELCBDRlR5cGVJRCwgKHZvaWQp
LCAoKSkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhLCBDTVNh
bXBsZUJ1ZmZlckdldERhdGFCdWZmZXIsIENNQmxvY2tCdWZmZXJSZWYsIChDTVNhbXBsZUJ1ZmZl
clJlZiBzYnVmKSwgKHNidWYpKQpAQCAtMTM3LDcgKzEzNiw2IEBAIFNPRlRfTElOS19GVU5DVElP
Tl9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhLCBDTUJ1ZmZlclF1ZXVlR2V0QnVmZmVyQ291bnQs
IENNSXRlCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwgQ01C
dWZmZXJRdWV1ZUdldEZpcnN0UHJlc2VudGF0aW9uVGltZVN0YW1wLCBDTVRpbWUsIChDTUJ1ZmZl
clF1ZXVlUmVmIHF1ZXVlKSwgKHF1ZXVlKSkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNF
KFBBTCwgQ29yZU1lZGlhLCBDTUJ1ZmZlclF1ZXVlR2V0RW5kUHJlc2VudGF0aW9uVGltZVN0YW1w
LCBDTVRpbWUsIChDTUJ1ZmZlclF1ZXVlUmVmIHF1ZXVlKSwgKHF1ZXVlKSkKIFNPRlRfTElOS19G
VU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhLCBDTUJ1ZmZlclF1ZXVlSW5zdGFsbFRy
aWdnZXJXaXRoSW50ZWdlclRocmVzaG9sZCwgT1NTdGF0dXMsIChDTUJ1ZmZlclF1ZXVlUmVmIHF1
ZXVlLCBDTUJ1ZmZlclF1ZXVlVHJpZ2dlckNhbGxiYWNrIHRyaWdnZXJDYWxsYmFjaywgdm9pZCog
dHJpZ2dlclJlZmNvbiwgQ01CdWZmZXJRdWV1ZVRyaWdnZXJDb25kaXRpb24gdHJpZ2dlckNvbmRp
dGlvbiwgQ01JdGVtQ291bnQgdHJpZ2dlclRocmVzaG9sZCwgQ01CdWZmZXJRdWV1ZVRyaWdnZXJU
b2tlbiogdHJpZ2dlclRva2VuT3V0KSwgKHF1ZXVlLCB0cmlnZ2VyQ2FsbGJhY2ssIHRyaWdnZXJS
ZWZjb24sIHRyaWdnZXJDb25kaXRpb24sIHRyaWdnZXJUaHJlc2hvbGQsIHRyaWdnZXJUb2tlbk91
dCkpCi1TT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwgQ01CdWZm
ZXJRdWV1ZU1hcmtFbmRPZkRhdGEsIE9TU3RhdHVzLCAoQ01CdWZmZXJRdWV1ZVJlZiBxdWV1ZSks
IChxdWV1ZSkpCiAKIFNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlh
LCBrQ01TYW1wbGVBdHRhY2htZW50S2V5X0RvTm90RGlzcGxheSwgQ0ZTdHJpbmdSZWYpCiBTT0ZU
X0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwga0NNU2FtcGxlQXR0YWNo
bWVudEtleV9Ob3RTeW5jLCBDRlN0cmluZ1JlZikKQEAgLTE2NSw5ICsxNjMsNiBAQCBTT0ZUX0xJ
TktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwgQ01BdWRpb1NhbXBsZUJ1ZmZl
ckNyZWF0ZVdpdGhQYWNrZQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3Jl
TWVkaWEsIENNU2FtcGxlQnVmZmVyU2V0RGF0YUJ1ZmZlckZyb21BdWRpb0J1ZmZlckxpc3QsIE9T
U3RhdHVzLCAoQ01TYW1wbGVCdWZmZXJSZWYgc2J1ZiwgQ0ZBbGxvY2F0b3JSZWYgYmJ1ZlN0cnVj
dEFsbG9jYXRvciwgQ0ZBbGxvY2F0b3JSZWYgYmJ1Zk1lbW9yeUFsbG9jYXRvciwgdWludDMyX3Qg
ZmxhZ3MsIGNvbnN0IEF1ZGlvQnVmZmVyTGlzdCAqYnVmZmVyTGlzdCksIChzYnVmLCBiYnVmU3Ry
dWN0QWxsb2NhdG9yLCBiYnVmTWVtb3J5QWxsb2NhdG9yLCBmbGFncywgYnVmZmVyTGlzdCkpCiBT
T0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwgQ01TYW1wbGVCdWZm
ZXJTZXREYXRhUmVhZHksIE9TU3RhdHVzLCAoQ01TYW1wbGVCdWZmZXJSZWYgc2J1ZiksIChzYnVm
KSkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhLCBDTUF1ZGlv
Rm9ybWF0RGVzY3JpcHRpb25DcmVhdGUsIE9TU3RhdHVzLCAoQ0ZBbGxvY2F0b3JSZWYgYWxsb2Nh
dG9yLCBjb25zdCBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24qIGFzYmQsIHNpemVfdCBsYXlv
dXRTaXplLCBjb25zdCBBdWRpb0NoYW5uZWxMYXlvdXQqIGxheW91dCwgc2l6ZV90IG1hZ2ljQ29v
a2llU2l6ZSwgY29uc3Qgdm9pZCogbWFnaWNDb29raWUsIENGRGljdGlvbmFyeVJlZiBleHRlbnNp
b25zLCBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25SZWYqIG91dERlc2MpLCAoYWxsb2NhdG9yLCBh
c2JkLCBsYXlvdXRTaXplLCBsYXlvdXQsIG1hZ2ljQ29va2llU2l6ZSwgbWFnaWNDb29raWUsIGV4
dGVuc2lvbnMsIG91dERlc2MpKQotU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBD
b3JlTWVkaWEsIENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkdldE1hZ2ljQ29va2llLCBjb25zdCB2
b2lkKiwgKENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvblJlZiBkZXNjLCBzaXplX3QqIHNpemVPdXQp
LCAoZGVzYywgc2l6ZU91dCkpCi1TT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIENv
cmVNZWRpYSwgQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uR2V0UmljaGVzdERlY29kYWJsZUZvcm1h
dCwgY29uc3QgQXVkaW9Gb3JtYXRMaXN0SXRlbSAqLCAoQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9u
UmVmIGRlc2MpLCAoZGVzYykpCi0KIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwg
Q29yZU1lZGlhLCBDTUNsb2NrR2V0SG9zdFRpbWVDbG9jaywgQ01DbG9ja1JlZiwgKHZvaWQpLCAo
KSkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhLCBDTUNsb2Nr
R2V0VGltZSwgQ01UaW1lLCAoQ01DbG9ja1JlZiBjbG9jayksIChjbG9jaykpCiBTT0ZUX0xJTktf
RlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwgQ01TYW1wbGVCdWZmZXJDYWxsRm9y
RWFjaFNhbXBsZSwgT1NTdGF0dXMsIChDTVNhbXBsZUJ1ZmZlclJlZiBzYnVmLCBPU1N0YXR1cyAo
KiBDTVNBTVBMRUJVRkZFUkNBTExfTk9FU0NBUEUgY2FsbGJhY2spKCBDTVNhbXBsZUJ1ZmZlclJl
ZiBzYW1wbGVCdWZmZXIsIENNSXRlbUNvdW50IGluZGV4LCB2b2lkICpyZWZjb24pLCB2b2lkICpy
ZWZjb24pLCAoc2J1ZiwgY2FsbGJhY2ssIHJlZmNvbikpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9QQUwvcGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmgKaW5kZXggYTBjNzMyOTI2MmUwYjA2Y2JiNmMzNmQ4
Mjg0MmYyZmQ2ZjFmODRhMC4uMjY4ZDE2N2YyN2Q2ZDNhYmJmZjU5MzUyNjdmYzIyMjM5MTAxMGUz
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9Db3JlTWVkaWFTb2Z0TGlu
ay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaApA
QCAtNDksOCArNDksNiBAQCBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIENvcmVN
ZWRpYSwgQ01CbG9ja0J1ZmZlckNvcHlEYXRhQnl0ZXMsIE9TU3RhdAogI2RlZmluZSBDTUJsb2Nr
QnVmZmVyQ29weURhdGFCeXRlcyBzb2Z0TGlua19Db3JlTWVkaWFfQ01CbG9ja0J1ZmZlckNvcHlE
YXRhQnl0ZXMKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBD
TUJsb2NrQnVmZmVyR2V0RGF0YUxlbmd0aCwgc2l6ZV90LCAoQ01CbG9ja0J1ZmZlclJlZiB0aGVC
dWZmZXIpLCAodGhlQnVmZmVyKSkKICNkZWZpbmUgQ01CbG9ja0J1ZmZlckdldERhdGFMZW5ndGgg
c29mdExpbmtfQ29yZU1lZGlhX0NNQmxvY2tCdWZmZXJHZXREYXRhTGVuZ3RoCi1TT0ZUX0xJTktf
RlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwgQ01CbG9ja0J1ZmZlclJlcGxhY2VE
YXRhQnl0ZXMsIE9TU3RhdHVzLCAoY29uc3Qgdm9pZCogc291cmNlQnl0ZXMsIENNQmxvY2tCdWZm
ZXJSZWYgZGVzdGluYXRpb25CdWZmZXIsIHNpemVfdCBvZmZzZXRJbnRvRGVzdGluYXRpb24sIHNp
emVfdCBkYXRhTGVuZ3RoKSwgKHNvdXJjZUJ5dGVzLCBkZXN0aW5hdGlvbkJ1ZmZlciwgb2Zmc2V0
SW50b0Rlc3RpbmF0aW9uLCBkYXRhTGVuZ3RoKSkKLSNkZWZpbmUgQ01CbG9ja0J1ZmZlclJlcGxh
Y2VEYXRhQnl0ZXMgc29mdExpbmtfQ29yZU1lZGlhX0NNQmxvY2tCdWZmZXJSZXBsYWNlRGF0YUJ5
dGVzCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwgQ01Gb3Jt
YXREZXNjcmlwdGlvbkdldEV4dGVuc2lvbnMsIENGRGljdGlvbmFyeVJlZiwgKENNRm9ybWF0RGVz
Y3JpcHRpb25SZWYgZGVzYyksIChkZXNjKSkKICNkZWZpbmUgQ01Gb3JtYXREZXNjcmlwdGlvbkdl
dEV4dGVuc2lvbnMgc29mdExpbmtfQ29yZU1lZGlhX0NNRm9ybWF0RGVzY3JpcHRpb25HZXRFeHRl
bnNpb25zCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwgQ01T
YW1wbGVCdWZmZXJHZXRUeXBlSUQsIENGVHlwZUlELCAodm9pZCksICgpKQpAQCAtMjI5LDggKzIy
Nyw2IEBAIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBDTUJ1
ZmZlclF1ZXVlR2V0RW5kUHJlc2VudGF0aW9uVGltCiAjZGVmaW5lIENNQnVmZmVyUXVldWVHZXRF
bmRQcmVzZW50YXRpb25UaW1lU3RhbXAgc29mdExpbmtfQ29yZU1lZGlhX0NNQnVmZmVyUXVldWVH
ZXRFbmRQcmVzZW50YXRpb25UaW1lU3RhbXAKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVS
KFBBTCwgQ29yZU1lZGlhLCBDTUJ1ZmZlclF1ZXVlSW5zdGFsbFRyaWdnZXJXaXRoSW50ZWdlclRo
cmVzaG9sZCwgT1NTdGF0dXMsIChDTUJ1ZmZlclF1ZXVlUmVmIHF1ZXVlLCBDTUJ1ZmZlclF1ZXVl
VHJpZ2dlckNhbGxiYWNrIHRyaWdnZXJDYWxsYmFjaywgdm9pZCogdHJpZ2dlclJlZmNvbiwgQ01C
dWZmZXJRdWV1ZVRyaWdnZXJDb25kaXRpb24gdHJpZ2dlckNvbmRpdGlvbiwgQ01JdGVtQ291bnQg
dHJpZ2dlclRocmVzaG9sZCwgQ01CdWZmZXJRdWV1ZVRyaWdnZXJUb2tlbiogdHJpZ2dlclRva2Vu
T3V0KSwgKHF1ZXVlLCB0cmlnZ2VyQ2FsbGJhY2ssIHRyaWdnZXJSZWZjb24sIHRyaWdnZXJDb25k
aXRpb24sIHRyaWdnZXJUaHJlc2hvbGQsIHRyaWdnZXJUb2tlbk91dCkpCiAjZGVmaW5lIENNQnVm
ZmVyUXVldWVJbnN0YWxsVHJpZ2dlcldpdGhJbnRlZ2VyVGhyZXNob2xkIHNvZnRMaW5rX0NvcmVN
ZWRpYV9DTUJ1ZmZlclF1ZXVlSW5zdGFsbFRyaWdnZXJXaXRoSW50ZWdlclRocmVzaG9sZAotU09G
VF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENNQnVmZmVyUXVldWVN
YXJrRW5kT2ZEYXRhLCBPU1N0YXR1cywgKENNQnVmZmVyUXVldWVSZWYgcXVldWUpLCAocXVldWUp
KQotI2RlZmluZSBDTUJ1ZmZlclF1ZXVlTWFya0VuZE9mRGF0YSBzb2Z0TGlua19Db3JlTWVkaWFf
Q01CdWZmZXJRdWV1ZU1hcmtFbmRPZkRhdGEKIAogU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFE
RVIoUEFMLCBDb3JlTWVkaWEsIGtDTVNhbXBsZUF0dGFjaG1lbnRLZXlfRG9Ob3REaXNwbGF5LCBD
RlN0cmluZ1JlZikKICNkZWZpbmUga0NNU2FtcGxlQXR0YWNobWVudEtleV9Eb05vdERpc3BsYXkg
Z2V0X0NvcmVNZWRpYV9rQ01TYW1wbGVBdHRhY2htZW50S2V5X0RvTm90RGlzcGxheSgpCkBAIC0y
NjAsOSArMjU2LDYgQEAgU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVk
aWEsIGtDTVRpbWViYXNlTm90aWZpY2F0aW9uX1RpbWVKdW1wZWQKICNkZWZpbmUga0NNVGltZWJh
c2VOb3RpZmljYXRpb25fVGltZUp1bXBlZCBnZXRfQ29yZU1lZGlhX2tDTVRpbWViYXNlTm90aWZp
Y2F0aW9uX1RpbWVKdW1wZWQoKQogU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFMLCBD
b3JlTWVkaWEsIGtDTVNhbXBsZUJ1ZmZlckNvbnN1bWVyTm90aWZpY2F0aW9uX0J1ZmZlckNvbnN1
bWVkLCBDRlN0cmluZ1JlZikKICNkZWZpbmUga0NNU2FtcGxlQnVmZmVyQ29uc3VtZXJOb3RpZmlj
YXRpb25fQnVmZmVyQ29uc3VtZWQgZ2V0X0NvcmVNZWRpYV9rQ01TYW1wbGVCdWZmZXJDb25zdW1l
ck5vdGlmaWNhdGlvbl9CdWZmZXJDb25zdW1lZCgpCi0KLVNPRlRfTElOS19GVU5DVElPTl9GT1Jf
SEVBREVSKFBBTCwgQ29yZU1lZGlhLCBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25HZXRNYWdpY0Nv
b2tpZSwgY29uc3Qgdm9pZCosIChDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25SZWYgZGVzYywgc2l6
ZV90KiBzaXplT3V0KSwgKGRlc2MsIHNpemVPdXQpKQotI2RlZmluZSBDTUF1ZGlvRm9ybWF0RGVz
Y3JpcHRpb25HZXRNYWdpY0Nvb2tpZSBzb2Z0TGlua19Db3JlTWVkaWFfQ01BdWRpb0Zvcm1hdERl
c2NyaXB0aW9uR2V0TWFnaWNDb29raWUKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBB
TCwgQ29yZU1lZGlhLCBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25HZXRTdHJlYW1CYXNpY0Rlc2Ny
aXB0aW9uLCBjb25zdCBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gKiwgKENNQXVkaW9Gb3Jt
YXREZXNjcmlwdGlvblJlZiBkZXNjKSwgKGRlc2MpKQogI2RlZmluZSBDTUF1ZGlvRm9ybWF0RGVz
Y3JpcHRpb25HZXRTdHJlYW1CYXNpY0Rlc2NyaXB0aW9uIHNvZnRMaW5rX0NvcmVNZWRpYV9DTUF1
ZGlvRm9ybWF0RGVzY3JpcHRpb25HZXRTdHJlYW1CYXNpY0Rlc2NyaXB0aW9uCiBTT0ZUX0xJTktf
RlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwgQ01CbG9ja0J1ZmZlckNyZWF0ZVdp
dGhNZW1vcnlCbG9jaywgT1NTdGF0dXMsIChDRkFsbG9jYXRvclJlZiBzdHJ1Y3R1cmVBbGxvY2F0
b3IsIHZvaWQqIG1lbW9yeUJsb2NrLCBzaXplX3QgYmxvY2tMZW5ndGgsIENGQWxsb2NhdG9yUmVm
IGJsb2NrQWxsb2NhdG9yLCBjb25zdCBDTUJsb2NrQnVmZmVyQ3VzdG9tQmxvY2tTb3VyY2UqIGN1
c3RvbUJsb2NrU291cmNlLCBzaXplX3Qgb2Zmc2V0VG9EYXRhLCBzaXplX3QgZGF0YUxlbmd0aCwg
Q01CbG9ja0J1ZmZlckZsYWdzIGZsYWdzLCBDTUJsb2NrQnVmZmVyUmVmKiBibG9ja0J1ZmZlck91
dCksIChzdHJ1Y3R1cmVBbGxvY2F0b3IsIG1lbW9yeUJsb2NrLCBibG9ja0xlbmd0aCwgYmxvY2tB
bGxvY2F0b3IsIGN1c3RvbUJsb2NrU291cmNlLCBvZmZzZXRUb0RhdGEsIGRhdGFMZW5ndGgsIGZs
YWdzLCBibG9ja0J1ZmZlck91dCkpCkBAIC0yNzEsOCArMjY0LDYgQEAgU09GVF9MSU5LX0ZVTkNU
SU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENNU2FtcGxlQnVmZmVyR2V0QXVkaW9CdWZm
ZXJMaXN0V2kKICNkZWZpbmUgQ01TYW1wbGVCdWZmZXJHZXRBdWRpb0J1ZmZlckxpc3RXaXRoUmV0
YWluZWRCbG9ja0J1ZmZlciBzb2Z0TGlua19Db3JlTWVkaWFfQ01TYW1wbGVCdWZmZXJHZXRBdWRp
b0J1ZmZlckxpc3RXaXRoUmV0YWluZWRCbG9ja0J1ZmZlcgogU09GVF9MSU5LX0ZVTkNUSU9OX0ZP
Ul9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENNU2FtcGxlQnVmZmVyR2V0TnVtU2FtcGxlcywgQ01J
dGVtQ291bnQsIChDTVNhbXBsZUJ1ZmZlclJlZiBzYnVmKSwgKHNidWYpKQogI2RlZmluZSBDTVNh
bXBsZUJ1ZmZlckdldE51bVNhbXBsZXMgc29mdExpbmtfQ29yZU1lZGlhX0NNU2FtcGxlQnVmZmVy
R2V0TnVtU2FtcGxlcwotU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVk
aWEsIENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkdldFJpY2hlc3REZWNvZGFibGVGb3JtYXQsIGNv
bnN0IEF1ZGlvRm9ybWF0TGlzdEl0ZW0gKiwgKENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvblJlZiBk
ZXNjKSwgKGRlc2MpKQotI2RlZmluZSBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25HZXRSaWNoZXN0
RGVjb2RhYmxlRm9ybWF0IHNvZnRMaW5rX0NvcmVNZWRpYV9DTUF1ZGlvRm9ybWF0RGVzY3JpcHRp
b25HZXRSaWNoZXN0RGVjb2RhYmxlRm9ybWF0CiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURF
UihQQUwsIENvcmVNZWRpYSwgQ01TYW1wbGVCdWZmZXJDb3B5U2FtcGxlQnVmZmVyRm9yUmFuZ2Us
IE9TU3RhdHVzLCAoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBDTVNhbXBsZUJ1ZmZlclJlZiBz
YnVmLCBDRlJhbmdlIHNhbXBsZVJhbmdlLCBDTVNhbXBsZUJ1ZmZlclJlZiogc0J1Zk91dCksIChh
bGxvY2F0b3IsIHNidWYsIHNhbXBsZVJhbmdlLCBzQnVmT3V0KSkKICNkZWZpbmUgQ01TYW1wbGVC
dWZmZXJDb3B5U2FtcGxlQnVmZmVyRm9yUmFuZ2Ugc29mdExpbmtfQ29yZU1lZGlhX0NNU2FtcGxl
QnVmZmVyQ29weVNhbXBsZUJ1ZmZlckZvclJhbmdlCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hF
QURFUihQQUwsIENvcmVNZWRpYSwgQ01TYW1wbGVCdWZmZXJHZXRTYW1wbGVTaXplQXJyYXksIE9T
U3RhdHVzLCAoQ01TYW1wbGVCdWZmZXJSZWYgc2J1ZiwgQ01JdGVtQ291bnQgc2l6ZUFycmF5RW50
cmllcywgc2l6ZV90KiBzaXplQXJyYXlPdXQsIENNSXRlbUNvdW50KiBzaXplQXJyYXlFbnRyaWVz
TmVlZGVkT3V0KSwgKHNidWYsIHNpemVBcnJheUVudHJpZXMsIHNpemVBcnJheU91dCwgc2l6ZUFy
cmF5RW50cmllc05lZWRlZE91dCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L2NmL1ZpZGVvVG9vbGJveFNvZnRMaW5rLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2Yv
VmlkZW9Ub29sYm94U29mdExpbmsuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAz
ZmU2OTNjYTllNDFmZDg1OTdhODJiN2M3OTY2MDFiOGE3MGNhYTQ4Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2Yv
VmlkZW9Ub29sYm94U29mdExpbmsuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTgotICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCi0g
KiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBVU0UoQVZGT1VOREFUSU9O
KQotCi0jaW1wb3J0IDxWaWRlb1Rvb2xib3gvVlRDb21wcmVzc2lvblNlc3Npb24uaD4KLQotI2lu
Y2x1ZGUgPHd0Zi9Tb2Z0TGlua2luZy5oPgotCi1TT0ZUX0xJTktfRlJBTUVXT1JLX0ZPUl9TT1VS
Q0UoUEFMLCBWaWRlb1Rvb2xib3gpCi0KLVNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBB
TCwgVmlkZW9Ub29sYm94LCBWVENvbXByZXNzaW9uU2Vzc2lvbkNyZWF0ZSwgT1NTdGF0dXMsIChD
RkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBD
TVZpZGVvQ29kZWNUeXBlIGNvZGVjVHlwZSwgQ0ZEaWN0aW9uYXJ5UmVmIGVuY29kZXJTcGVjaWZp
Y2F0aW9uLCBDRkRpY3Rpb25hcnlSZWYgc291cmNlSW1hZ2VCdWZmZXJBdHRyaWJ1dGVzLCBDRkFs
bG9jYXRvclJlZiBjb21wcmVzc2VkRGF0YUFsbG9jYXRvciwgVlRDb21wcmVzc2lvbk91dHB1dENh
bGxiYWNrIG91dHB1dENhbGxiYWNrLCB2b2lkKiBvdXRwdXRDYWxsYmFja1JlZkNvbiwgVlRDb21w
cmVzc2lvblNlc3Npb25SZWYqIGNvbXByZXNzaW9uU2Vzc2lvbk91dCksIChhbGxvY2F0b3IsIHdp
ZHRoLCBoZWlnaHQsIGNvZGVjVHlwZSwgZW5jb2RlclNwZWNpZmljYXRpb24sIHNvdXJjZUltYWdl
QnVmZmVyQXR0cmlidXRlcywgY29tcHJlc3NlZERhdGFBbGxvY2F0b3IsIG91dHB1dENhbGxiYWNr
LCBvdXRwdXRDYWxsYmFja1JlZkNvbiwgY29tcHJlc3Npb25TZXNzaW9uT3V0KSkKLVNPRlRfTElO
S19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgVmlkZW9Ub29sYm94LCBWVENvbXByZXNzaW9uU2Vz
c2lvbkNvbXBsZXRlRnJhbWVzLCBPU1N0YXR1cywgKFZUQ29tcHJlc3Npb25TZXNzaW9uUmVmIHNl
c3Npb24sIENNVGltZSBjb21wbGV0ZVVudGlsUHJlc2VudGF0aW9uVGltZVN0YW1wKSwgKHNlc3Np
b24sIGNvbXBsZXRlVW50aWxQcmVzZW50YXRpb25UaW1lU3RhbXApKQotU09GVF9MSU5LX0ZVTkNU
SU9OX0ZPUl9TT1VSQ0UoUEFMLCBWaWRlb1Rvb2xib3gsIFZUQ29tcHJlc3Npb25TZXNzaW9uRW5j
b2RlRnJhbWUsIE9TU3RhdHVzLCAoVlRDb21wcmVzc2lvblNlc3Npb25SZWYgc2Vzc2lvbiwgQ1ZJ
bWFnZUJ1ZmZlclJlZiBpbWFnZUJ1ZmZlciwgQ01UaW1lIHByZXNlbnRhdGlvblRpbWVTdGFtcCwg
Q01UaW1lIGR1cmF0aW9uLCBDRkRpY3Rpb25hcnlSZWYgZnJhbWVQcm9wZXJ0aWVzLCB2b2lkKiBz
b3VyY2VGcmFtZVJlZmNvbiwgVlRFbmNvZGVJbmZvRmxhZ3MqIGluZm9GbGFnc091dCksIChzZXNz
aW9uLCBpbWFnZUJ1ZmZlciwgcHJlc2VudGF0aW9uVGltZVN0YW1wLCBkdXJhdGlvbiwgZnJhbWVQ
cm9wZXJ0aWVzLCBzb3VyY2VGcmFtZVJlZmNvbiwgaW5mb0ZsYWdzT3V0KSkKLVNPRlRfTElOS19G
VU5DVElPTl9GT1JfU09VUkNFKFBBTCwgVmlkZW9Ub29sYm94LCBWVENvbXByZXNzaW9uU2Vzc2lv
blByZXBhcmVUb0VuY29kZUZyYW1lcywgT1NTdGF0dXMsIChWVENvbXByZXNzaW9uU2Vzc2lvblJl
ZiBzZXNzaW9uKSwgKHNlc3Npb24pKQotCi0jZW5kaWYgLy8gVVNFKEFWRk9VTkRBVElPTikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvVmlkZW9Ub29sYm94U29mdExpbmsu
aCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvVmlkZW9Ub29sYm94U29mdExpbmsuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjUwODM4YTNhZmRlZDJlZDdkNmY4ZTM0OGZmZGY2
ZGQxMTUxYmM0ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL1ZpZGVvVG9vbGJveFNvZnRMaW5rLmgKKysrIC9k
ZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0j
aWYgVVNFKEFWRk9VTkRBVElPTikKLQotI2luY2x1ZGUgPHd0Zi9Tb2Z0TGlua2luZy5oPgotCi1T
T0ZUX0xJTktfRlJBTUVXT1JLX0ZPUl9IRUFERVIoUEFMLCBWaWRlb1Rvb2xib3gpCi0KLVNPRlRf
TElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgVmlkZW9Ub29sYm94LCBWVENvbXByZXNzaW9u
U2Vzc2lvbkNyZWF0ZSwgT1NTdGF0dXMsIChDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIGludDMy
X3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCBDTVZpZGVvQ29kZWNUeXBlIGNvZGVjVHlwZSwgQ0ZE
aWN0aW9uYXJ5UmVmIGVuY29kZXJTcGVjaWZpY2F0aW9uLCBDRkRpY3Rpb25hcnlSZWYgc291cmNl
SW1hZ2VCdWZmZXJBdHRyaWJ1dGVzLCBDRkFsbG9jYXRvclJlZiBjb21wcmVzc2VkRGF0YUFsbG9j
YXRvciwgVlRDb21wcmVzc2lvbk91dHB1dENhbGxiYWNrIG91dHB1dENhbGxiYWNrLCB2b2lkKiBv
dXRwdXRDYWxsYmFja1JlZkNvbiwgVlRDb21wcmVzc2lvblNlc3Npb25SZWYqIGNvbXByZXNzaW9u
U2Vzc2lvbk91dCksIChhbGxvY2F0b3IsIHdpZHRoLCBoZWlnaHQsIGNvZGVjVHlwZSwgZW5jb2Rl
clNwZWNpZmljYXRpb24sIHNvdXJjZUltYWdlQnVmZmVyQXR0cmlidXRlcywgY29tcHJlc3NlZERh
dGFBbGxvY2F0b3IsIG91dHB1dENhbGxiYWNrLCBvdXRwdXRDYWxsYmFja1JlZkNvbiwgY29tcHJl
c3Npb25TZXNzaW9uT3V0KSkKLSNkZWZpbmUgVlRDb21wcmVzc2lvblNlc3Npb25DcmVhdGUgc29m
dExpbmtfVmlkZW9Ub29sYm94X1ZUQ29tcHJlc3Npb25TZXNzaW9uQ3JlYXRlCi1TT0ZUX0xJTktf
RlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIFZpZGVvVG9vbGJveCwgVlRDb21wcmVzc2lvblNlc3Np
b25Db21wbGV0ZUZyYW1lcywgT1NTdGF0dXMsIChWVENvbXByZXNzaW9uU2Vzc2lvblJlZiBzZXNz
aW9uLCBDTVRpbWUgY29tcGxldGVVbnRpbFByZXNlbnRhdGlvblRpbWVTdGFtcCksIChzZXNzaW9u
LCBjb21wbGV0ZVVudGlsUHJlc2VudGF0aW9uVGltZVN0YW1wKSkKLSNkZWZpbmUgVlRDb21wcmVz
c2lvblNlc3Npb25Db21wbGV0ZUZyYW1lcyBzb2Z0TGlua19WaWRlb1Rvb2xib3hfVlRDb21wcmVz
c2lvblNlc3Npb25Db21wbGV0ZUZyYW1lcwotU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIo
UEFMLCBWaWRlb1Rvb2xib3gsIFZUQ29tcHJlc3Npb25TZXNzaW9uRW5jb2RlRnJhbWUsIE9TU3Rh
dHVzLCAoVlRDb21wcmVzc2lvblNlc3Npb25SZWYgc2Vzc2lvbiwgQ1ZJbWFnZUJ1ZmZlclJlZiBp
bWFnZUJ1ZmZlciwgQ01UaW1lIHByZXNlbnRhdGlvblRpbWVTdGFtcCwgQ01UaW1lIGR1cmF0aW9u
LCBDRkRpY3Rpb25hcnlSZWYgZnJhbWVQcm9wZXJ0aWVzLCB2b2lkKiBzb3VyY2VGcmFtZVJlZmNv
biwgVlRFbmNvZGVJbmZvRmxhZ3MqIGluZm9GbGFnc091dCksIChzZXNzaW9uLCBpbWFnZUJ1ZmZl
ciwgcHJlc2VudGF0aW9uVGltZVN0YW1wLCBkdXJhdGlvbiwgZnJhbWVQcm9wZXJ0aWVzLCBzb3Vy
Y2VGcmFtZVJlZmNvbiwgaW5mb0ZsYWdzT3V0KSkKLSNkZWZpbmUgVlRDb21wcmVzc2lvblNlc3Np
b25FbmNvZGVGcmFtZSBzb2Z0TGlua19WaWRlb1Rvb2xib3hfVlRDb21wcmVzc2lvblNlc3Npb25F
bmNvZGVGcmFtZQotU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBWaWRlb1Rvb2xi
b3gsIFZUQ29tcHJlc3Npb25TZXNzaW9uUHJlcGFyZVRvRW5jb2RlRnJhbWVzLCBPU1N0YXR1cywg
KFZUQ29tcHJlc3Npb25TZXNzaW9uUmVmIHNlc3Npb24pLCAoc2Vzc2lvbikpCi0jZGVmaW5lIFZU
Q29tcHJlc3Npb25TZXNzaW9uUHJlcGFyZVRvRW5jb2RlRnJhbWVzIHNvZnRMaW5rX1ZpZGVvVG9v
bGJveF9WVENvbXByZXNzaW9uU2Vzc2lvblByZXBhcmVUb0VuY29kZUZyYW1lcwotCi0jZW5kaWYg
Ly8gVVNFKEFWRk9VTkRBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzNTQ1MmIxNzFmYTNiMmNhMWQ4YTY1MjZkMDY1YzYw
ZWE0ZjA5YzY3Li5jYzU4N2NlNTYyNzQ1NzUwYWE1YmQ5NGM5MTAwODczYjE3OWQ0ZTJiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC0xMDk3LDcgKzEwOTcsNiBAQAogCQk0MTZFNkZFODFCQkQxMkRGMDAwQTYwNTMgLyogV3JpdGFi
bGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOUIwM0Q4MDYxQkIzMTEwRDAwQjc2NEU5IC8qIFdyaXRhYmxlU3Ry
ZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk0MTZFNkZFOTFCQkQxMkU1MDAwQTYwNDMgLyogUmVhZGFibGVTdHJl
YW1CdWlsdGlucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOUIwM0Q4MDYxQkIzMTEwRDAwQjc2NEQ4IC8qIFJlYWRhYmxlU3RyZWFtQnVpbHRpbnMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTZFNkZF
OTFCQkQxMkU1MDAwQTYwNTMgLyogV3JpdGFibGVTdHJlYW1CdWlsdGlucy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIwM0Q4MDYxQkIzMTEwRDAwQjc2
NEU4IC8qIFdyaXRhYmxlU3RyZWFtQnVpbHRpbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk0MTZGNzk5MDIzRDc1MENGMDA4MjlGQzEgLyogQXVk
aW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDE2Rjc5OEYyM0Q3NTBDQjAwODI5RkMxIC8qIEF1ZGlvU2FtcGxl
QnVmZmVyQ29tcHJlc3Nvci5tbSAqLzsgfTsKIAkJNDE3MjUzQUIxMzU0QkJCQzAwMzYwRjJBIC8q
IE1lZGlhQ29udHJvbEVsZW1lbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MTcyNTNBOTEzNTRCQkJDMDAzNjBGMkEgLyogTWVkaWFDb250cm9sRWxl
bWVudHMuaCAqLzsgfTsKIAkJNDE3NjEyQUYxRTNBOTk0MDAwQzNEODFEIC8qIExpYldlYlJUQ01l
ZGlhRW5kcG9pbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDE3NjEyQUIxRTNBOTkzQjAwQzNEODFEIC8qIExpYldlYlJUQ01lZGlhRW5kcG9pbnQu
Y3BwICovOyB9OwogCQk0MTc2MTJCMDFFM0E5OTQwMDBDM0Q4MUQgLyogTGliV2ViUlRDTWVkaWFF
bmRwb2ludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDE3NjEyQUMxRTNBOTkzQjAwQzNEODFEIC8qIExpYldlYlJUQ01lZGlhRW5kcG9pbnQuaCAqLzsg
fTsKQEAgLTExMzgsNyArMTEzNyw2IEBACiAJCTQxQjg3NzYyMjNERTEwNDUwMDM2MzhCOCAvKiBS
ZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDFCODc3NjAyM0RFMTA0MjAwMzYzOEI4IC8qIFJlYWx0aW1l
TWVkaWFTb3VyY2VJZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNDFCRjIwNDkyMkJBN0JFODAwMDRGODEyIC8qIFJlYWx0aW1lVmlk
ZW9Tb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxQkYyMDQwMjJCOTQ3MTYwMDA0RjgxMiAvKiBSZWFsdGltZVZpZGVvU291cmNlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDFDNzYwQjEwRURF
MDNEMzAwQzE2NTVGIC8qIFNjcmlwdFN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MUM3NjBCMDBFREUwM0QzMDBDMTY1NUYgLyogU2NyaXB0U3Rh
dGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk0
MUNENkY4QzIzRDZFODIxMDBCMTY0MjEgLyogVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFDRDZGOEIy
M0Q2RTgxRDAwQjE2NDIxIC8qIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbSAqLzsgfTsK
IAkJNDFEMDE1Q0EwRjRCNUM3MTAwNEE2NjJGIC8qIENvbnRlbnRUeXBlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUQwMTVDODBGNEI1QzcxMDA0QTY2
MkYgLyogQ29udGVudFR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk0MUQxMjlDRTFGM0QwRUY2MDBEMTVFNDcgLyogV29ya2VyR2xvYmFsU2Nv
cGVDYWNoZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxRkIyNzhEMUYzNEMyODIwMDc5NTQ4NyAvKiBXb3JrZXJHbG9iYWxTY29wZUNhY2hlcy5oICov
OyB9OwogCQk0MUQxMjlEMDFGM0QwRjA1MDBEMTVFNDcgLyogQ2FjaGVRdWVyeU9wdGlvbnMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRkIyNzlCMUYz
NENFRjAwMDc5NTQ4NyAvKiBDYWNoZVF1ZXJ5T3B0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC03MzYzLDkgKzczNjEsNiBAQAogCQk0MTZE
NzU5RjIwQzY0NDEzMDBEMDJEMkMgLyogTmV0d29ya0xvYWRJbmZvcm1hdGlvbi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrTG9hZEluZm9ybWF0aW9uLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNkUwQjM3MjA5QkMzQzIwMDRBOTVEOSAvKiBGZXRj
aElkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmV0Y2hJZGVu
dGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNkUyOUE1MTAyRkE5NjIw
MDdGQzE0RSAvKiBXb3JrZXJSZXBvcnRpbmdQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXb3JrZXJSZXBvcnRpbmdQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQk0MTZGNzk4RDIzRDc1MENBMDA4MjlGQzEgLyogQXVkaW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvU2FtcGxlQnVm
ZmVyQ29tcHJlc3Nvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MTZGNzk4RjIz
RDc1MENCMDA4MjlGQzEgLyogQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MTZGNzk5MzIzRDhCNjlDMDA4
MjlGQzEgLyogTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYUZpbGVCYXNlZC5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE1lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyQ29jb2FGaWxlQmFzZWQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQx
NzBBMkU5MUQ4QzBDQzAwMDMxODQ1MiAvKiBKU0RPTVdyYXBwZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNET01XcmFwcGVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDE3MjUzQTgxMzU0QkJCQzAwMzYwRjJBIC8qIE1lZGlhQ29udHJvbEVs
ZW1lbnRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhQ29u
dHJvbEVsZW1lbnRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE3MjUzQTkx
MzU0QkJCQzAwMzYwRjJBIC8qIE1lZGlhQ29udHJvbEVsZW1lbnRzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhQ29udHJvbEVsZW1lbnRzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC03NDczLDggKzc0NjgsNiBAQAogCQk0MUM3RTEwNTFFNkE1NDM2MDAy
N0I0REUgLyogQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUM3RTEwNjFFNkE1NDM2MDAyN0I0REUg
LyogQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDFDN0UxMDgxRTZBQTM3QzAwMjdCNERFIC8qIENhbnZhc0NhcHR1
cmVNZWRpYVN0cmVhbVRyYWNrLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBDYW52YXNDYXB0
dXJlTWVkaWFTdHJlYW1UcmFjay5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQx
Q0Q2Rjg5MjNENkU4MUMwMEIxNjQyMSAvKiBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQxQ0Q2RjhCMjNENkU4MUQwMEIx
NjQyMSAvKiBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQ0Y4QkU0MUQ0NjIyMjAwMDcwN0RDOSAvKiBG
ZXRjaEJvZHlDb25zdW1lci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBGZXRjaEJvZHlDb25zdW1lci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQx
Q0Y4QkU1MUQ0NjIyMjAwMDcwN0RDOSAvKiBGZXRjaEJvZHlDb25zdW1lci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBGZXRjaEJvZHlDb25zdW1lci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0MUQwMTVDODBGNEI1QzcxMDA0QTY2MkYgLyogQ29udGVudFR5cGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29udGVudFR5cGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4OTAxLDEzICsxODg5NCw4IEBACiAJCTREM0MwNUQ0
MjFBRjQ4MDkwMEYyODkwQSAvKiBjb2NvYSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJ
Y2hpbGRyZW4gPSAoCi0JCQkJNDE2Rjc5OEQyM0Q3NTBDQTAwODI5RkMxIC8qIEF1ZGlvU2FtcGxl
QnVmZmVyQ29tcHJlc3Nvci5oICovLAotCQkJCTQxNkY3OThGMjNENzUwQ0IwMDgyOUZDMSAvKiBB
dWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0gKi8sCiAJCQkJNEQ3M0Y5NEMyMThDNEE4NzAw
M0EzRUQ2IC8qIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaCAqLywKIAkJCQk0RDcz
Rjk0RDIxOEM0QTg3MDAzQTNFRDYgLyogTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5t
bSAqLywKLQkJCQk0MTZGNzk5MzIzRDhCNjlDMDA4MjlGQzEgLyogTWVkaWFSZWNvcmRlclByaXZh
dGVXcml0ZXJDb2NvYUZpbGVCYXNlZC5tbSAqLywKLQkJCQk0MUNENkY4OTIzRDZFODFDMDBCMTY0
MjEgLyogVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmggKi8sCi0JCQkJNDFDRDZGOEIyM0Q2
RTgxRDAwQjE2NDIxIC8qIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbSAqLywKIAkJCSk7
CiAJCQlwYXRoID0gY29jb2E7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMzM1NTgs
NyArMzM1NDYsNiBAQAogCQkJCUE5Nzg3Q0I0MUY1RjVDNjYwMEM1NTFDNiAvKiBBY2Nlc3NpYmls
aXR5TWVkaWFPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0QwRUVFMEUxNDc0M0YzOTAw
M0VBRkEyIC8qIEF1ZGlvRGVzdGluYXRpb25JT1MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0Q1
NTk2OTExNDc1QjY3ODAwMUQwQkQwIC8qIEF1ZGlvRmlsZVJlYWRlcklPUy5jcHAgaW4gU291cmNl
cyAqLywKLQkJCQk0MTZGNzk5MDIzRDc1MENGMDA4MjlGQzEgLyogQXVkaW9TYW1wbGVCdWZmZXJD
b21wcmVzc29yLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RBNzk4MjcxNzBBMjc5MTAwRDQ1QzU1
IC8qIEF1ZGlvU2Vzc2lvbklPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNEOEE3QkJCMTk3NzM1
RkUwMENCRDY0MyAvKiBBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbSBpbiBTb3VyY2VzICov
LAogCQkJCUJFODhFMEQ4MTcxNUQyQTIwMDY1OEQ5OCAvKiBBdWRpb1RyYWNrLmNwcCBpbiBTb3Vy
Y2VzICovLApAQCAtMzQyOTEsNyArMzQyNzgsNiBAQAogCQkJCTdDNzNGQjA3MTkxRUY0MTcwMDdE
RTA2MSAvKiBVc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTNGQkM0QUYzMTg5ODgxNTYwMDQ2RUUzOCAvKiBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VB
VktpdC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUyRDVBMThGMUM1NDU5MjMwMERFMzRBMyAvKiBW
aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXJPYmpDLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJNDFD
RDZGOEMyM0Q2RTgyMTAwQjE2NDIxIC8qIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbSBp
biBTb3VyY2VzICovLAogCQkJCUJFODhFMERFMTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1RyYWNr
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJFODhFMEUxMTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRl
b1RyYWNrTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDMzNkY2NzE3RkEwQUM2MDBERERD
RDAgLyogVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNl
c3Npb25WVC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlVHJh
bnNmZXJTZXNzaW9uVlQubW0KaW5kZXggZmMyOTA4Y2ViZTNkNzRlNWYxNTEwNGE1ZDc4MjMwY2Jm
OWVkNTMzNC4uZmE4ZWUwYjEwMGNmMjE0MDg1NjUwNTE2YmM0ZTIzYTFkYjE1YmYzNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNl
c3Npb25WVC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFn
ZVRyYW5zZmVyU2Vzc2lvblZULm1tCkBAIC05NSw3ICs5NSw2IEBAIGJvb2wgSW1hZ2VUcmFuc2Zl
clNlc3Npb25WVDo6c2V0U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQogICAgICAgICAoX19icmlk
Z2UgTlNTdHJpbmcgKilrQ1ZQaXhlbEJ1ZmZlcklPU3VyZmFjZVByb3BlcnRpZXNLZXkgOiBAeyAv
KmVtcHR5IGRpY3Rpb25hcnkqLyB9LAogICAgIH07CiAKLQogICAgIE5TRGljdGlvbmFyeSogcGl4
ZWxCdWZmZXJQb29sT3B0aW9ucyA9IEB7CiAgICAgICAgIChfX2JyaWRnZSBOU1N0cmluZyAqKWtD
VlBpeGVsQnVmZmVyUG9vbE1pbmltdW1CdWZmZXJDb3VudEtleTogQCg2KQogICAgIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3Jk
ZXJQcml2YXRlQVZGSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29y
ZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5jcHAKaW5kZXggZDQ3OTM0ODgzODYxOTE3
ZjZiMzYwZWYxNGRkODJjMWUzNTNiMmFmNy4uNzNmMWQwYTE1MTlmMmMwM2I5MWQ2OTUxMDUxMzVh
NGYyMGQxZGE2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNv
cmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmNwcApA
QCAtMjksNyArMjksNiBAQAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKICNpbmNsdWRlICJB
dWRpb1N0cmVhbURlc2NyaXB0aW9uLmgiCi0jaW5jbHVkZSAiTWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXJDb2NvYS5oIgogI2luY2x1ZGUgIk1lZGlhU2FtcGxlLmgiCiAjaW5jbHVkZSAiTWVkaWFT
dHJlYW1Qcml2YXRlLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCkBAIC02OSwxNCArNjgs
NyBAQCBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsPiBNZWRpYVJl
Y29yZGVyUHJpdmF0ZUFWRkltcGw6OmNyZWF0ZQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICB9Ci0KLSAgICBpbnQgd2lkdGggPSAwLCBoZWlnaHQgPSAwOwotICAgIGlmICh2aWRl
b1RyYWNrKSB7Ci0gICAgICAgIGF1dG8mIHNldHRpbmdzID0gdmlkZW9UcmFjay0+c2V0dGluZ3Mo
KTsKLSAgICAgICAgd2lkdGggPSBzZXR0aW5ncy53aWR0aCgpOwotICAgICAgICBoZWlnaHQgPSBz
ZXR0aW5ncy5oZWlnaHQoKTsKLSAgICB9Ci0gICAgYXV0byB3cml0ZXIgPSBNZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlcjo6Y3JlYXRlKCEhYXVkaW9UcmFjaywgd2lkdGgsIGhlaWdodCk7CisgICAg
YXV0byB3cml0ZXIgPSBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6Y3JlYXRlKGF1ZGlvVHJh
Y2ssIHZpZGVvVHJhY2spOwogICAgIGlmICghd3JpdGVyKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9j
b2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE0N2JmODFlMWQ0NTZjNzBjMmQ5NDRmNzA0NWE4
ZTE2ZTA1OWJjZjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDkxICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04KLSAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0Uo
QVZGT1VOREFUSU9OKQotCi0jaW1wb3J0IDxDb3JlTWVkaWEvQ29yZU1lZGlhLmg+Ci0KLXR5cGVk
ZWYgc3RydWN0IG9wYXF1ZUNNU2FtcGxlQnVmZmVyICpDTVNhbXBsZUJ1ZmZlclJlZjsKLXR5cGVk
ZWYgc3RydWN0IE9wYXF1ZUF1ZGlvQ29udmVydGVyKiBBdWRpb0NvbnZlcnRlclJlZjsKLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Igewot
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yPiBjcmVhdGUoQ01CdWZmZXJRdWV1
ZVRyaWdnZXJDYWxsYmFjaywgdm9pZCogY2FsbGJhY2tPYmplY3QpOwotICAgIH5BdWRpb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3IoKTsKLQotICAgIHZvaWQgZmluaXNoKCk7Ci0gICAgdm9pZCBhZGRT
YW1wbGVCdWZmZXIoQ01TYW1wbGVCdWZmZXJSZWYpOwotICAgIENNU2FtcGxlQnVmZmVyUmVmIGdl
dE91dHB1dFNhbXBsZUJ1ZmZlcigpOwotICAgIFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4g
dGFrZU91dHB1dFNhbXBsZUJ1ZmZlcigpOwotCi1wcml2YXRlOgotICAgIEF1ZGlvU2FtcGxlQnVm
ZmVyQ29tcHJlc3NvcigpOwotICAgIGJvb2wgaW5pdGlhbGl6ZShDTUJ1ZmZlclF1ZXVlVHJpZ2dl
ckNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja09iamVjdCk7Ci0KLSAgICBzdGF0aWMgT1NTdGF0dXMg
YXVkaW9Db252ZXJ0ZXJDb21wbGV4SW5wdXREYXRhUHJvYyhBdWRpb0NvbnZlcnRlclJlZiwgVUlu
dDMyKiwgQXVkaW9CdWZmZXJMaXN0KiwgQXVkaW9TdHJlYW1QYWNrZXREZXNjcmlwdGlvbioqLCB2
b2lkKik7Ci0KLSAgICB2b2lkIHByb2Nlc3NTYW1wbGVCdWZmZXIoQ01TYW1wbGVCdWZmZXJSZWYp
OwotICAgIGJvb2wgaW5pdEF1ZGlvQ29udmVydGVyRm9yU291cmNlRm9ybWF0RGVzY3JpcHRpb24o
Q01Gb3JtYXREZXNjcmlwdGlvblJlZiwgQXVkaW9Gb3JtYXRJRCk7Ci0gICAgc2l6ZV90IGNvbXB1
dGVCdWZmZXJTaXplRm9yQXVkaW9Gb3JtYXQoQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uLCBV
SW50MzIsIEZsb2F0MzIpOwotICAgIHZvaWQgYXR0YWNoUHJpbWluZ1RyaW1zSWZOZWVkZWQoQ01T
YW1wbGVCdWZmZXJSZWYpOwotICAgIFJldGFpblB0cjxOU051bWJlcj4gZ3JhZHVhbERlY29kZXJS
ZWZyZXNoQ291bnQoKTsKLSAgICBDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGVCdWZmZXJXaXRoTnVt
UGFja2V0cyhVSW50MzIgbnVtUGFja2V0cywgQXVkaW9CdWZmZXJMaXN0KTsKLSAgICB2b2lkIHBy
b2Nlc3NTYW1wbGVCdWZmZXJzVW50aWxMb3dXYXRlclRpbWUoQ01UaW1lKTsKLSAgICBPU1N0YXR1
cyBwcm92aWRlU291cmNlRGF0YU51bU91dHB1dFBhY2tldHMoVUludDMyKiwgQXVkaW9CdWZmZXJM
aXN0KiwgQXVkaW9TdHJlYW1QYWNrZXREZXNjcmlwdGlvbioqKTsKLQotICAgIFJldGFpblB0cjxD
TUJ1ZmZlclF1ZXVlUmVmPiBtX291dHB1dEJ1ZmZlclF1ZXVlOwotICAgIFJldGFpblB0cjxDTUJ1
ZmZlclF1ZXVlUmVmPiBtX2lucHV0QnVmZmVyUXVldWU7Ci0gICAgZGlzcGF0Y2hfcXVldWVfdCBt
X3NlcmlhbERpc3BhdGNoUXVldWU7Ci0gICAgQ01UaW1lIG1fbG93V2F0ZXJUaW1lOwotICAgIGJv
b2wgbV9pc0VuY29kaW5nIHsgZmFsc2UgfTsKLQotICAgIFJldGFpblB0cjxBdWRpb0NvbnZlcnRl
clJlZj4gbV9jb252ZXJ0ZXI7Ci0gICAgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uIG1fc291
cmNlRm9ybWF0OwotICAgIEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBtX2Rlc3RpbmF0aW9u
Rm9ybWF0OwotICAgIFJldGFpblB0cjxDTUZvcm1hdERlc2NyaXB0aW9uUmVmPiBtX2Rlc3RpbmF0
aW9uRm9ybWF0RGVzY3JpcHRpb247Ci0gICAgUmV0YWluUHRyPE5TTnVtYmVyPiBtX2dkckNvdW50
TnVtOwotICAgIFVJbnQzMiBtX21heE91dHB1dFBhY2tldFNpemU7Ci0gICAgVmVjdG9yPEF1ZGlv
U3RyZWFtUGFja2V0RGVzY3JpcHRpb24+IG1fZGVzdGluYXRpb25QYWNrZXREZXNjcmlwdGlvbnM7
Ci0KLSAgICBDTVRpbWUgbV9jdXJyZW50TmF0aXZlUHJlc2VudGF0aW9uVGltZVN0YW1wOwotICAg
IENNVGltZSBtX2N1cnJlbnRPdXRwdXRQcmVzZW50YXRpb25UaW1lU3RhbXA7Ci0gICAgQ01UaW1l
IG1fcmVtYWluaW5nUHJpbWVEdXJhdGlvbjsKLQotICAgIFZlY3RvcjxjaGFyPiBtX3NvdXJjZUJ1
ZmZlcjsKLSAgICBWZWN0b3I8Y2hhcj4gbV9kZXN0aW5hdGlvbkJ1ZmZlcjsKLQotICAgIFJldGFp
blB0cjxDTUJsb2NrQnVmZmVyUmVmPiBtX3NhbXBsZUJsb2NrQnVmZmVyOwotICAgIHNpemVfdCBt
X3NhbXBsZUJsb2NrQnVmZmVyU2l6ZTsKLSAgICBzaXplX3QgbV9jdXJyZW50T2Zmc2V0SW5TYW1w
bGVCbG9ja0J1ZmZlcjsKLSAgICBBdWRpb0Zvcm1hdElEIG1fb3V0cHV0Q29kZWNUeXBlOwotfTsK
LQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKEFWRk9VTkRBVElP
TikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29j
b2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0KZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI3MzMzNzQ2YWRmYjAwM2RjNjYyMGEwMmQxMDZj
OGQ0MGIxY2ZkYTEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3IubW0KKysrIC9kZXYvbnVsbApAQCAtMSw0OTggKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTgotICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCi0gKiBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQXVkaW9TYW1wbGVCdWZm
ZXJDb21wcmVzc29yLmgiCi0KLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoQVZGT1VO
REFUSU9OKQotCi0jaW5jbHVkZSAiTG9nZ2luZy5oIgotI2luY2x1ZGUgPEF1ZGlvVG9vbGJveC9B
dWRpb0NvZGVjLmg+Ci0jaW5jbHVkZSA8QXVkaW9Ub29sYm94L0F1ZGlvQ29udmVydGVyLmg+Ci0j
aW5jbHVkZSA8QXVkaW9Ub29sYm94L0F1ZGlvRm9ybWF0Lmg+Ci0jaW5jbHVkZSA8Rm91bmRhdGlv
bi9Gb3VuZGF0aW9uLmg+Ci0KLSNpbXBvcnQgPHBhbC9jZi9BdWRpb1Rvb2xib3hTb2Z0TGluay5o
PgotCi0jZGVmaW5lIExPV19XQVRFUl9USU1FX0lOX1NFQ09ORCAwLjEKLQotdXNpbmcgbmFtZXNw
YWNlIFBBTDsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGQ6OnVuaXF1ZV9wdHI8QXVkaW9T
YW1wbGVCdWZmZXJDb21wcmVzc29yPiBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmNyZWF0
ZShDTUJ1ZmZlclF1ZXVlVHJpZ2dlckNhbGxiYWNrIGNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja09i
amVjdCkKLXsKLSAgICBhdXRvIGNvbXByZXNzb3IgPSBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9TYW1w
bGVCdWZmZXJDb21wcmVzc29yPihuZXcgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKCkpOwot
ICAgIGlmICghY29tcHJlc3Nvci0+aW5pdGlhbGl6ZShjYWxsYmFjaywgY2FsbGJhY2tPYmplY3Qp
KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gY29tcHJlc3NvcjsKLX0KLQot
QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Io
KQotICAgIDogbV9zZXJpYWxEaXNwYXRjaFF1ZXVlIHsgZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJj
b20uYXBwbGUuQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIiwgRElTUEFUQ0hfUVVFVUVfU0VS
SUFMKSB9Ci0gICAgLCBtX2xvd1dhdGVyVGltZSB7IENNVGltZU1ha2VXaXRoU2Vjb25kcyhMT1df
V0FURVJfVElNRV9JTl9TRUNPTkQsIDEwMDApIH0KLSAgICAsIG1fb3V0cHV0Q29kZWNUeXBlIHsg
a0F1ZGlvRm9ybWF0TVBFRzRBQUMgfQotewotfQotCi1BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3I6On5BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IoKQotewotICAgIGlmIChtX3NlcmlhbERp
c3BhdGNoUXVldWUpCi0gICAgICAgIGRpc3BhdGNoX3JlbGVhc2UobV9zZXJpYWxEaXNwYXRjaFF1
ZXVlKTsKLX0KLQotYm9vbCBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmluaXRpYWxpemUo
Q01CdWZmZXJRdWV1ZVRyaWdnZXJDYWxsYmFjayBjYWxsYmFjaywgdm9pZCogY2FsbGJhY2tPYmpl
Y3QpCi17Ci0gICAgQ01CdWZmZXJRdWV1ZVJlZiBpbnB1dEJ1ZmZlclF1ZXVlOwotICAgIGlmIChh
dXRvIGVycm9yID0gQ01CdWZmZXJRdWV1ZUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCBD
TUJ1ZmZlclF1ZXVlR2V0Q2FsbGJhY2tzRm9yVW5zb3J0ZWRTYW1wbGVCdWZmZXJzKCksICZpbnB1
dEJ1ZmZlclF1ZXVlKSkgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwg
IkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBDTUJ1ZmZlclF1ZXVlQ3JlYXRlIGZvciBtX2lu
cHV0QnVmZmVyUXVldWUgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7Ci0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICB9Ci0gICAgbV9pbnB1dEJ1ZmZlclF1ZXVlID0gYWRvcHRDRihpbnB1dEJ1ZmZl
clF1ZXVlKTsKLQotICAgIENNQnVmZmVyUXVldWVSZWYgb3V0cHV0QnVmZmVyUXVldWU7Ci0gICAg
aWYgKGF1dG8gZXJyb3IgPSBDTUJ1ZmZlclF1ZXVlQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQs
IDAsIENNQnVmZmVyUXVldWVHZXRDYWxsYmFja3NGb3JVbnNvcnRlZFNhbXBsZUJ1ZmZlcnMoKSwg
Jm91dHB1dEJ1ZmZlclF1ZXVlKSkgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0
cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBDTUJ1ZmZlclF1ZXVlQ3JlYXRlIGZv
ciBtX291dHB1dEJ1ZmZlclF1ZXVlIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOwotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIG1fb3V0cHV0QnVmZmVyUXVldWUgPSBhZG9wdENGKG91
dHB1dEJ1ZmZlclF1ZXVlKTsKLSAgICBDTUJ1ZmZlclF1ZXVlSW5zdGFsbFRyaWdnZXIobV9vdXRw
dXRCdWZmZXJRdWV1ZS5nZXQoKSwgY2FsbGJhY2ssIGNhbGxiYWNrT2JqZWN0LCBrQ01CdWZmZXJR
dWV1ZVRyaWdnZXJfV2hlbkRhdGFCZWNvbWVzUmVhZHksIGtDTVRpbWVaZXJvLCBOVUxMKTsKLQot
ICAgIG1faXNFbmNvZGluZyA9IHRydWU7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgQXVk
aW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpmaW5pc2goKQotewotICAgIGRpc3BhdGNoX3N5bmMo
bV9zZXJpYWxEaXNwYXRjaFF1ZXVlLCBeewotICAgICAgICBwcm9jZXNzU2FtcGxlQnVmZmVyc1Vu
dGlsTG93V2F0ZXJUaW1lKGtDTVRpbWVJbnZhbGlkKTsKLSAgICAgICAgYXV0byBlcnJvciA9IENN
QnVmZmVyUXVldWVNYXJrRW5kT2ZEYXRhKG1fb3V0cHV0QnVmZmVyUXVldWUuZ2V0KCkpOwotICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihlcnJvciwgTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3IgQ01CdWZmZXJRdWV1ZU1hcmtFbmRPZkRhdGEgZmFpbGVkICVkIiwg
ZXJyb3IpOwotICAgICAgICBtX2lzRW5jb2RpbmcgPSBmYWxzZTsKLSAgICB9KTsKLX0KLQotYm9v
bCBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmluaXRBdWRpb0NvbnZlcnRlckZvclNvdXJj
ZUZvcm1hdERlc2NyaXB0aW9uKENNRm9ybWF0RGVzY3JpcHRpb25SZWYgZm9ybWF0RGVzY3JpcHRp
b24sIEF1ZGlvRm9ybWF0SUQgb3V0cHV0Rm9ybWF0SUQpCi17Ci0gICAgY29uc3QgYXV0byAqYXVk
aW9Gb3JtYXRMaXN0SXRlbSA9IENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkdldFJpY2hlc3REZWNv
ZGFibGVGb3JtYXQoZm9ybWF0RGVzY3JpcHRpb24pOwotICAgIG1fc291cmNlRm9ybWF0ID0gYXVk
aW9Gb3JtYXRMaXN0SXRlbS0+bUFTQkQ7Ci0KLSAgICBtZW1zZXQoJm1fZGVzdGluYXRpb25Gb3Jt
YXQsIDAsIHNpemVvZihBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24pKTsKLSAgICBtX2Rlc3Rp
bmF0aW9uRm9ybWF0Lm1Gb3JtYXRJRCA9IG91dHB1dEZvcm1hdElEOwotICAgIG1fZGVzdGluYXRp
b25Gb3JtYXQubVNhbXBsZVJhdGUgPSBtX3NvdXJjZUZvcm1hdC5tU2FtcGxlUmF0ZTsKLSAgICBt
X2Rlc3RpbmF0aW9uRm9ybWF0Lm1DaGFubmVsc1BlckZyYW1lID0gbV9zb3VyY2VGb3JtYXQubUNo
YW5uZWxzUGVyRnJhbWU7Ci0KLSAgICBVSW50MzIgc2l6ZSA9IHNpemVvZihtX2Rlc3RpbmF0aW9u
Rm9ybWF0KTsKLSAgICBpZiAoYXV0byBlcnJvciA9IEF1ZGlvRm9ybWF0R2V0UHJvcGVydHkoa0F1
ZGlvRm9ybWF0UHJvcGVydHlfRm9ybWF0SW5mbywgMCwgTlVMTCwgJnNpemUsICZtX2Rlc3RpbmF0
aW9uRm9ybWF0KSkgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1
ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBBdWRpb0Zvcm1hdEdldFByb3BlcnR5IGZhaWxlZCB3
aXRoICVkIiwgZXJyb3IpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgQXVk
aW9Db252ZXJ0ZXJSZWYgY29udmVydGVyOwotICAgIGlmIChhdXRvIGVycm9yID0gQXVkaW9Db252
ZXJ0ZXJOZXcoJm1fc291cmNlRm9ybWF0LCAmbV9kZXN0aW5hdGlvbkZvcm1hdCwgJmNvbnZlcnRl
cikpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3IgQXVkaW9Db252ZXJ0ZXJOZXcgZmFpbGVkIHdpdGggJWQiLCBlcnJv
cik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgbV9jb252ZXJ0ZXIgPSBhZG9w
dENGKGNvbnZlcnRlcik7Ci0KLSAgICBzaXplX3QgY29va2llU2l6ZSA9IDA7Ci0gICAgY29uc3Qg
dm9pZCAqY29va2llID0gQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uR2V0TWFnaWNDb29raWUoZm9y
bWF0RGVzY3JpcHRpb24sICZjb29raWVTaXplKTsKLSAgICBpZiAoY29va2llU2l6ZSkgewotICAg
ICAgICBpZiAoYXV0byBlcnJvciA9IEF1ZGlvQ29udmVydGVyU2V0UHJvcGVydHkobV9jb252ZXJ0
ZXIuZ2V0KCksIGtBdWRpb0NvbnZlcnRlckRlY29tcHJlc3Npb25NYWdpY0Nvb2tpZSwgKFVJbnQz
Miljb29raWVTaXplLCBjb29raWUpKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihN
ZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBzZXR0aW5nIGtBdWRpb0Nv
bnZlcnRlckRlY29tcHJlc3Npb25NYWdpY0Nvb2tpZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsK
LSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHNpemUg
PSBzaXplb2YobV9zb3VyY2VGb3JtYXQpOwotICAgIGlmIChhdXRvIGVycm9yID0gQXVkaW9Db252
ZXJ0ZXJHZXRQcm9wZXJ0eShtX2NvbnZlcnRlci5nZXQoKSwga0F1ZGlvQ29udmVydGVyQ3VycmVu
dElucHV0U3RyZWFtRGVzY3JpcHRpb24sICZzaXplLCAmbV9zb3VyY2VGb3JtYXQpKSB7Ci0gICAg
ICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yIGdldHRpbmcga0F1ZGlvQ29udmVydGVyQ3VycmVudElucHV0U3RyZWFtRGVzY3JpcHRp
b24gZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9
Ci0KLSAgICBpZiAoIW1fc291cmNlRm9ybWF0Lm1CeXRlc1BlclBhY2tldCkgewotICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIm1CeXRlc1BlclBhY2tldCBzaG91bGQgbm90
IGJlIHplcm8iKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHNpemUgPSBz
aXplb2YobV9kZXN0aW5hdGlvbkZvcm1hdCk7Ci0gICAgaWYgKGF1dG8gZXJyb3IgPSBBdWRpb0Nv
bnZlcnRlckdldFByb3BlcnR5KG1fY29udmVydGVyLmdldCgpLCBrQXVkaW9Db252ZXJ0ZXJDdXJy
ZW50T3V0cHV0U3RyZWFtRGVzY3JpcHRpb24sICZzaXplLCAmbV9kZXN0aW5hdGlvbkZvcm1hdCkp
IHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1
ZmZlckNvbXByZXNzb3IgZ2V0dGluZyBrQXVkaW9Db252ZXJ0ZXJDdXJyZW50T3V0cHV0U3RyZWFt
RGVzY3JpcHRpb24gZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7Ci0gICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICB9Ci0KLSAgICBpZiAobV9kZXN0aW5hdGlvbkZvcm1hdC5tRm9ybWF0SUQgPT0ga0F1
ZGlvRm9ybWF0TVBFRzRBQUMpIHsKLSAgICAgICAgLy8gRklYTUU6IFNldCBvdXRwdXRCaXRSYXRl
IGFjY29yZGluZyBNZWRpYVJlY29yZGVyT3B0aW9ucy5hdWRpb0JpdHNQZXJTZWNvbmQuCi0gICAg
ICAgIFVJbnQzMiBvdXRwdXRCaXRSYXRlID0gNjQwMDA7Ci0gICAgICAgIGlmIChtX2Rlc3RpbmF0
aW9uRm9ybWF0Lm1TYW1wbGVSYXRlID49IDQ0MTAwKQotICAgICAgICAgICAgb3V0cHV0Qml0UmF0
ZSA9IDE5MjAwMDsKLSAgICAgICAgZWxzZSBpZiAobV9kZXN0aW5hdGlvbkZvcm1hdC5tU2FtcGxl
UmF0ZSA8IDIyMDAwKQotICAgICAgICAgICAgb3V0cHV0Qml0UmF0ZSA9IDMyMDAwOwotCi0gICAg
ICAgIHNpemUgPSBzaXplb2Yob3V0cHV0Qml0UmF0ZSk7Ci0gICAgICAgIGlmIChhdXRvIGVycm9y
ID0gQXVkaW9Db252ZXJ0ZXJTZXRQcm9wZXJ0eShtX2NvbnZlcnRlci5nZXQoKSwga0F1ZGlvQ29u
dmVydGVyRW5jb2RlQml0UmF0ZSwgc2l6ZSwgJm91dHB1dEJpdFJhdGUpKSB7Ci0gICAgICAgICAg
ICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJl
c3NvciBzZXR0aW5nIGtBdWRpb0NvbnZlcnRlckVuY29kZUJpdFJhdGUgZmFpbGVkIHdpdGggJWQi
LCBlcnJvcik7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0K
LSAgICBpZiAoIW1fZGVzdGluYXRpb25Gb3JtYXQubUJ5dGVzUGVyUGFja2V0KSB7Ci0gICAgICAg
IC8vIElmIHRoZSBkZXN0aW5hdGlvbiBmb3JtYXQgaXMgVkJSLCB3ZSBuZWVkIHRvIGdldCBtYXgg
c2l6ZSBwZXIgcGFja2V0IGZyb20gdGhlIGNvbnZlcnRlci4KLSAgICAgICAgc2l6ZSA9IHNpemVv
ZihtX21heE91dHB1dFBhY2tldFNpemUpOwotCi0gICAgICAgIGlmIChhdXRvIGVycm9yID0gQXVk
aW9Db252ZXJ0ZXJHZXRQcm9wZXJ0eShtX2NvbnZlcnRlci5nZXQoKSwga0F1ZGlvQ29udmVydGVy
UHJvcGVydHlNYXhpbXVtT3V0cHV0UGFja2V0U2l6ZSwgJnNpemUsICZtX21heE91dHB1dFBhY2tl
dFNpemUpKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1
ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBnZXR0aW5nIGtBdWRpb0NvbnZlcnRlclByb3BlcnR5
TWF4aW11bU91dHB1dFBhY2tldFNpemUgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7Ci0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBtX2Rlc3RpbmF0aW9u
QnVmZmVyLnJlc2VydmVDYXBhY2l0eShjb21wdXRlQnVmZmVyU2l6ZUZvckF1ZGlvRm9ybWF0KG1f
ZGVzdGluYXRpb25Gb3JtYXQsIG1fbWF4T3V0cHV0UGFja2V0U2l6ZSwgTE9XX1dBVEVSX1RJTUVf
SU5fU0VDT05EKSk7Ci0gICAgaWYgKCFtX2Rlc3RpbmF0aW9uRm9ybWF0Lm1CeXRlc1BlclBhY2tl
dCkKLSAgICAgICAgbV9kZXN0aW5hdGlvblBhY2tldERlc2NyaXB0aW9ucy5yZXNlcnZlQ2FwYWNp
dHkobV9kZXN0aW5hdGlvbkJ1ZmZlci5jYXBhY2l0eSgpIC8gbV9tYXhPdXRwdXRQYWNrZXRTaXpl
KTsKLQotICAgIHJldHVybiB0cnVlOwotfQotCi1zaXplX3QgQXVkaW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yOjpjb21wdXRlQnVmZmVyU2l6ZUZvckF1ZGlvRm9ybWF0KEF1ZGlvU3RyZWFtQmFzaWNE
ZXNjcmlwdGlvbiBmb3JtYXQsIFVJbnQzMiBtYXhPdXRwdXRQYWNrZXRTaXplLCBGbG9hdDMyIGR1
cmF0aW9uKQotewotICAgIFVJbnQzMiBudW1QYWNrZXRzID0gKGZvcm1hdC5tU2FtcGxlUmF0ZSAq
IGR1cmF0aW9uKSAvIGZvcm1hdC5tRnJhbWVzUGVyUGFja2V0OwotICAgIFVJbnQzMiBvdXRwdXRQ
YWNrZXRTaXplID0gZm9ybWF0Lm1CeXRlc1BlclBhY2tldCA/IGZvcm1hdC5tQnl0ZXNQZXJQYWNr
ZXQgOiBtYXhPdXRwdXRQYWNrZXRTaXplOwotICAgIFVJbnQzMiBidWZmZXJTaXplID0gbnVtUGFj
a2V0cyAqIG91dHB1dFBhY2tldFNpemU7Ci0KLSAgICByZXR1cm4gYnVmZmVyU2l6ZTsKLX0KLQot
dm9pZCBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmF0dGFjaFByaW1pbmdUcmltc0lmTmVl
ZGVkKENNU2FtcGxlQnVmZmVyUmVmIGJ1ZmZlcikKLXsKLSAgICBpZiAoQ01USU1FX0lTX0lOVkFM
SUQobV9yZW1haW5pbmdQcmltZUR1cmF0aW9uKSkgewotICAgICAgICBBdWRpb0NvbnZlcnRlclBy
aW1lSW5mbyBwcmltZUluZm8geyAwLCAwIH07Ci0gICAgICAgIFVJbnQzMiBzaXplID0gc2l6ZW9m
KHByaW1lSW5mbyk7Ci0KLSAgICAgICAgaWYgKGF1dG8gZXJyb3IgPSBBdWRpb0NvbnZlcnRlckdl
dFByb3BlcnR5KG1fY29udmVydGVyLmdldCgpLCBrQXVkaW9Db252ZXJ0ZXJQcmltZUluZm8sICZz
aXplLCAmcHJpbWVJbmZvKSkgewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFT
dHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgZ2V0dGluZyBrQXVkaW9Db252ZXJ0
ZXJQcmltZUluZm8gZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7Ci0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0KLQotICAgICAgICBtX3JlbWFpbmluZ1ByaW1lRHVyYXRpb24gPSBDTVRpbWVN
YWtlKHByaW1lSW5mby5sZWFkaW5nRnJhbWVzLCBtX2Rlc3RpbmF0aW9uRm9ybWF0Lm1TYW1wbGVS
YXRlKTsKLSAgICB9Ci0KLSAgICBpZiAoQ01USU1FX0NPTVBBUkVfSU5MSU5FKGtDTVRpbWVaZXJv
LCA8LCBtX3JlbWFpbmluZ1ByaW1lRHVyYXRpb24pKSB7Ci0gICAgICAgIENNVGltZSBzYW1wbGVE
dXJhdGlvbiA9IENNU2FtcGxlQnVmZmVyR2V0RHVyYXRpb24oYnVmZmVyKTsKLSAgICAgICAgQ01U
aW1lIHRyaW1EdXJhdGlvbiA9IENNVGltZU1pbmltdW0oc2FtcGxlRHVyYXRpb24sIG1fcmVtYWlu
aW5nUHJpbWVEdXJhdGlvbik7Ci0gICAgICAgIENGRGljdGlvbmFyeVJlZiB0cmltQXRTdGFydERp
Y3QgPSBDTVRpbWVDb3B5QXNEaWN0aW9uYXJ5KHRyaW1EdXJhdGlvbiwga0NGQWxsb2NhdG9yRGVm
YXVsdCk7Ci0gICAgICAgIENNU2V0QXR0YWNobWVudChidWZmZXIsIGtDTVNhbXBsZUJ1ZmZlckF0
dGFjaG1lbnRLZXlfVHJpbUR1cmF0aW9uQXRTdGFydCwgdHJpbUF0U3RhcnREaWN0LCBrQ01BdHRh
Y2htZW50TW9kZV9TaG91bGRQcm9wYWdhdGUpOwotICAgICAgICBDRlJlbGVhc2UodHJpbUF0U3Rh
cnREaWN0KTsKLSAgICAgICAgbV9yZW1haW5pbmdQcmltZUR1cmF0aW9uID0gQ01UaW1lU3VidHJh
Y3QobV9yZW1haW5pbmdQcmltZUR1cmF0aW9uLCB0cmltRHVyYXRpb24pOwotICAgIH0KLX0KLQot
UmV0YWluUHRyPE5TTnVtYmVyPiBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmdyYWR1YWxE
ZWNvZGVyUmVmcmVzaENvdW50KCkKLXsKLSAgICBVSW50MzIgZGVsYXlTaXplID0gc2l6ZW9mKHVp
bnQzMl90KTsKLSAgICB1aW50MzJfdCBvcmlnaW5hbERlbGF5TW9kZSA9IDA7Ci0gICAgaWYgKGF1
dG8gZXJyb3IgPSBBdWRpb0NvbnZlcnRlckdldFByb3BlcnR5KG1fY29udmVydGVyLmdldCgpLCBr
QXVkaW9Db2RlY1Byb3BlcnR5RGVsYXlNb2RlLCAmZGVsYXlTaXplLCAmb3JpZ2luYWxEZWxheU1v
ZGUpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1w
bGVCdWZmZXJDb21wcmVzc29yIGdldHRpbmcga0F1ZGlvQ29kZWNQcm9wZXJ0eURlbGF5TW9kZSBm
YWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICB9Ci0KLSAg
ICB1aW50MzJfdCBvcHRpbWFsRGVsYXlNb2RlID0ga0F1ZGlvQ29kZWNEZWxheU1vZGVfT3B0aW1h
bDsKLSAgICBpZiAoYXV0byBlcnJvciA9IEF1ZGlvQ29udmVydGVyU2V0UHJvcGVydHkobV9jb252
ZXJ0ZXIuZ2V0KCksIGtBdWRpb0NvZGVjUHJvcGVydHlEZWxheU1vZGUsIGRlbGF5U2l6ZSwgJm9w
dGltYWxEZWxheU1vZGUpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFt
LCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIHNldHRpbmcga0F1ZGlvQ29kZWNQcm9wZXJ0
eURlbGF5TW9kZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKLSAgICAgICAgcmV0dXJuIG5pbDsK
LSAgICB9Ci0KLSAgICBVSW50MzIgcHJpbWVTaXplID0gc2l6ZW9mKEF1ZGlvQ29kZWNQcmltZUlu
Zm8pOwotICAgIEF1ZGlvQ29kZWNQcmltZUluZm8gcHJpbWVJbmZvIHsgMCwgMCB9OwotICAgIGlm
IChhdXRvIGVycm9yID0gQXVkaW9Db252ZXJ0ZXJHZXRQcm9wZXJ0eShtX2NvbnZlcnRlci5nZXQo
KSwga0F1ZGlvQ29kZWNQcm9wZXJ0eVByaW1lSW5mbywgJnByaW1lU2l6ZSwgJnByaW1lSW5mbykp
IHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1
ZmZlckNvbXByZXNzb3IgZ2V0dGluZyBrQXVkaW9Db2RlY1Byb3BlcnR5UHJpbWVJbmZvIGZhaWxl
ZCB3aXRoICVkIiwgZXJyb3IpOwotICAgICAgICByZXR1cm4gbmlsOwotICAgIH0KLQotICAgIGlm
IChhdXRvIGVycm9yID0gQXVkaW9Db252ZXJ0ZXJTZXRQcm9wZXJ0eShtX2NvbnZlcnRlci5nZXQo
KSwga0F1ZGlvQ29kZWNQcm9wZXJ0eURlbGF5TW9kZSwgZGVsYXlTaXplLCAmb3JpZ2luYWxEZWxh
eU1vZGUpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9T
YW1wbGVCdWZmZXJDb21wcmVzc29yIHNldHRpbmcga0F1ZGlvQ29kZWNQcm9wZXJ0eURlbGF5TW9k
ZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICB9Ci0g
ICAgcmV0dXJuIGFkb3B0TlMoW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6KHByaW1lSW5mby5sZWFk
aW5nRnJhbWVzIC8gbV9kZXN0aW5hdGlvbkZvcm1hdC5tRnJhbWVzUGVyUGFja2V0KV0pOwotfQot
Ci1DTVNhbXBsZUJ1ZmZlclJlZiBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OnNhbXBsZUJ1
ZmZlcldpdGhOdW1QYWNrZXRzKFVJbnQzMiBudW1QYWNrZXRzLCBBdWRpb0J1ZmZlckxpc3QgZmls
bEJ1ZmZlckxpc3QpCi17Ci0gICAgVmVjdG9yPGNoYXI+IGNvb2tpZTsKLSAgICBpZiAoIW1fZGVz
dGluYXRpb25Gb3JtYXREZXNjcmlwdGlvbikgewotICAgICAgICBVSW50MzIgY29va2llU2l6ZSA9
IDA7Ci0KLSAgICAgICAgYXV0byBlcnJvciA9IEF1ZGlvQ29udmVydGVyR2V0UHJvcGVydHlJbmZv
KG1fY29udmVydGVyLmdldCgpLCBrQXVkaW9Db252ZXJ0ZXJDb21wcmVzc2lvbk1hZ2ljQ29va2ll
LCAmY29va2llU2l6ZSwgTlVMTCk7Ci0gICAgICAgIGlmICgoZXJyb3IgPT0gbm9FcnIpICYmICEh
Y29va2llU2l6ZSkgewotICAgICAgICAgICAgY29va2llLnJlc2VydmVDYXBhY2l0eShjb29raWVT
aXplKTsKLQotICAgICAgICAgICAgaWYgKGF1dG8gZXJyb3IgPSBBdWRpb0NvbnZlcnRlckdldFBy
b3BlcnR5KG1fY29udmVydGVyLmdldCgpLCBrQXVkaW9Db252ZXJ0ZXJDb21wcmVzc2lvbk1hZ2lj
Q29va2llLCAmY29va2llU2l6ZSwgY29va2llLmRhdGEoKSkpIHsKLSAgICAgICAgICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nv
ciBnZXR0aW5nIGtBdWRpb0NvbnZlcnRlckNvbXByZXNzaW9uTWFnaWNDb29raWUgZmFpbGVkIHdp
dGggJWQiLCBlcnJvcik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotCi0gICAgICAgIENNRm9ybWF0RGVzY3JpcHRpb25SZWYgZGVzdGluYXRp
b25Gb3JtYXREZXNjcmlwdGlvbjsKLSAgICAgICAgaWYgKGF1dG8gZXJyb3IgPSBDTUF1ZGlvRm9y
bWF0RGVzY3JpcHRpb25DcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgJm1fZGVzdGluYXRpb25G
b3JtYXQsIDAsIE5VTEwsIGNvb2tpZVNpemUsIGNvb2tpZS5kYXRhKCksIE5VTEwsICZkZXN0aW5h
dGlvbkZvcm1hdERlc2NyaXB0aW9uKSkgewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1Io
TWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01BdWRpb0Zvcm1hdERl
c2NyaXB0aW9uQ3JlYXRlIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOwotICAgICAgICAgICAgcmV0
dXJuIG5pbDsKLSAgICAgICAgfQotICAgICAgICBtX2Rlc3RpbmF0aW9uRm9ybWF0RGVzY3JpcHRp
b24gPSBhZG9wdENGKGRlc3RpbmF0aW9uRm9ybWF0RGVzY3JpcHRpb24pOwotICAgICAgICBtX2dk
ckNvdW50TnVtID0gZ3JhZHVhbERlY29kZXJSZWZyZXNoQ291bnQoKTsKLSAgICB9Ci0KLSAgICBj
aGFyICpkYXRhID0gc3RhdGljX2Nhc3Q8Y2hhcio+KGZpbGxCdWZmZXJMaXN0Lm1CdWZmZXJzWzBd
Lm1EYXRhKTsKLSAgICBzaXplX3QgZGF0YVNpemUgPSBmaWxsQnVmZmVyTGlzdC5tQnVmZmVyc1sw
XS5tRGF0YUJ5dGVTaXplOwotCi0gICAgQ01CbG9ja0J1ZmZlclJlZiBibG9ja0J1ZmZlcjsKLSAg
ICBpZiAoYXV0byBlcnJvciA9IENNQmxvY2tCdWZmZXJDcmVhdGVXaXRoTWVtb3J5QmxvY2soa0NG
QWxsb2NhdG9yRGVmYXVsdCwgTlVMTCwgZGF0YVNpemUsIGtDRkFsbG9jYXRvckRlZmF1bHQsIE5V
TEwsIDAsIGRhdGFTaXplLCBrQ01CbG9ja0J1ZmZlckFzc3VyZU1lbW9yeU5vd0ZsYWcsICZibG9j
a0J1ZmZlcikpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRp
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01CbG9ja0J1ZmZlckNyZWF0ZVdpdGhNZW1vcnlCbG9j
ayBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICB9Ci0g
ICAgYXV0byBidWZmZXIgPSBhZG9wdENGKGJsb2NrQnVmZmVyKTsKLQotICAgIGlmIChhdXRvIGVy
cm9yID0gQ01CbG9ja0J1ZmZlclJlcGxhY2VEYXRhQnl0ZXMoZGF0YSwgYnVmZmVyLmdldCgpLCAw
LCBkYXRhU2l6ZSkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJB
dWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01CbG9ja0J1ZmZlclJlcGxhY2VEYXRhQnl0ZXMg
ZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7Ci0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgfQotCi0g
ICAgQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlQnVmZmVyOwotICAgIGF1dG8gZXJyb3IgPSBDTUF1
ZGlvU2FtcGxlQnVmZmVyQ3JlYXRlV2l0aFBhY2tldERlc2NyaXB0aW9ucyhrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCBidWZmZXIuZ2V0KCksIHRydWUsIE5VTEwsIE5VTEwsIG1fZGVzdGluYXRpb25Gb3Jt
YXREZXNjcmlwdGlvbi5nZXQoKSwgbnVtUGFja2V0cywgbV9jdXJyZW50TmF0aXZlUHJlc2VudGF0
aW9uVGltZVN0YW1wLCBtX2Rlc3RpbmF0aW9uUGFja2V0RGVzY3JpcHRpb25zLmRhdGEoKSwgJnNh
bXBsZUJ1ZmZlcik7Ci0gICAgaWYgKGVycm9yKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9S
KE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIENNQXVkaW9TYW1wbGVC
dWZmZXJDcmVhdGVXaXRoUGFja2V0RGVzY3JpcHRpb25zIGZhaWxlZCB3aXRoICVkIiwgZXJyb3Ip
OwotICAgICAgICByZXR1cm4gbmlsOwotICAgIH0KLQotICAgIGlmIChbbV9nZHJDb3VudE51bSBp
bnRWYWx1ZV0pCi0gICAgICAgIENNU2V0QXR0YWNobWVudChzYW1wbGVCdWZmZXIsIGtDTVNhbXBs
ZUJ1ZmZlckF0dGFjaG1lbnRLZXlfR3JhZHVhbERlY29kZXJSZWZyZXNoLCAoX19icmlkZ2UgQ0ZU
eXBlUmVmKW1fZ2RyQ291bnROdW0uZ2V0KCksIGtDTUF0dGFjaG1lbnRNb2RlX1Nob3VsZFByb3Bh
Z2F0ZSk7Ci0KLSAgICByZXR1cm4gc2FtcGxlQnVmZmVyOwotfQotCi1PU1N0YXR1cyBBdWRpb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3I6OmF1ZGlvQ29udmVydGVyQ29tcGxleElucHV0RGF0YVByb2Mo
QXVkaW9Db252ZXJ0ZXJSZWYsIFVJbnQzMiAqbnVtT3V0cHV0UGFja2V0c1B0ciwgQXVkaW9CdWZm
ZXJMaXN0ICpidWZmZXJMaXN0LCBBdWRpb1N0cmVhbVBhY2tldERlc2NyaXB0aW9uICoqcGFja2V0
RGVzY3JpcHRpb25PdXQsIHZvaWQgKmF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvcikKLXsKLSAg
ICBhdXRvICpjb21wcmVzc29yID0gc3RhdGljX2Nhc3Q8QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yKj4oYXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKTsKLSAgICByZXR1cm4gY29tcHJlc3Nv
ci0+cHJvdmlkZVNvdXJjZURhdGFOdW1PdXRwdXRQYWNrZXRzKG51bU91dHB1dFBhY2tldHNQdHIs
IGJ1ZmZlckxpc3QsIHBhY2tldERlc2NyaXB0aW9uT3V0KTsKLX0KLQotT1NTdGF0dXMgQXVkaW9T
YW1wbGVCdWZmZXJDb21wcmVzc29yOjpwcm92aWRlU291cmNlRGF0YU51bU91dHB1dFBhY2tldHMo
VUludDMyKiBudW1PdXRwdXRQYWNrZXRzUHRyLCBBdWRpb0J1ZmZlckxpc3QqIGF1ZGlvQnVmZmVy
TGlzdCwgQXVkaW9TdHJlYW1QYWNrZXREZXNjcmlwdGlvbioqIHBhY2tldERlc2NyaXB0aW9uT3V0
KQotewotICAgIGlmIChwYWNrZXREZXNjcmlwdGlvbk91dCkKLSAgICAgICAgKnBhY2tldERlc2Ny
aXB0aW9uT3V0ID0gTlVMTDsKLQotICAgIGNvbnN0IFVJbnQzMiBudW1QYWNrZXRzVG9Db3B5ID0g
Km51bU91dHB1dFBhY2tldHNQdHI7Ci0gICAgc2l6ZV90IG51bUJ5dGVzVG9Db3B5ID0gKG51bVBh
Y2tldHNUb0NvcHkgKiBtX3NvdXJjZUZvcm1hdC5tQnl0ZXNQZXJQYWNrZXQpOwotCi0gICAgaWYg
KGF1ZGlvQnVmZmVyTGlzdC0+bU51bWJlckJ1ZmZlcnMgPT0gMSkgewotICAgICAgICBzaXplX3Qg
Y3VycmVudE9mZnNldEluU291cmNlQnVmZmVyID0gMDsKLQotICAgICAgICBtX3NvdXJjZUJ1ZmZl
ci5yZXNlcnZlQ2FwYWNpdHkobnVtQnl0ZXNUb0NvcHkpOwotCi0gICAgICAgIHdoaWxlIChudW1C
eXRlc1RvQ29weSkgewotICAgICAgICAgICAgaWYgKG1fc2FtcGxlQmxvY2tCdWZmZXJTaXplIDw9
IG1fY3VycmVudE9mZnNldEluU2FtcGxlQmxvY2tCdWZmZXIpIHsKLSAgICAgICAgICAgICAgICBp
ZiAobV9zYW1wbGVCbG9ja0J1ZmZlcikgewotICAgICAgICAgICAgICAgICAgICBtX3NhbXBsZUJs
b2NrQnVmZmVyID0gbnVsbHB0cjsKLSAgICAgICAgICAgICAgICAgICAgbV9zYW1wbGVCbG9ja0J1
ZmZlclNpemUgPSAwOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGlmIChD
TUJ1ZmZlclF1ZXVlSXNFbXB0eShtX2lucHV0QnVmZmVyUXVldWUuZ2V0KCkpKQotICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgICAgICAgIGF1dG8gc2FtcGxlQnVmZmVyID0g
YWRvcHRDRigoQ01TYW1wbGVCdWZmZXJSZWYpKGNvbnN0X2Nhc3Q8dm9pZCo+KENNQnVmZmVyUXVl
dWVEZXF1ZXVlQW5kUmV0YWluKG1faW5wdXRCdWZmZXJRdWV1ZS5nZXQoKSkpKSk7Ci0gICAgICAg
ICAgICAgICAgbV9zYW1wbGVCbG9ja0J1ZmZlciA9IGFkb3B0Q0YoKENNQmxvY2tCdWZmZXJSZWYp
KGNvbnN0X2Nhc3Q8dm9pZCo+KENGUmV0YWluKENNU2FtcGxlQnVmZmVyR2V0RGF0YUJ1ZmZlcihz
YW1wbGVCdWZmZXIuZ2V0KCkpKSkpKTsKLSAgICAgICAgICAgICAgICBpZiAoIW1fc2FtcGxlQmxv
Y2tCdWZmZXIpIHsKLSAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFT
dHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01TYW1wbGVCdWZmZXJHZXREYXRh
QnVmZmVyIGZhaWxlZCIpOwotICAgICAgICAgICAgICAgICAgICBtX3NhbXBsZUJsb2NrQnVmZmVy
U2l6ZSA9IDA7Ci0gICAgICAgICAgICAgICAgICAgIG1fY3VycmVudE9mZnNldEluU2FtcGxlQmxv
Y2tCdWZmZXIgPSAwOwotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgbV9zYW1wbGVCbG9ja0J1ZmZlclNpemUgPSBDTUJsb2Nr
QnVmZmVyR2V0RGF0YUxlbmd0aChtX3NhbXBsZUJsb2NrQnVmZmVyLmdldCgpKTsKLSAgICAgICAg
ICAgICAgICBtX2N1cnJlbnRPZmZzZXRJblNhbXBsZUJsb2NrQnVmZmVyID0gMDsKLSAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgaWYgKG1fc2FtcGxlQmxvY2tCdWZmZXIpIHsKLSAgICAgICAg
ICAgICAgICBzaXplX3QgbnVtQnl0ZXNUb0NvcHlGcm9tU2FtcGxlQmJ1ZiA9IHN0ZDo6bWluKG51
bUJ5dGVzVG9Db3B5LCAobV9zYW1wbGVCbG9ja0J1ZmZlclNpemUgLSBtX2N1cnJlbnRPZmZzZXRJ
blNhbXBsZUJsb2NrQnVmZmVyKSk7Ci0gICAgICAgICAgICAgICAgaWYgKGF1dG8gZXJyb3IgPSBD
TUJsb2NrQnVmZmVyQ29weURhdGFCeXRlcyhtX3NhbXBsZUJsb2NrQnVmZmVyLmdldCgpLCBtX2N1
cnJlbnRPZmZzZXRJblNhbXBsZUJsb2NrQnVmZmVyLCBudW1CeXRlc1RvQ29weUZyb21TYW1wbGVC
YnVmLCAobV9zb3VyY2VCdWZmZXIuZGF0YSgpICsgY3VycmVudE9mZnNldEluU291cmNlQnVmZmVy
KSkpIHsKLSAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0s
ICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01CbG9ja0J1ZmZlckNvcHlEYXRhQnl0ZXMg
ZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJv
cjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgbnVtQnl0ZXNUb0NvcHkgLT0g
bnVtQnl0ZXNUb0NvcHlGcm9tU2FtcGxlQmJ1ZjsKLSAgICAgICAgICAgICAgICBjdXJyZW50T2Zm
c2V0SW5Tb3VyY2VCdWZmZXIgKz0gbnVtQnl0ZXNUb0NvcHlGcm9tU2FtcGxlQmJ1ZjsKLSAgICAg
ICAgICAgICAgICBtX2N1cnJlbnRPZmZzZXRJblNhbXBsZUJsb2NrQnVmZmVyICs9IG51bUJ5dGVz
VG9Db3B5RnJvbVNhbXBsZUJidWY7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAg
YXVkaW9CdWZmZXJMaXN0LT5tQnVmZmVyc1swXS5tRGF0YSA9IG1fc291cmNlQnVmZmVyLmRhdGEo
KTsKLSAgICAgICAgYXVkaW9CdWZmZXJMaXN0LT5tQnVmZmVyc1swXS5tRGF0YUJ5dGVTaXplID0g
Y3VycmVudE9mZnNldEluU291cmNlQnVmZmVyOwotICAgICAgICBhdWRpb0J1ZmZlckxpc3QtPm1C
dWZmZXJzWzBdLm1OdW1iZXJDaGFubmVscyA9IG1fc291cmNlRm9ybWF0Lm1DaGFubmVsc1BlckZy
YW1lOwotCi0gICAgICAgICpudW1PdXRwdXRQYWNrZXRzUHRyID0gKGF1ZGlvQnVmZmVyTGlzdC0+
bUJ1ZmZlcnNbMF0ubURhdGFCeXRlU2l6ZSAvIG1fc291cmNlRm9ybWF0Lm1CeXRlc1BlclBhY2tl
dCk7Ci0gICAgICAgIHJldHVybiBub0VycjsKLSAgICB9Ci0KLSAgICBBU1NFUlQoYXVkaW9CdWZm
ZXJMaXN0LT5tTnVtYmVyQnVmZmVycyA9PSAyKTsKLQotICAgIC8vIEZJWE1FOiBTdXBwb3J0IGlu
dGVybGVhdmVkIGRhdGEgYnkgdW5pbnRlcmxlYXZpbmcgbV9zb3VyY2VCdWZmZXIgaWYgbmVlZGVk
LgotICAgIEFTU0VSVChtX3NvdXJjZUZvcm1hdC5tRm9ybWF0RmxhZ3MgJiBrQXVkaW9Gb3JtYXRG
bGFnSXNOb25JbnRlcmxlYXZlZCk7Ci0KLSAgICBtX3NvdXJjZUJ1ZmZlci5yZXNlcnZlQ2FwYWNp
dHkoMiAqIG51bUJ5dGVzVG9Db3B5KTsKLSAgICBhdXRvKiBmaXJzdENoYW5uZWwgPSBtX3NvdXJj
ZUJ1ZmZlci5kYXRhKCk7Ci0gICAgYXV0byogc2Vjb25kQ2hhbm5lbCA9IG1fc291cmNlQnVmZmVy
LmRhdGEoKSArIG51bUJ5dGVzVG9Db3B5OwotCi0gICAgc2l6ZV90IGN1cnJlbnRPZmZzZXRJblNv
dXJjZUJ1ZmZlciA9IDA7Ci0gICAgd2hpbGUgKG51bUJ5dGVzVG9Db3B5KSB7Ci0gICAgICAgIGlm
IChtX3NhbXBsZUJsb2NrQnVmZmVyU2l6ZSA8PSBtX2N1cnJlbnRPZmZzZXRJblNhbXBsZUJsb2Nr
QnVmZmVyKSB7Ci0gICAgICAgICAgICBpZiAobV9zYW1wbGVCbG9ja0J1ZmZlcikgewotICAgICAg
ICAgICAgICAgIG1fc2FtcGxlQmxvY2tCdWZmZXIgPSBudWxscHRyOwotICAgICAgICAgICAgICAg
IG1fc2FtcGxlQmxvY2tCdWZmZXJTaXplID0gMDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgaWYgKENNQnVmZmVyUXVldWVJc0VtcHR5KG1faW5wdXRCdWZmZXJRdWV1ZS5nZXQoKSkpCi0g
ICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgIGF1dG8gc2FtcGxlQnVmZmVyID0g
YWRvcHRDRigoQ01TYW1wbGVCdWZmZXJSZWYpKGNvbnN0X2Nhc3Q8dm9pZCo+KENNQnVmZmVyUXVl
dWVEZXF1ZXVlQW5kUmV0YWluKG1faW5wdXRCdWZmZXJRdWV1ZS5nZXQoKSkpKSk7Ci0gICAgICAg
ICAgICBtX3NhbXBsZUJsb2NrQnVmZmVyID0gYWRvcHRDRigoQ01CbG9ja0J1ZmZlclJlZikoY29u
c3RfY2FzdDx2b2lkKj4oQ0ZSZXRhaW4oQ01TYW1wbGVCdWZmZXJHZXREYXRhQnVmZmVyKHNhbXBs
ZUJ1ZmZlci5nZXQoKSkpKSkpOwotICAgICAgICAgICAgaWYgKCFtX3NhbXBsZUJsb2NrQnVmZmVy
KSB7Ci0gICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRp
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01TYW1wbGVCdWZmZXJHZXREYXRhQnVmZmVyIGZhaWxl
ZCIpOwotICAgICAgICAgICAgICAgIG1fc2FtcGxlQmxvY2tCdWZmZXJTaXplID0gMDsKLSAgICAg
ICAgICAgICAgICBtX2N1cnJlbnRPZmZzZXRJblNhbXBsZUJsb2NrQnVmZmVyID0gMDsKLSAgICAg
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1fc2FtcGxl
QmxvY2tCdWZmZXJTaXplID0gQ01CbG9ja0J1ZmZlckdldERhdGFMZW5ndGgobV9zYW1wbGVCbG9j
a0J1ZmZlci5nZXQoKSkgLyAyOwotICAgICAgICAgICAgbV9jdXJyZW50T2Zmc2V0SW5TYW1wbGVC
bG9ja0J1ZmZlciA9IDA7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAobV9zYW1wbGVCbG9ja0J1
ZmZlcikgewotICAgICAgICAgICAgc2l6ZV90IG51bUJ5dGVzVG9Db3B5RnJvbVNhbXBsZUJidWYg
PSBzdGQ6Om1pbihudW1CeXRlc1RvQ29weSwgKG1fc2FtcGxlQmxvY2tCdWZmZXJTaXplIC0gbV9j
dXJyZW50T2Zmc2V0SW5TYW1wbGVCbG9ja0J1ZmZlcikpOwotICAgICAgICAgICAgaWYgKGF1dG8g
ZXJyb3IgPSBDTUJsb2NrQnVmZmVyQ29weURhdGFCeXRlcyhtX3NhbXBsZUJsb2NrQnVmZmVyLmdl
dCgpLCBtX2N1cnJlbnRPZmZzZXRJblNhbXBsZUJsb2NrQnVmZmVyLCBudW1CeXRlc1RvQ29weUZy
b21TYW1wbGVCYnVmLCAoZmlyc3RDaGFubmVsICsgY3VycmVudE9mZnNldEluU291cmNlQnVmZmVy
KSkpIHsKLSAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1
ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBDTUJsb2NrQnVmZmVyQ29weURhdGFCeXRlcyBmaXJz
dCBjaGFubmVsIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOwotICAgICAgICAgICAgICAgIHJldHVy
biBlcnJvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChhdXRvIGVycm9yID0gQ01C
bG9ja0J1ZmZlckNvcHlEYXRhQnl0ZXMobV9zYW1wbGVCbG9ja0J1ZmZlci5nZXQoKSwgbV9jdXJy
ZW50T2Zmc2V0SW5TYW1wbGVCbG9ja0J1ZmZlciArIG1fc2FtcGxlQmxvY2tCdWZmZXJTaXplLCBu
dW1CeXRlc1RvQ29weUZyb21TYW1wbGVCYnVmLCAoc2Vjb25kQ2hhbm5lbCArIGN1cnJlbnRPZmZz
ZXRJblNvdXJjZUJ1ZmZlcikpKSB7Ci0gICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1Io
TWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01CbG9ja0J1ZmZlckNv
cHlEYXRhQnl0ZXMgc2Vjb25kIGNoYW5uZWwgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIGVycm9yOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgbnVt
Qnl0ZXNUb0NvcHkgLT0gbnVtQnl0ZXNUb0NvcHlGcm9tU2FtcGxlQmJ1ZjsKLSAgICAgICAgICAg
IGN1cnJlbnRPZmZzZXRJblNvdXJjZUJ1ZmZlciArPSBudW1CeXRlc1RvQ29weUZyb21TYW1wbGVC
YnVmOwotICAgICAgICAgICAgbV9jdXJyZW50T2Zmc2V0SW5TYW1wbGVCbG9ja0J1ZmZlciArPSBu
dW1CeXRlc1RvQ29weUZyb21TYW1wbGVCYnVmOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgYXVk
aW9CdWZmZXJMaXN0LT5tQnVmZmVyc1swXS5tRGF0YSA9IGZpcnN0Q2hhbm5lbDsKLSAgICBhdWRp
b0J1ZmZlckxpc3QtPm1CdWZmZXJzWzBdLm1EYXRhQnl0ZVNpemUgPSBjdXJyZW50T2Zmc2V0SW5T
b3VyY2VCdWZmZXI7Ci0gICAgYXVkaW9CdWZmZXJMaXN0LT5tQnVmZmVyc1swXS5tTnVtYmVyQ2hh
bm5lbHMgPSAxOwotCi0gICAgYXVkaW9CdWZmZXJMaXN0LT5tQnVmZmVyc1sxXS5tRGF0YSA9IHNl
Y29uZENoYW5uZWw7Ci0gICAgYXVkaW9CdWZmZXJMaXN0LT5tQnVmZmVyc1sxXS5tRGF0YUJ5dGVT
aXplID0gY3VycmVudE9mZnNldEluU291cmNlQnVmZmVyOwotICAgIGF1ZGlvQnVmZmVyTGlzdC0+
bUJ1ZmZlcnNbMV0ubU51bWJlckNoYW5uZWxzID0gMTsKLQotICAgICpudW1PdXRwdXRQYWNrZXRz
UHRyID0gKGF1ZGlvQnVmZmVyTGlzdC0+bUJ1ZmZlcnNbMF0ubURhdGFCeXRlU2l6ZSAvIG1fc291
cmNlRm9ybWF0Lm1CeXRlc1BlclBhY2tldCk7Ci0gICAgcmV0dXJuIG5vRXJyOwotfQotCi12b2lk
IEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6cHJvY2Vzc1NhbXBsZUJ1ZmZlcnNVbnRpbExv
d1dhdGVyVGltZShDTVRpbWUgbG93V2F0ZXJUaW1lKQotewotICAgIGlmICghbV9jb252ZXJ0ZXIp
IHsKLSAgICAgICAgYXV0byBidWZmZXIgPSAoQ01TYW1wbGVCdWZmZXJSZWYpKGNvbnN0X2Nhc3Q8
dm9pZCo+KENNQnVmZmVyUXVldWVHZXRIZWFkKG1faW5wdXRCdWZmZXJRdWV1ZS5nZXQoKSkpKTsK
LSAgICAgICAgQVNTRVJUKGJ1ZmZlcik7Ci0KLSAgICAgICAgbV9jdXJyZW50TmF0aXZlUHJlc2Vu
dGF0aW9uVGltZVN0YW1wID0gQ01TYW1wbGVCdWZmZXJHZXRQcmVzZW50YXRpb25UaW1lU3RhbXAo
YnVmZmVyKTsKLSAgICAgICAgbV9jdXJyZW50T3V0cHV0UHJlc2VudGF0aW9uVGltZVN0YW1wID0g
Q01TYW1wbGVCdWZmZXJHZXRPdXRwdXRQcmVzZW50YXRpb25UaW1lU3RhbXAoYnVmZmVyKTsKLQot
ICAgICAgICBhdXRvIGZvcm1hdERlc2NyaXB0aW9uID0gQ01TYW1wbGVCdWZmZXJHZXRGb3JtYXRE
ZXNjcmlwdGlvbihidWZmZXIpOwotICAgICAgICBpZiAoIWluaXRBdWRpb0NvbnZlcnRlckZvclNv
dXJjZUZvcm1hdERlc2NyaXB0aW9uKGZvcm1hdERlc2NyaXB0aW9uLCBtX291dHB1dENvZGVjVHlw
ZSkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgd2hpbGUgKENNVElNRV9JU19J
TlZBTElEKGxvd1dhdGVyVGltZSkgfHwgQ01USU1FX0NPTVBBUkVfSU5MSU5FKGxvd1dhdGVyVGlt
ZSwgPCwgQ01CdWZmZXJRdWV1ZUdldER1cmF0aW9uKG1faW5wdXRCdWZmZXJRdWV1ZS5nZXQoKSkp
KSB7Ci0gICAgICAgIEF1ZGlvQnVmZmVyTGlzdCBmaWxsQnVmZmVyTGlzdDsKLQotICAgICAgICBm
aWxsQnVmZmVyTGlzdC5tTnVtYmVyQnVmZmVycyA9IDE7Ci0gICAgICAgIGZpbGxCdWZmZXJMaXN0
Lm1CdWZmZXJzWzBdLm1OdW1iZXJDaGFubmVscyA9IG1fZGVzdGluYXRpb25Gb3JtYXQubUNoYW5u
ZWxzUGVyRnJhbWU7Ci0gICAgICAgIGZpbGxCdWZmZXJMaXN0Lm1CdWZmZXJzWzBdLm1EYXRhQnl0
ZVNpemUgPSAoVUludDMyKW1fZGVzdGluYXRpb25CdWZmZXIuY2FwYWNpdHkoKTsKLSAgICAgICAg
ZmlsbEJ1ZmZlckxpc3QubUJ1ZmZlcnNbMF0ubURhdGEgPSBtX2Rlc3RpbmF0aW9uQnVmZmVyLmRh
dGEoKTsKLQotICAgICAgICBVSW50MzIgb3V0cHV0UGFja2V0U2l6ZSA9IG1fZGVzdGluYXRpb25G
b3JtYXQubUJ5dGVzUGVyUGFja2V0ID8gbV9kZXN0aW5hdGlvbkZvcm1hdC5tQnl0ZXNQZXJQYWNr
ZXQgOiBtX21heE91dHB1dFBhY2tldFNpemU7Ci0gICAgICAgIFVJbnQzMiBudW1PdXRwdXRQYWNr
ZXRzID0gKFVJbnQzMiltX2Rlc3RpbmF0aW9uQnVmZmVyLmNhcGFjaXR5KCkgLyBvdXRwdXRQYWNr
ZXRTaXplOwotCi0gICAgICAgIGF1dG8gZXJyb3IgPSBBdWRpb0NvbnZlcnRlckZpbGxDb21wbGV4
QnVmZmVyKG1fY29udmVydGVyLmdldCgpLCBhdWRpb0NvbnZlcnRlckNvbXBsZXhJbnB1dERhdGFQ
cm9jLCB0aGlzLCAmbnVtT3V0cHV0UGFja2V0cywgJmZpbGxCdWZmZXJMaXN0LCBtX2Rlc3RpbmF0
aW9uUGFja2V0RGVzY3JpcHRpb25zLmRhdGEoKSk7Ci0gICAgICAgIGlmIChlcnJvcikgewotICAg
ICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3IgQXVkaW9Db252ZXJ0ZXJGaWxsQ29tcGxleEJ1ZmZlciBmYWlsZWQgd2l0aCAl
ZCIsIGVycm9yKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGlm
ICghbnVtT3V0cHV0UGFja2V0cykKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGF1dG8g
YnVmZmVyID0gc2FtcGxlQnVmZmVyV2l0aE51bVBhY2tldHMobnVtT3V0cHV0UGFja2V0cywgZmls
bEJ1ZmZlckxpc3QpOwotCi0gICAgICAgIGF0dGFjaFByaW1pbmdUcmltc0lmTmVlZGVkKGJ1ZmZl
cik7Ci0KLSAgICAgICAgZXJyb3IgPSBDTVNhbXBsZUJ1ZmZlclNldE91dHB1dFByZXNlbnRhdGlv
blRpbWVTdGFtcChidWZmZXIsIG1fY3VycmVudE91dHB1dFByZXNlbnRhdGlvblRpbWVTdGFtcCk7
Ci0gICAgICAgIGlmIChlcnJvcikgewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVk
aWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01TYW1wbGVCdWZmZXJTZXRP
dXRwdXRQcmVzZW50YXRpb25UaW1lU3RhbXAgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7Ci0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBDTVRpbWUgbmF0aXZlRHVyYXRp
b24gPSBDTVNhbXBsZUJ1ZmZlckdldER1cmF0aW9uKGJ1ZmZlcik7Ci0gICAgICAgIG1fY3VycmVu
dE5hdGl2ZVByZXNlbnRhdGlvblRpbWVTdGFtcCA9IENNVGltZUFkZChtX2N1cnJlbnROYXRpdmVQ
cmVzZW50YXRpb25UaW1lU3RhbXAsIG5hdGl2ZUR1cmF0aW9uKTsKLQotICAgICAgICBDTVRpbWUg
b3V0cHV0RHVyYXRpb24gPSBDTVNhbXBsZUJ1ZmZlckdldE91dHB1dER1cmF0aW9uKGJ1ZmZlcik7
Ci0gICAgICAgIG1fY3VycmVudE91dHB1dFByZXNlbnRhdGlvblRpbWVTdGFtcCA9IENNVGltZUFk
ZChtX2N1cnJlbnRPdXRwdXRQcmVzZW50YXRpb25UaW1lU3RhbXAsIG91dHB1dER1cmF0aW9uKTsK
LQotICAgICAgICBlcnJvciA9IENNQnVmZmVyUXVldWVFbnF1ZXVlKG1fb3V0cHV0QnVmZmVyUXVl
dWUuZ2V0KCksIGJ1ZmZlcik7Ci0gICAgICAgIGlmIChlcnJvcikgewotICAgICAgICAgICAgUkVM
RUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Ig
Q01CdWZmZXJRdWV1ZUVucXVldWUgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7Ci0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXZvaWQgQXVkaW9TYW1wbGVCdWZmZXJD
b21wcmVzc29yOjpwcm9jZXNzU2FtcGxlQnVmZmVyKENNU2FtcGxlQnVmZmVyUmVmIGJ1ZmZlcikK
LXsKLSAgICBhdXRvIGVycm9yID0gQ01CdWZmZXJRdWV1ZUVucXVldWUobV9pbnB1dEJ1ZmZlclF1
ZXVlLmdldCgpLCBidWZmZXIpOwotICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGKGVycm9yLCBNZWRp
YVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBDTUJ1ZmZlclF1ZXVlRW5xdWV1
ZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKLQotICAgIHByb2Nlc3NTYW1wbGVCdWZmZXJzVW50
aWxMb3dXYXRlclRpbWUobV9sb3dXYXRlclRpbWUpOwotfQotCi12b2lkIEF1ZGlvU2FtcGxlQnVm
ZmVyQ29tcHJlc3Nvcjo6YWRkU2FtcGxlQnVmZmVyKENNU2FtcGxlQnVmZmVyUmVmIGJ1ZmZlcikK
LXsKLSAgICBkaXNwYXRjaF9zeW5jKG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZSwgXnsKLSAgICAgICAg
aWYgKG1faXNFbmNvZGluZykKLSAgICAgICAgICAgIHByb2Nlc3NTYW1wbGVCdWZmZXIoYnVmZmVy
KTsKLSAgICB9KTsKLX0KLQotQ01TYW1wbGVCdWZmZXJSZWYgQXVkaW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yOjpnZXRPdXRwdXRTYW1wbGVCdWZmZXIoKQotewotICAgIHJldHVybiAoQ01TYW1wbGVC
dWZmZXJSZWYpKGNvbnN0X2Nhc3Q8dm9pZCo+KENNQnVmZmVyUXVldWVHZXRIZWFkKG1fb3V0cHV0
QnVmZmVyUXVldWUuZ2V0KCkpKSk7Ci19Ci0KLVJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4g
QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjp0YWtlT3V0cHV0U2FtcGxlQnVmZmVyKCkKLXsK
LSAgICByZXR1cm4gYWRvcHRDRigoQ01TYW1wbGVCdWZmZXJSZWYpKGNvbnN0X2Nhc3Q8dm9pZCo+
KENNQnVmZmVyUXVldWVEZXF1ZXVlQW5kUmV0YWluKG1fb3V0cHV0QnVmZmVyUXVldWUuZ2V0KCkp
KSkpOwotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoQVZG
T1VOREFUSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNv
cmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyQ29jb2EuaAppbmRleCBmYjAyYjEyMWY3OTk1NDBjOWVhYmE4NTM3ZTYyMmNiMTk4YmI1NzFi
Li5iMTQ3Y2EyODgyOWIwZjEwMzBiZGE3NGEwODQyNmM0NTY1ZTk4NzFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJl
Y29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaApAQCAtMjUsNyAr
MjUsNiBAQAogI3ByYWdtYSBvbmNlCiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotI2luY2x1
ZGUgIkF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uaCIKIAogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5o
IgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgpAQCAtMzUsMTYgKzM0LDExIEBA
CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1dl
YWtQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGhyZWFkcy9CaW5hcnlTZW1hcGhvcmUuaD4KLSNpbmNs
dWRlIDxDb3JlQXVkaW8vQ29yZUF1ZGlvVHlwZXMuaD4KLSNpbmNsdWRlIDxDb3JlTWVkaWEvQ01U
aW1lLmg+CiAKIHR5cGVkZWYgc3RydWN0IG9wYXF1ZUNNU2FtcGxlQnVmZmVyICpDTVNhbXBsZUJ1
ZmZlclJlZjsKLXR5cGVkZWYgY29uc3Qgc3RydWN0IG9wYXF1ZUNNRm9ybWF0RGVzY3JpcHRpb24q
IENNRm9ybWF0RGVzY3JpcHRpb25SZWY7Ci10eXBlZGVmIHN0cnVjdCBvcGFxdWVDTUJ1ZmZlclF1
ZXVlVHJpZ2dlclRva2VuICpDTUJ1ZmZlclF1ZXVlVHJpZ2dlclRva2VuOwogCiBPQkpDX0NMQVNT
IEFWQXNzZXRXcml0ZXI7CiBPQkpDX0NMQVNTIEFWQXNzZXRXcml0ZXJJbnB1dDsKLU9CSkNfQ0xB
U1MgV2ViQVZBc3NldFdyaXRlckRlbGVnYXRlOwogCiBuYW1lc3BhY2UgV1RGIHsKIGNsYXNzIE1l
ZGlhVGltZTsKQEAgLTUyLDgzICs0NiwyOSBAQCBjbGFzcyBNZWRpYVRpbWU7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotY2xhc3MgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOwogY2xhc3Mg
QXVkaW9TdHJlYW1EZXNjcmlwdGlvbjsKIGNsYXNzIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOwog
Y2xhc3MgUGxhdGZvcm1BdWRpb0RhdGE7Ci1jbGFzcyBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3I7CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JUIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyIDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyLCBX
VEY6OkRlc3RydWN0aW9uVGhyZWFkOjpNYWluPiwgcHVibGljIENhbk1ha2VXZWFrUHRyPE1lZGlh
UmVjb3JkZXJQcml2YXRlV3JpdGVyLCBXZWFrUHRyRmFjdG9yeUluaXRpYWxpemF0aW9uOjpFYWdl
cj4geworY2xhc3MgV0VCQ09SRV9FWFBPUlQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIgOiBw
dWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIsIFdU
Rjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW4+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8TWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXI+IHsKIHB1YmxpYzoKKyAgICBzdGF0aWMgUmVmUHRyPE1lZGlh
UmVjb3JkZXJQcml2YXRlV3JpdGVyPiBjcmVhdGUoY29uc3QgTWVkaWFTdHJlYW1UcmFja1ByaXZh
dGUqIGF1ZGlvVHJhY2ssIGNvbnN0IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlKiB2aWRlb1RyYWNr
KTsKICAgICBzdGF0aWMgUmVmUHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyPiBjcmVhdGUo
Ym9vbCBoYXNBdWRpbywgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKICAgICB+TWVkaWFSZWNvcmRl
clByaXZhdGVXcml0ZXIoKTsKLQorICAgIAorICAgIGJvb2wgc2V0dXBXcml0ZXIoKTsKKyAgICBi
b29sIHNldFZpZGVvSW5wdXQoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKKyAgICBib29sIHNldEF1
ZGlvSW5wdXQoKTsKICAgICB2b2lkIGFwcGVuZFZpZGVvU2FtcGxlQnVmZmVyKENNU2FtcGxlQnVm
ZmVyUmVmKTsKICAgICB2b2lkIGFwcGVuZEF1ZGlvU2FtcGxlQnVmZmVyKGNvbnN0IFBsYXRmb3Jt
QXVkaW9EYXRhJiwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIGNvbnN0IFdURjo6TWVk
aWFUaW1lJiwgc2l6ZV90KTsKICAgICB2b2lkIHN0b3BSZWNvcmRpbmcoKTsKICAgICB2b2lkIGZl
dGNoRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYpPiYm
KTsKIAotI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCi0gICAgdm9pZCBhcHBlbmREYXRhKGNv
bnN0IGNoYXIqLCBzaXplX3QpOwotICAgIHZvaWQgYXBwZW5kRGF0YShSZWY8U2hhcmVkQnVmZmVy
PiYmKTsKLSNlbmRpZgotCiBwcml2YXRlOgotI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCi0g
ICAgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIoYm9vbCBoYXNBdWRpbywgYm9vbCBoYXNWaWRl
byk7Ci0gICAgdm9pZCBjbGVhcigpOwotCi0gICAgYm9vbCBpbml0aWFsaXplKCk7Ci0KLSAgICBz
dGF0aWMgdm9pZCBjb21wcmVzc2VkVmlkZW9PdXRwdXRCdWZmZXJDYWxsYmFjayh2b2lkKiwgQ01C
dWZmZXJRdWV1ZVRyaWdnZXJUb2tlbik7Ci0gICAgc3RhdGljIHZvaWQgY29tcHJlc3NlZEF1ZGlv
T3V0cHV0QnVmZmVyQ2FsbGJhY2sodm9pZCosIENNQnVmZmVyUXVldWVUcmlnZ2VyVG9rZW4pOwot
Ci0gICAgdm9pZCBzdGFydEFzc2V0V3JpdGVyKCk7Ci0gICAgdm9pZCBhcHBlbmRDb21wcmVzc2Vk
U2FtcGxlQnVmZmVycygpOwotCi0gICAgYm9vbCBhcHBlbmRDb21wcmVzc2VkQXVkaW9TYW1wbGVC
dWZmZXIoKTsKLSAgICBib29sIGFwcGVuZENvbXByZXNzZWRWaWRlb1NhbXBsZUJ1ZmZlcigpOwot
Ci0gICAgdm9pZCBwcm9jZXNzTmV3Q29tcHJlc3NlZEF1ZGlvU2FtcGxlQnVmZmVycygpOwotICAg
IHZvaWQgcHJvY2Vzc05ld0NvbXByZXNzZWRWaWRlb1NhbXBsZUJ1ZmZlcnMoKTsKLQotICAgIHZv
aWQgZmx1c2hDb21wcmVzc2VkU2FtcGxlQnVmZmVycyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwotICAgIHZvaWQgYXBwZW5kRW5kT2ZWaWRlb1NhbXBsZUR1cmF0aW9uSWZOZWVkZWQoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSNlbHNlCiAgICAgTWVkaWFSZWNvcmRlclByaXZh
dGVXcml0ZXIoUmV0YWluUHRyPEFWQXNzZXRXcml0ZXI+JiYsIFN0cmluZyYmIHBhdGgpOwogICAg
IHZvaWQgY2xlYXIoKTsKIAotICAgIGJvb2wgc2V0dXBXcml0ZXIoKTsKLSAgICBib29sIHNldFZp
ZGVvSW5wdXQoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKLSAgICBib29sIHNldEF1ZGlvSW5wdXQo
KTsKLSNlbmRpZgotCi0gICAgYm9vbCBtX2hhc1N0YXJ0ZWRXcml0aW5nIHsgZmFsc2UgfTsKLSAg
ICBib29sIG1faXNTdG9wcGVkIHsgZmFsc2UgfTsKLQogICAgIFJldGFpblB0cjxBVkFzc2V0V3Jp
dGVyPiBtX3dyaXRlcjsKLQotICAgIGJvb2wgbV9pc1N0b3BwaW5nIHsgZmFsc2UgfTsKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGE7Ci0gICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChS
ZWZQdHI8U2hhcmVkQnVmZmVyPiYmKT4gbV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcjsKLQot
I2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCi0gICAgYm9vbCBtX2hhc0F1ZGlvOwotICAgIGJv
b2wgbV9oYXNWaWRlbzsKLQotICAgIFJldGFpblB0cjxDTUZvcm1hdERlc2NyaXB0aW9uUmVmPiBt
X2F1ZGlvRm9ybWF0RGVzY3JpcHRpb247Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvU2FtcGxl
QnVmZmVyQ29tcHJlc3Nvcj4gbV9hdWRpb0NvbXByZXNzb3I7Ci0gICAgUmV0YWluUHRyPEFWQXNz
ZXRXcml0ZXJJbnB1dD4gbV9hdWRpb0Fzc2V0V3JpdGVySW5wdXQ7Ci0KLSAgICBSZXRhaW5QdHI8
Q01Gb3JtYXREZXNjcmlwdGlvblJlZj4gbV92aWRlb0Zvcm1hdERlc2NyaXB0aW9uOwotICAgIHN0
ZDo6dW5pcXVlX3B0cjxWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I+IG1fdmlkZW9Db21wcmVz
c29yOwotICAgIFJldGFpblB0cjxBVkFzc2V0V3JpdGVySW5wdXQ+IG1fdmlkZW9Bc3NldFdyaXRl
cklucHV0OwotICAgIENNVGltZSBtX2xhc3RWaWRlb1ByZXNlbnRhdGlvblRpbWU7Ci0gICAgQ01U
aW1lIG1fbGFzdFZpZGVvRGVjb2RpbmdUaW1lOwotICAgIGJvb2wgbV9oYXNFbmNvZGVkVmlkZW9T
YW1wbGVzIHsgZmFsc2UgfTsKLQotICAgIFJldGFpblB0cjxXZWJBVkFzc2V0V3JpdGVyRGVsZWdh
dGU+IG1fd3JpdGVyRGVsZWdhdGU7Ci0jZWxzZQogICAgIFJldGFpblB0cjxBVkFzc2V0V3JpdGVy
SW5wdXQ+IG1fdmlkZW9JbnB1dDsKICAgICBSZXRhaW5QdHI8QVZBc3NldFdyaXRlcklucHV0PiBt
X2F1ZGlvSW5wdXQ7CiAKQEAgLTEzOCwxMyArNzgsMTcgQEAgcHJpdmF0ZToKICAgICBCaW5hcnlT
ZW1hcGhvcmUgbV9maW5pc2hXcml0aW5nU2VtYXBob3JlOwogICAgIEJpbmFyeVNlbWFwaG9yZSBt
X2ZpbmlzaFdyaXRpbmdBdWRpb1NlbWFwaG9yZTsKICAgICBCaW5hcnlTZW1hcGhvcmUgbV9maW5p
c2hXcml0aW5nVmlkZW9TZW1hcGhvcmU7CisgICAgYm9vbCBtX2hhc1N0YXJ0ZWRXcml0aW5nIHsg
ZmFsc2UgfTsKKyAgICBib29sIG1faXNTdG9wcGVkIHsgZmFsc2UgfTsKICAgICBib29sIG1faXNG
aXJzdEF1ZGlvU2FtcGxlIHsgdHJ1ZSB9OwogICAgIGRpc3BhdGNoX3F1ZXVlX3QgbV9hdWRpb1B1
bGxRdWV1ZTsKICAgICBkaXNwYXRjaF9xdWV1ZV90IG1fdmlkZW9QdWxsUXVldWU7CiAgICAgRGVx
dWU8UmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPj4gbV92aWRlb0J1ZmZlclBvb2w7CiAgICAg
RGVxdWU8UmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPj4gbV9hdWRpb0J1ZmZlclBvb2w7CiAK
LSNlbmRpZgorICAgIGJvb2wgbV9pc1N0b3BwaW5nIHsgZmFsc2UgfTsKKyAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBtX2RhdGE7CisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8U2hh
cmVkQnVmZmVyPiYmKT4gbV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcjsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclBy
aXZhdGVXcml0ZXJDb2NvYS5tbQppbmRleCBmODQ1NTdjMDM1OWJiNzBhZDEyNDc4Njc4MDA5NDMx
OTYxZGM0ZDMwLi4yMzM1NGY0Nzg0ZGUwOTJmMDQ4N2MxODU0ZmM1YjI2YTVlMjIxMWFjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlh
UmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1t
CkBAIC0yNiwxMzIgKzI2LDExMSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk1l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaCIKIAotI2lmICFVU0UoQVBQTEVfSU5URVJO
QUxfU0RLKQotI2luY2x1ZGUgIk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2FGaWxlQmFz
ZWQubW0iCi0jZWxzZQotCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKEFWRk9VTkRB
VElPTikKIAotI2luY2x1ZGUgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oIgogI2luY2x1
ZGUgIkF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5j
bHVkZSAiTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuaCIKLSNpbmNsdWRlICJWaWRlb1NhbXBsZUJ1
ZmZlckNvbXByZXNzb3IuaCIKICNpbmNsdWRlICJXZWJBdWRpb0J1ZmZlckxpc3QuaCIKICNpbmNs
dWRlIDxBVkZvdW5kYXRpb24vQVZBc3NldFdyaXRlci5oPgogI2luY2x1ZGUgPEFWRm91bmRhdGlv
bi9BVkFzc2V0V3JpdGVySW5wdXQuaD4KLSNpbmNsdWRlIDxBVkZvdW5kYXRpb24vQVZBc3NldFdy
aXRlcl9Qcml2YXRlLmg+Ci0jaW5jbHVkZSA8cGFsL2F2Zm91bmRhdGlvbi9NZWRpYVRpbWVBVkZv
dW5kYXRpb24uaD4KICNpbmNsdWRlIDxwYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaD4KLSNpbmNs
dWRlIDx3dGYvQmxvY2tQdHIuaD4KICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4K
ICNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgotI2luY2x1ZGUgPHd0Zi9jZi9UeXBlQ2FzdHND
Ri5oPgogCiAjaW1wb3J0IDxwYWwvY29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmsuaD4KIAotQGlu
dGVyZmFjZSBXZWJBVkFzc2V0V3JpdGVyRGVsZWdhdGUgOiBOU09iamVjdCA8QVZBc3NldFdyaXRl
ckRlbGVnYXRlPiB7Ci0gICAgV2Vha1B0cjxXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdy
aXRlcj4gbV93cml0ZXI7Ci19Ci0KLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aFdyaXRlcjooV2Vi
Q29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIqKXdyaXRlcjsKLS0gKHZvaWQpY2xvc2U7
Ci0tICh2b2lkKWZpbmlzaDsKKyN1bmRlZiBBVkVuY29kZXJCaXRSYXRlS2V5CisjZGVmaW5lIEFW
RW5jb2RlckJpdFJhdGVLZXkgZ2V0QVZFbmNvZGVyQml0UmF0ZUtleVdpdGhGYWxsYmFjaygpCisj
dW5kZWYgQVZGb3JtYXRJREtleQorI2RlZmluZSBBVkZvcm1hdElES2V5IGdldEFWRm9ybWF0SURL
ZXlXaXRoRmFsbGJhY2soKQorI3VuZGVmIEFWTnVtYmVyT2ZDaGFubmVsc0tleQorI2RlZmluZSBB
Vk51bWJlck9mQ2hhbm5lbHNLZXkgZ2V0QVZOdW1iZXJPZkNoYW5uZWxzS2V5V2l0aEZhbGxiYWNr
KCkKKyN1bmRlZiBBVlNhbXBsZVJhdGVLZXkKKyNkZWZpbmUgQVZTYW1wbGVSYXRlS2V5IGdldEFW
U2FtcGxlUmF0ZUtleVdpdGhGYWxsYmFjaygpCiAKLUBlbmQKK25hbWVzcGFjZSBXZWJDb3JlIHsK
IAotQGltcGxlbWVudGF0aW9uIFdlYkFWQXNzZXRXcml0ZXJEZWxlZ2F0ZSB7Ci19OwordXNpbmcg
bmFtZXNwYWNlIFBBTDsKIAotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoV3JpdGVyOihXZWJDb3Jl
OjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlciopd3JpdGVyCitzdGF0aWMgTlNTdHJpbmcgKmdl
dEFWRm9ybWF0SURLZXlXaXRoRmFsbGJhY2soKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7Ci0gICAgc2VsZiA9IFtzdXBlciBpbml0XTsKLSAgICBpZiAoc2VsZikKLSAgICAgICAgc2Vs
Zi0+bV93cml0ZXIgPSBtYWtlV2Vha1B0cih3cml0ZXIpOworICAgIGlmIChQQUw6OmNhbkxvYWRf
QVZGb3VuZGF0aW9uX0FWRm9ybWF0SURLZXkoKSkKKyAgICAgICAgcmV0dXJuIFBBTDo6Z2V0X0FW
Rm91bmRhdGlvbl9BVkZvcm1hdElES2V5KCk7CiAKLSAgICByZXR1cm4gc2VsZjsKKyAgICBSRUxF
QVNFX0xPR19FUlJPUihNZWRpYSwgIkZhaWxlZCB0byBsb2FkIEFWRm9ybWF0SURLZXkiKTsKKyAg
ICByZXR1cm4gQCJBVkZvcm1hdElES2V5IjsKIH0KIAotLSAodm9pZClkZWFsbG9jCitzdGF0aWMg
TlNTdHJpbmcgKmdldEFWTnVtYmVyT2ZDaGFubmVsc0tleVdpdGhGYWxsYmFjaygpCiB7Ci0gICAg
W3N1cGVyIGRlYWxsb2NdOworICAgIGlmIChQQUw6OmNhbkxvYWRfQVZGb3VuZGF0aW9uX0FWTnVt
YmVyT2ZDaGFubmVsc0tleSgpKQorICAgICAgICByZXR1cm4gUEFMOjpnZXRfQVZGb3VuZGF0aW9u
X0FWTnVtYmVyT2ZDaGFubmVsc0tleSgpOworCisgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWEs
ICJGYWlsZWQgdG8gbG9hZCBBVk51bWJlck9mQ2hhbm5lbHNLZXkiKTsKKyAgICByZXR1cm4gQCJB
Vk51bWJlck9mQ2hhbm5lbHNLZXkiOwogfQogCi0tICh2b2lkKWFzc2V0V3JpdGVyOihBVkFzc2V0
V3JpdGVyICopYXNzZXRXcml0ZXIgZGlkUHJvZHVjZUZyYWdtZW50ZWRIZWFkZXJEYXRhOihOU0Rh
dGEgKilmcmFnbWVudGVkSGVhZGVyRGF0YQorc3RhdGljIE5TU3RyaW5nICpnZXRBVlNhbXBsZVJh
dGVLZXlXaXRoRmFsbGJhY2soKQogewotICAgIFVOVVNFRF9QQVJBTShhc3NldFdyaXRlcik7Ci0g
ICAgaWYgKCFpc01haW5UaHJlYWQoKSkgewotICAgICAgICBpZiAoYXV0byBzaXplID0gW2ZyYWdt
ZW50ZWRIZWFkZXJEYXRhIGxlbmd0aF0pIHsKLSAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQo
W3Byb3RlY3RlZFNlbGYgPSBSZXRhaW5QdHI8V2ViQVZBc3NldFdyaXRlckRlbGVnYXRlPihzZWxm
KSwgYnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29u
c3QgY2hhcio+KFtmcmFnbWVudGVkSGVhZGVyRGF0YSBieXRlc10pLCBzaXplKV0oKSBtdXRhYmxl
IHsKLSAgICAgICAgICAgICAgICBpZiAocHJvdGVjdGVkU2VsZi0+bV93cml0ZXIpCi0gICAgICAg
ICAgICAgICAgICAgIHByb3RlY3RlZFNlbGYtPm1fd3JpdGVyLT5hcHBlbmREYXRhKFdURk1vdmUo
YnVmZmVyKSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm47Ci0g
ICAgfQorICAgIGlmIChQQUw6OmNhbkxvYWRfQVZGb3VuZGF0aW9uX0FWU2FtcGxlUmF0ZUtleSgp
KQorICAgICAgICByZXR1cm4gUEFMOjpnZXRfQVZGb3VuZGF0aW9uX0FWU2FtcGxlUmF0ZUtleSgp
OwogCi0gICAgaWYgKG1fd3JpdGVyKQotICAgICAgICBtX3dyaXRlci0+YXBwZW5kRGF0YShzdGF0
aWNfY2FzdDxjb25zdCBjaGFyKj4oW2ZyYWdtZW50ZWRIZWFkZXJEYXRhIGJ5dGVzXSksIFtmcmFn
bWVudGVkSGVhZGVyRGF0YSBsZW5ndGhdKTsKKyAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYSwg
IkZhaWxlZCB0byBsb2FkIEFWU2FtcGxlUmF0ZUtleSIpOworICAgIHJldHVybiBAIkFWU2FtcGxl
UmF0ZUtleSI7CiB9CiAKLS0gKHZvaWQpYXNzZXRXcml0ZXI6KEFWQXNzZXRXcml0ZXIgKilhc3Nl
dFdyaXRlciBkaWRQcm9kdWNlRnJhZ21lbnRlZE1lZGlhRGF0YTooTlNEYXRhICopZnJhZ21lbnRl
ZE1lZGlhRGF0YSBmcmFnbWVudGVkTWVkaWFEYXRhUmVwb3J0OihBVkZyYWdtZW50ZWRNZWRpYURh
dGFSZXBvcnQgKilmcmFnbWVudGVkTWVkaWFEYXRhUmVwb3J0CitzdGF0aWMgTlNTdHJpbmcgKmdl
dEFWRW5jb2RlckJpdFJhdGVLZXlXaXRoRmFsbGJhY2soKQogewotICAgIFVOVVNFRF9QQVJBTShh
c3NldFdyaXRlcik7Ci0gICAgVU5VU0VEX1BBUkFNKGZyYWdtZW50ZWRNZWRpYURhdGFSZXBvcnQp
OwotICAgIGlmICghaXNNYWluVGhyZWFkKCkpIHsKLSAgICAgICAgaWYgKGF1dG8gc2l6ZSA9IFtm
cmFnbWVudGVkTWVkaWFEYXRhIGxlbmd0aF0pIHsKLSAgICAgICAgICAgIGNhbGxPbk1haW5UaHJl
YWQoW3Byb3RlY3RlZFNlbGYgPSBSZXRhaW5QdHI8V2ViQVZBc3NldFdyaXRlckRlbGVnYXRlPihz
ZWxmKSwgYnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8
Y29uc3QgY2hhcio+KFtmcmFnbWVudGVkTWVkaWFEYXRhIGJ5dGVzXSksIHNpemUpXSgpIG11dGFi
bGUgewotICAgICAgICAgICAgICAgIGlmIChwcm90ZWN0ZWRTZWxmLT5tX3dyaXRlcikKLSAgICAg
ICAgICAgICAgICAgICAgcHJvdGVjdGVkU2VsZi0+bV93cml0ZXItPmFwcGVuZERhdGEoV1RGTW92
ZShidWZmZXIpKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybjsK
LSAgICB9CisgICAgaWYgKFBBTDo6Y2FuTG9hZF9BVkZvdW5kYXRpb25fQVZFbmNvZGVyQml0UmF0
ZUtleSgpKQorICAgICAgICByZXR1cm4gUEFMOjpnZXRfQVZGb3VuZGF0aW9uX0FWRW5jb2RlckJp
dFJhdGVLZXkoKTsKIAotICAgIGlmIChtX3dyaXRlcikKLSAgICAgICAgbV93cml0ZXItPmFwcGVu
ZERhdGEoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KFtmcmFnbWVudGVkTWVkaWFEYXRhIGJ5dGVz
XSksIFtmcmFnbWVudGVkTWVkaWFEYXRhIGxlbmd0aF0pOworICAgIFJFTEVBU0VfTE9HX0VSUk9S
KE1lZGlhLCAiRmFpbGVkIHRvIGxvYWQgQVZFbmNvZGVyQml0UmF0ZUtleSIpOworICAgIHJldHVy
biBAIkFWRW5jb2RlckJpdFJhdGVLZXkiOwogfQogCi0tICh2b2lkKWNsb3NlCitSZWZQdHI8TWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXI+IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpjcmVh
dGUoY29uc3QgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUqIGF1ZGlvVHJhY2ssIGNvbnN0IE1lZGlh
U3RyZWFtVHJhY2tQcml2YXRlKiB2aWRlb1RyYWNrKQogewotICAgIG1fd3JpdGVyID0gbnVsbHB0
cjsKKyAgICBpbnQgd2lkdGggPSAwLCBoZWlnaHQgPSAwOworICAgIGlmICh2aWRlb1RyYWNrKSB7
CisgICAgICAgIGF1dG8mIHNldHRpbmdzID0gdmlkZW9UcmFjay0+c2V0dGluZ3MoKTsKKyAgICAg
ICAgd2lkdGggPSBzZXR0aW5ncy53aWR0aCgpOworICAgICAgICBoZWlnaHQgPSBzZXR0aW5ncy5o
ZWlnaHQoKTsKKyAgICB9CisgICAgcmV0dXJuIGNyZWF0ZSghIWF1ZGlvVHJhY2ssIHdpZHRoLCBo
ZWlnaHQpOwogfQogCi0tICh2b2lkKWZpbmlzaAorUmVmUHRyPE1lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyPiBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6Y3JlYXRlKGJvb2wgaGFzQXVkaW8s
IGludCB3aWR0aCwgaW50IGhlaWdodCkKIHsKLSAgICBtX3dyaXRlciA9IG51bGxwdHI7Ci19Ci0K
LUBlbmQKKyAgICBOU1N0cmluZyAqZGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6Y3JlYXRlVGVtcG9y
YXJ5RGlyZWN0b3J5KEAidmlkZW9zIik7CisgICAgTlNTdHJpbmcgKmZpbGVuYW1lID0gW05TU3Ry
aW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIvJWxsZC5tcDQiLCBDTUNsb2NrR2V0VGltZShDTUNsb2Nr
R2V0SG9zdFRpbWVDbG9jaygpKS52YWx1ZV07CisgICAgTlNTdHJpbmcgKnBhdGggPSBbZGlyZWN0
b3J5IHN0cmluZ0J5QXBwZW5kaW5nU3RyaW5nOmZpbGVuYW1lXTsKIAotbmFtZXNwYWNlIFdlYkNv
cmUgeworICAgIE5TVVJMICpvdXRwdXRVUkwgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOnBhdGhd
OworICAgIFN0cmluZyBmaWxlUGF0aCA9IFtwYXRoIFVURjhTdHJpbmddOworICAgIE5TRXJyb3Ig
KmVycm9yID0gbmlsOworICAgIGF1dG8gYXZBc3NldFdyaXRlciA9IGFkb3B0TlMoW1BBTDo6YWxs
b2NBVkFzc2V0V3JpdGVySW5zdGFuY2UoKSBpbml0V2l0aFVSTDpvdXRwdXRVUkwgZmlsZVR5cGU6
QVZGaWxlVHlwZU1QRUc0IGVycm9yOiZlcnJvcl0pOworICAgIGlmIChlcnJvcikgeworICAgICAg
ICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgImNyZWF0ZSBBVkFzc2V0V3JpdGVyIGlu
c3RhbmNlIGZhaWxlZCB3aXRoIGVycm9yIGNvZGUgJWxkIiwgKGxvbmcpZXJyb3IuY29kZSk7Cisg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KIAotdXNpbmcgbmFtZXNwYWNlIFBBTDsKKyAg
ICBhdXRvIHdyaXRlciA9IGFkb3B0UmVmKCpuZXcgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIo
V1RGTW92ZShhdkFzc2V0V3JpdGVyKSwgV1RGTW92ZShmaWxlUGF0aCkpKTsKIAotUmVmUHRyPE1l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyPiBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6Y3Jl
YXRlKGJvb2wgaGFzQXVkaW8sIGludCB3aWR0aCwgaW50IGhlaWdodCkKLXsKLSAgICBhdXRvIHdy
aXRlciA9IGFkb3B0UmVmKCpuZXcgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIoaGFzQXVkaW8s
IHdpZHRoICYmIGhlaWdodCkpOwotICAgIGlmICghd3JpdGVyLT5pbml0aWFsaXplKCkpCisgICAg
aWYgKGhhc0F1ZGlvICYmICF3cml0ZXItPnNldEF1ZGlvSW5wdXQoKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgcmV0dXJuIHdyaXRlcjsKLX0KIAotdm9pZCBNZWRpYVJlY29yZGVyUHJp
dmF0ZVdyaXRlcjo6Y29tcHJlc3NlZFZpZGVvT3V0cHV0QnVmZmVyQ2FsbGJhY2sodm9pZCAqbWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXIsIENNQnVmZmVyUXVldWVUcmlnZ2VyVG9rZW4pCi17Ci0g
ICAgYXV0byAqd3JpdGVyID0gc3RhdGljX2Nhc3Q8TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIq
PihtZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcik7Ci0gICAgd3JpdGVyLT5wcm9jZXNzTmV3Q29t
cHJlc3NlZFZpZGVvU2FtcGxlQnVmZmVycygpOwotfQorICAgIGlmICh3aWR0aCAmJiBoZWlnaHQp
IHsKKyAgICAgICAgaWYgKCF3cml0ZXItPnNldFZpZGVvSW5wdXQod2lkdGgsIGhlaWdodCkpCisg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CiAKLXZvaWQgTWVkaWFSZWNvcmRlclBy
aXZhdGVXcml0ZXI6OmNvbXByZXNzZWRBdWRpb091dHB1dEJ1ZmZlckNhbGxiYWNrKHZvaWQgKm1l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyLCBDTUJ1ZmZlclF1ZXVlVHJpZ2dlclRva2VuKQotewot
ICAgIGF1dG8gKndyaXRlciA9IHN0YXRpY19jYXN0PE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
Kj4obWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIpOwotICAgIHdyaXRlci0+cHJvY2Vzc05ld0Nv
bXByZXNzZWRBdWRpb1NhbXBsZUJ1ZmZlcnMoKTsKKyAgICByZXR1cm4gV1RGTW92ZSh3cml0ZXIp
OwogfQogCi1NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6TWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXIoYm9vbCBoYXNBdWRpbywgYm9vbCBoYXNWaWRlbykKLSAgICA6IG1faGFzQXVkaW8oaGFz
QXVkaW8pCi0gICAgLCBtX2hhc1ZpZGVvKGhhc1ZpZGVvKQorTWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXI6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKFJldGFpblB0cjxBVkFzc2V0V3JpdGVy
PiYmIGF2QXNzZXRXcml0ZXIsIFN0cmluZyYmIGZpbGVQYXRoKQorICAgIDogbV93cml0ZXIoV1RG
TW92ZShhdkFzc2V0V3JpdGVyKSkKKyAgICAsIG1fcGF0aChXVEZNb3ZlKGZpbGVQYXRoKSkKIHsK
IH0KIApAQCAtMTYwLDIzOCArMTM5LDE0MCBAQCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6
fk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKCkKICAgICBjbGVhcigpOwogfQogCi1ib29sIE1l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjppbml0aWFsaXplKCkKK3ZvaWQgTWVkaWFSZWNvcmRl
clByaXZhdGVXcml0ZXI6OmNsZWFyKCkKIHsKLSAgICBOU0Vycm9yICplcnJvciA9IG5pbDsKLSAg
ICBtX3dyaXRlciA9IGFkb3B0TlMoW1BBTDo6YWxsb2NBVkFzc2V0V3JpdGVySW5zdGFuY2UoKSBp
bml0V2l0aEZpbGVUeXBlOkFWRmlsZVR5cGVNUEVHNCBlcnJvcjomZXJyb3JdKTsKLSAgICBpZiAo
ZXJyb3IpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJjcmVhdGUg
QVZBc3NldFdyaXRlciBpbnN0YW5jZSBmYWlsZWQgd2l0aCBlcnJvciBjb2RlICVsZCIsIChsb25n
KWVycm9yLmNvZGUpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgbV93cml0
ZXJEZWxlZ2F0ZSA9IGFkb3B0TlMoW1tXZWJBVkFzc2V0V3JpdGVyRGVsZWdhdGUgYWxsb2NdIGlu
aXRXaXRoV3JpdGVyOiB0aGlzXSk7Ci0gICAgW21fd3JpdGVyLmdldCgpIHNldERlbGVnYXRlOm1f
d3JpdGVyRGVsZWdhdGUuZ2V0KCldOwotCi0gICAgaWYgKG1faGFzQXVkaW8pIHsKLSAgICAgICAg
bV9hdWRpb0NvbXByZXNzb3IgPSBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmNyZWF0ZShj
b21wcmVzc2VkQXVkaW9PdXRwdXRCdWZmZXJDYWxsYmFjaywgdGhpcyk7Ci0gICAgICAgIGlmICgh
bV9hdWRpb0NvbXByZXNzb3IpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1f
dmlkZW9JbnB1dCkgeworICAgICAgICBtX3ZpZGVvSW5wdXQuY2xlYXIoKTsKKyAgICAgICAgZGlz
cGF0Y2hfcmVsZWFzZShtX3ZpZGVvUHVsbFF1ZXVlKTsKICAgICB9Ci0gICAgaWYgKG1faGFzVmlk
ZW8pIHsKLSAgICAgICAgbV92aWRlb0NvbXByZXNzb3IgPSBWaWRlb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3I6OmNyZWF0ZShrQ01WaWRlb0NvZGVjVHlwZV9IMjY0LCBjb21wcmVzc2VkVmlkZW9PdXRw
dXRCdWZmZXJDYWxsYmFjaywgdGhpcyk7Ci0gICAgICAgIGlmICghbV92aWRlb0NvbXByZXNzb3Ip
Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1fYXVkaW9JbnB1dCkgeworICAg
ICAgICBtX2F1ZGlvSW5wdXQuY2xlYXIoKTsKKyAgICAgICAgZGlzcGF0Y2hfcmVsZWFzZShtX2F1
ZGlvUHVsbFF1ZXVlKTsKICAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgTWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXI6OnByb2Nlc3NOZXdDb21wcmVzc2VkVmlkZW9TYW1wbGVCdWZm
ZXJzKCkKLXsKLSAgICBBU1NFUlQobV9oYXNWaWRlbyk7Ci0gICAgaWYgKCFtX3ZpZGVvRm9ybWF0
RGVzY3JpcHRpb24pIHsKLSAgICAgICAgbV92aWRlb0Zvcm1hdERlc2NyaXB0aW9uID0gQ01TYW1w
bGVCdWZmZXJHZXRGb3JtYXREZXNjcmlwdGlvbihtX3ZpZGVvQ29tcHJlc3Nvci0+Z2V0T3V0cHV0
U2FtcGxlQnVmZmVyKCkpOwotICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt3ZWFrVGhpcyA9IG1h
a2VXZWFrUHRyKHRoaXMpLCB0aGlzXSB7Ci0gICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQotICAg
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKG1faGFz
QXVkaW8gJiYgIW1fYXVkaW9Gb3JtYXREZXNjcmlwdGlvbikKLSAgICAgICAgICAgICAgICByZXR1
cm47Ci0KLSAgICAgICAgICAgIHN0YXJ0QXNzZXRXcml0ZXIoKTsKLSAgICAgICAgfSk7Ci0gICAg
fQotICAgIGlmICghbV9oYXNTdGFydGVkV3JpdGluZykKLSAgICAgICAgcmV0dXJuOwotICAgIGFw
cGVuZENvbXByZXNzZWRTYW1wbGVCdWZmZXJzKCk7Ci19Ci0KLXZvaWQgTWVkaWFSZWNvcmRlclBy
aXZhdGVXcml0ZXI6OnByb2Nlc3NOZXdDb21wcmVzc2VkQXVkaW9TYW1wbGVCdWZmZXJzKCkKLXsK
LSAgICBBU1NFUlQobV9oYXNBdWRpbyk7Ci0gICAgaWYgKCFtX2F1ZGlvRm9ybWF0RGVzY3JpcHRp
b24pIHsKLSAgICAgICAgbV9hdWRpb0Zvcm1hdERlc2NyaXB0aW9uID0gQ01TYW1wbGVCdWZmZXJH
ZXRGb3JtYXREZXNjcmlwdGlvbihtX2F1ZGlvQ29tcHJlc3Nvci0+Z2V0T3V0cHV0U2FtcGxlQnVm
ZmVyKCkpOwotICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRy
KHRoaXMpLCB0aGlzXSB7Ci0gICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQotICAgICAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKG1faGFzVmlkZW8gJiYg
IW1fdmlkZW9Gb3JtYXREZXNjcmlwdGlvbikKLSAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
aWYgKG1fd3JpdGVyKQorICAgICAgICBtX3dyaXRlci5jbGVhcigpOwogCi0gICAgICAgICAgICBz
dGFydEFzc2V0V3JpdGVyKCk7Ci0gICAgICAgIH0pOwotICAgIH0KLSAgICBpZiAoIW1faGFzU3Rh
cnRlZFdyaXRpbmcpCi0gICAgICAgIHJldHVybjsKLSAgICBhcHBlbmRDb21wcmVzc2VkU2FtcGxl
QnVmZmVycygpOworICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgaWYgKGF1dG8gY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKG1fZmV0Y2hEYXRhQ29tcGxldGlvbkhhbmRsZXIpKQorICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsKIH0KIAotdm9pZCBNZWRpYVJlY29yZGVyUHJp
dmF0ZVdyaXRlcjo6c3RhcnRBc3NldFdyaXRlcigpCitib29sIE1lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyOjpzZXRWaWRlb0lucHV0KGludCB3aWR0aCwgaW50IGhlaWdodCkKIHsKLSAgICBpZiAo
bV9oYXNWaWRlbykgewotICAgICAgICBtX3ZpZGVvQXNzZXRXcml0ZXJJbnB1dCA9IGFkb3B0TlMo
W1BBTDo6YWxsb2NBVkFzc2V0V3JpdGVySW5wdXRJbnN0YW5jZSgpIGluaXRXaXRoTWVkaWFUeXBl
OkFWTWVkaWFUeXBlVmlkZW8gb3V0cHV0U2V0dGluZ3M6bmlsIHNvdXJjZUZvcm1hdEhpbnQ6bV92
aWRlb0Zvcm1hdERlc2NyaXB0aW9uLmdldCgpXSk7Ci0gICAgICAgIFttX3ZpZGVvQXNzZXRXcml0
ZXJJbnB1dCBzZXRFeHBlY3RzTWVkaWFEYXRhSW5SZWFsVGltZTp0cnVlXTsKLSAgICAgICAgaWYg
KCFbbV93cml0ZXIuZ2V0KCkgY2FuQWRkSW5wdXQ6bV92aWRlb0Fzc2V0V3JpdGVySW5wdXQuZ2V0
KCldKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIk1lZGlh
UmVjb3JkZXJQcml2YXRlV3JpdGVyOjpzdGFydEFzc2V0V3JpdGVyIGZhaWxlZCBjYW5BZGRJbnB1
dCBmb3IgdmlkZW8iKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBb
bV93cml0ZXIuZ2V0KCkgYWRkSW5wdXQ6bV92aWRlb0Fzc2V0V3JpdGVySW5wdXQuZ2V0KCldOwot
ICAgIH0KKyAgICBBU1NFUlQoIW1fdmlkZW9JbnB1dCk7CiAgICAgCi0gICAgaWYgKG1faGFzQXVk
aW8pIHsKLSAgICAgICAgbV9hdWRpb0Fzc2V0V3JpdGVySW5wdXQgPSBhZG9wdE5TKFtQQUw6OmFs
bG9jQVZBc3NldFdyaXRlcklucHV0SW5zdGFuY2UoKSBpbml0V2l0aE1lZGlhVHlwZTpBVk1lZGlh
VHlwZUF1ZGlvIG91dHB1dFNldHRpbmdzOm5pbCBzb3VyY2VGb3JtYXRIaW50Om1fYXVkaW9Gb3Jt
YXREZXNjcmlwdGlvbi5nZXQoKV0pOwotICAgICAgICBbbV9hdWRpb0Fzc2V0V3JpdGVySW5wdXQg
c2V0RXhwZWN0c01lZGlhRGF0YUluUmVhbFRpbWU6dHJ1ZV07Ci0gICAgICAgIGlmICghW21fd3Jp
dGVyLmdldCgpIGNhbkFkZElucHV0Om1fYXVkaW9Bc3NldFdyaXRlcklucHV0LmdldCgpXSkgewot
ICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJNZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlcjo6c3RhcnRBc3NldFdyaXRlciBmYWlsZWQgY2FuQWRkSW5wdXQgZm9yIGF1
ZGlvIik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgW21fd3JpdGVy
LmdldCgpIGFkZElucHV0Om1fYXVkaW9Bc3NldFdyaXRlcklucHV0LmdldCgpXTsKLSAgICB9Cisg
ICAgTlNEaWN0aW9uYXJ5ICpjb21wcmVzc2lvblByb3BlcnRpZXMgPSBAeworICAgICAgICBBVlZp
ZGVvQXZlcmFnZUJpdFJhdGVLZXkgOiBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDp3aWR0aCAqIGhl
aWdodCAqIDEyXSwKKyAgICAgICAgQVZWaWRlb0V4cGVjdGVkU291cmNlRnJhbWVSYXRlS2V5IDog
QCgzMCksCisgICAgICAgIEFWVmlkZW9NYXhLZXlGcmFtZUludGVydmFsS2V5IDogQCgxMjApLAor
ICAgICAgICBBVlZpZGVvUHJvZmlsZUxldmVsS2V5IDogQVZWaWRlb1Byb2ZpbGVMZXZlbEgyNjRN
YWluQXV0b0xldmVsCisgICAgfTsKKworICAgIE5TRGljdGlvbmFyeSAqdmlkZW9TZXR0aW5ncyA9
IEB7CisgICAgICAgIEFWVmlkZW9Db2RlY0tleTogQVZWaWRlb0NvZGVjSDI2NCwKKyAgICAgICAg
QVZWaWRlb1dpZHRoS2V5OiBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDp3aWR0aF0sCisgICAgICAg
IEFWVmlkZW9IZWlnaHRLZXk6IFtOU051bWJlciBudW1iZXJXaXRoSW50OmhlaWdodF0sCisgICAg
ICAgIEFWVmlkZW9Db21wcmVzc2lvblByb3BlcnRpZXNLZXk6IGNvbXByZXNzaW9uUHJvcGVydGll
cworICAgIH07CiAgICAgCi0gICAgaWYgKCFbbV93cml0ZXIuZ2V0KCkgc3RhcnRXcml0aW5nXSkg
ewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIk1lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyOjpzdGFydEFzc2V0V3JpdGVyIGZhaWxlZCBzdGFydFdyaXRpbmciKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIFttX3dyaXRlci5nZXQoKSBzdGFydFNlc3Npb25B
dFNvdXJjZVRpbWU6a0NNVGltZVplcm9dOwotCi0gICAgYXBwZW5kQ29tcHJlc3NlZFNhbXBsZUJ1
ZmZlcnMoKTsKLQotICAgIG1faGFzU3RhcnRlZFdyaXRpbmcgPSB0cnVlOwotfQotCi1ib29sIE1l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmRDb21wcmVzc2VkQXVkaW9TYW1wbGVCdWZm
ZXIoKQotewotICAgIGlmICghbV9hdWRpb0NvbXByZXNzb3IpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgIGlmICghW21fYXVkaW9Bc3NldFdyaXRlcklucHV0IGlzUmVhZHlGb3JNb3JlTWVk
aWFEYXRhXSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgYXV0byBidWZmZXIgPSBtX2F1
ZGlvQ29tcHJlc3Nvci0+dGFrZU91dHB1dFNhbXBsZUJ1ZmZlcigpOwotICAgIGlmICghYnVmZmVy
KQorICAgIG1fdmlkZW9JbnB1dCA9IGFkb3B0TlMoW1BBTDo6YWxsb2NBVkFzc2V0V3JpdGVySW5w
dXRJbnN0YW5jZSgpIGluaXRXaXRoTWVkaWFUeXBlOkFWTWVkaWFUeXBlVmlkZW8gb3V0cHV0U2V0
dGluZ3M6dmlkZW9TZXR0aW5ncyBzb3VyY2VGb3JtYXRIaW50Om5pbF0pOworICAgIFttX3ZpZGVv
SW5wdXQgc2V0RXhwZWN0c01lZGlhRGF0YUluUmVhbFRpbWU6dHJ1ZV07CisgICAgCisgICAgaWYg
KCFbbV93cml0ZXIgY2FuQWRkSW5wdXQ6bV92aWRlb0lucHV0LmdldCgpXSkgeworICAgICAgICBt
X3ZpZGVvSW5wdXQgPSBudWxscHRyOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0
cmVhbSwgInRoZSB2aWRlbyBpbnB1dCBpcyBub3QgYWxsb3dlZCB0byBhZGQgdG8gdGhlIEFWQXNz
ZXRXcml0ZXIiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgW21fYXVkaW9Bc3NldFdy
aXRlcklucHV0LmdldCgpIGFwcGVuZFNhbXBsZUJ1ZmZlcjpidWZmZXIuZ2V0KCldOworICAgIH0K
KyAgICBbbV93cml0ZXIgYWRkSW5wdXQ6bV92aWRlb0lucHV0LmdldCgpXTsKKyAgICBtX3ZpZGVv
UHVsbFF1ZXVlID0gZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJXZWJDb3JlVmlkZW9SZWNvcmRpbmdQ
dWxsQnVmZmVyUXVldWUiLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpOwogICAgIHJldHVybiB0cnVl
OwogfQogCi1ib29sIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmRDb21wcmVzc2Vk
VmlkZW9TYW1wbGVCdWZmZXIoKQorYm9vbCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6c2V0
QXVkaW9JbnB1dCgpCiB7Ci0gICAgaWYgKCFtX3ZpZGVvQ29tcHJlc3NvcikKLSAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIEFTU0VSVCghbV9hdWRpb0lucHV0KTsKIAotICAgIGlmICghW21fdmlk
ZW9Bc3NldFdyaXRlcklucHV0IGlzUmVhZHlGb3JNb3JlTWVkaWFEYXRhXSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIE5TRGljdGlvbmFyeSAqYXVkaW9TZXR0aW5ncyA9IEB7CisgICAgICAg
IEFWRW5jb2RlckJpdFJhdGVLZXkgOiBAKDI4MDAwKSwKKyAgICAgICAgQVZGb3JtYXRJREtleSA6
IEAoa0F1ZGlvRm9ybWF0TVBFRzRBQUMpLAorICAgICAgICBBVk51bWJlck9mQ2hhbm5lbHNLZXkg
OiBAKDEpLAorICAgICAgICBBVlNhbXBsZVJhdGVLZXkgOiBAKDIyMDUwKQorICAgIH07CiAKLSAg
ICBhdXRvIGJ1ZmZlciA9IG1fdmlkZW9Db21wcmVzc29yLT50YWtlT3V0cHV0U2FtcGxlQnVmZmVy
KCk7Ci0gICAgaWYgKCFidWZmZXIpCisgICAgbV9hdWRpb0lucHV0ID0gYWRvcHROUyhbUEFMOjph
bGxvY0FWQXNzZXRXcml0ZXJJbnB1dEluc3RhbmNlKCkgaW5pdFdpdGhNZWRpYVR5cGU6QVZNZWRp
YVR5cGVBdWRpbyBvdXRwdXRTZXR0aW5nczphdWRpb1NldHRpbmdzIHNvdXJjZUZvcm1hdEhpbnQ6
bmlsXSk7CisgICAgW21fYXVkaW9JbnB1dCBzZXRFeHBlY3RzTWVkaWFEYXRhSW5SZWFsVGltZTp0
cnVlXTsKKyAgICAKKyAgICBpZiAoIVttX3dyaXRlciBjYW5BZGRJbnB1dDptX2F1ZGlvSW5wdXQu
Z2V0KCldKSB7CisgICAgICAgIG1fYXVkaW9JbnB1dCA9IG51bGxwdHI7CisgICAgICAgIFJFTEVB
U0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAidGhlIGF1ZGlvIGlucHV0IGlzIG5vdCBhbGxvd2Vk
IHRvIGFkZCB0byB0aGUgQVZBc3NldFdyaXRlciIpOwogICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICBtX2xhc3RWaWRlb1ByZXNlbnRhdGlvblRpbWUgPSBDTVNhbXBsZUJ1ZmZlckdldFByZXNl
bnRhdGlvblRpbWVTdGFtcChidWZmZXIuZ2V0KCkpOwotICAgIG1fbGFzdFZpZGVvRGVjb2RpbmdU
aW1lID0gQ01TYW1wbGVCdWZmZXJHZXREZWNvZGVUaW1lU3RhbXAoYnVmZmVyLmdldCgpKTsKLSAg
ICBtX2hhc0VuY29kZWRWaWRlb1NhbXBsZXMgPSB0cnVlOwotCi0gICAgW21fdmlkZW9Bc3NldFdy
aXRlcklucHV0LmdldCgpIGFwcGVuZFNhbXBsZUJ1ZmZlcjpidWZmZXIuZ2V0KCldOwotICAgIHJl
dHVybiB0cnVlOwotfQotCi12b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmRD
b21wcmVzc2VkU2FtcGxlQnVmZmVycygpCi17Ci0gICAgd2hpbGUgKGFwcGVuZENvbXByZXNzZWRW
aWRlb1NhbXBsZUJ1ZmZlcigpIHx8IGFwcGVuZENvbXByZXNzZWRBdWRpb1NhbXBsZUJ1ZmZlcigp
KSB7IH07Ci19Ci0KLXN0YXRpYyBpbmxpbmUgdm9pZCBhcHBlbmRFbmRzUHJldmlvdXNTYW1wbGVE
dXJhdGlvbk1hcmtlcihBVkFzc2V0V3JpdGVySW5wdXQgKmFzc2V0V3JpdGVySW5wdXQsIENNVGlt
ZSBwcmVzZW50YXRpb25UaW1lU3RhbXAsIENNVGltZSBkZWNvZGluZ1RpbWVTdGFtcCkKLXsKLSAg
ICBDTVNhbXBsZVRpbWluZ0luZm8gdGltaW5nSW5mbyA9IHsga0NNVGltZUludmFsaWQsIHByZXNl
bnRhdGlvblRpbWVTdGFtcCwgZGVjb2RpbmdUaW1lU3RhbXB9OwotCi0gICAgQ01TYW1wbGVCdWZm
ZXJSZWYgYnVmZmVyID0gTlVMTDsKLSAgICBhdXRvIGVycm9yID0gQ01TYW1wbGVCdWZmZXJDcmVh
dGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgTlVMTCwgdHJ1ZSwgTlVMTCwgTlVMTCwgTlVMTCwgMCwg
MSwgJnRpbWluZ0luZm8sIDAsIE5VTEwsICZidWZmZXIpOwotICAgIGlmIChlcnJvcikgewotICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIk1lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyIGFwcGVuZEVuZHNQcmV2aW91c1NhbXBsZUR1cmF0aW9uTWFya2VyIGZhaWxlZCBDTVNh
bXBsZUJ1ZmZlckNyZWF0ZSB3aXRoICVkIiwgZXJyb3IpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotICAgIGF1dG8gc2FtcGxlQnVmZmVyID0gYWRvcHRDRihidWZmZXIpOwotCi0gICAgQ01TZXRB
dHRhY2htZW50KHNhbXBsZUJ1ZmZlci5nZXQoKSwga0NNU2FtcGxlQnVmZmVyQXR0YWNobWVudEtl
eV9FbmRzUHJldmlvdXNTYW1wbGVEdXJhdGlvbiwga0NGQm9vbGVhblRydWUsIGtDTUF0dGFjaG1l
bnRNb2RlX1Nob3VsZFByb3BhZ2F0ZSk7Ci0gICAgaWYgKCFbYXNzZXRXcml0ZXJJbnB1dCBhcHBl
bmRTYW1wbGVCdWZmZXI6c2FtcGxlQnVmZmVyLmdldCgpXSkKLSAgICAgICAgUkVMRUFTRV9MT0df
RVJST1IoTWVkaWFTdHJlYW0sICJNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlciBhcHBlbmRTYW1w
bGVCdWZmZXIgdG8gd3JpdGVyIGlucHV0IGZhaWxlZCIpOwotfQotCi12b2lkIE1lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyOjphcHBlbmRFbmRPZlZpZGVvU2FtcGxlRHVyYXRpb25JZk5lZWRlZChD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgaWYg
KCFtX2hhc0VuY29kZWRWaWRlb1NhbXBsZXMpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
KTsKLSAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAoW21fdmlkZW9Bc3NldFdyaXRlcklu
cHV0IGlzUmVhZHlGb3JNb3JlTWVkaWFEYXRhXSkgewotICAgICAgICBhcHBlbmRFbmRzUHJldmlv
dXNTYW1wbGVEdXJhdGlvbk1hcmtlcihtX3ZpZGVvQXNzZXRXcml0ZXJJbnB1dC5nZXQoKSwgbV9s
YXN0VmlkZW9QcmVzZW50YXRpb25UaW1lLCBtX2xhc3RWaWRlb0RlY29kaW5nVGltZSk7Ci0gICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBj
YWxsT25NYWluVGhyZWFkKFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewot
ICAgICAgICBpZiAoIXdlYWtUaGlzKSB7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigp
OwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGFwcGVuZEVuZE9mVmlk
ZW9TYW1wbGVEdXJhdGlvbklmTmVlZGVkKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAg
ICB9KTsKLS8qCi0gICAgYXV0byBibG9jayA9IG1ha2VCbG9ja1B0cihbdGhpcywgd2Vha1RoaXMg
PSBtYWtlV2Vha1B0cih0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKHdlYWtUaGlzKSB7Ci0gICAgICAg
ICAgICBhcHBlbmRFbmRzUHJldmlvdXNTYW1wbGVEdXJhdGlvbk1hcmtlcihtX3ZpZGVvQXNzZXRX
cml0ZXJJbnB1dC5nZXQoKSwgbV9sYXN0VmlkZW9QcmVzZW50YXRpb25UaW1lLCBtX2xhc3RWaWRl
b0RlY29kaW5nVGltZSk7Ci0gICAgICAgICAgICBbbV92aWRlb0Fzc2V0V3JpdGVySW5wdXQgbWFy
a0FzRmluaXNoZWRdOwotICAgICAgICB9Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Ci0g
ICAgfSk7Ci0gICAgW21fdmlkZW9Bc3NldFdyaXRlcklucHV0IHJlcXVlc3RNZWRpYURhdGFXaGVu
UmVhZHlPblF1ZXVlOmRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCkgdXNpbmdCbG9jazpibG9jay5n
ZXQoKV07Ci0qLwotfQotCi12b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpmbHVzaENv
bXByZXNzZWRTYW1wbGVCdWZmZXJzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKLXsKLSAgICBhcHBlbmRDb21wcmVzc2VkU2FtcGxlQnVmZmVycygpOwotICAg
IGFwcGVuZEVuZE9mVmlkZW9TYW1wbGVEdXJhdGlvbklmTmVlZGVkKFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKLX0KLQotdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6Y2xlYXIo
KQotewotICAgIGlmIChtX3dyaXRlcikKLSAgICAgICAgbV93cml0ZXIuY2xlYXIoKTsKLQotICAg
IG1fZGF0YSA9IG51bGxwdHI7Ci0gICAgaWYgKGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKG1fZmV0Y2hEYXRhQ29tcGxldGlvbkhhbmRsZXIpKQotICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihudWxscHRyKTsKKyAgICBbbV93cml0ZXIgYWRkSW5wdXQ6bV9hdWRpb0lucHV0LmdldCgp
XTsKKyAgICBtX2F1ZGlvUHVsbFF1ZXVlID0gZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJXZWJDb3Jl
QXVkaW9SZWNvcmRpbmdQdWxsQnVmZmVyUXVldWUiLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpOwor
ICAgIHJldHVybiB0cnVlOwogfQogCi0KIHN0YXRpYyBpbmxpbmUgUmV0YWluUHRyPENNU2FtcGxl
QnVmZmVyUmVmPiBjb3B5U2FtcGxlQnVmZmVyV2l0aEN1cnJlbnRUaW1lU3RhbXAoQ01TYW1wbGVC
dWZmZXJSZWYgb3JpZ2luYWxCdWZmZXIpCiB7CiAgICAgQ01UaW1lIHN0YXJ0VGltZSA9IENNQ2xv
Y2tHZXRUaW1lKENNQ2xvY2tHZXRIb3N0VGltZUNsb2NrKCkpOwogICAgIENNSXRlbUNvdW50IGNv
dW50ID0gMDsKICAgICBDTVNhbXBsZUJ1ZmZlckdldFNhbXBsZVRpbWluZ0luZm9BcnJheShvcmln
aW5hbEJ1ZmZlciwgMCwgbmlsLCAmY291bnQpOwotCisgICAgCiAgICAgVmVjdG9yPENNU2FtcGxl
VGltaW5nSW5mbz4gdGltZUluZm8oY291bnQpOwogICAgIENNU2FtcGxlQnVmZmVyR2V0U2FtcGxl
VGltaW5nSW5mb0FycmF5KG9yaWdpbmFsQnVmZmVyLCBjb3VudCwgdGltZUluZm8uZGF0YSgpLCAm
Y291bnQpOwotCi0gICAgZm9yIChhdXRvIGkgPSAwOyBpIDwgY291bnQ7IGkrKykgeworICAgIAor
ICAgIGZvciAoQ01JdGVtQ291bnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CiAgICAgICAgIHRp
bWVJbmZvW2ldLmRlY29kZVRpbWVTdGFtcCA9IGtDTVRpbWVJbnZhbGlkOwogICAgICAgICB0aW1l
SW5mb1tpXS5wcmVzZW50YXRpb25UaW1lU3RhbXAgPSBzdGFydFRpbWU7CiAgICAgfQotCisgICAg
CiAgICAgQ01TYW1wbGVCdWZmZXJSZWYgbmV3QnVmZmVyID0gbnVsbHB0cjsKLSAgICBpZiAoYXV0
byBlcnJvciA9IENNU2FtcGxlQnVmZmVyQ3JlYXRlQ29weVdpdGhOZXdUaW1pbmcoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgb3JpZ2luYWxCdWZmZXIsIGNvdW50LCB0aW1lSW5mby5kYXRhKCksICZuZXdC
dWZmZXIpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiTWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXIgQ01TYW1wbGVCdWZmZXJDcmVhdGVDb3B5V2l0aE5ld1RpbWlu
ZyBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKKyAgICBhdXRvIGVycm9yID0gQ01TYW1wbGVCdWZm
ZXJDcmVhdGVDb3B5V2l0aE5ld1RpbWluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBvcmlnaW5hbEJ1
ZmZlciwgY291bnQsIHRpbWVJbmZvLmRhdGEoKSwgJm5ld0J1ZmZlcik7CisgICAgaWYgKGVycm9y
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9CiAgICAgcmV0dXJuIGFkb3B0Q0YobmV3
QnVmZmVyKTsKIH0KLSAgICAKKwogdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBw
ZW5kVmlkZW9TYW1wbGVCdWZmZXIoQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlQnVmZmVyKQogewot
ICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbm90IHNldCB0aGUgdGltZXN0YW1wcyBpZiB0aGV5IGFy
ZSBhbHJlYWR5IHNldC4KLSAgICBpZiAoYXV0byBidWZmZXJXaXRoQ3VycmVudFRpbWUgPSBjb3B5
U2FtcGxlQnVmZmVyV2l0aEN1cnJlbnRUaW1lU3RhbXAoc2FtcGxlQnVmZmVyKSkKLSAgICAgICAg
bV92aWRlb0NvbXByZXNzb3ItPmFkZFNhbXBsZUJ1ZmZlcihidWZmZXJXaXRoQ3VycmVudFRpbWUu
Z2V0KCkpOworICAgIEFTU0VSVChtX3ZpZGVvSW5wdXQpOworICAgIGlmIChtX2lzU3RvcHBlZCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFtX2hhc1N0YXJ0ZWRXcml0aW5nKSB7CisgICAg
ICAgIGlmICghW21fd3JpdGVyIHN0YXJ0V3JpdGluZ10pIHsKKyAgICAgICAgICAgIG1faXNTdG9w
cGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAi
Y3JlYXRlIEFWQXNzZXRXcml0ZXIgaW5zdGFuY2UgZmFpbGVkIHdpdGggZXJyb3IgY29kZSAlbGQi
LCAobG9uZylbbV93cml0ZXIgZXJyb3JdKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgICAgICBbbV93cml0ZXIgc3RhcnRTZXNzaW9uQXRTb3VyY2VUaW1lOkNNQ2xvY2tHZXRU
aW1lKENNQ2xvY2tHZXRIb3N0VGltZUNsb2NrKCkpXTsKKyAgICAgICAgbV9oYXNTdGFydGVkV3Jp
dGluZyA9IHRydWU7CisgICAgICAgIFJlZlB0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcj4g
cHJvdGVjdGVkVGhpcyA9IHRoaXM7CisgICAgICAgIFttX3ZpZGVvSW5wdXQgcmVxdWVzdE1lZGlh
RGF0YVdoZW5SZWFkeU9uUXVldWU6bV92aWRlb1B1bGxRdWV1ZSB1c2luZ0Jsb2NrOlt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKV0geworICAgICAgICAgICAgZG8g
eworICAgICAgICAgICAgICAgIGlmICghW21fdmlkZW9JbnB1dCBpc1JlYWR5Rm9yTW9yZU1lZGlh
RGF0YV0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGF1dG8g
bG9ja2VyID0gaG9sZExvY2sobV92aWRlb0xvY2spOworICAgICAgICAgICAgICAgIGlmIChtX3Zp
ZGVvQnVmZmVyUG9vbC5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gbV92aWRlb0J1ZmZlclBvb2wudGFrZUZpcnN0KCk7
CisgICAgICAgICAgICAgICAgbG9ja2VyLnVubG9ja0Vhcmx5KCk7CisgICAgICAgICAgICAgICAg
aWYgKCFbbV92aWRlb0lucHV0IGFwcGVuZFNhbXBsZUJ1ZmZlcjpidWZmZXIuZ2V0KCldKQorICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0gd2hpbGUgKHRydWUpOworICAg
ICAgICAgICAgaWYgKG1faXNTdG9wcGVkICYmIG1fdmlkZW9CdWZmZXJQb29sLmlzRW1wdHkoKSkg
eworICAgICAgICAgICAgICAgIFttX3ZpZGVvSW5wdXQgbWFya0FzRmluaXNoZWRdOworICAgICAg
ICAgICAgICAgIG1fZmluaXNoV3JpdGluZ1ZpZGVvU2VtYXBob3JlLnNpZ25hbCgpOworICAgICAg
ICAgICAgfQorICAgICAgICB9XTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBhdXRvIGJ1
ZmZlcldpdGhDdXJyZW50VGltZSA9IGNvcHlTYW1wbGVCdWZmZXJXaXRoQ3VycmVudFRpbWVTdGFt
cChzYW1wbGVCdWZmZXIpOworICAgIGlmICghYnVmZmVyV2l0aEN1cnJlbnRUaW1lKQorICAgICAg
ICByZXR1cm47CisKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fdmlkZW9Mb2NrKTsKKyAg
ICBtX3ZpZGVvQnVmZmVyUG9vbC5hcHBlbmQoV1RGTW92ZShidWZmZXJXaXRoQ3VycmVudFRpbWUp
KTsKIH0KIAogc3RhdGljIGlubGluZSBSZXRhaW5QdHI8Q01Gb3JtYXREZXNjcmlwdGlvblJlZj4g
Y3JlYXRlQXVkaW9Gb3JtYXREZXNjcmlwdGlvbihjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9u
JiBkZXNjcmlwdGlvbikKQEAgLTM5OSwzOSArMjgwLDY4IEBAIHN0YXRpYyBpbmxpbmUgUmV0YWlu
UHRyPENNRm9ybWF0RGVzY3JpcHRpb25SZWY+IGNyZWF0ZUF1ZGlvRm9ybWF0RGVzY3JpcHRpb24o
Y29uCiAgICAgYXV0byBiYXNpY0Rlc2NyaXB0aW9uID0gV1RGOjpnZXQ8Y29uc3QgQXVkaW9TdHJl
YW1CYXNpY0Rlc2NyaXB0aW9uKj4oZGVzY3JpcHRpb24ucGxhdGZvcm1EZXNjcmlwdGlvbigpLmRl
c2NyaXB0aW9uKTsKICAgICBDTUZvcm1hdERlc2NyaXB0aW9uUmVmIGZvcm1hdCA9IG51bGxwdHI7
CiAgICAgYXV0byBlcnJvciA9IENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkNyZWF0ZShrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCBiYXNpY0Rlc2NyaXB0aW9uLCAwLCBOVUxMLCAwLCBOVUxMLCBOVUxMLCAm
Zm9ybWF0KTsKLSAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVk
aWFTdHJlYW0sICJNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlciBDTUF1ZGlvRm9ybWF0RGVzY3Jp
cHRpb25DcmVhdGUgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgaWYgKGVycm9yKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9CiAgICAgcmV0dXJuIGFkb3B0Q0YoZm9ybWF0KTsK
IH0KIAotc3RhdGljIGlubGluZSBSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IGNyZWF0ZUF1
ZGlvU2FtcGxlQnVmZmVyKGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiBkYXRhLCBjb25zdCBBdWRp
b1N0cmVhbURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgY29uc3QgV1RGOjpNZWRpYVRpbWUmIHRp
bWUsIHNpemVfdCBzYW1wbGVDb3VudCkKK3N0YXRpYyBpbmxpbmUgUmV0YWluUHRyPENNU2FtcGxl
QnVmZmVyUmVmPiBjcmVhdGVBdWRpb1NhbXBsZUJ1ZmZlcldpdGhQYWNrZXREZXNjcmlwdGlvbnMo
Q01Gb3JtYXREZXNjcmlwdGlvblJlZiBmb3JtYXQsIHNpemVfdCBzYW1wbGVDb3VudCkKIHsKLSAg
ICBhdXRvIGZvcm1hdCA9IGNyZWF0ZUF1ZGlvRm9ybWF0RGVzY3JpcHRpb24oZGVzY3JpcHRpb24p
OwotICAgIGlmICghZm9ybWF0KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQorICAgIENNVGlt
ZSBzdGFydFRpbWUgPSBDTUNsb2NrR2V0VGltZShDTUNsb2NrR2V0SG9zdFRpbWVDbG9jaygpKTsK
ICAgICBDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGVCdWZmZXIgPSBudWxscHRyOwotICAgIGF1dG8g
ZXJyb3IgPSBDTUF1ZGlvU2FtcGxlQnVmZmVyQ3JlYXRlV2l0aFBhY2tldERlc2NyaXB0aW9ucyhr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCBOVUxMLCBmYWxzZSwgTlVMTCwgTlVMTCwgZm9ybWF0LmdldCgp
LCBzYW1wbGVDb3VudCwgdG9DTVRpbWUodGltZSksIE5VTEwsICZzYW1wbGVCdWZmZXIpOwotICAg
IGlmIChlcnJvcikgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIk1l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyIGNyZWF0ZUF1ZGlvU2FtcGxlQnVmZmVyV2l0aFBhY2tl
dERlc2NyaXB0aW9ucyBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKLSAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0gICAgfQotICAgIGF1dG8gYnVmZmVyID0gYWRvcHRDRihzYW1wbGVCdWZmZXIpOwot
Ci0gICAgZXJyb3IgPSBDTVNhbXBsZUJ1ZmZlclNldERhdGFCdWZmZXJGcm9tQXVkaW9CdWZmZXJM
aXN0KGJ1ZmZlci5nZXQoKSwga0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGQWxsb2NhdG9yRGVmYXVs
dCwgMCwgZG93bmNhc3Q8V2ViQXVkaW9CdWZmZXJMaXN0PihkYXRhKS5saXN0KCkpOwotICAgIGlm
IChlcnJvcikgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIk1lZGlh
UmVjb3JkZXJQcml2YXRlV3JpdGVyIENNU2FtcGxlQnVmZmVyU2V0RGF0YUJ1ZmZlckZyb21BdWRp
b0J1ZmZlckxpc3QgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgYXV0byBlcnJvciA9IENN
QXVkaW9TYW1wbGVCdWZmZXJDcmVhdGVXaXRoUGFja2V0RGVzY3JpcHRpb25zKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIE5VTEwsIGZhbHNlLCBOVUxMLCBOVUxMLCBmb3JtYXQsIHNhbXBsZUNvdW50LCBz
dGFydFRpbWUsIE5VTEwsICZzYW1wbGVCdWZmZXIpOworICAgIGlmIChlcnJvcikKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgfQotICAgIHJldHVybiBidWZmZXI7CisgICAgcmV0dXJuIGFk
b3B0Q0Yoc2FtcGxlQnVmZmVyKTsKIH0KIAotdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
cjo6YXBwZW5kQXVkaW9TYW1wbGVCdWZmZXIoY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmIGRhdGEs
IGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCBjb25zdCBXVEY6Ok1l
ZGlhVGltZSYgdGltZSwgc2l6ZV90IHNhbXBsZUNvdW50KQordm9pZCBNZWRpYVJlY29yZGVyUHJp
dmF0ZVdyaXRlcjo6YXBwZW5kQXVkaW9TYW1wbGVCdWZmZXIoY29uc3QgUGxhdGZvcm1BdWRpb0Rh
dGEmIGRhdGEsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCBjb25z
dCBXVEY6Ok1lZGlhVGltZSYsIHNpemVfdCBzYW1wbGVDb3VudCkKIHsKLSAgICBpZiAoYXV0byBz
YW1wbGVCdWZmZXIgPSBjcmVhdGVBdWRpb1NhbXBsZUJ1ZmZlcihkYXRhLCBkZXNjcmlwdGlvbiwg
dGltZSwgc2FtcGxlQ291bnQpKQotICAgICAgICBtX2F1ZGlvQ29tcHJlc3Nvci0+YWRkU2FtcGxl
QnVmZmVyKHNhbXBsZUJ1ZmZlci5nZXQoKSk7CisgICAgQVNTRVJUKG1fYXVkaW9JbnB1dCk7Cisg
ICAgaWYgKCghbV9oYXNTdGFydGVkV3JpdGluZyAmJiBtX3ZpZGVvSW5wdXQpIHx8IG1faXNTdG9w
cGVkKQorICAgICAgICByZXR1cm47CisgICAgYXV0byBmb3JtYXQgPSBjcmVhdGVBdWRpb0Zvcm1h
dERlc2NyaXB0aW9uKGRlc2NyaXB0aW9uKTsKKyAgICBpZiAoIWZvcm1hdCkKKyAgICAgICAgcmV0
dXJuOworICAgIGlmIChtX2lzRmlyc3RBdWRpb1NhbXBsZSkgeworICAgICAgICBpZiAoIW1fdmlk
ZW9JbnB1dCkgeworICAgICAgICAgICAgLy8gYXVkaW8tb25seSByZWNvcmRpbmcuCisgICAgICAg
ICAgICBpZiAoIVttX3dyaXRlciBzdGFydFdyaXRpbmddKSB7CisgICAgICAgICAgICAgICAgbV9p
c1N0b3BwZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIFttX3dyaXRlciBzdGFydFNlc3Npb25BdFNvdXJjZVRpbWU6Q01DbG9ja0dl
dFRpbWUoQ01DbG9ja0dldEhvc3RUaW1lQ2xvY2soKSldOworICAgICAgICAgICAgbV9oYXNTdGFy
dGVkV3JpdGluZyA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgbV9pc0ZpcnN0QXVkaW9TYW1w
bGUgPSBmYWxzZTsKKyAgICAgICAgUmVmUHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyPiBw
cm90ZWN0ZWRUaGlzID0gdGhpczsKKyAgICAgICAgW21fYXVkaW9JbnB1dCByZXF1ZXN0TWVkaWFE
YXRhV2hlblJlYWR5T25RdWV1ZTptX2F1ZGlvUHVsbFF1ZXVlIHVzaW5nQmxvY2s6W3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpXSB7CisgICAgICAgICAgICBkbyB7
CisgICAgICAgICAgICAgICAgaWYgKCFbbV9hdWRpb0lucHV0IGlzUmVhZHlGb3JNb3JlTWVkaWFE
YXRhXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhtX2F1ZGlvTG9jayk7CisgICAgICAgICAgICAgICAgaWYgKG1fYXVk
aW9CdWZmZXJQb29sLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgYXV0byBidWZmZXIgPSBtX2F1ZGlvQnVmZmVyUG9vbC50YWtlRmlyc3QoKTsK
KyAgICAgICAgICAgICAgICBsb2NrZXIudW5sb2NrRWFybHkoKTsKKyAgICAgICAgICAgICAgICBb
bV9hdWRpb0lucHV0IGFwcGVuZFNhbXBsZUJ1ZmZlcjpidWZmZXIuZ2V0KCldOworICAgICAgICAg
ICAgfSB3aGlsZSAodHJ1ZSk7CisgICAgICAgICAgICBpZiAobV9pc1N0b3BwZWQgJiYgbV9hdWRp
b0J1ZmZlclBvb2wuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgW21fYXVkaW9JbnB1dCBt
YXJrQXNGaW5pc2hlZF07CisgICAgICAgICAgICAgICAgbV9maW5pc2hXcml0aW5nQXVkaW9TZW1h
cGhvcmUuc2lnbmFsKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH1dOworICAgIH0KKworICAg
IGF1dG8gc2FtcGxlQnVmZmVyID0gY3JlYXRlQXVkaW9TYW1wbGVCdWZmZXJXaXRoUGFja2V0RGVz
Y3JpcHRpb25zKGZvcm1hdC5nZXQoKSwgc2FtcGxlQ291bnQpOworICAgIGlmICghc2FtcGxlQnVm
ZmVyKQorICAgICAgICByZXR1cm47CisgICAgYXV0byBlcnJvciA9IENNU2FtcGxlQnVmZmVyU2V0
RGF0YUJ1ZmZlckZyb21BdWRpb0J1ZmZlckxpc3Qoc2FtcGxlQnVmZmVyLmdldCgpLCBrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCBrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCBkb3duY2FzdDxXZWJBdWRpb0J1
ZmZlckxpc3Q+KGRhdGEpLmxpc3QoKSk7CisgICAgaWYgKGVycm9yKQorICAgICAgICByZXR1cm47
CisKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fYXVkaW9Mb2NrKTsKKyAgICBtX2F1ZGlv
QnVmZmVyUG9vbC5hcHBlbmQoV1RGTW92ZShzYW1wbGVCdWZmZXIpKTsKIH0KIAogdm9pZCBNZWRp
YVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6c3RvcFJlY29yZGluZygpCkBAIC00NDAsNDAgKzM1MCwz
NSBAQCB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpzdG9wUmVjb3JkaW5nKCkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgbV9pc1N0b3BwZWQgPSB0cnVlOwotCi0gICAgaWYgKG1fdmlk
ZW9Db21wcmVzc29yKQotICAgICAgICBtX3ZpZGVvQ29tcHJlc3Nvci0+ZmluaXNoKCk7Ci0gICAg
aWYgKG1fYXVkaW9Db21wcmVzc29yKQotICAgICAgICBtX2F1ZGlvQ29tcHJlc3Nvci0+ZmluaXNo
KCk7Ci0KICAgICBpZiAoIW1faGFzU3RhcnRlZFdyaXRpbmcpCiAgICAgICAgIHJldHVybjsKICAg
ICBBU1NFUlQoW21fd3JpdGVyIHN0YXR1c10gPT0gQVZBc3NldFdyaXRlclN0YXR1c1dyaXRpbmcp
OworICAgIGlmIChtX3ZpZGVvSW5wdXQpCisgICAgICAgIG1fZmluaXNoV3JpdGluZ1ZpZGVvU2Vt
YXBob3JlLndhaXQoKTsKKworICAgIGlmIChtX2F1ZGlvSW5wdXQpCisgICAgICAgIG1fZmluaXNo
V3JpdGluZ0F1ZGlvU2VtYXBob3JlLndhaXQoKTsKIAogICAgIG1faXNTdG9wcGluZyA9IHRydWU7
CisgICAgW21fd3JpdGVyIGZpbmlzaFdyaXRpbmdXaXRoQ29tcGxldGlvbkhhbmRsZXI6W3RoaXMs
IHdlYWtQdHIgPSBtYWtlV2Vha1B0cigqdGhpcyldKCkgbXV0YWJsZSB7CisgICAgICAgIGNhbGxP
bk1haW5UaHJlYWQoW3RoaXMsIHdlYWtQdHIgPSBXVEZNb3ZlKHdlYWtQdHIpLCBidWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3BhdGgpXSgpIG11dGFibGUg
eworICAgICAgICAgICAgaWYgKCF3ZWFrUHRyKQorICAgICAgICAgICAgICAgIHJldHVybjsKIAot
ICAgIGZsdXNoQ29tcHJlc3NlZFNhbXBsZUJ1ZmZlcnMoW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdl
YWtQdHIodGhpcyldKCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmICghd2Vha1RoaXMpCi0gICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICBtX2lzU3RvcHBpbmcgPSBmYWxzZTsKKyAgICAgICAg
ICAgIGlmIChtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICAgICAgICAgIG1f
ZmV0Y2hEYXRhQ29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICBtX2RhdGEgPSBXVEZNb3ZlKGJ1ZmZlcik7CiAKLSAgICAg
ICAgW21fd3JpdGVyIGZsdXNoXTsKLSAgICAgICAgW21fd3JpdGVyIGZpbmlzaFdyaXRpbmdXaXRo
Q29tcGxldGlvbkhhbmRsZXI6W3RoaXMsIHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyldKCkg
bXV0YWJsZSB7Ci0gICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCB3ZWFrVGhpcyA9
IFdURk1vdmUod2Vha1RoaXMpXSgpIG11dGFibGUgewotICAgICAgICAgICAgICAgIGlmICghd2Vh
a1RoaXMpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgICAgIG1f
aXNTdG9wcGluZyA9IGZhbHNlOwotICAgICAgICAgICAgICAgIGlmIChtX2ZldGNoRGF0YUNvbXBs
ZXRpb25IYW5kbGVyKSB7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gV1RGTW92
ZShtX2RhdGEpOwotICAgICAgICAgICAgICAgICAgICBtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5k
bGVyKFdURk1vdmUoYnVmZmVyKSk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAg
ICAgbV9pc1N0b3BwZWQgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICBtX2hhc1N0YXJ0ZWRXcml0
aW5nID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgY2xlYXIoKTsKLSAgICAgICAgICAgIH0pOwot
ICAgICAgICB9XTsKLSAgICB9KTsKKyAgICAgICAgICAgIG1faXNTdG9wcGVkID0gZmFsc2U7Cisg
ICAgICAgICAgICBtX2hhc1N0YXJ0ZWRXcml0aW5nID0gZmFsc2U7CisgICAgICAgICAgICBtX2lz
Rmlyc3RBdWRpb1NhbXBsZSA9IHRydWU7CisgICAgICAgICAgICBjbGVhcigpOworICAgICAgICB9
KTsKKyAgICAgICAgbV9maW5pc2hXcml0aW5nU2VtYXBob3JlLnNpZ25hbCgpOworICAgIH1dOwor
ICAgIG1fZmluaXNoV3JpdGluZ1NlbWFwaG9yZS53YWl0KCk7CiB9CiAKIHZvaWQgTWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXI6OmZldGNoRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0
cjxTaGFyZWRCdWZmZXI+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtNDg3LDI1ICszOTIs
NiBAQCB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpmZXRjaERhdGEoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChSZWZQdHI8U2hhcmVkQgogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1v
dmUoYnVmZmVyKSk7CiB9CiAKLXZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVu
ZERhdGEoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpCi17Ci0gICAgaWYgKCFtX2RhdGEp
IHsKLSAgICAgICAgbV9kYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgc2l6ZSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9kYXRhLT5hcHBlbmQoZGF0YSwgc2l6ZSk7Ci19
Ci0KLXZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZERhdGEoUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIpCi17Ci0gICAgaWYgKCFtX2RhdGEpIHsKLSAgICAgICAgbV9kYXRh
ID0gV1RGTW92ZShidWZmZXIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIG1fZGF0YS0+
YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAog
I2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShBVkZPVU5EQVRJT04pCi0jZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29j
b2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYUZpbGVCYXNlZC5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXJDb2NvYUZpbGVCYXNlZC5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzNm
YjFlZWFlN2Q0YTQ1NWUzNTRhMTZlYjZhNjg0NjhlZDQxMmU0Zi4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2FGaWxlQmFzZWQu
bW0KKysrIC9kZXYvbnVsbApAQCAtMSwzODMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoQVZGT1VOREFUSU9OKQotCi0jaW5jbHVkZSAiQXVkaW9T
dHJlYW1EZXNjcmlwdGlvbi5oIgotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRlICJNZWRp
YVN0cmVhbVRyYWNrUHJpdmF0ZS5oIgotI2luY2x1ZGUgIldlYkF1ZGlvQnVmZmVyTGlzdC5oIgot
I2luY2x1ZGUgPEFWRm91bmRhdGlvbi9BVkFzc2V0V3JpdGVyLmg+Ci0jaW5jbHVkZSA8QVZGb3Vu
ZGF0aW9uL0FWQXNzZXRXcml0ZXJJbnB1dC5oPgotI2luY2x1ZGUgPHBhbC9jZi9Db3JlTWVkaWFT
b2Z0TGluay5oPgotI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgotI2luY2x1ZGUg
PHd0Zi9GaWxlU3lzdGVtLmg+Ci0KLSNpbXBvcnQgPHBhbC9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0
TGluay5oPgotCi0jdW5kZWYgQVZFbmNvZGVyQml0UmF0ZUtleQotI2RlZmluZSBBVkVuY29kZXJC
aXRSYXRlS2V5IGdldEFWRW5jb2RlckJpdFJhdGVLZXlXaXRoRmFsbGJhY2soKQotI3VuZGVmIEFW
Rm9ybWF0SURLZXkKLSNkZWZpbmUgQVZGb3JtYXRJREtleSBnZXRBVkZvcm1hdElES2V5V2l0aEZh
bGxiYWNrKCkKLSN1bmRlZiBBVk51bWJlck9mQ2hhbm5lbHNLZXkKLSNkZWZpbmUgQVZOdW1iZXJP
ZkNoYW5uZWxzS2V5IGdldEFWTnVtYmVyT2ZDaGFubmVsc0tleVdpdGhGYWxsYmFjaygpCi0jdW5k
ZWYgQVZTYW1wbGVSYXRlS2V5Ci0jZGVmaW5lIEFWU2FtcGxlUmF0ZUtleSBnZXRBVlNhbXBsZVJh
dGVLZXlXaXRoRmFsbGJhY2soKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXVzaW5nIG5hbWVz
cGFjZSBQQUw7Ci0KLXN0YXRpYyBOU1N0cmluZyAqZ2V0QVZGb3JtYXRJREtleVdpdGhGYWxsYmFj
aygpCi17Ci0gICAgaWYgKFBBTDo6Y2FuTG9hZF9BVkZvdW5kYXRpb25fQVZGb3JtYXRJREtleSgp
KQotICAgICAgICByZXR1cm4gUEFMOjpnZXRfQVZGb3VuZGF0aW9uX0FWRm9ybWF0SURLZXkoKTsK
LQotICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhLCAiRmFpbGVkIHRvIGxvYWQgQVZGb3JtYXRJ
REtleSIpOwotICAgIHJldHVybiBAIkFWRm9ybWF0SURLZXkiOwotfQotCi1zdGF0aWMgTlNTdHJp
bmcgKmdldEFWTnVtYmVyT2ZDaGFubmVsc0tleVdpdGhGYWxsYmFjaygpCi17Ci0gICAgaWYgKFBB
TDo6Y2FuTG9hZF9BVkZvdW5kYXRpb25fQVZOdW1iZXJPZkNoYW5uZWxzS2V5KCkpCi0gICAgICAg
IHJldHVybiBQQUw6OmdldF9BVkZvdW5kYXRpb25fQVZOdW1iZXJPZkNoYW5uZWxzS2V5KCk7Ci0K
LSAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYSwgIkZhaWxlZCB0byBsb2FkIEFWTnVtYmVyT2ZD
aGFubmVsc0tleSIpOwotICAgIHJldHVybiBAIkFWTnVtYmVyT2ZDaGFubmVsc0tleSI7Ci19Ci0K
LXN0YXRpYyBOU1N0cmluZyAqZ2V0QVZTYW1wbGVSYXRlS2V5V2l0aEZhbGxiYWNrKCkKLXsKLSAg
ICBpZiAoUEFMOjpjYW5Mb2FkX0FWRm91bmRhdGlvbl9BVlNhbXBsZVJhdGVLZXkoKSkKLSAgICAg
ICAgcmV0dXJuIFBBTDo6Z2V0X0FWRm91bmRhdGlvbl9BVlNhbXBsZVJhdGVLZXkoKTsKLQotICAg
IFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhLCAiRmFpbGVkIHRvIGxvYWQgQVZTYW1wbGVSYXRlS2V5
Iik7Ci0gICAgcmV0dXJuIEAiQVZTYW1wbGVSYXRlS2V5IjsKLX0KLQotc3RhdGljIE5TU3RyaW5n
ICpnZXRBVkVuY29kZXJCaXRSYXRlS2V5V2l0aEZhbGxiYWNrKCkKLXsKLSAgICBpZiAoUEFMOjpj
YW5Mb2FkX0FWRm91bmRhdGlvbl9BVkVuY29kZXJCaXRSYXRlS2V5KCkpCi0gICAgICAgIHJldHVy
biBQQUw6OmdldF9BVkZvdW5kYXRpb25fQVZFbmNvZGVyQml0UmF0ZUtleSgpOwotCi0gICAgUkVM
RUFTRV9MT0dfRVJST1IoTWVkaWEsICJGYWlsZWQgdG8gbG9hZCBBVkVuY29kZXJCaXRSYXRlS2V5
Iik7Ci0gICAgcmV0dXJuIEAiQVZFbmNvZGVyQml0UmF0ZUtleSI7Ci19Ci0KLVJlZlB0cjxNZWRp
YVJlY29yZGVyUHJpdmF0ZVdyaXRlcj4gTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNyZWF0
ZShib29sIGhhc0F1ZGlvLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCi17Ci0gICAgTlNTdHJpbmcg
KmRpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShAInZpZGVv
cyIpOwotICAgIE5TU3RyaW5nICpmaWxlbmFtZSA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0
OkAiLyVsbGQubXA0IiwgQ01DbG9ja0dldFRpbWUoQ01DbG9ja0dldEhvc3RUaW1lQ2xvY2soKSku
dmFsdWVdOwotICAgIE5TU3RyaW5nICpwYXRoID0gW2RpcmVjdG9yeSBzdHJpbmdCeUFwcGVuZGlu
Z1N0cmluZzpmaWxlbmFtZV07Ci0KLSAgICBOU1VSTCAqb3V0cHV0VVJMID0gW05TVVJMIGZpbGVV
UkxXaXRoUGF0aDpwYXRoXTsKLSAgICBTdHJpbmcgZmlsZVBhdGggPSBbcGF0aCBVVEY4U3RyaW5n
XTsKLSAgICBOU0Vycm9yICplcnJvciA9IG5pbDsKLSAgICBhdXRvIGF2QXNzZXRXcml0ZXIgPSBh
ZG9wdE5TKFtQQUw6OmFsbG9jQVZBc3NldFdyaXRlckluc3RhbmNlKCkgaW5pdFdpdGhVUkw6b3V0
cHV0VVJMIGZpbGVUeXBlOkFWRmlsZVR5cGVNUEVHNCBlcnJvcjomZXJyb3JdKTsKLSAgICBpZiAo
ZXJyb3IpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJjcmVhdGUg
QVZBc3NldFdyaXRlciBpbnN0YW5jZSBmYWlsZWQgd2l0aCBlcnJvciBjb2RlICVsZCIsIChsb25n
KWVycm9yLmNvZGUpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICBhdXRv
IHdyaXRlciA9IGFkb3B0UmVmKCpuZXcgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIoV1RGTW92
ZShhdkFzc2V0V3JpdGVyKSwgV1RGTW92ZShmaWxlUGF0aCkpKTsKLQotICAgIGlmIChoYXNBdWRp
byAmJiAhd3JpdGVyLT5zZXRBdWRpb0lucHV0KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwot
Ci0gICAgaWYgKHdpZHRoICYmIGhlaWdodCkgewotICAgICAgICBpZiAoIXdyaXRlci0+c2V0Vmlk
ZW9JbnB1dCh3aWR0aCwgaGVpZ2h0KSkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAg
IH0KLQotICAgIHJldHVybiBXVEZNb3ZlKHdyaXRlcik7Ci19Ci0KLU1lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcihSZXRhaW5QdHI8QVZBc3NldFdy
aXRlcj4mJiBhdkFzc2V0V3JpdGVyLCBTdHJpbmcmJiBmaWxlUGF0aCkKLSAgICA6IG1fd3JpdGVy
KFdURk1vdmUoYXZBc3NldFdyaXRlcikpCi0gICAgLCBtX3BhdGgoV1RGTW92ZShmaWxlUGF0aCkp
Ci17Ci19Ci0KLU1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp+TWVkaWFSZWNvcmRlclByaXZh
dGVXcml0ZXIoKQotewotICAgIGNsZWFyKCk7Ci19Ci0KLXZvaWQgTWVkaWFSZWNvcmRlclByaXZh
dGVXcml0ZXI6OmNsZWFyKCkKLXsKLSAgICBpZiAobV92aWRlb0lucHV0KSB7Ci0gICAgICAgIG1f
dmlkZW9JbnB1dC5jbGVhcigpOwotICAgICAgICBkaXNwYXRjaF9yZWxlYXNlKG1fdmlkZW9QdWxs
UXVldWUpOwotICAgIH0KLSAgICBpZiAobV9hdWRpb0lucHV0KSB7Ci0gICAgICAgIG1fYXVkaW9J
bnB1dC5jbGVhcigpOwotICAgICAgICBkaXNwYXRjaF9yZWxlYXNlKG1fYXVkaW9QdWxsUXVldWUp
OwotICAgIH0KLSAgICBpZiAobV93cml0ZXIpCi0gICAgICAgIG1fd3JpdGVyLmNsZWFyKCk7Ci0K
LSAgICBtX2RhdGEgPSBudWxscHRyOwotICAgIGlmIChhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyKSkKLSAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIobnVsbHB0cik7Ci19Ci0KLWJvb2wgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6
OnNldFZpZGVvSW5wdXQoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQotewotICAgIEFTU0VSVCghbV92
aWRlb0lucHV0KTsKLSAgICAKLSAgICBOU0RpY3Rpb25hcnkgKmNvbXByZXNzaW9uUHJvcGVydGll
cyA9IEB7Ci0gICAgICAgIEFWVmlkZW9BdmVyYWdlQml0UmF0ZUtleSA6IFtOU051bWJlciBudW1i
ZXJXaXRoSW50OndpZHRoICogaGVpZ2h0ICogMTJdLAotICAgICAgICBBVlZpZGVvRXhwZWN0ZWRT
b3VyY2VGcmFtZVJhdGVLZXkgOiBAKDMwKSwKLSAgICAgICAgQVZWaWRlb01heEtleUZyYW1lSW50
ZXJ2YWxLZXkgOiBAKDEyMCksCi0gICAgICAgIEFWVmlkZW9Qcm9maWxlTGV2ZWxLZXkgOiBBVlZp
ZGVvUHJvZmlsZUxldmVsSDI2NE1haW5BdXRvTGV2ZWwKLSAgICB9OwotCi0gICAgTlNEaWN0aW9u
YXJ5ICp2aWRlb1NldHRpbmdzID0gQHsKLSAgICAgICAgQVZWaWRlb0NvZGVjS2V5OiBBVlZpZGVv
Q29kZWNIMjY0LAotICAgICAgICBBVlZpZGVvV2lkdGhLZXk6IFtOU051bWJlciBudW1iZXJXaXRo
SW50OndpZHRoXSwKLSAgICAgICAgQVZWaWRlb0hlaWdodEtleTogW05TTnVtYmVyIG51bWJlcldp
dGhJbnQ6aGVpZ2h0XSwKLSAgICAgICAgQVZWaWRlb0NvbXByZXNzaW9uUHJvcGVydGllc0tleTog
Y29tcHJlc3Npb25Qcm9wZXJ0aWVzCi0gICAgfTsKLSAgICAKLSAgICBtX3ZpZGVvSW5wdXQgPSBh
ZG9wdE5TKFtQQUw6OmFsbG9jQVZBc3NldFdyaXRlcklucHV0SW5zdGFuY2UoKSBpbml0V2l0aE1l
ZGlhVHlwZTpBVk1lZGlhVHlwZVZpZGVvIG91dHB1dFNldHRpbmdzOnZpZGVvU2V0dGluZ3Mgc291
cmNlRm9ybWF0SGludDpuaWxdKTsKLSAgICBbbV92aWRlb0lucHV0IHNldEV4cGVjdHNNZWRpYURh
dGFJblJlYWxUaW1lOnRydWVdOwotICAgIAotICAgIGlmICghW21fd3JpdGVyIGNhbkFkZElucHV0
Om1fdmlkZW9JbnB1dC5nZXQoKV0pIHsKLSAgICAgICAgbV92aWRlb0lucHV0ID0gbnVsbHB0cjsK
LSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJ0aGUgdmlkZW8gaW5wdXQg
aXMgbm90IGFsbG93ZWQgdG8gYWRkIHRvIHRoZSBBVkFzc2V0V3JpdGVyIik7Ci0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICB9Ci0gICAgW21fd3JpdGVyIGFkZElucHV0Om1fdmlkZW9JbnB1dC5n
ZXQoKV07Ci0gICAgbV92aWRlb1B1bGxRdWV1ZSA9IGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgiV2Vi
Q29yZVZpZGVvUmVjb3JkaW5nUHVsbEJ1ZmZlclF1ZXVlIiwgRElTUEFUQ0hfUVVFVUVfU0VSSUFM
KTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
cjo6c2V0QXVkaW9JbnB1dCgpCi17Ci0gICAgQVNTRVJUKCFtX2F1ZGlvSW5wdXQpOwotCi0gICAg
TlNEaWN0aW9uYXJ5ICphdWRpb1NldHRpbmdzID0gQHsKLSAgICAgICAgQVZFbmNvZGVyQml0UmF0
ZUtleSA6IEAoMjgwMDApLAotICAgICAgICBBVkZvcm1hdElES2V5IDogQChrQXVkaW9Gb3JtYXRN
UEVHNEFBQyksCi0gICAgICAgIEFWTnVtYmVyT2ZDaGFubmVsc0tleSA6IEAoMSksCi0gICAgICAg
IEFWU2FtcGxlUmF0ZUtleSA6IEAoMjIwNTApCi0gICAgfTsKLQotICAgIG1fYXVkaW9JbnB1dCA9
IGFkb3B0TlMoW1BBTDo6YWxsb2NBVkFzc2V0V3JpdGVySW5wdXRJbnN0YW5jZSgpIGluaXRXaXRo
TWVkaWFUeXBlOkFWTWVkaWFUeXBlQXVkaW8gb3V0cHV0U2V0dGluZ3M6YXVkaW9TZXR0aW5ncyBz
b3VyY2VGb3JtYXRIaW50Om5pbF0pOwotICAgIFttX2F1ZGlvSW5wdXQgc2V0RXhwZWN0c01lZGlh
RGF0YUluUmVhbFRpbWU6dHJ1ZV07Ci0gICAgCi0gICAgaWYgKCFbbV93cml0ZXIgY2FuQWRkSW5w
dXQ6bV9hdWRpb0lucHV0LmdldCgpXSkgewotICAgICAgICBtX2F1ZGlvSW5wdXQgPSBudWxscHRy
OwotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgInRoZSBhdWRpbyBpbnB1
dCBpcyBub3QgYWxsb3dlZCB0byBhZGQgdG8gdGhlIEFWQXNzZXRXcml0ZXIiKTsKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICBbbV93cml0ZXIgYWRkSW5wdXQ6bV9hdWRpb0lucHV0
LmdldCgpXTsKLSAgICBtX2F1ZGlvUHVsbFF1ZXVlID0gZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJX
ZWJDb3JlQXVkaW9SZWNvcmRpbmdQdWxsQnVmZmVyUXVldWUiLCBESVNQQVRDSF9RVUVVRV9TRVJJ
QUwpOwotICAgIHJldHVybiB0cnVlOwotfQotCi1zdGF0aWMgaW5saW5lIFJldGFpblB0cjxDTVNh
bXBsZUJ1ZmZlclJlZj4gY29weVNhbXBsZUJ1ZmZlcldpdGhDdXJyZW50VGltZVN0YW1wKENNU2Ft
cGxlQnVmZmVyUmVmIG9yaWdpbmFsQnVmZmVyKQotewotICAgIENNVGltZSBzdGFydFRpbWUgPSBD
TUNsb2NrR2V0VGltZShDTUNsb2NrR2V0SG9zdFRpbWVDbG9jaygpKTsKLSAgICBDTUl0ZW1Db3Vu
dCBjb3VudCA9IDA7Ci0gICAgQ01TYW1wbGVCdWZmZXJHZXRTYW1wbGVUaW1pbmdJbmZvQXJyYXko
b3JpZ2luYWxCdWZmZXIsIDAsIG5pbCwgJmNvdW50KTsKLSAgICAKLSAgICBWZWN0b3I8Q01TYW1w
bGVUaW1pbmdJbmZvPiB0aW1lSW5mbyhjb3VudCk7Ci0gICAgQ01TYW1wbGVCdWZmZXJHZXRTYW1w
bGVUaW1pbmdJbmZvQXJyYXkob3JpZ2luYWxCdWZmZXIsIGNvdW50LCB0aW1lSW5mby5kYXRhKCks
ICZjb3VudCk7Ci0gICAgCi0gICAgZm9yIChDTUl0ZW1Db3VudCBpID0gMDsgaSA8IGNvdW50OyBp
KyspIHsKLSAgICAgICAgdGltZUluZm9baV0uZGVjb2RlVGltZVN0YW1wID0ga0NNVGltZUludmFs
aWQ7Ci0gICAgICAgIHRpbWVJbmZvW2ldLnByZXNlbnRhdGlvblRpbWVTdGFtcCA9IHN0YXJ0VGlt
ZTsKLSAgICB9Ci0gICAgCi0gICAgQ01TYW1wbGVCdWZmZXJSZWYgbmV3QnVmZmVyID0gbnVsbHB0
cjsKLSAgICBhdXRvIGVycm9yID0gQ01TYW1wbGVCdWZmZXJDcmVhdGVDb3B5V2l0aE5ld1RpbWlu
ZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBvcmlnaW5hbEJ1ZmZlciwgY291bnQsIHRpbWVJbmZvLmRh
dGEoKSwgJm5ld0J1ZmZlcik7Ci0gICAgaWYgKGVycm9yKQotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICByZXR1cm4gYWRvcHRDRihuZXdCdWZmZXIpOwotfQotCi12b2lkIE1lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyOjphcHBlbmRWaWRlb1NhbXBsZUJ1ZmZlcihDTVNhbXBsZUJ1ZmZlclJl
ZiBzYW1wbGVCdWZmZXIpCi17Ci0gICAgQVNTRVJUKG1fdmlkZW9JbnB1dCk7Ci0gICAgaWYgKG1f
aXNTdG9wcGVkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIW1faGFzU3RhcnRlZFdyaXRp
bmcpIHsKLSAgICAgICAgaWYgKCFbbV93cml0ZXIgc3RhcnRXcml0aW5nXSkgewotICAgICAgICAg
ICAgbV9pc1N0b3BwZWQgPSB0cnVlOwotICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVk
aWFTdHJlYW0sICJjcmVhdGUgQVZBc3NldFdyaXRlciBpbnN0YW5jZSBmYWlsZWQgd2l0aCBlcnJv
ciBjb2RlICVsZCIsIChsb25nKVttX3dyaXRlciBlcnJvcl0pOwotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9Ci0gICAgICAgIFttX3dyaXRlciBzdGFydFNlc3Npb25BdFNvdXJjZVRpbWU6
Q01DbG9ja0dldFRpbWUoQ01DbG9ja0dldEhvc3RUaW1lQ2xvY2soKSldOwotICAgICAgICBtX2hh
c1N0YXJ0ZWRXcml0aW5nID0gdHJ1ZTsKLSAgICAgICAgUmVmUHRyPE1lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyPiBwcm90ZWN0ZWRUaGlzID0gdGhpczsKLSAgICAgICAgW21fdmlkZW9JbnB1dCBy
ZXF1ZXN0TWVkaWFEYXRhV2hlblJlYWR5T25RdWV1ZTptX3ZpZGVvUHVsbFF1ZXVlIHVzaW5nQmxv
Y2s6W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpXSB7Ci0gICAg
ICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgaWYgKCFbbV92aWRlb0lucHV0IGlzUmVhZHlG
b3JNb3JlTWVkaWFEYXRhXSkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3ZpZGVvTG9jayk7Ci0gICAgICAgICAgICAg
ICAgaWYgKG1fdmlkZW9CdWZmZXJQb29sLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICAgICAgYXV0byBidWZmZXIgPSBtX3ZpZGVvQnVmZmVyUG9vbC50
YWtlRmlyc3QoKTsKLSAgICAgICAgICAgICAgICBsb2NrZXIudW5sb2NrRWFybHkoKTsKLSAgICAg
ICAgICAgICAgICBpZiAoIVttX3ZpZGVvSW5wdXQgYXBwZW5kU2FtcGxlQnVmZmVyOmJ1ZmZlci5n
ZXQoKV0pCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfSB3aGlsZSAo
dHJ1ZSk7Ci0gICAgICAgICAgICBpZiAobV9pc1N0b3BwZWQgJiYgbV92aWRlb0J1ZmZlclBvb2wu
aXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgW21fdmlkZW9JbnB1dCBtYXJrQXNGaW5pc2hl
ZF07Ci0gICAgICAgICAgICAgICAgbV9maW5pc2hXcml0aW5nVmlkZW9TZW1hcGhvcmUuc2lnbmFs
KCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH1dOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
ICAgIGF1dG8gYnVmZmVyV2l0aEN1cnJlbnRUaW1lID0gY29weVNhbXBsZUJ1ZmZlcldpdGhDdXJy
ZW50VGltZVN0YW1wKHNhbXBsZUJ1ZmZlcik7Ci0gICAgaWYgKCFidWZmZXJXaXRoQ3VycmVudFRp
bWUpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV92aWRl
b0xvY2spOwotICAgIG1fdmlkZW9CdWZmZXJQb29sLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcldpdGhD
dXJyZW50VGltZSkpOwotfQotCi1zdGF0aWMgaW5saW5lIFJldGFpblB0cjxDTUZvcm1hdERlc2Ny
aXB0aW9uUmVmPiBjcmVhdGVBdWRpb0Zvcm1hdERlc2NyaXB0aW9uKGNvbnN0IEF1ZGlvU3RyZWFt
RGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uKQotewotICAgIGF1dG8gYmFzaWNEZXNjcmlwdGlvbiA9
IFdURjo6Z2V0PGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbio+KGRlc2NyaXB0aW9u
LnBsYXRmb3JtRGVzY3JpcHRpb24oKS5kZXNjcmlwdGlvbik7Ci0gICAgQ01Gb3JtYXREZXNjcmlw
dGlvblJlZiBmb3JtYXQgPSBudWxscHRyOwotICAgIGF1dG8gZXJyb3IgPSBDTUF1ZGlvRm9ybWF0
RGVzY3JpcHRpb25DcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYmFzaWNEZXNjcmlwdGlvbiwg
MCwgTlVMTCwgMCwgTlVMTCwgTlVMTCwgJmZvcm1hdCk7Ci0gICAgaWYgKGVycm9yKQotICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gYWRvcHRDRihmb3JtYXQpOwotfQotCi1zdGF0
aWMgaW5saW5lIFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4gY3JlYXRlQXVkaW9TYW1wbGVC
dWZmZXJXaXRoUGFja2V0RGVzY3JpcHRpb25zKENNRm9ybWF0RGVzY3JpcHRpb25SZWYgZm9ybWF0
LCBzaXplX3Qgc2FtcGxlQ291bnQpCi17Ci0gICAgQ01UaW1lIHN0YXJ0VGltZSA9IENNQ2xvY2tH
ZXRUaW1lKENNQ2xvY2tHZXRIb3N0VGltZUNsb2NrKCkpOwotICAgIENNU2FtcGxlQnVmZmVyUmVm
IHNhbXBsZUJ1ZmZlciA9IG51bGxwdHI7Ci0gICAgYXV0byBlcnJvciA9IENNQXVkaW9TYW1wbGVC
dWZmZXJDcmVhdGVXaXRoUGFja2V0RGVzY3JpcHRpb25zKGtDRkFsbG9jYXRvckRlZmF1bHQsIE5V
TEwsIGZhbHNlLCBOVUxMLCBOVUxMLCBmb3JtYXQsIHNhbXBsZUNvdW50LCBzdGFydFRpbWUsIE5V
TEwsICZzYW1wbGVCdWZmZXIpOwotICAgIGlmIChlcnJvcikKLSAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0gICAgcmV0dXJuIGFkb3B0Q0Yoc2FtcGxlQnVmZmVyKTsKLX0KLQotdm9pZCBNZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kQXVkaW9TYW1wbGVCdWZmZXIoY29uc3QgUGxhdGZv
cm1BdWRpb0RhdGEmIGRhdGEsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0
aW9uLCBjb25zdCBXVEY6Ok1lZGlhVGltZSYsIHNpemVfdCBzYW1wbGVDb3VudCkKLXsKLSAgICBB
U1NFUlQobV9hdWRpb0lucHV0KTsKLSAgICBpZiAoKCFtX2hhc1N0YXJ0ZWRXcml0aW5nICYmIG1f
dmlkZW9JbnB1dCkgfHwgbV9pc1N0b3BwZWQpCi0gICAgICAgIHJldHVybjsKLSAgICBhdXRvIGZv
cm1hdCA9IGNyZWF0ZUF1ZGlvRm9ybWF0RGVzY3JpcHRpb24oZGVzY3JpcHRpb24pOwotICAgIGlm
ICghZm9ybWF0KQotICAgICAgICByZXR1cm47Ci0gICAgaWYgKG1faXNGaXJzdEF1ZGlvU2FtcGxl
KSB7Ci0gICAgICAgIGlmICghbV92aWRlb0lucHV0KSB7Ci0gICAgICAgICAgICAvLyBhdWRpby1v
bmx5IHJlY29yZGluZy4KLSAgICAgICAgICAgIGlmICghW21fd3JpdGVyIHN0YXJ0V3JpdGluZ10p
IHsKLSAgICAgICAgICAgICAgICBtX2lzU3RvcHBlZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgW21fd3JpdGVyIHN0YXJ0U2Vzc2lv
bkF0U291cmNlVGltZTpDTUNsb2NrR2V0VGltZShDTUNsb2NrR2V0SG9zdFRpbWVDbG9jaygpKV07
Ci0gICAgICAgICAgICBtX2hhc1N0YXJ0ZWRXcml0aW5nID0gdHJ1ZTsKLSAgICAgICAgfQotICAg
ICAgICBtX2lzRmlyc3RBdWRpb1NhbXBsZSA9IGZhbHNlOwotICAgICAgICBSZWZQdHI8TWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXI+IHByb3RlY3RlZFRoaXMgPSB0aGlzOwotICAgICAgICBbbV9h
dWRpb0lucHV0IHJlcXVlc3RNZWRpYURhdGFXaGVuUmVhZHlPblF1ZXVlOm1fYXVkaW9QdWxsUXVl
dWUgdXNpbmdCbG9jazpbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhp
cyldIHsKLSAgICAgICAgICAgIGRvIHsKLSAgICAgICAgICAgICAgICBpZiAoIVttX2F1ZGlvSW5w
dXQgaXNSZWFkeUZvck1vcmVNZWRpYURhdGFdKQotICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fYXVkaW9Mb2NrKTsKLSAg
ICAgICAgICAgICAgICBpZiAobV9hdWRpb0J1ZmZlclBvb2wuaXNFbXB0eSgpKQotICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IG1fYXVkaW9C
dWZmZXJQb29sLnRha2VGaXJzdCgpOwotICAgICAgICAgICAgICAgIGxvY2tlci51bmxvY2tFYXJs
eSgpOwotICAgICAgICAgICAgICAgIFttX2F1ZGlvSW5wdXQgYXBwZW5kU2FtcGxlQnVmZmVyOmJ1
ZmZlci5nZXQoKV07Ci0gICAgICAgICAgICB9IHdoaWxlICh0cnVlKTsKLSAgICAgICAgICAgIGlm
IChtX2lzU3RvcHBlZCAmJiBtX2F1ZGlvQnVmZmVyUG9vbC5pc0VtcHR5KCkpIHsKLSAgICAgICAg
ICAgICAgICBbbV9hdWRpb0lucHV0IG1hcmtBc0ZpbmlzaGVkXTsKLSAgICAgICAgICAgICAgICBt
X2ZpbmlzaFdyaXRpbmdBdWRpb1NlbWFwaG9yZS5zaWduYWwoKTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfV07Ci0gICAgfQotCi0gICAgYXV0byBzYW1wbGVCdWZmZXIgPSBjcmVhdGVBdWRpb1Nh
bXBsZUJ1ZmZlcldpdGhQYWNrZXREZXNjcmlwdGlvbnMoZm9ybWF0LmdldCgpLCBzYW1wbGVDb3Vu
dCk7Ci0gICAgaWYgKCFzYW1wbGVCdWZmZXIpCi0gICAgICAgIHJldHVybjsKLSAgICBhdXRvIGVy
cm9yID0gQ01TYW1wbGVCdWZmZXJTZXREYXRhQnVmZmVyRnJvbUF1ZGlvQnVmZmVyTGlzdChzYW1w
bGVCdWZmZXIuZ2V0KCksIGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRkFsbG9jYXRvckRlZmF1bHQs
IDAsIGRvd25jYXN0PFdlYkF1ZGlvQnVmZmVyTGlzdD4oZGF0YSkubGlzdCgpKTsKLSAgICBpZiAo
ZXJyb3IpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9h
dWRpb0xvY2spOwotICAgIG1fYXVkaW9CdWZmZXJQb29sLmFwcGVuZChXVEZNb3ZlKHNhbXBsZUJ1
ZmZlcikpOwotfQotCi12b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpzdG9wUmVjb3Jk
aW5nKCkKLXsKLSAgICBpZiAobV9pc1N0b3BwZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1f
aXNTdG9wcGVkID0gdHJ1ZTsKLSAgICBpZiAoIW1faGFzU3RhcnRlZFdyaXRpbmcpCi0gICAgICAg
IHJldHVybjsKLSAgICBBU1NFUlQoW21fd3JpdGVyIHN0YXR1c10gPT0gQVZBc3NldFdyaXRlclN0
YXR1c1dyaXRpbmcpOwotICAgIGlmIChtX3ZpZGVvSW5wdXQpCi0gICAgICAgIG1fZmluaXNoV3Jp
dGluZ1ZpZGVvU2VtYXBob3JlLndhaXQoKTsKLQotICAgIGlmIChtX2F1ZGlvSW5wdXQpCi0gICAg
ICAgIG1fZmluaXNoV3JpdGluZ0F1ZGlvU2VtYXBob3JlLndhaXQoKTsKLQotICAgIG1faXNTdG9w
cGluZyA9IHRydWU7Ci0gICAgW21fd3JpdGVyIGZpbmlzaFdyaXRpbmdXaXRoQ29tcGxldGlvbkhh
bmRsZXI6W3RoaXMsIHdlYWtQdHIgPSBtYWtlV2Vha1B0cigqdGhpcyldKCkgbXV0YWJsZSB7Ci0g
ICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtQdHIgPSBXVEZNb3ZlKHdlYWtQdHIp
LCBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3BhdGgp
XSgpIG11dGFibGUgewotICAgICAgICAgICAgaWYgKCF3ZWFrUHRyKQotICAgICAgICAgICAgICAg
IHJldHVybjsKLQotICAgICAgICAgICAgbV9pc1N0b3BwaW5nID0gZmFsc2U7Ci0gICAgICAgICAg
ICBpZiAobV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcikKLSAgICAgICAgICAgICAgICBtX2Zl
dGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoYnVmZmVyKSk7Ci0gICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgbV9kYXRhID0gV1RGTW92ZShidWZmZXIpOwotCi0gICAgICAg
ICAgICBtX2lzU3RvcHBlZCA9IGZhbHNlOwotICAgICAgICAgICAgbV9oYXNTdGFydGVkV3JpdGlu
ZyA9IGZhbHNlOwotICAgICAgICAgICAgbV9pc0ZpcnN0QXVkaW9TYW1wbGUgPSB0cnVlOwotICAg
ICAgICAgICAgY2xlYXIoKTsKLSAgICAgICAgfSk7Ci0gICAgICAgIG1fZmluaXNoV3JpdGluZ1Nl
bWFwaG9yZS5zaWduYWwoKTsKLSAgICB9XTsKLSAgICBtX2ZpbmlzaFdyaXRpbmdTZW1hcGhvcmUu
d2FpdCgpOwotfQotCi12b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpmZXRjaERhdGEo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKLXsKLSAgICBpZiAobV9pc1N0b3BwaW5nKSB7Ci0gICAgICAgIG1fZmV0Y2hE
YXRhQ29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIGF1dG8gYnVmZmVyID0gV1RGTW92ZShtX2RhdGEpOwot
ICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoYnVmZmVyKSk7Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShBVkZP
VU5EQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29y
ZGVyL2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Iu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzc1ZDI5NjNlZjQ0NTFmZWY5ZDc2NDBm
ZWMwZjA3MzJkMjM5MWQ5OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVv
U2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTgotICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCi0g
KiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYm
IFVTRShBVkZPVU5EQVRJT04pCi0KLSNpbmNsdWRlIDxDb3JlTWVkaWEvQ29yZU1lZGlhLmg+Ci0j
aW5jbHVkZSA8VmlkZW9Ub29sQm94L1ZURXJyb3JzLmg+Ci0KLXR5cGVkZWYgc3RydWN0IG9wYXF1
ZUNNU2FtcGxlQnVmZmVyICpDTVNhbXBsZUJ1ZmZlclJlZjsKLXR5cGVkZWYgc3RydWN0IE9wYXF1
ZVZUQ29tcHJlc3Npb25TZXNzaW9uKiAgVlRDb21wcmVzc2lvblNlc3Npb25SZWY7Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIHsKLSAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcj4gY3JlYXRlKENNVmlkZW9Db2RlY1R5
cGUsIENNQnVmZmVyUXVldWVUcmlnZ2VyQ2FsbGJhY2ssIHZvaWQqIGNhbGxiYWNrT2JqZWN0KTsK
LSAgICB+VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKCk7Ci0KLSAgICB2b2lkIGZpbmlzaCgp
OwotICAgIHZvaWQgYWRkU2FtcGxlQnVmZmVyKENNU2FtcGxlQnVmZmVyUmVmKTsKLSAgICBDTVNh
bXBsZUJ1ZmZlclJlZiBnZXRPdXRwdXRTYW1wbGVCdWZmZXIoKTsKLSAgICBSZXRhaW5QdHI8Q01T
YW1wbGVCdWZmZXJSZWY+IHRha2VPdXRwdXRTYW1wbGVCdWZmZXIoKTsKLQotcHJpdmF0ZToKLSAg
ICBleHBsaWNpdCBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IoQ01WaWRlb0NvZGVjVHlwZSk7
Ci0KLSAgICBib29sIGluaXRpYWxpemUoQ01CdWZmZXJRdWV1ZVRyaWdnZXJDYWxsYmFjaywgdm9p
ZCogY2FsbGJhY2tPYmplY3QpOwotCi0gICAgdm9pZCBwcm9jZXNzU2FtcGxlQnVmZmVyKENNU2Ft
cGxlQnVmZmVyUmVmKTsKLSAgICBib29sIGluaXRDb21wcmVzc2lvblNlc3Npb24oQ01WaWRlb0Zv
cm1hdERlc2NyaXB0aW9uUmVmKTsKLQotICAgIHN0YXRpYyB2b2lkIHZpZGVvQ29tcHJlc3Npb25D
YWxsYmFjayh2b2lkICpyZWZDb24sIHZvaWQqLCBPU1N0YXR1cywgVlRFbmNvZGVJbmZvRmxhZ3Ms
IENNU2FtcGxlQnVmZmVyUmVmKTsKLQotICAgIGRpc3BhdGNoX3F1ZXVlX3QgbV9zZXJpYWxEaXNw
YXRjaFF1ZXVlOwotICAgIFJldGFpblB0cjxDTUJ1ZmZlclF1ZXVlUmVmPiBtX291dHB1dEJ1ZmZl
clF1ZXVlOwotICAgIFJldGFpblB0cjxWVENvbXByZXNzaW9uU2Vzc2lvblJlZj4gbV92dFNlc3Np
b247Ci0KLSAgICBib29sIG1faXNFbmNvZGluZyB7IGZhbHNlIH07Ci0KLSAgICBDTVZpZGVvQ29k
ZWNUeXBlIG1fb3V0cHV0Q29kZWNUeXBlOwotICAgIGZsb2F0IG1fbWF4S2V5RnJhbWVJbnRlcnZh
bER1cmF0aW9uIHsgMi4wIH07Ci0gICAgdW5zaWduZWQgbV9leHBlY3RlZEZyYW1lUmF0ZSB7IDMw
IH07Ci19OwotCi19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVvU2FtcGxlQnVm
ZmVyQ29tcHJlc3Nvci5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjA4ZmU0MzI5
NWVmNTJhNjc5MGZmMWRlY2FjYTZmMzBkOWJiYmFmYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29y
ZGVyL2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbQorKysgL2Rldi9udWxsCkBA
IC0xLDE2NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMKLSAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9y
dCAiVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmgiCi0KLSNpZiBFTkFCTEUoTUVESUFfU1RS
RUFNKSAmJiBVU0UoQVZGT1VOREFUSU9OKQotCi0jaW1wb3J0ICJMb2dnaW5nLmgiCi0jaW1wb3J0
IDxDb3JlTWVkaWEvQ29yZU1lZGlhLmg+Ci0jaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24u
aD4KLSNpbXBvcnQgPFZpZGVvVG9vbGJveC9WVENvbXByZXNzaW9uU2Vzc2lvbi5oPgotI2ltcG9y
dCA8d3RmL1NvZnRMaW5raW5nLmg+Ci0KLSNpbXBvcnQgPHBhbC9jZi9WaWRlb1Rvb2xib3hTb2Z0
TGluay5oPgotCi11c2luZyBuYW1lc3BhY2UgUEFMOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LXN0ZDo6dW5pcXVlX3B0cjxWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I+IFZpZGVvU2FtcGxl
QnVmZmVyQ29tcHJlc3Nvcjo6Y3JlYXRlKENNVmlkZW9Db2RlY1R5cGUgb3V0cHV0Q29kZWNUeXBl
LCBDTUJ1ZmZlclF1ZXVlVHJpZ2dlckNhbGxiYWNrIGNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja09i
amVjdCkKLXsKLSAgICBhdXRvIGNvbXByZXNzb3IgPSBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9TYW1w
bGVCdWZmZXJDb21wcmVzc29yPihuZXcgVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKG91dHB1
dENvZGVjVHlwZSkpOwotICAgIGlmICghY29tcHJlc3Nvci0+aW5pdGlhbGl6ZShjYWxsYmFjaywg
Y2FsbGJhY2tPYmplY3QpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gY29t
cHJlc3NvcjsKLX0KLQotVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpWaWRlb1NhbXBsZUJ1
ZmZlckNvbXByZXNzb3IoQ01WaWRlb0NvZGVjVHlwZSBvdXRwdXRDb2RlY1R5cGUpCi0gICAgOiBt
X3NlcmlhbERpc3BhdGNoUXVldWUgeyBkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoImNvbS5hcHBsZS5W
aWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IiLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpIH0KLSAg
ICAsIG1fb3V0cHV0Q29kZWNUeXBlIHsgb3V0cHV0Q29kZWNUeXBlIH0KLXsKLX0KLQotVmlkZW9T
YW1wbGVCdWZmZXJDb21wcmVzc29yOjp+VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKCkKLXsK
LSAgICBpZiAobV9zZXJpYWxEaXNwYXRjaFF1ZXVlKQotICAgICAgICBkaXNwYXRjaF9yZWxlYXNl
KG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZSk7Ci19Ci0KLWJvb2wgVmlkZW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yOjppbml0aWFsaXplKENNQnVmZmVyUXVldWVUcmlnZ2VyQ2FsbGJhY2sgY2FsbGJhY2ss
IHZvaWQqIGNhbGxiYWNrT2JqZWN0KQotewotICAgIENNQnVmZmVyUXVldWVSZWYgb3V0cHV0QnVm
ZmVyUXVldWU7Ci0gICAgaWYgKGF1dG8gZXJyb3IgPSBDTUJ1ZmZlclF1ZXVlQ3JlYXRlKGtDRkFs
bG9jYXRvckRlZmF1bHQsIDAsIENNQnVmZmVyUXVldWVHZXRDYWxsYmFja3NGb3JVbnNvcnRlZFNh
bXBsZUJ1ZmZlcnMoKSwgJm91dHB1dEJ1ZmZlclF1ZXVlKSkgewotICAgICAgICBSRUxFQVNFX0xP
R19FUlJPUihNZWRpYVN0cmVhbSwgIlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciB1bmFibGUg
dG8gY3JlYXRlIGJ1ZmZlciBxdWV1ZSAlZCIsIGVycm9yKTsKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIH0KLSAgICBtX291dHB1dEJ1ZmZlclF1ZXVlID0gb3V0cHV0QnVmZmVyUXVldWU7Ci0g
ICAgQ01CdWZmZXJRdWV1ZUluc3RhbGxUcmlnZ2VyKG1fb3V0cHV0QnVmZmVyUXVldWUuZ2V0KCks
IGNhbGxiYWNrLCBjYWxsYmFja09iamVjdCwga0NNQnVmZmVyUXVldWVUcmlnZ2VyX1doZW5EYXRh
QmVjb21lc1JlYWR5LCBrQ01UaW1lWmVybywgTlVMTCk7Ci0KLSAgICBtX2lzRW5jb2RpbmcgPSB0
cnVlOwotICAgIHJldHVybiB0cnVlOwotfQotCi12b2lkIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvcjo6ZmluaXNoKCkKLXsKLSAgICBkaXNwYXRjaF9zeW5jKG1fc2VyaWFsRGlzcGF0Y2hRdWV1
ZSwgXnsKLSAgICAgICAgYXV0byBlcnJvciA9IFZUQ29tcHJlc3Npb25TZXNzaW9uQ29tcGxldGVG
cmFtZXMobV92dFNlc3Npb24uZ2V0KCksIGtDTVRpbWVJbnZhbGlkKTsKLSAgICAgICAgUkVMRUFT
RV9MT0dfRVJST1JfSUYoZXJyb3IsIE1lZGlhU3RyZWFtLCAiVmlkZW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yIFZUQ29tcHJlc3Npb25TZXNzaW9uQ29tcGxldGVGcmFtZXMgZmFpbGVkIHdpdGggJWQi
LCBlcnJvcik7Ci0KLSAgICAgICAgZXJyb3IgPSBDTUJ1ZmZlclF1ZXVlTWFya0VuZE9mRGF0YSht
X291dHB1dEJ1ZmZlclF1ZXVlLmdldCgpKTsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUYo
ZXJyb3IsIE1lZGlhU3RyZWFtLCAiVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIENNQnVmZmVy
UXVldWVNYXJrRW5kT2ZEYXRhIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOwotCi0gICAgICAgIG1f
aXNFbmNvZGluZyA9IGZhbHNlOwotICAgIH0pOwotfQotCi12b2lkIFZpZGVvU2FtcGxlQnVmZmVy
Q29tcHJlc3Nvcjo6dmlkZW9Db21wcmVzc2lvbkNhbGxiYWNrKHZvaWQgKnJlZkNvbiwgdm9pZCos
IE9TU3RhdHVzIHN0YXR1cywgVlRFbmNvZGVJbmZvRmxhZ3MsIENNU2FtcGxlQnVmZmVyUmVmIGJ1
ZmZlcikKLXsKLSAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihzdGF0dXMsIE1lZGlhU3RyZWFtLCAi
VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIHZpZGVvQ29tcHJlc3Npb25DYWxsYmFjayBzdGF0
dXMgaXMgJWQiLCBzdGF0dXMpOwotICAgIGlmIChzdGF0dXMgIT0gbm9FcnIpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciAqY29tcHJlc3NvciA9IHN0
YXRpY19jYXN0PFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcio+KHJlZkNvbik7Ci0KLSAgICBh
dXRvIGVycm9yID0gQ01CdWZmZXJRdWV1ZUVucXVldWUoY29tcHJlc3Nvci0+bV9vdXRwdXRCdWZm
ZXJRdWV1ZS5nZXQoKSwgYnVmZmVyKTsKLSAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihlcnJvciwg
TWVkaWFTdHJlYW0sICJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01CdWZmZXJRdWV1ZUVu
cXVldWUgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7Ci19Ci0KLWJvb2wgVmlkZW9TYW1wbGVCdWZm
ZXJDb21wcmVzc29yOjppbml0Q29tcHJlc3Npb25TZXNzaW9uKENNVmlkZW9Gb3JtYXREZXNjcmlw
dGlvblJlZiBmb3JtYXREZXNjcmlwdGlvbikKLXsKLSAgICBDTVZpZGVvRGltZW5zaW9ucyBkaW1l
bnNpb25zID0gQ01WaWRlb0Zvcm1hdERlc2NyaXB0aW9uR2V0RGltZW5zaW9ucyhmb3JtYXREZXNj
cmlwdGlvbik7Ci0jaWYgUExBVEZPUk0oSU9TKQotICAgIE5TRGljdGlvbmFyeSAqZW5jb2RlclNw
ZWNpZmljYXRpb25zID0gbmlsOwotI2Vsc2UKLSAgICBOU0RpY3Rpb25hcnkgKmVuY29kZXJTcGVj
aWZpY2F0aW9ucyA9IEB7KF9fYnJpZGdlIE5TU3RyaW5nICopa1ZUVmlkZW9FbmNvZGVyU3BlY2lm
aWNhdGlvbl9FbmFibGVIYXJkd2FyZUFjY2VsZXJhdGVkVmlkZW9FbmNvZGVyOkBZRVN9OwotI2Vu
ZGlmCi0KLSAgICBWVENvbXByZXNzaW9uU2Vzc2lvblJlZiB2dFNlc3Npb247Ci0gICAgYXV0byBl
cnJvciA9IFZUQ29tcHJlc3Npb25TZXNzaW9uQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGRp
bWVuc2lvbnMud2lkdGgsIGRpbWVuc2lvbnMuaGVpZ2h0LCBtX291dHB1dENvZGVjVHlwZSwgKF9f
YnJpZGdlIENGRGljdGlvbmFyeVJlZillbmNvZGVyU3BlY2lmaWNhdGlvbnMsIE5VTEwsIE5VTEws
IHZpZGVvQ29tcHJlc3Npb25DYWxsYmFjaywgdGhpcywgJnZ0U2Vzc2lvbik7Ci0gICAgaWYgKGVy
cm9yKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiVmlkZW9TYW1w
bGVCdWZmZXJDb21wcmVzc29yIFZUQ29tcHJlc3Npb25TZXNzaW9uQ3JlYXRlIGZhaWxlZCB3aXRo
ICVkIiwgZXJyb3IpOwotICAgICAgICByZXR1cm4gTk87Ci0gICAgfQotICAgIG1fdnRTZXNzaW9u
ID0gYWRvcHRDRih2dFNlc3Npb24pOwotCi0gICAgZXJyb3IgPSBWVFNlc3Npb25TZXRQcm9wZXJ0
eShtX3Z0U2Vzc2lvbi5nZXQoKSwga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtleV9SZWFsVGltZSwg
a0NGQm9vbGVhblRydWUpOwotICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGKGVycm9yLCBNZWRpYVN0
cmVhbSwgIlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBWVFNlc3Npb25TZXRQcm9wZXJ0eSBr
VlRDb21wcmVzc2lvblByb3BlcnR5S2V5X1JlYWxUaW1lIGZhaWxlZCB3aXRoICVkIiwgZXJyb3Ip
OwotICAgIGVycm9yID0gVlRTZXNzaW9uU2V0UHJvcGVydHkobV92dFNlc3Npb24uZ2V0KCksIGtW
VENvbXByZXNzaW9uUHJvcGVydHlLZXlfTWF4S2V5RnJhbWVJbnRlcnZhbER1cmF0aW9uLCAoX19i
cmlkZ2UgQ0ZUeXBlUmVmKUAobV9tYXhLZXlGcmFtZUludGVydmFsRHVyYXRpb24pKTsKLSAgICBS
RUxFQVNFX0xPR19FUlJPUl9JRihlcnJvciwgTWVkaWFTdHJlYW0sICJWaWRlb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3IgVlRTZXNzaW9uU2V0UHJvcGVydHkga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtl
eV9NYXhLZXlGcmFtZUludGVydmFsRHVyYXRpb24gZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7Ci0g
ICAgZXJyb3IgPSBWVFNlc3Npb25TZXRQcm9wZXJ0eShtX3Z0U2Vzc2lvbi5nZXQoKSwga1ZUQ29t
cHJlc3Npb25Qcm9wZXJ0eUtleV9FeHBlY3RlZEZyYW1lUmF0ZSwgKF9fYnJpZGdlIENGVHlwZVJl
ZilAKG1fZXhwZWN0ZWRGcmFtZVJhdGUpKTsKLSAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihlcnJv
ciwgTWVkaWFTdHJlYW0sICJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgVlRTZXNzaW9uU2V0
UHJvcGVydHkga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtleV9FeHBlY3RlZEZyYW1lUmF0ZSBmYWls
ZWQgd2l0aCAlZCIsIGVycm9yKTsKLQotICAgIC8vIEZJWE1FOiBTZXQgdmlkZW8gY29tcHJlc3Np
b24gcmF0ZS4KLSAgICBlcnJvciA9IFZUQ29tcHJlc3Npb25TZXNzaW9uUHJlcGFyZVRvRW5jb2Rl
RnJhbWVzKG1fdnRTZXNzaW9uLmdldCgpKTsKLSAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihlcnJv
ciwgTWVkaWFTdHJlYW0sICJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgVlRDb21wcmVzc2lv
blNlc3Npb25QcmVwYXJlVG9FbmNvZGVGcmFtZXMgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7Ci0K
LSAgICByZXR1cm4gWUVTOwotfQotCi12b2lkIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6
cHJvY2Vzc1NhbXBsZUJ1ZmZlcihDTVNhbXBsZUJ1ZmZlclJlZiBidWZmZXIpCi17Ci0gICAgaWYg
KCFtX3Z0U2Vzc2lvbikgewotICAgICAgICBpZiAoIWluaXRDb21wcmVzc2lvblNlc3Npb24oQ01T
YW1wbGVCdWZmZXJHZXRGb3JtYXREZXNjcmlwdGlvbihidWZmZXIpKSkKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBhdXRvIGltYWdlQnVmZmVyID0gQ01TYW1wbGVCdWZmZXJHZXRJ
bWFnZUJ1ZmZlcihidWZmZXIpOwotICAgIGF1dG8gcHJlc2VudGF0aW9uVGltZVN0YW1wID0gQ01T
YW1wbGVCdWZmZXJHZXRQcmVzZW50YXRpb25UaW1lU3RhbXAoYnVmZmVyKTsKLSAgICBhdXRvIGR1
cmF0aW9uID0gQ01TYW1wbGVCdWZmZXJHZXREdXJhdGlvbihidWZmZXIpOwotICAgIGF1dG8gZXJy
b3IgPSBWVENvbXByZXNzaW9uU2Vzc2lvbkVuY29kZUZyYW1lKG1fdnRTZXNzaW9uLmdldCgpLCBp
bWFnZUJ1ZmZlciwgcHJlc2VudGF0aW9uVGltZVN0YW1wLCBkdXJhdGlvbiwgTlVMTCwgdGhpcywg
TlVMTCk7Ci0gICAgUkVMRUFTRV9MT0dfRVJST1JfSUYoZXJyb3IsIE1lZGlhU3RyZWFtLCAiVmlk
ZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIFZUQ29tcHJlc3Npb25TZXNzaW9uRW5jb2RlRnJhbWUg
ZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7Ci19Ci0KLXZvaWQgVmlkZW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yOjphZGRTYW1wbGVCdWZmZXIoQ01TYW1wbGVCdWZmZXJSZWYgYnVmZmVyKQotewotICAg
IGRpc3BhdGNoX3N5bmMobV9zZXJpYWxEaXNwYXRjaFF1ZXVlLCBeewotICAgICAgICBpZiAoIW1f
aXNFbmNvZGluZykKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBwcm9jZXNzU2FtcGxl
QnVmZmVyKGJ1ZmZlcik7Ci0gICAgfSk7Ci19Ci0KLUNNU2FtcGxlQnVmZmVyUmVmIFZpZGVvU2Ft
cGxlQnVmZmVyQ29tcHJlc3Nvcjo6Z2V0T3V0cHV0U2FtcGxlQnVmZmVyKCkKLXsKLSAgICByZXR1
cm4gKENNU2FtcGxlQnVmZmVyUmVmKShjb25zdF9jYXN0PHZvaWQqPihDTUJ1ZmZlclF1ZXVlR2V0
SGVhZChtX291dHB1dEJ1ZmZlclF1ZXVlLmdldCgpKSkpOwotfQotCi1SZXRhaW5QdHI8Q01TYW1w
bGVCdWZmZXJSZWY+IFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6dGFrZU91dHB1dFNhbXBs
ZUJ1ZmZlcigpCi17Ci0gICAgcmV0dXJuIGFkb3B0Q0YoKENNU2FtcGxlQnVmZmVyUmVmKShjb25z
dF9jYXN0PHZvaWQqPihDTUJ1ZmZlclF1ZXVlRGVxdWV1ZUFuZFJldGFpbihtX291dHB1dEJ1ZmZl
clF1ZXVlLmdldCgpKSkpKTsKLX0KLQotfQotI2VuZGlmCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZmQ0MDNkMTI3NzYzYWE1
YzRhYjlkNjk3NWE2MGYxYTg5N2JkMjViMi4uYTk3YzhhYWQyNWE1YjE2ZmVlOGE4M2QzNTcxMWJh
NWQzODljZmNkOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIwLTAxLTI5ICBDb21taXQgUXVl
dWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KKworICAgICAgICBVbnJldmlld2VkLCByb2xs
aW5nIG91dCByMjU1MzQ1LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjA2OTMzCisKKyAgICAgICAgIkl0IGJyZWFrcyBzb21lIGludGVybmFscyBidWls
ZHMiIChSZXF1ZXN0ZWQgYnkgeW91ZW5uIG9uCisgICAgICAgICN3ZWJraXQpLgorCisgICAgICAg
IFJldmVydGVkIGNoYW5nZXNldDoKKworICAgICAgICAiW0NvY29hXSBVc2UgQVZBc3NldFdyaXRl
ckRlbGVnYXRlIHRvIGltcGxlbWVudCBNZWRpYVJlY29yZGVyIgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2NTgyCisgICAgICAgIGh0dHBzOi8vdHJh
Yy53ZWJraXQub3JnL2NoYW5nZXNldC8yNTUzNDUKKwogMjAyMC0wMS0yOSAgQ2FybG9zIEFsYmVy
dG8gTG9wZXogUGVyZXogIDxjbG9wZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBbQ1NTIEZvbnRz
XSBJbXBvcnQgY3NzLWZvbnRzIFdQVCB0ZXN0cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC93cHQvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLUFWLWF1ZGlvLXZpZGVvLWRhdGFhdmFp
bGFibGUtZ3B1cHJvY2Vzcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvbWVkaWFyZWNvcmRl
ci9NZWRpYVJlY29yZGVyLUFWLWF1ZGlvLXZpZGVvLWRhdGFhdmFpbGFibGUtZ3B1cHJvY2Vzcy5o
dG1sCmluZGV4IDg4MDE0ODY1N2UyNWRkZTMzY2IxMDkzNDZkNmNiZWFhYjdmOWNlZmIuLjMzMzA2
ZGU3OTQ3YmJiOTI1NzM5NGMzYmExOTYyMDFiMDU4NDc4OGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2h0dHAvd3B0L21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci1BVi1hdWRpby12aWRlby1k
YXRhYXZhaWxhYmxlLWdwdXByb2Nlc3MuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9t
ZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXItQVYtYXVkaW8tdmlkZW8tZGF0YWF2YWlsYWJsZS1n
cHVwcm9jZXNzLmh0bWwKQEAgLTU2LDcgKzU2LDE3IEBACiAgICAgfQogCiAgICAgYXN5bmNfdGVz
dCh0ID0+IHsKKyAgICAgICAgY29uc3QgYWMgPSBuZXcgQXVkaW9Db250ZXh0KCk7CisgICAgICAg
IGNvbnN0IG9zYyA9IGFjLmNyZWF0ZU9zY2lsbGF0b3IoKTsKKyAgICAgICAgY29uc3QgZGVzdCA9
IGFjLmNyZWF0ZU1lZGlhU3RyZWFtRGVzdGluYXRpb24oKTsKKyAgICAgICAgY29uc3QgYXVkaW8g
PSBkZXN0LnN0cmVhbTsKKyAgICAgICAgb3NjLmNvbm5lY3QoZGVzdCk7CisKICAgICAgICAgY29u
c3QgdmlkZW8gPSBjcmVhdGVWaWRlb1N0cmVhbSgpOworICAgICAgICBhc3NlcnRfZXF1YWxzKHZp
ZGVvLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoLCAwLCAidmlkZW8gbWVkaWFzdHJlYW0gc3RhcnRz
IHdpdGggbm8gYXVkaW8gdHJhY2siKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhhdWRpby5nZXRB
dWRpb1RyYWNrcygpLmxlbmd0aCwgMSwgImF1ZGlvIG1lZGlhc3RyZWFtIHN0YXJ0cyB3aXRoIG9u
ZSBhdWRpbyB0cmFjayIpOworICAgICAgICB2aWRlby5hZGRUcmFjayhhdWRpby5nZXRBdWRpb1Ry
YWNrcygpWzBdKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyh2aWRlby5nZXRBdWRpb1RyYWNrcygp
Lmxlbmd0aCwgMSwgInZpZGVvIG1lZGlhc3RyZWFtIHN0YXJ0cyB3aXRoIG9uZSBhdWRpbyB0cmFj
ayIpOwogICAgICAgICBjb25zdCByZWNvcmRlciA9IG5ldyBNZWRpYVJlY29yZGVyKHZpZGVvKTsK
ICAgICAgICAgbGV0IG1vZGUgPSAwOwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>