<?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>171347</bug_id>
          
          <creation_ts>2017-04-26 16:02:56 -0700</creation_ts>
          <short_desc>REGRESSION(r215686): This change caused assertion failures in existing LayoutTests (Requested by mlewis13 on #webkit).</short_desc>
          <delta_ts>2017-04-26 17:15:46 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>171340</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>170956</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>achristensen</cc>
    
    <cc>ap</cc>
    
    <cc>kling</cc>
    
    <cc>ryanhaddad</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1301804</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-04-26 16:02:56 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/215686 broke the build:
This change caused assertion failures in existing LayoutTests (Requested by mlewis13 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>1301806</commentid>
    <comment_count>1</comment_count>
      <attachid>308298</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-04-26 16:03:17 -0700</bug_when>
    <thetext>Created attachment 308298
ROLLOUT of r215686

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>1301808</commentid>
    <comment_count>2</comment_count>
      <attachid>308298</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-04-26 16:04:25 -0700</bug_when>
    <thetext>Comment on attachment 308298
ROLLOUT of r215686

We should fix the assertion failures.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1301811</commentid>
    <comment_count>3</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2017-04-26 16:06:42 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #2)
&gt; Comment on attachment 308298 [details]
&gt; ROLLOUT of r215686
&gt; 
&gt; We should fix the assertion failures.

Alright, we will wait for a fix. Thanks Alex!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1301845</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2017-04-26 16:53:44 -0700</bug_when>
    <thetext>Alex, can you elaborate? Why is it so important to put up with assertions for now? What is the ETA for a fix?

Rolling back is the default answer to regressions, and waiting should be a rare exception.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1301855</commentid>
    <comment_count>5</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-04-26 17:15:46 -0700</bug_when>
    <thetext>Problem fixed in https://bugs.webkit.org/show_bug.cgi?id=171340

*** This bug has been marked as a duplicate of bug 171340 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>308298</attachid>
            <date>2017-04-26 16:03:17 -0700</date>
            <delta_ts>2017-04-26 16:04:25 -0700</delta_ts>
            <desc>ROLLOUT of r215686</desc>
            <filename>bug-171347-20170426190316.patch</filename>
            <type>text/plain</type>
            <size>101852</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE1ODM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
ZTg0YzU2ZDJhMmQ5YWM4Y2Y2NDVkMTUxOWZkMTFhNjIwNTJiOGIwLi4wZmNkZTM2ZmNhOWEyMDY4
N2UxMzQwMDY5MWE1ZTYzNTVmYTUwZGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAxNy0wNC0yNiAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIxNTY4Ni4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MTM0NworCisgICAg
ICAgIFRoaXMgY2hhbmdlIGNhdXNlZCBhc3NlcnRpb24gZmFpbHVyZXMgaW4gZXhpc3RpbmcgTGF5
b3V0VGVzdHMKKyAgICAgICAgKFJlcXVlc3RlZCBieSBtbGV3aXMxMyBvbiAjd2Via2l0KS4KKwor
ICAgICAgICBSZXZlcnRlZCBjaGFuZ2VzZXQ6CisKKyAgICAgICAgIlJlZHVjZSBjb3BpZXMgYW5k
IGFsbG9jYXRpb25zIGluIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kIgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcwOTU2CisgICAgICAgIGh0dHA6Ly90cmFj
LndlYmtpdC5vcmcvY2hhbmdlc2V0LzIxNTY4NgorCiAyMDE3LTA0LTI2ICBDYWl0bGluIFBvdHRl
ciAgPGNhaXRwQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0pTQ10gZml4IFJFVFVSTl9JRl9FWENF
UFRJT04oKSBwbGFjZW1lbnQgaW4gb3duUHJvcGVydHlLZXlzKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5NDIy
MmE1ZjQ4YWZiYzVlZmUzNjViOTZlZjgwODk3NjkzNTZiODhhLi5hOGExNDI3OWE0YzljODQyN2M5
YmFiODlmZGY4NmJmNjQ5ZjRhNTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTct
MDQtMjYgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgorCisgICAgICAg
IFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMTU2ODYuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzEzNDcKKworICAgICAgICBUaGlzIGNoYW5nZSBj
YXVzZWQgYXNzZXJ0aW9uIGZhaWx1cmVzIGluIGV4aXN0aW5nIExheW91dFRlc3RzCisgICAgICAg
IChSZXF1ZXN0ZWQgYnkgbWxld2lzMTMgb24gI3dlYmtpdCkuCisKKyAgICAgICAgUmV2ZXJ0ZWQg
Y2hhbmdlc2V0OgorCisgICAgICAgICJSZWR1Y2UgY29waWVzIGFuZCBhbGxvY2F0aW9ucyBpbiBT
aGFyZWRCdWZmZXI6OmFwcGVuZCIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3MDk1NgorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5n
ZXNldC8yMTU2ODYKKwogMjAxNy0wNC0yNiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5j
b20+CiAKICAgICAgICAgTGF5b3V0VGVzdCB3ZWJydGMvZGF0YWNoYW5uZWwvYmFzaWMuaHRtbCBp
cyBhIGZsYWt5IGNyYXNoCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggNDA1NzdmMzUzZmNjNDUzMDQyODUw
YmZmNjY0OWE5MGRlNTkzYThmNy4uMTVjNDNhNGYzNzY2ZDI2YjI1Y2RiYzNkNTFhNWNjYjM2OTk3
ZmMzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE3LTA0LTI2ICBDb21t
aXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KKworICAgICAgICBVbnJldmlld2Vk
LCByb2xsaW5nIG91dCByMjE1Njg2LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTcxMzQ3CisKKyAgICAgICAgVGhpcyBjaGFuZ2UgY2F1c2VkIGFzc2Vy
dGlvbiBmYWlsdXJlcyBpbiBleGlzdGluZyBMYXlvdXRUZXN0cworICAgICAgICAoUmVxdWVzdGVk
IGJ5IG1sZXdpczEzIG9uICN3ZWJraXQpLgorCisgICAgICAgIFJldmVydGVkIGNoYW5nZXNldDoK
KworICAgICAgICAiUmVkdWNlIGNvcGllcyBhbmQgYWxsb2NhdGlvbnMgaW4gU2hhcmVkQnVmZmVy
OjphcHBlbmQiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzA5NTYKKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjE1Njg2
CisKIDIwMTctMDQtMjYgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSVEw6IHJlY2VudCBzZWFyY2hlcyBwb3BvdmVyIGlzIGRpc3BsYXllZCBpbiBpbmNvcnJlY3Qg
bG9jYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwppbmRleCBhNTE5ZWRiNGVlOTA5M2U1ZjZkYWY2Mzk0Mzk2M2UzNTJk
NjlkNjNkLi4xZmVjNWU1ODBlZjI2YTdhMjhiMjRiMGE2MmYyNGY4MWU0YjFlNzViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTctMDQtMjYgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1x
dWV1ZUB3ZWJraXQub3JnPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMTU2
ODYuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzEz
NDcKKworICAgICAgICBUaGlzIGNoYW5nZSBjYXVzZWQgYXNzZXJ0aW9uIGZhaWx1cmVzIGluIGV4
aXN0aW5nIExheW91dFRlc3RzCisgICAgICAgIChSZXF1ZXN0ZWQgYnkgbWxld2lzMTMgb24gI3dl
YmtpdCkuCisKKyAgICAgICAgUmV2ZXJ0ZWQgY2hhbmdlc2V0OgorCisgICAgICAgICJSZWR1Y2Ug
Y29waWVzIGFuZCBhbGxvY2F0aW9ucyBpbiBTaGFyZWRCdWZmZXI6OmFwcGVuZCIKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MDk1NgorICAgICAgICBo
dHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yMTU2ODYKKwogMjAxNy0wNC0yNiAgRXJp
YyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBUaGUgY3VycmVu
dCBwYWdlIGlzIGdpdmVuIGEgbXV0ZWQgc3RhdGUgd2hlbiBzdGFydGluZyBhIG1lZGlhIHN0cmVh
bSBvbiBpT1MuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJh
eUJ1ZmZlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaApp
bmRleCBhZjI0YjMzY2FiZTAyNmM1NzdkNTlhMTNiYmE1OGE2YTNlNWRiOTU1Li40NmZmZGI1Y2E0
YWEzMWJkM2Y0ZjQ5OTJkYjdlYmVjNWY2NTIxMmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FycmF5QnVmZmVyLmgKQEAgLTExMCw3ICsxMTAsNyBAQCBwdWJsaWM6CiAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlKEFy
cmF5QnVmZmVyJik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0cjxBcnJheUJ1
ZmZlcj4gdHJ5Q3JlYXRlKGNvbnN0IHZvaWQqIHNvdXJjZSwgdW5zaWduZWQgYnl0ZUxlbmd0aCk7
CiAKLSAgICAvLyBPbmx5IGZvciB1c2UgYnkgVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZVVuaW5p
dGlhbGl6ZWQgYW5kIFNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIuCisgICAgLy8g
T25seSBmb3IgdXNlIGJ5IFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVkIGFu
ZCBTaGFyZWRCdWZmZXI6OmNyZWF0ZUFycmF5QnVmZmVyLgogICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbnVt
RWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh1bnNp
Z25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Np
b24uY3BwCmluZGV4IGMyZjBhMDkwZGFlNWQ5ZGY1MTUzNzQxZTZlMTdjN2Q5MWI1YWNmYTAuLjIy
MGY2ZGJlZDdlMjdmZWUxNDJiODcyMjdhZTU5YjkxOTFkYTJkYjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5j
cHAKQEAgLTU5OSw3ICs1OTksNyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6ZW5xdWV1ZU1lc3Nh
Z2UoTWVkaWFLZXlNZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSwgY29uc3QgU2hhcgogICAgIC8vIDIu
IFF1ZXVlIGEgdGFzayB0byBjcmVhdGUgYW4gZXZlbnQgbmFtZWQgbWVzc2FnZSB0aGF0IGRvZXMg
bm90IGJ1YmJsZSBhbmQgaXMgbm90IGNhbmNlbGxhYmxlIHVzaW5nIHRoZSBNZWRpYUtleU1lc3Nh
Z2VFdmVudAogICAgIC8vICAgIGludGVyZmFjZSB3aXRoIGl0cyB0eXBlIGF0dHJpYnV0ZSBzZXQg
dG8gbWVzc2FnZSBhbmQgaXRzIGlzVHJ1c3RlZCBhdHRyaWJ1dGUgaW5pdGlhbGl6ZWQgdG8gdHJ1
ZSwgYW5kIGRpc3BhdGNoIGl0IGF0IHRoZQogICAgIC8vICAgIHNlc3Npb24uCi0gICAgYXV0byBt
ZXNzYWdlRXZlbnQgPSBNZWRpYUtleU1lc3NhZ2VFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5t
ZXNzYWdlRXZlbnQsIHttZXNzYWdlVHlwZSwgbWVzc2FnZS50cnlDcmVhdGVBcnJheUJ1ZmZlcigp
fSwgRXZlbnQ6OklzVHJ1c3RlZDo6WWVzKTsKKyAgICBhdXRvIG1lc3NhZ2VFdmVudCA9IE1lZGlh
S2V5TWVzc2FnZUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLm1lc3NhZ2VFdmVudCwge21lc3Nh
Z2VUeXBlLCBtZXNzYWdlLmNyZWF0ZUFycmF5QnVmZmVyKCl9LCBFdmVudDo6SXNUcnVzdGVkOjpZ
ZXMpOwogICAgIG1fZXZlbnRRdWV1ZS5lbnF1ZXVlRXZlbnQoV1RGTW92ZShtZXNzYWdlRXZlbnQp
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJv
ZHlDb25zdW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNv
bnN1bWVyLmNwcAppbmRleCBkYzk4NzU4MTc2YmM5N2NmY2YxMDAwNmU4MTIyOTdiMGJhNjIxYTQ3
Li5lODJhNzRhMjVjZGZjYzU5YjhlYTJhMTUzMDYyMWIwYmJhZmIzMjdhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcApAQCAtMTI1
LDcgKzEyNSw3IEBAIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiBGZXRjaEJvZHlDb25zdW1lcjo6
dGFrZUFzQXJyYXlCdWZmZXIoKQogICAgIGlmICghbV9idWZmZXIpCiAgICAgICAgIHJldHVybiBB
cnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKG51bGxwdHIsIDApOwogCi0gICAgYXV0byBhcnJheUJ1ZmZl
ciA9IG1fYnVmZmVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOworICAgIGF1dG8gYXJyYXlCdWZm
ZXIgPSBtX2J1ZmZlci0+Y3JlYXRlQXJyYXlCdWZmZXIoKTsKICAgICBtX2J1ZmZlciA9IG51bGxw
dHI7CiAgICAgcmV0dXJuIGFycmF5QnVmZmVyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKaW5kZXggNDA5OGU0OGE2NGI5NmVlNDljYjBlZjJk
OWY3NDdkZWU1MzQ2NGFiZS4uOGNmZDU1OGViODQ1ZWZmZTcxZjcxZmFlNWY2MmVjMTM1MGI0YzVk
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3Bw
CkBAIC0yNzksNyArMjc5LDcgQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpjb25zdW1lQm9keUFzU3Ry
ZWFtKCkKIAogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEgPSBtX2JvZHlMb2FkZXItPnN0
YXJ0U3RyZWFtaW5nKCk7CiAgICAgaWYgKGRhdGEpIHsKLSAgICAgICAgaWYgKCFtX3JlYWRhYmxl
U3RyZWFtU291cmNlLT5lbnF1ZXVlKGRhdGEtPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkpKSB7Cisg
ICAgICAgIGlmICghbV9yZWFkYWJsZVN0cmVhbVNvdXJjZS0+ZW5xdWV1ZShkYXRhLT5jcmVhdGVB
cnJheUJ1ZmZlcigpKSkgewogICAgICAgICAgICAgc3RvcCgpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggYTgzYWQ2OGZjNmMyYmJmYjM0NjMyZGZjM2I3M2I5OTA2YjU4NWJm
Yy4uN2E1ZTBhMDQzOGU2Y2Y2NmIxNmUyOWI2OWVmMGRiOGQ5YTRjZGVhMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTYxOSw3
ICsxNjE5LDExIEBACiAJCTM3QkFBRTU4MTk4MEQxREQwMDVERkU3MSAvKiBQcm90ZWN0aW9uU3Bh
Y2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3QkFB
RTU3MTk4MEQxREQwMDVERkU3MSAvKiBQcm90ZWN0aW9uU3BhY2UuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkzN0MyMzgyMjEwOThDODQyMDBFRjlG
NzIgLyogQ29tcGxleFRleHRDb250cm9sbGVyQ29yZVRleHQubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzN0MyMzgyMDEwOThDODQyMDBFRjlGNzIgLyog
Q29tcGxleFRleHRDb250cm9sbGVyQ29yZVRleHQubW0gKi87IH07CiAJCTM3RDQ1NkZEMUE5QTUw
RDgwMDMzMzBBMSAvKiBMb2NhbGl6YWJsZVN0cmluZ3MucG0gaW4gQ29weSBTY3JpcHRzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3RDQ1NkZCMUE5QTUwQjYwMDMzMzBBMSAv
KiBMb2NhbGl6YWJsZVN0cmluZ3MucG0gKi87IH07CisJCTM3RERDRDk0MTM4NDRGRDUwMDA4Qjc5
MyAvKiBNSU1FSGVhZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDM3RERDRDkyMTM4NDRGRDUwMDA4Qjc5MyAvKiBNSU1FSGVhZGVyLmNwcCAqLzsg
fTsKKwkJMzdERENEOTUxMzg0NEZENTAwMDhCNzkzIC8qIE1JTUVIZWFkZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3RERDRDkzMTM4NDRGRDUwMDA4
Qjc5MyAvKiBNSU1FSGVhZGVyLmggKi87IH07CiAJCTM3RERDRDlFMTM4NDRGRkEwMDA4Qjc5MyAv
KiBBcmNoaXZlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDM3RERDRDlEMTM4NDRGRkEwMDA4Qjc5MyAvKiBBcmNoaXZlLmNwcCAqLzsgfTsKKwkJMzdE
RENEQTUxMzg0NTAxQzAwMDhCNzkzIC8qIE1IVE1MQXJjaGl2ZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzdERENEQTExMzg0NTAxQzAwMDhCNzkzIC8q
IE1IVE1MQXJjaGl2ZS5oICovOyB9OworCQkzN0REQ0RBNzEzODQ1MDFDMDAwOEI3OTMgLyogTUhU
TUxQYXJzZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDM3RERDREEzMTM4NDUwMUMwMDA4Qjc5MyAvKiBNSFRNTFBhcnNlci5oICovOyB9OwogCQkzN0Uz
NTI0QjEyNDUwQzUyMDBCQUY1RDkgLyogSW5wdXRUeXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3RTM1MjRBMTI0NTBDNTIwMEJBRjVEOSAvKiBJ
bnB1dFR5cGUuY3BwICovOyB9OwogCQkzN0UzNTI0RDEyNDUwQzY2MDBCQUY1RDkgLyogSW5wdXRU
eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzN0Uz
NTI0QzEyNDUwQzY2MDBCQUY1RDkgLyogSW5wdXRUeXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMzdGNTY3Q0UxNjUzNThGNDAwRERFOTJCIC8q
IFBvcHVwT3BlbmluZ09ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAzNzcyQjA5NTE2NTM1ODU2MDAwQTQ5Q0EgLyogUG9wdXBPcGVuaW5nT2Jz
ZXJ2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpA
QCAtNDA1MCw2ICs0MDU0LDggQEAKIAkJOTdBQUJEMjcxNEZBMDlENTAwNzQ1N0FFIC8qIFdlYlNv
Y2tldEhhbmRzaGFrZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTdBQUJEMEMxNEZBMDlENTAwNzQ1N0FFIC8qIFdlYlNvY2tldEhhbmRzaGFrZS5oICov
OyB9OwogCQk5N0FBQkQyQzE0RkEwOUQ1MDA3NDU3QUUgLyogV29ya2VyVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTdBQUJEMTExNEZBMDlENTAwNzQ1N0FFIC8qIFdvcmtlclRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsLmNwcCAqLzsgfTsKIAkJOTdBQUJEMkQxNEZBMDlENTAwNzQ1N0FFIC8qIFdvcmtl
clRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5N0FBQkQxMjE0RkEwOUQ1MDA3NDU3QUUgLyogV29ya2VyVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQk5N0IxRjAyRTEzQjAyNUNBMDBGNTEwM0YgLyogU2hhcmVkQnVm
ZmVyQ2h1bmtSZWFkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMzc1NjlFMDAxM0FGMTcyQzAwQ0RCQThFIC8qIFNoYXJlZEJ1ZmZlckNodW5rUmVh
ZGVyLmNwcCAqLzsgfTsKKwkJOTdCMUYwMkYxM0IwMjVEMjAwRjUxMDNGIC8qIFNoYXJlZEJ1ZmZl
ckNodW5rUmVhZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAzNzU2OUUwMjEzQUYxNzJDMDBDREJBOEUgLyogU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIu
aCAqLzsgfTsKIAkJOTdCMzhFMjcxNTFDNDI3MTAwNDYyMkU5IC8qIERPTVdpbmRvd05vdGlmaWNh
dGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3
QjM4RTI0MTUxQzQyNjQwMDQ2MjJFOSAvKiBET01XaW5kb3dOb3RpZmljYXRpb25zLmggKi87IH07
CiAJCTk3QjM4RTI4MTUxQzQyNzMwMDQ2MjJFOSAvKiBET01XaW5kb3dOb3RpZmljYXRpb25zLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3QjM4RTIz
MTUxQzQyNjQwMDQ2MjJFOSAvKiBET01XaW5kb3dOb3RpZmljYXRpb25zLmNwcCAqLzsgfTsKIAkJ
OTdCOEZGRDExNkFFN0Y5NjAwMzgzODhEIC8qIENoYXJhY3RlclJlZmVyZW5jZVBhcnNlcklubGlu
ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3QjhG
RkNGMTZBRTdGOTIwMDM4Mzg4RCAvKiBDaGFyYWN0ZXJSZWZlcmVuY2VQYXJzZXJJbmxpbmVzLmgg
Ki87IH07CkBAIC05MjE2LDYgKzkyMjIsOCBAQAogCQkzNzJBREEzOTE5N0Y2ODc2MDBGQzUwMUUg
LyogUHJvdGVjdGlvblNwYWNlQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBQcm90ZWN0aW9uU3BhY2VDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMzcyQzAwQzMxMjk2MTFGMTAwNUM5NTc1IC8qIFRleHRCb3VuZGFyaWVzLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRleHRCb3VuZGFyaWVzLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzcyQzAwRDgxMjk2MTlGODAwNUM5NTc1IC8q
IEZpbmRPcHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbmRPcHRp
b25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTM3NTY5RTAwMTNBRjE3MkMwMENE
QkE4RSAvKiBTaGFyZWRCdWZmZXJDaHVua1JlYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTaGFyZWRCdWZmZXJDaHVua1JlYWRlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTM3NTY5RTAyMTNBRjE3MkMwMENEQkE4RSAvKiBTaGFyZWRCdWZm
ZXJDaHVua1JlYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFyZWRC
dWZmZXJDaHVua1JlYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzNzVDRDIz
MTExOUQ0M0M4MDBBMkE4NTkgLyogSHlwaGVuYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSHlwaGVuYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
Mzc2RENDRTAxM0I0Rjk2NjAwMkVCRUZDIC8qIFRleHRSdW4uY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gVGV4dFJ1bi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTM3NzJCMDk1MTY1MzU4NTYwMDBBNDlDQSAvKiBQb3B1cE9wZW5pbmdPYnNlcnZlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQb3B1cE9wZW5pbmdPYnNlcnZlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTI0MCw3ICs5MjQ4LDExIEBACiAJCTM3
QkFBRTU3MTk4MEQxREQwMDVERkU3MSAvKiBQcm90ZWN0aW9uU3BhY2UuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvdGVjdGlvblNwYWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTM3QzIzODIwMTA5OEM4NDIwMEVGOUY3MiAvKiBDb21wbGV4VGV4dENvbnRy
b2xsZXJDb3JlVGV4dC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IENvbXBsZXhUZXh0Q29udHJvbGxlckNvcmVUZXh0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkzN0Q0NTZGQjFBOUE1MEI2MDAzMzMwQTEgLyogTG9jYWxpemFibGVTdHJpbmdzLnBt
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5z
Y3JpcHQucGVybDsgcGF0aCA9IExvY2FsaXphYmxlU3RyaW5ncy5wbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMzdERENEOTIxMzg0NEZENTAwMDhCNzkzIC8qIE1JTUVIZWFkZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTUlNRUhlYWRlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTM3RERDRDkzMTM4NDRGRDUwMDA4Qjc5MyAvKiBN
SU1FSGVhZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1JTUVIZWFkZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzdERENEOUQxMzg0NEZGQTAwMDhCNzkz
IC8qIEFyY2hpdmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXJj
aGl2ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTM3RERDREExMTM4NDUwMUMw
MDA4Qjc5MyAvKiBNSFRNTEFyY2hpdmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTUhUTUxBcmNoaXZlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTM3RERDREEz
MTM4NDUwMUMwMDA4Qjc5MyAvKiBNSFRNTFBhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBNSFRNTFBhcnNlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkz
N0UzNTI0QTEyNDUwQzUyMDBCQUY1RDkgLyogSW5wdXRUeXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElucHV0VHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTM3RTM1MjRDMTI0NTBDNjYwMEJBRjVEOSAvKiBJbnB1dFR5cGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5wdXRUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTM3RjgxOEZCMEQ2NTc2MDYwMDVFMUYwNSAvKiBXZWJDb3JlVVJMUmVzcG9u
c2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29yZVVSTFJlc3BvbnNl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzUzOCw2ICsxNzU1MCwxNSBAQAog
CQkJcGF0aCA9IG9wZW50eXBlOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJ
MzdERENEOUYxMzg0NTAxQzAwMDhCNzkzIC8qIG1odG1sICovID0geworCQkJaXNhID0gUEJYR3Jv
dXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkzN0REQ0RBMTEzODQ1MDFDMDAwOEI3OTMgLyogTUhU
TUxBcmNoaXZlLmggKi8sCisJCQkJMzdERENEQTMxMzg0NTAxQzAwMDhCNzkzIC8qIE1IVE1MUGFy
c2VyLmggKi8sCisJCQkpOworCQkJcGF0aCA9IG1odG1sOworCQkJc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsKKwkJfTsKIAkJNDE1MEY5RUQxMkI2RTA5OTAwMDhDODYwIC8qIHNoYWRvdyAqLyA9IHsK
IAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0xODM2NSw2ICsxODM4Niw3
IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCTUxMkREOEU5MEQ5
MUU2QUYwMDBGODlFRSAvKiBjZiAqLywKKwkJCQkzN0REQ0Q5RjEzODQ1MDFDMDAwOEI3OTMgLyog
bWh0bWwgKi8sCiAJCQkJMzdERENEOUQxMzg0NEZGQTAwMDhCNzkzIC8qIEFyY2hpdmUuY3BwICov
LAogCQkJCTUxMkREOEVDMEQ5MUU2QUYwMDBGODlFRSAvKiBBcmNoaXZlLmggKi8sCiAJCQkJNTEy
REQ4RjAwRDkxRTZBRjAwMEY4OUVFIC8qIEFyY2hpdmVGYWN0b3J5LmNwcCAqLywKQEAgLTE4ODc1
LDYgKzE4ODk3LDggQEAKIAkJCQk0MTYxNEE3NzFEQTY0MjM2MDA0QUQwNkYgLyogSFRUUEhlYWRl
clZhbHVlcy5oICovLAogCQkJCTUxNEM3NjVEMENFOTIzQTEwMDdFRjNDRCAvKiBIVFRQUGFyc2Vy
cy5jcHAgKi8sCiAJCQkJNTE0Qzc2NUUwQ0U5MjNBMTAwN0VGM0NEIC8qIEhUVFBQYXJzZXJzLmgg
Ki8sCisJCQkJMzdERENEOTIxMzg0NEZENTAwMDhCNzkzIC8qIE1JTUVIZWFkZXIuY3BwICovLAor
CQkJCTM3RERDRDkzMTM4NDRGRDUwMDA4Qjc5MyAvKiBNSU1FSGVhZGVyLmggKi8sCiAJCQkJNjI4
RDIxNEIxMjEzMUVEMTAwNTVEQ0ZDIC8qIE5ldHdvcmtpbmdDb250ZXh0LmggKi8sCiAJCQkJOEE4
MUJGODQxMURDRkQ5MDAwREEyQjk4IC8qIE5ldHdvcmtMb2FkTWV0cmljcy5oICovLAogCQkJCTFB
N0ZBNjFBMEREQTNCQkUwMDI4RjhBNSAvKiBOZXR3b3JrU3RhdGVOb3RpZmllci5jcHAgKi8sCkBA
IC0yNDAyNCw2ICsyNDA0OCw4IEBACiAJCQkJMDc3QUYxM0UxOEY0QUU0MDAwMDFFRDYxIC8qIFNl
cmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uLmggKi8sCiAJCQkJMUE0QTk1NEIwQjRFREND
QjAwMkQ4QzNDIC8qIFNoYXJlZEJ1ZmZlci5jcHAgKi8sCiAJCQkJMUE0QTk1NEMwQjRFRENDQjAw
MkQ4QzNDIC8qIFNoYXJlZEJ1ZmZlci5oICovLAorCQkJCTM3NTY5RTAwMTNBRjE3MkMwMENEQkE4
RSAvKiBTaGFyZWRCdWZmZXJDaHVua1JlYWRlci5jcHAgKi8sCisJCQkJMzc1NjlFMDIxM0FGMTcy
QzAwQ0RCQThFIC8qIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmggKi8sCiAJCQkJOTMzMDlFQTAw
OTlFQjc4QzAwNTZFNTgxIC8qIFNoYXJlZFRpbWVyLmggKi8sCiAJCQkJNEIzMDQzQzYwQUUwMzcw
MzAwQTgyNjQ3IC8qIFNvdW5kLmggKi8sCiAJCQkJRjU4Nzg2NjIwMkRFM0IxMTAxRUE0MTIyIC8q
IFNTTEtleUdlbmVyYXRvci5oICovLApAQCAtMjg1MjIsNyArMjg1NDgsMTAgQEAKIAkJCQk3NTc5
M0U4NDBEMENFMEIzMDA3RkMwQUMgLyogTWVzc2FnZUV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlFMUFERUNCRjBFNzZBQ0YxMDA0QTFBNUUgLyogTWVzc2FnZVBvcnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTQxQkY3MDBDMEZFODZGNDkwMDVFOERFQyAvKiBNZXNzYWdlUG9ydENoYW5uZWwuaCBp
biBIZWFkZXJzICovLAorCQkJCTM3RERDREE1MTM4NDUwMUMwMDA4Qjc5MyAvKiBNSFRNTEFyY2hp
dmUuaCBpbiBIZWFkZXJzICovLAorCQkJCTM3RERDREE3MTM4NDUwMUMwMDA4Qjc5MyAvKiBNSFRN
TFBhcnNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTNCODk1QUYxOURDN0VEOTAwOUNBQTkzIC8q
IE1pY3JvdGFza3MuaCBpbiBIZWFkZXJzICovLAorCQkJCTM3RERDRDk1MTM4NDRGRDUwMDA4Qjc5
MyAvKiBNSU1FSGVhZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzc3MkM0RjBDNEVCMzA0MDA4
MzI4NUYgLyogTUlNRVR5cGVSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTJGMTA4NjYx
NjJCNkRBODAwOUFDODFFIC8qIE1peGVkQ29udGVudENoZWNrZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCUNFMTI1MjQ5MUExNkMzQkMwMDg2NDQ4MCAvKiBNb2JpbGVHZXN0YWx0U1BJLmggaW4gSGVh
ZGVycyAqLywKQEAgLTI5MjEzLDYgKzI5MjQyLDcgQEAKIAkJCQlGRDQ1QTk1MjE3NUQzRjNFMDBD
MjFFQzggLyogU2hhcGVPdXRzaWRlSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQxQUYxNTAx
NjU2RjE1MTAwQzZENEY3IC8qIFNoYXBlVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNEE5
NTRFMEI0RURDQ0IwMDJEOEMzQyAvKiBTaGFyZWRCdWZmZXIuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTk3QjFGMDJGMTNCMDI1RDIwMEY1MTAzRiAvKiBTaGFyZWRCdWZmZXJDaHVua1JlYWRlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlFQTMwOTlFQjc4QzAwNTZFNTgxIC8qIFNoYXJlZFRpbWVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDg5NDRBMzE4MEI1N0Q4MDBGMTY1RDggLyogU2ltcGxl
TGluZUxheW91dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTFFMDY3RUUxRTYyNDZFNTAwMTYyRDE2
IC8qIFNpbXBsZUxpbmVMYXlvdXRDb3ZlcmFnZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMjUyMyw2
ICszMjU1Myw3IEBACiAJCQkJNzU3OTNFODMwRDBDRTBCMzAwN0ZDMEFDIC8qIE1lc3NhZ2VFdmVu
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMUFERUNDMDBFNzZBQ0YxMDA0QTFBNUUgLyogTWVz
c2FnZVBvcnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0I4Q0YwMTgxQTkzNThENDAwMEQ1MTBC
IC8qIE1pY3JvdGFza3MuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMzdERENEOTQxMzg0NEZENTAw
MDhCNzkzIC8qIE1JTUVIZWFkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM3NzJDNEUwQzRF
QjMwNDAwODMyODVGIC8qIE1JTUVUeXBlUmVnaXN0cnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QzUzRDM5MzQxQzk3OEE0NTAwN0YzQUU5IC8qIE1JTUVUeXBlUmVnaXN0cnlDb2NvYS5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTUyRjEwODY1MTYyQjZEQTQwMDlBQzgxRSAvKiBNaXhlZENvbnRlbnRD
aGVja2VyLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzMwNTUsNiArMzMwODYsNyBAQAogCQkJCTFB
QjVFQkQwMTk0QTFEMTcwMDU5QUM3MCAvKiBTaGFwZVZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTFBNEE5NTREMEI0RURDQ0IwMDJEOEMzQyAvKiBTaGFyZWRCdWZmZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNTEyREQ4RTMwRDkxRTJCNDAwMEY4OUVFIC8qIFNoYXJlZEJ1ZmZlckNGLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTk3QjFGMDJFMTNCMDI1Q0EwMEY1MTAzRiAvKiBTaGFyZWRC
dWZmZXJDaHVua1JlYWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTRBOTU1MjBCNEVEQ0ZG
MDAyRDhDM0MgLyogU2hhcmVkQnVmZmVyQ29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQkxNjNF
ODhGNzExOEEzOUQyMDBFRDkyMzEgLyogU2ltcGxlRm9udERhdGFDb3JlVGV4dC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlFNDg5NDRBMjE4MEI1N0Q4MDBGMTY1RDggLyogU2ltcGxlTGluZUxheW91
dC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Y29jb2EvRWRpdG9yQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRv
ckNvY29hLm1tCmluZGV4IDA1ZGM4YThjMGRmZGUyMWMxMjA2ZGY5OWE4MTI3ZTNjYWJlN2QxNzMu
LjA1Yzg5MDg0NDZhMjY4OGRiZTQ4MDY4ZmU3YTI0NzAzNWRhOTkwZWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbQpAQCAtMTU3LDcgKzE1Nyw3IEBAIHN0
YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBhcmNoaXZlZERhdGFGb3JBdHRyaWJ1dGVkU3RyaW5n
KE5TQXR0cmlidXRlZFN0cmluZyAqCiAgICAgaWYgKCFhdHRyaWJ1dGVkU3RyaW5nLmxlbmd0aCkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoW05TS2V5ZWRBcmNoaXZlciBhcmNoaXZlZERhdGFXaXRoUm9vdE9iamVjdDphdHRyaWJ1dGVk
U3RyaW5nXSk7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6d3JhcE5TRGF0YShbTlNLZXllZEFy
Y2hpdmVyIGFyY2hpdmVkRGF0YVdpdGhSb290T2JqZWN0OmF0dHJpYnV0ZWRTdHJpbmddKTsKIH0K
IAogdm9pZCBFZGl0b3I6OndyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKFBhc3RlYm9hcmQmIHBh
c3RlYm9hcmQpCkBAIC0yMDUsNyArMjA1LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9y
OjpzZWxlY3Rpb25JbldlYkFyY2hpdmVGb3JtYXQoKQogICAgIFJlZlB0cjxMZWdhY3lXZWJBcmNo
aXZlPiBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbigmbV9m
cmFtZSk7CiAgICAgaWYgKCFhcmNoaXZlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBy
ZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoYXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9u
KCkuZ2V0KCkpOworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OndyYXBDRkRhdGEoYXJjaGl2ZS0+
cmF3RGF0YVJlcHJlc2VudGF0aW9uKCkuZ2V0KCkpOwogfQogCiAvLyBGSVhNRTogTWFrZXMgbm8g
c2Vuc2UgdGhhdCBzZWxlY3RlZFRleHRGb3JEYXRhVHJhbnNmZXIgYWx3YXlzIGluY2x1ZGVzIGFs
dCB0ZXh0LCBidXQgc3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCBkb2VzIG5vdC4KQEAgLTI3
Niw3ICsyNzYsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRhdGFJblJURkRGb3Jt
YXQoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotICAgIHJldHVybiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShbc3RyaW5nIFJURkRGcm9tUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgbGVuZ3RoKSBk
b2N1bWVudEF0dHJpYnV0ZXM6QHsgfV0pOworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OndyYXBO
U0RhdGEoW3N0cmluZyBSVEZERnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAsIGxlbmd0aCkgZG9jdW1l
bnRBdHRyaWJ1dGVzOkB7IH1dKTsKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogCiAg
ICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yODksNyArMjg5LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gRWRpdG9yOjpkYXRhSW5SVEZGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05T
OwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShbc3RyaW5nIFJURkZyb21SYW5nZTpO
U01ha2VSYW5nZSgwLCBsZW5ndGgpIGRvY3VtZW50QXR0cmlidXRlczpAeyB9XSk7CisgICAgcmV0
dXJuIFNoYXJlZEJ1ZmZlcjo6d3JhcE5TRGF0YShbc3RyaW5nIFJURkZyb21SYW5nZTpOU01ha2VS
YW5nZSgwLCBsZW5ndGgpIGRvY3VtZW50QXR0cmlidXRlczpAeyB9XSk7CiAgICAgRU5EX0JMT0NL
X09CSkNfRVhDRVBUSU9OUzsKIAogICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9pb3MvRWRpdG9ySU9TLm1tCmluZGV4IDJjNWQ2MjI5ODllZTc4YzA3MTgwYWNkNTg4MmYw
NjhjYTEzNWI1ZWQuLmIxY2ZkZWU1OGI1Mzk3Zjg1NDY3MTU5N2VmMTJjZjIyZmNjYTRiOWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KQEAgLTMzOSwxMCArMzM5LDEw
IEBAIGJvb2wgRWRpdG9yOjpXZWJDb250ZW50UmVhZGVyOjpyZWFkVVJMKGNvbnN0IFVSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIHRpdGxlKQogICAgICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IGZpbGVU
eXBlID0gYWRvcHROUygoTlNTdHJpbmcgKilVVFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlmaWVy
Rm9yVGFnKGtVVFRhZ0NsYXNzRmlsZW5hbWVFeHRlbnNpb24sIChDRlN0cmluZ1JlZilbbG9jYWxQ
YXRoIHBhdGhFeHRlbnNpb25dLCBOVUxMKSk7CiAgICAgICAgIE5TRGF0YSAqZGF0YSA9IFtOU0Rh
dGEgZGF0YVdpdGhDb250ZW50c09mRmlsZTpsb2NhbFBhdGhdOwogICAgICAgICBpZiAoVVRUeXBl
Q29uZm9ybXNUbygoQ0ZTdHJpbmdSZWYpZmlsZVR5cGUuZ2V0KCksIGtVVFR5cGVQTkcpKSB7Ci0g
ICAgICAgICAgICBhZGRGcmFnbWVudChmcmFtZS5lZGl0b3IoKS5jcmVhdGVGcmFnbWVudEZvcklt
YWdlUmVzb3VyY2VBbmRBZGRSZXNvdXJjZShBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShTaGFyZWRC
dWZmZXI6OmNyZWF0ZShbW2RhdGEgY29weV0gYXV0b3JlbGVhc2VdKSwgVVJMOjpmYWtlVVJMV2l0
aFJlbGF0aXZlUGFydCgiaW1hZ2UucG5nIiksIEAiaW1hZ2UvcG5nIiwgZW1wdHlTdHJpbmcoKSwg
ZW1wdHlTdHJpbmcoKSkpKTsKKyAgICAgICAgICAgIGFkZEZyYWdtZW50KGZyYW1lLmVkaXRvcigp
LmNyZWF0ZUZyYWdtZW50Rm9ySW1hZ2VSZXNvdXJjZUFuZEFkZFJlc291cmNlKEFyY2hpdmVSZXNv
dXJjZTo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6d3JhcE5TRGF0YShbW2RhdGEgY29weV0gYXV0b3Jl
bGVhc2VdKSwgVVJMOjpmYWtlVVJMV2l0aFJlbGF0aXZlUGFydCgiaW1hZ2UucG5nIiksIEAiaW1h
Z2UvcG5nIiwgZW1wdHlTdHJpbmcoKSwgZW1wdHlTdHJpbmcoKSkpKTsKICAgICAgICAgICAgIHJl
dHVybiBmcmFnbWVudDsKICAgICAgICAgfSBlbHNlIGlmIChVVFR5cGVDb25mb3Jtc1RvKChDRlN0
cmluZ1JlZilmaWxlVHlwZS5nZXQoKSwga1VUVHlwZUpQRUcpKSB7Ci0gICAgICAgICAgICBhZGRG
cmFnbWVudChmcmFtZS5lZGl0b3IoKS5jcmVhdGVGcmFnbWVudEZvckltYWdlUmVzb3VyY2VBbmRB
ZGRSZXNvdXJjZShBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShTaGFyZWRCdWZmZXI6OmNyZWF0ZShb
W2RhdGEgY29weV0gYXV0b3JlbGVhc2VdKSwgVVJMOjpmYWtlVVJMV2l0aFJlbGF0aXZlUGFydCgi
aW1hZ2UuanBnIiksIEAiaW1hZ2UvanBnIiwgZW1wdHlTdHJpbmcoKSwgZW1wdHlTdHJpbmcoKSkp
KTsKKyAgICAgICAgICAgIGFkZEZyYWdtZW50KGZyYW1lLmVkaXRvcigpLmNyZWF0ZUZyYWdtZW50
Rm9ySW1hZ2VSZXNvdXJjZUFuZEFkZFJlc291cmNlKEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKFNo
YXJlZEJ1ZmZlcjo6d3JhcE5TRGF0YShbW2RhdGEgY29weV0gYXV0b3JlbGVhc2VdKSwgVVJMOjpm
YWtlVVJMV2l0aFJlbGF0aXZlUGFydCgiaW1hZ2UuanBnIiksIEAiaW1hZ2UvanBnIiwgZW1wdHlT
dHJpbmcoKSwgZW1wdHlTdHJpbmcoKSkpKTsKICAgICAgICAgICAgIHJldHVybiBmcmFnbWVudDsK
ICAgICAgICAgfQogICAgIH0gZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL21hYy9FZGl0b3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JN
YWMubW0KaW5kZXggNjNiYzNkOGI0NWMxYTAwNmY5MTlkNTcwNjJhNmM4NDE1OGE0ZTFhNy4uNjBl
ZmVmN2JmOWY1NGYyZDk0MTU0NzRmOWZhZTFkZmQ2NDQ5MjcyYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvbWFjL0VkaXRvck1hYy5tbQpAQCAtMjA0LDcgKzIwNCw3IEBAIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IEVkaXRvcjo6aW1hZ2VJbldlYkFyY2hpdmVGb3JtYXQoRWxlbWVudCYgaW1hZ2VFbGVt
ZW50KQogICAgIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBhcmNoaXZlID0gTGVnYWN5V2ViQXJj
aGl2ZTo6Y3JlYXRlKGltYWdlRWxlbWVudCk7CiAgICAgaWYgKCFhcmNoaXZlKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoYXJjaGl2ZS0+
cmF3RGF0YVJlcHJlc2VudGF0aW9uKCkuZ2V0KCkpOworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6
OndyYXBDRkRhdGEoYXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9uKCkuZ2V0KCkpOwogfQog
CiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJk
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0
VHJhY2tMb2FkZXIuY3BwCmluZGV4IDcyOGZlMzM1MTMxZWJhYjA4ZDMwODE2YzJkNGUwOGYyNTkz
YmQ5ZGEuLjYyY2JkY2E0ZmQ2MzRlYTk5OWI2YmUxZTliYmYyM2M0NzY4YmJhZDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwCkBAIC05MSwxNSArOTEsMTIgQEAg
dm9pZCBUZXh0VHJhY2tMb2FkZXI6OnByb2Nlc3NOZXdDdWVEYXRhKENhY2hlZFJlc291cmNlJiBy
ZXNvdXJjZSkKICAgICBpZiAoIW1fY3VlUGFyc2VyKQogICAgICAgICBtX2N1ZVBhcnNlciA9IHN0
ZDo6bWFrZV91bmlxdWU8V2ViVlRUUGFyc2VyPihzdGF0aWNfY2FzdDxXZWJWVFRQYXJzZXJDbGll
bnQqPih0aGlzKSwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKIAotICAgIGF1dG8gYnl0ZXNU
b1NraXAgPSBtX3BhcnNlT2Zmc2V0OwotICAgIGZvciAoY29uc3QgYXV0byYgc2VnbWVudCA6ICpi
dWZmZXIpIHsKLSAgICAgICAgaWYgKGJ5dGVzVG9Ta2lwID4gc2VnbWVudC0+c2l6ZSgpKSB7Ci0g
ICAgICAgICAgICBieXRlc1RvU2tpcCAtPSBzZWdtZW50LT5zaXplKCk7Ci0gICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgfQotICAgICAgICBtX2N1ZVBhcnNlci0+cGFyc2VCeXRlcyhzZWdt
ZW50LT5kYXRhKCkgKyBieXRlc1RvU2tpcCwgc2VnbWVudC0+c2l6ZSgpIC0gYnl0ZXNUb1NraXAp
OwotICAgICAgICBieXRlc1RvU2tpcCA9IDA7Ci0gICAgICAgIG1fcGFyc2VPZmZzZXQgKz0gc2Vn
bWVudC0+c2l6ZSgpOworICAgIGNvbnN0IGNoYXIqIGRhdGE7CisgICAgdW5zaWduZWQgbGVuZ3Ro
OworCisgICAgd2hpbGUgKChsZW5ndGggPSBidWZmZXItPmdldFNvbWVEYXRhKGRhdGEsIG1fcGFy
c2VPZmZzZXQpKSkgeworICAgICAgICBtX2N1ZVBhcnNlci0+cGFyc2VCeXRlcyhkYXRhLCBsZW5n
dGgpOworICAgICAgICBtX3BhcnNlT2Zmc2V0ICs9IGxlbmd0aDsKICAgICB9CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5j
cHAKaW5kZXggYmE5OGEzZWExZDAzOTgyMjI2NWM4YTIxYjQxOTdlMjFkNmQ1YTQyYy4uMDk3NDgy
ZmJlNmQzYzE4Zjc2Mjk0NmNkZGQzYmM1NjA0ZjYzZDgzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKQEAgLTIyMSw3
ICsyMjEsNyBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVh
dGVSZXNvdXJjZShDRkRpY3Rpb25hcnlSZWYgZGljdGlvbgogICAgICAgICByZXNwb25zZSA9IGNy
ZWF0ZVJlc291cmNlUmVzcG9uc2VGcm9tUHJvcGVydHlMaXN0RGF0YShyZXNvdXJjZVJlc3BvbnNl
RGF0YSwgcmVzb3VyY2VSZXNwb25zZVZlcnNpb24pOwogICAgIH0KIAotICAgIHJldHVybiBBcmNo
aXZlUmVzb3VyY2U6OmNyZWF0ZShTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZXNvdXJjZURhdGEpLCBV
UkwoVVJMKCksIHVybCksIG1pbWVUeXBlLCB0ZXh0RW5jb2RpbmcsIGZyYW1lTmFtZSwgcmVzcG9u
c2UpOworICAgIHJldHVybiBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShTaGFyZWRCdWZmZXI6Ondy
YXBDRkRhdGEocmVzb3VyY2VEYXRhKSwgVVJMKFVSTCgpLCB1cmwpLCBtaW1lVHlwZSwgdGV4dEVu
Y29kaW5nLCBmcmFtZU5hbWUsIHJlc3BvbnNlKTsKIH0KIAogUmVmPExlZ2FjeVdlYkFyY2hpdmU+
IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlLmNwcAppbmRleCA1Y2RhMmFkYzY1MGYyMzI3MzNlOTUzNGEyN2Y1
NzA2ZGMyZTg3NjU5Li5jNDEwM2JkMTUzZTlmMTMxYjc5OTc3MjQ4NzA0MWMxNjgyMGJhZWE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKQEAg
LTg1MCw5ICs4NTAsOCBAQCB2b2lkIENhY2hlZFJlc291cmNlOjp0cnlSZXBsYWNlRW5jb2RlZERh
dGEoU2hhcmVkQnVmZmVyJiBuZXdCdWZmZXIpCiAgICAgaWYgKG1fZGF0YS0+c2l6ZSgpICE9IG5l
d0J1ZmZlci5zaXplKCkgfHwgbWVtY21wKG1fZGF0YS0+ZGF0YSgpLCBuZXdCdWZmZXIuZGF0YSgp
LCBtX2RhdGEtPnNpemUoKSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fZGF0YS0+Y2xlYXIo
KTsKLSAgICBtX2RhdGEtPmFwcGVuZChuZXdCdWZmZXIpOwotICAgIGRpZFJlcGxhY2VTaGFyZWRC
dWZmZXJDb250ZW50cygpOworICAgIGlmIChtX2RhdGEtPnRyeVJlcGxhY2VDb250ZW50c1dpdGhQ
bGF0Zm9ybUJ1ZmZlcihuZXdCdWZmZXIpKQorICAgICAgICBkaWRSZXBsYWNlU2hhcmVkQnVmZmVy
Q29udGVudHMoKTsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbQppbmRleCA0ODI1YmQwNmFlYTViZTNjYjBm
YjcwMGU2OWM2NmNkZjU0Mzk3NjJiLi42YWM0NWExNmZlOTZjMzhhNzI5MjhjMTljNTVkYzFlZTNj
Y2VhYTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hl
TW9uaXRvckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2Fj
aGVNb25pdG9yQ29jb2EubW0KQEAgLTQ4LDcgKzQ4LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
RGlza0NhY2hlTW9uaXRvcjo6dHJ5R2V0RmlsZUJhY2tlZFNoYXJlZEJ1ZmZlckZyb21DRlVSTENh
Y2gKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJu
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6Ondy
YXBDRkRhdGEoZGF0YSk7CiB9CiAKIHZvaWQgRGlza0NhY2hlTW9uaXRvcjo6bW9uaXRvckZpbGVC
YWNraW5nU3RvcmVDcmVhdGlvbihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFNlc3Np
b25JRCBzZXNzaW9uSUQsIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgY2FjaGVkUmVzcG9uc2UpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAppbmRleCAyODNlN2EzYzExYzA1
NWY4OTdiNTJlYjVlYWJiYWVkMjk3YmM0ZTMyLi44MTYxZjYzYzc5NjdiNjU2ZTc0MzliMDgwNmZm
MDA0NDY4NWYxMzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRC
dWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAK
QEAgLTMxLDMxICszMSw2MiBAQAogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDx3dGYv
dW5pY29kZS9VVEY4Lmg+CiAKLSNpZiBVU0UoU09VUCkKLSNpbmNsdWRlICJHVW5pcXVlUHRyU291
cC5oIgorbmFtZXNwYWNlIFdlYkNvcmUgeworCisjaWYgIVVTRShORVRXT1JLX0NGREFUQV9BUlJB
WV9DQUxMQkFDSykKKworc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNlZ21lbnRTaXplID0gMHgxMDAw
Oworc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNlZ21lbnRQb3NpdGlvbk1hc2sgPSAweDBGRkY7CisK
K3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgc2VnbWVudEluZGV4KHVuc2lnbmVkIHBvc2l0aW9uKQor
eworICAgIHJldHVybiBwb3NpdGlvbiAvIHNlZ21lbnRTaXplOworfQorCitzdGF0aWMgaW5saW5l
IHVuc2lnbmVkIG9mZnNldEluU2VnbWVudCh1bnNpZ25lZCBwb3NpdGlvbikKK3sKKyAgICByZXR1
cm4gcG9zaXRpb24gJiBzZWdtZW50UG9zaXRpb25NYXNrOworfQorCitzdGF0aWMgaW5saW5lIGNo
YXIqIGFsbG9jYXRlU2VnbWVudCgpIFdBUk5fVU5VU0VEX1JFVFVSTjsKK3N0YXRpYyBpbmxpbmUg
Y2hhciogYWxsb2NhdGVTZWdtZW50KCkKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y2hhcio+
KGZhc3RNYWxsb2Moc2VnbWVudFNpemUpKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGZyZWVT
ZWdtZW50KGNoYXIqIHApCit7CisgICAgZmFzdEZyZWUocCk7Cit9CisKICNlbmRpZgogCi1uYW1l
c3BhY2UgV2ViQ29yZSB7CitTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcigpCisgICAgOiBtX2J1
ZmZlcihhZG9wdFJlZigqbmV3IERhdGFCdWZmZXIpKQoreworfQogCi1TaGFyZWRCdWZmZXI6OlNo
YXJlZEJ1ZmZlcihjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKK1NoYXJlZEJ1ZmZlcjo6
U2hhcmVkQnVmZmVyKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIHNpemUpCisgICAgOiBtX2J1
ZmZlcihhZG9wdFJlZigqbmV3IERhdGFCdWZmZXIpKQogewogICAgIGFwcGVuZChkYXRhLCBzaXpl
KTsKIH0KIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoY29uc3QgdW5zaWduZWQgY2hhciog
ZGF0YSwgc2l6ZV90IHNpemUpCitTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihjb25zdCB1bnNp
Z25lZCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBzaXplKQorICAgIDogbV9idWZmZXIoYWRvcHRSZWYo
Km5ldyBEYXRhQnVmZmVyKSkKIHsKICAgICBhcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCBj
aGFyKj4oZGF0YSksIHNpemUpOwogfQogCiBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihNYXBw
ZWRGaWxlRGF0YSYmIGZpbGVEYXRhKQotICAgIDogbV9zaXplKGZpbGVEYXRhLnNpemUoKSkKKyAg
ICA6IG1fYnVmZmVyKGFkb3B0UmVmKCpuZXcgRGF0YUJ1ZmZlcikpCisgICAgLCBtX2ZpbGVEYXRh
KFdURk1vdmUoZmlsZURhdGEpKQogewotICAgIG1fc2VnbWVudHMuYXBwZW5kKERhdGFTZWdtZW50
OjpjcmVhdGUoV1RGTW92ZShmaWxlRGF0YSkpKTsKIH0KIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRC
dWZmZXIoVmVjdG9yPGNoYXI+JiYgZGF0YSkKK1NoYXJlZEJ1ZmZlcjo6flNoYXJlZEJ1ZmZlcigp
CiB7Ci0gICAgYXBwZW5kKFdURk1vdmUoZGF0YSkpOworICAgIGNsZWFyKCk7CiB9CiAKIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNv
bnN0IFN0cmluZyYgZmlsZVBhdGgpCkBAIC03MSwxMDEgKzEwMiwyMTAgQEAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3Ry
aW5nJiBmaWxlUGEKIAogUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoVmVj
dG9yPGNoYXI+JiYgdmVjdG9yKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1
ZmZlcihXVEZNb3ZlKHZlY3RvcikpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGNyZWF0ZSgpOworICAg
IGJ1ZmZlci0+bV9idWZmZXItPmRhdGEgPSBXVEZNb3ZlKHZlY3Rvcik7CisgICAgYnVmZmVyLT5t
X3NpemUgPSBidWZmZXItPm1fYnVmZmVyLT5kYXRhLnNpemUoKTsKKyAgICByZXR1cm4gYnVmZmVy
OwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6Y29tYmluZUludG9PbmVTZWdtZW50KCkgY29uc3QK
K3Vuc2lnbmVkIFNoYXJlZEJ1ZmZlcjo6c2l6ZSgpIGNvbnN0CiB7Ci0gICAgaWYgKG1fc2VnbWVu
dHMuc2l6ZSgpIDw9IDEpCi0gICAgICAgIHJldHVybjsKKyAgICBpZiAoaGFzUGxhdGZvcm1EYXRh
KCkpCisgICAgICAgIHJldHVybiBwbGF0Zm9ybURhdGFTaXplKCk7CisgICAgCisgICAgaWYgKG1f
ZmlsZURhdGEpCisgICAgICAgIHJldHVybiBtX2ZpbGVEYXRhLnNpemUoKTsKIAotICAgIFZlY3Rv
cjxjaGFyPiBjb21iaW5lZERhdGE7Ci0gICAgY29tYmluZWREYXRhLnJlc2VydmVJbml0aWFsQ2Fw
YWNpdHkobV9zaXplKTsKLSAgICBmb3IgKGNvbnN0IGF1dG8mIHNlZ21lbnQgOiBtX3NlZ21lbnRz
KQotICAgICAgICBjb21iaW5lZERhdGEuYXBwZW5kKHNlZ21lbnQtPmRhdGEoKSwgc2VnbWVudC0+
c2l6ZSgpKTsKLSAgICBBU1NFUlQoY29tYmluZWREYXRhLnNpemUoKSA9PSBtX3NpemUpOwotICAg
IG1fc2VnbWVudHMuY2xlYXIoKTsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZChEYXRhU2VnbWVudDo6
Y3JlYXRlKFdURk1vdmUoY29tYmluZWREYXRhKSkpOwotICAgIEFTU0VSVChtX3NlZ21lbnRzLnNp
emUoKSA9PSAxKTsKKyAgICByZXR1cm4gbV9zaXplOwogfQogCiBjb25zdCBjaGFyKiBTaGFyZWRC
dWZmZXI6OmRhdGEoKSBjb25zdAogewotICAgIGlmICghbV9zZWdtZW50cy5zaXplKCkpCi0gICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgIGNvbWJpbmVJbnRvT25lU2VnbWVudCgpOwotICAgIHJl
dHVybiBtX3NlZ21lbnRzWzBdLT5kYXRhKCk7CisgICAgaWYgKGhhc1BsYXRmb3JtRGF0YSgpKQor
ICAgICAgICByZXR1cm4gcGxhdGZvcm1EYXRhKCk7CisKKyAgICBpZiAobV9maWxlRGF0YSkKKyAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihtX2ZpbGVEYXRhLmRhdGEoKSk7
CisKKyNpZiBVU0UoTkVUV09SS19DRkRBVEFfQVJSQVlfQ0FMTEJBQ0spCisgICAgaWYgKGNvbnN0
IGNoYXIqIGJ1ZmZlciA9IHNpbmdsZURhdGFBcnJheUJ1ZmZlcigpKQorICAgICAgICByZXR1cm4g
YnVmZmVyOworI2VuZGlmCisKKyAgICByZXR1cm4gdGhpcy0+YnVmZmVyKCkuZGF0YSgpOwogfQog
Ci1SZWZQdHI8QXJyYXlCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIo
KSBjb25zdAorUmVmUHRyPEFycmF5QnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUFycmF5QnVm
ZmVyKCkgY29uc3QKIHsKICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVyID0gQXJy
YXlCdWZmZXI6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUo
KSksIHNpemVvZihjaGFyKSk7CiAgICAgaWYgKCFhcnJheUJ1ZmZlcikgewotICAgICAgICBXVEZM
b2dBbHdheXMoIlNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIgVW5hYmxlIHRvIGNy
ZWF0ZSBidWZmZXIuIFJlcXVlc3RlZCBzaXplIHdhcyAlZCB4ICVsdVxuIiwgc2l6ZSgpLCBzaXpl
b2YoY2hhcikpOworICAgICAgICBXVEZMb2dBbHdheXMoIlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlQXJy
YXlCdWZmZXIgVW5hYmxlIHRvIGNyZWF0ZSBidWZmZXIuIFJlcXVlc3RlZCBzaXplIHdhcyAlZCB4
ICVsdVxuIiwgc2l6ZSgpLCBzaXplb2YoY2hhcikpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICB9CiAKLSAgICBzaXplX3QgcG9zaXRpb24gPSAwOwotICAgIGZvciAoY29uc3QgYXV0byYg
c2VnbWVudCA6IG1fc2VnbWVudHMpIHsKLSAgICAgICAgbWVtY3B5KHN0YXRpY19jYXN0PGNoYXIq
PihhcnJheUJ1ZmZlci0+ZGF0YSgpKSArIHBvc2l0aW9uLCBzZWdtZW50LT5kYXRhKCksIHNlZ21l
bnQtPnNpemUoKSk7Ci0gICAgICAgIHBvc2l0aW9uICs9IHNlZ21lbnQtPnNpemUoKTsKKyAgICBj
b25zdCBjaGFyKiBzZWdtZW50ID0gMDsKKyAgICB1bnNpZ25lZCBwb3NpdGlvbiA9IDA7CisgICAg
d2hpbGUgKHVuc2lnbmVkIHNlZ21lbnRTaXplID0gZ2V0U29tZURhdGEoc2VnbWVudCwgcG9zaXRp
b24pKSB7CisgICAgICAgIG1lbWNweShzdGF0aWNfY2FzdDxjaGFyKj4oYXJyYXlCdWZmZXItPmRh
dGEoKSkgKyBwb3NpdGlvbiwgc2VnbWVudCwgc2VnbWVudFNpemUpOworICAgICAgICBwb3NpdGlv
biArPSBzZWdtZW50U2l6ZTsKKyAgICB9CisKKyAgICBpZiAocG9zaXRpb24gIT0gYXJyYXlCdWZm
ZXItPmJ5dGVMZW5ndGgoKSkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgLy8gRG9uJ3QgcmV0dXJuIHRoZSBpbmNvbXBsZXRlIEFycmF5QnVmZmVyLgorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBBU1NFUlQocG9zaXRpb24gPT0gbV9zaXplKTsK
ICAgICByZXR1cm4gYXJyYXlCdWZmZXI7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQo
Y29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChTaGFy
ZWRCdWZmZXImIGRhdGEpCiB7Ci0gICAgbV9zaXplICs9IGRhdGEubV9zaXplOwotICAgIG1fc2Vn
bWVudHMucmVzZXJ2ZUNhcGFjaXR5KG1fc2VnbWVudHMuc2l6ZSgpICsgZGF0YS5tX3NlZ21lbnRz
LnNpemUoKSk7Ci0gICAgZm9yIChjb25zdCBhdXRvJiBzZWdtZW50IDogZGF0YS5tX3NlZ21lbnRz
KQotICAgICAgICBtX3NlZ21lbnRzLnVuY2hlY2tlZEFwcGVuZChzZWdtZW50LmNvcHlSZWYoKSk7
CisgICAgaWYgKG1heWJlQXBwZW5kUGxhdGZvcm1EYXRhKGRhdGEpKQorICAgICAgICByZXR1cm47
CisjaWYgVVNFKE5FVFdPUktfQ0ZEQVRBX0FSUkFZX0NBTExCQUNLKQorICAgIGlmIChtYXliZUFw
cGVuZERhdGFBcnJheShkYXRhKSkKKyAgICAgICAgcmV0dXJuOworI2VuZGlmCisKKyAgICBjb25z
dCBjaGFyKiBzZWdtZW50OworICAgIHNpemVfdCBwb3NpdGlvbiA9IDA7CisgICAgd2hpbGUgKHNp
emVfdCBsZW5ndGggPSBkYXRhLmdldFNvbWVEYXRhKHNlZ21lbnQsIHBvc2l0aW9uKSkgeworICAg
ICAgICBhcHBlbmQoc2VnbWVudCwgbGVuZ3RoKTsKKyAgICAgICAgcG9zaXRpb24gKz0gbGVuZ3Ro
OworICAgIH0KIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCBjaGFyKiBkYXRh
LCBzaXplX3QgbGVuZ3RoKQordm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCBjaGFyKiBk
YXRhLCB1bnNpZ25lZCBsZW5ndGgpCiB7CisgICAgaWYgKCFsZW5ndGgpCisgICAgICAgIHJldHVy
bjsKKworICAgIG1heWJlVHJhbnNmZXJNYXBwZWRGaWxlRGF0YSgpOworICAgIG1heWJlVHJhbnNm
ZXJQbGF0Zm9ybURhdGEoKTsKKworI2lmICFVU0UoTkVUV09SS19DRkRBVEFfQVJSQVlfQ0FMTEJB
Q0spCisgICAgdW5zaWduZWQgcG9zaXRpb25JblNlZ21lbnQgPSBvZmZzZXRJblNlZ21lbnQobV9z
aXplIC0gbV9idWZmZXItPmRhdGEuc2l6ZSgpKTsKKyAgICBtX3NpemUgKz0gbGVuZ3RoOworCisg
ICAgaWYgKG1fc2l6ZSA8PSBzZWdtZW50U2l6ZSkgeworICAgICAgICAvLyBObyBuZWVkIHRvIHVz
ZSBzZWdtZW50cyBmb3Igc21hbGwgcmVzb3VyY2UgZGF0YQorICAgICAgICBpZiAobV9idWZmZXIt
PmRhdGEuaXNFbXB0eSgpKQorICAgICAgICAgICAgbV9idWZmZXItPmRhdGEucmVzZXJ2ZUluaXRp
YWxDYXBhY2l0eShsZW5ndGgpOworICAgICAgICBhcHBlbmRUb0RhdGFCdWZmZXIoZGF0YSwgbGVu
Z3RoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNoYXIqIHNlZ21lbnQ7CisgICAg
aWYgKCFwb3NpdGlvbkluU2VnbWVudCkgeworICAgICAgICBzZWdtZW50ID0gYWxsb2NhdGVTZWdt
ZW50KCk7CisgICAgICAgIG1fc2VnbWVudHMuYXBwZW5kKHNlZ21lbnQpOworICAgIH0gZWxzZQor
ICAgICAgICBzZWdtZW50ID0gbV9zZWdtZW50cy5sYXN0KCkgKyBwb3NpdGlvbkluU2VnbWVudDsK
KworICAgIHVuc2lnbmVkIHNlZ21lbnRGcmVlU3BhY2UgPSBzZWdtZW50U2l6ZSAtIHBvc2l0aW9u
SW5TZWdtZW50OworICAgIHVuc2lnbmVkIGJ5dGVzVG9Db3B5ID0gc3RkOjptaW4obGVuZ3RoLCBz
ZWdtZW50RnJlZVNwYWNlKTsKKworICAgIGZvciAoOzspIHsKKyAgICAgICAgbWVtY3B5KHNlZ21l
bnQsIGRhdGEsIGJ5dGVzVG9Db3B5KTsKKyAgICAgICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVk
PihsZW5ndGgpID09IGJ5dGVzVG9Db3B5KQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg
bGVuZ3RoIC09IGJ5dGVzVG9Db3B5OworICAgICAgICBkYXRhICs9IGJ5dGVzVG9Db3B5OworICAg
ICAgICBzZWdtZW50ID0gYWxsb2NhdGVTZWdtZW50KCk7CisgICAgICAgIG1fc2VnbWVudHMuYXBw
ZW5kKHNlZ21lbnQpOworICAgICAgICBieXRlc1RvQ29weSA9IHN0ZDo6bWluKGxlbmd0aCwgc2Vn
bWVudFNpemUpOworICAgIH0KKyNlbHNlCiAgICAgbV9zaXplICs9IGxlbmd0aDsKLSAgICBWZWN0
b3I8Y2hhcj4gdmVjdG9yOwotICAgIHZlY3Rvci5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKLSAgICBt
X3NlZ21lbnRzLmFwcGVuZChEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUodmVjdG9yKSkpOwor
ICAgIGlmIChtX2J1ZmZlci0+ZGF0YS5pc0VtcHR5KCkpCisgICAgICAgIG1fYnVmZmVyLT5kYXRh
LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobGVuZ3RoKTsKKyAgICBhcHBlbmRUb0RhdGFCdWZmZXIo
ZGF0YSwgbGVuZ3RoKTsKKyNlbmRpZgogfQogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKFZl
Y3RvcjxjaGFyPiYmIGRhdGEpCiB7Ci0gICAgbV9zaXplICs9IGRhdGEuc2l6ZSgpOwotICAgIG1f
c2VnbWVudHMuYXBwZW5kKERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShkYXRhKSkpOworICAg
IC8vIFRoaXMgdGFrZXMgaXRzIGFyZ3VtZW50IGFzIGEgcnZhbHVlIHJlZmVyZW5jZSBiZWNhdXNl
IHdlIGludGVuZCB0byBoYXZlIGEgZnV0dXJlCisgICAgLy8gdmVyc2lvbiB0YWtlIG93bmVyc2hp
cCBvZiB0aGUgdmVjdG9yIHJhdGhlciB0aGFuIGNvcHlpbmcuCisgICAgYXBwZW5kKGRhdGEuZGF0
YSgpLCBkYXRhLnNpemUoKSk7CiB9CiAKIHZvaWQgU2hhcmVkQnVmZmVyOjpjbGVhcigpCiB7Ci0g
ICAgbV9zaXplID0gMDsKKyAgICBtX2ZpbGVEYXRhID0geyB9OworCisgICAgY2xlYXJQbGF0Zm9y
bURhdGEoKTsKKyAgICAKKyNpZiAhVVNFKE5FVFdPUktfQ0ZEQVRBX0FSUkFZX0NBTExCQUNLKQor
ICAgIGZvciAoY2hhciogc2VnbWVudCA6IG1fc2VnbWVudHMpCisgICAgICAgIGZyZWVTZWdtZW50
KHNlZ21lbnQpOwogICAgIG1fc2VnbWVudHMuY2xlYXIoKTsKKyNlbHNlCisgICAgbV9kYXRhQXJy
YXkuY2xlYXIoKTsKKyNlbmRpZgorCisgICAgbV9zaXplID0gMDsKKyAgICBjbGVhckRhdGFCdWZm
ZXIoKTsKIH0KIAogUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjb3B5KCkgY29uc3QK
IHsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBjbG9uZSA9IGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVm
ZmVyKTsKKyAgICBSZWY8U2hhcmVkQnVmZmVyPiBjbG9uZSB7IGFkb3B0UmVmKCpuZXcgU2hhcmVk
QnVmZmVyKSB9OworCisgICAgaWYgKGhhc1BsYXRmb3JtRGF0YSgpIHx8IG1fZmlsZURhdGEpIHsK
KyAgICAgICAgY2xvbmUtPmFwcGVuZChkYXRhKCksIHNpemUoKSk7CisgICAgICAgIHJldHVybiBj
bG9uZTsKKyAgICB9CisKICAgICBjbG9uZS0+bV9zaXplID0gbV9zaXplOwotICAgIGNsb25lLT5t
X3NlZ21lbnRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9zZWdtZW50cy5zaXplKCkpOwotICAg
IGZvciAoY29uc3QgYXV0byYgc2VnbWVudCA6IG1fc2VnbWVudHMpCi0gICAgICAgIGNsb25lLT5t
X3NlZ21lbnRzLnVuY2hlY2tlZEFwcGVuZChzZWdtZW50LmNvcHlSZWYoKSk7CisgICAgY2xvbmUt
Pm1fYnVmZmVyLT5kYXRhLnJlc2VydmVDYXBhY2l0eShtX3NpemUpOworICAgIGNsb25lLT5tX2J1
ZmZlci0+ZGF0YS5hcHBlbmQobV9idWZmZXItPmRhdGEuZGF0YSgpLCBtX2J1ZmZlci0+ZGF0YS5z
aXplKCkpOworCisjaWYgIVVTRShORVRXT1JLX0NGREFUQV9BUlJBWV9DQUxMQkFDSykKKyAgICBp
ZiAoIW1fc2VnbWVudHMuaXNFbXB0eSgpKSB7CisgICAgICAgIHVuc2lnbmVkIGxhc3RJbmRleCA9
IG1fc2VnbWVudHMuc2l6ZSgpIC0gMTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGxhc3RJbmRleDsgKytpKQorICAgICAgICAgICAgY2xvbmUtPm1fYnVmZmVyLT5kYXRhLmFwcGVu
ZChtX3NlZ21lbnRzW2ldLCBzZWdtZW50U2l6ZSk7CisKKyAgICAgICAgdW5zaWduZWQgc2l6ZU9m
TGFzdFNlZ21lbnQgPSBtX3NpemUgLSBtX2J1ZmZlci0+ZGF0YS5zaXplKCkgLSBsYXN0SW5kZXgg
KiBzZWdtZW50U2l6ZTsKKyAgICAgICAgY2xvbmUtPm1fYnVmZmVyLT5kYXRhLmFwcGVuZChtX3Nl
Z21lbnRzLmxhc3QoKSwgc2l6ZU9mTGFzdFNlZ21lbnQpOworICAgIH0KKyNlbHNlCisgICAgZm9y
IChhdXRvJiBkYXRhIDogbV9kYXRhQXJyYXkpCisgICAgICAgIGNsb25lLT5tX2RhdGFBcnJheS5h
cHBlbmQoZGF0YS5nZXQoKSk7CisjZW5kaWYKKyAgICBBU1NFUlQoY2xvbmUtPnNpemUoKSA9PSBz
aXplKCkpOworCiAgICAgcmV0dXJuIGNsb25lOwogfQogCi1jb25zdCBjaGFyKiBTaGFyZWRCdWZm
ZXI6OkRhdGFTZWdtZW50OjpkYXRhKCkgY29uc3QKK3ZvaWQgU2hhcmVkQnVmZmVyOjpkdXBsaWNh
dGVEYXRhQnVmZmVySWZOZWNlc3NhcnkoKSBjb25zdAogewotICAgIGF1dG8gdmlzaXRvciA9IFdU
Rjo6bWFrZVZpc2l0b3IoCi0gICAgICAgIFtdKGNvbnN0IFZlY3RvcjxjaGFyPiYgZGF0YSkgeyBy
ZXR1cm4gZGF0YS5kYXRhKCk7IH0sCi0jaWYgVVNFKENGKQotICAgICAgICBbXShjb25zdCBSZXRh
aW5QdHI8Q0ZEYXRhUmVmPiYgZGF0YSkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBj
aGFyKj4oQ0ZEYXRhR2V0Qnl0ZVB0cihkYXRhLmdldCgpKSk7IH0sCi0jZW5kaWYKLSNpZiBVU0Uo
U09VUCkKLSAgICAgICAgW10oY29uc3QgR1VuaXF1ZVB0cjxTb3VwQnVmZmVyPiYgZGF0YSkgeyBy
ZXR1cm4gZGF0YS0+ZGF0YTsgfSwKLSNlbmRpZgotICAgICAgICBbXShjb25zdCBNYXBwZWRGaWxl
RGF0YSYgZGF0YSkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YS5k
YXRhKCkpOyB9Ci0gICAgKTsKLSAgICByZXR1cm4gV1RGOjp2aXNpdCh2aXNpdG9yLCBtX2ltbXV0
YWJsZURhdGEpOworICAgIHNpemVfdCBjdXJyZW50Q2FwYWNpdHkgPSBtX2J1ZmZlci0+ZGF0YS5j
YXBhY2l0eSgpOworICAgIGlmIChtX2J1ZmZlci0+aGFzT25lUmVmKCkgfHwgbV9zaXplIDw9IGN1
cnJlbnRDYXBhY2l0eSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc2l6ZV90IG5ld0NhcGFjaXR5
ID0gc3RkOjptYXgoc3RhdGljX2Nhc3Q8c2l6ZV90PihtX3NpemUpLCBjdXJyZW50Q2FwYWNpdHkg
KiAyKTsKKyAgICBhdXRvIG5ld0J1ZmZlciA9IGFkb3B0UmVmKCpuZXcgRGF0YUJ1ZmZlcik7Cisg
ICAgbmV3QnVmZmVyLT5kYXRhLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobmV3Q2FwYWNpdHkpOwor
ICAgIG5ld0J1ZmZlci0+ZGF0YSA9IG1fYnVmZmVyLT5kYXRhOworICAgIG1fYnVmZmVyID0gV1RG
TW92ZShuZXdCdWZmZXIpOworfQorCit2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kVG9EYXRhQnVm
ZmVyKGNvbnN0IGNoYXIgKmRhdGEsIHVuc2lnbmVkIGxlbmd0aCkgY29uc3QKK3sKKyAgICBkdXBs
aWNhdGVEYXRhQnVmZmVySWZOZWNlc3NhcnkoKTsKKyAgICBtX2J1ZmZlci0+ZGF0YS5hcHBlbmQo
ZGF0YSwgbGVuZ3RoKTsKK30KKwordm9pZCBTaGFyZWRCdWZmZXI6OmNsZWFyRGF0YUJ1ZmZlcigp
Cit7CisgICAgaWYgKCFtX2J1ZmZlci0+aGFzT25lUmVmKCkpCisgICAgICAgIG1fYnVmZmVyID0g
YWRvcHRSZWYoKm5ldyBEYXRhQnVmZmVyKTsKKyAgICBlbHNlCisgICAgICAgIG1fYnVmZmVyLT5k
YXRhLmNsZWFyKCk7CiB9CiAKICNpZiAhVVNFKENGKQpAQCAtMTc0LDIxICszMTQsMTExIEBAIHZv
aWQgU2hhcmVkQnVmZmVyOjpoaW50TWVtb3J5Tm90TmVlZGVkU29vbigpCiB9CiAjZW5kaWYKIAot
c2l6ZV90IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OnNpemUoKSBjb25zdAorI2lmICFVU0Uo
TkVUV09SS19DRkRBVEFfQVJSQVlfQ0FMTEJBQ0spCisKK3ZvaWQgU2hhcmVkQnVmZmVyOjpjb3B5
QnVmZmVyQW5kQ2xlYXIoY2hhciogZGVzdGluYXRpb24sIHVuc2lnbmVkIGJ5dGVzVG9Db3B5KSBj
b25zdAogewotICAgIGF1dG8gdmlzaXRvciA9IFdURjo6bWFrZVZpc2l0b3IoCi0gICAgICAgIFtd
KGNvbnN0IFZlY3RvcjxjaGFyPiYgZGF0YSkgeyByZXR1cm4gZGF0YS5zaXplKCk7IH0sCi0jaWYg
VVNFKENGKQotICAgICAgICBbXShjb25zdCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYgZGF0YSkgeyBy
ZXR1cm4gQ0ZEYXRhR2V0TGVuZ3RoKGRhdGEuZ2V0KCkpOyB9LAorICAgIGZvciAoY2hhciogc2Vn
bWVudCA6IG1fc2VnbWVudHMpIHsKKyAgICAgICAgdW5zaWduZWQgZWZmZWN0aXZlQnl0ZXNUb0Nv
cHkgPSBzdGQ6Om1pbihieXRlc1RvQ29weSwgc2VnbWVudFNpemUpOworICAgICAgICBtZW1jcHko
ZGVzdGluYXRpb24sIHNlZ21lbnQsIGVmZmVjdGl2ZUJ5dGVzVG9Db3B5KTsKKyAgICAgICAgZGVz
dGluYXRpb24gKz0gZWZmZWN0aXZlQnl0ZXNUb0NvcHk7CisgICAgICAgIGJ5dGVzVG9Db3B5IC09
IGVmZmVjdGl2ZUJ5dGVzVG9Db3B5OworICAgICAgICBmcmVlU2VnbWVudChzZWdtZW50KTsKKyAg
ICB9CisgICAgbV9zZWdtZW50cy5jbGVhcigpOworfQorCiAjZW5kaWYKLSNpZiBVU0UoU09VUCkK
LSAgICAgICAgW10oY29uc3QgR1VuaXF1ZVB0cjxTb3VwQnVmZmVyPiYgZGF0YSkgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8c2l6ZV90PihkYXRhLT5sZW5ndGgpOyB9LAorCitjb25zdCBWZWN0b3I8Y2hh
cj4mIFNoYXJlZEJ1ZmZlcjo6YnVmZmVyKCkgY29uc3QKK3sKKyAgICB1bnNpZ25lZCBidWZmZXJT
aXplID0gbV9idWZmZXItPmRhdGEuc2l6ZSgpOworICAgIGlmIChtX3NpemUgPiBidWZmZXJTaXpl
KSB7CisgICAgICAgIGR1cGxpY2F0ZURhdGFCdWZmZXJJZk5lY2Vzc2FyeSgpOworICAgICAgICBt
X2J1ZmZlci0+ZGF0YS5yZXNpemUobV9zaXplKTsKKyAgICAgICAgY29weUJ1ZmZlckFuZENsZWFy
KG1fYnVmZmVyLT5kYXRhLmRhdGEoKSArIGJ1ZmZlclNpemUsIG1fc2l6ZSAtIGJ1ZmZlclNpemUp
OworICAgIH0KKyAgICByZXR1cm4gbV9idWZmZXItPmRhdGE7Cit9CisKK3Vuc2lnbmVkIFNoYXJl
ZEJ1ZmZlcjo6Z2V0U29tZURhdGEoY29uc3QgY2hhciomIHNvbWVEYXRhLCB1bnNpZ25lZCBwb3Np
dGlvbikgY29uc3QKK3sKKyAgICB1bnNpZ25lZCB0b3RhbFNpemUgPSBzaXplKCk7CisgICAgaWYg
KHBvc2l0aW9uID49IHRvdGFsU2l6ZSkgeworICAgICAgICBzb21lRGF0YSA9IDA7CisgICAgICAg
IHJldHVybiAwOworICAgIH0KKworICAgIGlmIChoYXNQbGF0Zm9ybURhdGEoKSB8fCBtX2ZpbGVE
YXRhKSB7CisgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKHBvc2l0aW9u
IDwgc2l6ZSgpKTsKKyAgICAgICAgc29tZURhdGEgPSBkYXRhKCkgKyBwb3NpdGlvbjsKKyAgICAg
ICAgcmV0dXJuIHRvdGFsU2l6ZSAtIHBvc2l0aW9uOworICAgIH0KKworICAgIEFTU0VSVF9XSVRI
X1NFQ1VSSVRZX0lNUExJQ0FUSU9OKHBvc2l0aW9uIDwgbV9zaXplKTsKKyAgICB1bnNpZ25lZCBj
b25zZWN1dGl2ZVNpemUgPSBtX2J1ZmZlci0+ZGF0YS5zaXplKCk7CisgICAgaWYgKHBvc2l0aW9u
IDwgY29uc2VjdXRpdmVTaXplKSB7CisgICAgICAgIHNvbWVEYXRhID0gbV9idWZmZXItPmRhdGEu
ZGF0YSgpICsgcG9zaXRpb247CisgICAgICAgIHJldHVybiBjb25zZWN1dGl2ZVNpemUgLSBwb3Np
dGlvbjsKKyAgICB9CisgCisgICAgcG9zaXRpb24gLT0gY29uc2VjdXRpdmVTaXplOworI2lmICFV
U0UoTkVUV09SS19DRkRBVEFfQVJSQVlfQ0FMTEJBQ0spCisgICAgdW5zaWduZWQgc2VnbWVudHMg
PSBtX3NlZ21lbnRzLnNpemUoKTsKKyAgICB1bnNpZ25lZCBtYXhTZWdtZW50ZWRTaXplID0gc2Vn
bWVudHMgKiBzZWdtZW50U2l6ZTsKKyAgICB1bnNpZ25lZCBzZWdtZW50ID0gc2VnbWVudEluZGV4
KHBvc2l0aW9uKTsKKyAgICBpZiAoc2VnbWVudCA8IHNlZ21lbnRzKSB7CisgICAgICAgIHVuc2ln
bmVkIGJ5dGVzTGVmdCA9IHRvdGFsU2l6ZSAtIGNvbnNlY3V0aXZlU2l6ZTsKKyAgICAgICAgdW5z
aWduZWQgc2VnbWVudGVkU2l6ZSA9IHN0ZDo6bWluKG1heFNlZ21lbnRlZFNpemUsIGJ5dGVzTGVm
dCk7CisKKyAgICAgICAgdW5zaWduZWQgcG9zaXRpb25JblNlZ21lbnQgPSBvZmZzZXRJblNlZ21l
bnQocG9zaXRpb24pOworICAgICAgICBzb21lRGF0YSA9IG1fc2VnbWVudHNbc2VnbWVudF0gKyBw
b3NpdGlvbkluU2VnbWVudDsKKyAgICAgICAgcmV0dXJuIHNlZ21lbnQgPT0gc2VnbWVudHMgLSAx
ID8gc2VnbWVudGVkU2l6ZSAtIHBvc2l0aW9uIDogc2VnbWVudFNpemUgLSBwb3NpdGlvbkluU2Vn
bWVudDsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIDA7Cisj
ZWxzZQorICAgIHJldHVybiBjb3B5U29tZURhdGFGcm9tRGF0YUFycmF5KHNvbWVEYXRhLCBwb3Np
dGlvbik7CiAjZW5kaWYKLSAgICAgICAgW10oY29uc3QgTWFwcGVkRmlsZURhdGEmIGRhdGEpIHsg
cmV0dXJuIGRhdGEuc2l6ZSgpOyB9Ci0gICAgKTsKLSAgICByZXR1cm4gV1RGOjp2aXNpdCh2aXNp
dG9yLCBtX2ltbXV0YWJsZURhdGEpOwogfQogCit2b2lkIFNoYXJlZEJ1ZmZlcjo6bWF5YmVUcmFu
c2Zlck1hcHBlZEZpbGVEYXRhKCkKK3sKKyAgICBpZiAobV9maWxlRGF0YSkgeworICAgICAgICBh
dXRvIGZpbGVEYXRhID0gV1RGTW92ZShtX2ZpbGVEYXRhKTsKKyAgICAgICAgYXBwZW5kKHN0YXRp
Y19jYXN0PGNvbnN0IGNoYXIqPihmaWxlRGF0YS5kYXRhKCkpLCBmaWxlRGF0YS5zaXplKCkpOwor
ICAgIH0KK30KKworI2lmICFVU0UoQ0YpICYmICFVU0UoU09VUCkKKworaW5saW5lIHZvaWQgU2hh
cmVkQnVmZmVyOjpjbGVhclBsYXRmb3JtRGF0YSgpCit7Cit9CisKK2lubGluZSB2b2lkIFNoYXJl
ZEJ1ZmZlcjo6bWF5YmVUcmFuc2ZlclBsYXRmb3JtRGF0YSgpCit7Cit9CisKK2lubGluZSBib29s
IFNoYXJlZEJ1ZmZlcjo6aGFzUGxhdGZvcm1EYXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK2lubGluZSBjb25zdCBjaGFyKiBTaGFyZWRCdWZmZXI6OnBsYXRmb3JtRGF0YSgp
IGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisKKyAgICByZXR1cm4gbnVsbHB0
cjsKK30KKworaW5saW5lIGJvb2wgU2hhcmVkQnVmZmVyOjptYXliZUFwcGVuZFBsYXRmb3JtRGF0
YShTaGFyZWRCdWZmZXImKQoreworICAgIHJldHVybiBmYWxzZTsKK30KKworI2VuZGlmCisKIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IHV0ZjhCdWZmZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7CiAg
ICAgLy8gQWxsb2NhdGUgYSBidWZmZXIgYmlnIGVub3VnaCB0byBob2xkIGFsbCB0aGUgY2hhcmFj
dGVycy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKaW5kZXggYWI2ZmVlZGVk
NzUyOWIwNzM3OGIzOGQ4ZTg0NWM2ZTRlMjlkNDBmMi4uODg1ODBjNjZmMzE4NzRiYzY4NjVmNjk5
MzkyZWMxZjM1NGMzMTkyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hh
cmVkQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgK
QEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+Ci0j
aW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTUwLDI0ICs0OSwyNyBAQCBPQkpDX0NMQVNT
IE5TRGF0YTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAotY2xhc3MgV0VCQ09SRV9FWFBP
UlQgU2hhcmVkQnVmZmVyIDogcHVibGljIFJlZkNvdW50ZWQ8U2hhcmVkQnVmZmVyPiB7CitjbGFz
cyBTaGFyZWRCdWZmZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxTaGFyZWRCdWZmZXI+IHsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBTaGFyZWRCdWZmZXIpOyB9Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNy
ZWF0ZShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZm
ZXI+IGNyZWF0ZShjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyByZXR1
cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9Ci0gICAgc3RhdGlj
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJp
bmcmIGZpbGVQYXRoKTsKKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0
IGNoYXIqIGMsIHVuc2lnbmVkIGkpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVy
KGMsIGkpKTsgfQorICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgdW5z
aWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQgc2l6ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBT
aGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9CiAKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZl
cj4gY3JlYXRlKFZlY3RvcjxjaGFyPiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYg
ZmlsZVBhdGgpOworCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+
IGNyZWF0ZShWZWN0b3I8Y2hhcj4mJik7CisgICAgCisgICAgV0VCQ09SRV9FWFBPUlQgflNoYXJl
ZEJ1ZmZlcigpOwogICAgIAogI2lmIFVTRShGT1VOREFUSU9OKQotICAgIFJldGFpblB0cjxOU0Rh
dGE+IGNyZWF0ZU5TRGF0YSgpOwotICAgIFJldGFpblB0cjxOU0FycmF5PiBjcmVhdGVOU0RhdGFB
cnJheSgpIGNvbnN0OwotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoTlNEYXRh
ICopOworICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgp
OworICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxOU0FycmF5PiBjcmVhdGVOU0RhdGFBcnJh
eSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiB3
cmFwTlNEYXRhKE5TRGF0YSAqKTsKICNlbmRpZgogI2lmIFVTRShDRikKLSAgICBSZXRhaW5QdHI8
Q0ZEYXRhUmVmPiBjcmVhdGVDRkRhdGEoKTsKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4g
Y3JlYXRlKENGRGF0YVJlZik7Ci0gICAgdm9pZCBhcHBlbmQoQ0ZEYXRhUmVmKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjcmVhdGVDRkRhdGEoKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gd3JhcENGRGF0YShDRkRhdGFSZWYp
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKENGRGF0YVJlZik7CiAjZW5kaWYKIAog
I2lmIFVTRShTT1VQKQpAQCAtNzUsOTQgKzc3LDEwMSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJl
ZjxTaGFyZWRCdWZmZXI+IHdyYXBTb3VwQnVmZmVyKFNvdXBCdWZmZXIqKTsKICNlbmRpZgogCi0g
ICAgLy8gQ2FsbGluZyBkYXRhKCkgY2F1c2VzIGFsbCB0aGUgZGF0YSBzZWdtZW50cyB0byBiZSBj
b3BpZWQgaW50byBvbmUgc2VnbWVudCBpZiB0aGV5IGFyZSBub3QgYWxyZWFkeS4KLSAgICAvLyBJ
dGVyYXRlIHRoZSBzZWdtZW50cyB1c2luZyBiZWdpbigpIGFuZCBlbmQoKSBpbnN0ZWFkLgotICAg
IC8vIEZJWE1FOiBBdWRpdCB0aGUgY2FsbCBzaXRlcyBvZiB0aGlzIGZ1bmN0aW9uIGFuZCByZXBs
YWNlIHRoZW0gd2l0aCBpdGVyYXRpb24gaWYgcG9zc2libGUuCi0gICAgY29uc3QgY2hhciogZGF0
YSgpIGNvbnN0OwotCisgICAgLy8gQ2FsbGluZyB0aGlzIGZ1bmN0aW9uIHdpbGwgZm9yY2UgaW50
ZXJuYWwgc2VnbWVudGVkIGJ1ZmZlcnMKKyAgICAvLyB0byBiZSBtZXJnZWQgaW50byBhIGZsYXQg
YnVmZmVyLiBVc2UgZ2V0U29tZURhdGEoKSB3aGVuZXZlciBwb3NzaWJsZQorICAgIC8vIGZvciBi
ZXR0ZXIgcGVyZm9ybWFuY2UuCisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgY2hhciogZGF0YSgp
IGNvbnN0OwogICAgIC8vIENyZWF0ZXMgYW4gQXJyYXlCdWZmZXIgYW5kIGNvcGllcyB0aGlzIFNo
YXJlZEJ1ZmZlcidzIGNvbnRlbnRzIHRvIHRoYXQKICAgICAvLyBBcnJheUJ1ZmZlciB3aXRob3V0
IG1lcmdpbmcgc2VnbWVudGVkIGJ1ZmZlcnMgaW50byBhIGZsYXQgYnVmZmVyLgotICAgIFJlZlB0
cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdDsKKyAgICBXRUJDT1JF
X0VYUE9SVCBSZWZQdHI8QXJyYXlCdWZmZXI+IGNyZWF0ZUFycmF5QnVmZmVyKCkgY29uc3Q7CiAK
LSAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgcmV0dXJuIGEgc2l6ZV90LgotICAgIHVuc2lnbmVk
IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCB1bnNp
Z25lZCBzaXplKCkgY29uc3Q7CiAKICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAh
c2l6ZSgpOyB9CiAKLSAgICB2b2lkIGFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImKTsKLSAgICB2
b2lkIGFwcGVuZChjb25zdCBjaGFyKiwgc2l6ZV90KTsKLSAgICB2b2lkIGFwcGVuZChWZWN0b3I8
Y2hhcj4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoU2hhcmVkQnVmZmVyJik7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoY29uc3QgY2hhciosIHVuc2lnbmVkKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChWZWN0b3I8Y2hhcj4mJik7CiAKLSAgICB2
b2lkIGNsZWFyKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhcigpOwogCi0gICAgUmVm
PFNoYXJlZEJ1ZmZlcj4gY29weSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxTaGFy
ZWRCdWZmZXI+IGNvcHkoKSBjb25zdDsKKyAgICAKKyAgICAvLyBSZXR1cm4gdGhlIG51bWJlciBv
ZiBjb25zZWN1dGl2ZSBieXRlcyBhZnRlciAicG9zaXRpb24iLiAiZGF0YSIKKyAgICAvLyBwb2lu
dHMgdG8gdGhlIGZpcnN0IGJ5dGUuCisgICAgLy8gUmV0dXJuIDAgd2hlbiBubyBtb3JlIGRhdGEg
bGVmdC4KKyAgICAvLyBXaGVuIGV4dHJhY3RpbmcgYWxsIGRhdGEgd2l0aCBnZXRTb21lRGF0YSgp
LCB0aGUgY2FsbGVyIHNob3VsZAorICAgIC8vIHJlcGVhdCBjYWxsaW5nIGl0IHVudGlsIGl0IHJl
dHVybnMgMC4KKyAgICAvLyBVc2FnZToKKyAgICAvLyAgICAgIGNvbnN0IGNoYXIqIHNlZ21lbnQ7
CisgICAgLy8gICAgICB1bnNpZ25lZCBwb3MgPSAwOworICAgIC8vICAgICAgd2hpbGUgKHVuc2ln
bmVkIGxlbmd0aCA9IHNoYXJlZEJ1ZmZlci0+Z2V0U29tZURhdGEoc2VnbWVudCwgcG9zKSkgewor
ICAgIC8vICAgICAgICAgIC8vIFVzZSB0aGUgZGF0YS4gZm9yIGV4YW1wbGU6IGRlY29kZXItPmRl
Y29kZShzZWdtZW50LCBsZW5ndGgpOworICAgIC8vICAgICAgICAgIHBvcyArPSBsZW5ndGg7Cisg
ICAgLy8gICAgICB9CisgICAgV0VCQ09SRV9FWFBPUlQgdW5zaWduZWQgZ2V0U29tZURhdGEoY29u
c3QgY2hhciomIGRhdGEsIHVuc2lnbmVkIHBvc2l0aW9uID0gMCkgY29uc3Q7CisKKyAgICBib29s
IHRyeVJlcGxhY2VDb250ZW50c1dpdGhQbGF0Zm9ybUJ1ZmZlcihTaGFyZWRCdWZmZXImKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBib29sIGhhc1BsYXRmb3JtRGF0YSgpIGNvbnN0OworCisgICAgc3Ry
dWN0IERhdGFCdWZmZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8RGF0YUJ1ZmZlcj4g
eworICAgICAgICBWZWN0b3I8Y2hhcj4gZGF0YTsKKyAgICB9OwogCi0gICAgLy8gRGF0YSB3cmFw
cGVkIGJ5IGEgRGF0YVNlZ21lbnQgc2hvdWxkIGJlIGltbXV0YWJsZSBiZWNhdXNlIGl0IGNhbiBi
ZSByZWZlcmVuY2VkIGJ5IG90aGVyIG9iamVjdHMuCi0gICAgLy8gVG8gbW9kaWZ5IG9yIGNvbWJp
bmUgdGhlIGRhdGEsIGFsbG9jYXRlIGEgbmV3IERhdGFTZWdtZW50LgotICAgIGNsYXNzIERhdGFT
ZWdtZW50IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPERhdGFTZWdtZW50PiB7Ci0gICAg
cHVibGljOgotICAgICAgICBjb25zdCBjaGFyKiBkYXRhKCkgY29uc3Q7Ci0gICAgICAgIHNpemVf
dCBzaXplKCkgY29uc3Q7CisgICAgdm9pZCBoaW50TWVtb3J5Tm90TmVlZGVkU29vbigpOwogCi0g
ICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShWZWN0b3I8Y2hhcj4mJiBkYXRh
KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQot
I2lmIFVTRShDRikKLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFJldGFp
blB0cjxDRkRhdGFSZWY+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVu
dChXVEZNb3ZlKGRhdGEpKSk7IH0KLSNlbmRpZgotI2lmIFVTRShTT1VQKQotICAgICAgICBzdGF0
aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoR1VuaXF1ZVB0cjxTb3VwQnVmZmVyPiYmIGRhdGEp
IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9Ci0j
ZW5kaWYKLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKE1hcHBlZEZpbGVE
YXRhJiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRh
dGEpKSk7IH0KK3ByaXZhdGU6CisgICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyKCk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyKGNvbnN0IGNoYXIqLCB1bnNpZ25lZCk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyKGNvbnN0IHVuc2lnbmVkIGNoYXIqLCB1bnNp
Z25lZCk7CisgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKE1hcHBlZEZpbGVEYXRhJiYpOwogCi0g
ICAgcHJpdmF0ZToKLSAgICAgICAgRGF0YVNlZ21lbnQoVmVjdG9yPGNoYXI+JiYgZGF0YSkKLSAg
ICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQotI2lmIFVTRShD
RikKLSAgICAgICAgRGF0YVNlZ21lbnQoUmV0YWluUHRyPENGRGF0YVJlZj4mJiBkYXRhKQotICAg
ICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9Ci0jZW5kaWYKLSNp
ZiBVU0UoU09VUCkKLSAgICAgICAgRGF0YVNlZ21lbnQoR1VuaXF1ZVB0cjxTb3VwQnVmZmVyPiYm
IGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0K
LSNlbmRpZgotICAgICAgICBEYXRhU2VnbWVudChNYXBwZWRGaWxlRGF0YSYmIGRhdGEpCi0gICAg
ICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICBzdGF0aWMg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYg
ZmlsZVBhdGgpOwogCi0gICAgICAgIFZhcmlhbnQ8VmVjdG9yPGNoYXI+LAotI2lmIFVTRShDRikK
LSAgICAgICAgICAgIFJldGFpblB0cjxDRkRhdGFSZWY+LAotI2VuZGlmCi0jaWYgVVNFKFNPVVAp
Ci0gICAgICAgICAgICBHVW5pcXVlUHRyPFNvdXBCdWZmZXI+LAotI2VuZGlmCi0gICAgICAgICAg
ICBNYXBwZWRGaWxlRGF0YT4gbV9pbW11dGFibGVEYXRhOwotICAgICAgICBmcmllbmQgY2xhc3Mg
U2hhcmVkQnVmZmVyOwotICAgIH07CisgICAgLy8gQ2FsbGluZyB0aGlzIGZ1bmN0aW9uIHdpbGwg
Zm9yY2UgaW50ZXJuYWwgc2VnbWVudGVkIGJ1ZmZlcnMKKyAgICAvLyB0byBiZSBtZXJnZWQgaW50
byBhIGZsYXQgYnVmZmVyLiBVc2UgZ2V0U29tZURhdGEoKSB3aGVuZXZlciBwb3NzaWJsZQorICAg
IC8vIGZvciBiZXR0ZXIgcGVyZm9ybWFuY2UuCisgICAgY29uc3QgVmVjdG9yPGNoYXI+JiBidWZm
ZXIoKSBjb25zdDsKIAotICAgIHVzaW5nIERhdGFTZWdtZW50VmVjdG9yID0gVmVjdG9yPFJlZjxE
YXRhU2VnbWVudD4sIDE+OwotICAgIERhdGFTZWdtZW50VmVjdG9yOjpjb25zdF9pdGVyYXRvciBi
ZWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fc2VnbWVudHMuYmVnaW4oKTsgfQotICAgIERhdGFTZWdt
ZW50VmVjdG9yOjpjb25zdF9pdGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVybiBtX3NlZ21lbnRz
LmVuZCgpOyB9CisgICAgdm9pZCBjbGVhclBsYXRmb3JtRGF0YSgpOworICAgIHZvaWQgbWF5YmVU
cmFuc2ZlclBsYXRmb3JtRGF0YSgpOworICAgIGJvb2wgbWF5YmVBcHBlbmRQbGF0Zm9ybURhdGEo
U2hhcmVkQnVmZmVyJik7CiAKLSAgICB2b2lkIGhpbnRNZW1vcnlOb3ROZWVkZWRTb29uKCk7Cisg
ICAgdm9pZCBtYXliZVRyYW5zZmVyTWFwcGVkRmlsZURhdGEoKTsKKworICAgIHZvaWQgY29weUJ1
ZmZlckFuZENsZWFyKGNoYXIqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBieXRlc1RvQ29weSkgY29u
c3Q7CisKKyAgICB2b2lkIGFwcGVuZFRvRGF0YUJ1ZmZlcihjb25zdCBjaGFyICosIHVuc2lnbmVk
KSBjb25zdDsKKyAgICB2b2lkIGR1cGxpY2F0ZURhdGFCdWZmZXJJZk5lY2Vzc2FyeSgpIGNvbnN0
OworICAgIHZvaWQgY2xlYXJEYXRhQnVmZmVyKCk7CisKKyAgICB1bnNpZ25lZCBtX3NpemUgeyAw
IH07CisgICAgbXV0YWJsZSBSZWY8RGF0YUJ1ZmZlcj4gbV9idWZmZXI7CisKKyNpZiBVU0UoTkVU
V09SS19DRkRBVEFfQVJSQVlfQ0FMTEJBQ0spCisgICAgbXV0YWJsZSBWZWN0b3I8UmV0YWluUHRy
PENGRGF0YVJlZj4+IG1fZGF0YUFycmF5OworICAgIHVuc2lnbmVkIGNvcHlTb21lRGF0YUZyb21E
YXRhQXJyYXkoY29uc3QgY2hhciomIHNvbWVEYXRhLCB1bnNpZ25lZCBwb3NpdGlvbikgY29uc3Q7
CisgICAgY29uc3QgY2hhciAqc2luZ2xlRGF0YUFycmF5QnVmZmVyKCkgY29uc3Q7CisgICAgYm9v
bCBtYXliZUFwcGVuZERhdGFBcnJheShTaGFyZWRCdWZmZXImKTsKKyNlbHNlCisgICAgbXV0YWJs
ZSBWZWN0b3I8Y2hhcio+IG1fc2VnbWVudHM7CisjZW5kaWYKKworICAgIHVuc2lnbmVkIHBsYXRm
b3JtRGF0YVNpemUoKSBjb25zdDsKKyAgICBjb25zdCBjaGFyKiBwbGF0Zm9ybURhdGEoKSBjb25z
dDsKIAotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoKSA9IGRlZmF1bHQ7Ci0g
ICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKGNvbnN0IGNoYXIqLCBzaXplX3QpOwotICAgIGV4cGxp
Y2l0IFNoYXJlZEJ1ZmZlcihjb25zdCB1bnNpZ25lZCBjaGFyKiwgc2l6ZV90KTsKLSAgICBleHBs
aWNpdCBTaGFyZWRCdWZmZXIoVmVjdG9yPGNoYXI+JiYpOwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1
ZmZlcihNYXBwZWRGaWxlRGF0YSYmKTsKICNpZiBVU0UoQ0YpCiAgICAgZXhwbGljaXQgU2hhcmVk
QnVmZmVyKENGRGF0YVJlZik7CisgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gbV9jZkRhdGE7Cisg
ICAgQ0ZEYXRhUmVmIGV4aXN0aW5nQ0ZEYXRhKCk7CiAjZW5kaWYKKwogI2lmIFVTRShTT1VQKQog
ICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihTb3VwQnVmZmVyKik7CisgICAgR1VuaXF1ZVB0cjxT
b3VwQnVmZmVyPiBtX3NvdXBCdWZmZXI7CiAjZW5kaWYKIAotICAgIHZvaWQgY29tYmluZUludG9P
bmVTZWdtZW50KCkgY29uc3Q7Ci0gICAgCi0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKTsKLQotICAgIHNp
emVfdCBtX3NpemUgeyAwIH07Ci0gICAgbXV0YWJsZSBEYXRhU2VnbWVudFZlY3RvciBtX3NlZ21l
bnRzOworICAgIE1hcHBlZEZpbGVEYXRhIG1fZmlsZURhdGE7CiB9OwogCiBSZWZQdHI8U2hhcmVk
QnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwCmluZGV4IGEyMDNmZWU2MTQy
NTEzY2MyMmU2Zjg5ZGM0YzgyNGZhMDcwMmUwOWQuLjZhMTNmZTZiNDc2ZWY0M2YyMDRjNjNlNGE1
NTg4ODU1OTdjYzc3NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJl
ZEJ1ZmZlckNodW5rUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFy
ZWRCdWZmZXJDaHVua1JlYWRlci5jcHAKQEAgLTMxLDExICszMSw2IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuaCIKIAotI2lmIEVOQUJM
RShNSFRNTCkKLQotLy8gRklYTUU6IFRoaXMgY2xhc3MgaXMgb3ZlcmtpbGwuIFJlbW92ZSB0aGlz
IGNsYXNzIGFuZCBqdXN0IGl0ZXJhdGUgdGhlIHNlZ21lbnRzIG9mIGEgU2hhcmVkQnVmZmVyCi0v
LyB1c2luZyB0aGUgY29vbCBuZXcgU2hhcmVkQnVmZmVyOjpiZWdpbigpIGFuZCBTaGFyZWRCdWZm
ZXI6OmVuZCgpIGluc3RlYWQgb2YgdXNpbmcgdGhpcyBjbGFzcy4KLQogI2luY2x1ZGUgIlNoYXJl
ZEJ1ZmZlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMDUsMTAgKzEwMCw3IEBAIGJv
b2wgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6Om5leHRDaHVuayhWZWN0b3I8Y2hhcj4mIGNodW5r
LCBib29sIGluY2x1ZGVTZXBhcmF0CiAgICAgICAgIC8vIFJlYWQgdGhlIG5leHQgc2VnbWVudC4K
ICAgICAgICAgbV9zZWdtZW50SW5kZXggPSAwOwogICAgICAgICBtX2J1ZmZlclBvc2l0aW9uICs9
IG1fc2VnbWVudExlbmd0aDsKLSAgICAgICAgLy8gTGV0J3MgcHJldGVuZCBhbGwgdGhlIGRhdGEg
aXMgaW4gb25lIGJsb2NrLgotICAgICAgICAvLyBGSVhNRTogVGhpcyBjbGFzcyBzaG91bGQgYmUg
cmVtb3ZlZCBpbiBmYXZvciBvZiBqdXN0IGl0ZXJhdGluZyB0aGUgc2VnbWVudHMgb2YgdGhlIFNo
YXJlZEJ1ZmZlci4KLSAgICAgICAgbV9zZWdtZW50ID0gbV9idWZmZXItPmRhdGEoKSArIG1fYnVm
ZmVyUG9zaXRpb247Ci0gICAgICAgIG1fc2VnbWVudExlbmd0aCA9IG1fYnVmZmVyLT5zaXplKCkg
LSBtX2J1ZmZlclBvc2l0aW9uOworICAgICAgICBtX3NlZ21lbnRMZW5ndGggPSBtX2J1ZmZlci0+
Z2V0U29tZURhdGEobV9zZWdtZW50LCBtX2J1ZmZlclBvc2l0aW9uKTsKICAgICAgICAgaWYgKCFt
X3NlZ21lbnRMZW5ndGgpIHsKICAgICAgICAgICAgIG1fcmVhY2hlZEVuZE9mRmlsZSA9IHRydWU7
CiAgICAgICAgICAgICBpZiAobV9zZXBhcmF0b3JJbmRleCA+IDApCkBAIC0xNDIsMTQgKzEzNCwx
MiBAQCBzaXplX3QgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6OnBlZWsoVmVjdG9yPGNoYXI+JiBk
YXRhLCBzaXplX3QgcmVxdWVzdGVkU2l6ZSkKIAogICAgIHNpemVfdCBidWZmZXJQb3NpdGlvbiA9
IG1fYnVmZmVyUG9zaXRpb24gKyBtX3NlZ21lbnRMZW5ndGg7CiAgICAgY29uc3QgY2hhciogc2Vn
bWVudCA9IDA7Ci0KLSAgICAvLyBMZXQncyBwcmV0ZW5kIGFsbCB0aGUgZGF0YSBpcyBpbiBvbmUg
YmxvY2suCi0gICAgLy8gRklYTUU6IFRoaXMgY2xhc3Mgc2hvdWxkIGJlIHJlbW92ZWQgaW4gZmF2
b3Igb2YganVzdCBpdGVyYXRpbmcgdGhlIHNlZ21lbnRzIG9mIHRoZSBTaGFyZWRCdWZmZXIuCi0g
ICAgaWYgKGJ1ZmZlclBvc2l0aW9uICE9IG1fYnVmZmVyLT5zaXplKCkpIHsKLSAgICAgICAgc2Vn
bWVudCA9IG1fYnVmZmVyLT5kYXRhKCkgKyBidWZmZXJQb3NpdGlvbjsKLSAgICAgICAgc2l6ZV90
IHNlZ21lbnRMZW5ndGggPSBtX2J1ZmZlci0+c2l6ZSgpIC0gYnVmZmVyUG9zaXRpb247Ci0gICAg
ICAgIGlmIChzZWdtZW50TGVuZ3RoID4gcmVxdWVzdGVkU2l6ZSkKLSAgICAgICAgICAgIHNlZ21l
bnRMZW5ndGggPSByZXF1ZXN0ZWRTaXplOworICAgIHdoaWxlIChzaXplX3Qgc2VnbWVudExlbmd0
aCA9IG1fYnVmZmVyLT5nZXRTb21lRGF0YShzZWdtZW50LCBidWZmZXJQb3NpdGlvbikpIHsKKyAg
ICAgICAgaWYgKHJlcXVlc3RlZFNpemUgPD0gcmVhZEJ5dGVzQ291bnQgKyBzZWdtZW50TGVuZ3Ro
KSB7CisgICAgICAgICAgICBkYXRhLmFwcGVuZChzZWdtZW50LCByZXF1ZXN0ZWRTaXplIC0gcmVh
ZEJ5dGVzQ291bnQpOworICAgICAgICAgICAgcmVhZEJ5dGVzQ291bnQgKz0gKHJlcXVlc3RlZFNp
emUgLSByZWFkQnl0ZXNDb3VudCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAg
ICAgICBkYXRhLmFwcGVuZChzZWdtZW50LCBzZWdtZW50TGVuZ3RoKTsKICAgICAgICAgcmVhZEJ5
dGVzQ291bnQgKz0gc2VnbWVudExlbmd0aDsKICAgICAgICAgYnVmZmVyUG9zaXRpb24gKz0gc2Vn
bWVudExlbmd0aDsKQEAgLTE1OCw1ICsxNDgsMyBAQCBzaXplX3QgU2hhcmVkQnVmZmVyQ2h1bmtS
ZWFkZXI6OnBlZWsoVmVjdG9yPGNoYXI+JiBkYXRhLCBzaXplX3QgcmVxdWVzdGVkU2l6ZSkKIH0K
IAogfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJl
ZEJ1ZmZlckNodW5rUmVhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZm
ZXJDaHVua1JlYWRlci5oCmluZGV4IDc1NmVlZTI0NmIwZTJjYWUyMGM3ZWU3Nzc5ZTY1YzBmOGQ3
MzQ2M2MuLjU2OGVjM2NiMTI4NzIyNjQ0YzA5NGJkODY5MWVlMjNmODAzNjdlMTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuaApAQCAt
MjgsOSArMjgsOCBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jcHJhZ21hIG9uY2UKLQotI2lm
IEVOQUJMRShNSFRNTCkKKyNpZm5kZWYgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXJfaAorI2RlZmlu
ZSBTaGFyZWRCdWZmZXJDaHVua1JlYWRlcl9oCiAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jZi9LZXllZEVuY29kZXJDRi5jcHAKaW5kZXggZDBmMGM5ZTI0YWNkNTc1ZGJjYTM5NTExZjNl
MzcxOGI4ZjYwMTUwMC4uNjE5YTJjMDQwMmUyMTg1ZTkzMmRkYTFkZTExODJhNGUxZTUwZTM1ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcApAQCAt
MTQ1LDcgKzE0NSw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckNGOjpmaW5p
c2hFbmNvZGluZygpCiAgICAgYXV0byBkYXRhID0gYWRvcHRDRihDRlByb3BlcnR5TGlzdENyZWF0
ZURhdGEoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbV9yb290RGljdGlvbmFyeS5nZXQoKSwga0NGUHJv
cGVydHlMaXN0QmluYXJ5Rm9ybWF0X3YxXzAsIDAsIG51bGxwdHIpKTsKICAgICBpZiAoIWRhdGEp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShkYXRhLmdldCgpKTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjp3cmFwQ0ZEYXRhKGRhdGEu
Z2V0KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKaW5kZXggNDk5NTkwNGE1OTI1ZDc0OTczM2Mw
YTc5ODk2MmZkOWRhMTJjZGZlMS4uZjQwMjRiNDc4YTllNzY3N2U2ZGVlZTMzNWI1N2VjYzdkZTkz
NTI5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVy
Q0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNw
cApAQCAtMzMsOSArMzMsMTAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TaGFyZWRCdWZm
ZXI6OlNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYgZGF0YSkKK1NoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVm
ZmVyKENGRGF0YVJlZiBjZkRhdGEpCisgICAgOiBtX2J1ZmZlcihhZG9wdFJlZigqbmV3IERhdGFC
dWZmZXIpKQorICAgICwgbV9jZkRhdGEoY2ZEYXRhKQogewotICAgIGFwcGVuZChkYXRhKTsKIH0K
IAogLy8gVXNpbmcgRm91bmRhdGlvbiBhbGxvd3MgZm9yIGFuIGV2ZW4gbW9yZSBlZmZpY2llbnQg
aW1wbGVtZW50YXRpb24gb2YgdGhpcyBmdW5jdGlvbiwKQEAgLTQzLDM0ICs0NCwxNDQgQEAgU2hh
cmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmIGRhdGEpCiAjaWYgIVVTRShGT1VOREFU
SU9OKQogUmV0YWluUHRyPENGRGF0YVJlZj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEoKQog
ewotICAgIGlmIChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKSB7Ci0gICAgICAgIGlmIChhdXRvIGRh
dGEgPSBXVEY6OmdldF9pZjxSZXRhaW5QdHI8Q0ZEYXRhUmVmPj4obV9zZWdtZW50c1swXS0+bV9p
bW11dGFibGVEYXRhKSkKLSAgICAgICAgICAgIHJldHVybiAqZGF0YTsKLSAgICB9Ci0gICAgcmV0
dXJuIGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKG51bGxwdHIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
VUludDgqPihkYXRhKCkpLCBzaXplKCkpKTsKKyAgICBpZiAobV9jZkRhdGEpCisgICAgICAgIHJl
dHVybiBtX2NmRGF0YTsKKworICAgIC8vIEludGVybmFsIGRhdGEgaW4gU2hhcmVkQnVmZmVyIGNh
biBiZSBzZWdtZW50ZWQuIFdlIG5lZWQgdG8gZ2V0IHRoZSBjb250aWd1b3VzIGJ1ZmZlci4KKyAg
ICBjb25zdCBWZWN0b3I8Y2hhcj4mIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXIoKTsKKyAgICBy
ZXR1cm4gYWRvcHRDRihDRkRhdGFDcmVhdGUoMCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50
OCo+KGNvbnRpZ3VvdXNCdWZmZXIuZGF0YSgpKSwgY29udGlndW91c0J1ZmZlci5zaXplKCkpKTsK
IH0KICNlbmRpZgogCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShDRkRh
dGFSZWYgZGF0YSkKK1JlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6d3JhcENGRGF0YShD
RkRhdGFSZWYgZGF0YSkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIo
ZGF0YSkpOwogfQogCitib29sIFNoYXJlZEJ1ZmZlcjo6aGFzUGxhdGZvcm1EYXRhKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9jZkRhdGE7Cit9CisKK2NvbnN0IGNoYXIqIFNoYXJlZEJ1ZmZlcjo6
cGxhdGZvcm1EYXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25z
dCBjaGFyKj4oQ0ZEYXRhR2V0Qnl0ZVB0cihtX2NmRGF0YS5nZXQoKSkpOworfQorCit1bnNpZ25l
ZCBTaGFyZWRCdWZmZXI6OnBsYXRmb3JtRGF0YVNpemUoKSBjb25zdAoreworICAgIHJldHVybiBD
RkRhdGFHZXRMZW5ndGgobV9jZkRhdGEuZ2V0KCkpOworfQorCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6
aGludE1lbW9yeU5vdE5lZWRlZFNvb24oKQogewotICAgIGZvciAoY29uc3QgYXV0byYgc2VnbWVu
dCA6IG1fc2VnbWVudHMpIHsKLSAgICAgICAgaWYgKHNlZ21lbnQtPmhhc09uZVJlZigpKSB7Ci0g
ICAgICAgICAgICBpZiAoYXV0byBkYXRhID0gV1RGOjpnZXRfaWY8UmV0YWluUHRyPENGRGF0YVJl
Zj4+KHNlZ21lbnQtPm1faW1tdXRhYmxlRGF0YSkpCi0gICAgICAgICAgICAgICAgT1NBbGxvY2F0
b3I6OmhpbnRNZW1vcnlOb3ROZWVkZWRTb29uKGNvbnN0X2Nhc3Q8VUludDgqPihDRkRhdGFHZXRC
eXRlUHRyKGRhdGEtPmdldCgpKSksIENGRGF0YUdldExlbmd0aChkYXRhLT5nZXQoKSkpOwotICAg
ICAgICB9Ci0gICAgfQorICAgIGlmICghaGFzUGxhdGZvcm1EYXRhKCkpCisgICAgICAgIHJldHVy
bjsKKyAgICBPU0FsbG9jYXRvcjo6aGludE1lbW9yeU5vdE5lZWRlZFNvb24oY29uc3RfY2FzdDxj
aGFyKj4ocGxhdGZvcm1EYXRhKCkpLCBwbGF0Zm9ybURhdGFTaXplKCkpOworfQorCit2b2lkIFNo
YXJlZEJ1ZmZlcjo6bWF5YmVUcmFuc2ZlclBsYXRmb3JtRGF0YSgpCit7CisgICAgaWYgKCFtX2Nm
RGF0YSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIEFTU0VSVCghbV9zaXplKTsKKyAgICAK
KyAgICAvLyBIYW5nIG9uIHRvIHRoZSBtX2NmRGF0YSBwb2ludGVyIGluIGEgbG9jYWwgcG9pbnRl
ciBhcyBhcHBlbmQoKSB3aWxsIHJlLWVudGVyIG1heWJlVHJhbnNmZXJQbGF0Zm9ybURhdGEoKQor
ICAgIC8vIGFuZCB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB0byBlYXJseSByZXR1cm4gd2hlbiBpdCBk
b2VzLgorICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNmRGF0YSA9IGFkb3B0Q0YobV9jZkRhdGEu
bGVha1JlZigpKTsKKworICAgIGFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihD
RkRhdGFHZXRCeXRlUHRyKGNmRGF0YS5nZXQoKSkpLCBDRkRhdGFHZXRMZW5ndGgoY2ZEYXRhLmdl
dCgpKSk7Cit9CisKK3ZvaWQgU2hhcmVkQnVmZmVyOjpjbGVhclBsYXRmb3JtRGF0YSgpCit7Cisg
ICAgbV9jZkRhdGEgPSAwOworfQorCitib29sIFNoYXJlZEJ1ZmZlcjo6dHJ5UmVwbGFjZUNvbnRl
bnRzV2l0aFBsYXRmb3JtQnVmZmVyKFNoYXJlZEJ1ZmZlciYgbmV3Q29udGVudHMpCit7CisgICAg
aWYgKCFuZXdDb250ZW50cy5tX2NmRGF0YSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
Y2xlYXIoKTsKKyAgICBtX2NmRGF0YSA9IG5ld0NvbnRlbnRzLm1fY2ZEYXRhOworICAgIHJldHVy
biB0cnVlOwogfQogCitib29sIFNoYXJlZEJ1ZmZlcjo6bWF5YmVBcHBlbmRQbGF0Zm9ybURhdGEo
U2hhcmVkQnVmZmVyJiBuZXdDb250ZW50cykKK3sKKyAgICBpZiAoc2l6ZSgpIHx8ICFuZXdDb250
ZW50cy5tX2NmRGF0YSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIG1fY2ZEYXRhID0gbmV3
Q29udGVudHMubV9jZkRhdGE7CisgICAgcmV0dXJuIHRydWU7Cit9CisKKyNpZiBVU0UoTkVUV09S
S19DRkRBVEFfQVJSQVlfQ0FMTEJBQ0spCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKENGRGF0
YVJlZiBkYXRhKQogewogICAgIEFTU0VSVChkYXRhKTsKKyAgICBtX2RhdGFBcnJheS5hcHBlbmQo
ZGF0YSk7CiAgICAgbV9zaXplICs9IENGRGF0YUdldExlbmd0aChkYXRhKTsKLSAgICBtX3NlZ21l
bnRzLmFwcGVuZChEYXRhU2VnbWVudDo6Y3JlYXRlKGRhdGEpKTsKIH0KIAordm9pZCBTaGFyZWRC
dWZmZXI6OmNvcHlCdWZmZXJBbmRDbGVhcihjaGFyKiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgYnl0
ZXNUb0NvcHkpIGNvbnN0Cit7CisgICAgaWYgKG1fZGF0YUFycmF5LmlzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgQ0ZJbmRleCBieXRlc0xlZnQgPSBieXRlc1RvQ29weTsKKyAgICBm
b3IgKGF1dG8mIGNmRGF0YSA6IG1fZGF0YUFycmF5KSB7CisgICAgICAgIENGSW5kZXggZGF0YUxl
biA9IENGRGF0YUdldExlbmd0aChjZkRhdGEuZ2V0KCkpOworICAgICAgICBBU1NFUlQoYnl0ZXNM
ZWZ0ID49IGRhdGFMZW4pOworICAgICAgICBtZW1jcHkoZGVzdGluYXRpb24sIENGRGF0YUdldEJ5
dGVQdHIoY2ZEYXRhLmdldCgpKSwgZGF0YUxlbik7CisgICAgICAgIGRlc3RpbmF0aW9uICs9IGRh
dGFMZW47CisgICAgICAgIGJ5dGVzTGVmdCAtPSBkYXRhTGVuOworICAgIH0KKyAgICBtX2RhdGFB
cnJheS5jbGVhcigpOworfQorCit1bnNpZ25lZCBTaGFyZWRCdWZmZXI6OmNvcHlTb21lRGF0YUZy
b21EYXRhQXJyYXkoY29uc3QgY2hhciomIHNvbWVEYXRhLCB1bnNpZ25lZCBwb3NpdGlvbikgY29u
c3QKK3sKKyAgICB1bnNpZ25lZCB0b3RhbE9mZnNldCA9IDA7CisgICAgZm9yIChhdXRvJiBjZkRh
dGEgOiBtX2RhdGFBcnJheSkgeworICAgICAgICB1bnNpZ25lZCBkYXRhTGVuID0gc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KENGRGF0YUdldExlbmd0aChjZkRhdGEuZ2V0KCkpKTsKKyAgICAgICAgQVNT
RVJUKHRvdGFsT2Zmc2V0IDw9IHBvc2l0aW9uKTsKKyAgICAgICAgdW5zaWduZWQgbG9jYWxPZmZz
ZXQgPSBwb3NpdGlvbiAtIHRvdGFsT2Zmc2V0OworICAgICAgICBpZiAobG9jYWxPZmZzZXQgPCBk
YXRhTGVuKSB7CisgICAgICAgICAgICBzb21lRGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
Y2hhciAqPihDRkRhdGFHZXRCeXRlUHRyKGNmRGF0YS5nZXQoKSkpICsgbG9jYWxPZmZzZXQ7Cisg
ICAgICAgICAgICByZXR1cm4gZGF0YUxlbiAtIGxvY2FsT2Zmc2V0OworICAgICAgICB9CisgICAg
ICAgIHRvdGFsT2Zmc2V0ICs9IGRhdGFMZW47CisgICAgfQorICAgIHJldHVybiAwOworfQorCitj
b25zdCBjaGFyICpTaGFyZWRCdWZmZXI6OnNpbmdsZURhdGFBcnJheUJ1ZmZlcigpIGNvbnN0Cit7
CisgICAgLy8gSWYgd2UgaGFkIHByZXZpb3VzbHkgY29waWVkIGRhdGEgaW50byBtX2J1ZmZlciBp
biBjb3B5RGF0YUFycmF5QW5kQ2xlYXIoKSBvciBzb21lIG90aGVyCisgICAgLy8gZnVuY3Rpb24s
IHRoZW4gd2UgY2FuJ3QgcmV0dXJuIGEgcG9pbnRlciB0byB0aGUgQ0ZEYXRhUmVmIGJ1ZmZlci4K
KyAgICBpZiAobV9idWZmZXItPmRhdGEuc2l6ZSgpKQorICAgICAgICByZXR1cm4gMDsKKworICAg
IGlmIChtX2RhdGFBcnJheS5zaXplKCkgIT0gMSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oQ0ZEYXRhR2V0Qnl0ZVB0cihtX2Rh
dGFBcnJheS5hdCgwKS5nZXQoKSkpOworfQorCitib29sIFNoYXJlZEJ1ZmZlcjo6bWF5YmVBcHBl
bmREYXRhQXJyYXkoU2hhcmVkQnVmZmVyJiBkYXRhKQoreworICAgIGlmIChtX2J1ZmZlci0+ZGF0
YS5zaXplKCkgfHwgbV9jZkRhdGEgfHwgIWRhdGEubV9kYXRhQXJyYXkuc2l6ZSgpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgIHVuc2lnbmVkIG9yaWdp
bmFsU2l6ZSA9IHNpemUoKTsKKyNlbmRpZgorICAgIGZvciAoYXV0byYgY2ZEYXRhIDogZGF0YS5t
X2RhdGFBcnJheSkKKyAgICAgICAgYXBwZW5kKGNmRGF0YS5nZXQoKSk7CisgICAgQVNTRVJUKHNp
emUoKSA9PSBvcmlnaW5hbFNpemUgKyBkYXRhLnNpemUoKSk7CisgICAgcmV0dXJuIHRydWU7Cit9
CisjZW5kaWYKKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
TmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbQppbmRleCBjZWViNjJlM2Fm
NmNjNmI5YmQ4YjlmYjYxYjNiMmMzODQxNDg5YmQ5Li5hYWM4Nzg3MWY2Yzk4ZThhNTk4MTFkOTgw
NmRjOTgyNmMwNjg4Y2M5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbQpAQCAtMTk3LDcg
KzE5Nyw3IEBAIHZvaWQgTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXI6OmZpbmlzaGVkQWRk
aW5nRGF0YSgpCiBSZWY8U2hhcmVkQnVmZmVyPiBOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRl
cjo6cmVwbGFjZW1lbnREYXRhKCkgY29uc3QKIHsKICAgICBBU1NFUlQoZGlkQmxvY2tEYXRhKCkp
OwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX3JlcGxhY2VtZW50RGF0YS5nZXQo
KSk7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6d3JhcE5TRGF0YShtX3JlcGxhY2VtZW50RGF0
YS5nZXQoKSk7CiB9CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZp
bHRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHND
b250ZW50RmlsdGVyLm1tCmluZGV4IDk1ZTkxMWYwNjk3NDk2ZWI2OTRhN2MyZjA5YjlhYWJkMjUy
OTM0ZmEuLmU3YzFlZTI0MzFjMTAxNTNhYTA1YWQ1ZjE2OTU2NzJlZjIzNTNiMTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50
RmlsdGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29u
dHJvbHNDb250ZW50RmlsdGVyLm1tCkBAIC05Myw3ICs5Myw3IEBAIHZvaWQgUGFyZW50YWxDb250
cm9sc0NvbnRlbnRGaWx0ZXI6OmZpbmlzaGVkQWRkaW5nRGF0YSgpCiBSZWY8U2hhcmVkQnVmZmVy
PiBQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlcjo6cmVwbGFjZW1lbnREYXRhKCkgY29uc3QK
IHsKICAgICBBU1NFUlQoZGlkQmxvY2tEYXRhKCkpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShtX3JlcGxhY2VtZW50RGF0YS5nZXQoKSk7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZl
cjo6d3JhcE5TRGF0YShtX3JlcGxhY2VtZW50RGF0YS5nZXQoKSk7CiB9CiAKICNpZiBFTkFCTEUo
Q09OVEVOVF9GSUxURVJJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29h
L1NoYXJlZEJ1ZmZlckNvY29hLm1tCmluZGV4IGI0ODAxZGU3MzMyMWI2YmY5ODc5NGFlM2EyMGQ5
MjdmOGRhNzI4MTcuLjcwYmU5ZTNhZDAxODY0ZTgyMWQxMTVlYmQyNjE3YTEyZGExZjU3MGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29h
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29h
Lm1tCkBAIC0zNSwxMCArMzUsMTAgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIEBpbnRl
cmZhY2UgV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgOiBOU0RhdGEKIHsKLSAgICBSZWZQdHI8Y29u
c3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gc2hhcmVkQnVmZmVyRGF0YVNlZ21lbnQ7Cisg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcjo6RGF0YUJ1ZmZlcj4gc2hhcmVkQnVmZmVyRGF0YUJ1ZmZl
cjsKIH0KIAotLSAoaWQpaW5pdFdpdGhTaGFyZWRCdWZmZXJEYXRhU2VnbWVudDooY29uc3QgU2hh
cmVkQnVmZmVyOjpEYXRhU2VnbWVudCYpZGF0YVNlZ21lbnQ7CistIChpZClpbml0V2l0aFNoYXJl
ZEJ1ZmZlckRhdGFCdWZmZXI6KFNoYXJlZEJ1ZmZlcjo6RGF0YUJ1ZmZlciopZGF0YUJ1ZmZlcjsK
IEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdlYkNvcmVTaGFyZWRCdWZmZXJEYXRhCkBAIC01OSwz
MSArNTksMzEgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAgICAgW3N1cGVyIGRlYWxsb2Nd
OwogfQogCi0tIChpZClpbml0V2l0aFNoYXJlZEJ1ZmZlckRhdGFTZWdtZW50Oihjb25zdCBTaGFy
ZWRCdWZmZXI6OkRhdGFTZWdtZW50JilkYXRhU2VnbWVudAorLSAoaWQpaW5pdFdpdGhTaGFyZWRC
dWZmZXJEYXRhQnVmZmVyOihTaGFyZWRCdWZmZXI6OkRhdGFCdWZmZXIqKWRhdGFCdWZmZXIKIHsK
ICAgICBzZWxmID0gW3N1cGVyIGluaXRdOwogICAgIAogICAgIGlmIChzZWxmKQotICAgICAgICBz
aGFyZWRCdWZmZXJEYXRhU2VnbWVudCA9ICZkYXRhU2VnbWVudDsKKyAgICAgICAgc2hhcmVkQnVm
ZmVyRGF0YUJ1ZmZlciA9IGRhdGFCdWZmZXI7CiAKICAgICByZXR1cm4gc2VsZjsKIH0KIAogLSAo
TlNVSW50ZWdlcilsZW5ndGgKIHsKLSAgICByZXR1cm4gc2hhcmVkQnVmZmVyRGF0YVNlZ21lbnQt
PnNpemUoKTsKKyAgICByZXR1cm4gc2hhcmVkQnVmZmVyRGF0YUJ1ZmZlci0+ZGF0YS5zaXplKCk7
CiB9CiAKIC0gKGNvbnN0IHZvaWQgKilieXRlcwogewotICAgIHJldHVybiBzaGFyZWRCdWZmZXJE
YXRhU2VnbWVudC0+ZGF0YSgpOworICAgIHJldHVybiBzaGFyZWRCdWZmZXJEYXRhQnVmZmVyLT5k
YXRhLmRhdGEoKTsKIH0KIAogQGVuZAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxTaGFy
ZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKE5TRGF0YSAqbnNEYXRhKQorUmVmPFNoYXJl
ZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjp3cmFwTlNEYXRhKE5TRGF0YSAqbnNEYXRhKQogewogICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcigoQ0ZEYXRhUmVmKW5zRGF0YSkpOwog
fQpAQCAtOTMsMjggKzkzLDU3IEBAIFJldGFpblB0cjxOU0RhdGE+IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlTlNEYXRhKCkKICAgICByZXR1cm4gYWRvcHROUygoTlNEYXRhICopY3JlYXRlQ0ZEYXRhKCku
bGVha1JlZigpKTsKIH0KIAorQ0ZEYXRhUmVmIFNoYXJlZEJ1ZmZlcjo6ZXhpc3RpbmdDRkRhdGEo
KQoreworICAgIGlmIChtX2NmRGF0YSkKKyAgICAgICAgcmV0dXJuIG1fY2ZEYXRhLmdldCgpOwor
CisjaWYgVVNFKE5FVFdPUktfQ0ZEQVRBX0FSUkFZX0NBTExCQUNLKQorICAgIGlmIChtX2RhdGFB
cnJheS5zaXplKCkgPT0gMSkKKyAgICAgICAgcmV0dXJuIG1fZGF0YUFycmF5LmF0KDApLmdldCgp
OworI2VuZGlmCisKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwogUmV0YWluUHRyPENGRGF0YVJl
Zj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEoKQogewotICAgIGNvbWJpbmVJbnRvT25lU2Vn
bWVudCgpOwotICAgIGlmICghbV9zZWdtZW50cy5zaXplKCkpCi0gICAgICAgIHJldHVybiBhZG9w
dENGKENGRGF0YUNyZWF0ZShudWxscHRyLCBudWxscHRyLCAwKSk7Ci0gICAgQVNTRVJUKG1fc2Vn
bWVudHMuc2l6ZSgpID09IDEpOwotICAgIHJldHVybiBhZG9wdENGKChDRkRhdGFSZWYpYWRvcHRO
UyhbW1dlYkNvcmVTaGFyZWRCdWZmZXJEYXRhIGFsbG9jXSBpbml0V2l0aFNoYXJlZEJ1ZmZlckRh
dGFTZWdtZW50Om1fc2VnbWVudHNbMF1dKS5sZWFrUmVmKCkpOworICAgIGlmIChDRkRhdGFSZWYg
Y2ZEYXRhID0gZXhpc3RpbmdDRkRhdGEoKSkKKyAgICAgICAgcmV0dXJuIGNmRGF0YTsKKworICAg
IGRhdGEoKTsgLy8gRm9yY2UgZGF0YSBpbnRvIG1fYnVmZmVyIGZyb20gc2VnbWVudHMgb3IgZGF0
YSBhcnJheS4KKyAgICByZXR1cm4gYWRvcHRDRigoQ0ZEYXRhUmVmKWFkb3B0TlMoW1tXZWJDb3Jl
U2hhcmVkQnVmZmVyRGF0YSBhbGxvY10gaW5pdFdpdGhTaGFyZWRCdWZmZXJEYXRhQnVmZmVyOm1f
YnVmZmVyLnB0cigpXSkubGVha1JlZigpKTsKIH0KIAogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hh
cmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkK
IHsKICAgICBOU0RhdGEgKnJlc291cmNlRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhDb250ZW50c09m
RmlsZTpmaWxlUGF0aF07CiAgICAgaWYgKHJlc291cmNlRGF0YSkgCi0gICAgICAgIHJldHVybiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShyZXNvdXJjZURhdGEpOworICAgICAgICByZXR1cm4gU2hhcmVk
QnVmZmVyOjp3cmFwTlNEYXRhKHJlc291cmNlRGF0YSk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9
CiAKIFJldGFpblB0cjxOU0FycmF5PiBTaGFyZWRCdWZmZXI6OmNyZWF0ZU5TRGF0YUFycmF5KCkg
Y29uc3QKIHsKLSAgICBhdXRvIGRhdGFBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBh
bGxvY10gaW5pdFdpdGhDYXBhY2l0eTptX3NlZ21lbnRzLnNpemUoKV0pOwotICAgIGZvciAoY29u
c3QgYXV0byYgc2VnbWVudCA6IG1fc2VnbWVudHMpCi0gICAgICAgIFtkYXRhQXJyYXkgYWRkT2Jq
ZWN0OmFkb3B0TlMoW1tXZWJDb3JlU2hhcmVkQnVmZmVyRGF0YSBhbGxvY10gaW5pdFdpdGhTaGFy
ZWRCdWZmZXJEYXRhU2VnbWVudDpzZWdtZW50XSkuZ2V0KCldOworICAgIGlmIChhdXRvIHBsYXRm
b3JtRGF0YSA9IChOU0RhdGEgKiltX2NmRGF0YS5nZXQoKSkKKyAgICAgICAgcmV0dXJuIEBbIHBs
YXRmb3JtRGF0YSBdOworCisgICAgaWYgKG1fZmlsZURhdGEpCisgICAgICAgIHJldHVybiBAWyBb
TlNEYXRhIGRhdGFXaXRoQnl0ZXM6bV9maWxlRGF0YS5kYXRhKCkgbGVuZ3RoOm1fZmlsZURhdGEu
c2l6ZSgpXSBdOworCisgICAgYXV0byBkYXRhQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJy
YXkgYWxsb2NdIGluaXRdKTsKKyAgICBpZiAobV9idWZmZXItPmRhdGEuc2l6ZSgpKQorICAgICAg
ICBbZGF0YUFycmF5IGFkZE9iamVjdDphZG9wdE5TKFtbV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEg
YWxsb2NdIGluaXRXaXRoU2hhcmVkQnVmZmVyRGF0YUJ1ZmZlcjptX2J1ZmZlci5wdHIoKV0pLmdl
dCgpXTsKKworI2lmIFVTRShORVRXT1JLX0NGREFUQV9BUlJBWV9DQUxMQkFDSykKKyAgICBmb3Ig
KGF1dG8mIGRhdGEgOiBtX2RhdGFBcnJheSkKKyAgICAgICAgW2RhdGFBcnJheSBhZGRPYmplY3Q6
KE5TRGF0YSAqKWRhdGEuZ2V0KCldOworI2Vsc2UKKyAgICAvLyBDb2NvYSBwbGF0Zm9ybXMgYWxs
IGN1cnJlbnRseSBVU0UoTkVUV09SS19DRkRBVEFfQVJSQVlfQ0FMTEJBQ0spLCBzbyBpbXBsZW1l
bnRpbmcgYSBjb2RlIHBhdGggZm9yIGNvcHlpbmcgc2VnbWVudHMgd291bGQgYmUgZGVhZCBjb2Rl
LgorICAgIC8vIElmIHRoaXMgZXZlciBjaGFuZ2VzLCB0aGUgZm9sbG93aW5nIHN0YXRpY19hc3Nl
cnQgd2lsbCBkZXRlY3QgaXQuCisgICAgc3RhdGljX2Fzc2VydChmYWxzZSwgIkZJWE1FOiBDb3B5
IHRoZSBzZWdtZW50cyBpbnRvIGFuIGFycmF5IG9mIE5TRGF0YSBvYmplY3RzLiIpOworI2VuZGlm
CisKICAgICByZXR1cm4gV1RGTW92ZShkYXRhQXJyYXkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZG
UmVzb3VyY2VMb2FkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KaW5kZXggNzYwMzBkMjJi
MjQzMTUwY2Q0OTA5YmIzM2RmOGE2ODY5OWUyNTU3Ny4uMDhkZTYzOTJhYzg1YjNkYjcxNGJkYTMx
ZjkwYWRhYTYyNzBlNmNjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNv
cmVBVkZSZXNvdXJjZUxvYWRlci5tbQpAQCAtMTczLDM3ICsxNzMsMjcgQEAgdm9pZCBXZWJDb3Jl
QVZGUmVzb3VyY2VMb2FkZXI6OmZ1bGZpbGxSZXF1ZXN0V2l0aFJlc291cmNlKENhY2hlZFJlc291
cmNlJiByZXNvdXIKICAgICAgICAgcmVzcG9uc2VPZmZzZXQgPSBzdGF0aWNfY2FzdDxOU1VJbnRl
Z2VyPihjb250ZW50UmFuZ2UuZmlyc3RCeXRlUG9zaXRpb24oKSk7CiAKICAgICAvLyBDaGVjayBm
b3IgcG9zc2libGUgdW5zaWduZWQgb3ZlcmZsb3cuCi0gICAgQVNTRVJUKGRhdGFSZXF1ZXN0LmN1
cnJlbnRPZmZzZXQgPj0gZGF0YVJlcXVlc3QucmVxdWVzdGVkT2Zmc2V0KTsKLSAgICBBU1NFUlQo
ZGF0YVJlcXVlc3QucmVxdWVzdGVkTGVuZ3RoID49IChkYXRhUmVxdWVzdC5jdXJyZW50T2Zmc2V0
IC0gZGF0YVJlcXVlc3QucmVxdWVzdGVkT2Zmc2V0KSk7Ci0KLSAgICBOU1VJbnRlZ2VyIHJlbWFp
bmluZ0xlbmd0aCA9IGRhdGFSZXF1ZXN0LnJlcXVlc3RlZExlbmd0aCAtIHN0YXRpY19jYXN0PE5T
VUludGVnZXI+KGRhdGFSZXF1ZXN0LmN1cnJlbnRPZmZzZXQgLSBkYXRhUmVxdWVzdC5yZXF1ZXN0
ZWRPZmZzZXQpOwotCi0gICAgYXV0byBieXRlc1RvU2tpcCA9IGRhdGFSZXF1ZXN0LmN1cnJlbnRP
ZmZzZXQgLSByZXNwb25zZU9mZnNldDsKLSAgICBSZXRhaW5QdHI8TlNBcnJheT4gYXJyYXkgPSBk
YXRhLT5jcmVhdGVOU0RhdGFBcnJheSgpOwotICAgIGZvciAoTlNEYXRhICpzZWdtZW50IGluIGFy
cmF5LmdldCgpKSB7Ci0gICAgICAgIGlmIChieXRlc1RvU2tpcCkgewotICAgICAgICAgICAgaWYg
KGJ5dGVzVG9Ta2lwID4gc2VnbWVudC5sZW5ndGgpIHsKLSAgICAgICAgICAgICAgICBieXRlc1Rv
U2tpcCAtPSBzZWdtZW50Lmxlbmd0aDsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGF1dG8gYnl0ZXNUb1VzZSA9IHNlZ21lbnQubGVuZ3RoIC0g
Ynl0ZXNUb1NraXA7Ci0gICAgICAgICAgICBbZGF0YVJlcXVlc3QgcmVzcG9uZFdpdGhEYXRhOltz
ZWdtZW50IHN1YmRhdGFXaXRoUmFuZ2U6TlNNYWtlUmFuZ2Uoc3RhdGljX2Nhc3Q8TlNVSW50ZWdl
cj4oYnl0ZXNUb1NraXApLCBzdGF0aWNfY2FzdDxOU1VJbnRlZ2VyPihzZWdtZW50Lmxlbmd0aCAt
IGJ5dGVzVG9Ta2lwKSldXTsKLSAgICAgICAgICAgIGJ5dGVzVG9Ta2lwID0gMDsKLSAgICAgICAg
ICAgIHJlbWFpbmluZ0xlbmd0aCAtPSBieXRlc1RvVXNlOwotICAgICAgICAgICAgY29udGludWU7
Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHNlZ21lbnQubGVuZ3RoIDw9IHJlbWFpbmluZ0xlbmd0
aCkgewotICAgICAgICAgICAgW2RhdGFSZXF1ZXN0IHJlc3BvbmRXaXRoRGF0YTpzZWdtZW50XTsK
LSAgICAgICAgICAgIHJlbWFpbmluZ0xlbmd0aCAtPSBzZWdtZW50Lmxlbmd0aDsKLSAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0gICAgICAgIFtkYXRhUmVxdWVzdCByZXNwb25kV2l0
aERhdGE6W3NlZ21lbnQgc3ViZGF0YVdpdGhSYW5nZTpOU01ha2VSYW5nZSgwLCByZW1haW5pbmdM
ZW5ndGgpXV07Ci0gICAgICAgIHJlbWFpbmluZ0xlbmd0aCA9IDA7Ci0gICAgICAgIGlmICghcmVt
YWluaW5nTGVuZ3RoKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQorICAgIEFTU0VSVChbZGF0
YVJlcXVlc3QgY3VycmVudE9mZnNldF0gPj0gW2RhdGFSZXF1ZXN0IHJlcXVlc3RlZE9mZnNldF0p
OworICAgIEFTU0VSVChbZGF0YVJlcXVlc3QgcmVxdWVzdGVkTGVuZ3RoXSA+PSAoW2RhdGFSZXF1
ZXN0IGN1cnJlbnRPZmZzZXRdIC0gW2RhdGFSZXF1ZXN0IHJlcXVlc3RlZE9mZnNldF0pKTsKKwor
ICAgIE5TVUludGVnZXIgcmVtYWluaW5nTGVuZ3RoID0gW2RhdGFSZXF1ZXN0IHJlcXVlc3RlZExl
bmd0aF0gLSBzdGF0aWNfY2FzdDxOU1VJbnRlZ2VyPihbZGF0YVJlcXVlc3QgY3VycmVudE9mZnNl
dF0gLSBbZGF0YVJlcXVlc3QgcmVxdWVzdGVkT2Zmc2V0XSk7CisgICAgZG8geworICAgICAgICAv
LyBDaGVjayB0byBzZWUgaWYgdGhlcmUgaXMgYW55IGRhdGEgYXZhaWxhYmxlIGluIHRoZSBidWZm
ZXIgdG8gZnVsZmlsbCB0aGUgZGF0YSByZXF1ZXN0LgorICAgICAgICBpZiAoZGF0YS0+c2l6ZSgp
IDw9IFtkYXRhUmVxdWVzdCBjdXJyZW50T2Zmc2V0XSAtIHJlc3BvbnNlT2Zmc2V0KQorICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgIGNvbnN0IGNoYXIqIHNvbWVEYXRhOworICAgICAgICBO
U1VJbnRlZ2VyIHJlY2VpdmVkTGVuZ3RoID0gZGF0YS0+Z2V0U29tZURhdGEoc29tZURhdGEsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihbZGF0YVJlcXVlc3QgY3VycmVudE9mZnNldF0gLSByZXNwb25z
ZU9mZnNldCkpOworCisgICAgICAgIC8vIENyZWF0ZSBhbiBOU0RhdGEgd2l0aCBvbmx5IGFzIG11
Y2ggb2YgdGhlIHJlY2VpdmVkIGRhdGEgYXMgbmVjZXNzYXJ5IHRvIGZ1bGZpbGwgdGhlIHJlcXVl
c3QuCisgICAgICAgIE5TVUludGVnZXIgbGVuZ3RoID0gTUlOKHJlY2VpdmVkTGVuZ3RoLCByZW1h
aW5pbmdMZW5ndGgpOworICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBuc0RhdGEgPSBhZG9wdE5T
KFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzOnNvbWVEYXRhIGxlbmd0aDpsZW5ndGhdKTsK
KworICAgICAgICBbZGF0YVJlcXVlc3QgcmVzcG9uZFdpdGhEYXRhOm5zRGF0YS5nZXQoKV07Cisg
ICAgICAgIHJlbWFpbmluZ0xlbmd0aCAtPSBsZW5ndGg7CisgICAgfSB3aGlsZSAocmVtYWluaW5n
TGVuZ3RoKTsKIAotICAgIGlmIChkYXRhUmVxdWVzdC5jdXJyZW50T2Zmc2V0ICsgZGF0YVJlcXVl
c3QucmVxdWVzdGVkTGVuZ3RoID49IGRhdGFSZXF1ZXN0LnJlcXVlc3RlZE9mZnNldCkgeworICAg
IGlmIChbZGF0YVJlcXVlc3QgY3VycmVudE9mZnNldF0gKyBbZGF0YVJlcXVlc3QgcmVxdWVzdGVk
TGVuZ3RoXSA+PSBbZGF0YVJlcXVlc3QgcmVxdWVzdGVkT2Zmc2V0XSkgewogICAgICAgICBbbV9h
dlJlcXVlc3QuZ2V0KCkgZmluaXNoTG9hZGluZ107CiAgICAgICAgIHN0b3BMb2FkaW5nKCk7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
Rm9udFBsYXRmb3JtRGF0YUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tCmluZGV4IGJkODU2N2NjNWM4Mjc4NjNl
YjIzZDZjM2M1YzBmZWExMDhkM2FkODEuLjFjZmQzZWJkYzFiMzEyMDBhYmY4ZjBjZDkxOTIyYjY1
OWQ3ZTcyNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW0KQEAgLTIwMSw3ICsyMDEs
NyBAQCBSZXRhaW5QdHI8Q0ZUeXBlUmVmPiBGb250UGxhdGZvcm1EYXRhOjpvYmplY3RGb3JFcXVh
bGl0eUNoZWNrKCkgY29uc3QKIFJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6
Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CiB7CiAgICAgaWYgKFJldGFpblB0
cjxDRkRhdGFSZWY+IGRhdGEgPSBhZG9wdENGKENURm9udENvcHlUYWJsZShmb250KCksIHRhYmxl
LCBrQ1RGb250VGFibGVPcHRpb25Ob09wdGlvbnMpKSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpOworICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjp3
cmFwQ0ZEYXRhKGRhdGEuZ2V0KCkpOwogICAgIAogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktp
dFdlYlNvdXJjZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcAppbmRleCBmYjhmYTA1NWYx
Nzg0MjlkOTQ1ZTA2MjUwMDBkOGFiMThhNmZlYjkxLi40ZWVhYzczZmEzZDQ0Yjc3ZDE4YTM0OWI2
ZDBhMWEyMTcyZTkyYzUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVh
bWVyLmNwcApAQCAtMTE2Myw4ICsxMTYzLDEzIEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVTdHJlYW1p
bmdDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgY2hhcioKIAog
dm9pZCBSZXNvdXJjZUhhbmRsZVN0cmVhbWluZ0NsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZXNv
dXJjZUhhbmRsZSosIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgLyogZW5jb2RlZExl
bmd0aCAqLykKIHsKLSAgICBmb3IgKGNvbnN0IGF1dG8mIHNlZ21lbnQgOiBidWZmZXIuZ2V0KCkp
Ci0gICAgICAgIGhhbmRsZURhdGFSZWNlaXZlZChzZWdtZW50LT5kYXRhKCksIHNlZ21lbnQtPnNp
emUoKSk7CisgICAgLy8gVGhpcyBwYXR0ZXJuIGlzIHN1Z2dlc3RlZCBieSBTaGFyZWRCdWZmZXIu
aC4KKyAgICBjb25zdCBjaGFyKiBzZWdtZW50OworICAgIHVuc2lnbmVkIHBvc2l0aW9uID0gMDsK
KyAgICB3aGlsZSAodW5zaWduZWQgbGVuZ3RoID0gYnVmZmVyLT5nZXRTb21lRGF0YShzZWdtZW50
LCBwb3NpdGlvbikpIHsKKyAgICAgICAgaGFuZGxlRGF0YVJlY2VpdmVkKHNlZ21lbnQsIGxlbmd0
aCk7CisgICAgICAgIHBvc2l0aW9uICs9IGxlbmd0aDsKKyAgICB9CiB9CiAKIHZvaWQgUmVzb3Vy
Y2VIYW5kbGVTdHJlYW1pbmdDbGllbnQ6OmRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUq
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdl
TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1t
CmluZGV4IGY1ZmE2OTdjOTY4ZjM2ZjU4ODBkZDQwZmM1ZTAzZTlkYmJiZGRjNWUuLjJkYmE4MGE0
N2MxMmE2OWUwMDYwMWNkYzBmZGJmNzEyYzM3N2I0NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW0KQEAgLTYzLDcgKzYzLDcgQEAgUGFz
c1JlZlB0cjxJbWFnZT4gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKGNvbnN0IGNoYXIgKm5h
bWUpCiAgICAgTlNEYXRhICpuYW1lZEltYWdlRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhDb250ZW50
c09mRmlsZTppbWFnZVBhdGhdOwogICAgIGlmIChuYW1lZEltYWdlRGF0YSkgewogICAgICAgICBh
dXRvIGltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSgpOwotICAgICAgICBpbWFnZS0+c2V0RGF0
YShTaGFyZWRCdWZmZXI6OmNyZWF0ZShuYW1lZEltYWdlRGF0YSksIHRydWUpOworICAgICAgICBp
bWFnZS0+c2V0RGF0YShTaGFyZWRCdWZmZXI6OndyYXBOU0RhdGEobmFtZWRJbWFnZURhdGEpLCB0
cnVlKTsKICAgICAgICAgcmV0dXJuIFdURk1vdmUoaW1hZ2UpOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5j
cHAKaW5kZXggODlhZTNmZmY3OTQ4NGYyNmQ2MzZhZjYxNWQzN2NiZTQ0OGQyYTM5OC4uNTQyOGU0
NWI2ZTU3ODcwM2RmYzg5YWMwODQzYzA5MzI3NTEzMDQwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwCkBAIC00
MiwxOSArNDIsMTcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgewogCi1zdGF0
aWMgdW5zaWduZWQgY29weUZyb21TaGFyZWRCdWZmZXIoY2hhciogYnVmZmVyLCB1bnNpZ25lZCBi
dWZmZXJMZW5ndGgsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgc2hhcmVkQnVmZmVyKQordW5zaWduZWQg
Y29weUZyb21TaGFyZWRCdWZmZXIoY2hhciogYnVmZmVyLCB1bnNpZ25lZCBidWZmZXJMZW5ndGgs
IGNvbnN0IFNoYXJlZEJ1ZmZlciYgc2hhcmVkQnVmZmVyLCB1bnNpZ25lZCBvZmZzZXQpCiB7CiAg
ICAgdW5zaWduZWQgYnl0ZXNFeHRyYWN0ZWQgPSAwOwotICAgIGZvciAoY29uc3QgYXV0byYgc2Vn
bWVudCA6IHNoYXJlZEJ1ZmZlcikgewotICAgICAgICBpZiAoYnl0ZXNFeHRyYWN0ZWQgKyBzZWdt
ZW50LT5zaXplKCkgPD0gYnVmZmVyTGVuZ3RoKSB7Ci0gICAgICAgICAgICBtZW1jcHkoYnVmZmVy
ICsgYnl0ZXNFeHRyYWN0ZWQsIHNlZ21lbnQtPmRhdGEoKSwgc2VnbWVudC0+c2l6ZSgpKTsKLSAg
ICAgICAgICAgIGJ5dGVzRXh0cmFjdGVkICs9IHNlZ21lbnQtPnNpemUoKTsKLSAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIEFTU0VSVChidWZmZXJMZW5ndGggLSBieXRlc0V4dHJhY3RlZCA8
IHNlZ21lbnQtPnNpemUoKSk7Ci0gICAgICAgICAgICBtZW1jcHkoYnVmZmVyICsgYnl0ZXNFeHRy
YWN0ZWQsIHNlZ21lbnQtPmRhdGEoKSwgYnVmZmVyTGVuZ3RoIC0gYnl0ZXNFeHRyYWN0ZWQpOwot
ICAgICAgICAgICAgYnl0ZXNFeHRyYWN0ZWQgPSBidWZmZXJMZW5ndGg7CisgICAgY29uc3QgY2hh
ciogbW9yZURhdGE7CisgICAgd2hpbGUgKHVuc2lnbmVkIG1vcmVEYXRhTGVuZ3RoID0gc2hhcmVk
QnVmZmVyLmdldFNvbWVEYXRhKG1vcmVEYXRhLCBvZmZzZXQpKSB7CisgICAgICAgIHVuc2lnbmVk
IGJ5dGVzVG9Db3B5ID0gbWluKGJ1ZmZlckxlbmd0aCAtIGJ5dGVzRXh0cmFjdGVkLCBtb3JlRGF0
YUxlbmd0aCk7CisgICAgICAgIG1lbWNweShidWZmZXIgKyBieXRlc0V4dHJhY3RlZCwgbW9yZURh
dGEsIGJ5dGVzVG9Db3B5KTsKKyAgICAgICAgYnl0ZXNFeHRyYWN0ZWQgKz0gYnl0ZXNUb0NvcHk7
CisgICAgICAgIGlmIChieXRlc0V4dHJhY3RlZCA9PSBidWZmZXJMZW5ndGgpCiAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgfQorICAgICAgICBvZmZzZXQgKz0gYnl0ZXNUb0NvcHk7CiAgICAg
fQogICAgIHJldHVybiBieXRlc0V4dHJhY3RlZDsKIH0KQEAgLTEwMiw3ICsxMDAsNyBAQCBSZWZQ
dHI8SW1hZ2VEZWNvZGVyPiBJbWFnZURlY29kZXI6OmNyZWF0ZShjb25zdCBTaGFyZWRCdWZmZXIm
IGRhdGEsIGNvbnN0IFVSTCYsCiB7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGxlbmd0aE9m
TG9uZ2VzdFNpZ25hdHVyZSA9IDE0OyAvLyBUbyB3aXQ6ICJSSUZGPz8/P1dFQlBWUCIKICAgICBj
aGFyIGNvbnRlbnRzW2xlbmd0aE9mTG9uZ2VzdFNpZ25hdHVyZV07Ci0gICAgdW5zaWduZWQgbGVu
Z3RoID0gY29weUZyb21TaGFyZWRCdWZmZXIoY29udGVudHMsIGxlbmd0aE9mTG9uZ2VzdFNpZ25h
dHVyZSwgZGF0YSk7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gY29weUZyb21TaGFyZWRCdWZmZXIo
Y29udGVudHMsIGxlbmd0aE9mTG9uZ2VzdFNpZ25hdHVyZSwgZGF0YSwgMCk7CiAgICAgaWYgKGxl
bmd0aCA8IGxlbmd0aE9mTG9uZ2VzdFNpZ25hdHVyZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3Bu
Zy9QTkdJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggYzg1ZDgyNDNiOGNiN2VlOGJkZGJj
NzFjNTliNmRkNzU0MWEzZGQ3ZS4uNmMyNjg4OTc1MjNiMWJiODcyM2NlMjM0YjlmYjk1YjkwM2M0
ZDZmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
cG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAKQEAgLTE1NywxNiArMTU3LDExIEBA
IHB1YmxpYzoKICAgICAgICAgaWYgKHNldGptcChKTVBCVUYobV9wbmcpKSkKICAgICAgICAgICAg
IHJldHVybiBkZWNvZGVyLT5zZXRGYWlsZWQoKTsKIAotICAgICAgICBhdXRvIGJ5dGVzVG9Ta2lw
ID0gbV9yZWFkT2Zmc2V0OwotICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHNlZ21lbnQgOiBkYXRh
KSB7Ci0gICAgICAgICAgICBpZiAoYnl0ZXNUb1NraXAgPiBzZWdtZW50LT5zaXplKCkpIHsKLSAg
ICAgICAgICAgICAgICBieXRlc1RvU2tpcCAtPSBzZWdtZW50LT5zaXplKCk7Ci0gICAgICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBtX3JlYWRPZmZzZXQg
Kz0gc2VnbWVudC0+c2l6ZSgpOworICAgICAgICBjb25zdCBjaGFyKiBzZWdtZW50OworICAgICAg
ICB3aGlsZSAodW5zaWduZWQgc2VnbWVudExlbmd0aCA9IGRhdGEuZ2V0U29tZURhdGEoc2VnbWVu
dCwgbV9yZWFkT2Zmc2V0KSkgeworICAgICAgICAgICAgbV9yZWFkT2Zmc2V0ICs9IHNlZ21lbnRM
ZW5ndGg7CiAgICAgICAgICAgICBtX2N1cnJlbnRCdWZmZXJTaXplID0gbV9yZWFkT2Zmc2V0Owot
ICAgICAgICAgICAgcG5nX3Byb2Nlc3NfZGF0YShtX3BuZywgbV9pbmZvLCByZWludGVycHJldF9j
YXN0PHBuZ19ieXRlcD4oY29uc3RfY2FzdDxjaGFyKj4oc2VnbWVudC0+ZGF0YSgpICsgYnl0ZXNU
b1NraXApKSwgc2VnbWVudC0+c2l6ZSgpIC0gYnl0ZXNUb1NraXApOwotICAgICAgICAgICAgYnl0
ZXNUb1NraXAgPSAwOworICAgICAgICAgICAgcG5nX3Byb2Nlc3NfZGF0YShtX3BuZywgbV9pbmZv
LCByZWludGVycHJldF9jYXN0PHBuZ19ieXRlcD4oY29uc3RfY2FzdDxjaGFyKj4oc2VnbWVudCkp
LCBzZWdtZW50TGVuZ3RoKTsKICAgICAgICAgICAgIC8vIFdlIGV4cGxpY2l0bHkgc3BlY2lmeSB0
aGUgc3VwZXJjbGFzcyBlbmNvZGVkRGF0YVN0YXR1cygpIGJlY2F1c2Ugd2UKICAgICAgICAgICAg
IC8vIG1lcmVseSB3YW50IHRvIGNoZWNrIGlmIHdlJ3ZlIG1hbmFnZWQgdG8gc2V0IHRoZSBzaXpl
LCBub3QKICAgICAgICAgICAgIC8vIChyZWN1cnNpdmVseSkgdHJpZ2dlciBhZGRpdGlvbmFsIGRl
Y29kaW5nIGlmIHdlIGhhdmVuJ3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQppbmRleCBhY2IwYjAxZWQyY2MyMTZlYTUwZmEw
MDFmYWNkYTI0MmRhNWYzNDFiLi42ZTViOGMxZTk5NzI0MTNmZTZmNDMyNDUxMDM2NGZiZTg5YTUy
NWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0
ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBh
c3RlYm9hcmRJT1MubW0KQEAgLTM2Miw3ICszNjIsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBQ
bGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5
cAogCiAgICAgaWYgKCFbcGFzdGVib2FyZEl0ZW0gY291bnRdKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3Bhc3RlYm9hcmRJdGVtLmdl
dCgpIG9iamVjdEF0SW5kZXg6MF0pOworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OndyYXBOU0Rh
dGEoW3Bhc3RlYm9hcmRJdGVtLmdldCgpIG9iamVjdEF0SW5kZXg6MF0pOwogfQogCiBTdHJpbmcg
UGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiB0
eXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRN
YWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQppbmRl
eCA4YWQ0NzU4ZjA2YmMyMWFmZmVjN2Y4ZmRkY2M0NWMwNmVlODA4MGFhLi5hOTBlYzNkYjlkODhi
ZTdhYjVlMzE5MWU5NDE0MDQ3NDY0NWI0MWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvUGFzdGVib2FyZE1hYy5tbQpAQCAtMjYxLDcgKzI2MSw3IEBAIHN0YXRpYyB2b2lkIHdy
aXRlRmlsZVdyYXBwZXJBc1JURkRBdHRhY2htZW50KE5TRmlsZVdyYXBwZXIgKndyYXBwZXIsIGNv
bnN0IFN0cmluCiAgICAgaWYgKCFSVEZERGF0YSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbmV3
Q2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCkt
PnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUoUlRGRERhdGEpLnB0cigpLCBO
U1JURkRQYm9hcmRUeXBlLCBwYXN0ZWJvYXJkTmFtZSk7CisgICAgbmV3Q2hhbmdlQ291bnQgPSBw
bGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldEJ1ZmZlckZvclR5
cGUoU2hhcmVkQnVmZmVyOjp3cmFwTlNEYXRhKFJURkREYXRhKS5wdHIoKSwgTlNSVEZEUGJvYXJk
VHlwZSwgcGFzdGVib2FyZE5hbWUpOwogfQogCiB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0
IFBhc3RlYm9hcmRJbWFnZSYgcGFzdGVib2FyZEltYWdlKQpAQCAtMjc4LDcgKzI3OCw3IEBAIHZv
aWQgUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZEltYWdlJiBwYXN0ZWJvYXJkSW1h
Z2UpCiAgICAgICAgIHR5cGVzLmFwcGVuZChXZWJBcmNoaXZlUGJvYXJkVHlwZSk7CiAKICAgICBt
X2NoYW5nZUNvdW50ID0gd3JpdGVVUkxGb3JUeXBlcyh0eXBlcywgbV9wYXN0ZWJvYXJkTmFtZSwg
cGFzdGVib2FyZEltYWdlLnVybCk7Ci0gICAgbV9jaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRl
Z2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShpbWFnZURhdGEpLnB0cigpLCBOU1RJRkZQYm9hcmRUeXBlLCBtX3Bhc3RlYm9h
cmROYW1lKTsKKyAgICBtX2NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3Rl
Ym9hcmRTdHJhdGVneSgpLT5zZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlcjo6d3JhcENGRGF0
YShpbWFnZURhdGEpLnB0cigpLCBOU1RJRkZQYm9hcmRUeXBlLCBtX3Bhc3RlYm9hcmROYW1lKTsK
ICAgICBpZiAocGFzdGVib2FyZEltYWdlLmRhdGFJbldlYkFyY2hpdmVGb3JtYXQpCiAgICAgICAg
IG1fY2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5
KCktPnNldEJ1ZmZlckZvclR5cGUocGFzdGVib2FyZEltYWdlLmRhdGFJbldlYkFyY2hpdmVGb3Jt
YXQuZ2V0KCksIFdlYkFyY2hpdmVQYm9hcmRUeXBlLCBtX3Bhc3RlYm9hcmROYW1lKTsKICAgICB3
cml0ZUZpbGVXcmFwcGVyQXNSVEZEQXR0YWNobWVudChmaWxlV3JhcHBlcihwYXN0ZWJvYXJkSW1h
Z2UpLCBtX3Bhc3RlYm9hcmROYW1lLCBtX2NoYW5nZUNvdW50KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IDE2YTI0
OGM3YmI3YzUyMzNmODI2NDUxZGVlMDZhMmFmODQzYjI4OTcuLmRhZmY0ZmM1OTg0YTNmNmEyZDZj
NGRjNmE4YTYxODI4NmFkYjYyYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQpAQCAtNTAsNyArNTAsNyBAQCBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVAogICAgIE5TRGF0YSAqZGF0YSA9IFttX3Bhc3RlYm9hcmQuZ2V0KCkg
ZGF0YUZvclR5cGU6cGFzdGVib2FyZFR5cGVdOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtbZGF0YSBjb3B5
XSBhdXRvcmVsZWFzZV0pOworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OndyYXBOU0RhdGEoW1tk
YXRhIGNvcHldIGF1dG9yZWxlYXNlXSk7CiB9CiAKIGludCBQbGF0Zm9ybVBhc3RlYm9hcmQ6Om51
bWJlck9mRmlsZXMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwCmluZGV4IDljZmY4OTM2NWM3NGUzMzY0YWFkZTI2NGFi
MGMzYTBmYWU0NzQ5MzIuLjhlNTc0YzFkMjA5ZjA0NTA0YzFiODg2ZTU5OGY5YTliY2M0N2U2OTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNl
SGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNv
dXJjZUhhbmRsZS5jcHAKQEAgLTYwNCw3ICs2MDQsNyBAQCB2b2lkIEJsb2JSZXNvdXJjZUhhbmRs
ZTo6bm90aWZ5UmVzcG9uc2VPbkVycm9yKCkKIHZvaWQgQmxvYlJlc291cmNlSGFuZGxlOjpub3Rp
ZnlSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgYnl0ZXNSZWFkKQogewogICAgIGlm
IChjbGllbnQoKSkKLSAgICAgICAgY2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIodGhpcywgU2hh
cmVkQnVmZmVyOjpjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSks
IGJ5dGVzUmVhZCksIGJ5dGVzUmVhZCk7CisgICAgICAgIGNsaWVudCgpLT5kaWRSZWNlaXZlQnVm
ZmVyKHRoaXMsIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGJ5dGVzUmVhZCksIGJ5dGVzUmVh
ZCk7CiB9CiAKIHZvaWQgQmxvYlJlc291cmNlSGFuZGxlOjpub3RpZnlGYWlsKEVycm9yIGVycm9y
Q29kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRUhl
YWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL01JTUVIZWFkZXIuY3Bw
CmluZGV4IDI1MTY5M2U2ZGRmNTRiMTczZjJhN2ZlMTc5MDdiMmQwMzkzYjc3YmQuLjI2N2I1OTdi
MTI3NzdlOTAzNGE4MzM0NzE4YTkxMGEzNTk4NTMzOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9NSU1FSGVhZGVyLmNwcApAQCAtMzEsOCArMzEsNiBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk1JTUVIZWFkZXIuaCIKIAotI2lmIEVOQUJMRShNSFRN
TCkKLQogI2luY2x1ZGUgIlBhcnNlZENvbnRlbnRUeXBlLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVm
ZmVyQ2h1bmtSZWFkZXIuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtMTM1LDUgKzEz
MywzIEBAIE1JTUVIZWFkZXI6Ok1JTUVIZWFkZXIoKQogfQogCiB9Ci0KLSNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9NSU1FSGVhZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL01JTUVIZWFkZXIuaAppbmRleCAwMDhhZWMyZTA3
ZTM2OTg3NzBmMGMxMzJmNTg2MmEzNGE1YTJjYjFjLi40ZGYzZTI4ZmI3YWEzNDk2NzRiNmZhYmY5
ZDU4NTZiZDUyZTNmY2U1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL01JTUVIZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL01J
TUVIZWFkZXIuaApAQCAtMjgsOSArMjgsOCBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jcHJh
Z21hIG9uY2UKLQotI2lmIEVOQUJMRShNSFRNTCkKKyNpZm5kZWYgTUlNRUhlYWRlcl9oCisjZGVm
aW5lIE1JTUVIZWFkZXJfaAogCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9u
UXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhh
bmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcAppbmRleCAx
ZDM5ZjY4OTA2ODMwNGIxNGRiMDI5MmU3ODYwYTRjMWExYmEyNWM3Li5kZTI5ZGUyNjVhMDQ2Zjc0
MjdhMjVmNjM0YWYxODhjMTBhYWJmMmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRo
T3BlcmF0aW9uUXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1
ZS5jcHAKQEAgLTE3Nyw3ICsxNzcsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0
aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZFJlY2VpdmVEYXRhKENGRAogICAgICAg
ICBpZiAocHJvdGVjdGVkVGhpcy0+aGFzSGFuZGxlKCkgJiYgbV9oYW5kbGUtPmNsaWVudCgpKSB7
CiAgICAgICAgICAgICBMT0coTmV0d29yaywgIkNGTmV0IC0gUmVzb3VyY2VIYW5kbGVDRlVSTENv
bm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlkUmVjZWl2ZURhdGEoaGFuZGxl
PSVwKSAoJXMpIiwgbV9oYW5kbGUsIG1faGFuZGxlLT5maXJzdFJlcXVlc3QoKS51cmwoKS5zdHJp
bmcoKS51dGY4KCkuZGF0YSgpKTsKIAotICAgICAgICAgICAgbV9oYW5kbGUtPmNsaWVudCgpLT5k
aWRSZWNlaXZlQnVmZmVyKG1faGFuZGxlLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKSwgb3Jp
Z2luYWxMZW5ndGgpOworICAgICAgICAgICAgbV9oYW5kbGUtPmNsaWVudCgpLT5kaWRSZWNlaXZl
QnVmZmVyKG1faGFuZGxlLCBTaGFyZWRCdWZmZXI6OndyYXBDRkRhdGEoZGF0YSksIG9yaWdpbmFs
TGVuZ3RoKTsKICAgICAgICAgfQogCiAgICAgICAgIENGUmVsZWFzZShkYXRhKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU3luY2hyb25vdXNSZXNvdXJj
ZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRl
bGVnYXRlLmNwcAppbmRleCBiZmM1NTdhMGIxYmM3OGYyM2M5NjhiYjhkMWViYWIxY2IzMGEyOGM5
Li5kMWNkOGU1NTlhYzI0MjgyOGIxMjgwZDUwYWEzZTFhZDA3NWVhMmFmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1N5bmNocm9ub3VzUmVzb3VyY2VIYW5k
bGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9TeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVs
ZWdhdGUuY3BwCkBAIC0xODQsNyArMTg0LDcgQEAgdm9pZCBTeW5jaHJvbm91c1Jlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OmRpZFJlY2VpdmVEYXRhKENGRGF0YVJlZgogICAg
IExPRyhOZXR3b3JrLCAiQ0ZOZXQgLSBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25u
ZWN0aW9uRGVsZWdhdGU6OmRpZFJlY2VpdmVEYXRhKGhhbmRsZT0lcCwgYnl0ZXM9JWxkKSAoJXMp
IiwgbV9oYW5kbGUsIENGRGF0YUdldExlbmd0aChkYXRhKSwgbV9oYW5kbGUtPmZpcnN0UmVxdWVz
dCgpLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgaWYgKFJlc291cmNlSGFu
ZGxlQ2xpZW50KiBjbGllbnQgPSBtX2hhbmRsZS0+Y2xpZW50KCkpCi0gICAgICAgIGNsaWVudC0+
ZGlkUmVjZWl2ZUJ1ZmZlcihtX2hhbmRsZSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSksIG9y
aWdpbmFsTGVuZ3RoKTsKKyAgICAgICAgY2xpZW50LT5kaWRSZWNlaXZlQnVmZmVyKG1faGFuZGxl
LCBTaGFyZWRCdWZmZXI6OndyYXBDRkRhdGEoZGF0YSksIG9yaWdpbmFsTGVuZ3RoKTsKIH0KIAog
dm9pZCBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OmRp
ZEZpbmlzaExvYWRpbmcoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZS5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUu
bW0KaW5kZXggZjAyNWNmYjc4YzhmZGM2ZmZhZmNlNmQxYTUzZDA4N2VhOTVmZDg0NS4uYzgyNWEy
OTk1NzM3ODc5NGQ0MzgxMzQ5NTZkNGRmY2I4OGIzOWViMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0
ZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVz
b3VyY2VIYW5kbGVBc0RlbGVnYXRlLm1tCkBAIC0xNzQsNyArMTc0LDcgQEAgdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xOTc5MwogICAgIC8vIC0xIG1lYW5zIHdlIGRvIG5vdCBwcm92aWRlIGFueSBk
YXRhIGFib3V0IHRyYW5zZmVyIHNpemUgdG8gaW5zcGVjdG9yIHNvIGl0IHdvdWxkIHVzZQogICAg
IC8vIENvbnRlbnQtTGVuZ3RoIGhlYWRlcnMgb3IgY29udGVudCBzaXplIHRvIHNob3cgdHJhbnNm
ZXIgc2l6ZS4KLSAgICBtX2hhbmRsZS0+Y2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIobV9oYW5k
bGUsIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpLCAtMSk7CisgICAgbV9oYW5kbGUtPmNsaWVu
dCgpLT5kaWRSZWNlaXZlQnVmZmVyKG1faGFuZGxlLCBTaGFyZWRCdWZmZXI6OndyYXBOU0RhdGEo
ZGF0YSksIC0xKTsKIH0KIAogLSAodm9pZCljb25uZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKilj
b25uZWN0aW9uIGRpZFNlbmRCb2R5RGF0YTooTlNJbnRlZ2VyKWJ5dGVzV3JpdHRlbiB0b3RhbEJ5
dGVzV3JpdHRlbjooTlNJbnRlZ2VyKXRvdGFsQnl0ZXNXcml0dGVuIHRvdGFsQnl0ZXNFeHBlY3Rl
ZFRvV3JpdGU6KE5TSW50ZWdlcil0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5k
bGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUu
bW0KaW5kZXggZDdhMzRmMGIzYTU5ZWY5ZThmOTczOTFiODcyYzcxMmRiMjk0MTU2ZS4uNjMxZjRi
ZTFmMDAyMzdmYzhiN2U2Njc5MzJlOTQwNmE4OGRmOThjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRp
b25RdWV1ZURlbGVnYXRlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
bWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbQpAQCAt
MjIzLDcgKzIyMyw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogICAgICAgICAvLyBGSVhN
RTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NzkzCiAgICAgICAg
IC8vIC0xIG1lYW5zIHdlIGRvIG5vdCBwcm92aWRlIGFueSBkYXRhIGFib3V0IHRyYW5zZmVyIHNp
emUgdG8gaW5zcGVjdG9yIHNvIGl0IHdvdWxkIHVzZQogICAgICAgICAvLyBDb250ZW50LUxlbmd0
aCBoZWFkZXJzIG9yIGNvbnRlbnQgc2l6ZSB0byBzaG93IHRyYW5zZmVyIHNpemUuCi0gICAgICAg
IG1faGFuZGxlLT5jbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlcihtX2hhbmRsZSwgU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoZGF0YSksIC0xKTsKKyAgICAgICAgbV9oYW5kbGUtPmNsaWVudCgpLT5kaWRS
ZWNlaXZlQnVmZmVyKG1faGFuZGxlLCBTaGFyZWRCdWZmZXI6OndyYXBOU0RhdGEoZGF0YSksIC0x
KTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc291
cC9TaGFyZWRCdWZmZXJTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NvdXAvU2hh
cmVkQnVmZmVyU291cC5jcHAKaW5kZXggOWMwYmY3OWQ1ZDY0MjQ3MDRhNGE2MjIxNTRjMDEyMDM4
ODYzNTFjZi4uM2I0YjYxYTkyNjhlNjVhN2UxY2JmMzkxMWYzZWI1OGYwN2MzNDQ1MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc291cC9TaGFyZWRCdWZmZXJTb3VwLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zb3VwL1NoYXJlZEJ1ZmZlclNvdXAuY3BwCkBA
IC0yNywxMCArMjcsMTAgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU2hhcmVkQnVmZmVyOjpT
aGFyZWRCdWZmZXIoU291cEJ1ZmZlciogc291cEJ1ZmZlcikKKyAgICA6IG1fYnVmZmVyKCpuZXcg
RGF0YUJ1ZmZlcikKKyAgICAsIG1fc291cEJ1ZmZlcihzb3VwQnVmZmVyKQogewogICAgIEFTU0VS
VChzb3VwQnVmZmVyKTsKLSAgICBtX3NpemUgPSBzb3VwQnVmZmVyLT5sZW5ndGg7Ci0gICAgbV9z
ZWdtZW50cy5hcHBlbmQoRGF0YVNlZ21lbnQ6OmNyZWF0ZShHVW5pcXVlUHRyPFNvdXBCdWZmZXI+
KHNvdXBCdWZmZXIpKSk7CiB9CiAKIFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6d3Jh
cFNvdXBCdWZmZXIoU291cEJ1ZmZlciogc291cEJ1ZmZlcikKQEAgLTQwLDYgKzQwLDExIEBAIFJl
ZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6d3JhcFNvdXBCdWZmZXIoU291cEJ1ZmZlciog
c291cEJ1ZmZlcikKIAogR1VuaXF1ZVB0cjxTb3VwQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZVNvdXBCdWZmZXIodW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBzaXplKQogeworICAgIGlmICht
X3NvdXBCdWZmZXIgJiYgIW9mZnNldCAmJiAhc2l6ZSkgeworICAgICAgICBHVW5pcXVlUHRyPFNv
dXBCdWZmZXI+IGJ1ZmZlcihzb3VwX2J1ZmZlcl9jb3B5KG1fc291cEJ1ZmZlci5nZXQoKSkpOwor
ICAgICAgICByZXR1cm4gYnVmZmVyOworICAgIH0KKwogICAgIHJlZigpOwogICAgIEdVbmlxdWVQ
dHI8U291cEJ1ZmZlcj4gYnVmZmVyKHNvdXBfYnVmZmVyX25ld193aXRoX293bmVyKGRhdGEoKSAr
IG9mZnNldCwgc2l6ZSA/IHNpemUgOiB0aGlzLT5zaXplKCksIHRoaXMsIFtdKHZvaWQqIGRhdGEp
IHsKICAgICAgICAgc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4oZGF0YSktPmRlcmVmKCk7CkBA
IC00Nyw2ICs1Miw1NyBAQCBHVW5pcXVlUHRyPFNvdXBCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlU291cEJ1ZmZlcih1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkCiAgICAgcmV0dXJuIGJ1ZmZl
cjsKIH0KIAordm9pZCBTaGFyZWRCdWZmZXI6OmNsZWFyUGxhdGZvcm1EYXRhKCkKK3sKKyAgICBt
X3NvdXBCdWZmZXIucmVzZXQoKTsKK30KKwordm9pZCBTaGFyZWRCdWZmZXI6Om1heWJlVHJhbnNm
ZXJQbGF0Zm9ybURhdGEoKQoreworICAgIGlmICghbV9zb3VwQnVmZmVyKQorICAgICAgICByZXR1
cm47CisKKyAgICBBU1NFUlQoIW1fc2l6ZSk7CisKKyAgICAvLyBIYW5nIG9uIHRvIHRoZSBtX3Nv
dXBCdWZmZXIgcG9pbnRlciBpbiBhIGxvY2FsIHBvaW50ZXIgYXMgYXBwZW5kKCkgd2lsbCByZS1l
bnRlciBtYXliZVRyYW5zZmVyUGxhdGZvcm1EYXRhKCkKKyAgICAvLyBhbmQgd2UgbmVlZCB0byBt
YWtlIHN1cmUgdG8gZWFybHkgcmV0dXJuIHdoZW4gaXQgZG9lcy4KKyAgICBHVW5pcXVlUHRyPFNv
dXBCdWZmZXI+IHNvdXBCdWZmZXI7CisgICAgc291cEJ1ZmZlci5zd2FwKG1fc291cEJ1ZmZlcik7
CisKKyAgICBhcHBlbmQoc291cEJ1ZmZlci0+ZGF0YSwgc291cEJ1ZmZlci0+bGVuZ3RoKTsKK30K
KworYm9vbCBTaGFyZWRCdWZmZXI6Omhhc1BsYXRmb3JtRGF0YSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1fc291cEJ1ZmZlci5nZXQoKTsKK30KKworY29uc3QgY2hhciogU2hhcmVkQnVmZmVyOjpw
bGF0Zm9ybURhdGEoKSBjb25zdAoreworICAgIHJldHVybiBtX3NvdXBCdWZmZXItPmRhdGE7Cit9
CisKK3Vuc2lnbmVkIFNoYXJlZEJ1ZmZlcjo6cGxhdGZvcm1EYXRhU2l6ZSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fc291cEJ1ZmZlci0+bGVuZ3RoOworfQorCitib29sIFNoYXJlZEJ1ZmZlcjo6
bWF5YmVBcHBlbmRQbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyJikKK3sKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK2Jvb2wgU2hhcmVkQnVmZmVyOjp0cnlSZXBsYWNlQ29udGVudHNXaXRoUGxhdGZv
cm1CdWZmZXIoU2hhcmVkQnVmZmVyJiBuZXdDb250ZW50cykKK3sKKyAgICBpZiAoIW5ld0NvbnRl
bnRzLmhhc1BsYXRmb3JtRGF0YSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBjbGVh
cigpOworICAgIC8vIEZJWE1FOiBVc2UgR1JlZlB0ciBpbnN0ZWFkIG9mIEdVbmlxdWVQdHIgZm9y
IHRoZSBTb3VwQnVmZmVyLgorICAgIG1fc291cEJ1ZmZlci5zd2FwKG5ld0NvbnRlbnRzLm1fc291
cEJ1ZmZlcik7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCBjYmIzMDVi
MjFhMDcwYjYyOTVkZGQ4YThlMTIxNWFlYzg5ZDA2MWNlLi4xMzA2MTA4Yzg0YTNiOTMzNGYzZDky
N2FhNWJmNGY5MzU0NTg1MTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0
cFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAK
QEAgLTIyOSw3ICsyMjksNyBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IFhNTEh0dHBSZXF1ZXN0Ojpj
cmVhdGVSZXNwb25zZUFycmF5QnVmZmVyKCkKICAgICBBU1NFUlQobV9yZXNwb25zZVR5cGUgPT0g
UmVzcG9uc2VUeXBlOjpBcnJheWJ1ZmZlcik7CiAgICAgQVNTRVJUKGRvbmVXaXRob3V0RXJyb3Jz
KCkpOwogCi0gICAgYXV0byByZXN1bHQgPSBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciA/IG1fYmlu
YXJ5UmVzcG9uc2VCdWlsZGVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpIDogQXJyYXlCdWZmZXI6
OmNyZWF0ZShudWxscHRyLCAwKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1fYmluYXJ5UmVzcG9uc2VC
dWlsZGVyID8gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPmNyZWF0ZUFycmF5QnVmZmVyKCkgOiBB
cnJheUJ1ZmZlcjo6Y3JlYXRlKG51bGxwdHIsIDApOwogICAgIG1fYmluYXJ5UmVzcG9uc2VCdWls
ZGVyID0gbnVsbHB0cjsKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJBcmNoaXZlLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJBcmNoaXZlLm1tCmluZGV4IGQxMDQ0ZTFiMGEzMTFlZTgyMTcxNGFiMjlkMmM5MTI3
MjliYzEyNDYuLmZmNzU0NmQ4NWY4YTU1YTU5YjgwYWFmMTdiNTRlNzJlYTYxZjk2NzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViQXJjaGl2ZS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkFyY2hpdmUubW0KQEAgLTIwMCw3ICsyMDAsNyBAQCBz
dGF0aWMgQk9PTCBpc0FycmF5T2ZDbGFzcyhpZCBvYmplY3QsIENsYXNzIGVsZW1lbnRDbGFzcykK
ICNlbmRpZgogCiAgICAgX3ByaXZhdGUgPSBbW1dlYkFyY2hpdmVQcml2YXRlIGFsbG9jXSBpbml0
XTsKLSAgICBhdXRvIGNvcmVBcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpKTsKKyAgICBhdXRvIGNvcmVBcmNoaXZlID0gTGVnYWN5V2Vi
QXJjaGl2ZTo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6d3JhcE5TRGF0YShkYXRhKSk7CiAgICAgaWYg
KCFjb3JlQXJjaGl2ZSkgewogICAgICAgICBbc2VsZiByZWxlYXNlXTsKICAgICAgICAgcmV0dXJu
IG5pbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0g
Yi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCmluZGV4IGVjOTM4M2RmOTZm
ZmJlOTg3MDhkMzU2ZjljNTI0Njc4YzA4Y2RmOGMuLjc1NjUyZDI4Y2JjZmVlNTU4Nzc4MzUxYTkx
OTkwZjQ3NDAwYWE3N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
RnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQpAQCAt
MjUwMCw3ICsyNTAwLDcgQEAgc3RhdGljIE5TVVJMICpjcmVhdGVVbmlxdWVXZWJEYXRhVVJMKCkK
ICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChiYXNlVVJMKTsKIAogICAgIFJlc291cmNlUmVz
cG9uc2UgcmVzcG9uc2UocmVzcG9uc2VVUkwsIE1JTUVUeXBlLCBbZGF0YSBsZW5ndGhdLCBlbmNv
ZGluZ05hbWUpOwotICAgIFN1YnN0aXR1dGVEYXRhIHN1YnN0aXR1dGVEYXRhKFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpLCBbdW5yZWFjaGFibGVVUkwgYWJzb2x1dGVVUkxdLCBy
ZXNwb25zZSwgU3Vic3RpdHV0ZURhdGE6OlNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eTo6SGlkZGVu
KTsKKyAgICBTdWJzdGl0dXRlRGF0YSBzdWJzdGl0dXRlRGF0YShXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI6OndyYXBOU0RhdGEoZGF0YSksIFt1bnJlYWNoYWJsZVVSTCBhYnNvbHV0ZVVSTF0sIHJlc3Bv
bnNlLCBTdWJzdGl0dXRlRGF0YTo6U2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5OjpIaWRkZW4pOwog
CiAgICAgX3ByaXZhdGUtPmNvcmVGcmFtZS0+bG9hZGVyKCkubG9hZChGcmFtZUxvYWRSZXF1ZXN0
KF9wcml2YXRlLT5jb3JlRnJhbWUsIHJlcXVlc3QsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xp
Y3k6OlNob3VsZE5vdEFsbG93LCBzdWJzdGl0dXRlRGF0YSkpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJSZXNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViUmVzb3VyY2UubW0KaW5kZXggMzk3N2I0NDRhOWY1NTYzMmRhNjdkNDNiODIz
NDY5YTQ2YTIzNDllYi4uYjNiYjc1YmE5ZDE4ZGM2OTA4YWJlZTljMmRjYjA2NjViMTE0YWZiMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJSZXNvdXJjZS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1tCkBAIC0xNDksNyArMTQ5
LDcgQEAgc3RhdGljIE5TU3RyaW5nICogY29uc3QgV2ViUmVzb3VyY2VSZXNwb25zZUtleSA9ICAg
ICAgICAgIEAiV2ViUmVzb3VyY2VSZXNwb25zZSIKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICB9
CiAKLSAgICBhdXRvIGNvcmVSZXNvdXJjZSA9IEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpLCB1cmwsIG1pbWVUeXBlLCB0ZXh0RW5jb2RpbmcsIGZyYW1l
TmFtZSwgcmVzcG9uc2UpOworICAgIGF1dG8gY29yZVJlc291cmNlID0gQXJjaGl2ZVJlc291cmNl
OjpjcmVhdGUoU2hhcmVkQnVmZmVyOjp3cmFwTlNEYXRhKGRhdGEpLCB1cmwsIG1pbWVUeXBlLCB0
ZXh0RW5jb2RpbmcsIGZyYW1lTmFtZSwgcmVzcG9uc2UpOwogICAgIGlmICghY29yZVJlc291cmNl
KSB7CiAgICAgICAgIFtzZWxmIHJlbGVhc2VdOwogICAgICAgICByZXR1cm4gbmlsOwpAQCAtMzAx
LDcgKzMwMSw3IEBAIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IFdlYlJlc291cmNlUmVzcG9uc2VL
ZXkgPSAgICAgICAgICBAIldlYlJlc291cmNlUmVzcG9uc2UiCiAgICAgICAgIHJldHVybiBuaWw7
CiAgICAgfQogCi0gICAgYXV0byBjb3JlUmVzb3VyY2UgPSBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0
ZShTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb3B5RGF0YSA/IFtbZGF0YSBjb3B5XSBhdXRvcmVsZWFz
ZV0gOiBkYXRhKSwgVVJMLCBNSU1FVHlwZSwgdGV4dEVuY29kaW5nTmFtZSwgZnJhbWVOYW1lLCBy
ZXNwb25zZSk7CisgICAgYXV0byBjb3JlUmVzb3VyY2UgPSBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0
ZShTaGFyZWRCdWZmZXI6OndyYXBOU0RhdGEoY29weURhdGEgPyBbW2RhdGEgY29weV0gYXV0b3Jl
bGVhc2VdIDogZGF0YSksIFVSTCwgTUlNRVR5cGUsIHRleHRFbmNvZGluZ05hbWUsIGZyYW1lTmFt
ZSwgcmVzcG9uc2UpOwogICAgIGlmICghY29yZVJlc291cmNlKSB7CiAgICAgICAgIFtzZWxmIHJl
bGVhc2VdOwogICAgICAgICByZXR1cm4gbmlsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KaW5kZXggZDEz
NWFmZWUwMTAxNDBkZDA5ZGQyMjg5NzQwZDdkMDhlYjVjMjMyYS4uZjBjNWMzYzlhNDdlOTIyNTE0
ZDliNDA5NjY1YzE2ZGI5ZGQ0ZjdkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCkBAIC0zODYsNyAr
Mzg2LDcgQEAgc3RhdGljIFdlYkNvcmU6Ok5ldHdvcmtMb2FkUHJpb3JpdHkgdG9OZXR3b3JrTG9h
ZFByaW9yaXR5KGZsb2F0IHByaW9yaXR5KQogCiAgICAgYXV0byBzdG9yZWRDcmVkZW50aWFscyA9
IF93aXRoQ3JlZGVudGlhbHMgPyBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsczo6QWxsb3dTdG9y
ZWRDcmVkZW50aWFscyA6IFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzOjpEb05vdEFsbG93U3Rv
cmVkQ3JlZGVudGlhbHM7CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtEYXRhVGFzayA9IF9zZXNzaW9u
LT5kYXRhVGFza0ZvcklkZW50aWZpZXIoZGF0YVRhc2sudGFza0lkZW50aWZpZXIsIHN0b3JlZENy
ZWRlbnRpYWxzKSkKLSAgICAgICAgbmV0d29ya0RhdGFUYXNrLT5kaWRSZWNlaXZlRGF0YShXZWJD
b3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKSk7CisgICAgICAgIG5ldHdvcmtEYXRhVGFz
ay0+ZGlkUmVjZWl2ZURhdGEoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjp3cmFwTlNEYXRhKGRhdGEp
KTsKIH0KIAogLSAodm9pZClVUkxTZXNzaW9uOihOU1VSTFNlc3Npb24gKilzZXNzaW9uIGRvd25s
b2FkVGFzazooTlNVUkxTZXNzaW9uRG93bmxvYWRUYXNrICopZG93bmxvYWRUYXNrIGRpZEZpbmlz
aERvd25sb2FkaW5nVG9VUkw6KE5TVVJMICopbG9jYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtL0lQQy9EYXRhUmVmZXJlbmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtL0lQQy9EYXRhUmVmZXJlbmNlLmNwcAppbmRleCA3ZGEzOGQ2OTgwYjQ0YjNiMDBiOWQ4
MDc3NTRiZjIyNmIxMjRiZGMzLi45YmRlYzRmZjRmNjY4NThiNzYzM2M4NDQxZDI3OWM4ZjcxMmM0
M2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvRGF0YVJlZmVyZW5j
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0RhdGFSZWZlcmVuY2UuY3Bw
CkBAIC00Nyw4ICs0NywxMyBAQCB2b2lkIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U6OmVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIucmVzZXJ2ZShidWZmZXJTaXpl
ICsgc2l6ZW9mKHVpbnQ2NF90KSk7CiAgICAgZW5jb2RlciA8PCBidWZmZXJTaXplOwogCi0gICAg
Zm9yIChjb25zdCBhdXRvJiBzZWdtZW50IDogKm1fYnVmZmVyKQotICAgICAgICBlbmNvZGVyLmVu
Y29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihzZWdt
ZW50LT5kYXRhKCkpLCBzZWdtZW50LT5zaXplKCksIDEpOworICAgIGNvbnN0IGNoYXIqIHBhcnRp
YWxEYXRhOworICAgIHVuc2lnbmVkIHBvc2l0aW9uID0gMDsKKyAgICB3aGlsZSAocG9zaXRpb24g
PCBidWZmZXJTaXplKSB7CisgICAgICAgIHVuc2lnbmVkIGJ5dGVzVG9Xcml0ZSA9IG1fYnVmZmVy
LT5nZXRTb21lRGF0YShwYXJ0aWFsRGF0YSwgcG9zaXRpb24pOworICAgICAgICBlbmNvZGVyLmVu
Y29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihwYXJ0
aWFsRGF0YSksIGJ5dGVzVG9Xcml0ZSwgMSk7CisgICAgICAgIHBvc2l0aW9uICs9IGJ5dGVzVG9X
cml0ZTsKKyAgICB9CiB9CiAKIH0gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAKaW5kZXggZDE0N2Q4MGU1NzQ3MzU4ZmMzNGJiM2Qz
ZTRiMWNkZWJhOGMyZGQxZC4uOWUyZWIwMDU0NDhhZjgwNmNjNTg2YzE2YWIzZWQwZjlkNjdiMGRk
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwCkBAIC04
Nyw3ICs4Nyw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNlOjp3cmFw
SW5TaGFyZWRCdWZmZXIoKQogI2lmIFVTRShDRikKICAgICBSZXRhaW5QdHI8Q0ZBbGxvY2F0b3JS
ZWY+IGRlYWxsb2NhdG9yID0gYWRvcHRDRihjcmVhdGVTaGFyZWFibGVSZXNvdXJjZURlYWxsb2Nh
dG9yKHRoaXMpKTsKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjZkRhdGEgPSBhZG9wdENGKENG
RGF0YUNyZWF0ZVdpdGhCeXRlc05vQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCByZWludGVycHJl
dF9jYXN0PGNvbnN0IFVJbnQ4Kj4oZGF0YSgpKSwgc3RhdGljX2Nhc3Q8Q0ZJbmRleD4oc2l6ZSgp
KSwgZGVhbGxvY2F0b3IuZ2V0KCkpKTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
Y2ZEYXRhLmdldCgpKTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjp3cmFwQ0ZEYXRhKGNmRGF0
YS5nZXQoKSk7CiAjZWxpZiBVU0UoU09VUCkKICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjp3cmFw
U291cEJ1ZmZlcihzb3VwX2J1ZmZlcl9uZXdfd2l0aF9vd25lcihkYXRhKCksIHNpemUoKSwgdGhp
cywgW10odm9pZCogZGF0YSkgeyBzdGF0aWNfY2FzdDxTaGFyZWFibGVSZXNvdXJjZSo+KGRhdGEp
LT5kZXJlZigpOyB9KSk7CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1VSTFNjaGVtZUhhbmRsZXJUYXNrLm1tIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VSTFNjaGVtZUhhbmRsZXJUYXNrLm1tCmluZGV4IDk1MmYx
MzFiZjZiYjZiNDBmOTI1M2NlOTg4ZmFkYzE4MWViODVmODYuLmQwZTg2OGI4MTk4MmI5ZGRjYzAw
NjYxMTY5Yjk3ZjIxMzcyMzQ3OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tVUkxTY2hlbWVIYW5kbGVyVGFzay5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVVJMU2NoZW1lSGFuZGxlclRhc2subW0KQEAgLTcwLDcg
KzcwLDcgQEAgc3RhdGljIHZvaWQgcmFpc2VFeGNlcHRpb25JZk5lY2Vzc2FyeShXZWJLaXQ6Oldl
YlVSTFNjaGVtZUhhbmRsZXJUYXNrOjpFeGNlcHRpb24KIAogLSAodm9pZClkaWRSZWNlaXZlRGF0
YTooTlNEYXRhICopZGF0YQogewotICAgIGF1dG8gcmVzdWx0ID0gX3VybFNjaGVtZUhhbmRsZXJU
YXNrLT50YXNrKCkuZGlkUmVjZWl2ZURhdGEoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUo
ZGF0YSkpOworICAgIGF1dG8gcmVzdWx0ID0gX3VybFNjaGVtZUhhbmRsZXJUYXNrLT50YXNrKCku
ZGlkUmVjZWl2ZURhdGEoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjp3cmFwTlNEYXRhKGRhdGEpKTsK
ICAgICByYWlzZUV4Y2VwdGlvbklmTmVjZXNzYXJ5KHJlc3VsdCk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlBy
b2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3Nl
ckNvbnRleHRDb250cm9sbGVyLm1tCmluZGV4IDQ4NmZjZmQ0M2VmZjA1MjNhNTEyZWI3MDIyMjIw
ZTk3NjQyZDI4ZWMuLjcyYmFlNWNjMjU2ZWFjMTk5MWRhZTliNjAxN2U2Y2FlMzJiZjUwODYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21h
Yy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0KKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vz
c1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQpAQCAtNjQ2LDcgKzY0Niw3IEBAIHN0
YXRpYyBpbmxpbmUgV0tFZGl0b3JJbnNlcnRBY3Rpb24gdG9XSyhFZGl0b3JJbnNlcnRBY3Rpb24g
YWN0aW9uKQogICAgICAgICAgICAgYXV0byBkYXRhQnlUeXBlID0gW21fY29udHJvbGxlci0+X2Vk
aXRpbmdEZWxlZ2F0ZS5nZXQoKSBfd2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJv
bGxlcjptX2NvbnRyb2xsZXIgcGFzdGVib2FyZERhdGFGb3JSYW5nZTp3cmFwcGVyKCpJbmplY3Rl
ZEJ1bmRsZVJhbmdlSGFuZGxlOjpnZXRPckNyZWF0ZShyYW5nZSkuZ2V0KCkpXTsKICAgICAgICAg
ICAgIGZvciAoTlNTdHJpbmcgKnR5cGUgaW4gZGF0YUJ5VHlwZSkgewogICAgICAgICAgICAgICAg
IHBhc3RlYm9hcmRUeXBlcy5hcHBlbmQodHlwZSk7Ci0gICAgICAgICAgICAgICAgcGFzdGVib2Fy
ZERhdGEuYXBwZW5kKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGFCeVR5cGVbdHlwZV0pKTsKKyAg
ICAgICAgICAgICAgICBwYXN0ZWJvYXJkRGF0YS5hcHBlbmQoU2hhcmVkQnVmZmVyOjp3cmFwTlNE
YXRhKGRhdGFCeVR5cGVbdHlwZV0pKTsKICAgICAgICAgICAgIH07CiAgICAgICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4u
bW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQpp
bmRleCAwMmQ4NGExZWY0ZWU4M2RkZWNmOTNlY2ZmYTg4MzViOTI2ODkxN2M0Li4xMzBiZjA1MjM5
MWJkZTE0Y2FiOWI2NDQxNjg2NTc2OTg2NmRhNGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQpAQCAtOTE2LDcgKzkxNiw3IEBA
IHZvaWQgUERGUGx1Z2luOjphZGRBcmNoaXZlUmVzb3VyY2UoKQogICAgIFJldGFpblB0cjxOU1VS
TFJlc3BvbnNlPiByZXNwb25zZSA9IGFkb3B0TlMoW1tOU0hUVFBVUkxSZXNwb25zZSBhbGxvY10g
aW5pdFdpdGhVUkw6bV9zb3VyY2VVUkwgc3RhdHVzQ29kZToyMDAgSFRUUFZlcnNpb246KE5TU3Ry
aW5nKilrQ0ZIVFRQVmVyc2lvbjFfMSBoZWFkZXJGaWVsZHM6aGVhZGVyc10pOwogICAgIFJlc291
cmNlUmVzcG9uc2Ugc3ludGhlc2l6ZWRSZXNwb25zZShyZXNwb25zZS5nZXQoKSk7CiAKLSAgICBS
ZWZQdHI8QXJjaGl2ZVJlc291cmNlPiByZXNvdXJjZSA9IEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRl
KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fZGF0YS5nZXQoKSksIG1fc291cmNlVVJMLCAiYXBwbGlj
YXRpb24vcGRmIiwgU3RyaW5nKCksIFN0cmluZygpLCBzeW50aGVzaXplZFJlc3BvbnNlKTsKKyAg
ICBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiByZXNvdXJjZSA9IEFyY2hpdmVSZXNvdXJjZTo6Y3Jl
YXRlKFNoYXJlZEJ1ZmZlcjo6d3JhcENGRGF0YShtX2RhdGEuZ2V0KCkpLCBtX3NvdXJjZVVSTCwg
ImFwcGxpY2F0aW9uL3BkZiIsIFN0cmluZygpLCBTdHJpbmcoKSwgc3ludGhlc2l6ZWRSZXNwb25z
ZSk7CiAgICAgcGx1Z2luVmlldygpLT5mcmFtZSgpLT5kb2N1bWVudCgpLT5sb2FkZXIoKS0+YWRk
QXJjaGl2ZVJlc291cmNlKHJlc291cmNlLnJlbGVhc2VOb25OdWxsKCkpOwogfQogCkBAIC0xNzU2
LDcgKzE3NTYsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBQREZQbHVnaW46OmxpdmVSZXNvdXJj
ZURhdGEoKSBjb25zdAogICAgIGlmICghcGRmRGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUocGRmRGF0YSk7CisgICAgcmV0dXJu
IFNoYXJlZEJ1ZmZlcjo6d3JhcE5TRGF0YShwZGZEYXRhKTsKIH0KIAogYm9vbCBQREZQbHVnaW46
OnBsdWdpbkhhbmRsZXNDb250ZW50T2Zmc2V0Rm9yQWNjZXNzaWJpbGl0eUhpdFRlc3QoKSBjb25z
dApAQCAtMTgyNyw3ICsxODI3LDcgQEAgdm9pZCBQREZQbHVnaW46OndyaXRlSXRlbXNUb1Bhc3Rl
Ym9hcmQoTlNTdHJpbmcgKnBhc3RlYm9hcmROYW1lLCBOU0FycmF5ICppdGVtcywKICAgICAgICAg
ICAgIFJldGFpblB0cjxOU1N0cmluZz4gcGxhaW5UZXh0U3RyaW5nID0gYWRvcHROUyhbW05TU3Ry
aW5nIGFsbG9jXSBpbml0V2l0aERhdGE6ZGF0YSBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGlu
Z10pOwogICAgICAgICAgICAgd2ViUHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5z
ZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpTZXRQYXN0ZWJvYXJkU3RyaW5n
Rm9yVHlwZShwYXN0ZWJvYXJkTmFtZSwgdHlwZSwgcGxhaW5UZXh0U3RyaW5nLmdldCgpKSwgTWVz
c2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6U2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5cGU6OlJl
cGx5KG5ld0NoYW5nZUNvdW50KSwgMCk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsK
KyAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
d3JhcE5TRGF0YShkYXRhKTsKIAogICAgICAgICAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgICAg
ICAgICAgY29udGludWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luVmlldy5jcHAKaW5kZXggOGMwNDM1MTZkZmNmMTBjN2ZjYTYxZjRlYTAxZDM4NjJmOTQ2
ZTQwOS4uZjM4MzI4MTRjNWZkZDU4MTE5OTEzM2Y5NGVhNzU5MDgxMzBmM2M4MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtMTMx
MSw4ICsxMzExLDE0IEBAIHZvaWQgUGx1Z2luVmlldzo6cmVkZWxpdmVyTWFudWFsU3RyZWFtKCkK
IAogICAgIC8vIERlbGl2ZXIgdGhlIGRhdGEuCiAgICAgaWYgKG1fbWFudWFsU3RyZWFtRGF0YSkg
ewotICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHNlZ21lbnQgOiAqbV9tYW51YWxTdHJlYW1EYXRh
KQotICAgICAgICAgICAgbWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKHNlZ21lbnQtPmRhdGEoKSwg
c2VnbWVudC0+c2l6ZSgpKTsKKyAgICAgICAgY29uc3QgY2hhciogZGF0YTsKKyAgICAgICAgdW5z
aWduZWQgcG9zaXRpb24gPSAwOworCisgICAgICAgIHdoaWxlICh1bnNpZ25lZCBsZW5ndGggPSBt
X21hbnVhbFN0cmVhbURhdGEtPmdldFNvbWVEYXRhKGRhdGEsIHBvc2l0aW9uKSkgeworICAgICAg
ICAgICAgbWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGRhdGEsIGxlbmd0aCk7CisgICAgICAgICAg
ICBwb3NpdGlvbiArPSBsZW5ndGg7CisgICAgICAgIH0KKwogICAgICAgICBtX21hbnVhbFN0cmVh
bURhdGEgPSBudWxscHRyOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbSBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0K
aW5kZXggNWY0NTY1NGVmN2I0MDI4NmJiZGVhYjU4ZjJlMmUyYzA4OTk2OWVlNy4uNTcxNDRhZmMz
YzVmZjNmNmUyNDM3NWZhM2NiYzAzMGMwMmVhOTdjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xp
ZW50TWFjLm1tCkBAIC0xNjUsNyArMTY1LDcgQEAgdm9pZCBXZWJEcmFnQ2xpZW50OjpkZWNsYXJl
QW5kV3JpdGVEcmFnSW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgRWxlbWUKICAg
ICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBhcmNoaXZlSGFuZGxlOwogICAgIHNpemVfdCBhcmNoaXZl
U2l6ZSA9IDA7CiAgICAgaWYgKGRhdGEpIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
YXJjaGl2ZUJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKChOU0RhdGEgKilkYXRhLmdldCgp
KTsKKyAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYXJjaGl2ZUJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6d3JhcE5TRGF0YSgoTlNEYXRhICopZGF0YS5nZXQoKSk7CiAgICAgICAgIFJlZlB0cjxT
aGFyZWRNZW1vcnk+IGFyY2hpdmVTaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6OmFs
bG9jYXRlKGFyY2hpdmVCdWZmZXItPnNpemUoKSk7CiAgICAgICAgIGlmICghYXJjaGl2ZVNoYXJl
ZE1lbW9yeUJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbSBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQppbmRleCBmOGZiMDQxZWE3
NTM3NjQ4Yjg5YTBmMTAwNThmZjMyZWMzYTAwNGIwLi40NTE5ZDIzYmZmNGVlZDI1OTM4ZGI1MWZm
Zjg1ZWRhNGYwZmM5ZTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCkBAIC03MDksNyArNzA5LDcgQEAgU3RyaW5nIFdlYlBh
Z2U6OmNhY2hlZFJlc3BvbnNlTUlNRVR5cGVGb3JVUkwoY29uc3QgVVJMJiB1cmwpCiAKIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IFdlYlBhZ2U6OmNhY2hlZFJlc3BvbnNlRGF0YUZvclVSTChjb25zdCBV
UkwmIHVybCkKIHsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoW2NhY2hlZFJlc3Bv
bnNlRm9yVVJMKHRoaXMsIHVybCkgZGF0YV0pOworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6Ondy
YXBOU0RhdGEoW2NhY2hlZFJlc3BvbnNlRm9yVVJMKHRoaXMsIHVybCkgZGF0YV0pOwogfQogCiBi
b29sIFdlYlBhZ2U6OnBsYXRmb3JtQ2FuSGFuZGxlUmVxdWVzdChjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29s
cy9DaGFuZ2VMb2cKaW5kZXggMmExODQ3Yjc1ZWI5ZGJhNDNlNDNmYjJhMTljMmVkOGM4YzZjNGNh
ZS4uZjg1ZGIyODZmZDA4N2MxMmE1MWRlNmFiMTA5MzYzZGIxZmMzMzk4OCAxMDA2NDQKLS0tIGEv
VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisy
MDE3LTA0LTI2ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KKworICAg
ICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjE1Njg2LgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcxMzQ3CisKKyAgICAgICAgVGhpcyBjaGFu
Z2UgY2F1c2VkIGFzc2VydGlvbiBmYWlsdXJlcyBpbiBleGlzdGluZyBMYXlvdXRUZXN0cworICAg
ICAgICAoUmVxdWVzdGVkIGJ5IG1sZXdpczEzIG9uICN3ZWJraXQpLgorCisgICAgICAgIFJldmVy
dGVkIGNoYW5nZXNldDoKKworICAgICAgICAiUmVkdWNlIGNvcGllcyBhbmQgYWxsb2NhdGlvbnMg
aW4gU2hhcmVkQnVmZmVyOjphcHBlbmQiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzA5NTYKKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9j
aGFuZ2VzZXQvMjE1Njg2CisKIDIwMTctMDQtMjYgIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRA
YXBwbGUuY29tPgogCiAgICAgICAgIHdlYmtpdHB5OiBUZWFyZG93biBpT1MgU2ltdWxhdG9ycyBv
biBleGl0IGlmIG1hbmFnZWQgU2ltdWxhdG9ycyBhcmUgc3RpbGwgcnVubmluZwpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcAppbmRleCAw
YTdkZDM4NTA4MjM2OTcyOWFlMGNjMmUzNjMyNzdmNGRhOTI5OWYyLi4zMmE3MzdjNGFjYWE2ZDdm
NDhiM2U2ODc3N2FlNDczYThhYjNkMGZlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcApAQCAtODcsNyArODcsNyBAQCBURVNUX0Yo
U2hhcmVkQnVmZmVyVGVzdCwgYXBwZW5kQnVmZmVyQ3JlYXRlZFdpdGhDb250ZW50c09mRXhpc3Rp
bmdGaWxlKQogICAgIEVYUEVDVF9FUSgnYScsIGJ1ZmZlci0+ZGF0YSgpW3N0cmxlbihTaGFyZWRC
dWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKV0pOwogfQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwg
dHJ5Q3JlYXRlQXJyYXlCdWZmZXIpCitURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlQXJy
YXlCdWZmZXIpCiB7CiAgICAgY2hhciB0ZXN0RGF0YTBbXSA9ICJIZWxsbyI7CiAgICAgY2hhciB0
ZXN0RGF0YTFbXSA9ICJXb3JsZCI7CkBAIC05NSwxMyArOTUsMTMgQEAgVEVTVF9GKFNoYXJlZEJ1
ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyKQogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRlc3REYXRhMCwgc3RybGVuKHRl
c3REYXRhMCkpOwogICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhMSwgc3RybGVuKHRl
c3REYXRhMSkpOwogICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhMiwgc3RybGVuKHRl
c3REYXRhMikpOwotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBzaGFyZWRC
dWZmZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBh
cnJheUJ1ZmZlciA9IHNoYXJlZEJ1ZmZlci0+Y3JlYXRlQXJyYXlCdWZmZXIoKTsKICAgICBjaGFy
IGV4cGVjdGVkQ29uY2F0ZW5hdGlvbltdID0gIkhlbGxvV29ybGRHb29kYnllIjsKICAgICBBU1NF
UlRfRVEoc3RybGVuKGV4cGVjdGVkQ29uY2F0ZW5hdGlvbiksIGFycmF5QnVmZmVyLT5ieXRlTGVu
Z3RoKCkpOwogICAgIEVYUEVDVF9FUSgwLCBtZW1jbXAoZXhwZWN0ZWRDb25jYXRlbmF0aW9uLCBh
cnJheUJ1ZmZlci0+ZGF0YSgpLCBzdHJsZW4oZXhwZWN0ZWRDb25jYXRlbmF0aW9uKSkpOwogfQog
Ci1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXJMYXJnZVNlZ21l
bnRzKQorVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZUFycmF5QnVmZmVyTGFyZ2VTZWdt
ZW50cykKIHsKICAgICBWZWN0b3I8Y2hhcj4gdmVjdG9yMCgweDQwMDAsICdhJyk7CiAgICAgVmVj
dG9yPGNoYXI+IHZlY3RvcjEoMHg0MDAwLCAnYicpOwpAQCAtMTEwLDcgKzExMCw3IEBAIFRFU1Rf
RihTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlckxhcmdlU2VnbWVudHMpCiAg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoV1RGTW92ZSh2ZWN0b3IwKSk7CiAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoV1RGTW92ZSh2
ZWN0b3IxKSk7CiAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoV1RGTW92ZSh2ZWN0b3IyKSk7Ci0g
ICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IHNoYXJlZEJ1ZmZlci0+dHJ5Q3Jl
YXRlQXJyYXlCdWZmZXIoKTsKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVyID0g
c2hhcmVkQnVmZmVyLT5jcmVhdGVBcnJheUJ1ZmZlcigpOwogICAgIEFTU0VSVF9FUSgweDQwMDBV
ICsgMHg0MDAwVSArIDB4NDAwMFUsIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAgIGlu
dCBwb3NpdGlvbiA9IDA7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAweDQwMDA7ICsraSkgewpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJl
ZEJ1ZmZlci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFy
ZWRCdWZmZXIubW0KaW5kZXggMzk5Yjk1Y2IzNDM5OGFiZmMyYzAxMWM0YzBkZmU5NjcyMWI0MWQ3
ZC4uMjY0Njc2NjU1YWJjNDk2OWIyMmRiYzU4ZjhlNzc1ZjQ0Yjg1NWYxYSAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbQor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVy
Lm1tCkBAIC01OSw4ICs1OSw4IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVOU0Rh
dGFBcnJheSkKICAgICAgICAgYnVmZmVyLT5hcHBlbmQoKENGRGF0YVJlZil3b3JsZERhdGEpOwog
ICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhLCB3b3JsZERhdGEgXSwg
YnVmZmVyLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKIAotICAgICAgICBleHBlY3REYXRh
QXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhIF0sIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGhlbGxvRGF0
YSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwotICAgICAgICBleHBlY3REYXRhQXJyYXlz
RXF1YWwoQFsgd29ybGREYXRhIF0sIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKChDRkRhdGFSZWYpd29y
bGREYXRhKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CisgICAgICAgIGV4cGVjdERhdGFB
cnJheXNFcXVhbChAWyBoZWxsb0RhdGEgXSwgU2hhcmVkQnVmZmVyOjp3cmFwTlNEYXRhKGhlbGxv
RGF0YSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOworICAgICAgICBleHBlY3REYXRhQXJy
YXlzRXF1YWwoQFsgd29ybGREYXRhIF0sIFNoYXJlZEJ1ZmZlcjo6d3JhcENGRGF0YSgoQ0ZEYXRh
UmVmKXdvcmxkRGF0YSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwogCiAgICAgICAgIGV4
cGVjdERhdGFBcnJheXNFcXVhbChAWyBbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNPZkZpbGU6dGVt
cEZpbGVQYXRoKCldIF0sIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRl
bXBGaWxlUGF0aCgpKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAgICAgfQo=
</data>
<flag name="commit-queue"
          id="329478"
          type_id="3"
          status="-"
          setter="achristensen"
    />
          </attachment>
      

    </bug>

</bugzilla>