<?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>274472</bug_id>
          
          <creation_ts>2024-05-21 08:51:20 -0700</creation_ts>
          <short_desc>REGRESSION(279031@main): SP3 and JS2 regressions</short_desc>
          <delta_ts>2024-05-21 08:55:26 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>274291</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>keith_miller</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>2036741</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2024-05-21 08:51:20 -0700</bug_when>
    <thetext>https://commits.webkit.org/279031@main introduced a regression:
SP3 and JS2 regressions

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>2036743</commentid>
    <comment_count>1</comment_count>
      <attachid>471463</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2024-05-21 08:51:27 -0700</bug_when>
    <thetext>Created attachment 471463
REVERT of 279031@main

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 revert will be successful.  This process takes approximately 15 minutes.

If you would like to land the revert 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>2036744</commentid>
    <comment_count>2</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2024-05-21 08:54:54 -0700</bug_when>
    <thetext>Committed 279058@main (a0244be336ed): &lt;https://commits.webkit.org/279058@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 471463.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2036745</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2024-05-21 08:55:26 -0700</bug_when>
    <thetext>&lt;rdar://problem/128470475&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>471463</attachid>
            <date>2024-05-21 08:51:27 -0700</date>
            <delta_ts>2024-05-21 08:54:55 -0700</delta_ts>
            <desc>REVERT of 279031@main</desc>
            <filename>bug-274472-20240521155127.patch</filename>
            <type>text/plain</type>
            <size>52022</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">RnJvbSBiYTU0MTA2MzFhYjAzZTlmZDU0NmZlYzlmZDA4OWRlOWZkNDllNjYzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDb21taXQgUXVldWUgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3Jn
PgpEYXRlOiBUdWUsIDIxIE1heSAyMDI0IDE1OjUxOjI0ICswMDAwClN1YmplY3Q6IFtQQVRDSF0g
VW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIDI3OTAzMUBtYWluLgogaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTI3NDQ3MgoKU1AzIGFuZCBKUzIgcmVncmVzc2lvbnMKClJldmVy
dGVkIGNoYW5nZXNldDoKCiJleGNlcHRpb25zIGNhbid0IGFsd2F5cyBiZSBjaGVja2VkIHVuZGVy
IHNpbGVudCBzcGlsbCBpbiBERkciCmh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yNzQyOTEKaHR0cHM6Ly9jb21taXRzLndlYmtpdC5vcmcvMjc5MDMxQG1haW4KLS0tCiAu
Li4vU2NyaXB0cy9wcm9jZXNzLWVudGl0bGVtZW50cy5zaCAgICAgICAgICAgfCAgIDggKy0KIC4u
Li9kZmcvREZHQXJyYXlpZnlTbG93UGF0aEdlbmVyYXRvci5oICAgICAgICB8ICAxMiArLQogLi4u
L0RGR0NhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9yLmggIHwgIDI3ICstLQogLi4u
bGxDcmVhdGVEaXJlY3RBcmd1bWVudHNTbG93UGF0aEdlbmVyYXRvci5oIHwgICA3ICstCiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1JlZ2lzdGVyQmFuay5oICAgfCAgIDggLQogLi4uL0RG
R1NhbmVTdHJpbmdHZXRCeVZhbFNsb3dQYXRoR2VuZXJhdG9yLmggIHwgICA2ICstCiAuLi4vZGZn
L0RGR1NpbGVudFJlZ2lzdGVyU2F2ZVBsYW4uaCAgICAgICAgICAgfCAgMTEgKy0KIC4uLi9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU2xvd1BhdGhHZW5lcmF0b3IuaCB8ICAyNiArLS0KIC4uLi9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwICB8ICA4MCArKysrLS0tLQogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oIHwgMTczICsrKy0tLS0t
LS0tLS0tLS0tLQogLi4uL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCAgICAgICAgICAgICAg
IHwgIDU0ICsrKy0tLQogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMu
Y3BwIHwgICA2ICstCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaCAgICAgICAg
ICAgfCAgIDcgLQogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9PcGVyYXRpb25SZXN1bHQuaCAg
IHwgICA5ICstCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZy5oICAgICAgICAgICAgICAg
fCAgIDMgKy0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJTZXQuaCAgICAgICB8
ICAgOSArLQogSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWNlbGwtd2l0aC10eXBlLmpzICAgIHwg
ICAyICstCiAuLi4vc3RhY2stb3ZlcmZsb3ctaW4tc2NvcGUtd2l0aC1jYXRjaC5qcyAgICAgfCAg
MjMgLS0tCiAxOCBmaWxlcyBjaGFuZ2VkLCAxNjAgaW5zZXJ0aW9ucygrKSwgMzExIGRlbGV0aW9u
cygtKQogZGVsZXRlIG1vZGUgMTAwNjQ0IEpTVGVzdHMvc3RyZXNzL3N0YWNrLW92ZXJmbG93LWlu
LXNjb3BlLXdpdGgtY2F0Y2guanMKCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
U2NyaXB0cy9wcm9jZXNzLWVudGl0bGVtZW50cy5zaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9T
Y3JpcHRzL3Byb2Nlc3MtZW50aXRsZW1lbnRzLnNoCmluZGV4IGVhNmU1YjY3YjNkNC4uNWYyY2Vl
NWFiNzE4IDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9wcm9jZXNz
LWVudGl0bGVtZW50cy5zaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9wcm9j
ZXNzLWVudGl0bGVtZW50cy5zaApAQCAtMjQsNyArMjQsNyBAQCBmdW5jdGlvbiBtYWNfcHJvY2Vz
c19qc2NfZW50aXRsZW1lbnRzKCkKICAgICAgICAgICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBw
bGUuZGV2ZWxvcGVyLmtlcm5lbC5leHRlbmRlZC12aXJ0dWFsLWFkZHJlc3NpbmcgYm9vbCBZRVMK
ICAgICAgICAgZmkKIAotICAgICAgICBpZiAoKCAiJHtUQVJHRVRfTUFDX09TX1hfVkVSU0lPTl9N
QUpPUn0iID49IDEyMDAwMCApKSAmJiBbWyAteiAiJHtTS0lQX1JPU0VUVEFfQlJFQUtJTkdfRU5U
SVRMRU1FTlRTfSIgXV0KKyAgICAgICAgaWYgKCggIiR7VEFSR0VUX01BQ19PU19YX1ZFUlNJT05f
TUFKT1J9IiA+PSAxMjAwMDAgJiYgLXogIiR7U0tJUF9ST1NFVFRBX0JSRUFLSU5HX0VOVElUTEVN
RU5UU30iICkpCiAgICAgICAgIHRoZW4KICAgICAgICAgICAgIHBsaXN0YnVkZHkgQWRkIDpjb20u
YXBwbGUucHJpdmF0ZS52ZXJpZmllZC1qaXQgYm9vbCBZRVMKICAgICAgICAgICAgIHBsaXN0YnVk
ZHkgQWRkIDpjb20uYXBwbGUuc2VjdXJpdHkuY3Muc2luZ2xlLWppdCBib29sIFlFUwpAQCAtNDgs
NyArNDgsNyBAQCBmdW5jdGlvbiBtYWNfcHJvY2Vzc190ZXN0YXBpX2VudGl0bGVtZW50cygpCiAg
ICAgICAgICAgICBwbGlzdGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLmRldmVsb3Blci5rZXJuZWwuZXh0
ZW5kZWQtdmlydHVhbC1hZGRyZXNzaW5nIGJvb2wgWUVTCiAgICAgICAgIGZpCiAKLSAgICAgICAg
aWYgKCggIiR7VEFSR0VUX01BQ19PU19YX1ZFUlNJT05fTUFKT1J9IiA+PSAxMjAwMDAgKSkgJiYg
W1sgLXogIiR7U0tJUF9ST1NFVFRBX0JSRUFLSU5HX0VOVElUTEVNRU5UU30iIF1dCisgICAgICAg
IGlmICgoICIke1RBUkdFVF9NQUNfT1NfWF9WRVJTSU9OX01BSk9SfSIgPj0gMTIwMDAwICYmIC16
ICIke1NLSVBfUk9TRVRUQV9CUkVBS0lOR19FTlRJVExFTUVOVFN9IiApKQogICAgICAgICB0aGVu
CiAgICAgICAgICAgICBwbGlzdGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLnByaXZhdGUudmVyaWZpZWQt
aml0IGJvb2wgWUVTCiAgICAgICAgICAgICBwbGlzdGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLnNlY3Vy
aXR5LmNzLnNpbmdsZS1qaXQgYm9vbCBZRVMKQEAgLTc2LDcgKzc2LDcgQEAgZnVuY3Rpb24gbWFj
Y2F0YWx5c3RfcHJvY2Vzc19qc2NfZW50aXRsZW1lbnRzKCkKICAgICAgICAgZmkKICAgICBmaQog
Ci0gICAgaWYgKCggIiR7VEFSR0VUX01BQ19PU19YX1ZFUlNJT05fTUFKT1J9IiA+PSAxMjAwMDAg
KSkgJiYgW1sgLXogIiR7U0tJUF9ST1NFVFRBX0JSRUFLSU5HX0VOVElUTEVNRU5UU30iIF1dCisg
ICAgaWYgKCggIiR7VEFSR0VUX01BQ19PU19YX1ZFUlNJT05fTUFKT1J9IiA+PSAxMjAwMDAgJiYg
LXogIiR7U0tJUF9ST1NFVFRBX0JSRUFLSU5HX0VOVElUTEVNRU5UU30iICkpCiAgICAgdGhlbgog
ICAgICAgICBwbGlzdGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLnByaXZhdGUudmVyaWZpZWQtaml0IGJv
b2wgWUVTCiAgICAgICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUuc2VjdXJpdHkuY3Muc2lu
Z2xlLWppdCBib29sIFlFUwpAQCAtMTAxLDcgKzEwMSw3IEBAIGZ1bmN0aW9uIG1hY2NhdGFseXN0
X3Byb2Nlc3NfdGVzdGFwaV9lbnRpdGxlbWVudHMoKQogICAgICAgICBwbGlzdGJ1ZGR5IEFkZCA6
Y29tLmFwcGxlLmRldmVsb3Blci5rZXJuZWwuZXh0ZW5kZWQtdmlydHVhbC1hZGRyZXNzaW5nIGJv
b2wgWUVTCiAgICAgZmkKIAotICAgIGlmICgoICIke1RBUkdFVF9NQUNfT1NfWF9WRVJTSU9OX01B
Sk9SfSIgPj0gMTIwMDAwICkpICYmIFtbIC16ICIke1NLSVBfUk9TRVRUQV9CUkVBS0lOR19FTlRJ
VExFTUVOVFN9IiBdXQorICAgIGlmICgoICIke1RBUkdFVF9NQUNfT1NfWF9WRVJTSU9OX01BSk9S
fSIgPj0gMTIwMDAwICYmIC16ICIke1NLSVBfUk9TRVRUQV9CUkVBS0lOR19FTlRJVExFTUVOVFN9
IiApKQogICAgIHRoZW4KICAgICAgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2YXRl
LnZlcmlmaWVkLWppdCBib29sIFlFUwogICAgICAgICBwbGlzdGJ1ZGR5IEFkZCA6Y29tLmFwcGxl
LnNlY3VyaXR5LmNzLnNpbmdsZS1qaXQgYm9vbCBZRVMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQXJyYXlpZnlTbG93UGF0aEdlbmVyYXRvci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheWlmeVNsb3dQYXRoR2VuZXJhdG9yLmgKaW5kZXggNWQ1
Yjc5MGYzOWMwLi5lZTAyODMwMjNlNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQXJyYXlpZnlTbG93UGF0aEdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQXJyYXlpZnlTbG93UGF0aEdlbmVyYXRvci5oCkBAIC05MSwyNSArOTEs
MjkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICAKKyAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fcGxhbnMuc2l6ZSgpOyArK2kpCisgICAgICAg
ICAgICBqaXQtPnNpbGVudFNwaWxsKG1fcGxhbnNbaV0pOwogICAgICAgICBWTSYgdm0gPSBqaXQt
PnZtKCk7CiAgICAgICAgIHN3aXRjaCAobV9hcnJheU1vZGUudHlwZSgpKSB7CiAgICAgICAgIGNh
c2UgQXJyYXk6OkludDMyOgotICAgICAgICAgICAgaml0LT5jYWxsT3BlcmF0aW9uV2l0aFNpbGVu
dFNwaWxsKG1fcGxhbnMuc3BhbigpLCBvcGVyYXRpb25FbnN1cmVJbnQzMiwgbV90ZW1wR1BSLCBT
cGVjdWxhdGl2ZUpJVDo6VHJ1c3RlZEltbVB0cigmdm0pLCBtX2Jhc2VHUFIpOworICAgICAgICAg
ICAgaml0LT5jYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkVuc3VyZUludDMyLCBtX3RlbXBHUFIsIFNw
ZWN1bGF0aXZlSklUOjpUcnVzdGVkSW1tUHRyKCZ2bSksIG1fYmFzZUdQUik7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBBcnJheTo6RG91YmxlOgotICAgICAgICAgICAgaml0LT5j
YWxsT3BlcmF0aW9uV2l0aFNpbGVudFNwaWxsKG1fcGxhbnMuc3BhbigpLCBvcGVyYXRpb25FbnN1
cmVEb3VibGUsIG1fdGVtcEdQUiwgU3BlY3VsYXRpdmVKSVQ6OlRydXN0ZWRJbW1QdHIoJnZtKSwg
bV9iYXNlR1BSKTsKKyAgICAgICAgICAgIGppdC0+Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25FbnN1
cmVEb3VibGUsIG1fdGVtcEdQUiwgU3BlY3VsYXRpdmVKSVQ6OlRydXN0ZWRJbW1QdHIoJnZtKSwg
bV9iYXNlR1BSKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFycmF5OjpDb250
aWd1b3VzOgotICAgICAgICAgICAgaml0LT5jYWxsT3BlcmF0aW9uV2l0aFNpbGVudFNwaWxsKG1f
cGxhbnMuc3BhbigpLCBvcGVyYXRpb25FbnN1cmVDb250aWd1b3VzLCBtX3RlbXBHUFIsIFNwZWN1
bGF0aXZlSklUOjpUcnVzdGVkSW1tUHRyKCZ2bSksIG1fYmFzZUdQUik7CisgICAgICAgICAgICBq
aXQtPmNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRW5zdXJlQ29udGlndW91cywgbV90ZW1wR1BSLCBT
cGVjdWxhdGl2ZUpJVDo6VHJ1c3RlZEltbVB0cigmdm0pLCBtX2Jhc2VHUFIpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQXJyYXk6OkFycmF5U3RvcmFnZToKICAgICAgICAgY2Fz
ZSBBcnJheTo6U2xvd1B1dEFycmF5U3RvcmFnZToKLSAgICAgICAgICAgIGppdC0+Y2FsbE9wZXJh
dGlvbldpdGhTaWxlbnRTcGlsbChtX3BsYW5zLnNwYW4oKSwgb3BlcmF0aW9uRW5zdXJlQXJyYXlT
dG9yYWdlLCBtX3RlbXBHUFIsIFNwZWN1bGF0aXZlSklUOjpUcnVzdGVkSW1tUHRyKCZ2bSksIG1f
YmFzZUdQUik7CisgICAgICAgICAgICBqaXQtPmNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRW5zdXJl
QXJyYXlTdG9yYWdlLCBtX3RlbXBHUFIsIFNwZWN1bGF0aXZlSklUOjpUcnVzdGVkSW1tUHRyKCZ2
bSksIG1fYmFzZUdQUik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAg
ICAgICAgICAgIENSQVNIKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSBtX3BsYW5zLnNpemUoKTsgaS0tOykKKyAgICAgICAgICAgIGpp
dC0+c2lsZW50RmlsbChtX3BsYW5zW2ldKTsKICAgICAgICAgCiAgICAgICAgIGlmIChtX29wID09
IEFycmF5aWZ5VG9TdHJ1Y3R1cmUpIHsKICAgICAgICAgICAgIEFTU0VSVChtX3N0cnVjdHVyZS5n
ZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhbGxBcnJh
eUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9yLmgKaW5kZXggZGJhYjc3NTRk
YTEzLi5mY2NhYmY3NmI5M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ2FsbEFycmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9yLmgK
QEAgLTU1LDcgKzU1LDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCBnZW5lcmF0ZUludGVybmFsKFNw
ZWN1bGF0aXZlSklUKiBqaXQpIGZpbmFsCiAgICAgewogICAgICAgICBsaW5rRnJvbShqaXQpOwot
ICAgICAgICBqaXQtPmNhbGxPcGVyYXRpb25XaXRoU2lsZW50U3BpbGwobV9wbGFucy5zcGFuKCks
IG1fZnVuY3Rpb24sIG1fcmVzdWx0R1BSLCBTcGVjdWxhdGl2ZUpJVDo6VHJ1c3RlZEltbVB0cigm
aml0LT52bSgpKSwgbV9zdHJ1Y3R1cmUsIG1fc2l6ZSwgbV9zdG9yYWdlR1BSKTsKKyAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fcGxhbnMuc2l6ZSgpOyArK2kpCisgICAgICAgICAg
ICBqaXQtPnNpbGVudFNwaWxsKG1fcGxhbnNbaV0pOworICAgICAgICBqaXQtPmNhbGxPcGVyYXRp
b24obV9mdW5jdGlvbiwgbV9yZXN1bHRHUFIsIFNwZWN1bGF0aXZlSklUOjpUcnVzdGVkSW1tUHRy
KCZqaXQtPnZtKCkpLCBtX3N0cnVjdHVyZSwgbV9zaXplLCBtX3N0b3JhZ2VHUFIpOworICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSBtX3BsYW5zLnNpemUoKTsgaS0tOykKKyAgICAgICAgICAgIGpp
dC0+c2lsZW50RmlsbChtX3BsYW5zW2ldKTsKICAgICAgICAgaml0LT5sb2FkUHRyKE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKG1fcmVzdWx0R1BSLCBKU09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkp
LCBtX3N0b3JhZ2VHUFIpOwogICAgICAgICBqdW1wVG8oaml0KTsKICAgICB9CkBAIC05MCw3ICs5
NCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBnZW5lcmF0ZUludGVybmFsKFNwZWN1bGF0aXZlSklU
KiBqaXQpIGZpbmFsCiAgICAgewogICAgICAgICBsaW5rRnJvbShqaXQpOwotICAgICAgICBqaXQt
PnNpbGVudFNwaWxsKG1fcGxhbnMpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bV9wbGFucy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIGppdC0+c2lsZW50U3BpbGwobV9wbGFu
c1tpXSk7CiAgICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gQXNzZW1ibHlIZWxwZXJzOjpzZWxl
Y3RTY3JhdGNoR1BSKG1fc2l6ZUdQUiwgbV9zdG9yYWdlR1BSKTsKICAgICAgICAgaWYgKG1fY29u
dGlndW91c1N0cnVjdHVyZS5nZXQoKSAhPSBtX2FycmF5U3RvcmFnZU9yQ29udGlndW91c1N0cnVj
dHVyZS5nZXQoKSkgewogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgYmlnTGVuZ3Ro
ID0gaml0LT5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBtX3NpemVHUFIs
IE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoTUlOX0FSUkFZX1NUT1JBR0VfQ09OU1RSVUNU
SU9OX0xFTkdUSCkpOwpAQCAtMTAxLDE1ICsxMDYsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ZG9uZS5saW5rKGppdCk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgaml0LT5tb3ZlKFNw
ZWN1bGF0aXZlSklUOjpUcnVzdGVkSW1tUHRyKG1fY29udGlndW91c1N0cnVjdHVyZSksIHNjcmF0
Y2hHUFIpOwotICAgICAgICBqaXQtPnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG1fZnVuY3Rpb24p
PihtX2dsb2JhbE9iamVjdCwgc2NyYXRjaEdQUiwgbV9zaXplR1BSLCBtX3N0b3JhZ2VHUFIpOwot
ICAgICAgICBqaXQtPmFwcGVuZENhbGwobV9mdW5jdGlvbik7Ci0gICAgICAgIHN0ZDo6b3B0aW9u
YWw8R1BSUmVnPiBleGNlcHRpb24gPSBqaXQtPnRyeUhhbmRsZU9yR2V0RXhjZXB0aW9uVW5kZXJT
aWxlbnRTcGlsbDxkZWNsdHlwZShtX2Z1bmN0aW9uKT4obV9wbGFucywgbV9yZXN1bHRHUFIpOwot
ICAgICAgICBqaXQtPnNldHVwUmVzdWx0cyhtX3Jlc3VsdEdQUik7Ci0gICAgICAgIGppdC0+c2ls
ZW50RmlsbChtX3BsYW5zKTsKLQotICAgICAgICBpZiAoZXhjZXB0aW9uKQotICAgICAgICAgICAg
aml0LT5leGNlcHRpb25DaGVjaygqZXhjZXB0aW9uKTsKLQorICAgICAgICBqaXQtPmNhbGxPcGVy
YXRpb24obV9mdW5jdGlvbiwgbV9yZXN1bHRHUFIsIG1fZ2xvYmFsT2JqZWN0LCBzY3JhdGNoR1BS
LCBtX3NpemVHUFIsIG1fc3RvcmFnZUdQUik7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1f
cGxhbnMuc2l6ZSgpOyBpLS07KQorICAgICAgICAgICAgaml0LT5zaWxlbnRGaWxsKG1fcGxhbnNb
aV0pOwogICAgICAgICBqdW1wVG8oaml0KTsKICAgICB9CiAKQEAgLTE0NCw3ICsxNDMsMTEgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGdlbmVyYXRlSW50ZXJuYWwoU3BlY3VsYXRpdmVKSVQqIGppdCkg
ZmluYWwKICAgICB7CiAgICAgICAgIGxpbmtGcm9tKGppdCk7Ci0gICAgICAgIGppdC0+Y2FsbE9w
ZXJhdGlvbldpdGhTaWxlbnRTcGlsbChtX3BsYW5zLCBtX2Z1bmN0aW9uLCBtX3Jlc3VsdEdQUiwg
bV9nbG9iYWxPYmplY3QsIG1fc3RydWN0dXJlR1BSLCBtX3NpemVHUFIsIG1fc3RvcmFnZUdQUik7
CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3BsYW5zLnNpemUoKTsgKytpKQor
ICAgICAgICAgICAgaml0LT5zaWxlbnRTcGlsbChtX3BsYW5zW2ldKTsKKyAgICAgICAgaml0LT5j
YWxsT3BlcmF0aW9uKG1fZnVuY3Rpb24sIG1fcmVzdWx0R1BSLCBtX2dsb2JhbE9iamVjdCwgbV9z
dHJ1Y3R1cmVHUFIsIG1fc2l6ZUdQUiwgbV9zdG9yYWdlR1BSKTsKKyAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gbV9wbGFucy5zaXplKCk7IGktLTspCisgICAgICAgICAgICBqaXQtPnNpbGVudEZp
bGwobV9wbGFuc1tpXSk7CiAgICAgICAgIGp1bXBUbyhqaXQpOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYWxsQ3JlYXRlRGlyZWN0QXJndW1lbnRz
U2xvd1BhdGhHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FsbENy
ZWF0ZURpcmVjdEFyZ3VtZW50c1Nsb3dQYXRoR2VuZXJhdG9yLmgKaW5kZXggYWQyNDc3MzVjZTlk
Li42NjI2ZmRlNjI5M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q2FsbENyZWF0ZURpcmVjdEFyZ3VtZW50c1Nsb3dQYXRoR2VuZXJhdG9yLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYWxsQ3JlYXRlRGlyZWN0QXJndW1lbnRzU2xvd1BhdGhH
ZW5lcmF0b3IuaApAQCAtNTUsNyArNTUsMTIgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdlbmVyYXRl
SW50ZXJuYWwoU3BlY3VsYXRpdmVKSVQqIGppdCkgZmluYWwKICAgICB7CiAgICAgICAgIGxpbmtG
cm9tKGppdCk7Ci0gICAgICAgIGppdC0+Y2FsbE9wZXJhdGlvbldpdGhTaWxlbnRTcGlsbChtX3Bs
YW5zLnNwYW4oKSwgb3BlcmF0aW9uQ3JlYXRlRGlyZWN0QXJndW1lbnRzLCBtX3Jlc3VsdEdQUiwg
U3BlY3VsYXRpdmVKSVQ6OlRydXN0ZWRJbW1QdHIoJmppdC0+dm0oKSksIG1fc3RydWN0dXJlLCBt
X2xlbmd0aEdQUiwgbV9taW5DYXBhY2l0eSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBtX3BsYW5zLnNpemUoKTsgKytpKQorICAgICAgICAgICAgaml0LT5zaWxlbnRTcGlsbCht
X3BsYW5zW2ldKTsKKyAgICAgICAgaml0LT5jYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgb3Bl
cmF0aW9uQ3JlYXRlRGlyZWN0QXJndW1lbnRzLCBtX3Jlc3VsdEdQUiwgU3BlY3VsYXRpdmVKSVQ6
OlRydXN0ZWRJbW1QdHIoJmppdC0+dm0oKSksIG1fc3RydWN0dXJlLCBtX2xlbmd0aEdQUiwgbV9t
aW5DYXBhY2l0eSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fcGxhbnMuc2l6ZSgpOyBp
LS07KQorICAgICAgICAgICAgaml0LT5zaWxlbnRGaWxsKG1fcGxhbnNbaV0pOwogICAgICAgICBq
aXQtPmxvYWRQdHIoCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhtX3Jlc3Vs
dEdQUiwgRGlyZWN0QXJndW1lbnRzOjpvZmZzZXRPZkxlbmd0aCgpKSwgbV9sZW5ndGhHUFIpOwog
ICAgICAgICBqdW1wVG8oaml0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUmVnaXN0ZXJCYW5rLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1JlZ2lz
dGVyQmFuay5oCmluZGV4IDdkM2E0ZjQ4NDA0YS4uZjZiMDE2MmNlOGM2IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1JlZ2lzdGVyQmFuay5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUmVnaXN0ZXJCYW5rLmgKQEAgLTc1LDE0ICs3NSw2IEBAIGNs
YXNzIFJlZ2lzdGVyQmFuayB7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBTcGlsbEhpbnQgU3BpbGxI
aW50SW52YWxpZCA9IDB4ZmZmZmZmZmY7CiAKIHB1YmxpYzoKLSAgICBzdGF0aWMgY29uc3RleHBy
IFJlZ2lzdGVyU2V0QnVpbGRlciByZWdpc3RlcnNJbkJhbmsoKQotICAgIHsKLSAgICAgICAgUmVn
aXN0ZXJTZXRCdWlsZGVyIHJlc3VsdDsKLSAgICAgICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8
IE5VTV9SRUdTOyArK2kpCi0gICAgICAgICAgICByZXN1bHQuYWRkKEJhbmtJbmZvOjp0b1JlZ2lz
dGVyKGkpLCBJZ25vcmVWZWN0b3JzKTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0K
ICAgICBSZWdpc3RlckJhbmsoKQogICAgIHsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NhbmVTdHJpbmdHZXRCeVZhbFNsb3dQYXRoR2VuZXJhdG9yLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhbmVTdHJpbmdHZXRCeVZhbFNsb3dQYXRo
R2VuZXJhdG9yLmgKaW5kZXggOTIwZDYxNWUxZTM1Li41OTQ2NGMxYTJhZjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FuZVN0cmluZ0dldEJ5VmFsU2xvd1BhdGhH
ZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhbmVTdHJpbmdH
ZXRCeVZhbFNsb3dQYXRoR2VuZXJhdG9yLmgKQEAgLTcwLDcgKzcwLDExIEBAIHByaXZhdGU6CiAg
ICAgICAgIAogICAgICAgICBpc05lZy5saW5rKGppdCk7CiAKLSAgICAgICAgaml0LT5jYWxsT3Bl
cmF0aW9uV2l0aFNpbGVudFNwaWxsKG1fcGxhbnMsIG9wZXJhdGlvbkdldEJ5VmFsU3RyaW5nSW50
LCBleHRyYWN0UmVzdWx0KG1fcmVzdWx0UmVncyksIG1fZ2xvYmFsT2JqZWN0LCBtX2Jhc2VSZWcs
IG1fcHJvcGVydHlSZWcpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9wbGFu
cy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIGppdC0+c2lsZW50U3BpbGwobV9wbGFuc1tpXSk7
CisgICAgICAgIGppdC0+Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25HZXRCeVZhbFN0cmluZ0ludCwg
ZXh0cmFjdFJlc3VsdChtX3Jlc3VsdFJlZ3MpLCBtX2dsb2JhbE9iamVjdCwgbV9iYXNlUmVnLCBt
X3Byb3BlcnR5UmVnKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9wbGFucy5zaXplKCk7
IGktLTspCisgICAgICAgICAgICBqaXQtPnNpbGVudEZpbGwobV9wbGFuc1tpXSk7CiAgICAgICAg
IAogICAgICAgICBqdW1wVG8oaml0KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NpbGVudFJlZ2lzdGVyU2F2ZVBsYW4uaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU2lsZW50UmVnaXN0ZXJTYXZlUGxhbi5oCmluZGV4IDhkYTg0ZTE4ODk0
Ny4uZmFiMGY4N2VjMWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NpbGVudFJlZ2lzdGVyU2F2ZVBsYW4uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NpbGVudFJlZ2lzdGVyU2F2ZVBsYW4uaApAQCAtNzYsNiArNzYsOCBAQCBwdWJsaWM6CiAg
ICAgU2lsZW50UmVnaXN0ZXJTYXZlUGxhbigpCiAgICAgICAgIDogbV9zcGlsbEFjdGlvbihEb05v
dGhpbmdGb3JTcGlsbCkKICAgICAgICAgLCBtX2ZpbGxBY3Rpb24oRG9Ob3RoaW5nRm9yRmlsbCkK
KyAgICAgICAgLCBtX3JlZ2lzdGVyKC0xKQorICAgICAgICAsIG1fbm9kZShudWxscHRyKQogICAg
IHsKICAgICB9CiAgICAgCkBAIC0xMDgsMTUgKzExMCwxNCBAQCBwdWJsaWM6CiAgICAgCiAgICAg
Tm9kZSogbm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbm9kZTsgfQogICAgIAotICAgIFJlZyByZWco
KSBjb25zdCB7IHJldHVybiBtX3JlZ2lzdGVyOyB9Ci0gICAgR1BSUmVnIGdwcigpIGNvbnN0IHsg
cmV0dXJuIG1fcmVnaXN0ZXIuZ3ByKCk7IH0KLSAgICBGUFJSZWcgZnByKCkgY29uc3QgeyByZXR1
cm4gbV9yZWdpc3Rlci5mcHIoKTsgfQorICAgIEdQUlJlZyBncHIoKSBjb25zdCB7IHJldHVybiBz
dGF0aWNfY2FzdDxHUFJSZWc+KG1fcmVnaXN0ZXIpOyB9CisgICAgRlBSUmVnIGZwcigpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19jYXN0PEZQUlJlZz4obV9yZWdpc3Rlcik7IH0KICAgICAKIHByaXZh
dGU6CiAgICAgaW50OF90IG1fc3BpbGxBY3Rpb247CiAgICAgaW50OF90IG1fZmlsbEFjdGlvbjsK
LSAgICBSZWcgbV9yZWdpc3RlcjsKLSAgICBOb2RlKiBtX25vZGUgeyBudWxscHRyIH07CisgICAg
aW50OF90IG1fcmVnaXN0ZXI7CisgICAgTm9kZSogbV9ub2RlOwogfTsKIAogfSB9IC8vIG5hbWVz
cGFjZSBKU0M6OkRGRwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
bG93UGF0aEdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTbG93UGF0
aEdlbmVyYXRvci5oCmluZGV4IGJiNGEzODE5NDQ4Yy4uZThiYjA3YjUyM2NmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTbG93UGF0aEdlbmVyYXRvci5oCkBAIC0xODMs
OCArMTgzLDEwIEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHNldFVwKFNwZWN1bGF0aXZlSklUKiBq
aXQpCiAgICAgewogICAgICAgICB0aGlzLT5saW5rRnJvbShqaXQpOwotICAgICAgICBpZiAobV9z
cGlsbE1vZGUgPT0gTmVlZFRvU3BpbGwpCi0gICAgICAgICAgICBqaXQtPnNpbGVudFNwaWxsKG1f
cGxhbnMpOworICAgICAgICBpZiAobV9zcGlsbE1vZGUgPT0gTmVlZFRvU3BpbGwpIHsKKyAgICAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3BsYW5zLnNpemUoKTsgKytpKQorICAg
ICAgICAgICAgICAgIGppdC0+c2lsZW50U3BpbGwobV9wbGFuc1tpXSk7CisgICAgICAgIH0KICAg
ICB9CiAgICAgCiAgICAgdm9pZCByZWNvcmRDYWxsKE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGwp
CkBAIC0xOTQsMjQgKzE5NiwxNiBAQCBwcm90ZWN0ZWQ6CiAgICAgCiAgICAgdm9pZCB0ZWFyRG93
bihTcGVjdWxhdGl2ZUpJVCogaml0KQogICAgIHsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxHUFJS
ZWc+IGV4Y2VwdGlvbjsKLQotICAgICAgICBpZiAobV9leGNlcHRpb25DaGVja1JlcXVpcmVtZW50
ID09IEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQ6OkNoZWNrTmVlZGVkKSB7Ci0gICAgICAgICAg
ICBpZiAobV9zcGlsbE1vZGUgPT0gTmVlZFRvU3BpbGwpCi0gICAgICAgICAgICAgICAgZXhjZXB0
aW9uID0gaml0LT50cnlIYW5kbGVPckdldEV4Y2VwdGlvblVuZGVyU2lsZW50U3BpbGw8RnVuY3Rp
b25UeXBlPihtX3BsYW5zLCB0aGlzLT5tX3Jlc3VsdCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgaml0LT5leGNlcHRpb25DaGVjayhDQ2FsbEhlbHBlcnM6Om9wZXJhdGlvbkV4
Y2VwdGlvblJlZ2lzdGVyPHR5cGVuYW1lIEZ1bmN0aW9uVHJhaXRzPEZ1bmN0aW9uVHlwZT46OlJl
c3VsdFR5cGU+KCkpOwotICAgICAgICB9CisgICAgICAgIGlmIChtX2V4Y2VwdGlvbkNoZWNrUmVx
dWlyZW1lbnQgPT0gRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tOZWVkZWQpCisgICAg
ICAgICAgICBqaXQtPmV4Y2VwdGlvbkNoZWNrKENDYWxsSGVscGVyczo6b3BlcmF0aW9uRXhjZXB0
aW9uUmVnaXN0ZXI8dHlwZW5hbWUgRnVuY3Rpb25UcmFpdHM8RnVuY3Rpb25UeXBlPjo6UmVzdWx0
VHlwZT4oKSk7CiAKICAgICAgICAgaWYgY29uc3RleHByICghc3RkOjppc19zYW1lX3Y8UmVzdWx0
VHlwZSwgTm9SZXN1bHRUYWc+KQogICAgICAgICAgICAgaml0LT5zZXR1cFJlc3VsdHMoZXh0cmFj
dFJlc3VsdCh0aGlzLT5tX3Jlc3VsdCkpOwogCi0gICAgICAgIGlmIChtX3NwaWxsTW9kZSA9PSBO
ZWVkVG9TcGlsbCkKLSAgICAgICAgICAgIGppdC0+c2lsZW50RmlsbChtX3BsYW5zKTsKLQotICAg
ICAgICBpZiAobV9leGNlcHRpb25DaGVja1JlcXVpcmVtZW50ID09IEV4Y2VwdGlvbkNoZWNrUmVx
dWlyZW1lbnQ6OkNoZWNrTmVlZGVkICYmIGV4Y2VwdGlvbikKLSAgICAgICAgICAgIGppdC0+ZXhj
ZXB0aW9uQ2hlY2soKmV4Y2VwdGlvbik7Ci0KKyAgICAgICAgaWYgKG1fc3BpbGxNb2RlID09IE5l
ZWRUb1NwaWxsKSB7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX3BsYW5zLnNpemUo
KTsgaS0tOykKKyAgICAgICAgICAgICAgICBqaXQtPnNpbGVudEZpbGwobV9wbGFuc1tpXSk7Cisg
ICAgICAgIH0KICAgICAgICAgdGhpcy0+anVtcFRvKGppdCk7CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IDQ3NzNiZjUw
ZmZhNy4uM2E4MTBhYTA3OGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTEtMjAyNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEtMjAyMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMxOCw3ICszMTgsNiBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpleGNlcHRpb25DaGVjayhHUFJSZWcgZXhjZXB0aW9uUmVnKQogICAgIEhhbmRsZXJJbmZv
KiBleGNlcHRpb25IYW5kbGVyOwogICAgIGJvb2wgd2lsbENhdGNoRXhjZXB0aW9uID0gbV9ncmFw
aC53aWxsQ2F0Y2hFeGNlcHRpb25Jbk1hY2hpbmVGcmFtZShtX2N1cnJlbnROb2RlLT5vcmlnaW4u
Zm9yRXhpdCwgb3BDYXRjaE9yaWdpbiwgZXhjZXB0aW9uSGFuZGxlcik7CiAgICAgaWYgKHdpbGxD
YXRjaEV4Y2VwdGlvbikgewotICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV91bmRlclNpbGVudFNw
aWxsKTsKICAgICAgICAgdW5zaWduZWQgc3RyZWFtSW5kZXggPSBtX291dE9mTGluZVN0cmVhbUlu
ZGV4ID8gKm1fb3V0T2ZMaW5lU3RyZWFtSW5kZXggOiBtX3N0cmVhbS5zaXplKCk7CiAgICAgICAg
IEp1bXAgaGFkRXhjZXB0aW9uID0gZW1pdE5vblBhdGNoYWJsZUV4Y2VwdGlvbkNoZWNrKHZtKCks
IGV4Y2VwdGlvblJlZyk7CiAgICAgICAgIC8vIFdlIGFzc3VtZSBoZXJlIHRoYXQgdGhpcyBpcyBj
YWxsZWQgYWZ0ZXIgY2FsbE9wZXJhdGlvbigpL2FwcGVuZENhbGwoKSBpcyBjYWxsZWQuCkBAIC02
NzUsNyArNjc0LDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6cnVuU2xvd1BhdGhHZW5lcmF0b3Jz
KFBDVG9Db2RlT3JpZ2luTWFwQnVpbGRlciYgcGNUb0NvZGVPcmkKICAgICAgICAgYXV0byBzaXpl
TWFya2VyID0gbWFya1Nsb3dQYXRoSWZOZWVkZWQoY3VycmVudE5vZGUpOwogCiAgICAgICAgIHNs
b3dQYXRoTGFtYmRhLmdlbmVyYXRvcigpOwotICAgICAgICBBU1NFUlQoIW1fdW5kZXJTaWxlbnRT
cGlsbCk7CiAgICAgICAgIG1fb3V0T2ZMaW5lU3RyZWFtSW5kZXggPSBzdGQ6Om51bGxvcHQ7CiAg
ICAgICAgIGlmIChVTkxJS0VMWShzaXplTWFya2VyKSkKICAgICAgICAgICAgIHZtKCkuaml0U2l6
ZVN0YXRpc3RpY3MtPm1hcmtFbmQoV1RGTW92ZSgqc2l6ZU1hcmtlciksICp0aGlzLCBtX2dyYXBo
Lm1fcGxhbik7CkBAIC04NzgsOSArODc2LDggQEAgU2lsZW50UmVnaXN0ZXJTYXZlUGxhbiBTcGVj
dWxhdGl2ZUpJVDo6c2lsZW50U2F2ZVBsYW5Gb3JGUFIoVmlydHVhbFJlZ2lzdGVyIHNwaWwKICAg
ICByZXR1cm4gU2lsZW50UmVnaXN0ZXJTYXZlUGxhbihzcGlsbEFjdGlvbiwgZmlsbEFjdGlvbiwg
bm9kZSwgc291cmNlKTsKIH0KICAgICAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNpbGVudFNwaWxs
SW1wbChjb25zdCBTaWxlbnRSZWdpc3RlclNhdmVQbGFuJiBwbGFuKQordm9pZCBTcGVjdWxhdGl2
ZUpJVDo6c2lsZW50U3BpbGwoY29uc3QgU2lsZW50UmVnaXN0ZXJTYXZlUGxhbiYgcGxhbikKIHsK
LSAgICBBU1NFUlQobV91bmRlclNpbGVudFNwaWxsKTsKICAgICBzd2l0Y2ggKHBsYW4uc3BpbGxB
Y3Rpb24oKSkgewogICAgIGNhc2UgRG9Ob3RoaW5nRm9yU3BpbGw6CiAgICAgICAgIGJyZWFrOwpA
QCAtOTA2LDkgKzkwMyw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNpbGVudFNwaWxsSW1wbChj
b25zdCBTaWxlbnRSZWdpc3RlclNhdmVQbGFuJiBwbGFuKQogICAgIH0KIH0KICAgICAKLXZvaWQg
U3BlY3VsYXRpdmVKSVQ6OnNpbGVudEZpbGxJbXBsKGNvbnN0IFNpbGVudFJlZ2lzdGVyU2F2ZVBs
YW4mIHBsYW4pCit2b2lkIFNwZWN1bGF0aXZlSklUOjpzaWxlbnRGaWxsKGNvbnN0IFNpbGVudFJl
Z2lzdGVyU2F2ZVBsYW4mIHBsYW4pCiB7Ci0gICAgQVNTRVJUKG1fdW5kZXJTaWxlbnRTcGlsbCk7
CiAgICAgc3dpdGNoIChwbGFuLmZpbGxBY3Rpb24oKSkgewogICAgIGNhc2UgRG9Ob3RoaW5nRm9y
RmlsbDoKICAgICAgICAgYnJlYWs7CkBAIC0yMjY4LDcgKzIyNjQsOSBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlVG9Mb3dlckNhc2UoTm9kZSogbm9kZSkKICAgICBqdW1wKCkubGlua1Rv
KGxvb3BTdGFydCwgdGhpcyk7CiAgICAgCiAgICAgc2xvd1BhdGgubGluayh0aGlzKTsKLSAgICBj
YWxsT3BlcmF0aW9uV2l0aFNpbGVudFNwaWxsKG9wZXJhdGlvblRvTG93ZXJDYXNlLCBsZW5ndGhH
UFIsIExpbmthYmxlQ29uc3RhbnQ6Omdsb2JhbE9iamVjdCgqdGhpcywgbm9kZSksIHN0cmluZ0dQ
UiwgaW5kZXhHUFIpOworICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJzKGxlbmd0aEdQUik7Cisg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Ub0xvd2VyQ2FzZSwgbGVuZ3RoR1BSLCBMaW5rYWJs
ZUNvbnN0YW50OjpnbG9iYWxPYmplY3QoKnRoaXMsIG5vZGUpLCBzdHJpbmdHUFIsIGluZGV4R1BS
KTsKKyAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKCk7CiAgICAgYXV0byBkb25lID0ganVtcCgp
OwogCiAgICAgbG9vcERvbmUubGluayh0aGlzKTsKQEAgLTQ0MzIsMTEgKzQ0MzAsMTIgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsRm9yT2JqZWN0V2l0aFN0cmluZyhOb2Rl
KiBub2RlLCBjb25zdCBTY29wZWQKICAgICBzcGVjdWxhdGVTdHJpbmcobV9ncmFwaC52YXJBcmdD
aGlsZChub2RlLCAxKSwgYXJnMkdQUik7CiAKICAgICBpZiAoY2FuVXNlRmx1c2ggPT0gQ2FuVXNl
Rmx1c2g6Ok5vKQotICAgICAgICBjYWxsT3BlcmF0aW9uV2l0aFNpbGVudFNwaWxsKG9wZXJhdGlv
bkdldEJ5VmFsT2JqZWN0U3RyaW5nLCByZXN1bHRSZWdzLCBMaW5rYWJsZUNvbnN0YW50OjpnbG9i
YWxPYmplY3QoKnRoaXMsIG5vZGUpLCBhcmcxR1BSLCBhcmcyR1BSKTsKLSAgICBlbHNlIHsKKyAg
ICAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMocmVzdWx0UmVncyk7CisgICAgZWxzZQogICAg
ICAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkdl
dEJ5VmFsT2JqZWN0U3RyaW5nLCByZXN1bHRSZWdzLCBMaW5rYWJsZUNvbnN0YW50OjpnbG9iYWxP
YmplY3QoKnRoaXMsIG5vZGUpLCBhcmcxR1BSLCBhcmcyR1BSKTsKLSAgICB9CisgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25HZXRCeVZhbE9iamVjdFN0cmluZywgcmVzdWx0UmVncywgTGlua2Fi
bGVDb25zdGFudDo6Z2xvYmFsT2JqZWN0KCp0aGlzLCBub2RlKSwgYXJnMUdQUiwgYXJnMkdQUik7
CisgICAgaWYgKGNhblVzZUZsdXNoID09IENhblVzZUZsdXNoOjpObykKKyAgICAgICAgc2lsZW50
RmlsbEFsbFJlZ2lzdGVycygpOwogCiAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2Rl
KTsKIH0KQEAgLTQ0NTcsMTEgKzQ0NTYsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUdldEJ5VmFsRm9yT2JqZWN0V2l0aFN5bWJvbChOb2RlKiBub2RlLCBjb25zdCBTY29wZWQKICAg
ICBzcGVjdWxhdGVTeW1ib2wobV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSwgYXJnMkdQUik7
CiAKICAgICBpZiAoY2FuVXNlRmx1c2ggPT0gQ2FuVXNlRmx1c2g6Ok5vKQotICAgICAgICBjYWxs
T3BlcmF0aW9uV2l0aFNpbGVudFNwaWxsKG9wZXJhdGlvbkdldEJ5VmFsT2JqZWN0U3ltYm9sLCBy
ZXN1bHRSZWdzLCBMaW5rYWJsZUNvbnN0YW50OjpnbG9iYWxPYmplY3QoKnRoaXMsIG5vZGUpLCBh
cmcxR1BSLCBhcmcyR1BSKTsKLSAgICBlbHNlIHsKKyAgICAgICAgc2lsZW50U3BpbGxBbGxSZWdp
c3RlcnMocmVzdWx0UmVncyk7CisgICAgZWxzZQogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwot
ICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkdldEJ5VmFsT2JqZWN0U3ltYm9sLCByZXN1
bHRSZWdzLCBMaW5rYWJsZUNvbnN0YW50OjpnbG9iYWxPYmplY3QoKnRoaXMsIG5vZGUpLCBhcmcx
R1BSLCBhcmcyR1BSKTsKLSAgICB9CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25HZXRCeVZh
bE9iamVjdFN5bWJvbCwgcmVzdWx0UmVncywgTGlua2FibGVDb25zdGFudDo6Z2xvYmFsT2JqZWN0
KCp0aGlzLCBub2RlKSwgYXJnMUdQUiwgYXJnMkdQUik7CisgICAgaWYgKGNhblVzZUZsdXNoID09
IENhblVzZUZsdXNoOjpObykKKyAgICAgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycygpOwogCiAg
ICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKIH0KQEAgLTUyNTYsNiArNTI1Niw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRVbnR5cGVkT3JBbnlCaWdJbnRCaXRPcChOb2Rl
KiBub2RlKQogICAgIGdlbi5lbmRKdW1wTGlzdCgpLmFwcGVuZChqdW1wKCkpOwogCiAgICAgZ2Vu
LnNsb3dQYXRoSnVtcExpc3QoKS5saW5rKHRoaXMpOworICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0
ZXJzKHJlc3VsdFJlZ3MpOwogCiAgICAgaWYgKGxlZnRPcGVyYW5kLmlzQ29uc3QoKSkgewogICAg
ICAgICBsZWZ0UmVncyA9IHJlc3VsdFJlZ3M7CkBAIC01MjY1LDcgKzUyNjYsOSBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjplbWl0VW50eXBlZE9yQW55QmlnSW50Qml0T3AoTm9kZSogbm9kZSkKICAg
ICAgICAgbW92ZVZhbHVlKHJpZ2h0Q2hpbGQtPmFzSlNWYWx1ZSgpLCByaWdodFJlZ3MpOwogICAg
IH0KIAotICAgIGNhbGxPcGVyYXRpb25XaXRoU2lsZW50U3BpbGwoc25pcHBldFNsb3dQYXRoRnVu
Y3Rpb24sIHJlc3VsdFJlZ3MsIExpbmthYmxlQ29uc3RhbnQ6Omdsb2JhbE9iamVjdCgqdGhpcywg
bm9kZSksIGxlZnRSZWdzLCByaWdodFJlZ3MpOworICAgIGNhbGxPcGVyYXRpb24oc25pcHBldFNs
b3dQYXRoRnVuY3Rpb24sIHJlc3VsdFJlZ3MsIExpbmthYmxlQ29uc3RhbnQ6Omdsb2JhbE9iamVj
dCgqdGhpcywgbm9kZSksIGxlZnRSZWdzLCByaWdodFJlZ3MpOworCisgICAgc2lsZW50RmlsbEFs
bFJlZ2lzdGVycygpOwogCiAgICAgZ2VuLmVuZEp1bXBMaXN0KCkubGluayh0aGlzKTsKICAgICBq
c1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwpAQCAtNTQ2OSw2ICs1NDcyLDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFVudHlwZWRPckJpZ0ludFJpZ2h0U2hpZnRCaXRPcChOb2Rl
KiBub2RlKQogICAgIGdlbi5lbmRKdW1wTGlzdCgpLmFwcGVuZChqdW1wKCkpOwogCiAgICAgZ2Vu
LnNsb3dQYXRoSnVtcExpc3QoKS5saW5rKHRoaXMpOworICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0
ZXJzKHJlc3VsdFJlZ3MpOwogCiAgICAgaWYgKGxlZnRPcGVyYW5kLmlzQ29uc3QoKSkgewogICAg
ICAgICBsZWZ0UmVncyA9IHJlc3VsdFJlZ3M7CkBAIC01NDc4LDcgKzU0ODIsOSBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjplbWl0VW50eXBlZE9yQmlnSW50UmlnaHRTaGlmdEJpdE9wKE5vZGUqIG5v
ZGUpCiAgICAgICAgIG1vdmVWYWx1ZShyaWdodENoaWxkLT5hc0pTVmFsdWUoKSwgcmlnaHRSZWdz
KTsKICAgICB9CiAKLSAgICBjYWxsT3BlcmF0aW9uV2l0aFNpbGVudFNwaWxsKHNuaXBwZXRTbG93
UGF0aEZ1bmN0aW9uLCByZXN1bHRSZWdzLCBMaW5rYWJsZUNvbnN0YW50OjpnbG9iYWxPYmplY3Qo
KnRoaXMsIG5vZGUpLCBsZWZ0UmVncywgcmlnaHRSZWdzKTsKKyAgICBjYWxsT3BlcmF0aW9uKHNu
aXBwZXRTbG93UGF0aEZ1bmN0aW9uLCByZXN1bHRSZWdzLCBMaW5rYWJsZUNvbnN0YW50OjpnbG9i
YWxPYmplY3QoKnRoaXMsIG5vZGUpLCBsZWZ0UmVncywgcmlnaHRSZWdzKTsKKworICAgIHNpbGVu
dEZpbGxBbGxSZWdpc3RlcnMoKTsKIAogICAgIGdlbi5lbmRKdW1wTGlzdCgpLmxpbmsodGhpcyk7
CiAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKQEAgLTU4MjcsNiArNTgzMyw4
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVNYXRoSUMoTm9kZSogbm9kZSwgSklUQmlu
YXJ5TWF0aElDPEdlbmVyYXRvcj4qIG1hdGhJCiAgICAgICAgICAgICBhdXRvIHNsb3dQYXRoU3Rh
cnQgPSBsYWJlbCgpOwogI2VuZGlmCiAKKyAgICAgICAgICAgIHNpbGVudFNwaWxsKHNhdmVQbGFu
cyk7CisKICAgICAgICAgICAgIGF1dG8gaW5uZXJMZWZ0UmVncyA9IGxlZnRSZWdzOwogICAgICAg
ICAgICAgYXV0byBpbm5lclJpZ2h0UmVncyA9IHJpZ2h0UmVnczsKICAgICAgICAgICAgIGlmIChH
ZW5lcmF0b3I6OmlzTGVmdE9wZXJhbmRWYWxpZENvbnN0YW50KGxlZnRPcGVyYW5kKSkgewpAQCAt
NTgzOCwxMCArNTg0NiwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTWF0aElDKE5v
ZGUqIG5vZGUsIEpJVEJpbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRoSQogICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICBpZiAoYWRkSUNHZW5lcmF0aW9uU3RhdGUtPnNob3VsZFNsb3dQYXRo
UmVwYXRjaCkKLSAgICAgICAgICAgICAgICBhZGRJQ0dlbmVyYXRpb25TdGF0ZS0+c2xvd1BhdGhD
YWxsID0gY2FsbE9wZXJhdGlvbldpdGhTaWxlbnRTcGlsbChzYXZlUGxhbnMsIHJlcGF0Y2hpbmdG
dW5jdGlvbiwgcmVzdWx0UmVncywgTGlua2FibGVDb25zdGFudDo6Z2xvYmFsT2JqZWN0KCp0aGlz
LCBub2RlKSwgaW5uZXJMZWZ0UmVncywgaW5uZXJSaWdodFJlZ3MsIFRydXN0ZWRJbW1QdHIobWF0
aElDKSk7CisgICAgICAgICAgICAgICAgYWRkSUNHZW5lcmF0aW9uU3RhdGUtPnNsb3dQYXRoQ2Fs
bCA9IGNhbGxPcGVyYXRpb24ocmVwYXRjaGluZ0Z1bmN0aW9uLCByZXN1bHRSZWdzLCBMaW5rYWJs
ZUNvbnN0YW50OjpnbG9iYWxPYmplY3QoKnRoaXMsIG5vZGUpLCBpbm5lckxlZnRSZWdzLCBpbm5l
clJpZ2h0UmVncywgVHJ1c3RlZEltbVB0cihtYXRoSUMpKTsKICAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICBhZGRJQ0dlbmVyYXRpb25TdGF0ZS0+c2xvd1BhdGhDYWxsID0gY2FsbE9w
ZXJhdGlvbldpdGhTaWxlbnRTcGlsbChzYXZlUGxhbnMsIG5vblJlcGF0Y2hpbmdGdW5jdGlvbiwg
cmVzdWx0UmVncywgTGlua2FibGVDb25zdGFudDo6Z2xvYmFsT2JqZWN0KCp0aGlzLCBub2RlKSwg
aW5uZXJMZWZ0UmVncywgaW5uZXJSaWdodFJlZ3MpOworICAgICAgICAgICAgICAgIGFkZElDR2Vu
ZXJhdGlvblN0YXRlLT5zbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKG5vblJlcGF0Y2hpbmdG
dW5jdGlvbiwgcmVzdWx0UmVncywgTGlua2FibGVDb25zdGFudDo6Z2xvYmFsT2JqZWN0KCp0aGlz
LCBub2RlKSwgaW5uZXJMZWZ0UmVncywgaW5uZXJSaWdodFJlZ3MpOwogCisgICAgICAgICAgICBz
aWxlbnRGaWxsKHNhdmVQbGFucyk7CiAgICAgICAgICAgICBqdW1wKCkubGlua1RvKGRvbmUsIHRo
aXMpOwogCiAgICAgICAgICAgICBhZGRMaW5rVGFzayhbPV0gKExpbmtCdWZmZXImIGxpbmtCdWZm
ZXIpIHsKQEAgLTY0NTUsMTEgKzY0NjQsMTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZU1hdGhJQyhOb2RlKiBub2RlLCBKSVRVbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRoSUMKICAg
ICAgICAgICAgIGF1dG8gc2xvd1BhdGhTdGFydCA9IGxhYmVsKCk7CiAjZW5kaWYKIAorICAgICAg
ICAgICAgc2lsZW50U3BpbGwoc2F2ZVBsYW5zKTsKKwogICAgICAgICAgICAgaWYgKGljR2VuZXJh
dGlvblN0YXRlLT5zaG91bGRTbG93UGF0aFJlcGF0Y2gpCi0gICAgICAgICAgICAgICAgaWNHZW5l
cmF0aW9uU3RhdGUtPnNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb25XaXRoU2lsZW50U3BpbGwo
c2F2ZVBsYW5zLCByZXBhdGNoaW5nRnVuY3Rpb24sIHJlc3VsdFJlZ3MsIExpbmthYmxlQ29uc3Rh
bnQ6Omdsb2JhbE9iamVjdCgqdGhpcywgbm9kZSksIGNoaWxkUmVncywgVHJ1c3RlZEltbVB0ciht
YXRoSUMpKTsKKyAgICAgICAgICAgICAgICBpY0dlbmVyYXRpb25TdGF0ZS0+c2xvd1BhdGhDYWxs
ID0gY2FsbE9wZXJhdGlvbihyZXBhdGNoaW5nRnVuY3Rpb24sIHJlc3VsdFJlZ3MsIExpbmthYmxl
Q29uc3RhbnQ6Omdsb2JhbE9iamVjdCgqdGhpcywgbm9kZSksIGNoaWxkUmVncywgVHJ1c3RlZElt
bVB0cihtYXRoSUMpKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBpY0dlbmVy
YXRpb25TdGF0ZS0+c2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbldpdGhTaWxlbnRTcGlsbChz
YXZlUGxhbnMsIG5vblJlcGF0Y2hpbmdGdW5jdGlvbiwgcmVzdWx0UmVncywgTGlua2FibGVDb25z
dGFudDo6Z2xvYmFsT2JqZWN0KCp0aGlzLCBub2RlKSwgY2hpbGRSZWdzKTsKKyAgICAgICAgICAg
ICAgICBpY0dlbmVyYXRpb25TdGF0ZS0+c2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbihub25S
ZXBhdGNoaW5nRnVuY3Rpb24sIHJlc3VsdFJlZ3MsIExpbmthYmxlQ29uc3RhbnQ6Omdsb2JhbE9i
amVjdCgqdGhpcywgbm9kZSksIGNoaWxkUmVncyk7CiAKKyAgICAgICAgICAgIHNpbGVudEZpbGwo
c2F2ZVBsYW5zKTsKICAgICAgICAgICAgIGp1bXAoKS5saW5rVG8oZG9uZSwgdGhpcyk7CiAKICAg
ICAgICAgICAgIGFkZExpbmtUYXNrKFs9XSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikgewpAQCAt
NjgyNyw2ICs2ODM5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlRGl2KE5v
ZGUqIG5vZGUpCiAgICAgZ2VuLmVuZEp1bXBMaXN0KCkuYXBwZW5kKGp1bXAoKSk7CiAKICAgICBn
ZW4uc2xvd1BhdGhKdW1wTGlzdCgpLmxpbmsodGhpcyk7CisgICAgc2lsZW50U3BpbGxBbGxSZWdp
c3RlcnMocmVzdWx0UmVncyk7CiAKICAgICBpZiAobGVmdE9wZXJhbmQuaXNDb25zdCgpKSB7CiAg
ICAgICAgIGxlZnRSZWdzID0gcmVzdWx0UmVnczsKQEAgLTY4MzcsNyArNjg1MCw5IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZURpdihOb2RlKiBub2RlKQogICAgICAgICBtb3Zl
VmFsdWUocmlnaHRDaGlsZC0+YXNKU1ZhbHVlKCksIHJpZ2h0UmVncyk7CiAgICAgfQogCi0gICAg
Y2FsbE9wZXJhdGlvbldpdGhTaWxlbnRTcGlsbChvcGVyYXRpb25WYWx1ZURpdiwgcmVzdWx0UmVn
cywgTGlua2FibGVDb25zdGFudDo6Z2xvYmFsT2JqZWN0KCp0aGlzLCBub2RlKSwgbGVmdFJlZ3Ms
IHJpZ2h0UmVncyk7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25WYWx1ZURpdiwgcmVzdWx0
UmVncywgTGlua2FibGVDb25zdGFudDo6Z2xvYmFsT2JqZWN0KCp0aGlzLCBub2RlKSwgbGVmdFJl
Z3MsIHJpZ2h0UmVncyk7CisKKyAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKCk7CiAKICAgICBn
ZW4uZW5kSnVtcExpc3QoKS5saW5rKHRoaXMpOwogICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVn
cywgbm9kZSk7CkBAIC05MTg3LDEzICs5MjAyLDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZU5ld0Z1bmN0aW9uKE5vZGUqIG5vZGUpCiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgc2Nv
cGUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgIEdQUlJlZyBzY29wZUdQUiA9IHNjb3BlLmdw
cigpOwogCi0gICAgSklUX0NPTU1FTlQoKnRoaXMsICJzY29wZUdQUjogIiwgZ3ByTmFtZShzY29w
ZUdQUikpOwotCi0gICAgcHJvYmVEZWJ1ZyhbPV0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7
Ci0gICAgICAgIGF1dG8qIHNjb3BlID0gY29udGV4dC5ncHI8SlNDZWxsKj4oc2NvcGVHUFIpOwot
ICAgICAgICBSRUxFQVNFX0FTU0VSVChzY29wZS0+aW5oZXJpdHM8SlNTY29wZT4oKSk7Ci0gICAg
fSk7Ci0KICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBub2RlLT5jYXN0T3Bl
cmFuZDxGdW5jdGlvbkV4ZWN1dGFibGUqPigpOwogCiAgICAgaWYgKGV4ZWN1dGFibGUtPnNpbmds
ZXRvbigpLmlzU3RpbGxWYWxpZCgpKSB7CkBAIC0xMzQwNSw3ICsxMzQxMyw5IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmVtaXRTd2l0Y2hTdHJpbmdPblN0cmluZyhOb2RlKiBub2RlLCBTd2l0Y2hE
YXRhKiBkYXRhLCBHUFJSCiAgICAgICAgIGRhdGEsIGNhc2VzLCAwLCAwLCBjYXNlcy5zaXplKCks
IHN0cmluZywgbGVuZ3RoR1BSLCB0ZW1wR1BSLCAwLCBmYWxzZSk7CiAgICAgCiAgICAgc2xvd0Nh
c2VzLmxpbmsodGhpcyk7Ci0gICAgY2FsbE9wZXJhdGlvbldpdGhTaWxlbnRTcGlsbChvcGVyYXRp
b25Td2l0Y2hTdHJpbmcsIHN0cmluZywgTGlua2FibGVDb25zdGFudDo6Z2xvYmFsT2JqZWN0KCp0
aGlzLCBub2RlKSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihkYXRhLT5zd2l0Y2hUYWJsZUluZGV4KSwg
VHJ1c3RlZEltbVB0cigmdW5saW5rZWRUYWJsZSksIHN0cmluZyk7CisgICAgc2lsZW50U3BpbGxB
bGxSZWdpc3RlcnMoc3RyaW5nKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblN3aXRjaFN0
cmluZywgc3RyaW5nLCBMaW5rYWJsZUNvbnN0YW50OjpnbG9iYWxPYmplY3QoKnRoaXMsIG5vZGUp
LCBzdGF0aWNfY2FzdDxzaXplX3Q+KGRhdGEtPnN3aXRjaFRhYmxlSW5kZXgpLCBUcnVzdGVkSW1t
UHRyKCZ1bmxpbmtlZFRhYmxlKSwgc3RyaW5nKTsKKyAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJz
KCk7CiAgICAgZmFySnVtcChzdHJpbmcsIEpTU3dpdGNoUHRyVGFnKTsKIH0KIApAQCAtMTQ5NzIs
NyArMTQ5ODIsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0UHJvcGVydHlFbnVt
ZXJhdG9yKE5vZGUqIG5vZGUpCiAgICAgICAgIGRvbmVDYXNlcy5hcHBlbmQoanVtcCgpKTsKIAog
ICAgICAgICBzbG93Q2FzZXMubGluayh0aGlzKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbldpdGhT
aWxlbnRTcGlsbChvcGVyYXRpb25HZXRQcm9wZXJ0eUVudW1lcmF0b3JDZWxsLCBzY3JhdGNoMUdQ
UiwgTGlua2FibGVDb25zdGFudDo6Z2xvYmFsT2JqZWN0KCp0aGlzLCBub2RlKSwgYmFzZVJlZ3Mu
cGF5bG9hZEdQUigpKTsKKyAgICAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMoc2NyYXRjaDFH
UFIpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkdldFByb3BlcnR5RW51bWVyYXRv
ckNlbGwsIHNjcmF0Y2gxR1BSLCBMaW5rYWJsZUNvbnN0YW50OjpnbG9iYWxPYmplY3QoKnRoaXMs
IG5vZGUpLCBiYXNlUmVncy5wYXlsb2FkR1BSKCkpOworICAgICAgICBzaWxlbnRGaWxsQWxsUmVn
aXN0ZXJzKCk7CiAKICAgICAgICAgZG9uZUNhc2VzLmxpbmsodGhpcyk7CiAgICAgICAgIGNlbGxS
ZXN1bHQoc2NyYXRjaDFHUFIsIG5vZGUpOwpAQCAtMTY3NzMsNyArMTY3ODUsOSBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpnZW5lcmljSlNWYWx1ZVBlZXBob2xlQnJhbmNoKE5vZGUqIG5vZGUsIE5v
ZGUqIGJyYW5jaE5vZGUsCiAKICAgICAgICAgICAgIHNsb3dQYXRoLmxpbmsodGhpcyk7CiAKLSAg
ICAgICAgICAgIGNhbGxPcGVyYXRpb25XaXRoU2lsZW50U3BpbGwoaGVscGVyRnVuY3Rpb24sIHJl
c3VsdEdQUiwgTGlua2FibGVDb25zdGFudDo6Z2xvYmFsT2JqZWN0KCp0aGlzLCBub2RlKSwgYXJn
MVJlZ3MsIGFyZzJSZWdzKTsKKyAgICAgICAgICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJzKHJl
c3VsdEdQUik7CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKGhlbHBlckZ1bmN0aW9uLCByZXN1
bHRHUFIsIExpbmthYmxlQ29uc3RhbnQ6Omdsb2JhbE9iamVjdCgqdGhpcywgbm9kZSksIGFyZzFS
ZWdzLCBhcmcyUmVncyk7CisgICAgICAgICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKCk7CiAK
ICAgICAgICAgICAgIGJyYW5jaFRlc3QzMihjYWxsUmVzdWx0Q29uZGl0aW9uLCByZXN1bHRHUFIs
IHRha2VuKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oCmluZGV4IGQzNGFhZDVlMWIyYy4uMTNlNWQwYmRiYTBhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDI0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIzIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzY3LDQ4ICsz
NjcsMzMgQEAgcHVibGljOgogICAgIC8vIGluIHRoZSBHZW5lcmF0aW9uSW5mby4KICAgICBTaWxl
bnRSZWdpc3RlclNhdmVQbGFuIHNpbGVudFNhdmVQbGFuRm9yR1BSKFZpcnR1YWxSZWdpc3RlciBz
cGlsbE1lLCBHUFJSZWcgc291cmNlKTsKICAgICBTaWxlbnRSZWdpc3RlclNhdmVQbGFuIHNpbGVu
dFNhdmVQbGFuRm9yRlBSKFZpcnR1YWxSZWdpc3RlciBzcGlsbE1lLCBGUFJSZWcgc291cmNlKTsK
LSAgICB2b2lkIHNpbGVudFNwaWxsSW1wbChjb25zdCBTaWxlbnRSZWdpc3RlclNhdmVQbGFuJik7
Ci0gICAgdm9pZCBzaWxlbnRGaWxsSW1wbChjb25zdCBTaWxlbnRSZWdpc3RlclNhdmVQbGFuJik7
Ci0KLSAgICBSZWdpc3RlclNldEJ1aWxkZXIgc3BpbGxlZFJlZ3NGb3JTaWxlbnRTcGlsbFBsYW5z
KGNvbnN0IGF1dG8mIHBsYW5zKQotICAgIHsKLSAgICAgICAgUmVnaXN0ZXJTZXRCdWlsZGVyIHVz
ZWRSZWdpc3RlcnM7Ci0gICAgICAgIGZvciAoYXV0byYgcGxhbiA6IHBsYW5zKQotICAgICAgICAg
ICAgdXNlZFJlZ2lzdGVycy5hZGQocGxhbi5yZWcoKSwgSWdub3JlVmVjdG9ycyk7Ci0gICAgICAg
IHJldHVybiB1c2VkUmVnaXN0ZXJzOwotICAgIH0KKyAgICB2b2lkIHNpbGVudFNwaWxsKGNvbnN0
IFNpbGVudFJlZ2lzdGVyU2F2ZVBsYW4mKTsKKyAgICB2b2lkIHNpbGVudEZpbGwoY29uc3QgU2ls
ZW50UmVnaXN0ZXJTYXZlUGxhbiYpOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ29sbGVjdGlv
blR5cGU+CiAgICAgdm9pZCBzaWxlbnRTcGlsbChjb25zdCBDb2xsZWN0aW9uVHlwZSYgc2F2ZVBs
YW5zKQogICAgIHsKLSAgICAgICAgQVNTRVJUKCFtX3VuZGVyU2lsZW50U3BpbGwpOwotICAgICAg
ICBtX3VuZGVyU2lsZW50U3BpbGwgPSB0cnVlOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgc2F2ZVBsYW5zLnNpemUoKTsgKytpKQotICAgICAgICAgICAgc2lsZW50U3BpbGxJbXBs
KHNhdmVQbGFuc1tpXSk7CisgICAgICAgICAgICBzaWxlbnRTcGlsbChzYXZlUGxhbnNbaV0pOwog
ICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENvbGxlY3Rpb25UeXBlPgogICAgIHZvaWQg
c2lsZW50RmlsbChjb25zdCBDb2xsZWN0aW9uVHlwZSYgc2F2ZVBsYW5zKQogICAgIHsKLSAgICAg
ICAgQVNTRVJUKG1fdW5kZXJTaWxlbnRTcGlsbCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IHNhdmVQbGFucy5zaXplKCk7IGktLTspCi0gICAgICAgICAgICBzaWxlbnRGaWxsSW1wbChzYXZl
UGxhbnNbaV0pOwotICAgICAgICBtX3VuZGVyU2lsZW50U3BpbGwgPSBmYWxzZTsKKyAgICAgICAg
ICAgIHNpbGVudEZpbGwoc2F2ZVBsYW5zW2ldKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBDb2xsZWN0aW9uVHlwZT4KICAgICB2b2lkIHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJzSW1w
bChib29sIGRvU3BpbGwsIENvbGxlY3Rpb25UeXBlJiBwbGFucywgR1BSUmVnIGV4Y2x1ZGUsIEdQ
UlJlZyBleGNsdWRlMiA9IEludmFsaWRHUFJSZWcsIEZQUlJlZyBmcHJFeGNsdWRlID0gSW52YWxp
ZEZQUlJlZykKICAgICB7CiAgICAgICAgIEFTU0VSVChwbGFucy5pc0VtcHR5KCkpOwotICAgICAg
ICBBU1NFUlQoIW1fdW5kZXJTaWxlbnRTcGlsbCk7Ci0gICAgICAgIGlmIChkb1NwaWxsKQotICAg
ICAgICAgICAgbV91bmRlclNpbGVudFNwaWxsID0gdHJ1ZTsKICAgICAgICAgZm9yIChncHJfaXRl
cmF0b3IgaXRlciA9IG1fZ3Bycy5iZWdpbigpOyBpdGVyICE9IG1fZ3Bycy5lbmQoKTsgKytpdGVy
KSB7CiAgICAgICAgICAgICBHUFJSZWcgZ3ByID0gaXRlci5yZWdJRCgpOwogICAgICAgICAgICAg
aWYgKGl0ZXIubmFtZSgpLmlzVmFsaWQoKSAmJiBncHIgIT0gZXhjbHVkZSAmJiBncHIgIT0gZXhj
bHVkZTIpIHsKICAgICAgICAgICAgICAgICBTaWxlbnRSZWdpc3RlclNhdmVQbGFuIHBsYW4gPSBz
aWxlbnRTYXZlUGxhbkZvckdQUihpdGVyLm5hbWUoKSwgZ3ByKTsKICAgICAgICAgICAgICAgICBp
ZiAoZG9TcGlsbCkKLSAgICAgICAgICAgICAgICAgICAgc2lsZW50U3BpbGxJbXBsKHBsYW4pOwor
ICAgICAgICAgICAgICAgICAgICBzaWxlbnRTcGlsbChwbGFuKTsKICAgICAgICAgICAgICAgICBw
bGFucy5hcHBlbmQocGxhbik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTQxNiw3ICs0
MDEsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBpZiAoaXRlci5uYW1lKCkuaXNWYWxpZCgpICYm
IGl0ZXIucmVnSUQoKSAhPSBmcHJFeGNsdWRlKSB7CiAgICAgICAgICAgICAgICAgU2lsZW50UmVn
aXN0ZXJTYXZlUGxhbiBwbGFuID0gc2lsZW50U2F2ZVBsYW5Gb3JGUFIoaXRlci5uYW1lKCksIGl0
ZXIucmVnSUQoKSk7CiAgICAgICAgICAgICAgICAgaWYgKGRvU3BpbGwpCi0gICAgICAgICAgICAg
ICAgICAgIHNpbGVudFNwaWxsSW1wbChwbGFuKTsKKyAgICAgICAgICAgICAgICAgICAgc2lsZW50
U3BpbGwocGxhbik7CiAgICAgICAgICAgICAgICAgcGxhbnMuYXBwZW5kKHBsYW4pOwogICAgICAg
ICAgICAgfQogICAgICAgICB9CkBAIC00NjAsOCArNDQ1LDExIEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgc2lsZW50RmlsbEFsbFJlZ2lzdGVycygpCiAgICAgewotICAgICAgICBzaWxlbnRGaWxsKG1f
cGxhbnMpOwotICAgICAgICBtX3BsYW5zLmNsZWFyKCk7CisgICAgICAgIHdoaWxlICghbV9wbGFu
cy5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIFNpbGVudFJlZ2lzdGVyU2F2ZVBsYW4mIHBsYW4g
PSBtX3BsYW5zLmxhc3QoKTsKKyAgICAgICAgICAgIHNpbGVudEZpbGwocGxhbik7CisgICAgICAg
ICAgICBtX3BsYW5zLnJlbW92ZUxhc3QoKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIC8vIFRo
ZXNlIG1ldGhvZHMgY29udmVydCBiZXR3ZWVuIGRvdWJsZXMsIGFuZCBkb3VibGVzIGJveGVkIGFu
ZCBKU1ZhbHVlcy4KQEAgLTk1Myw3ICs5NDEsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBvcGVyYXRp
b25FeGNlcHRpb25DaGVjaygpCiAgICAgewogICAgICAgICB1c2luZyBSZXN1bHRUeXBlID0gdHlw
ZW5hbWUgRnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlwZT46OlJlc3VsdFR5cGU7Ci0gICAgICAg
IEFTU0VSVCghbV91bmRlclNpbGVudFNwaWxsKTsKICAgICAgICAgZXhjZXB0aW9uQ2hlY2sob3Bl
cmF0aW9uRXhjZXB0aW9uUmVnaXN0ZXI8UmVzdWx0VHlwZT4oKSk7CiAgICAgfQogCkBAIC05Njks
NyArOTU2LDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJh
dGlvblR5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgcmVxdWlyZXMgKE9wZXJhdGlvbklzVm9p
ZDxPcGVyYXRpb25UeXBlPikKKyAgICByZXF1aXJlcyAoIU9wZXJhdGlvbkhhc1Jlc3VsdDxPcGVy
YXRpb25UeXBlPikKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKE9wZXJhdGlv
blR5cGUgb3BlcmF0aW9uLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICBzZXR1cEFyZ3Vt
ZW50czxPcGVyYXRpb25UeXBlPihhcmdzLi4uKTsKQEAgLTk5MCw3ICs5NzcsNyBAQCBwdWJsaWM6
CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdHlwZW5hbWUu
Li4gQXJncz4KLSAgICByZXF1aXJlcyAoT3BlcmF0aW9uSXNWb2lkPE9wZXJhdGlvblR5cGU+KQor
ICAgIHJlcXVpcmVzICghT3BlcmF0aW9uSGFzUmVzdWx0PE9wZXJhdGlvblR5cGU+KQogICAgIEpJ
VENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oY29uc3QgQ29kZVB0cjxPcGVyYXRpb25QdHJU
YWc+IG9wZXJhdGlvbiwgQXJncy4uLiBhcmdzKQogICAgIHsKICAgICAgICAgc2V0dXBBcmd1bWVu
dHM8T3BlcmF0aW9uVHlwZT4oYXJncy4uLik7CkBAIC0xMDA5LDE3ICs5OTYsOSBAQCBwdWJsaWM6
CiAgICAgICAgIHNldHVwUmVzdWx0cyhyZXN1bHQpOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5
cGVuYW1lIE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgcmVxdWlyZXMgKE9w
ZXJhdGlvbklzVm9pZDxPcGVyYXRpb25UeXBlPikKLSAgICB2b2lkIGNhbGxPcGVyYXRpb24oQWRk
cmVzcyBhZGRyZXNzLCBBcmdzLi4uIGFyZ3MpCi0gICAgewotICAgICAgICBzZXR1cEFyZ3VtZW50
c0ZvckluZGlyZWN0Q2FsbDxPcGVyYXRpb25UeXBlPihhZGRyZXNzLCBhcmdzLi4uKTsKLSAgICAg
ICAgYXBwZW5kQ2FsbChBZGRyZXNzKEdQUkluZm86Om5vbkFyZ0dQUjAsIGFkZHJlc3Mub2Zmc2V0
KSk7Ci0gICAgICAgIG9wZXJhdGlvbkV4Y2VwdGlvbkNoZWNrPE9wZXJhdGlvblR5cGU+KCk7Ci0g
ICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdHlwZW5hbWUuLi4g
QXJncz4KLSAgICByZXF1aXJlcyAoT3BlcmF0aW9uSXNWb2lkPE9wZXJhdGlvblR5cGU+CisgICAg
cmVxdWlyZXMgKCFPcGVyYXRpb25IYXNSZXN1bHQ8T3BlcmF0aW9uVHlwZT4KICAgICAgICAgJiYg
IWlzRXhjZXB0aW9uT3BlcmF0aW9uUmVzdWx0PHR5cGVuYW1lIEZ1bmN0aW9uVHJhaXRzPE9wZXJh
dGlvblR5cGU+OjpSZXN1bHRUeXBlPikgLy8gU2FuaXR5IGNoZWNrCiAgICAgdm9pZCBjYWxsT3Bl
cmF0aW9uV2l0aG91dEV4Y2VwdGlvbkNoZWNrKEFkZHJlc3MgYWRkcmVzcywgQXJncy4uLiBhcmdz
KQogICAgIHsKQEAgLTEwMzksNyArMTAxOCw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgotICAgIHJlcXVp
cmVzIChPcGVyYXRpb25Jc1ZvaWQ8T3BlcmF0aW9uVHlwZT4KKyAgICByZXF1aXJlcyAoIU9wZXJh
dGlvbkhhc1Jlc3VsdDxPcGVyYXRpb25UeXBlPgogICAgICAgICAmJiAhaXNFeGNlcHRpb25PcGVy
YXRpb25SZXN1bHQ8dHlwZW5hbWUgRnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlwZT46OlJlc3Vs
dFR5cGU+KSAvLyBTYW5pdHkgY2hlY2sKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0
aW9uV2l0aG91dEV4Y2VwdGlvbkNoZWNrKE9wZXJhdGlvblR5cGUgb3BlcmF0aW9uLCBBcmdzLi4u
IGFyZ3MpCiAgICAgewpAQCAtMTA1NywxMjIgKzEwMzYsMTMgQEAgcHVibGljOgogICAgICAgICBz
ZXR1cFJlc3VsdHMocmVzdWx0KTsKICAgICB9CiAKLSAgICAvLyBUaGVyZSBhcmUgdGhyZWUgY2Fz
ZXMgaGVyZToKLSAgICAvLyAxKSBudWxsb3B0IHRoZSBleGNlcHRpb24gd2FzIGhhbmRsZWQKLSAg
ICAvLyAyKSB2YWxpZCBHUFJSZWcgY29udGFpbmluZyB0aGUgZXhjZXB0aW9uIHRoYXQgd29uJ3Qg
aW50ZXJmZXJlIHdpdGggc2lsZW50RmlsbC4KLSAgICAvLyAzKSBJbnZhbGlkR1BSUmVnIG1lYW5p
bmcgdGhlIGV4Y2VwdGlvbiBuZWVkcyB0byBiZSBsb2FkZWQgZnJvbSBWTS4KLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFtZSBSZXN1bHRSZWdUeXBlPgotICAgIHN0
ZDo6b3B0aW9uYWw8R1BSUmVnPiB0cnlIYW5kbGVPckdldEV4Y2VwdGlvblVuZGVyU2lsZW50U3Bp
bGwoY29uc3QgYXV0byYgcGxhbnMsIFJlc3VsdFJlZ1R5cGUgcmVzdWx0KQotICAgIHsKLSAgICAg
ICAgQVNTRVJUKG1fdW5kZXJTaWxlbnRTcGlsbCk7Ci0gICAgICAgIHVzaW5nIFJlc3VsdFR5cGUg
PSB0eXBlbmFtZSBGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6UmVzdWx0VHlwZTsKLSAg
ICAgICAgR1BSUmVnIGV4Y2VwdGlvblJlZyA9IG9wZXJhdGlvbkV4Y2VwdGlvblJlZ2lzdGVyPFJl
c3VsdFR5cGU+KCk7Ci0gICAgICAgIENvZGVPcmlnaW4gb3BDYXRjaE9yaWdpbjsKLSAgICAgICAg
SGFuZGxlckluZm8qIGV4Y2VwdGlvbkhhbmRsZXI7Ci0gICAgICAgIGJvb2wgd2lsbENhdGNoRXhj
ZXB0aW9uID0gbV9ncmFwaC53aWxsQ2F0Y2hFeGNlcHRpb25Jbk1hY2hpbmVGcmFtZShtX2N1cnJl
bnROb2RlLT5vcmlnaW4uZm9yRXhpdCwgb3BDYXRjaE9yaWdpbiwgZXhjZXB0aW9uSGFuZGxlcik7
Ci0gICAgICAgIC8vIFRoZSBzaW1wbGVzdCAoYW5kIG1vc3QgY29tbW9uKSBjYXNlIGlzIHdoZW4g
d2UncmUgbm90IGdvaW5nIHRvIGNhdGNoIGluIHRoaXMgZnJhbWUsIHRoZW4gd2UgZG9uJ3QgbmVl
ZCB0byBmaWxsIHNpbmNlCi0gICAgICAgIC8vIG5vIG9uZSdzIGdvaW5nIHRvIGxvb2suCi0gICAg
ICAgIGlmICghd2lsbENhdGNoRXhjZXB0aW9uKSB7Ci0gICAgICAgICAgICBleGNlcHRpb25DaGVj
ayhleGNlcHRpb25SZWcpOwotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAg
ICAgfQotCi0gICAgICAgIGlmIChleGNlcHRpb25SZWcgIT0gSW52YWxpZEdQUlJlZykgewotICAg
ICAgICAgICAgUmVnaXN0ZXJTZXRCdWlsZGVyIHNwaWxsZWRSZWdzID0gc3BpbGxlZFJlZ3NGb3JT
aWxlbnRTcGlsbFBsYW5zKHBsYW5zKTsKLSAgICAgICAgICAgIGlmIGNvbnN0ZXhwciAoc3RkOjpp
c19zYW1lX3Y8R1BSUmVnLCBSZXN1bHRSZWdUeXBlPiB8fCBzdGQ6OmlzX3NhbWVfdjxKU1ZhbHVl
UmVncywgUmVzdWx0UmVnVHlwZT4pIHsKLSAgICAgICAgICAgICAgICBzcGlsbGVkUmVncy5hZGQo
R1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIElnbm9yZVZlY3RvcnMpOwotICAgICAgICAgICAgICAg
IHNwaWxsZWRSZWdzLmFkZChyZXN1bHQsIElnbm9yZVZlY3RvcnMpOwotICAgICAgICAgICAgfQot
Ci0gICAgICAgICAgICBpZiAoc3BpbGxlZFJlZ3MuYnVpbGRBbmRWYWxpZGF0ZSgpLmNvbnRhaW5z
KGV4Y2VwdGlvblJlZywgSWdub3JlVmVjdG9ycykpIHsKLSAgICAgICAgICAgICAgICAvLyBJdCB3
b3VsZCBiZSBuaWNlIGlmIHdlIGNvdWxkIGRvIG1fZ3Bycy50cnlBbGxvY2F0ZSgpIGJ1dCB3ZSdy
ZSBwb3NzaWJseSBvbiBhIHNsb3cgcGF0aCBhbmQgcmVnaXN0ZXIgYWxsb2NhdGlvbiBzdGF0ZSBp
cwotICAgICAgICAgICAgICAgIC8vIHByb2JhYmx5IGdhcmJhZ2UuCi0gICAgICAgICAgICAgICAg
Y29uc3RleHByIFJlZ2lzdGVyU2V0QnVpbGRlciByZWdpc3RlcnNJbkJhbmsgPSBkZWNsdHlwZSht
X2dwcnMpOjpyZWdpc3RlcnNJbkJhbmsoKTsKLSAgICAgICAgICAgICAgICAvLyBNb3ZlIHRvIGEg
bm9uLWNvbnN0ZXhwciBsb2NhbCBzbyB3ZSBjYW4gY2FsbCBleGNsdWRlLgotICAgICAgICAgICAg
ICAgIFJlZ2lzdGVyU2V0QnVpbGRlciBwb3NzaWJsZVJlZ2lzdGVycyA9IHJlZ2lzdGVyc0luQmFu
azsKLSAgICAgICAgICAgICAgICBSZWdpc3RlclNldCBmcmVlUmVncyA9IHBvc3NpYmxlUmVnaXN0
ZXJzLmV4Y2x1ZGUoc3BpbGxlZFJlZ3MpLmJ1aWxkQW5kVmFsaWRhdGUoKTsKLSAgICAgICAgICAg
ICAgICBhdXRvIGl0ZXIgPSBmcmVlUmVncy5iZWdpbigpOwotICAgICAgICAgICAgICAgIGlmIChp
dGVyICE9IGZyZWVSZWdzLmVuZCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1vdmUoZXhjZXB0
aW9uUmVnLCBpdGVyLmdwcigpKTsKLSAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uUmVnID0g
aXRlci5ncHIoKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAg
ICAvLyBXZSB0cmllZCBidXQgdGhlcmUgd2VyZSBubyBmcmVlIHJlZ3MuCi0gICAgICAgICAgICAg
ICAgICAgIGV4Y2VwdGlvblJlZyA9IEludmFsaWRHUFJSZWc7Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGV4Y2VwdGlvblJlZzsK
LSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFtZSBS
ZXN1bHRSZWdUeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgotICAgIHJlcXVpcmVzIChPcGVyYXRpb25I
YXNSZXN1bHQ8T3BlcmF0aW9uVHlwZT4pCi0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJh
dGlvbldpdGhTaWxlbnRTcGlsbChPcGVyYXRpb25UeXBlIG9wZXJhdGlvbiwgUmVzdWx0UmVnVHlw
ZSByZXN1bHQsIEFyZ3MuLi4gYXJncykKLSAgICB7Ci0gICAgICAgIHNpbGVudFNwaWxsQWxsUmVn
aXN0ZXJzKHJlc3VsdCk7Ci0gICAgICAgIHNldHVwQXJndW1lbnRzPE9wZXJhdGlvblR5cGU+KGFy
Z3MuLi4pOwotICAgICAgICBhdXRvIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvbik7Ci0KLSAg
ICAgICAgc3RkOjpvcHRpb25hbDxHUFJSZWc+IGV4Y2VwdGlvblJlZyA9IHRyeUhhbmRsZU9yR2V0
RXhjZXB0aW9uVW5kZXJTaWxlbnRTcGlsbDxPcGVyYXRpb25UeXBlPihtX3BsYW5zLCByZXN1bHQp
OwotCi0gICAgICAgIHNldHVwUmVzdWx0cyhyZXN1bHQpOwotICAgICAgICBzaWxlbnRGaWxsQWxs
UmVnaXN0ZXJzKCk7Ci0gICAgICAgIGlmIChleGNlcHRpb25SZWcpCi0gICAgICAgICAgICBleGNl
cHRpb25DaGVjaygqZXhjZXB0aW9uUmVnKTsKLQotICAgICAgICByZXR1cm4gY2FsbDsKLSAgICB9
Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFtZSBSZXN1bHRS
ZWdUeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgotICAgIHJlcXVpcmVzIChPcGVyYXRpb25IYXNSZXN1
bHQ8T3BlcmF0aW9uVHlwZT4pCi0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbldp
dGhTaWxlbnRTcGlsbChzdGQ6OnNwYW48Y29uc3QgU2lsZW50UmVnaXN0ZXJTYXZlUGxhbj4gcGxh
bnMsIE9wZXJhdGlvblR5cGUgb3BlcmF0aW9uLCBSZXN1bHRSZWdUeXBlIHJlc3VsdCwgQXJncy4u
LiBhcmdzKQotICAgIHsKLSAgICAgICAgc2lsZW50U3BpbGwocGxhbnMpOwotICAgICAgICBzZXR1
cEFyZ3VtZW50czxPcGVyYXRpb25UeXBlPihhcmdzLi4uKTsKLSAgICAgICAgYXV0byBjYWxsID0g
YXBwZW5kQ2FsbChvcGVyYXRpb24pOwotCi0gICAgICAgIHN0ZDo6b3B0aW9uYWw8R1BSUmVnPiBl
eGNlcHRpb25SZWcgPSB0cnlIYW5kbGVPckdldEV4Y2VwdGlvblVuZGVyU2lsZW50U3BpbGw8T3Bl
cmF0aW9uVHlwZT4ocGxhbnMsIHJlc3VsdCk7Ci0KLSAgICAgICAgc2V0dXBSZXN1bHRzKHJlc3Vs
dCk7Ci0gICAgICAgIHNpbGVudEZpbGwocGxhbnMpOwotICAgICAgICBpZiAoZXhjZXB0aW9uUmVn
KQotICAgICAgICAgICAgZXhjZXB0aW9uQ2hlY2soKmV4Y2VwdGlvblJlZyk7Ci0KLSAgICAgICAg
cmV0dXJuIGNhbGw7Ci0gICAgfQotCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlw
ZSwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICByZXF1aXJlcyAoT3BlcmF0aW9uSXNWb2lkPE9wZXJh
dGlvblR5cGU+KQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb25XaXRoU2lsZW50
U3BpbGwoT3BlcmF0aW9uVHlwZSBvcGVyYXRpb24sIEFyZ3MuLi4gYXJncykKLSAgICB7Ci0gICAg
ICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJzKEludmFsaWRHUFJSZWcpOwotICAgICAgICBzZXR1
cEFyZ3VtZW50czxPcGVyYXRpb25UeXBlPihhcmdzLi4uKTsKLSAgICAgICAgYXV0byBjYWxsID0g
YXBwZW5kQ2FsbChvcGVyYXRpb24pOwotCi0gICAgICAgIHN0ZDo6b3B0aW9uYWw8R1BSUmVnPiBl
eGNlcHRpb25SZWcgPSB0cnlIYW5kbGVPckdldEV4Y2VwdGlvblVuZGVyU2lsZW50U3BpbGw8T3Bl
cmF0aW9uVHlwZT4obV9wbGFucywgTm9SZXN1bHQpOwotCi0gICAgICAgIHNpbGVudEZpbGxBbGxS
ZWdpc3RlcnMoKTsKLSAgICAgICAgaWYgKGV4Y2VwdGlvblJlZykKLSAgICAgICAgICAgIGV4Y2Vw
dGlvbkNoZWNrKCpleGNlcHRpb25SZWcpOwotCi0gICAgICAgIHJldHVybiBjYWxsOwotICAgIH0K
LQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+
Ci0gICAgcmVxdWlyZXMgKE9wZXJhdGlvbklzVm9pZDxPcGVyYXRpb25UeXBlPikKLSAgICBKSVRD
b21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uV2l0aFNpbGVudFNwaWxsKHN0ZDo6c3Bhbjxjb25z
dCBTaWxlbnRSZWdpc3RlclNhdmVQbGFuPiBwbGFucywgT3BlcmF0aW9uVHlwZSBvcGVyYXRpb24s
IEFyZ3MuLi4gYXJncykKKyAgICByZXF1aXJlcyAoIU9wZXJhdGlvbkhhc1Jlc3VsdDxPcGVyYXRp
b25UeXBlPikKKyAgICB2b2lkIGNhbGxPcGVyYXRpb24oQWRkcmVzcyBhZGRyZXNzLCBBcmdzLi4u
IGFyZ3MpCiAgICAgewotICAgICAgICBzaWxlbnRTcGlsbChwbGFucyk7Ci0gICAgICAgIHNldHVw
QXJndW1lbnRzPE9wZXJhdGlvblR5cGU+KGFyZ3MuLi4pOwotICAgICAgICBhdXRvIGNhbGwgPSBh
cHBlbmRDYWxsKG9wZXJhdGlvbik7Ci0KLSAgICAgICAgc3RkOjpvcHRpb25hbDxHUFJSZWc+IGV4
Y2VwdGlvblJlZyA9IHRyeUhhbmRsZU9yR2V0RXhjZXB0aW9uVW5kZXJTaWxlbnRTcGlsbDxPcGVy
YXRpb25UeXBlPihwbGFucywgTm9SZXN1bHQpOwotCi0gICAgICAgIHNpbGVudEZpbGwocGxhbnMp
OwotICAgICAgICBpZiAoZXhjZXB0aW9uUmVnKQotICAgICAgICAgICAgZXhjZXB0aW9uQ2hlY2so
KmV4Y2VwdGlvblJlZyk7Ci0KLSAgICAgICAgcmV0dXJuIGNhbGw7CisgICAgICAgIHNldHVwQXJn
dW1lbnRzRm9ySW5kaXJlY3RDYWxsPE9wZXJhdGlvblR5cGU+KGFkZHJlc3MsIGFyZ3MuLi4pOwor
ICAgICAgICBhcHBlbmRDYWxsKEFkZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BSMCwgYWRkcmVzcy5v
ZmZzZXQpKTsKKyAgICAgICAgb3BlcmF0aW9uRXhjZXB0aW9uQ2hlY2s8T3BlcmF0aW9uVHlwZT4o
KTsKICAgICB9CiAKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsVGhyb3dPcGVyYXRpb25XaXRo
Q2FsbEZyYW1lUm9sbGJhY2soVl9KSVRPcGVyYXRpb25fQ2Igb3BlcmF0aW9uLCBHUFJSZWcgY29k
ZUJsb2NrR1BSKQpAQCAtMjA1MSw3ICsxOTIxLDYgQEAgcHVibGljOgogICAgIH07CiAgICAgVmVj
dG9yPFNsb3dQYXRoTGFtYmRhPiBtX3Nsb3dQYXRoTGFtYmRhczsKICAgICBWZWN0b3I8U2lsZW50
UmVnaXN0ZXJTYXZlUGxhbj4gbV9wbGFuczsKLSAgICBib29sIG1fdW5kZXJTaWxlbnRTcGlsbCB7
IGZhbHNlIH07CiAgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gbV9vdXRPZkxpbmVTdHJlYW1J
bmRleDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwCmluZGV4IDFlNGRiZWFjNjY1OS4uNzdlYjc3YjlmNjFiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjQgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00
NzEsNyArNDcxLDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVQZWVwaG9s
ZVN0cmljdEVxKE5vZGUqIG5vZGUsIE5vZGUqIGJyYW5jaE5vZGUKICAgICAgICAgLy8gY2VsbCwg
dGhlbiB0aGV5IG11c3QgYmUgc3RyaWN0bHkgZXF1YWwuCiAgICAgICAgIGJyYW5jaDY0KEVxdWFs
LCBhcmcxR1BSLCBhcmcyR1BSLCBpbnZlcnQgPyBub3RUYWtlbiA6IHRha2VuKTsKICAgICAgICAg
Ci0gICAgICAgIGNhbGxPcGVyYXRpb25XaXRoU2lsZW50U3BpbGwob3BlcmF0aW9uQ29tcGFyZVN0
cmljdEVxQ2VsbCwgcmVzdWx0R1BSLCBMaW5rYWJsZUNvbnN0YW50OjpnbG9iYWxPYmplY3QoKnRo
aXMsIG5vZGUpLCBhcmcxR1BSLCBhcmcyR1BSKTsKKyAgICAgICAgc2lsZW50U3BpbGxBbGxSZWdp
c3RlcnMocmVzdWx0R1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Db21wYXJl
U3RyaWN0RXFDZWxsLCByZXN1bHRHUFIsIExpbmthYmxlQ29uc3RhbnQ6Omdsb2JhbE9iamVjdCgq
dGhpcywgbm9kZSksIGFyZzFHUFIsIGFyZzJHUFIpOworICAgICAgICBzaWxlbnRGaWxsQWxsUmVn
aXN0ZXJzKCk7CiAgICAgICAgIAogICAgICAgICBicmFuY2hUZXN0MzIoaW52ZXJ0ID8gWmVybyA6
IE5vblplcm8sIHJlc3VsdEdQUiwgdGFrZW4pOwogICAgIH0gZWxzZSB7CkBAIC01NTcsNyArNTU5
LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Z2VuZXJpY0pTVmFsdWVOb25QZWVwaG9sZVN0cmlj
dEVxKE5vZGUqIG5vZGUsIGJvb2wgaW52ZXJ0KQogCiAgICAgICAgIG5vdEVxdWFsQ2FzZS5saW5r
KHRoaXMpOwogICAgICAgICAKLSAgICAgICAgY2FsbE9wZXJhdGlvbldpdGhTaWxlbnRTcGlsbChv
cGVyYXRpb25Db21wYXJlU3RyaWN0RXFDZWxsLCByZXN1bHRHUFIsIExpbmthYmxlQ29uc3RhbnQ6
Omdsb2JhbE9iamVjdCgqdGhpcywgbm9kZSksIGFyZzFSZWdzLCBhcmcyUmVncyk7CisgICAgICAg
IHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdEdQUik7CisgICAgICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uQ29tcGFyZVN0cmljdEVxQ2VsbCwgcmVzdWx0R1BSLCBMaW5rYWJsZUNvbnN0
YW50OjpnbG9iYWxPYmplY3QoKnRoaXMsIG5vZGUpLCBhcmcxUmVncywgYXJnMlJlZ3MpOworICAg
ICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKCk7CiAgICAgICAgIAogICAgICAgICBkb25lLmxp
bmsodGhpcyk7CiAgICAgICAgIHVuYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBtX2N1
cnJlbnROb2RlLCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOwpAQCAtMTEwNCw3ICsxMTA4
LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZSkKICAgICAgICAg
ICAgIGlmICghY2FsbExpbmtJbmZvLT5pc0RhdGFJQygpIHx8ICFzbG93Q2FzZXMuZW1wdHkoKSkg
ewogICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5saW5rKHRoaXMpOwogCi0gICAgICAgICAgICAg
ICAgY2FsbE9wZXJhdGlvbldpdGhTaWxlbnRTcGlsbChvcGVyYXRpb25MaW5rRGlyZWN0Q2FsbCwg
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGNhbGxMaW5rSW5mbyksIGNhbGxlZUdQUik7Cisg
ICAgICAgICAgICAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMoSW52YWxpZEdQUlJlZyk7Cisg
ICAgICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25MaW5rRGlyZWN0Q2FsbCwgQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGNhbGxMaW5rSW5mbyksIGNhbGxlZUdQUik7CisgICAg
ICAgICAgICAgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycygpOwogICAgICAgICAgICAgICAgIGp1
bXAoKS5saW5rVG8obWFpblBhdGgsIHRoaXMpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
dXNlQ2hpbGRyZW4obm9kZSk7CkBAIC0yNTI3LDExICsyNTMzLDEyIEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVHZXRCeVZhbChOb2RlKiBub2RlLCBjb25zdCBTY29wZWRMYW1iZGE8c3Rk
Ojp0dXBsZTxKCiAgICAgICAgICAgICBzdGQ6OnRpZShyZXN1bHRSZWdzLCBzdGQ6Omlnbm9yZSwg
Y2FuVXNlRmx1c2gpID0gcHJlZml4KERhdGFGb3JtYXRKUyk7CiAKICAgICAgICAgICAgIGlmIChj
YW5Vc2VGbHVzaCA9PSBDYW5Vc2VGbHVzaDo6Tm8pCi0gICAgICAgICAgICAgICAgY2FsbE9wZXJh
dGlvbldpdGhTaWxlbnRTcGlsbChvcGVyYXRpb25HZXRCeVZhbEdlbmVyaWMsIHJlc3VsdFJlZ3Ms
IExpbmthYmxlQ29uc3RhbnQ6Omdsb2JhbE9iamVjdCgqdGhpcywgbm9kZSksIGJhc2VHUFIsIHBy
b3BlcnR5R1BSKTsKLSAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHNpbGVudFNw
aWxsQWxsUmVnaXN0ZXJzKHJlc3VsdFJlZ3MpOworICAgICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25HZXRCeVZhbEdlbmVyaWMsIHJlc3VsdFJlZ3MsIExpbmthYmxlQ29uc3RhbnQ6Omds
b2JhbE9iamVjdCgqdGhpcywgbm9kZSksIGJhc2VHUFIsIHByb3BlcnR5R1BSKTsKLSAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uR2V0QnlWYWxHZW5lcmlj
LCByZXN1bHRSZWdzLCBMaW5rYWJsZUNvbnN0YW50OjpnbG9iYWxPYmplY3QoKnRoaXMsIG5vZGUp
LCBiYXNlR1BSLCBwcm9wZXJ0eUdQUik7CisgICAgICAgICAgICBpZiAoY2FuVXNlRmx1c2ggPT0g
Q2FuVXNlRmx1c2g6Ok5vKQorICAgICAgICAgICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMo
KTsKIAogICAgICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKICAgICAg
ICAgICAgIHJldHVybjsKQEAgLTQyMzksNyArNDI0Niw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgICAgICBKdW1wIGRvbmUgPSBqdW1wKCk7
CiAKICAgICAgICAgICAgICAgICBub3ROdW1iZXIubGluayh0aGlzKTsKLSAgICAgICAgICAgICAg
ICBjYWxsT3BlcmF0aW9uV2l0aFNpbGVudFNwaWxsKG9wZXJhdGlvblRvTnVtYmVyLCByZXN1bHRH
UFIsIExpbmthYmxlQ29uc3RhbnQ6Omdsb2JhbE9iamVjdCgqdGhpcywgbm9kZSksIGFyZ3VtZW50
R1BSKTsKKyAgICAgICAgICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRHUFIp
OworICAgICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVG9OdW1iZXIsIHJlc3Vs
dEdQUiwgTGlua2FibGVDb25zdGFudDo6Z2xvYmFsT2JqZWN0KCp0aGlzLCBub2RlKSwgYXJndW1l
bnRHUFIpOworICAgICAgICAgICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMoKTsKIAogICAg
ICAgICAgICAgICAgIGRvbmUubGluayh0aGlzKTsKICAgICAgICAgICAgIH0KQEAgLTUxNjUsNyAr
NTE3NCw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAg
ICAgICAgIGRvbmUuYXBwZW5kKGp1bXAoKSk7CiAKICAgICAgICAgICAgIHNsb3dQYXRoLmxpbmso
dGhpcyk7Ci0gICAgICAgICAgICBjYWxsT3BlcmF0aW9uV2l0aFNpbGVudFNwaWxsKG9wZXJhdGlv
bk1hcEhhc2gsIHJlc3VsdEdQUiwgTGlua2FibGVDb25zdGFudDo6Z2xvYmFsT2JqZWN0KCp0aGlz
LCBub2RlKSwgSlNWYWx1ZVJlZ3MoaW5wdXRHUFIpKTsKKyAgICAgICAgICAgIHNpbGVudFNwaWxs
QWxsUmVnaXN0ZXJzKHJlc3VsdEdQUik7CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvbk1hcEhhc2gsIHJlc3VsdEdQUiwgTGlua2FibGVDb25zdGFudDo6Z2xvYmFsT2JqZWN0KCp0
aGlzLCBub2RlKSwgSlNWYWx1ZVJlZ3MoaW5wdXRHUFIpKTsKKyAgICAgICAgICAgIHNpbGVudEZp
bGxBbGxSZWdpc3RlcnMoKTsKIAogICAgICAgICAgICAgZG9uZS5saW5rKHRoaXMpOwogICAgICAg
ICAgICAgc3RyaWN0SW50MzJSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKQEAgLTUyMDcsNyArNTIx
OCw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAg
ZG9uZS5hcHBlbmQoanVtcCgpKTsKIAogICAgICAgICBzbG93UGF0aC5saW5rKHRoaXMpOwotICAg
ICAgICBjYWxsT3BlcmF0aW9uV2l0aFNpbGVudFNwaWxsKG9wZXJhdGlvbk1hcEhhc2gsIHJlc3Vs
dEdQUiwgTGlua2FibGVDb25zdGFudDo6Z2xvYmFsT2JqZWN0KCp0aGlzLCBub2RlKSwgSlNWYWx1
ZVJlZ3MoaW5wdXRHUFIpKTsKKyAgICAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMocmVzdWx0
R1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25NYXBIYXNoLCByZXN1bHRHUFIs
IExpbmthYmxlQ29uc3RhbnQ6Omdsb2JhbE9iamVjdCgqdGhpcywgbm9kZSksIEpTVmFsdWVSZWdz
KGlucHV0R1BSKSk7CisgICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMoKTsKIAogICAgICAg
ICBkb25lLmxpbmsodGhpcyk7CiAgICAgICAgIHN0cmljdEludDMyUmVzdWx0KHJlc3VsdEdQUiwg
bm9kZSk7CkBAIC01MzU1LDEyICs1MzY4LDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUoTm9kZSogbm9kZSkKIAogICAgICAgICBpZiAoIXNsb3dQYXRoQ2FzZXMuZW1wdHkoKSkgewog
ICAgICAgICAgICAgc2xvd1BhdGhDYXNlcy5saW5rKHRoaXMpOwotICAgICAgICAgICAgLy8gVE9E
TzogV2h5IGlzIGluZGV4R1BSIHNhdmVkID8/PwotICAgICAgICAgICAgLy8gc2lsZW50U3BpbGxB
bGxSZWdpc3RlcnMoaW5kZXhHUFIpOworICAgICAgICAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3Rl
cnMoaW5kZXhHUFIpOwogICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9
PSBNYXBPYmplY3RVc2UpCi0gICAgICAgICAgICAgICAgY2FsbE9wZXJhdGlvbldpdGhTaWxlbnRT
cGlsbChvcGVyYXRpb25KU01hcEZpbmRCdWNrZXQsIHJlc3VsdEdQUiwgTGlua2FibGVDb25zdGFu
dDo6Z2xvYmFsT2JqZWN0KCp0aGlzLCBub2RlKSwgbWFwR1BSLCBrZXlHUFIsIGhhc2hHUFIpOwor
ICAgICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uSlNNYXBGaW5kQnVja2V0LCBy
ZXN1bHRHUFIsIExpbmthYmxlQ29uc3RhbnQ6Omdsb2JhbE9iamVjdCgqdGhpcywgbm9kZSksIG1h
cEdQUiwga2V5R1BSLCBoYXNoR1BSKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg
ICBjYWxsT3BlcmF0aW9uV2l0aFNpbGVudFNwaWxsKG9wZXJhdGlvbkpTU2V0RmluZEJ1Y2tldCwg
cmVzdWx0R1BSLCBMaW5rYWJsZUNvbnN0YW50OjpnbG9iYWxPYmplY3QoKnRoaXMsIG5vZGUpLCBt
YXBHUFIsIGtleUdQUiwgaGFzaEdQUik7CisgICAgICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25KU1NldEZpbmRCdWNrZXQsIHJlc3VsdEdQUiwgTGlua2FibGVDb25zdGFudDo6Z2xv
YmFsT2JqZWN0KCp0aGlzLCBub2RlKSwgbWFwR1BSLCBrZXlHUFIsIGhhc2hHUFIpOworICAgICAg
ICAgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycygpOwogICAgICAgICAgICAgZG9uZS5hcHBlbmQo
anVtcCgpKTsKICAgICAgICAgfQogCkBAIC01Njg2LDcgKzU2OTksOSBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGF1dG8gZG9uZSA9IGp1bXAoKTsK
IAogICAgICAgICBzbG93UGF0aC5saW5rKHRoaXMpOwotICAgICAgICBjYWxsT3BlcmF0aW9uV2l0
aFNpbGVudFNwaWxsKG9wZXJhdGlvbkhhc093blByb3BlcnR5LCByZXN1bHRHUFIsIExpbmthYmxl
Q29uc3RhbnQ6Omdsb2JhbE9iamVjdCgqdGhpcywgbm9kZSksIG9iamVjdEdQUiwga2V5R1BSKTsK
KyAgICAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMocmVzdWx0R1BSKTsKKyAgICAgICAgY2Fs
bE9wZXJhdGlvbihvcGVyYXRpb25IYXNPd25Qcm9wZXJ0eSwgcmVzdWx0R1BSLCBMaW5rYWJsZUNv
bnN0YW50OjpnbG9iYWxPYmplY3QoKnRoaXMsIG5vZGUpLCBvYmplY3RHUFIsIGtleUdQUik7Cisg
ICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMoKTsKIAogICAgICAgICBkb25lLmxpbmsodGhp
cyk7CiAgICAgICAgIG9yMzIoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OlZhbHVlRmFsc2UpLCByZXN1
bHRHUFIpOwpAQCAtNjM3OCw4ICs2MzkzLDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlKiBub2RlKQogICAgICAgICAgICAgfQogICAgICAgICAgICAgZW1pdFJlc3RvcmVDYWxs
ZWVTYXZlcygpOwogICAgICAgICAgICAgZmFySnVtcCh0ZW1wR1BSLCBHUFJJbmZvOjpjYWxsRnJh
bWVSZWdpc3Rlcik7Ci0gICAgICAgICAgICAvLyBTaWxlbmNlIG91ciBhc3NlcnRpb25zIGhlcmUg
c2luY2UgdGhpcyBkb2Vzbid0IHJldHVybiB0byB0aGlzIGZ1bmN0aW9uLgotICAgICAgICAgICAg
bV91bmRlclNpbGVudFNwaWxsID0gZmFsc2U7CiAgICAgICAgIH0pOwogICAgICAgICBicmVhazsK
ICAgICB9CkBAIC03MzEyLDEzICs3MzI1LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVDcmVhdGVDbG9uZWRBcmd1bWVudHMoTm9kZSogbm9kZSkKICAgICAgICAgICAgICAgICB9KTsK
IAogICAgICAgICAgICAgYXBwZW5kQ2FsbChvcGVyYXRpb25DcmVhdGVDbG9uZWRBcmd1bWVudHMp
OwotICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxHUFJSZWc+IGV4Y2VwdGlvbiA9IHRyeUhhbmRs
ZU9yR2V0RXhjZXB0aW9uVW5kZXJTaWxlbnRTcGlsbDxkZWNsdHlwZShvcGVyYXRpb25DcmVhdGVD
bG9uZWRBcmd1bWVudHMpPihzYXZlUGxhbnMsIHJlc3VsdEdQUik7CisgICAgICAgICAgICBvcGVy
YXRpb25FeGNlcHRpb25DaGVjazxkZWNsdHlwZShvcGVyYXRpb25DcmVhdGVDbG9uZWRBcmd1bWVu
dHMpPigpOwogICAgICAgICAgICAgc2V0dXBSZXN1bHRzKHJlc3VsdEdQUik7CiAgICAgICAgICAg
ICBzaWxlbnRGaWxsKHNhdmVQbGFucyk7CiAKLSAgICAgICAgICAgIGlmIChleGNlcHRpb24pCi0g
ICAgICAgICAgICAgICAgZXhjZXB0aW9uQ2hlY2soKmV4Y2VwdGlvbik7Ci0KICAgICAgICAgICAg
IGp1bXAoKS5saW5rVG8oZG9uZUZyb21TbG93UGF0aCwgdGhpcyk7CiAgICAgICAgIH0pOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAKaW5kZXggZDEx
NjU4MTRmYmFhLi5hZTJmYzQwNTRjYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0Fzc2VtYmx5SGVscGVycy5jcHAKQEAgLTM3MywxNyArMzczLDEzIEBAIEFzc2VtYmx5SGVscGVy
czo6SnVtcCBBc3NlbWJseUhlbHBlcnM6OmVtaXRFeGNlcHRpb25DaGVjayhWTSYgdm0sIEV4Y2Vw
dGlvbkNoZWNrCiAgICAgSnVtcCByZXN1bHQ7CiAgICAgaWYgKGV4Y2VwdGlvblJlZyAhPSBJbnZh
bGlkR1BSUmVnKSB7CiAjaWYgQVNTRVJUX0VOQUJMRUQKLSAgICAgICAgSklUX0NPTU1FTlQoKnRo
aXMsICJFeGNlcHRpb24gdmFsaWRhdGlvbiIpOwogICAgICAgICBKdW1wIG9rID0gYnJhbmNoUHRy
KEVxdWFsLCBBYnNvbHV0ZUFkZHJlc3Modm0uYWRkcmVzc09mRXhjZXB0aW9uKCkpLCBleGNlcHRp
b25SZWcpOwogICAgICAgICBicmVha3BvaW50KCk7CiAgICAgICAgIG9rLmxpbmsodGhpcyk7CiAj
ZW5kaWYKLSAgICAgICAgSklUX0NPTU1FTlQoKnRoaXMsICJFeGNlcHRpb24gY2hlY2sgZnJvbSBv
cGVyYXRpb24gcmVzdWx0IHJlZ2lzdGVyIik7CiAgICAgICAgIHJlc3VsdCA9IGJyYW5jaFRlc3RQ
dHIoa2luZCA9PSBOb3JtYWxFeGNlcHRpb25DaGVjayA/IE5vblplcm8gOiBaZXJvLCBleGNlcHRp
b25SZWcpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIEpJVF9DT01NRU5UKCp0aGlzLCAiRXhjZXB0
aW9uIGNoZWNrIGZyb20gdm0iKTsKKyAgICB9IGVsc2UKICAgICAgICAgcmVzdWx0ID0gYnJhbmNo
VGVzdFB0cihraW5kID09IE5vcm1hbEV4Y2VwdGlvbkNoZWNrID8gTm9uWmVybyA6IFplcm8sIEFi
c29sdXRlQWRkcmVzcyh2bS5hZGRyZXNzT2ZFeGNlcHRpb24oKSkpOwotICAgIH0KIAogICAgIGlm
ICh3aWR0aCA9PSBOb3JtYWxKdW1wV2lkdGgpCiAgICAgICAgIHJldHVybiByZXN1bHQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvR1BSSW5mby5oCmluZGV4IDRiNzZmZWZjNGYwZi4uOTA1NGQwN2ZkZTQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaApAQCAtOTI5LDEzICs5MjksNiBAQCBj
bGFzcyBOb092ZXJsYXBJbXBsIHsKICAgICAgICAgcmV0dXJuIG5vT3ZlcmxhcEltcGwodXNlZCB8
IG1hc2ssIGFyZ3MuLi4pOwogICAgIH0KIAotICAgIC8vIE5vUmVzdWx0VGFnIGNhc2UsIHRoaXMg
aGFwcGVucyBmcm9tIHRlbXBsYXRlcwotICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+Ci0g
ICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5vT3ZlcmxhcEltcGwodWludDY0X3QgdXNlZCwgTm9S
ZXN1bHRUYWcsIEFyZ3MuLi4gYXJncykKLSAgICB7Ci0gICAgICAgIHJldHVybiBub092ZXJsYXBJ
bXBsKHVzZWQsIGFyZ3MuLi4pOwotICAgIH0KLQogcHVibGljOgogICAgIC8vIEVudHJ5IHBvaW50
CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L09wZXJhdGlvblJlc3VsdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9PcGVyYXRpb25SZXN1bHQuaAppbmRleCA5OTkyOGZkYWRiMWQuLmJhYWM0NDNhNGVjMCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9PcGVyYXRpb25SZXN1bHQuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L09wZXJhdGlvblJlc3VsdC5oCkBAIC02NCwx
OSArNjQsMTQgQEAgc3RydWN0IEV4Y2VwdGlvbk9wZXJhdGlvblJlc3VsdDx2b2lkPiA6IHB1Ymxp
YyBFeGNlcHRpb25PcGVyYXRpb25SZXN1bHRCYXNlIHsKIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJh
dGlvblR5cGU+CiBjb25jZXB0IE9wZXJhdGlvbkhhc1Jlc3VsdCA9IEZ1bmN0aW9uVHJhaXRzPE9w
ZXJhdGlvblR5cGU+OjpoYXNSZXN1bHQgJiYgIXN0ZDo6aXNfc2FtZV92PHR5cGVuYW1lIEZ1bmN0
aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+OjpSZXN1bHRUeXBlLCBFeGNlcHRpb25PcGVyYXRpb25S
ZXN1bHQ8dm9pZD4+OwogCi0vLyBOb3RlIHdlIG5lZWQgdGhpcyBiZWNhdXNlIGUuZy4gYHJlcXVp
cmVzICghT3BlcmF0aW9uSGFzUmVzdWx0PGludD4pYCB3aWxsIHBhc3MgdGhlIHJlcXVpcmVtZW50
IGFzIHRoZSBTRklOQUUgaW4gYE9wZXJhdGlvbkhhc1Jlc3VsdDxpbnQ+YAotLy8gbWVhbnMgdGhl
IGNvbmNlcHQgcmV0dXJucyBmYWxzZSBhbmQgdGhlIGAhYCBtYWtlcyBpdCB0cnVlLgotdGVtcGxh
dGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZT4KLWNvbmNlcHQgT3BlcmF0aW9uSXNWb2lkID0gIUZ1
bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+OjpoYXNSZXN1bHQgfHwgc3RkOjppc19zYW1lX3Y8
dHlwZW5hbWUgRnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlwZT46OlJlc3VsdFR5cGUsIEV4Y2Vw
dGlvbk9wZXJhdGlvblJlc3VsdDx2b2lkPj47Ci0KIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBjb25j
ZXB0IGlzRXhjZXB0aW9uT3BlcmF0aW9uUmVzdWx0ID0gc3RkOjppc19iYXNlX29mX3Y8RXhjZXB0
aW9uT3BlcmF0aW9uUmVzdWx0QmFzZSwgVD47CiAKLS8vIE5vdGU6IFdlIGFsd2F5cyByZXR1cm4g
YW4gZXhjZXB0aW9uIGluIGEgcmVnaXN0ZXIgaWYgdGhlIG9wZXJhdGlvbidzIHJldHVybiB0eXBl
IGlzIHZvaWQgb24gYWxsIHBsYXRmb3JtcyAoYXNzdW1pbmcgaXQgdGhyb3dzKS4KKy8vIE5vdGU6
IFdlIGFsd2F5cyByZXR1cm4gYW4gZXhjZXB0aW9uIGluIGEgcmVnaXN0ZXIgaWYgdGhlIG9wZXJh
dGlvbidzIHJldHVybiB0eXBlIGlzIHZvaWQgb24gYWxsIHBsYXRmb3Jtcy4KIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+CiB1c2luZyBPcGVyYXRpb25SZXR1cm5UeXBlID0gc3RkOjpjb25kaXRpb25hbF90
PChzdGQ6OmlzX3NhbWVfdjxULCB2b2lkPiB8fCBjYW5NYWtlRXhjZXB0aW9uT3BlcmF0aW9uUmVz
dWx0PFQ+KSwgRXhjZXB0aW9uT3BlcmF0aW9uUmVzdWx0PFQ+LCBUPjsKIAotLy8gVGhpcyBjbGFz
cyBleGlzdHMgc28gd2UgY2FuIGNhc3QgRXhjZXB0aW9uT3BlcmF0aW9uSW1wbGljaXRSZXN1bHQ8
RnJvbT4gdG8gRXhjZXB0aW9uT3BlcmF0aW9uUmVzdWx0PFRvPiBpbXBsaWNpdGx5IHdoaWxlIEV4
Y2VwdGlvbk9wZXJhdGlvblJlc3VsdCByZW1haW5zIFBPRC4KKy8vIFRoaXMgY2xhc3MgZXhpc3Rz
IHNvIHdlIGNhbiBjYXN0IEV4Y2VwdGlvbk9wZXJhdGlvbkltcGxpY2l0UmVzdWx0PEZyb20+IHRv
IEV4Y2VwdGlvbk9wZXJhdGlvblJlc3VsdDxUbz4gaW1wbGljaXR5IHdoaWxlIEV4Y2VwdGlvbk9w
ZXJhdGlvblJlc3VsdCByZW1haW5zIFBPRC4KIC8vIEZJWE1FOiB3ZSBjb3VsZCB1c2UgX19hdHJp
YnV0ZV9fKCh0cml2aWFsX2FiaSkpIHdoZW4gd2Ugbm8gbG9uZ2VyIHN1cHBvcnQgTVNWQy4KIHRl
bXBsYXRlPHR5cGVuYW1lIEZyb20+CiBzdHJ1Y3QgRXhjZXB0aW9uT3BlcmF0aW9uSW1wbGljaXRS
ZXN1bHQgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWcuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnLmgKaW5kZXggYjc0NDdjNjlkZjVmLi4yZTdlYTA3
NTZmOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWcuaApAQCAtMjA1LDkgKzIwNSw4IEBAIHByaXZh
dGU6CiAKICAgICBzdGF0aWMgY29uc3RleHByIHVpbnQ4X3QgZGVsZXRlZCgpIHsgcmV0dXJuIGlu
dmFsaWQoKSAtIDE7IH0KIAotICAgIHVpbnQ4X3QgbV9pbmRleCA6IDc7CisgICAgdW5zaWduZWQg
bV9pbmRleCA6IDc7CiB9Owotc3RhdGljX2Fzc2VydChzaXplb2YoUmVnKSA9PSAxKTsKIAogc3Ry
dWN0IFJlZ0hhc2ggewogICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFJlZyYga2V5KSB7
IHJldHVybiBrZXkuaGFzaCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1JlZ2lzdGVyU2V0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyU2V0
LmgKaW5kZXggYTZmM2VjYzkyYTE4Li5iYzU5ZDU4OGEwMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJTZXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1JlZ2lzdGVyU2V0LmgKQEAgLTMzMiwxNCArMzMyLDcgQEAgcHVibGljOgogICAgICAg
ICB7CiAgICAgICAgIH0KIAotICAgICAgICBpbmxpbmUgY29uc3RleHByIFJlZyByZWcoKSBjb25z
dCB7IHJldHVybiBSZWc6OmZyb21JbmRleCgqbV9pdGVyKTsgfQotICAgICAgICBpbmxpbmUgY29u
c3RleHByIFJlZyBvcGVyYXRvciooKSBjb25zdCB7IHJldHVybiByZWcoKTsgfQotCi0gICAgICAg
IGlubGluZSBjb25zdGV4cHIgYm9vbCBpc0dQUigpIGNvbnN0IHsgcmV0dXJuIHJlZygpLmlzR1BS
KCk7IH0KLSAgICAgICAgaW5saW5lIGNvbnN0ZXhwciBib29sIGlzRlBSKCkgY29uc3QgeyByZXR1
cm4gcmVnKCkuaXNGUFIoKTsgfQotCi0gICAgICAgIGlubGluZSBjb25zdGV4cHIgR1BSUmVnIGdw
cigpIGNvbnN0IHsgcmV0dXJuIHJlZygpLmdwcigpOyB9Ci0gICAgICAgIGlubGluZSBjb25zdGV4
cHIgRlBSUmVnIGZwcigpIGNvbnN0IHsgcmV0dXJuIHJlZygpLmZwcigpOyB9CisgICAgICAgIGlu
bGluZSBjb25zdGV4cHIgUmVnIG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuIFJlZzo6ZnJvbUlu
ZGV4KCptX2l0ZXIpOyB9CiAKICAgICAgICAgaXRlcmF0b3ImIG9wZXJhdG9yKysoKQogICAgICAg
ICB7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItY2VsbC13aXRoLXR5cGUu
anMgYi9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItY2VsbC13aXRoLXR5cGUuanMKaW5kZXggNzY5
MDNmZTE5NTYxLi43MWEwNDQ3N2I5MTIgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2dlbmVy
YXRvci1jZWxsLXdpdGgtdHlwZS5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItY2Vs
bC13aXRoLXR5cGUuanMKQEAgLTEsNCArMSw0IEBACi1pdGVyYXRpb25zID0gdHlwZW9mKGl0ZXJh
dGlvbnMpID09PSAndW5kZWZpbmVkJyA/IDFlNSA6IGl0ZXJhdGlvbnM7CitpdGVyYXRpb25zID0g
dHlwZW9mKGl0ZXJhdGlvbnMpID09PSAndW5kZWZpbmVkJyA/IDFlNiA6IGl0ZXJhdGlvbnM7CiAK
IGZ1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKICAgICBpZiAoYWN0dWFsICE9
PSBleHBlY3RlZCkKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3N0YWNrLW92ZXJmbG93LWlu
LXNjb3BlLXdpdGgtY2F0Y2guanMgYi9KU1Rlc3RzL3N0cmVzcy9zdGFjay1vdmVyZmxvdy1pbi1z
Y29wZS13aXRoLWNhdGNoLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NWJiNDgx
ZGU2N2UuLjAwMDAwMDAwMDAwMAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9zdGFjay1vdmVyZmxvdy1p
bi1zY29wZS13aXRoLWNhdGNoLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotbGV0
IGNvdW50ID0gMDsKLQotZnVuY3Rpb24gZm9vKCkgewotICAgIGlmIChjb3VudCsrID4gMWU1KQot
ICAgICAgICByZXR1cm47Ci0gICAgZm9yIChsZXQgaiA9IDA7IGogPCA1OyBqKyspIHsKLSAgICAg
ICAgdHJ5IHsKLSAgICAgICAgICAgIGZvbygpOwotICAgICAgICB9IGNhdGNoIChlKSB7Ci0gICAg
ICAgICAgICBTZXRbU3ltYm9sLmhhc0luc3RhbmNlXSA9IGZ1bmN0aW9uKCkgeyB9OwotICAgICAg
ICAgICAgZm9vKCk7Ci0gICAgICAgIH0gZmluYWxseSB7Ci0gICAgICAgICAgICBmdW5jdGlvbiBi
YXIoKSB7IH0KLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIGdvbygpIHsKLSAgICAgICAg
ICAgIGZ1bmN0aW9uIGJheigpIHsgfQotICAgICAgICAgICAgYmF6KCk7Ci0gICAgICAgICAgICBi
YXooYmFyKTsKLSAgICAgICAgfQotICAgIH0KLX0KLWZvbygpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>