<?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>288481</bug_id>
          
          <creation_ts>2025-02-25 06:27:53 -0800</creation_ts>
          <short_desc>REGRESSION(290957@main): Broke the build in some configurations, see &lt;https://webkit.org/b/288478&gt;</short_desc>
          <delta_ts>2025-02-25 13:05:30 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>288484</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>285379</blocked>
    
    <blocked>288469</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>jmurphy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>2097774</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2025-02-25 06:27:53 -0800</bug_when>
    <thetext>https://commits.webkit.org/290957@main introduced a regression:
Broke the build in some configurations, see &lt;https://webkit.org/b/288478&gt;

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>2097777</commentid>
    <comment_count>1</comment_count>
      <attachid>474345</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2025-02-25 06:28:12 -0800</bug_when>
    <thetext>Created attachment 474345
REVERT of 290957@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>2097913</commentid>
    <comment_count>2</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2025-02-25 13:05:13 -0800</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 288484 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>474345</attachid>
            <date>2025-02-25 06:28:12 -0800</date>
            <delta_ts>2025-02-25 13:05:30 -0800</delta_ts>
            <desc>REVERT of 290957@main</desc>
            <filename>bug-288481-20250225142811.patch</filename>
            <type>text/plain</type>
            <size>162430</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">RnJvbSA1OWFlNjEyNDdjNWJkMzE5MjNkOTBlZWJhYzZhNjVjNDU0NWM5YmViIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDb21taXQgUXVldWUgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3Jn
PgpEYXRlOiBUdWUsIDI1IEZlYiAyMDI1IDE0OjI4OjA1ICswMDAwClN1YmplY3Q6IFtQQVRDSF0g
VW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIDI5MDk1N0BtYWluIGFuZCAyOTEwMTdAbWFpbi4KIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yODg0ODEKCkJyb2tlIHRoZSBidWls
ZCBpbiBzb21lIGNvbmZpZ3VyYXRpb25zLCBzZWUgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzI4ODQ3
OD4KClJldmVydGVkIGNoYW5nZXNldHM6CgoiW0dUS10gQ3JlYXRlIFdlYktpdFdlYkV4dGVuc2lv
biIKaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI4NTM3OQpodHRwczov
L2NvbW1pdHMud2Via2l0Lm9yZy8yOTA5NTdAbWFpbgoKIltHVEtdIEZpeCB0aGUgYnVpbGQgd2l0
aCBjbGFuZyIKaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI4ODQ2OQpo
dHRwczovL2NvbW1pdHMud2Via2l0Lm9yZy8yOTEwMTdAbWFpbgotLS0KIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ljb24uaCAgICAgICB8ICAgIDQgKy0KIC4uLi9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2d0ay9JY29uR3RrLmNwcCB8ICAgIDYgKy0KIFNvdXJjZS9XZWJLaXQv
UGxhdGZvcm1HVEsuY21ha2UgICAgICAgICAgICAgICB8ICAgIDEgLQogU291cmNlL1dlYktpdC9T
aGFyZWQvQVBJL0FQSURhdGEuaCAgICAgICAgICAgIHwgICAxNCAtCiAuLi4vZ3RrL1dlYkV4dGVu
c2lvblV0aWxpdGllc0d0ay5jcHAgICAgICAgICAgfCAgIDYwIC0KIFNvdXJjZS9XZWJLaXQvU291
cmNlc0dUSy50eHQgICAgICAgICAgICAgICAgICB8ICAgIDUgLQogLi4uL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0RXJyb3IuY3BwIHwgICAxNiAtCiAuLi4vVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdEVycm9yLmguaW4gICAgICAgfCAgIDM2ICstCiAuLi4vVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdFByaXZhdGUuY3BwICAgICAgfCAgIDI5IC0KIC4uLi9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdFByaXZhdGUuaCB8ICAgIDEgLQogLi4uL1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRXZWJFeHRlbnNpb24uY3BwIHwgMTE1NiAtLS0tLS0tLS0tLS0tLS0tLQogLi4uL0FQ
SS9nbGliL1dlYktpdFdlYkV4dGVuc2lvbi5oLmluICAgICAgICAgIHwgIDExMyAtLQogLi4uL0FQ
SS9nbGliL1dlYktpdFdlYkV4dGVuc2lvbkludGVybmFsLmggICAgIHwgICAzNyAtCiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi93ZWJraXQuaC5pbiAgfCAgICAxIC0KIC4uLi9VSVBy
b2Nlc3MvRXh0ZW5zaW9ucy9XZWJFeHRlbnNpb24uaCAgICAgICB8ICAgIDIgLQogLi4uL0V4dGVu
c2lvbnMvZ3RrL1dlYkV4dGVuc2lvbkd0ay5jcHAgICAgICAgIHwgIDIwOCAtLS0KIC4uLi9XZWJL
aXRHTGliL1Rlc3RXZWJLaXRXZWJFeHRlbnNpb24uY3BwICAgICB8IDExMjIgLS0tLS0tLS0tLS0t
LS0tLQogVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL0NNYWtlTGlzdHMudHh0ICAgICAgIHwgICAg
MiAtCiAuLi4vZ2xpYi9XZWJLaXRHTGliL1dlYkV4dGVuc2lvblV0aWxpdGllcy5jcHAgfCAgIDU5
IC0KIC4uLi9nbGliL1dlYktpdEdMaWIvV2ViRXh0ZW5zaW9uVXRpbGl0aWVzLmggICB8ICAgNDYg
LQogMjAgZmlsZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCAyOTEyIGRlbGV0aW9ucygtKQog
ZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0V4dGVuc2lvbnMvZ3RrL1dl
YkV4dGVuc2lvblV0aWxpdGllc0d0ay5jcHAKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJFeHRlbnNpb24uY3BwCiBkZWxldGUgbW9k
ZSAxMDA2NDQgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViRXh0ZW5z
aW9uLmguaW4KIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRXZWJFeHRlbnNpb25JbnRlcm5hbC5oCiBkZWxldGUgbW9kZSAxMDA2NDQgU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvRXh0ZW5zaW9ucy9ndGsvV2ViRXh0ZW5zaW9uR3RrLmNwcAog
ZGVsZXRlIG1vZGUgMTAwNjQ0IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9U
ZXN0V2ViS2l0V2ViRXh0ZW5zaW9uLmNwcAogZGVsZXRlIG1vZGUgMTAwNjQ0IFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYkV4dGVuc2lvblV0aWxpdGllcy5jcHAKIGRlbGV0
ZSBtb2RlIDEwMDY0NCBUb29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJFeHRl
bnNpb25VdGlsaXRpZXMuaAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ljb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ljb24uaApp
bmRleCA0ZGFlMGQ2OWQ5NTUuLmUwY2MxZDg3MTBhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSWNvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ljb24uaApAQCAtNjcsNyArNjcsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lm
IFBMQVRGT1JNKEdUSykKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEljb24+IGNy
ZWF0ZShHUmVmUHRyPEdJY29uPiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRy
PEljb24+IGNyZWF0ZShHSWNvbiopOwogCiAgICAgR0ljb24qIGljb24oKSBjb25zdCB7IHJldHVy
biBtX2ljb24uZ2V0KCk7IH07CiAjZW5kaWYKQEAgLTkyLDcgKzkyLDcgQEAgcHJpdmF0ZToKICAg
ICBJY29uKEhJQ09OKTsKICAgICBISUNPTiBtX2hJY29uOwogI2VsaWYgUExBVEZPUk0oR1RLKQot
ICAgIGV4cGxpY2l0IEljb24oR1JlZlB0cjxHSWNvbj4mJik7CisgICAgZXhwbGljaXQgSWNvbihH
SWNvbiopOwogICAgIEdSZWZQdHI8R0ljb24+IG1faWNvbjsKICNlbmRpZgogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9JY29uR3RrLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9JY29uR3RrLmNwcAppbmRleCBhZGIx
ZjA1MTVlMWIuLmJhOTQ2MWIwMjc4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3RrL0ljb25HdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2d0ay9JY29uR3RrLmNwcApAQCAtMzUsNyArMzUsNyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLUljb246Okljb24oR1JlZlB0cjxHSWNvbj4mJiBpY29uKQorSWNvbjo6SWNv
bihHSWNvbiogaWNvbikKICAgICA6IG1faWNvbihpY29uKQogewogfQpAQCAtNDQsMTIgKzQ0LDEy
IEBAIEljb246On5JY29uKCkKIHsKIH0KIAotUmVmUHRyPEljb24+IEljb246OmNyZWF0ZShHUmVm
UHRyPEdJY29uPiYmIGljb24pCitSZWZQdHI8SWNvbj4gSWNvbjo6Y3JlYXRlKEdJY29uKiBpY29u
KQogewogICAgIGlmICghaWNvbikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1
cm4gYWRvcHRSZWYobmV3IEljb24oV1RGTW92ZShpY29uKSkpOworICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgSWNvbihpY29uKSk7CiB9CiAKIHZvaWQgSWNvbjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgRmxvYXRSZWN0JikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1H
VEsuY21ha2UgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IGQ3NTdjNmIz
NzkzMC4uMmYzM2IxYzAyYTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtR1RL
LmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UKQEAgLTE4Niw3ICsx
ODYsNiBAQCBzZXQoV2ViS2l0R1RLX0hFQURFUl9URU1QTEFURVMKICAgICAke1dFQktJVF9ESVJ9
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5oLmlu
CiAgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VXNlck1lc3NhZ2Uu
aC5pbgogICAgICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRl
eHQuaC5pbgotICAgICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkV4
dGVuc2lvbi5oLmluCiAgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
V2ViRXh0ZW5zaW9uTWF0Y2hQYXR0ZXJuLmguaW4KICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRXZWJSZXNvdXJjZS5oLmluCiAgICAgJHtXRUJLSVRfRElSfS9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5oLmluCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BUEkvQVBJRGF0YS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSURh
dGEuaAppbmRleCBmMTE5ZjVhZGVlNjkuLmU1NDM5YTlmY2U0ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvQVBJL0FQSURhdGEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvQVBJRGF0YS5oCkBAIC0zNCwxMiArMzQsNiBAQAogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIu
aD4KICNlbmRpZgogCi0jaWYgUExBVEZPUk0oR1RLKQotI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQ
dHIuaD4KLSNpbmNsdWRlIDx3dGYvZ2xpYi9HU3BhbkV4dHJhcy5oPgotI2luY2x1ZGUgPHd0Zi9n
bGliL1dURkdUeXBlLmg+Ci0jZW5kaWYKLQogT0JKQ19DTEFTUyBOU0RhdGE7CiAKIG5hbWVzcGFj
ZSBBUEkgewpAQCAtODIsMTQgKzc2LDYgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8RGF0YT4g
Y3JlYXRlV2l0aG91dENvcHlpbmcoTlNEYXRhICopOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShH
VEspCi0gICAgc3RhdGljIFJlZjxEYXRhPiBjcmVhdGVXaXRob3V0Q29weWluZyhHUmVmUHRyPEdC
eXRlcz4mJiBieXRlcykKLSAgICB7Ci0gICAgICAgIGF1dG8gc3BhbiA9IFdURjo6c3BhbihieXRl
cyk7Ci0gICAgICAgIHJldHVybiBjcmVhdGVXaXRob3V0Q29weWluZyhzcGFuLCBbYnl0ZXMgPSBX
VEZNb3ZlKGJ5dGVzKV0gKCkgeyB9KTsKLSAgICB9Ci0jZW5kaWYKLQogICAgIH5EYXRhKCkKICAg
ICB7CiAgICAgICAgIG1fZnJlZURhdGFGdW5jdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvRXh0ZW5zaW9ucy9ndGsvV2ViRXh0ZW5zaW9uVXRpbGl0aWVzR3RrLmNwcCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0V4dGVuc2lvbnMvZ3RrL1dlYkV4dGVuc2lvblV0aWxpdGll
c0d0ay5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY5Mjc5Y2YxYTRkMS4uMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0V4dGVuc2lvbnMvZ3RrL1dlYkV4
dGVuc2lvblV0aWxpdGllc0d0ay5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDI0IElnYWxpYSwgUy5MLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViRXh0ZW5zaW9u
VXRpbGl0aWVzLmgiCi0KLSNpbmNsdWRlIDxnZGsvZ2RrLmg+Ci0KLSNpZiBFTkFCTEUoV0tfV0VC
X0VYVEVOU0lPTlMpCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1WZWN0b3I8ZG91YmxlPiBhdmFp
bGFibGVTY3JlZW5TY2FsZXMoKQotewotICAgIFZlY3Rvcjxkb3VibGU+IHNjcmVlblNjYWxlczsK
LQotICAgIGF1dG8qIGRpc3BsYXkgPSBnZGtfZGlzcGxheV9nZXRfZGVmYXVsdCgpOwotCi0jaWYg
VVNFKEdUSzQpCi0gICAgYXV0byogbW9uaXRvcnMgPSBnZGtfZGlzcGxheV9nZXRfbW9uaXRvcnMo
ZGlzcGxheSk7Ci0gICAgdW5zaWduZWQgY3VycmVudE1vbml0b3IgPSAwOwotICAgIHdoaWxlIChh
dXRvKiBpdGVtID0gZ19saXN0X21vZGVsX2dldF9pdGVtKG1vbml0b3JzLCBjdXJyZW50TW9uaXRv
cisrKSkgewotICAgICAgICBhdXRvKiBtb25pdG9yID0gR0RLX01PTklUT1IoaXRlbSk7Ci0gICAg
ICAgIEFTU0VSVChHREtfSVNfTU9OSVRPUihtb25pdG9yKSk7Ci0gICAgICAgIHNjcmVlblNjYWxl
cy5hcHBlbmQoZ2RrX21vbml0b3JfZ2V0X3NjYWxlX2ZhY3Rvcihtb25pdG9yKSk7Ci0gICAgfQot
I2VuZGlmCi0KLSAgICBpZiAoIXNjcmVlblNjYWxlcy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVy
biBzY3JlZW5TY2FsZXM7Ci0KLSAgICAvLyBBc3N1bWUgMXggaWYgd2UgZ290IG5vIHJlc3VsdHMu
IFRoaXMgY2FuIGhhcHBlbiBvbiBoZWFkbGVzcyBkZXZpY2VzIChib3RzKS4KLSAgICByZXR1cm4g
eyAxLjAgfTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUo
V0tfV0VCX0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNHVEsu
dHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4dAppbmRleCBlMjkxODJiYWIyZDcuLjNj
OGQyMDljYmE3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4dAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0CkBAIC03NCw4ICs3NCw2IEBAIFNoYXJlZC9B
UEkvZ2xpYi9XZWJLaXRVUklSZXF1ZXN0LmNwcCBAbm8tdW5pZnkKIFNoYXJlZC9BUEkvZ2xpYi9X
ZWJLaXRVUklSZXNwb25zZS5jcHAgQG5vLXVuaWZ5CiBTaGFyZWQvQVBJL2dsaWIvV2ViS2l0VXNl
ck1lc3NhZ2UuY3BwIEBuby11bmlmeQogCi1TaGFyZWQvRXh0ZW5zaW9ucy9ndGsvV2ViRXh0ZW5z
aW9uVXRpbGl0aWVzR3RrLmNwcAotCiBTaGFyZWQvZ2xpYi9Bcmd1bWVudENvZGVyc0dMaWIuY3Bw
CiBTaGFyZWQvZ2xpYi9JbnB1dE1ldGhvZFN0YXRlLmNwcAogU2hhcmVkL2dsaWIvUHJvY2Vzc0V4
ZWN1dGFibGVQYXRoR0xpYi5jcHAKQEAgLTE3OCw3ICsxNzYsNiBAQCBVSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5jcHAgQG5vLXVuaWZ5CiBVSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0VmVyc2lvbi5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAgQG5vLXVuaWZ5Ci1VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0V2ViRXh0ZW5zaW9uLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRXZWJFeHRlbnNpb25NYXRjaFBhdHRlcm4uY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdFdlYlJlc291cmNlLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRXZWJSZXNvdXJjZUxvYWRNYW5hZ2VyLmNwcCBAbm8tdW5pZnkKQEAgLTIyMyw4ICsyMjAs
NiBAQCBVSVByb2Nlc3MvQXV0b21hdGlvbi9ndGsvV2ViQXV0b21hdGlvblNlc3Npb25HdGsuY3Bw
IEBuby11bmlmeQogCiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYVBy
b3h5Q29vcmRpbmF0ZWRHcmFwaGljcy5jcHAKIAotVUlQcm9jZXNzL0V4dGVuc2lvbnMvZ3RrL1dl
YkV4dGVuc2lvbkd0ay5jcHAKLQogVUlQcm9jZXNzL0dhbWVwYWQvZ3RrL1VJR2FtZXBhZFByb3Zp
ZGVyR3RrLmNwcAogVUlQcm9jZXNzL0dhbWVwYWQvbWFuZXR0ZS9VSUdhbWVwYWRQcm92aWRlck1h
bmV0dGUuY3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdEVycm9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dEVycm9yLmNwcAppbmRleCAxMjA4MDJmOTE0OTIuLmZjNDA4ZmRlYjc1ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RXJyb3IuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEVycm9yLmNwcApAQCAtMTEyLDI4
ICsxMTIsMTIgQEAgR1F1YXJrIHdlYmtpdF9zbmFwc2hvdF9lcnJvcl9xdWFyaygpCiAgICAgcmV0
dXJuIGdfcXVhcmtfZnJvbV9zdGF0aWNfc3RyaW5nKCJXZWJLaXRTbmFwc2hvdEVycm9yIik7CiB9
CiAKLS8qKgotICogd2Via2l0X3dlYl9leHRlbnNpb25fZXJyb3JfcXVhcms6Ci0gKgotICogR2V0
cyB0aGUgcXVhcmsgZm9yIHRoZSBkb21haW4gb2YgV2ViIEV4dGVuc2lvbiBlcnJvcnMuCi0gKgot
ICogUmV0dXJuczogd2ViIGV4dGVuc2lvbiBlcnJvciBkb21haW4uCi0gKiAKLSAqIFNpbmNlOiAy
LjQ4Ci0gKi8KLUdRdWFyayB3ZWJraXRfd2ViX2V4dGVuc2lvbl9lcnJvcl9xdWFyaygpCi17Ci0g
ICAgcmV0dXJuIGdfcXVhcmtfZnJvbV9zdGF0aWNfc3RyaW5nKCJXZWJLaXRXZWJFeHRlbnNpb25F
cnJvciIpOwotfQotCiAvKioKICAqIHdlYmtpdF93ZWJfZXh0ZW5zaW9uX21hdGNoX3BhdHRlcm5f
ZXJyb3JfcXVhcms6CiAgKgogICogR2V0cyB0aGUgcXVhcmsgZm9yIHRoZSBkb21haW4gb2YgV2Vi
IEV4dGVuc2lvbiBNYXRjaCBQYXR0ZXJuIGVycm9ycy4KICAqCiAgKiBSZXR1cm5zOiB3ZWIgZXh0
ZW5zaW9uIG1hdGNoIHBhdHRlcm4gZXJyb3IgZG9tYWluLgotICogCi0gKiBTaW5jZTogMi40OAog
ICovCiBHUXVhcmsgd2Via2l0X3dlYl9leHRlbnNpb25fbWF0Y2hfcGF0dGVybl9lcnJvcl9xdWFy
aygpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRFcnJvci5oLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RXJy
b3IuaC5pbgppbmRleCA4ZDU0YmE4MzQxNmQuLjg0NGMxNDQ0MGIyYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RXJyb3IuaC5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRFcnJvci5oLmluCkBAIC0zNiw4ICsz
Niw3IEBAIEdfQkVHSU5fREVDTFMKICNkZWZpbmUgV0VCS0lUX0pBVkFTQ1JJUFRfRVJST1IgICAg
ICAgICAgICAgICAgICB3ZWJraXRfamF2YXNjcmlwdF9lcnJvcl9xdWFyayAoKQogI2RlZmluZSBX
RUJLSVRfU05BUFNIT1RfRVJST1IgICAgICAgICAgICAgICAgICAgIHdlYmtpdF9zbmFwc2hvdF9l
cnJvcl9xdWFyayAoKQogI2RlZmluZSBXRUJLSVRfVVNFUl9DT05URU5UX0ZJTFRFUl9FUlJPUiAg
ICAgICAgIHdlYmtpdF91c2VyX2NvbnRlbnRfZmlsdGVyX2Vycm9yX3F1YXJrICgpCi0jZGVmaW5l
IFdFQktJVF9XRUJfRVhURU5TSU9OX0VSUk9SICAgICAgICAgICAgICAgd2Via2l0X3dlYl9leHRl
bnNpb25fZXJyb3JfcXVhcmsgKCkKLSNkZWZpbmUgV0VCS0lUX1dFQl9FWFRFTlNJT05fTUFUQ0hf
UEFUVEVSTl9FUlJPUiB3ZWJraXRfd2ViX2V4dGVuc2lvbl9tYXRjaF9wYXR0ZXJuX2Vycm9yX3F1
YXJrICgpCisjZGVmaW5lIFdFQktJVF9XRUJfRVhURU5TSU9OX01BVENIX1BBVFRFUk5fRVJST1Ig
d2Via2l0X3dlYl9leHRlbnNpb25fZXJyb3JfcXVhcmsgKCkKIAogI2lmIFBMQVRGT1JNKEdUSykK
ICNkZWZpbmUgV0VCS0lUX1BSSU5UX0VSUk9SICAgICAgICAgICAgICAgICAgICAgICB3ZWJraXRf
cHJpbnRfZXJyb3JfcXVhcmsgKCkKQEAgLTE1OSwzNCArMTU4LDYgQEAgdHlwZWRlZiBlbnVtIHsK
ICAgICBXRUJLSVRfU05BUFNIT1RfRVJST1JfRkFJTEVEX1RPX0NSRUFURSA9IDc5OQogfSBXZWJL
aXRTbmFwc2hvdEVycm9yOwogCi0vKioKLSAqIFdlYktpdFdlYkV4dGVuc2lvbkVycm9yOgotICog
QFdFQktJVF9XRUJfRVhURU5TSU9OX0VSUk9SX1VOS05PV046IEFuIHVua25vd24gZXJyb3Igb2Nj
dXJlZC4KLSAqIEBXRUJLSVRfV0VCX0VYVEVOU0lPTl9FUlJPUl9SRVNPVVJDRV9OT1RfRk9VTkQ6
IEEgc3BlY2lmaWVkIHJlc291cmNlIHdhcyBub3QgZm91bmQgb24gZGlzay4KLSAqIEBXRUJLSVRf
V0VCX0VYVEVOU0lPTl9FUlJPUl9JTlZBTElEX1JFU09VUkNFX0NPREVfU0lHTkFUVVJFOiBBIHJl
c291cmNlIGZhaWxlZCB0aGUgYnVuZGxlJ3MgY29kZSBzaWduYXR1cmUgY2hlY2tzLgotICogQFdF
QktJVF9XRUJfRVhURU5TSU9OX0VSUk9SX0lOVkFMSURfTUFOSUZFU1Q6IEFuIGludmFsaWQgYG1h
bmlmZXN0Lmpzb25gIHdhcyBlbmNvdW50ZXJlZC4KLSAqIEBXRUJLSVRfV0VCX0VYVEVOU0lPTl9F
UlJPUl9VTlNVUFBPUlRFRF9NQU5JRkVTVF9WRVJTSU9OOiBUaGUgbWFuaWZlc3QgdmVyc2lvbiBp
cyBub3Qgc3VwcG9ydGVkLgotICogQFdFQktJVF9XRUJfRVhURU5TSU9OX0VSUk9SX0lOVkFMSURf
TUFOSUZFU1RfRU5UUlk6IEFuIGludmFsaWQgbWFuaWZlc3QgZW50cnkgd2FzIGVuY291bnRlcmVk
LgotICogQFdFQktJVF9XRUJfRVhURU5TSU9OX0VSUk9SX0lOVkFMSURfREVDTEFSQVRJVkVfTkVU
X1JFUVVFU1RfRU5UUlk6IEFuIGludmFsaWQgZGVjbGFyYXRpdmUgbmV0IHJlcXVlc3QgZW50cnkg
d2FzIGVuY291bnRlcmVkLgotICogQFdFQktJVF9XRUJfRVhURU5TSU9OX0VSUk9SX0lOVkFMSURf
QkFDS0dST1VORF9QRVJTSVNURU5DRTogVGhlIGV4dGVuc2lvbiBzcGVjaWZpZWQgYmFja2dyb3Vu
ZCBwZXJzaXN0ZW5jZSB0aGF0IHdhcyBub3QgY29tcGF0aWJsZSB3aXRoIHRoZSBwbGF0Zm9ybSBv
ciBmZWF0dXJlcyByZXF1ZXN0ZWQuCi0gKiBAV0VCS0lUX1dFQl9FWFRFTlNJT05fRVJST1JfSU5W
QUxJRF9BUkNISVZFOiBUaGUgYXJjaGl2ZSBmaWxlIGlzIGludmFsaWQgb3IgY29ycnVwdC4KLSAq
Ci0gKiBFbnVtIHZhbHVlcyB1c2VkIHRvIGRlbm90ZSBlcnJvcnMgaGFwcGVuaW5nIHdoZW4gcGFy
c2luZyBhICNXZWJLaXRXZWJFeHRlbnNpb24KLSAqIAotICogU2luY2U6IDIuNDgKLSAqLwotdHlw
ZWRlZiBlbnVtIHsKLSAgICBXRUJLSVRfV0VCX0VYVEVOU0lPTl9FUlJPUl9VTktOT1dOID0gODk5
LAotICAgIFdFQktJVF9XRUJfRVhURU5TSU9OX0VSUk9SX1JFU09VUkNFX05PVF9GT1VORCA9IDgw
MCwKLSAgICBXRUJLSVRfV0VCX0VYVEVOU0lPTl9FUlJPUl9JTlZBTElEX1JFU09VUkNFX0NPREVf
U0lHTkFUVVJFID0gODAxLAotICAgIFdFQktJVF9XRUJfRVhURU5TSU9OX0VSUk9SX0lOVkFMSURf
TUFOSUZFU1QgPSA4MDIsCi0gICAgV0VCS0lUX1dFQl9FWFRFTlNJT05fRVJST1JfVU5TVVBQT1JU
RURfTUFOSUZFU1RfVkVSU0lPTiA9IDgwMywKLSAgICBXRUJLSVRfV0VCX0VYVEVOU0lPTl9FUlJP
Ul9JTlZBTElEX01BTklGRVNUX0VOVFJZID0gODA0LAotICAgIFdFQktJVF9XRUJfRVhURU5TSU9O
X0VSUk9SX0lOVkFMSURfREVDTEFSQVRJVkVfTkVUX1JFUVVFU1RfRU5UUlkgPSA4MDUsCi0gICAg
V0VCS0lUX1dFQl9FWFRFTlNJT05fRVJST1JfSU5WQUxJRF9CQUNLR1JPVU5EX1BFUlNJU1RFTkNF
ID0gODA2LAotICAgIFdFQktJVF9XRUJfRVhURU5TSU9OX0VSUk9SX0lOVkFMSURfQVJDSElWRSA9
IDgwNywKLX0gV2ViS2l0V2ViRXh0ZW5zaW9uRXJyb3I7Ci0KIC8qKgogICogV2ViS2l0V2ViRXh0
ZW5zaW9uTWF0Y2hQYXR0ZXJuRXJyb3I6CiAgKiBAV0VCS0lUX1dFQl9FWFRFTlNJT05fTUFUQ0hf
UEFUVEVSTl9FUlJPUl9VTktOT1dOOiBBbiB1bmtub3duIGVycm9yIG9jY3VyZWQuCkBAIC0xOTUs
OCArMTY2LDYgQEAgdHlwZWRlZiBlbnVtIHsKICAqIEBXRUJLSVRfV0VCX0VYVEVOU0lPTl9NQVRD
SF9QQVRURVJOX0VSUk9SX0lOVkFMSURfUEFUSDogVGhlIHBhdGggY29tcG9uZW50IHdhcyBpbnZh
bGlkLgogICoKICAqIEVudW0gdmFsdWVzIHVzZWQgdG8gZGVub3RlIGVycm9ycyBoYXBwZW5pbmcg
d2hlbiBjcmVhdGluZyBhICNXZWJLaXRXZWJFeHRlbnNpb25NYXRjaFBhdHRlcm4KLSAqIAotICog
U2luY2U6IDIuNDgKICAqLwogdHlwZWRlZiBlbnVtIHsKICAgICBXRUJLSVRfV0VCX0VYVEVOU0lP
Tl9NQVRDSF9QQVRURVJOX0VSUk9SX1VOS05PV04gPSA4OTksCkBAIC0yNTgsOSArMjI3LDYgQEAg
d2Via2l0X2phdmFzY3JpcHRfZXJyb3JfcXVhcmsgICAgICAgICAgICAgICAgICAodm9pZCk7CiBX
RUJLSVRfQVBJIEdRdWFyawogd2Via2l0X3NuYXBzaG90X2Vycm9yX3F1YXJrICAgICAgICAgICAg
ICAgICAgICAodm9pZCk7CiAKLVdFQktJVF9BUEkgR1F1YXJrCi13ZWJraXRfd2ViX2V4dGVuc2lv
bl9lcnJvcl9xdWFyayAgICAgICAgICAgICAgICh2b2lkKTsKLQogV0VCS0lUX0FQSSBHUXVhcmsK
IHdlYmtpdF93ZWJfZXh0ZW5zaW9uX21hdGNoX3BhdHRlcm5fZXJyb3JfcXVhcmsgKHZvaWQpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRQcml2
YXRlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFByaXZhdGUu
Y3BwCmluZGV4IGY2ZWE0MWU3YzdjZS4uN2EwMDA3MGE5YTUzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRQcml2YXRlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRQcml2YXRlLmNwcApAQCAtMzEsNyArMzEs
NiBAQAogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0tfV0VCX0VYVEVOU0lPTlMpCi0jaW5jbHVkZSAi
V2ViRXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiV2ViRXh0ZW5zaW9uTWF0Y2hQYXR0ZXJuLmgiCiAj
ZW5kaWYKIApAQCAtMTU2LDM0ICsxNTUsNiBAQCB1bnNpZ25lZCB0b1dlYktpdEVycm9yKHVuc2ln
bmVkIHdlYkNvcmVFcnJvcikKIH0KIAogI2lmIEVOQUJMRShXS19XRUJfRVhURU5TSU9OUykKLXVu
c2lnbmVkIHRvV2ViS2l0V2ViRXh0ZW5zaW9uRXJyb3IodW5zaWduZWQgYXBpRXJyb3IpCi17Ci0g
ICAgYXV0byBlcnJvciA9IHN0YXRpY19jYXN0PFdlYktpdDo6V2ViRXh0ZW5zaW9uOjpBUElFcnJv
cj4oYXBpRXJyb3IpOwotCi0gICAgc3dpdGNoIChlcnJvcikgewotICAgIGNhc2UgV2ViS2l0OjpX
ZWJFeHRlbnNpb246OkFQSUVycm9yOjpSZXNvdXJjZU5vdEZvdW5kOgotICAgICAgICByZXR1cm4g
V0VCS0lUX1dFQl9FWFRFTlNJT05fRVJST1JfUkVTT1VSQ0VfTk9UX0ZPVU5EOwotICAgIGNhc2Ug
V2ViS2l0OjpXZWJFeHRlbnNpb246OkFQSUVycm9yOjpJbnZhbGlkUmVzb3VyY2VDb2RlU2lnbmF0
dXJlOgotICAgICAgICByZXR1cm4gV0VCS0lUX1dFQl9FWFRFTlNJT05fRVJST1JfSU5WQUxJRF9S
RVNPVVJDRV9DT0RFX1NJR05BVFVSRTsKLSAgICBjYXNlIFdlYktpdDo6V2ViRXh0ZW5zaW9uOjpB
UElFcnJvcjo6SW52YWxpZE1hbmlmZXN0OgotICAgICAgICByZXR1cm4gV0VCS0lUX1dFQl9FWFRF
TlNJT05fRVJST1JfSU5WQUxJRF9NQU5JRkVTVDsKLSAgICBjYXNlIFdlYktpdDo6V2ViRXh0ZW5z
aW9uOjpBUElFcnJvcjo6VW5zdXBwb3J0ZWRNYW5pZmVzdFZlcnNpb246Ci0gICAgICAgIHJldHVy
biBXRUJLSVRfV0VCX0VYVEVOU0lPTl9FUlJPUl9VTlNVUFBPUlRFRF9NQU5JRkVTVF9WRVJTSU9O
OwotICAgIGNhc2UgV2ViS2l0OjpXZWJFeHRlbnNpb246OkFQSUVycm9yOjpJbnZhbGlkTWFuaWZl
c3RFbnRyeToKLSAgICAgICAgcmV0dXJuIFdFQktJVF9XRUJfRVhURU5TSU9OX0VSUk9SX0lOVkFM
SURfTUFOSUZFU1RfRU5UUlk7Ci0gICAgY2FzZSBXZWJLaXQ6OldlYkV4dGVuc2lvbjo6QVBJRXJy
b3I6OkludmFsaWREZWNsYXJhdGl2ZU5ldFJlcXVlc3RFbnRyeToKLSAgICAgICAgcmV0dXJuIFdF
QktJVF9XRUJfRVhURU5TSU9OX0VSUk9SX0lOVkFMSURfREVDTEFSQVRJVkVfTkVUX1JFUVVFU1Rf
RU5UUlk7Ci0gICAgY2FzZSBXZWJLaXQ6OldlYkV4dGVuc2lvbjo6QVBJRXJyb3I6OkludmFsaWRC
YWNrZ3JvdW5kUGVyc2lzdGVuY2U6Ci0gICAgICAgIHJldHVybiBXRUJLSVRfV0VCX0VYVEVOU0lP
Tl9FUlJPUl9JTlZBTElEX0JBQ0tHUk9VTkRfUEVSU0lTVEVOQ0U7Ci0gICAgY2FzZSBXZWJLaXQ6
OldlYkV4dGVuc2lvbjo6QVBJRXJyb3I6OkludmFsaWRBcmNoaXZlOgotICAgICAgICByZXR1cm4g
V0VCS0lUX1dFQl9FWFRFTlNJT05fRVJST1JfSU5WQUxJRF9BUkNISVZFOwotICAgIGNhc2UgV2Vi
S2l0OjpXZWJFeHRlbnNpb246OkFQSUVycm9yOjpVbmtub3duOgotICAgICAgICByZXR1cm4gV0VC
S0lUX1dFQl9FWFRFTlNJT05fRVJST1JfVU5LTk9XTjsKLSAgICB9Ci0KLSAgICByZXR1cm4gV0VC
S0lUX1dFQl9FWFRFTlNJT05fRVJST1JfVU5LTk9XTjsKLX0KLQogdW5zaWduZWQgdG9XZWJLaXRX
ZWJFeHRlbnNpb25NYXRjaFBhdHRlcm5FcnJvcih1bnNpZ25lZCBhcGlFcnJvcikKIHsKICAgICBh
dXRvIGVycm9yID0gc3RhdGljX2Nhc3Q8V2ViS2l0OjpXZWJFeHRlbnNpb25NYXRjaFBhdHRlcm46
OkVycm9yPihhcGlFcnJvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRQcml2YXRlLmgKaW5kZXggMWI1NDFmMjhkYzQ5Li43OTIzZGNmYjg0MzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFByaXZhdGUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRQcml2YXRlLmgKQEAg
LTM0LDcgKzM0LDYgQEAgV2ViS2l0TmF2aWdhdGlvblR5cGUgdG9XZWJLaXROYXZpZ2F0aW9uVHlw
ZShXZWJDb3JlOjpOYXZpZ2F0aW9uVHlwZSk7CiB1bnNpZ25lZCB0b1dlYktpdE1vdXNlQnV0dG9u
KFdlYktpdDo6V2ViTW91c2VFdmVudEJ1dHRvbik7CiB1bnNpZ25lZCB0b1dlYktpdEVycm9yKHVu
c2lnbmVkIHdlYkNvcmVFcnJvcik7CiAjaWYgRU5BQkxFKFdLX1dFQl9FWFRFTlNJT05TKQotdW5z
aWduZWQgdG9XZWJLaXRXZWJFeHRlbnNpb25FcnJvcih1bnNpZ25lZCBhcGlFcnJvcik7CiB1bnNp
Z25lZCB0b1dlYktpdFdlYkV4dGVuc2lvbk1hdGNoUGF0dGVybkVycm9yKHVuc2lnbmVkIGFwaUVy
cm9yKTsKICNlbmRpZgogdW5zaWduZWQgdG9XZWJDb3JlRXJyb3IodW5zaWduZWQgd2ViS2l0RXJy
b3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
V2ViRXh0ZW5zaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dFdlYkV4dGVuc2lvbi5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJkYjBjZjA2
ZmViMS4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdFdlYkV4dGVuc2lvbi5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTU2ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjQgSWdhbGlhIFMuTC4KLSAqCi0gKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgot
ICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUg
dGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAot
ICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIldlYktpdFdlYkV4dGVuc2lvbi5oIgotCi0jaW5jbHVkZSAiV2ViRXh0ZW5z
aW9uLmgiCi0jaW5jbHVkZSAiV2ViS2l0RXJyb3IuaCIKLSNpbmNsdWRlICJXZWJLaXRQcml2YXRl
LmgiCi0jaW5jbHVkZSAiV2ViS2l0V2ViRXh0ZW5zaW9uSW50ZXJuYWwuaCIKLSNpbmNsdWRlICJX
ZWJLaXRXZWJFeHRlbnNpb25NYXRjaFBhdHRlcm5Qcml2YXRlLmgiCi0jaW5jbHVkZSA8V2ViQ29y
ZS9JY29uLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9nbGliL1dU
RkdUeXBlLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgotCi11c2luZyBuYW1lc3Bh
Y2UgV2ViS2l0OwotCi0vKioKLSAqIFdlYktpdFdlYkV4dGVuc2lvbjoKLSAqCi0gKiBSZXByZXNl
bnRzIGEgW1dlYkV4dGVuc2lvbl0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMv
ZG9jcy9Nb3ppbGxhL0FkZC1vbnMvV2ViRXh0ZW5zaW9ucykuCi0gKiAKLSAqIEEgI1dlYktpdFdl
YkV4dGVuc2lvbiBvYmplY3QgZW5jYXBzdWxhdGVzIGEgd2ViIGV4dGVuc2lvbuKAmXMKLSAqIHJl
c291cmNlcyB0aGF0IGFyZSBkZWZpbmVkIGJ5IGEgW2BtYW5pZmVzdC5qc29uYCBmaWxlXShodHRw
czovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL01vemlsbGEvQWRkLW9ucy9XZWJF
eHRlbnNpb25zL21hbmlmZXN0Lmpzb24pLgotICogCi0gKiBUaGlzIGNsYXNzIGhhbmRsZXMgdGhl
IHJlYWRpbmcgYW5kIHBhcnNpbmcgb2YgdGhlIG1hbmlmZXN0IGZpbGUKLSAqIGFsb25nIHdpdGgg
dGhlIHN1cHBvcnRpbmcgcmVzb3VyY2VzIGxpa2UgaWNvbnMgYW5kIGxvY2FsaXphdGlvbnMuCi0g
KgotICogU2luY2U6IDIuNDgKLSAqLwotCi1zdHJ1Y3QgX1dlYktpdFdlYkV4dGVuc2lvblByaXZh
dGUgewotI2lmIEVOQUJMRShXS19XRUJfRVhURU5TSU9OUykKLSAgICBSZWZQdHI8V2ViRXh0ZW5z
aW9uPiBleHRlbnNpb247Ci0gICAgQ1N0cmluZyBkZWZhdWx0TG9jYWxlOwotICAgIENTdHJpbmcg
ZGlzcGxheU5hbWU7Ci0gICAgQ1N0cmluZyBkaXNwbGF5U2hvcnROYW1lOwotICAgIENTdHJpbmcg
ZGlzcGxheVZlcnNpb247Ci0gICAgQ1N0cmluZyBkaXNwbGF5RGVzY3JpcHRpb247Ci0gICAgQ1N0
cmluZyBkaXNwbGF5QWN0aW9uTGFiZWw7Ci0gICAgQ1N0cmluZyB2ZXJzaW9uOwotICAgIEdSZWZQ
dHI8R1B0ckFycmF5PiByZXF1ZXN0ZWRQZXJtaXNzaW9uczsKLSAgICBHUmVmUHRyPEdQdHJBcnJh
eT4gb3B0aW9uYWxQZXJtaXNzaW9uczsKLSNlbmRpZgotfTsKLQotV0VCS0lUX0RFRklORV9GSU5B
TF9UWVBFKFdlYktpdFdlYkV4dGVuc2lvbiwgd2Via2l0X3dlYl9leHRlbnNpb24sIEdfVFlQRV9P
QkpFQ1QsIEdPYmplY3QpCi0KLWVudW0gewotICAgIFBST1BfMCwKLSAgICBQUk9QX01BTklGRVNU
X1ZFUlNJT04sCi0gICAgUFJPUF9ERUZBVUxUX0xPQ0FMRSwKLSAgICBQUk9QX0RJU1BMQVlfTkFN
RSwKLSAgICBQUk9QX0RJU1BMQVlfU0hPUlRfTkFNRSwKLSAgICBQUk9QX0RJU1BMQVlfVkVSU0lP
TiwKLSAgICBQUk9QX0RJU1BMQVlfREVTQ1JJUFRJT04sCi0gICAgUFJPUF9ESVNQTEFZX0FDVElP
Tl9MQUJFTCwKLSAgICBQUk9QX1ZFUlNJT04sCi0gICAgUFJPUF9SRVFVRVNURURfUEVSTUlTU0lP
TlMsCi0gICAgUFJPUF9PUFRJT05BTF9QRVJNSVNTSU9OUywKLSAgICBQUk9QX0hBU19CQUNLR1JP
VU5EX0NPTlRFTlQsCi0gICAgUFJPUF9IQVNfUEVSU0lTVEVOVF9CQUNLR1JPVU5EX0NPTlRFTlQs
Ci0gICAgUFJPUF9IQVNfSU5KRUNURURfQ09OVEVOVCwKLSAgICBQUk9QX0hBU19PUFRJT05TX1BB
R0UsCi0gICAgUFJPUF9IQVNfT1ZFUlJJREVfTkVXX1RBQl9QQUdFLAotICAgIFBST1BfSEFTX0NP
TU1BTkRTLAotICAgIFBST1BfSEFTX0NPTlRFTlRfTU9ESUZJQ0FUSU9OX1JVTEVTLAotICAgIE5f
UFJPUEVSVElFUywKLX07Ci0KLXN0YXRpYyBzdGQ6OmFycmF5PEdQYXJhbVNwZWMqLCBOX1BST1BF
UlRJRVM+IHByb3BlcnRpZXM7Ci0KLXN0YXRpYyB2b2lkIHdlYmtpdFdlYkV4dGVuc2lvbkdldFBy
b3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElkLCBHVmFsdWUqIHZhbHVlLCBHUGFy
YW1TcGVjKiBwYXJhbVNwZWMpCi17Ci0gICAgV2ViS2l0V2ViRXh0ZW5zaW9uKiBleHRlbnNpb24g
PSBXRUJLSVRfV0VCX0VYVEVOU0lPTihvYmplY3QpOwotCi0gICAgc3dpdGNoIChwcm9wSWQpIHsK
LSAgICBjYXNlIFBST1BfTUFOSUZFU1RfVkVSU0lPTjoKLSAgICAgICAgZ192YWx1ZV9zZXRfZG91
YmxlKHZhbHVlLCB3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfbWFuaWZlc3RfdmVyc2lvbihleHRl
bnNpb24pKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX0RFRkFVTFRfTE9DQUxFOgot
ICAgICAgICBnX3ZhbHVlX3NldF9zdHJpbmcodmFsdWUsIHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dl
dF9kZWZhdWx0X2xvY2FsZShleHRlbnNpb24pKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQ
Uk9QX0RJU1BMQVlfTkFNRToKLSAgICAgICAgZ192YWx1ZV9zZXRfc3RyaW5nKHZhbHVlLCB3ZWJr
aXRfd2ViX2V4dGVuc2lvbl9nZXRfZGlzcGxheV9uYW1lKGV4dGVuc2lvbikpOwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIFBST1BfRElTUExBWV9TSE9SVF9OQU1FOgotICAgICAgICBnX3ZhbHVl
X3NldF9zdHJpbmcodmFsdWUsIHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9kaXNwbGF5X3Nob3J0
X25hbWUoZXh0ZW5zaW9uKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9ESVNQTEFZ
X1ZFUlNJT046Ci0gICAgICAgIGdfdmFsdWVfc2V0X3N0cmluZyh2YWx1ZSwgd2Via2l0X3dlYl9l
eHRlbnNpb25fZ2V0X2Rpc3BsYXlfdmVyc2lvbihleHRlbnNpb24pKTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBQUk9QX0RJU1BMQVlfREVTQ1JJUFRJT046Ci0gICAgICAgIGdfdmFsdWVfc2V0
X3N0cmluZyh2YWx1ZSwgd2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X2Rpc3BsYXlfZGVzY3JpcHRp
b24oZXh0ZW5zaW9uKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9ESVNQTEFZX0FD
VElPTl9MQUJFTDoKLSAgICAgICAgZ192YWx1ZV9zZXRfc3RyaW5nKHZhbHVlLCB3ZWJraXRfd2Vi
X2V4dGVuc2lvbl9nZXRfZGlzcGxheV9hY3Rpb25fbGFiZWwoZXh0ZW5zaW9uKSk7Ci0gICAgICAg
IGJyZWFrOwotICAgIGNhc2UgUFJPUF9WRVJTSU9OOgotICAgICAgICBnX3ZhbHVlX3NldF9zdHJp
bmcodmFsdWUsIHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF92ZXJzaW9uKGV4dGVuc2lvbikpOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfUkVRVUVTVEVEX1BFUk1JU1NJT05TOgotICAg
ICAgICBnX3ZhbHVlX3NldF9ib3hlZCh2YWx1ZSwgd2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X3Jl
cXVlc3RlZF9wZXJtaXNzaW9ucyhleHRlbnNpb24pKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBQUk9QX09QVElPTkFMX1BFUk1JU1NJT05TOgotICAgICAgICBnX3ZhbHVlX3NldF9ib3hlZCh2
YWx1ZSwgd2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X29wdGlvbmFsX3Blcm1pc3Npb25zKGV4dGVu
c2lvbikpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfSEFTX0JBQ0tHUk9VTkRfQ09O
VEVOVDoKLSAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X3dlYl9leHRl
bnNpb25fZ2V0X2hhc19iYWNrZ3JvdW5kX2NvbnRlbnQoZXh0ZW5zaW9uKSk7Ci0gICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgUFJPUF9IQVNfUEVSU0lTVEVOVF9CQUNLR1JPVU5EX0NPTlRFTlQ6Ci0g
ICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dl
dF9oYXNfcGVyc2lzdGVudF9iYWNrZ3JvdW5kX2NvbnRlbnQoZXh0ZW5zaW9uKSk7Ci0gICAgICAg
IGJyZWFrOwotICAgIGNhc2UgUFJPUF9IQVNfSU5KRUNURURfQ09OVEVOVDoKLSAgICAgICAgZ192
YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X2hhc19pbmpl
Y3RlZF9jb250ZW50KGV4dGVuc2lvbikpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1Bf
SEFTX09QVElPTlNfUEFHRToKLSAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Vi
a2l0X3dlYl9leHRlbnNpb25fZ2V0X2hhc19vcHRpb25zX3BhZ2UoZXh0ZW5zaW9uKSk7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9IQVNfT1ZFUlJJREVfTkVXX1RBQl9QQUdFOgotICAg
ICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCB3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRf
aGFzX292ZXJyaWRlX25ld190YWJfcGFnZShleHRlbnNpb24pKTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBQUk9QX0hBU19DT01NQU5EUzoKLSAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2
YWx1ZSwgd2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X2hhc19jb21tYW5kcyhleHRlbnNpb24pKTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX0hBU19DT05URU5UX01PRElGSUNBVElPTl9S
VUxFUzoKLSAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X3dlYl9leHRl
bnNpb25fZ2V0X2hhc19jb250ZW50X21vZGlmaWNhdGlvbl9ydWxlcyhleHRlbnNpb24pKTsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElE
X1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcElkLCBwYXJhbVNwZWMpOwotICAgIH0KLX0KLQotc3Rh
dGljIHZvaWQgd2Via2l0X3dlYl9leHRlbnNpb25fY2xhc3NfaW5pdChXZWJLaXRXZWJFeHRlbnNp
b25DbGFzcyoga2xhc3MpCi17Ci0gICAgR09iamVjdENsYXNzKiBvYmplY3RDbGFzcyA9IEdfT0JK
RUNUX0NMQVNTKGtsYXNzKTsKLSAgICBvYmplY3RDbGFzcy0+Z2V0X3Byb3BlcnR5ID0gd2Via2l0
V2ViRXh0ZW5zaW9uR2V0UHJvcGVydHk7Ci0KLSAgICAvKioKLSAgICAgKiBXZWJLaXRXZWJFeHRl
bnNpb246bWFuaWZlc3QtdmVyc2lvbjoKLSAgICAgKiAKLSAgICAgKiBUaGUgcGFyc2VkIG1hbmlm
ZXN0IHZlcnNpb24gb2YgdGhlICNXZWJLaXRXZWJFeHRlbnNpb24uCi0gICAgICogU2VlIHdlYmtp
dF93ZWJfZXh0ZW5zaW9uX2dldF9tYW5pZmVzdF92ZXJzaW9uKCkgZm9yIG1vcmUgZGV0YWlscy4K
LSAgICAgKgotICAgICAqIFNpbmNlOiAyLjQ4Ci0gICAgICovCi0gICAgcHJvcGVydGllc1tQUk9Q
X01BTklGRVNUX1ZFUlNJT05dID0KLSAgICAgICAgZ19wYXJhbV9zcGVjX3N0cmluZygKLSAgICAg
ICAgICAgICJtYW5pZmVzdC12ZXJzaW9uIiwKLSAgICAgICAgICAgIG51bGxwdHIsIG51bGxwdHIs
Ci0gICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURBQkxF
KTsKLQotICAgIC8qKgotICAgICAqIFdlYktpdFdlYkV4dGVuc2lvbjpkZWZhdWx0LWxvY2FsZToK
LSAgICAgKiAKLSAgICAgKiBUaGUgZGVmYXVsdCBsb2NhbGUgZm9yIHRoZSAjV2ViS2l0V2ViRXh0
ZW5zaW9uLgotICAgICAqIFNlZSB3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfZGVmYXVsdF9sb2Nh
bGUoKSBmb3IgbW9yZSBkZXRhaWxzLgotICAgICAqCi0gICAgICogU2luY2U6IDIuNDgKLSAgICAg
Ki8KLSAgICBwcm9wZXJ0aWVzW1BST1BfREVGQVVMVF9MT0NBTEVdID0KLSAgICAgICAgZ19wYXJh
bV9zcGVjX3N0cmluZygKLSAgICAgICAgICAgICJkZWZhdWx0LWxvY2FsZSIsCi0gICAgICAgICAg
ICBudWxscHRyLCBudWxscHRyLAotICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAgIFdF
QktJVF9QQVJBTV9SRUFEQUJMRSk7Ci0KLSAgICAvKioKLSAgICAgKiBXZWJLaXRXZWJFeHRlbnNp
b246ZGlzcGxheS1uYW1lOgotICAgICAqIAotICAgICAqIFRoZSBsb2NhbGl6ZWQgbmFtZSBvZiB0
aGUgI1dlYktpdFdlYkV4dGVuc2lvbi4KLSAgICAgKiBTZWUgd2Via2l0X3dlYl9leHRlbnNpb25f
Z2V0X2Rpc3BsYXlfbmFtZSgpIGZvciBtb3JlIGRldGFpbHMuCi0gICAgICogCi0gICAgICogU2lu
Y2U6IDIuNDgKLSAgICAgKi8KLSAgICBwcm9wZXJ0aWVzW1BST1BfRElTUExBWV9OQU1FXSA9Ci0g
ICAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmcoCi0gICAgICAgICAgICAiZGlzcGxheS1uYW1lIiwK
LSAgICAgICAgICAgIG51bGxwdHIsIG51bGxwdHIsCi0gICAgICAgICAgICBudWxscHRyLAotICAg
ICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURBQkxFKTsKLQotICAgIC8qKgotICAgICAqIFdlYktp
dFdlYkV4dGVuc2lvbjpkaXNwbGF5LXNob3J0LW5hbWU6Ci0gICAgICogCi0gICAgICogVGhlIGxv
Y2FsaXplZCBzaG9ydCBuYW1lIG9mIHRoZSAjV2ViS2l0V2ViRXh0ZW5zaW9uLgotICAgICAqIFNl
ZSB3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfZGlzcGxheV9zaG9ydF9uYW1lKCkgZm9yIG1vcmUg
ZGV0YWlscy4KLSAgICAgKiAKLSAgICAgKiBTaW5jZTogMi40OAotICAgICAqLwotICAgIHByb3Bl
cnRpZXNbUFJPUF9ESVNQTEFZX1NIT1JUX05BTUVdID0KLSAgICAgICAgZ19wYXJhbV9zcGVjX3N0
cmluZygKLSAgICAgICAgICAgICJkaXNwbGF5LXNob3J0LW5hbWUiLAotICAgICAgICAgICAgbnVs
bHB0ciwgbnVsbHB0ciwKLSAgICAgICAgICAgIG51bGxwdHIsCi0gICAgICAgICAgICBXRUJLSVRf
UEFSQU1fUkVBREFCTEUpOwotCi0gICAgLyoqCi0gICAgICogV2ViS2l0V2ViRXh0ZW5zaW9uOmRp
c3BsYXktdmVyc2lvbjoKLSAgICAgKiAKLSAgICAgKiBUaGUgbG9jYWxpemVkIGRpc3BsYXkgdmVy
c2lvbiBvZiB0aGUgI1dlYktpdFdlYkV4dGVuc2lvbi4KLSAgICAgKiBTZWUgd2Via2l0X3dlYl9l
eHRlbnNpb25fZ2V0X2Rpc3BsYXlfdmVyc2lvbigpIGZvciBtb3JlIGRldGFpbHMuCi0gICAgICog
Ci0gICAgICogU2luY2U6IDIuNDgKLSAgICAgKi8KLSAgICBwcm9wZXJ0aWVzW1BST1BfRElTUExB
WV9WRVJTSU9OXSA9Ci0gICAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmcoCi0gICAgICAgICAgICAi
ZGlzcGxheS12ZXJzaW9uIiwKLSAgICAgICAgICAgIG51bGxwdHIsIG51bGxwdHIsCi0gICAgICAg
ICAgICBudWxscHRyLAotICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURBQkxFKTsKLQotICAg
IC8qKgotICAgICAqIFdlYktpdFdlYkV4dGVuc2lvbjpkaXNwbGF5LWRlc2NyaXB0aW9uOgotICAg
ICAqIAotICAgICAqIFRoZSBsb2NhbGl6ZWQgZGVzY3JpcHRpb24gb2YgdGhlICNXZWJLaXRXZWJF
eHRlbnNpb24uCi0gICAgICogU2VlIHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9kaXNwbGF5X2Rl
c2NyaXB0aW9uKCkgZm9yIG1vcmUgZGV0YWlscy4KLSAgICAgKiAKLSAgICAgKiBTaW5jZTogMi40
OAotICAgICAqLwotICAgIHByb3BlcnRpZXNbUFJPUF9ESVNQTEFZX0RFU0NSSVBUSU9OXSA9Ci0g
ICAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmcoCi0gICAgICAgICAgICAiZGlzcGxheS1kZXNjcmlw
dGlvbiIsCi0gICAgICAgICAgICBudWxscHRyLCBudWxscHRyLAotICAgICAgICAgICAgbnVsbHB0
ciwKLSAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEQUJMRSk7Ci0KLSAgICAvKioKLSAgICAg
KiBXZWJLaXRXZWJFeHRlbnNpb246ZGlzcGxheS1hY3Rpb24tbGFiZWw6Ci0gICAgICogCi0gICAg
ICogVGhlIGxvY2FsaXplZCBleHRlbnNpb24gYWN0aW9uIGxhYmVsIG9mIHRoZSAjV2ViS2l0V2Vi
RXh0ZW5zaW9uLgotICAgICAqIFNlZSB3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfZGlzcGxheV9h
Y3Rpb25fbGFiZWwoKSBmb3IgbW9yZSBkZXRhaWxzLgotICAgICAqIAotICAgICAqIFNpbmNlOiAy
LjQ4Ci0gICAgICovCi0gICAgcHJvcGVydGllc1tQUk9QX0RJU1BMQVlfQUNUSU9OX0xBQkVMXSA9
Ci0gICAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmcoCi0gICAgICAgICAgICAiZGlzcGxheS1hY3Rp
b24tbGFiZWwiLAotICAgICAgICAgICAgbnVsbHB0ciwgbnVsbHB0ciwKLSAgICAgICAgICAgIG51
bGxwdHIsCi0gICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpOwotCi0gICAgLyoqCi0g
ICAgICogV2ViS2l0V2ViRXh0ZW5zaW9uOnZlcnNpb246Ci0gICAgICogCi0gICAgICogVGhlIHZl
cnNpb24gb2YgdGhlICNXZWJLaXRXZWJFeHRlbnNpb24uCi0gICAgICogU2VlIHdlYmtpdF93ZWJf
ZXh0ZW5zaW9uX2dldF92ZXJzaW9uKCkgZm9yIG1vcmUgZGV0YWlscy4KLSAgICAgKiAKLSAgICAg
KiBTaW5jZTogMi40OAotICAgICAqLwotICAgIHByb3BlcnRpZXNbUFJPUF9WRVJTSU9OXSA9Ci0g
ICAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmcoCi0gICAgICAgICAgICAidmVyc2lvbiIsCi0gICAg
ICAgICAgICBudWxscHRyLCBudWxscHRyLAotICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAg
ICAgIFdFQktJVF9QQVJBTV9SRUFEQUJMRSk7Ci0KLSAgICAvKioKLSAgICAgKiBXZWJLaXRXZWJF
eHRlbnNpb246cmVxdWVzdGVkLXBlcm1pc3Npb25zOgotICAgICAqIAotICAgICAqIFRoZSBzZXQg
b2YgcGVybWlzc2lvbnMgdGhhdCB0aGUgI1dlYktpdFdlYkV4dGVuc2lvbiByZXF1aXJlcyBmb3Ig
aXRzIGJhc2UgZnVuY3Rpb25hbGl0eS4KLSAgICAgKiBTZWUgd2Via2l0X3dlYl9leHRlbnNpb25f
Z2V0X3JlcXVlc3RlZF9wZXJtaXNzaW9ucygpIGZvciBtb3JlIGRldGFpbHMuCi0gICAgICogCi0g
ICAgICogU2luY2U6IDIuNDgKLSAgICAgKi8KLSAgICBwcm9wZXJ0aWVzW1BST1BfUkVRVUVTVEVE
X1BFUk1JU1NJT05TXSA9Ci0gICAgICAgIGdfcGFyYW1fc3BlY19ib3hlZCgKLSAgICAgICAgICAg
ICJyZXF1ZXN0ZWQtcGVybWlzc2lvbnMiLAotICAgICAgICAgICAgbnVsbHB0ciwgbnVsbHB0ciwK
LSAgICAgICAgICAgIEdfVFlQRV9TVFJWLAotICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURB
QkxFKTsKLQotICAgIC8qKgotICAgICAqIFdlYktpdFdlYkV4dGVuc2lvbjpvcHRpb25hbC1wZXJt
aXNzaW9uczoKLSAgICAgKiAKLSAgICAgKiBUaGUgc2V0IG9mIHBlcm1pc3Npb25zIHRoYXQgdGhl
ICNXZWJLaXRXZWJFeHRlbnNpb24gbWF5IG5lZWQgZm9yIG9wdGlvbmFsIGZ1bmN0aW9uYWxpdHku
Ci0gICAgICogU2VlIHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9vcHRpb25hbF9wZXJtaXNzaW9u
cygpIGZvciBtb3JlIGRldGFpbHMuCi0gICAgICogCi0gICAgICogU2luY2U6IDIuNDgKLSAgICAg
Ki8KLSAgICBwcm9wZXJ0aWVzW1BST1BfT1BUSU9OQUxfUEVSTUlTU0lPTlNdID0KLSAgICAgICAg
Z19wYXJhbV9zcGVjX2JveGVkKAotICAgICAgICAgICAgIm9wdGlvbmFsLXBlcm1pc3Npb25zIiwK
LSAgICAgICAgICAgIG51bGxwdHIsIG51bGxwdHIsCi0gICAgICAgICAgICBHX1RZUEVfU1RSViwK
LSAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEQUJMRSk7Ci0KLSAgICAvKioKLSAgICAgKiBX
ZWJLaXRXZWJFeHRlbnNpb246aGFzLWJhY2tncm91bmQtY29udGVudDoKLSAgICAgKiAKLSAgICAg
KiBXaGV0aGVyIHRoZSAjV2ViS2l0V2ViRXh0ZW5zaW9uIGhhcyBiYWNrZ3JvdW5kIGNvbnRlbnQg
dGhhdCBjYW4gcnVuIHdoZW4gbmVlZGVkLgotICAgICAqIFNlZSB3ZWJraXRfd2ViX2V4dGVuc2lv
bl9nZXRfaGFzX2JhY2tncm91bmRfY29udGVudCgpIGZvciBtb3JlIGRldGFpbHMuCi0gICAgICog
Ci0gICAgICogU2luY2U6IDIuNDgKLSAgICAgKi8KLSAgICBwcm9wZXJ0aWVzW1BST1BfSEFTX0JB
Q0tHUk9VTkRfQ09OVEVOVF0gPQotICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigKLSAgICAg
ICAgICAgICJoYXMtYmFja2dyb3VuZC1jb250ZW50IiwKLSAgICAgICAgICAgIG51bGxwdHIsIG51
bGxwdHIsCi0gICAgICAgICAgICBGQUxTRSwKLSAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFE
QUJMRSk7Ci0KLSAgICAvKioKLSAgICAgKiBXZWJLaXRXZWJFeHRlbnNpb246aGFzLXBlcnNpc3Rl
bnQtYmFja2dyb3VuZC1jb250ZW50OgotICAgICAqIAotICAgICAqIFdoZXRoZXIgdGhlICNXZWJL
aXRXZWJFeHRlbnNpb24gaGFzIGJhY2tncm91bmQgY29udGVudCB0aGF0IHN0YXlzIGluIG1lbW9y
eSBhcyBsb25nIGFzIHRoZSBleHRlbnNpb24gaXMgbG9hZGVkLgotICAgICAqIFNlZSB3ZWJraXRf
d2ViX2V4dGVuc2lvbl9nZXRfaGFzX3BlcnNpc3RlbnRfYmFja2dyb3VuZF9jb250ZW50KCkgZm9y
IG1vcmUgZGV0YWlscy4KLSAgICAgKiAKLSAgICAgKiBTaW5jZTogMi40OAotICAgICAqLwotICAg
IHByb3BlcnRpZXNbUFJPUF9IQVNfUEVSU0lTVEVOVF9CQUNLR1JPVU5EX0NPTlRFTlRdID0KLSAg
ICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oCi0gICAgICAgICAgICAiaGFzLXBlcnNpc3RlbnQt
YmFja2dyb3VuZC1jb250ZW50IiwKLSAgICAgICAgICAgIG51bGxwdHIsIG51bGxwdHIsCi0gICAg
ICAgICAgICBGQUxTRSwKLSAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEQUJMRSk7Ci0KLSAg
ICAvKioKLSAgICAgKiBXZWJLaXRXZWJFeHRlbnNpb246aGFzLWluamVjdGVkLWNvbnRlbnQ6Ci0g
ICAgICogCi0gICAgICogV2hldGhlciB0aGUgI1dlYktpdFdlYkV4dGVuc2lvbiBoYXMgc2NyaXB0
IG9yIHN0eWxlc2hlZXQgY29udGVudCB0aGF0IGNhbiBiZSBpbmplY3RlZCBpbnRvIHdlYnBhZ2Vz
LgotICAgICAqIFNlZSB3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfaGFzX2luamVjdGVkX2NvbnRl
bnQoKSBmb3IgbW9yZSBkZXRhaWxzLgotICAgICAqIAotICAgICAqIFNpbmNlOiAyLjQ4Ci0gICAg
ICovCi0gICAgcHJvcGVydGllc1tQUk9QX0hBU19JTkpFQ1RFRF9DT05URU5UXSA9Ci0gICAgICAg
IGdfcGFyYW1fc3BlY19ib29sZWFuKAotICAgICAgICAgICAgImhhcy1pbmplY3RlZC1jb250ZW50
IiwKLSAgICAgICAgICAgIG51bGxwdHIsIG51bGxwdHIsCi0gICAgICAgICAgICBGQUxTRSwKLSAg
ICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEQUJMRSk7Ci0KLSAgICAvKioKLSAgICAgKiBXZWJL
aXRXZWJFeHRlbnNpb246aGFzLW9wdGlvbnMtcGFnZToKLSAgICAgKiAKLSAgICAgKiBXaGV0aGVy
IHRoZSAjV2ViS2l0V2ViRXh0ZW5zaW9uIGhhcyBhbiBvcHRpb25zIHBhZ2UuCi0gICAgICogU2Vl
IHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9oYXNfb3B0aW9uc19wYWdlKCkgZm9yIG1vcmUgZGV0
YWlscy4KLSAgICAgKiAKLSAgICAgKiBTaW5jZTogMi40OAotICAgICAqLwotICAgIHByb3BlcnRp
ZXNbUFJPUF9IQVNfT1BUSU9OU19QQUdFXSA9Ci0gICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFu
KAotICAgICAgICAgICAgImhhcy1vcHRpb25zLXBhZ2UiLAotICAgICAgICAgICAgbnVsbHB0ciwg
bnVsbHB0ciwKLSAgICAgICAgICAgIEZBTFNFLAotICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JF
QURBQkxFKTsKLQotICAgIC8qKgotICAgICAqIFdlYktpdFdlYkV4dGVuc2lvbjpoYXMtb3ZlcnJp
ZGUtbmV3LXRhYi1wYWdlOgotICAgICAqIAotICAgICAqIFdoZXRoZXIgdGhlICNXZWJLaXRXZWJF
eHRlbnNpb24gcHJvdmlkZXMgYW4gYWx0ZXJuYXRpdmUgdG8gdGhlIGRlZmF1bHQgbmV3IHRhYiBw
YWdlLgotICAgICAqIFNlZSB3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfaGFzX292ZXJyaWRlX25l
d190YWJfcGFnZSgpIGZvciBtb3JlIGRldGFpbHMuCi0gICAgICogCi0gICAgICogU2luY2U6IDIu
NDgKLSAgICAgKi8KLSAgICBwcm9wZXJ0aWVzW1BST1BfSEFTX09WRVJSSURFX05FV19UQUJfUEFH
RV0gPQotICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigKLSAgICAgICAgICAgICJoYXMtb3Zl
cnJpZGUtbmV3LXRhYi1wYWdlIiwKLSAgICAgICAgICAgIG51bGxwdHIsIG51bGxwdHIsCi0gICAg
ICAgICAgICBGQUxTRSwKLSAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEQUJMRSk7Ci0KLSAg
ICAvKioKLSAgICAgKiBXZWJLaXRXZWJFeHRlbnNpb246aGFzLWNvbW1hbmRzOgotICAgICAqIAot
ICAgICAqIFdoZXRoZXIgdGhlICNXZWJLaXRXZWJFeHRlbnNpb24gaW5jbHVkZXMgY29tbWFuZHMg
dGhhdCB1c2VycyBjYW4gaW52b2tlLgotICAgICAqIFNlZSB3ZWJraXRfd2ViX2V4dGVuc2lvbl9n
ZXRfaGFzX2NvbW1hbmRzKCkgZm9yIG1vcmUgZGV0YWlscy4KLSAgICAgKiAKLSAgICAgKiBTaW5j
ZTogMi40OAotICAgICAqLwotICAgIHByb3BlcnRpZXNbUFJPUF9IQVNfQ09NTUFORFNdID0KLSAg
ICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oCi0gICAgICAgICAgICAiaGFzLWNvbW1hbmRzIiwK
LSAgICAgICAgICAgIG51bGxwdHIsIG51bGxwdHIsCi0gICAgICAgICAgICBGQUxTRSwKLSAgICAg
ICAgICAgIFdFQktJVF9QQVJBTV9SRUFEQUJMRSk7Ci0KLSAgICAvKioKLSAgICAgKiBXZWJLaXRX
ZWJFeHRlbnNpb246aGFzLWNvbnRlbnQtbW9kaWZpY2F0aW9uLXJ1bGVzOgotICAgICAqIAotICAg
ICAqIFdoZXRoZXIgdGhlICNXZWJLaXRXZWJFeHRlbnNpb24gaW5jbHVkZXMgcnVsZXMgdXNlZCBm
b3IgY29udGVudCBtb2RpZmljYXRpb24gb3IgYmxvY2tpbmcuCi0gICAgICogU2VlIHdlYmtpdF93
ZWJfZXh0ZW5zaW9uX2dldF9jb250ZW50X21vZGlmaWNhdGlvbl9ydWxlcygpIGZvciBtb3JlIGRl
dGFpbHMuCi0gICAgICogCi0gICAgICogU2luY2U6IDIuNDgKLSAgICAgKi8KLSAgICBwcm9wZXJ0
aWVzW1BST1BfSEFTX0NPTlRFTlRfTU9ESUZJQ0FUSU9OX1JVTEVTXSA9Ci0gICAgICAgIGdfcGFy
YW1fc3BlY19ib29sZWFuKAotICAgICAgICAgICAgImhhcy1jb250ZW50LW1vZGlmaWNhdGlvbi1y
dWxlcyIsCi0gICAgICAgICAgICBudWxscHRyLCBudWxscHRyLAotICAgICAgICAgICAgRkFMU0Us
Ci0gICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpOwotCi0gICAgZ19vYmplY3RfY2xh
c3NfaW5zdGFsbF9wcm9wZXJ0aWVzKG9iamVjdENsYXNzLCBwcm9wZXJ0aWVzLnNpemUoKSwgcHJv
cGVydGllcy5kYXRhKCkpOwotfQotCi0jaWYgRU5BQkxFKFdLX1dFQl9FWFRFTlNJT05TKQotCi1X
ZWJLaXRXZWJFeHRlbnNpb24qIHdlYmtpdFdlYkV4dGVuc2lvbkNyZWF0ZShIYXNoTWFwPFN0cmlu
ZywgR1JlZlB0cjxHQnl0ZXM+PiYmIHJlc291cmNlcywgR0Vycm9yKiogZXJyb3IpCi17Ci0gICAg
V2ViRXh0ZW5zaW9uOjpSZXNvdXJjZXMgbmV3UmVzb3VyY2VzOwotICAgIGZvciAoYXV0byYgaXQg
OiByZXNvdXJjZXMpCi0gICAgICAgIG5ld1Jlc291cmNlcy5hZGQoaXQua2V5LCBBUEk6OkRhdGE6
OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKFdURk1vdmUoaXQudmFsdWUpKSk7Ci0KLSAgICBSZWYgZXh0
ZW5zaW9uID0gV2ViS2l0OjpXZWJFeHRlbnNpb246OmNyZWF0ZShXVEZNb3ZlKG5ld1Jlc291cmNl
cykpOwotCi0gICAgaWYgKCFleHRlbnNpb24tPmVycm9ycygpLmlzRW1wdHkoKSkgewotICAgICAg
ICBSZWYgaW50ZXJuYWxFcnJvciA9IGV4dGVuc2lvbi0+ZXJyb3JzKCkubGFzdCgpOwotICAgICAg
ICBnX3NldF9lcnJvcihlcnJvciwgd2Via2l0X3dlYl9leHRlbnNpb25fZXJyb3JfcXVhcmsoKSwK
LSAgICAgICAgICAgIHRvV2ViS2l0V2ViRXh0ZW5zaW9uRXJyb3IoaW50ZXJuYWxFcnJvci0+ZXJy
b3JDb2RlKCkpLCBpbnRlcm5hbEVycm9yLT5sb2NhbGl6ZWREZXNjcmlwdGlvbigpLnV0ZjgoKS5k
YXRhKCksIG51bGxwdHIpOwotICAgIH0KLQotICAgIFdlYktpdFdlYkV4dGVuc2lvbiogb2JqZWN0
ID0gV0VCS0lUX1dFQl9FWFRFTlNJT04oZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9FWFRF
TlNJT04sIG51bGxwdHIpKTsKLSAgICBvYmplY3QtPnByaXYtPmV4dGVuc2lvbiA9IFdURk1vdmUo
ZXh0ZW5zaW9uKTsKLSAgICByZXR1cm4gb2JqZWN0OwotfQotCi0vKioKLSAqIHdlYmtpdF93ZWJf
ZXh0ZW5zaW9uX2dldF9tYW5pZmVzdF92ZXJzaW9uOgotICogQGV4dGVuc2lvbjogYSAjV2ViS2l0
V2ViRXh0ZW5zaW9uCi0gKgotICogR2V0IHRoZSBwYXJzZWQgbWFuaWZlc3QgdmVyc2lvbiwgb3Ig
YDBgIGlmIHRoZXJlIGlzIG5vCi0gKiB2ZXJzaW9uIHNwZWNpZmllZCBpbiB0aGUgbWFuaWZlc3Qu
Ci0gKgotICogQW4gYGBXS1dlYkV4dGVuc2lvbkVycm9yVW5zdXBwb3J0ZWRNYW5pZmVzdFZlcnNp
b25gYCBlcnJvciB3aWxsIGJlCi0gKiByZXBvcnRlZCBpZiB0aGUgbWFuaWZlc3QgdmVyc2lvbiBp
c24ndCBzcGVjaWZpZWQuCi0gKiAKLSAqIFJldHVybnM6IHRoZSBwYXJzZWQgbWFuaWZlc3QgdmVy
c2lvbi4KLSAqIAotICogU2luY2U6IDIuNDgKLSAqLwotZ2RvdWJsZSB3ZWJraXRfd2ViX2V4dGVu
c2lvbl9nZXRfbWFuaWZlc3RfdmVyc2lvbihXZWJLaXRXZWJFeHRlbnNpb24qIGV4dGVuc2lvbikK
LXsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX0VYVEVOU0lPTihleHRl
bnNpb24pLCAwKTsKLQotICAgIHJldHVybiBleHRlbnNpb24tPnByaXYtPmV4dGVuc2lvbi0+bWFu
aWZlc3RWZXJzaW9uKCk7Ci19Ci0KLS8qKgotICogd2Via2l0X3dlYl9leHRlbnNpb25fc3VwcG9y
dHNfbWFuaWZlc3RfdmVyc2lvbjoKLSAqIEBleHRlbnNpb246IGEgI1dlYktpdFdlYkV4dGVuc2lv
bgotICogQG1hbmlmZXN0X3ZlcnNpb246IHRoZSB2ZXJzaW9uIG51bWJlciB0byBjaGVjawotICog
Ci0gKiBDaGVja3MgaWYgYSBtYW5pZmVzdCB2ZXJzaW9uIGlzIHN1cHBvcnRlZCBieSB0aGUgZXh0
ZW5zaW9uLgotICogCi0gKiBSZXR1cm5zOiBgVFJVRWAgaWYgdGhlIGV4dGVuc2lvbiBzcGVjaWZp
ZWQgYSBtYW5pZmVzdCB2ZXJzaW9uCi0gKiB0aGF0IGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0
byBAbWFuaWZlc3RfdmVyc2lvbi4KLSAqIAotICogU2luY2U6IDIuNDgKLSAqLwotZ2Jvb2xlYW4g
d2Via2l0X3dlYl9leHRlbnNpb25fc3VwcG9ydHNfbWFuaWZlc3RfdmVyc2lvbihXZWJLaXRXZWJF
eHRlbnNpb24qIGV4dGVuc2lvbiwgZ2RvdWJsZSBtYW5pZmVzdFZlcnNpb24pCi17Ci0gICAgZ19y
ZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9FWFRFTlNJT04oZXh0ZW5zaW9uKSwgRkFM
U0UpOwotCi0gICAgcmV0dXJuIGV4dGVuc2lvbi0+cHJpdi0+ZXh0ZW5zaW9uLT5zdXBwb3J0c01h
bmlmZXN0VmVyc2lvbihtYW5pZmVzdFZlcnNpb24pOwotfQotCi0vKioKLSAqIHdlYmtpdF93ZWJf
ZXh0ZW5zaW9uX2dldF9kZWZhdWx0X2xvY2FsZToKLSAqIEBleHRlbnNpb246IGEgI1dlYktpdFdl
YkV4dGVuc2lvbgotICoKLSAqIEdldCB0aGUgZGVmYXVsdCBsb2NhbGUgZm9yIHRoZSBleHRlbnNp
b24uCi0gKiAKLSAqIFJldHVybnM6IChudWxsYWJsZSk6IHRoZSBkZWZhdWx0IGxvY2FsZSwgb3Ig
JU5VTEwgaWYgdGhlcmUgd2FzIG5vIGRlZmF1bHQKLSAqIGxvY2FsZSBzcGVjaWZpZWQuCi0gKiAK
LSAqIFNpbmNlOiAyLjQ4Ci0gKi8KLWNvbnN0IGdjaGFyKiB3ZWJraXRfd2ViX2V4dGVuc2lvbl9n
ZXRfZGVmYXVsdF9sb2NhbGUoV2ViS2l0V2ViRXh0ZW5zaW9uKiBleHRlbnNpb24pCi17Ci0gICAg
Z19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9FWFRFTlNJT04oZXh0ZW5zaW9uKSwg
bnVsbHB0cik7Ci0KLSAgICBXZWJLaXRXZWJFeHRlbnNpb25Qcml2YXRlKiBwcml2ID0gZXh0ZW5z
aW9uLT5wcml2OwotICAgIGlmICghcHJpdi0+ZGVmYXVsdExvY2FsZS5pc051bGwoKSkKLSAgICAg
ICAgcmV0dXJuIHByaXYtPmRlZmF1bHRMb2NhbGUuZGF0YSgpOwotCi0gICAgYXV0byBkZWZhdWx0
TG9jYWxlID0gcHJpdi0+ZXh0ZW5zaW9uLT5kZWZhdWx0TG9jYWxlKCk7Ci0gICAgaWYgKGRlZmF1
bHRMb2NhbGUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHByaXYt
PmRlZmF1bHRMb2NhbGUgPSBkZWZhdWx0TG9jYWxlLnV0ZjgoKTsKLSAgICByZXR1cm4gcHJpdi0+
ZGVmYXVsdExvY2FsZS5kYXRhKCk7Ci19Ci0KLS8qKgotICogd2Via2l0X3dlYl9leHRlbnNpb25f
Z2V0X2Rpc3BsYXlfbmFtZToKLSAqIEBleHRlbnNpb246IGEgI1dlYktpdFdlYkV4dGVuc2lvbgot
ICoKLSAqIEdldCB0aGUgbG9jYWxpemVkIG5hbWUgZm9yIHRoZSBleHRlbnNpb24uCi0gKiAKLSAq
IFJldHVybnM6IChudWxsYWJsZSk6IHRoZSBsb2NhbGl6ZWQgbmFtZSwgb3IgJU5VTEwgaWYgdGhl
cmUgd2FzIG5vCi0gKiBuYW1lIHNwZWNpZmllZC4KLSAqIAotICogU2luY2U6IDIuNDgKLSAqLwot
Y29uc3QgZ2NoYXIqIHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9kaXNwbGF5X25hbWUoV2ViS2l0
V2ViRXh0ZW5zaW9uKiBleHRlbnNpb24pCi17Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VC
S0lUX0lTX1dFQl9FWFRFTlNJT04oZXh0ZW5zaW9uKSwgbnVsbHB0cik7Ci0KLSAgICBXZWJLaXRX
ZWJFeHRlbnNpb25Qcml2YXRlKiBwcml2ID0gZXh0ZW5zaW9uLT5wcml2OwotICAgIGlmICghcHJp
di0+ZGlzcGxheU5hbWUuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBwcml2LT5kaXNwbGF5TmFt
ZS5kYXRhKCk7Ci0KLSAgICBhdXRvIGRpc3BsYXlOYW1lID0gcHJpdi0+ZXh0ZW5zaW9uLT5kaXNw
bGF5TmFtZSgpOwotICAgIGlmIChkaXNwbGF5TmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVy
biBudWxscHRyOwotCi0gICAgcHJpdi0+ZGlzcGxheU5hbWUgPSBkaXNwbGF5TmFtZS51dGY4KCk7
Ci0gICAgcmV0dXJuIHByaXYtPmRpc3BsYXlOYW1lLmRhdGEoKTsKLX0KLQotLyoqCi0gKiB3ZWJr
aXRfd2ViX2V4dGVuc2lvbl9nZXRfZGlzcGxheV9zaG9ydF9uYW1lOgotICogQGV4dGVuc2lvbjog
YSAjV2ViS2l0V2ViRXh0ZW5zaW9uCi0gKgotICogR2V0IHRoZSBsb2NhbGl6ZWQgc2hvcnQgbmFt
ZSBmb3IgdGhlIGV4dGVuc2lvbi4KLSAqIAotICogUmV0dXJuczogKG51bGxhYmxlKTogdGhlIGxv
Y2FsaXplZCBuYW1lLCBvciAlTlVMTCBpZiB0aGVyZSB3YXMgbm8KLSAqIHNob3J0IG5hbWUgc3Bl
Y2lmaWVkLgotICogCi0gKiBTaW5jZTogMi40OAotICovCi1jb25zdCBnY2hhciogd2Via2l0X3dl
Yl9leHRlbnNpb25fZ2V0X2Rpc3BsYXlfc2hvcnRfbmFtZShXZWJLaXRXZWJFeHRlbnNpb24qIGV4
dGVuc2lvbikKLXsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX0VYVEVO
U0lPTihleHRlbnNpb24pLCBudWxscHRyKTsKLQotICAgIFdlYktpdFdlYkV4dGVuc2lvblByaXZh
dGUqIHByaXYgPSBleHRlbnNpb24tPnByaXY7Ci0gICAgaWYgKCFwcml2LT5kaXNwbGF5U2hvcnRO
YW1lLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gcHJpdi0+ZGlzcGxheVNob3J0TmFtZS5kYXRh
KCk7Ci0KLSAgICBhdXRvIGRpc3BsYXlTaG9ydE5hbWUgPSBwcml2LT5leHRlbnNpb24tPmRpc3Bs
YXlTaG9ydE5hbWUoKTsKLSAgICBpZiAoZGlzcGxheVNob3J0TmFtZS5pc0VtcHR5KCkpCi0gICAg
ICAgIHJldHVybiBudWxscHRyOwotCi0gICAgcHJpdi0+ZGlzcGxheVNob3J0TmFtZSA9IGRpc3Bs
YXlTaG9ydE5hbWUudXRmOCgpOwotICAgIHJldHVybiBwcml2LT5kaXNwbGF5U2hvcnROYW1lLmRh
dGEoKTsKLX0KLQotLyoqCi0gKiB3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfZGlzcGxheV92ZXJz
aW9uOgotICogQGV4dGVuc2lvbjogYSAjV2ViS2l0V2ViRXh0ZW5zaW9uCi0gKgotICogR2V0IHRo
ZSBsb2NhbGl6ZWQgZGlzcGxheSB2ZXJzaW9uIGZvciB0aGUgZXh0ZW5zaW9uLgotICogCi0gKiBS
ZXR1cm5zOiAobnVsbGFibGUpOiB0aGUgbG9jYWxpemVkIGRpc3BsYXkgdmVyc2lvbiwgb3IgJU5V
TEwgaWYgdGhlcmUgd2FzIG5vCi0gKiBkaXNwbGF5IHZlcnNpb24gc3BlY2lmaWVkLgotICogCi0g
KiBTaW5jZTogMi40OAotICovCi1jb25zdCBnY2hhciogd2Via2l0X3dlYl9leHRlbnNpb25fZ2V0
X2Rpc3BsYXlfdmVyc2lvbihXZWJLaXRXZWJFeHRlbnNpb24qIGV4dGVuc2lvbikKLXsKLSAgICBn
X3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX0VYVEVOU0lPTihleHRlbnNpb24pLCBu
dWxscHRyKTsKLQotICAgIFdlYktpdFdlYkV4dGVuc2lvblByaXZhdGUqIHByaXYgPSBleHRlbnNp
b24tPnByaXY7Ci0gICAgaWYgKCFwcml2LT5kaXNwbGF5VmVyc2lvbi5pc051bGwoKSkKLSAgICAg
ICAgcmV0dXJuIHByaXYtPmRpc3BsYXlWZXJzaW9uLmRhdGEoKTsKLQotICAgIGF1dG8gZGlzcGxh
eVZlcnNpb24gPSBwcml2LT5leHRlbnNpb24tPmRpc3BsYXlWZXJzaW9uKCk7Ci0gICAgaWYgKGRp
c3BsYXlWZXJzaW9uLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBw
cml2LT5kaXNwbGF5VmVyc2lvbiA9IGRpc3BsYXlWZXJzaW9uLnV0ZjgoKTsKLSAgICByZXR1cm4g
cHJpdi0+ZGlzcGxheVZlcnNpb24uZGF0YSgpOwotfQotCi0vKioKLSAqIHdlYmtpdF93ZWJfZXh0
ZW5zaW9uX2dldF9kaXNwbGF5X2Rlc2NyaXB0aW9uOgotICogQGV4dGVuc2lvbjogYSAjV2ViS2l0
V2ViRXh0ZW5zaW9uCi0gKgotICogR2V0IHRoZSBsb2NhbGl6ZWQgZGlzcGxheSBkZXNjcmlwdGlv
biBmb3IgdGhlIGV4dGVuc2lvbi4KLSAqIAotICogUmV0dXJuczogKG51bGxhYmxlKTogdGhlIGxv
Y2FsaXplZCBkaXNwbGF5IGRlc2NyaXB0aW9uLCBvciAlTlVMTCBpZiB0aGVyZQotICogd2FzIG5v
IGRpc3BsYXkgZGVzY3JpcHRpb24gc3BlY2lmaWVkLgotICogCi0gKiBTaW5jZTogMi40OAotICov
Ci1jb25zdCBnY2hhciogd2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X2Rpc3BsYXlfZGVzY3JpcHRp
b24oV2ViS2l0V2ViRXh0ZW5zaW9uKiBleHRlbnNpb24pCi17Ci0gICAgZ19yZXR1cm5fdmFsX2lm
X2ZhaWwoV0VCS0lUX0lTX1dFQl9FWFRFTlNJT04oZXh0ZW5zaW9uKSwgbnVsbHB0cik7Ci0KLSAg
ICBXZWJLaXRXZWJFeHRlbnNpb25Qcml2YXRlKiBwcml2ID0gZXh0ZW5zaW9uLT5wcml2OwotICAg
IGlmICghcHJpdi0+ZGlzcGxheURlc2NyaXB0aW9uLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4g
cHJpdi0+ZGlzcGxheURlc2NyaXB0aW9uLmRhdGEoKTsKLQotICAgIGF1dG8gZGlzcGxheURlc2Ny
aXB0aW9uID0gcHJpdi0+ZXh0ZW5zaW9uLT5kaXNwbGF5RGVzY3JpcHRpb24oKTsKLSAgICBpZiAo
ZGlzcGxheURlc2NyaXB0aW9uLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0K
LSAgICBwcml2LT5kaXNwbGF5RGVzY3JpcHRpb24gPSBkaXNwbGF5RGVzY3JpcHRpb24udXRmOCgp
OwotICAgIHJldHVybiBwcml2LT5kaXNwbGF5RGVzY3JpcHRpb24uZGF0YSgpOwotfQotCi0vKioK
LSAqIHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9kaXNwbGF5X2FjdGlvbl9sYWJlbDoKLSAqIEBl
eHRlbnNpb246IGEgI1dlYktpdFdlYkV4dGVuc2lvbgotICoKLSAqIEdldCB0aGUgbG9jYWxpemVk
IGRpc3BsYXkgYWN0aW9uIGxhYmVsIGZvciB0aGUgZXh0ZW5zaW9uLgotICogCi0gKiBUaGlzIGxh
YmVsIHNlcnZlcyBhcyBhIGRlZmF1bHQgYW5kIHNob3VsZCBiZSB1c2VkIHRvIHJlcHJlc2VudCB0
aGUgZXh0ZW5zaW9uIGluIGNvbnRleHRzIGxpa2UgYWN0aW9uIHNoZWV0cyBvciB0b29sYmFycyBw
cmlvciB0byAKLSAqIHRoZSBleHRlbnNpb24gYmVpbmcgbG9hZGVkIGludG8gYW4gZXh0ZW5zaW9u
IGNvbnRleHQuCi0gKiBPbmNlIHRoZSBleHRlbnNpb24gaXMgbG9hZGVkLCB1c2UgdGhlIGBgYWN0
aW9uRm9yVGFiOmBgIEFQSSB0byBnZXQgdGhlIHRhYi1zcGVjaWZpYyBsYWJlbC4KLSAqIAotICog
UmV0dXJuczogKG51bGxhYmxlKTogdGhlIGxvY2FsaXplZCBkaXNwbGF5IGFjdGlvbiBsYWJlbCwg
b3IgJU5VTEwgaWYgdGhlcmUKLSAqIHdhcyBubyBkaXNwbGF5IGFjdGlvbiBsYWJlbCBzcGVjaWZp
ZWQuCi0gKiAKLSAqIFNpbmNlOiAyLjQ4Ci0gKi8KLWNvbnN0IGdjaGFyKiB3ZWJraXRfd2ViX2V4
dGVuc2lvbl9nZXRfZGlzcGxheV9hY3Rpb25fbGFiZWwoV2ViS2l0V2ViRXh0ZW5zaW9uKiBleHRl
bnNpb24pCi17Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9FWFRFTlNJ
T04oZXh0ZW5zaW9uKSwgbnVsbHB0cik7Ci0KLSAgICBXZWJLaXRXZWJFeHRlbnNpb25Qcml2YXRl
KiBwcml2ID0gZXh0ZW5zaW9uLT5wcml2OwotICAgIGlmICghcHJpdi0+ZGlzcGxheUFjdGlvbkxh
YmVsLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gcHJpdi0+ZGlzcGxheUFjdGlvbkxhYmVsLmRh
dGEoKTsKLQotICAgIGF1dG8gZGlzcGxheUFjdGlvbkxhYmVsID0gcHJpdi0+ZXh0ZW5zaW9uLT5k
aXNwbGF5QWN0aW9uTGFiZWwoKTsKLSAgICBpZiAoZGlzcGxheUFjdGlvbkxhYmVsLmlzRW1wdHko
KSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBwcml2LT5kaXNwbGF5QWN0aW9uTGFi
ZWwgPSBkaXNwbGF5QWN0aW9uTGFiZWwudXRmOCgpOwotICAgIHJldHVybiBwcml2LT5kaXNwbGF5
QWN0aW9uTGFiZWwuZGF0YSgpOwotfQotCi0vKioKLSAqIHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dl
dF9pY29uOgotICogQGV4dGVuc2lvbjogYSAjV2ViS2l0V2ViRXh0ZW5zaW9uCi0gKiBAd2lkdGg6
IFRoZSB3aWR0aCB0byB1c2Ugd2hlbiBsb29raW5nIHVwIHRoZSBpY29uLgotICogQGhlaWdodDog
VGhlIGhlaWdodCB0byB1c2Ugd2hlbiBsb29raW5nIHVwIHRoZSBpY29uLgotICoKLSAqIFJldHVy
bnMgdGhlIGV4dGVuc2lvbidzIGljb24gaW1hZ2UgZm9yIHRoZSBzcGVjaWZpZWQgc2l6ZS4KLSAq
IFRoaXMgaWNvbiBzaG91bGQgcmVwcmVzZW50IHRoZSBleHRlbnNpb24gaW4gc2V0dGluZ3Mgb3Ig
b3RoZXIgYXJlYXMgdGhhdCBzaG93IHRoZSBleHRlbnNpb24uCi0gKiBUaGUgcmV0dXJuZWQgaW1h
Z2Ugd2lsbCBiZSB0aGUgYmVzdCBtYXRjaCBmb3IgdGhlIHNwZWNpZmllZCBzaXplIHRoYXQgaXMg
YXZhaWxhYmxlIGluIHRoZSBleHRlbnNpb24ncwotICogaWNvbiBzZXQuIElmIG5vIG1hdGNoaW5n
IGljb24gY2FuIGJlIGZvdW5kLCB0aGUgbWV0aG9kIHdpbGwgcmV0dXJuICVOVUxMLgotICogCi0g
KiBSZXR1cm5zOiAobnVsbGFibGUpICh0cmFuc2ZlciBub25lKTogdGhlIGljb24gaW1hZ2UsIG9y
ICVOVUxMIGlmIG5vIGljb24gY291bGQgYmUgbG9hZGVkLgotICogCi0gKiBTaW5jZTogMi40OAot
ICovCi1HSWNvbiogd2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X2ljb24oV2ViS2l0V2ViRXh0ZW5z
aW9uKiBleHRlbnNpb24sIGdkb3VibGUgd2lkdGgsIGdkb3VibGUgaGVpZ2h0KQotewotICAgIGdf
cmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfRVhURU5TSU9OKGV4dGVuc2lvbiksIG51
bGxwdHIpOwotCi0gICAgV2ViS2l0V2ViRXh0ZW5zaW9uUHJpdmF0ZSogcHJpdiA9IGV4dGVuc2lv
bi0+cHJpdjsKLSAgICBhdXRvIGljb24gPSBwcml2LT5leHRlbnNpb24tPmljb24oV2ViQ29yZTo6
RmxvYXRTaXplKHdpZHRoLCBoZWlnaHQpKTsKLSAgICBpZiAoIWljb24pCi0gICAgICAgIHJldHVy
biBudWxscHRyOwotICAgIHJldHVybiBpY29uLT5pY29uKCk7Ci19Ci0KLS8qKgotICogd2Via2l0
X3dlYl9leHRlbnNpb25fZ2V0X2FjdGlvbl9pY29uOgotICogQGV4dGVuc2lvbjogYSAjV2ViS2l0
V2ViRXh0ZW5zaW9uCi0gKiBAd2lkdGg6IFRoZSB3aWR0aCB0byB1c2Ugd2hlbiBsb29raW5nIHVw
IHRoZSBpY29uLgotICogQGhlaWdodDogVGhlIGhlaWdodCB0byB1c2Ugd2hlbiBsb29raW5nIHVw
IHRoZSBpY29uLgotICoKLSAqIFJldHVybnMgdGhlIGV4dGVuc2lvbidzIGRlZmF1bHQgYWN0aW9u
IGljb24gaW1hZ2UgZm9yIHRoZSBzcGVjaWZpZWQgc2l6ZS4KLSAqIFRoaXMgaWNvbiBzZXJ2ZXMg
YXMgYSBkZWZhdWx0IGFuZCBzaG91bGQgYmUgdXNlZCB0byByZXByZXNlbnQgdGhlIGV4dGVuc2lv
biBpbiBjb250ZXh0cyBsaWtlIGFjdGlvbiBzaGVldHMgb3IgdG9vbGJhcnMgcHJpb3IgdG8gCi0g
KiB0aGUgZXh0ZW5zaW9uIGJlaW5nIGxvYWRlZCBpbnRvIGFuIGV4dGVuc2lvbiBjb250ZXh0LiBP
bmNlIHRoZSBleHRlbnNpb24gaXMgbG9hZGVkLCB1c2UgdGhlCi0gKiBgYGFjdGlvbkZvclRhYjpg
YCBBUEkgdG8gZ2V0IHRoZSB0YWItc3BlY2lmaWMgaWNvbi4KLSAqIFRoZSByZXR1cm5lZCBpbWFn
ZSB3aWxsIGJlIHRoZSBiZXN0IG1hdGNoIGZvciB0aGUgc3BlY2lmaWVkIHNpemUgdGhhdCBpcyBh
dmFpbGFibGUgaW4gdGhlIGV4dGVuc2lvbidzIGFjdGlvbiBpY29uIHNldC4gSWYgbm8gbWF0Y2hp
bmcgaWNvbiBpcyBhdmFpbGFibGUsCi0gKiB0aGUgbWV0aG9kIHdpbGwgZmFsbCBiYWNrIHRvIHRo
ZSBleHRlbnNpb24ncyBpY29uLgotICogCi0gKiBSZXR1cm5zOiAobnVsbGFibGUpICh0cmFuc2Zl
ciBub25lKTogdGhlIGljb24gaW1hZ2UsIG9yICVOVUxMIGlmIG5vIGljb24gY291bGQgYmUgbG9h
ZGVkLgotICogCi0gKiBTaW5jZTogMi40OAotICovCi1HSWNvbiogd2Via2l0X3dlYl9leHRlbnNp
b25fZ2V0X2FjdGlvbl9pY29uKFdlYktpdFdlYkV4dGVuc2lvbiogZXh0ZW5zaW9uLCBnZG91Ymxl
IHdpZHRoLCBnZG91YmxlIGhlaWdodCkKLXsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJL
SVRfSVNfV0VCX0VYVEVOU0lPTihleHRlbnNpb24pLCBudWxscHRyKTsKLQotICAgIFdlYktpdFdl
YkV4dGVuc2lvblByaXZhdGUqIHByaXYgPSBleHRlbnNpb24tPnByaXY7Ci0gICAgYXV0byBpY29u
ID0gcHJpdi0+ZXh0ZW5zaW9uLT5hY3Rpb25JY29uKFdlYkNvcmU6OkZsb2F0U2l6ZSh3aWR0aCwg
aGVpZ2h0KSk7Ci0gICAgaWYgKCFpY29uKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBy
ZXR1cm4gaWNvbi0+aWNvbigpOwotfQotCi0vKioKLSAqIHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dl
dF92ZXJzaW9uOgotICogQGV4dGVuc2lvbjogYSAjV2ViS2l0V2ViRXh0ZW5zaW9uCi0gKgotICog
R2V0IHRoZSB2ZXJzaW9uIGZvciB0aGUgZXh0ZW5zaW9uLgotICogCi0gKiBSZXR1cm5zOiAobnVs
bGFibGUpOiB0aGUgdmVyc2lvbiwgb3IgJU5VTEwgaWYgdGhlcmUgd2FzIG5vCi0gKiB2ZXJzaW9u
IHNwZWNpZmllZC4KLSAqIAotICogU2luY2U6IDIuNDgKLSAqLwotY29uc3QgZ2NoYXIqIHdlYmtp
dF93ZWJfZXh0ZW5zaW9uX2dldF92ZXJzaW9uKFdlYktpdFdlYkV4dGVuc2lvbiogZXh0ZW5zaW9u
KQotewotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfRVhURU5TSU9OKGV4
dGVuc2lvbiksIG51bGxwdHIpOwotCi0gICAgV2ViS2l0V2ViRXh0ZW5zaW9uUHJpdmF0ZSogcHJp
diA9IGV4dGVuc2lvbi0+cHJpdjsKLSAgICBpZiAoIXByaXYtPnZlcnNpb24uaXNOdWxsKCkpCi0g
ICAgICAgIHJldHVybiBwcml2LT52ZXJzaW9uLmRhdGEoKTsKLQotICAgIGF1dG8gdmVyc2lvbiA9
IHByaXYtPmV4dGVuc2lvbi0+dmVyc2lvbigpOwotICAgIGlmICh2ZXJzaW9uLmlzRW1wdHkoKSkK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBwcml2LT52ZXJzaW9uID0gdmVyc2lvbi51
dGY4KCk7Ci0gICAgcmV0dXJuIHByaXYtPnZlcnNpb24uZGF0YSgpOwotfQotCi0vKioKLSAqIHdl
YmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9yZXF1ZXN0ZWRfcGVybWlzc2lvbnM6Ci0gKiBAZXh0ZW5z
aW9uOiBhICNXZWJLaXRXZWJFeHRlbnNpb24KLSAqCi0gKiBHZXQgdGhlIHNldCBvZiBwZXJtaXNz
aW9ucyB0aGF0IHRoZSBleHRlbnNpb24gcmVxdWlyZXMKLSAqIGZvciBpdHMgYmFzZSBmdW5jdGlv
bmFsaXR5LgotICogCi0gKiBSZXR1cm5zOiAobnVsbGFibGUpIChhcnJheSB6ZXJvLXRlcm1pbmF0
ZWQ9MSkgKHRyYW5zZmVyIG5vbmUpOiBhCi0gKiAlTlVMTC10ZXJtaW5hdGVkIGFycmF5IG9mIHN0
cmluZ3MgY29udGFpbmluZyBwZXJtaXNzaW9uIG5hbWVzLAotICogb3IgJU5VTEwgb3RoZXJ3aXNl
LiBUaGlzIGFycmF5IGFuZCBpdHMgY29udGVudHMgYXJlIG93bmVkIGJ5Ci0gKiBXZWJLaXQgYW5k
IHNob3VsZCBub3QgYmUgbW9kaWZpZWQgb3IgZnJlZWQuCi0gKiAKLSAqIFNpbmNlOiAyLjQ4Ci0g
Ki8KLWNvbnN0IGdjaGFyKiBjb25zdCAqIHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9yZXF1ZXN0
ZWRfcGVybWlzc2lvbnMoV2ViS2l0V2ViRXh0ZW5zaW9uKiBleHRlbnNpb24pCi17Ci0gICAgZ19y
ZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9FWFRFTlNJT04oZXh0ZW5zaW9uKSwgbnVs
bHB0cik7Ci0KLSAgICBXZWJLaXRXZWJFeHRlbnNpb25Qcml2YXRlKiBwcml2ID0gZXh0ZW5zaW9u
LT5wcml2OwotICAgIGlmIChwcml2LT5yZXF1ZXN0ZWRQZXJtaXNzaW9ucykKLSAgICAgICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Z2NoYXIqKj4ocHJpdi0+cmVxdWVzdGVkUGVybWlzc2lvbnMt
PnBkYXRhKTsKLQotICAgIGF1dG8gcmVxdWVzdGVkUGVybWlzc2lvbnMgPSBwcml2LT5leHRlbnNp
b24tPnJlcXVlc3RlZFBlcm1pc3Npb25zKCk7Ci0gICAgaWYgKCFyZXF1ZXN0ZWRQZXJtaXNzaW9u
cy5zaXplKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgcHJpdi0+cmVxdWVzdGVk
UGVybWlzc2lvbnMgPSBhZG9wdEdSZWYoZ19wdHJfYXJyYXlfbmV3X3dpdGhfZnJlZV9mdW5jKGdf
ZnJlZSkpOwotICAgIGZvciAoYXV0byBwZXJtaXNzaW9uIDogcmVxdWVzdGVkUGVybWlzc2lvbnMp
Ci0gICAgICAgIGdfcHRyX2FycmF5X2FkZChwcml2LT5yZXF1ZXN0ZWRQZXJtaXNzaW9ucy5nZXQo
KSwgZ19zdHJkdXAocGVybWlzc2lvbi51dGY4KCkuZGF0YSgpKSk7Ci0gICAgZ19wdHJfYXJyYXlf
YWRkKHByaXYtPnJlcXVlc3RlZFBlcm1pc3Npb25zLmdldCgpLCBudWxscHRyKTsKLQotICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PGdjaGFyKio+KHByaXYtPnJlcXVlc3RlZFBlcm1pc3Npb25z
LT5wZGF0YSk7Ci19Ci0KLS8qKgotICogd2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X29wdGlvbmFs
X3Blcm1pc3Npb25zOgotICogQGV4dGVuc2lvbjogYSAjV2ViS2l0V2ViRXh0ZW5zaW9uCi0gKgot
ICogR2V0IHRoZSBzZXQgb2YgcGVybWlzc2lvbnMgdGhhdCB0aGUgZXh0ZW5zaW9uIG1heSBuZWVk
IGZvcgotICogb3B0aW9uYWwgZnVuY3Rpb25hbGl0eS4gVGhlc2UgcGVybWlzc2lvbnMgY2FuIGJl
IHJlcXVlc3RlZAotICogYnkgdGhlIGV4dGVuc2lvbiBhdCBhIGxhdGVyIHRpbWUuCi0gKiAKLSAq
IFJldHVybnM6IChudWxsYWJsZSkgKGFycmF5IHplcm8tdGVybWluYXRlZD0xKSAodHJhbnNmZXIg
bm9uZSk6IGEKLSAqICVOVUxMLXRlcm1pbmF0ZWQgYXJyYXkgb2Ygc3RyaW5ncyBjb250YWluaW5n
IHBlcm1pc3Npb24gbmFtZXMsCi0gKiBvciAlTlVMTCBvdGhlcndpc2UuIFRoaXMgYXJyYXkgYW5k
IGl0cyBjb250ZW50cyBhcmUgb3duZWQgYnkKLSAqIFdlYktpdCBhbmQgc2hvdWxkIG5vdCBiZSBt
b2RpZmllZCBvciBmcmVlZC4KLSAqIAotICogU2luY2U6IDIuNDgKLSAqLwotY29uc3QgZ2NoYXIq
IGNvbnN0ICogd2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X29wdGlvbmFsX3Blcm1pc3Npb25zKFdl
YktpdFdlYkV4dGVuc2lvbiogZXh0ZW5zaW9uKQotewotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWls
KFdFQktJVF9JU19XRUJfRVhURU5TSU9OKGV4dGVuc2lvbiksIG51bGxwdHIpOwotCi0gICAgV2Vi
S2l0V2ViRXh0ZW5zaW9uUHJpdmF0ZSogcHJpdiA9IGV4dGVuc2lvbi0+cHJpdjsKLSAgICBpZiAo
cHJpdi0+b3B0aW9uYWxQZXJtaXNzaW9ucykKLSAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8Z2NoYXIqKj4ocHJpdi0+b3B0aW9uYWxQZXJtaXNzaW9ucy0+cGRhdGEpOwotCi0gICAgYXV0
byBvcHRpb25hbFBlcm1pc3Npb25zID0gcHJpdi0+ZXh0ZW5zaW9uLT5vcHRpb25hbFBlcm1pc3Np
b25zKCk7Ci0gICAgaWYgKCFvcHRpb25hbFBlcm1pc3Npb25zLnNpemUoKSkKLSAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0KLSAgICBwcml2LT5vcHRpb25hbFBlcm1pc3Npb25zID0gYWRvcHRHUmVm
KGdfcHRyX2FycmF5X25ld193aXRoX2ZyZWVfZnVuYyhnX2ZyZWUpKTsKLSAgICBmb3IgKGF1dG8g
cGVybWlzc2lvbiA6IG9wdGlvbmFsUGVybWlzc2lvbnMpCi0gICAgICAgIGdfcHRyX2FycmF5X2Fk
ZChwcml2LT5vcHRpb25hbFBlcm1pc3Npb25zLmdldCgpLCBnX3N0cmR1cChwZXJtaXNzaW9uLnV0
ZjgoKS5kYXRhKCkpKTsKLSAgICBnX3B0cl9hcnJheV9hZGQocHJpdi0+b3B0aW9uYWxQZXJtaXNz
aW9ucy5nZXQoKSwgbnVsbHB0cik7Ci0KLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxnY2hh
cioqPihwcml2LT5vcHRpb25hbFBlcm1pc3Npb25zLT5wZGF0YSk7Ci19Ci0KLS8qKgotICogd2Vi
a2l0X3dlYl9leHRlbnNpb25fZ2V0X3JlcXVlc3RlZF9wZXJtaXNzaW9uX21hdGNoX3BhdHRlcm5z
OgotICogQGV4dGVuc2lvbjogYSAjV2ViS2l0V2ViRXh0ZW5zaW9uCi0gKgotICogR2V0IHRoZSBz
ZXQgb2Ygd2Vic2l0ZXMgdGhhdCB0aGUgZXh0ZW5zaW9uIHJlcXVpcmVzIGFjY2VzcyB0byBmb3Ig
aXRzIGJhc2UgZnVuY3Rpb25hbGl0eS4KLSAqCi0gKiBSZXR1cm5zOiAoZWxlbWVudC10eXBlIFdl
YktpdFdlYkV4dGVuc2lvbk1hdGNoUGF0dGVybikgKHRyYW5zZmVyIGZ1bGwpOiBhICNHTGlzdCBv
ZgotICogICAgbWF0Y2ggcGF0dGVybnMgbWF0Y2hpbmcgdGhlIHJlcXVpcmVkIHdlYnNpdGVzLgot
ICogCi0gKiBTaW5jZTogMi40OAotICovCi1HTGlzdCogd2Via2l0X3dlYl9leHRlbnNpb25fZ2V0
X3JlcXVlc3RlZF9wZXJtaXNzaW9uX21hdGNoX3BhdHRlcm5zKFdlYktpdFdlYkV4dGVuc2lvbiog
ZXh0ZW5zaW9uKQotewotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfRVhU
RU5TSU9OKGV4dGVuc2lvbiksIG51bGxwdHIpOwotCi0gICAgYXV0byBtYXRjaFBhdHRlcm5TZXQg
PSBleHRlbnNpb24tPnByaXYtPmV4dGVuc2lvbi0+cmVxdWVzdGVkUGVybWlzc2lvbk1hdGNoUGF0
dGVybnMoKTsKLQotICAgIEdMaXN0KiByZXR1cm5WYWx1ZSA9IG51bGxwdHI7Ci0gICAgZm9yIChS
ZWYgcGF0dGVybiA6IG1hdGNoUGF0dGVyblNldCkKLSAgICAgICAgcmV0dXJuVmFsdWUgPSBnX2xp
c3RfcHJlcGVuZChyZXR1cm5WYWx1ZSwgd2Via2l0V2ViRXh0ZW5zaW9uTWF0Y2hQYXR0ZXJuQ3Jl
YXRlKHBhdHRlcm4pKTsKLQotICAgIHJldHVybiByZXR1cm5WYWx1ZTsKLX0KLQotLyoqCi0gKiB3
ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfb3B0aW9uYWxfcGVybWlzc2lvbl9tYXRjaF9wYXR0ZXJu
czoKLSAqIEBleHRlbnNpb246IGEgI1dlYktpdFdlYkV4dGVuc2lvbgotICoKLSAqIEdldCB0aGUg
c2V0IG9mIHdlYnNpdGVzIHRoYXQgdGhlIGV4dGVuc2lvbiBtYXkgbmVlZCBhY2Nlc3MgdG8gZm9y
IG9wdGlvbmFsIGZ1bmN0aW9uYWxpdHkuCi0gKiBUaGVzZSBtYXRjaCBwYXR0ZXJucyBjYW4gYmUg
cmVxdWVzdGVkIGJ5IHRoZSBleHRlbnNpb24gYXQgYSBsYXRlciB0aW1lLgotICoKLSAqIFJldHVy
bnM6IChlbGVtZW50LXR5cGUgV2ViS2l0V2ViRXh0ZW5zaW9uTWF0Y2hQYXR0ZXJuKSAodHJhbnNm
ZXIgZnVsbCk6IGEgI0dMaXN0IG9mCi0gKiAgICBtYXRjaCBwYXR0ZXJucyBtYXRjaGluZyB0aGUg
b3B0aW9uYWwgd2Vic2l0ZXMuCi0gKiAKLSAqIFNpbmNlOiAyLjQ4Ci0gKi8KLUdMaXN0KiB3ZWJr
aXRfd2ViX2V4dGVuc2lvbl9nZXRfb3B0aW9uYWxfcGVybWlzc2lvbl9tYXRjaF9wYXR0ZXJucyhX
ZWJLaXRXZWJFeHRlbnNpb24qIGV4dGVuc2lvbikKLXsKLSAgICBnX3JldHVybl92YWxfaWZfZmFp
bChXRUJLSVRfSVNfV0VCX0VYVEVOU0lPTihleHRlbnNpb24pLCBudWxscHRyKTsKLQotICAgIGF1
dG8gbWF0Y2hQYXR0ZXJuU2V0ID0gZXh0ZW5zaW9uLT5wcml2LT5leHRlbnNpb24tPm9wdGlvbmFs
UGVybWlzc2lvbk1hdGNoUGF0dGVybnMoKTsKLQotICAgIEdMaXN0KiByZXR1cm5WYWx1ZSA9IG51
bGxwdHI7Ci0gICAgZm9yIChSZWYgcGF0dGVybiA6IG1hdGNoUGF0dGVyblNldCkKLSAgICAgICAg
cmV0dXJuVmFsdWUgPSBnX2xpc3RfcHJlcGVuZChyZXR1cm5WYWx1ZSwgd2Via2l0V2ViRXh0ZW5z
aW9uTWF0Y2hQYXR0ZXJuQ3JlYXRlKHBhdHRlcm4pKTsKLQotICAgIHJldHVybiByZXR1cm5WYWx1
ZTsKLX0KLQotLyoqCi0gKiB3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfYWxsX3JlcXVlc3RlZF9t
YXRjaF9wYXR0ZXJuczoKLSAqIEBleHRlbnNpb246IGEgI1dlYktpdFdlYkV4dGVuc2lvbgotICoK
LSAqIEdldCB0aGUgc2V0IG9mIHdlYnNpdGVzIHRoYXQgdGhlIGV4dGVuc2lvbiByZXF1aXJlcyBh
Y2Nlc3MgdG8gZm9yIGluamVjdGVkIGNvbnRlbnQKLSAqIGFuZCBmb3IgcmVjZWl2aW5nIG1lc3Nh
Z2VzIGZyb20gd2Vic2l0ZXMuCi0gKgotICogUmV0dXJuczogKGVsZW1lbnQtdHlwZSBXZWJLaXRX
ZWJFeHRlbnNpb25NYXRjaFBhdHRlcm4pICh0cmFuc2ZlciBmdWxsKTogYSAjR0xpc3Qgb2YKLSAq
ICAgIG1hdGNoIHBhdHRlcm5zIG1hdGNoaW5nIGFsbCByZXF1ZXN0ZWQgd2Vic2l0ZXMuCi0gKiAK
LSAqIFNpbmNlOiAyLjQ4Ci0gKi8KLUdMaXN0KiB3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfYWxs
X3JlcXVlc3RlZF9tYXRjaF9wYXR0ZXJucyhXZWJLaXRXZWJFeHRlbnNpb24qIGV4dGVuc2lvbikK
LXsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX0VYVEVOU0lPTihleHRl
bnNpb24pLCBudWxscHRyKTsKLQotICAgIGF1dG8gbWF0Y2hQYXR0ZXJuU2V0ID0gZXh0ZW5zaW9u
LT5wcml2LT5leHRlbnNpb24tPmFsbFJlcXVlc3RlZE1hdGNoUGF0dGVybnMoKTsKLQotICAgIEdM
aXN0KiByZXR1cm5WYWx1ZSA9IG51bGxwdHI7Ci0gICAgZm9yIChSZWYgcGF0dGVybiA6IG1hdGNo
UGF0dGVyblNldCkKLSAgICAgICAgcmV0dXJuVmFsdWUgPSBnX2xpc3RfcHJlcGVuZChyZXR1cm5W
YWx1ZSwgd2Via2l0V2ViRXh0ZW5zaW9uTWF0Y2hQYXR0ZXJuQ3JlYXRlKHBhdHRlcm4pKTsKLQot
ICAgIHJldHVybiBnX2xpc3RfcmV2ZXJzZShyZXR1cm5WYWx1ZSk7Ci19Ci0KLS8qKgotICogd2Vi
a2l0X3dlYl9leHRlbnNpb25fZ2V0X2hhc19iYWNrZ3JvdW5kX2NvbnRlbnQ6Ci0gKiBAZXh0ZW5z
aW9uOiBhICNXZWJLaXRXZWJFeHRlbnNpb24KLSAqIAotICogR2V0IHdoZXRoZXIgdGhlIGV4dGVu
c2lvbiBoYXMgYmFja2dyb3VuZCBjb250ZW50IHRoYXQgY2FuIHJ1biB3aGVuIG5lZWRlZC4KLSAq
IAotICogUmV0dXJuczogYFRSVUVgIGlmIHRoZSBleHRlbnNpb24gY2FuIHJ1biBpbiB0aGUgYmFj
a2dyb3VuZCBldmVuIHdoZW4gbm8KLSAqIHdlYnBhZ2VzIGFyZSBvcGVuLgotICogCi0gKiBTaW5j
ZTogMi40OAotICovCi1nYm9vbGVhbiB3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfaGFzX2JhY2tn
cm91bmRfY29udGVudChXZWJLaXRXZWJFeHRlbnNpb24qIGV4dGVuc2lvbikKLXsKLSAgICBnX3Jl
dHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX0VYVEVOU0lPTihleHRlbnNpb24pLCBGQUxT
RSk7Ci0KLSAgICByZXR1cm4gZXh0ZW5zaW9uLT5wcml2LT5leHRlbnNpb24tPmhhc0JhY2tncm91
bmRDb250ZW50KCk7Ci19Ci0KLWdib29sZWFuIHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9oYXNf
c2VydmljZV93b3JrZXJfYmFja2dyb3VuZF9jb250ZW50KFdlYktpdFdlYkV4dGVuc2lvbiogZXh0
ZW5zaW9uKQotewotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfRVhURU5T
SU9OKGV4dGVuc2lvbiksIEZBTFNFKTsKLQotICAgIHJldHVybiBleHRlbnNpb24tPnByaXYtPmV4
dGVuc2lvbi0+YmFja2dyb3VuZENvbnRlbnRJc1NlcnZpY2VXb3JrZXIoKTsKLX0KLQotZ2Jvb2xl
YW4gd2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X2hhc19tb2R1bGFyX2JhY2tncm91bmRfY29udGVu
dChXZWJLaXRXZWJFeHRlbnNpb24qIGV4dGVuc2lvbikKLXsKLSAgICBnX3JldHVybl92YWxfaWZf
ZmFpbChXRUJLSVRfSVNfV0VCX0VYVEVOU0lPTihleHRlbnNpb24pLCBGQUxTRSk7Ci0KLSAgICBy
ZXR1cm4gZXh0ZW5zaW9uLT5wcml2LT5leHRlbnNpb24tPmJhY2tncm91bmRDb250ZW50VXNlc01v
ZHVsZXMoKTsKLX0KLQotLyoqCi0gKiB3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfaGFzX3BlcnNp
c3RlbnRfYmFja2dyb3VuZF9jb250ZW50OgotICogQGV4dGVuc2lvbjogYSAjV2ViS2l0V2ViRXh0
ZW5zaW9uCi0gKiAKLSAqIEdldCB3aGV0aGVyIHRoZSBleHRlbnNpb24gaGFzIGJhY2tncm91bmQg
Y29udGVudCB0aGF0IHN0YXlzIGluIG1lbW9yeSBhcyBsb25nCi0gKiBhcyB0aGUgZXh0ZW5zaW9u
IGlzIGxvYWRlZC4KLSAqIAotICogUmV0dXJuczogYFRSVUVgIGlmIHRoZSBleHRlbnNpb24gY2Fu
IHJ1biBpbiB0aGUgYmFja2dyb3VuZC4KLSAqIAotICogU2luY2U6IDIuNDgKLSAqLwotZ2Jvb2xl
YW4gd2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X2hhc19wZXJzaXN0ZW50X2JhY2tncm91bmRfY29u
dGVudChXZWJLaXRXZWJFeHRlbnNpb24qIGV4dGVuc2lvbikKLXsKLSAgICBnX3JldHVybl92YWxf
aWZfZmFpbChXRUJLSVRfSVNfV0VCX0VYVEVOU0lPTihleHRlbnNpb24pLCBGQUxTRSk7Ci0KLSAg
ICByZXR1cm4gZXh0ZW5zaW9uLT5wcml2LT5leHRlbnNpb24tPmJhY2tncm91bmRDb250ZW50SXNQ
ZXJzaXN0ZW50KCk7Ci19Ci0KLS8qKgotICogd2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X2hhc19p
bmplY3RlZF9jb250ZW50OgotICogQGV4dGVuc2lvbjogYSAjV2ViS2l0V2ViRXh0ZW5zaW9uCi0g
KiAKLSAqIEdldCB3aGV0aGVyIHRoZSBleHRlbnNpb24gaGFzIHNjcmlwdCBvciBzdHlsZXNoZWV0
IGNvbnRlbnQKLSAqIHRoYXQgY2FuIGJlIGluamVjdGVkIGludG8gd2VicGFnZXMuCi0gKiAKLSAq
IE9uY2UgdGhlIGV4dGVuc2lvbiBpcyBsb2FkZWQsIHVzZSB0aGUgYGBoYXNJbmplY3RlZENvbnRl
bnRgYAotICogcHJvcGVydHkgb24gYW4gZXh0ZW5zaW9uIGNvbnRleHQsIGFzIHRoZSBpbmplY3Rh
YmxlIGNvbnRlbnQKLSAqIGNhbiBjaGFuZ2UgYWZ0ZXIgdGhlIGV4dGVuc2lvbiBpcyBsb2FkZWQu
Ci0gKiAKLSAqIFJldHVybnM6IGBUUlVFYCBpZiB0aGUgZXh0ZW5zaW9uIGhhcyBjb250ZW50IHRo
YXQgY2FuIGJlCi0gKiBpbmplY3RlZCBieSBtYXRjaGluZyBhZ2FpbnN0IHRoZSBleHRlbnNpb24n
cwotICogcmVxdWVzdGVkIG1hdGNoIHBhdHRlcm5zLgotICogCi0gKiBTaW5jZTogMi40OAotICov
Ci1nYm9vbGVhbiB3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfaGFzX2luamVjdGVkX2NvbnRlbnQo
V2ViS2l0V2ViRXh0ZW5zaW9uKiBleHRlbnNpb24pCi17Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2Zh
aWwoV0VCS0lUX0lTX1dFQl9FWFRFTlNJT04oZXh0ZW5zaW9uKSwgRkFMU0UpOwotCi0gICAgcmV0
dXJuIGV4dGVuc2lvbi0+cHJpdi0+ZXh0ZW5zaW9uLT5oYXNTdGF0aWNJbmplY3RlZENvbnRlbnQo
KTsKLX0KLQotLyoqCi0gKiB3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfaGFzX29wdGlvbnNfcGFn
ZToKLSAqIEBleHRlbnNpb246IGEgI1dlYktpdFdlYkV4dGVuc2lvbgotICogCi0gKiBHZXQgd2hl
dGhlciB0aGUgZXh0ZW5zaW9uIGhhcyBhbiBvcHRpb25zIHBhZ2UuCi0gKiAKLSAqIFRoZSBhcHAg
c2hvdWxkIHByb3ZpZGUgYWNjZXNzIHRvIHRoaXMgcGFnZSB0aHJvdWdoIGEKLSAqIHVzZXIgaW50
ZXJmYWNlIGVsZW1lbnQsIHdoaWNoIGNhbiBiZSBhY2Nlc3NlZCB2aWEKLSAqIGBgb3B0aW9uc1Bh
Z2VVUkxgYCBvbiBhbiBleHRlbnNpb24gY29udGV4dC4KLSAqIAotICogUmV0dXJuczogYFRSVUVg
IGlmIHRoZSBleHRlbnNpb24gaW5jbHVkZXMgYSBkZWRpY2F0ZWQgb3B0aW9ucwotICogcGFnZSB3
aGVyZSB1c2VycyBjYW4gY3VzdG9taXplIHNldHRpbmdzLgotICogCi0gKiBTaW5jZTogMi40OAot
ICovCi1nYm9vbGVhbiB3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfaGFzX29wdGlvbnNfcGFnZShX
ZWJLaXRXZWJFeHRlbnNpb24qIGV4dGVuc2lvbikKLXsKLSAgICBnX3JldHVybl92YWxfaWZfZmFp
bChXRUJLSVRfSVNfV0VCX0VYVEVOU0lPTihleHRlbnNpb24pLCBGQUxTRSk7Ci0KLSAgICByZXR1
cm4gZXh0ZW5zaW9uLT5wcml2LT5leHRlbnNpb24tPmhhc09wdGlvbnNQYWdlKCk7Ci19Ci0KLS8q
KgotICogd2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X2hhc19vdmVycmlkZV9uZXdfdGFiX3BhZ2U6
Ci0gKiBAZXh0ZW5zaW9uOiBhICNXZWJLaXRXZWJFeHRlbnNpb24KLSAqIAotICogR2V0IHdoZXRo
ZXIgdGhlIGV4dGVuc2lvbiBwcm92aWRlcyBhbiBhbHRlcm5hdGl2ZSB0bwotICogdGhlIGRlZmF1
bHQgbmV3IHRhYiBwYWdlLgotICogCi0gKiBUaGUgYXBwIHNob3VsZCBwcm9tcHQgdGhlIHVzZXIg
Zm9yIHBlcm1pc3Npb24gdG8gdXNlCi0gKiB0aGUgZXh0ZW5zaW9uJ3MgbmV3IHRhYiBwYWdlIGFz
IHRoZSBkZWZhdWx0LCB3aGljaCBjYW4KLSAqIGJlIGFjY2Vzc2VkIHZpYSBgYG92ZXJyaWRlTmV3
VGFiUGFnZVVSTGBgCi0gKiBvbiBhbiBleHRlbnNpb24gY29udGV4dC4KLSAqIAotICogUmV0dXJu
czogYFRSVUVgIGlmIHRoZSBleHRlbnNpb24gY2FuIHNwZWNpZnkgYSBjdXN0b20gcGFnZQotICog
dGhhdCBjYW4gYmUgZGlzcGxheWVkIHdoZW4gYSBuZXcgdGFiIGlzIG9wZW5lZCBpbiB0aGUgYXBw
LAotICogaW5zdGVhZCBvZiB0aGUgZGVmYXVsdCBuZXcgdGFiIHBhZ2UuCi0gKiAKLSAqIFNpbmNl
OiAyLjQ4Ci0gKi8KLWdib29sZWFuIHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9oYXNfb3ZlcnJp
ZGVfbmV3X3RhYl9wYWdlKFdlYktpdFdlYkV4dGVuc2lvbiogZXh0ZW5zaW9uKQotewotICAgIGdf
cmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfRVhURU5TSU9OKGV4dGVuc2lvbiksIEZB
TFNFKTsKLQotICAgIHJldHVybiBleHRlbnNpb24tPnByaXYtPmV4dGVuc2lvbi0+aGFzT3ZlcnJp
ZGVOZXdUYWJQYWdlKCk7Ci19Ci0KLS8qKgotICogd2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X2hh
c19jb21tYW5kczoKLSAqIEBleHRlbnNpb246IGEgI1dlYktpdFdlYkV4dGVuc2lvbgotICogCi0g
KiBHZXQgd2hldGhlciB0aGUgZXh0ZW5zaW9uIGluY2x1ZGVzIGNvbW1hbmRzIHRoYXQgdXNlcnMg
Y2FuIGludm9rZS4KLSAqIAotICogVGhlc2UgY29tbWFuZHMgc2hvdWxkIGJlIGFjY2Vzc2libGUg
dmlhIGtleWJvYXJkIHNob3J0Y3V0cywKLSAqIG1lbnUgaXRlbXMsIG9yIG90aGVyIHVzZXIgaW50
ZXJmYWNlIGVsZW1lbnRzIHByb3ZpZGVkCi0gKiBieSB0aGUgYXBwLiBUaGUgbGlzdCBvZiBjb21t
YW5kcyBjYW4gYmUgYWNjZXNzZWQKLSAqIHZpYSBgYGNvbW1hbmRzYGAgb24gYW4gZXh0ZW5zaW9u
IGNvbnRleHQsIGFuZAotICogaW52b2tlZCB2aWEgYGBwZXJmb3JtQ29tbWFuZDpgYC4KLSAqIAot
ICogUmV0dXJuczogYFRSVUVgIGlmIHRoZSBleHRlbnNpb24gY29udGFpbnMgb25lIG9yIG1vcmUg
Y29tbWFuZHMKLSAqIHRoYXQgY2FuIGJlIHBlcmZvcm1lZCBieSB0aGUgdXNlci4KLSAqIAotICog
U2luY2U6IDIuNDgKLSAqLwotZ2Jvb2xlYW4gd2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X2hhc19j
b21tYW5kcyhXZWJLaXRXZWJFeHRlbnNpb24qIGV4dGVuc2lvbikKLXsKLSAgICBnX3JldHVybl92
YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX0VYVEVOU0lPTihleHRlbnNpb24pLCBGQUxTRSk7Ci0K
LSAgICByZXR1cm4gZXh0ZW5zaW9uLT5wcml2LT5leHRlbnNpb24tPmhhc0NvbW1hbmRzKCk7Ci19
Ci0KLS8qKgotICogd2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X2hhc19jb250ZW50X21vZGlmaWNh
dGlvbl9ydWxlczoKLSAqIEBleHRlbnNpb246IGEgI1dlYktpdFdlYkV4dGVuc2lvbgotICogCi0g
KiBHZXQgd2hldGhlciB0aGUgZXh0ZW5zaW9uIGluY2x1ZGVzIHJ1bGVzIHVzZWQgZm9yCi0gKiBj
b250ZW50IG1vZGlmaWNhdGlvbiBvciBibG9ja2luZy4KLSAqIAotICogUmV0dXJuczogYFRSVUVg
IGlmIHRoZSBleHRlbnNpb24gY29udGFpbnMgb25lIG9yIG1vcmUgcnVsZXMKLSAqIGZvciBjb250
ZW50IG1vZGlmaWNhdGlvbi4KLSAqIAotICogU2luY2U6IDIuNDgKLSAqLwotZ2Jvb2xlYW4gd2Vi
a2l0X3dlYl9leHRlbnNpb25fZ2V0X2hhc19jb250ZW50X21vZGlmaWNhdGlvbl9ydWxlcyhXZWJL
aXRXZWJFeHRlbnNpb24qIGV4dGVuc2lvbikKLXsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChX
RUJLSVRfSVNfV0VCX0VYVEVOU0lPTihleHRlbnNpb24pLCBGQUxTRSk7Ci0KLSAgICByZXR1cm4g
ZXh0ZW5zaW9uLT5wcml2LT5leHRlbnNpb24tPmhhc0NvbnRlbnRNb2RpZmljYXRpb25SdWxlcygp
OwotfQotCi0jZWxzZSAvLyBFTkFCTEUoV0tfV0VCX0VYVEVOU0lPTlMpCi0KLWdkb3VibGUgd2Vi
a2l0X3dlYl9leHRlbnNpb25fZ2V0X21hbmlmZXN0X3ZlcnNpb24oV2ViS2l0V2ViRXh0ZW5zaW9u
KiBleHRlbnNpb24pCi17Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLWdib29sZWFuIHdlYmtpdF93ZWJf
ZXh0ZW5zaW9uX3N1cHBvcnRzX21hbmlmZXN0X3ZlcnNpb24oV2ViS2l0V2ViRXh0ZW5zaW9uKiBl
eHRlbnNpb24sIGdkb3VibGUgbWFuaWZlc3RWZXJzaW9uKQotewotICAgIHJldHVybiAwOwotfQot
Ci1jb25zdCBnY2hhciogd2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X2RlZmF1bHRfbG9jYWxlKFdl
YktpdFdlYkV4dGVuc2lvbiogZXh0ZW5zaW9uKQotewotICAgIHJldHVybiAiIjsKLX0KLQotY29u
c3QgZ2NoYXIqIHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9kaXNwbGF5X25hbWUoV2ViS2l0V2Vi
RXh0ZW5zaW9uKiBleHRlbnNpb24pCi17Ci0gICAgcmV0dXJuICIiOwotfQotCi1jb25zdCBnY2hh
ciogd2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X2Rpc3BsYXlfc2hvcnRfbmFtZShXZWJLaXRXZWJF
eHRlbnNpb24qIGV4dGVuc2lvbikKLXsKLSAgICByZXR1cm4gIiI7Ci19Ci0KLWNvbnN0IGdjaGFy
KiB3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfZGlzcGxheV92ZXJzaW9uKFdlYktpdFdlYkV4dGVu
c2lvbiogZXh0ZW5zaW9uKQotewotICAgIHJldHVybiAiIjsKLX0KLQotY29uc3QgZ2NoYXIqIHdl
YmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9kaXNwbGF5X2Rlc2NyaXB0aW9uKFdlYktpdFdlYkV4dGVu
c2lvbiogZXh0ZW5zaW9uKQotewotICAgIHJldHVybiAiIjsKLX0KLQotY29uc3QgZ2NoYXIqIHdl
YmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9kaXNwbGF5X2FjdGlvbl9sYWJlbChXZWJLaXRXZWJFeHRl
bnNpb24qIGV4dGVuc2lvbikKLXsKLSAgICByZXR1cm4gIiI7Ci19Ci0KLUdJY29uKiB3ZWJraXRf
d2ViX2V4dGVuc2lvbl9nZXRfaWNvbihXZWJLaXRXZWJFeHRlbnNpb24qIGV4dGVuc2lvbiwgZ2Rv
dWJsZSB3aWR0aCwgZ2RvdWJsZSBoZWlnaHQpCi17Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0K
LUdJY29uKiB3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfYWN0aW9uX2ljb24oV2ViS2l0V2ViRXh0
ZW5zaW9uKiBleHRlbnNpb24sIGdkb3VibGUgd2lkdGgsIGdkb3VibGUgaGVpZ2h0KQotewotICAg
IHJldHVybiBudWxscHRyOwotfQotCi1jb25zdCBnY2hhciogd2Via2l0X3dlYl9leHRlbnNpb25f
Z2V0X3ZlcnNpb24oV2ViS2l0V2ViRXh0ZW5zaW9uKiBleHRlbnNpb24pCi17Ci0gICAgcmV0dXJu
ICIiOwotfQotCi1jb25zdCBnY2hhciogY29uc3QgKiB3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRf
cmVxdWVzdGVkX3Blcm1pc3Npb25zKFdlYktpdFdlYkV4dGVuc2lvbiogZXh0ZW5zaW9uKQotewot
ICAgIHJldHVybiAiIjsKLX0KLQotY29uc3QgZ2NoYXIqIGNvbnN0ICogd2Via2l0X3dlYl9leHRl
bnNpb25fZ2V0X29wdGlvbmFsX3Blcm1pc3Npb25zKFdlYktpdFdlYkV4dGVuc2lvbiogZXh0ZW5z
aW9uKQotewotICAgIHJldHVybiAiIjsKLX0KLQotR0xpc3QqIHdlYmtpdF93ZWJfZXh0ZW5zaW9u
X2dldF9yZXF1ZXN0ZWRfcGVybWlzc2lvbl9tYXRjaF9wYXR0ZXJucyhXZWJLaXRXZWJFeHRlbnNp
b24qIGV4dGVuc2lvbikKLXsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQotR0xpc3QqIHdlYmtp
dF93ZWJfZXh0ZW5zaW9uX2dldF9vcHRpb25hbF9wZXJtaXNzaW9uX21hdGNoX3BhdHRlcm5zKFdl
YktpdFdlYkV4dGVuc2lvbiogZXh0ZW5zaW9uKQotewotICAgIHJldHVybiBudWxscHRyOwotfQot
Ci1HTGlzdCogd2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X2FsbF9yZXF1ZXN0ZWRfbWF0Y2hfcGF0
dGVybnMoV2ViS2l0V2ViRXh0ZW5zaW9uKiBleHRlbnNpb24pCi17Ci0gICAgcmV0dXJuIG51bGxw
dHI7Ci19Ci0KLWdib29sZWFuIHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9oYXNfYmFja2dyb3Vu
ZF9jb250ZW50KFdlYktpdFdlYkV4dGVuc2lvbiogZXh0ZW5zaW9uKQotewotICAgIHJldHVybiAw
OwotfQotCi1nYm9vbGVhbiB3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfaGFzX3NlcnZpY2Vfd29y
a2VyX2JhY2tncm91bmRfY29udGVudChXZWJLaXRXZWJFeHRlbnNpb24qIGV4dGVuc2lvbikKLXsK
LSAgICByZXR1cm4gMDsKLX0KLQotZ2Jvb2xlYW4gd2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X2hh
c19tb2R1bGFyX2JhY2tncm91bmRfY29udGVudChXZWJLaXRXZWJFeHRlbnNpb24qIGV4dGVuc2lv
bikKLXsKLSAgICByZXR1cm4gMDsKLX0KLQotZ2Jvb2xlYW4gd2Via2l0X3dlYl9leHRlbnNpb25f
Z2V0X2hhc19wZXJzaXN0ZW50X2JhY2tncm91bmRfY29udGVudChXZWJLaXRXZWJFeHRlbnNpb24q
IGV4dGVuc2lvbikKLXsKLSAgICByZXR1cm4gMDsKLX0KLQotZ2Jvb2xlYW4gd2Via2l0X3dlYl9l
eHRlbnNpb25fZ2V0X2hhc19pbmplY3RlZF9jb250ZW50KFdlYktpdFdlYkV4dGVuc2lvbiogZXh0
ZW5zaW9uKQotewotICAgIHJldHVybiAwOwotfQotCi1nYm9vbGVhbiB3ZWJraXRfd2ViX2V4dGVu
c2lvbl9nZXRfaGFzX29wdGlvbnNfcGFnZShXZWJLaXRXZWJFeHRlbnNpb24qIGV4dGVuc2lvbikK
LXsKLSAgICByZXR1cm4gMDsKLX0KLQotZ2Jvb2xlYW4gd2Via2l0X3dlYl9leHRlbnNpb25fZ2V0
X2hhc19vdmVycmlkZV9uZXdfdGFiX3BhZ2UoV2ViS2l0V2ViRXh0ZW5zaW9uKiBleHRlbnNpb24p
Ci17Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLWdib29sZWFuIHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dl
dF9oYXNfY29tbWFuZHMoV2ViS2l0V2ViRXh0ZW5zaW9uKiBleHRlbnNpb24pCi17Ci0gICAgcmV0
dXJuIDA7Ci19Ci0KLWdib29sZWFuIHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9oYXNfY29udGVu
dF9tb2RpZmljYXRpb25fcnVsZXMoV2ViS2l0V2ViRXh0ZW5zaW9uKiBleHRlbnNpb24pCi17Ci0g
ICAgcmV0dXJuIDA7Ci19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0tfV0VCX0VYVEVOU0lPTlMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJFeHRl
bnNpb24uaC5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkV4
dGVuc2lvbi5oLmluCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYTI4MjMzZDhkMjQu
LjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRXZWJFeHRlbnNpb24uaC5pbgorKysgL2Rldi9udWxsCkBAIC0xLDExMyArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDI0IElnYWxpYSBTLkwuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAq
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0g
KiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0g
KiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLUBBUElfU0lOR0xFX0hFQURFUl9DSEVD
S0AKLQotI2lmbmRlZiBXZWJLaXRXZWJFeHRlbnNpb25faAotI2RlZmluZSBXZWJLaXRXZWJFeHRl
bnNpb25faAotCi0jaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KLSNpbmNsdWRlIDxnaW8vZ2lvLmg+
Ci0jaW5jbHVkZSA8QEFQSV9JTkNMVURFX1BSRUZJWEAvV2ViS2l0RGVmaW5lcy5oPgotCi0jaW5j
bHVkZSAiV2ViS2l0V2ViRXh0ZW5zaW9uTWF0Y2hQYXR0ZXJuLmgiCi0KLUdfQkVHSU5fREVDTFMK
LQotI2RlZmluZSBXRUJLSVRfVFlQRV9XRUJfRVhURU5TSU9OICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICh3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfdHlwZSAoKSkKLQotV0VCS0lUX0RFQ0xB
UkVfRklOQUxfVFlQRSAoV2ViS2l0V2ViRXh0ZW5zaW9uLCB3ZWJraXRfd2ViX2V4dGVuc2lvbiwg
V0VCS0lULCBXRUJfRVhURU5TSU9OLCBHT2JqZWN0KQotCi1XRUJLSVRfQVBJIGdkb3VibGUKLXdl
YmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9tYW5pZmVzdF92ZXJzaW9uICAgICAgICAgICAgICAgICAg
ICAoV2ViS2l0V2ViRXh0ZW5zaW9uICpleHRlbnNpb24pOwotCi1XRUJLSVRfQVBJIGdib29sZWFu
Ci13ZWJraXRfd2ViX2V4dGVuc2lvbl9zdXBwb3J0c19tYW5pZmVzdF92ZXJzaW9uICAgICAgICAg
ICAgICAgKFdlYktpdFdlYkV4dGVuc2lvbiAqZXh0ZW5zaW9uLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZG91YmxlICAgICAg
ICAgICAgIG1hbmlmZXN0X3ZlcnNpb24pOwotCi1XRUJLSVRfQVBJIGNvbnN0IGdjaGFyICoKLXdl
YmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9kZWZhdWx0X2xvY2FsZSAgICAgICAgICAgICAgICAgICAg
ICAoV2ViS2l0V2ViRXh0ZW5zaW9uICpleHRlbnNpb24pOwotCi1XRUJLSVRfQVBJIGNvbnN0IGdj
aGFyICoKLXdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9kaXNwbGF5X25hbWUgICAgICAgICAgICAg
ICAgICAgICAgICAoV2ViS2l0V2ViRXh0ZW5zaW9uICpleHRlbnNpb24pOwotCi1XRUJLSVRfQVBJ
IGNvbnN0IGdjaGFyICoKLXdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9kaXNwbGF5X3Nob3J0X25h
bWUgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViRXh0ZW5zaW9uICpleHRlbnNpb24pOwotCi1X
RUJLSVRfQVBJIGNvbnN0IGdjaGFyICoKLXdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9kaXNwbGF5
X3ZlcnNpb24gICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViRXh0ZW5zaW9uICpleHRlbnNp
b24pOwotCi1XRUJLSVRfQVBJIGNvbnN0IGdjaGFyICoKLXdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dl
dF9kaXNwbGF5X2Rlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViRXh0ZW5zaW9u
ICpleHRlbnNpb24pOwotCi1XRUJLSVRfQVBJIGNvbnN0IGdjaGFyICoKLXdlYmtpdF93ZWJfZXh0
ZW5zaW9uX2dldF9kaXNwbGF5X2FjdGlvbl9sYWJlbCAgICAgICAgICAgICAgICAoV2ViS2l0V2Vi
RXh0ZW5zaW9uICpleHRlbnNpb24pOwotCi1XRUJLSVRfQVBJIEdJY29uICoKLXdlYmtpdF93ZWJf
ZXh0ZW5zaW9uX2dldF9pY29uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0
V2ViRXh0ZW5zaW9uICpleHRlbnNpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdkb3VibGUgICAgICAgICAgICAgd2lkdGgs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGdkb3VibGUgICAgICAgICAgICAgaGVpZ2h0KTsKLQotV0VCS0lUX0FQSSBHSWNvbiAq
Ci13ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfYWN0aW9uX2ljb24gICAgICAgICAgICAgICAgICAg
ICAgICAgKFdlYktpdFdlYkV4dGVuc2lvbiAqZXh0ZW5zaW9uLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZG91YmxlICAgICAg
ICAgICAgIHdpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBnZG91YmxlICAgICAgICAgICAgIGhlaWdodCk7Ci0KLVdFQktJ
VF9BUEkgY29uc3QgZ2NoYXIgKgotd2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X3ZlcnNpb24gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJFeHRlbnNpb24gKmV4dGVuc2lvbik7
Ci0KLVdFQktJVF9BUEkgY29uc3QgZ2NoYXIgKiBjb25zdCAqCi13ZWJraXRfd2ViX2V4dGVuc2lv
bl9nZXRfcmVxdWVzdGVkX3Blcm1pc3Npb25zICAgICAgICAgICAgICAgKFdlYktpdFdlYkV4dGVu
c2lvbiAqZXh0ZW5zaW9uKTsKLQotV0VCS0lUX0FQSSBjb25zdCBnY2hhciAqIGNvbnN0ICoKLXdl
YmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9vcHRpb25hbF9wZXJtaXNzaW9ucyAgICAgICAgICAgICAg
ICAoV2ViS2l0V2ViRXh0ZW5zaW9uICpleHRlbnNpb24pOwotCi1XRUJLSVRfQVBJIEdMaXN0ICoK
LXdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9yZXF1ZXN0ZWRfcGVybWlzc2lvbl9tYXRjaF9wYXR0
ZXJucyAoV2ViS2l0V2ViRXh0ZW5zaW9uICpleHRlbnNpb24pOwotCi1XRUJLSVRfQVBJIEdMaXN0
ICoKLXdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9vcHRpb25hbF9wZXJtaXNzaW9uX21hdGNoX3Bh
dHRlcm5zICAoV2ViS2l0V2ViRXh0ZW5zaW9uICpleHRlbnNpb24pOwotCi1XRUJLSVRfQVBJIEdM
aXN0ICoKLXdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9hbGxfcmVxdWVzdGVkX21hdGNoX3BhdHRl
cm5zICAgICAgICAoV2ViS2l0V2ViRXh0ZW5zaW9uICpleHRlbnNpb24pOwotCi1XRUJLSVRfQVBJ
IGdib29sZWFuCi13ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfaGFzX2JhY2tncm91bmRfY29udGVu
dCAgICAgICAgICAgICAgKFdlYktpdFdlYkV4dGVuc2lvbiAqZXh0ZW5zaW9uKTsKLQotV0VCS0lU
X0FQSSBnYm9vbGVhbgotd2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X2hhc19wZXJzaXN0ZW50X2Jh
Y2tncm91bmRfY29udGVudCAgIChXZWJLaXRXZWJFeHRlbnNpb24gKmV4dGVuc2lvbik7Ci0KLVdF
QktJVF9BUEkgZ2Jvb2xlYW4KLXdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9oYXNfaW5qZWN0ZWRf
Y29udGVudCAgICAgICAgICAgICAgICAoV2ViS2l0V2ViRXh0ZW5zaW9uICpleHRlbnNpb24pOwot
Ci1XRUJLSVRfQVBJIGdib29sZWFuCi13ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfaGFzX29wdGlv
bnNfcGFnZSAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYkV4dGVuc2lvbiAqZXh0ZW5zaW9u
KTsKLQotV0VCS0lUX0FQSSBnYm9vbGVhbgotd2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X2hhc19v
dmVycmlkZV9uZXdfdGFiX3BhZ2UgICAgICAgICAgIChXZWJLaXRXZWJFeHRlbnNpb24gKmV4dGVu
c2lvbik7Ci0KLVdFQktJVF9BUEkgZ2Jvb2xlYW4KLXdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9o
YXNfY29tbWFuZHMgICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViRXh0ZW5zaW9uICpl
eHRlbnNpb24pOwotCi1XRUJLSVRfQVBJIGdib29sZWFuCi13ZWJraXRfd2ViX2V4dGVuc2lvbl9n
ZXRfaGFzX2NvbnRlbnRfbW9kaWZpY2F0aW9uX3J1bGVzICAgICAgKFdlYktpdFdlYkV4dGVuc2lv
biAqZXh0ZW5zaW9uKTsKLQotR19FTkRfREVDTFMKLQotI2VuZGlmClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0V2ViRXh0ZW5zaW9uSW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdFdlYkV4dGVuc2lvbkludGVybmFsLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDMxNDcyODcxMWRlMy4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkV4dGVuc2lvbkludGVybmFsLmgKKysrIC9kZXYv
bnVsbApAQCAtMSwzNyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDI0IElnYWxpYSBT
LkwuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICov
Ci0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdLX1dFQl9FWFRFTlNJT05TKQotCi0jaW5j
bHVkZSAiV2ViS2l0V2ViRXh0ZW5zaW9uLmgiCi0jaW5jbHVkZSA8V2ViS2l0L1dLQmFzZS5oPgot
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
Ci0KLS8vIFByaXZhdGUgQVBJIHJlcXVpcmVkIGJ5IHRoZSB1bml0IHRlc3RzCi0KLXR5cGVkZWYg
c3RydWN0IF9XZWJLaXRXZWJFeHRlbnNpb24gV2ViS2l0V2ViRXh0ZW5zaW9uOwotCi1XS19FWFBP
UlQgV2ViS2l0V2ViRXh0ZW5zaW9uKiB3ZWJraXRXZWJFeHRlbnNpb25DcmVhdGUoSGFzaE1hcDxT
dHJpbmcsIEdSZWZQdHI8R0J5dGVzPj4mJiByZXNvdXJjZXMsIEdFcnJvcioqKTsKLVdLX0VYUE9S
VCBnYm9vbGVhbiB3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfaGFzX3NlcnZpY2Vfd29ya2VyX2Jh
Y2tncm91bmRfY29udGVudChXZWJLaXRXZWJFeHRlbnNpb24qKTsKLVdLX0VYUE9SVCBnYm9vbGVh
biB3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfaGFzX21vZHVsYXJfYmFja2dyb3VuZF9jb250ZW50
KFdlYktpdFdlYkV4dGVuc2lvbiopOwotCi0jZW5kaWYgLy8gRU5BQkxFKFdLX1dFQl9FWFRFTlNJ
T05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvd2Via2l0
LmguaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi93ZWJraXQuaC5pbgppbmRl
eCAyYjlmZmQ3OGFlZTEuLjc2M2NkNTVmN2FiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvd2Via2l0LmguaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvd2Via2l0LmguaW4KQEAgLTEyMyw3ICsxMjMsNiBAQAogI2luY2x1ZGUgPEBB
UElfSU5DTFVERV9QUkVGSVhAL1dlYktpdFZlcnNpb24uaD4KICNpbmNsdWRlIDxAQVBJX0lOQ0xV
REVfUFJFRklYQC9XZWJLaXRXZWJDb250ZXh0Lmg+CiAjaWYgUExBVEZPUk0oR1RLKQotI2luY2x1
ZGUgPEBBUElfSU5DTFVERV9QUkVGSVhAL1dlYktpdFdlYkV4dGVuc2lvbi5oPgogI2luY2x1ZGUg
PEBBUElfSU5DTFVERV9QUkVGSVhAL1dlYktpdFdlYkV4dGVuc2lvbk1hdGNoUGF0dGVybi5oPgog
I2VuZGlmCiAjaWYgUExBVEZPUk0oR1RLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvRXh0ZW5zaW9ucy9XZWJFeHRlbnNpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0V4dGVuc2lvbnMvV2ViRXh0ZW5zaW9uLmgKaW5kZXggNmU0NmQyOGQ0ZmRiLi45NDJkMTg4YmYy
ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0V4dGVuc2lvbnMvV2ViRXh0
ZW5zaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRXh0ZW5zaW9ucy9XZWJFeHRl
bnNpb24uaApAQCAtNzIsOCArNzIsNiBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAg
ICAgZXhwbGljaXQgV2ViRXh0ZW5zaW9uKE5TQnVuZGxlICphcHBFeHRlbnNpb25CdW5kbGUsIE5T
VVJMICpyZXNvdXJjZVVSTCwgUmVmUHRyPEFQSTo6RXJyb3I+Jik7CiAgICAgZXhwbGljaXQgV2Vi
RXh0ZW5zaW9uKE5TRGljdGlvbmFyeSAqbWFuaWZlc3QsIFJlc291cmNlcyYmID0geyB9KTsKLSNl
bHNlCi0gICAgZXhwbGljaXQgV2ViRXh0ZW5zaW9uKGNvbnN0IEpTT046OlZhbHVlJiBtYW5pZmVz
dCwgUmVzb3VyY2VzJiYgPSB7IH0pOwogI2VuZGlmCiAKICAgICBleHBsaWNpdCBXZWJFeHRlbnNp
b24oUmVzb3VyY2VzJiYgPSB7IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvRXh0ZW5zaW9ucy9ndGsvV2ViRXh0ZW5zaW9uR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0V4dGVuc2lvbnMvZ3RrL1dlYkV4dGVuc2lvbkd0ay5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDdjYmY2OWQ2ZGVkMi4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0V4dGVuc2lvbnMvZ3RrL1dlYkV4dGVuc2lvbkd0ay5jcHAKKysrIC9k
ZXYvbnVsbApAQCAtMSwyMDggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyNCBJZ2Fs
aWEgUy5MLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0jaW5jbHVkZSAiV2ViRXh0ZW5zaW9uLmgiCi0KLSNpZiBFTkFCTEUoV0tfV0VCX0VYVEVO
U0lPTlMpCi0KLSNpbmNsdWRlICJMb2dnaW5nLmgiCi0jaW5jbHVkZSAiV2ViRXh0ZW5zaW9uTG9j
YWxpemF0aW9uLmgiCi0jaW5jbHVkZSAiV2ViRXh0ZW5zaW9uVXRpbGl0aWVzLmgiCi0jaW5jbHVk
ZSA8V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+Ci0jaW5jbHVkZSA8Z3RrL2d0ay5oPgotI2lu
Y2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+Ci0jaW5jbHVkZSA8d3RmL0xhbmd1YWdlLmg+Ci0jaW5j
bHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgot
Ci1uYW1lc3BhY2UgV2ViS2l0IHsKLQotc3RhdGljIGNvbnN0ZXhwciBhdXRvIGdlbmVyYXRlZEJh
Y2tncm91bmRQYWdlRmlsZW5hbWUgPSAiX2dlbmVyYXRlZF9iYWNrZ3JvdW5kX3BhZ2UuaHRtbCJf
czsKLXN0YXRpYyBjb25zdGV4cHIgYXV0byBnZW5lcmF0ZWRCYWNrZ3JvdW5kU2VydmljZVdvcmtl
ckZpbGVuYW1lID0gIl9nZW5lcmF0ZWRfc2VydmljZV93b3JrZXIuanMiX3M7Ci0KLVdlYkV4dGVu
c2lvbjo6V2ViRXh0ZW5zaW9uKGNvbnN0IEpTT046OlZhbHVlJiBtYW5pZmVzdCwgUmVzb3VyY2Vz
JiYgcmVzb3VyY2VzKQotICAgIDogbV9tYW5pZmVzdEpTT04obWFuaWZlc3QpCi0gICAgLCBtX3Jl
c291cmNlcyhXVEZNb3ZlKHJlc291cmNlcykpCi17Ci0gICAgYXV0byBtYW5pZmVzdFN0cmluZyA9
IG1hbmlmZXN0LnRvSlNPTlN0cmluZygpOwotICAgIFJFTEVBU0VfQVNTRVJUKG1hbmlmZXN0U3Ry
aW5nKTsKLQotICAgIG1fcmVzb3VyY2VzLnNldCgibWFuaWZlc3QuanNvbiJfcywgbWFuaWZlc3RT
dHJpbmcpOwotfQotCi1SZWZQdHI8QVBJOjpEYXRhPiBXZWJFeHRlbnNpb246OnJlc291cmNlRGF0
YUZvclBhdGgoY29uc3QgU3RyaW5nJiBvcmlnaW5hbFBhdGgsIFJlZlB0cjxBUEk6OkVycm9yPiYg
b3V0RXJyb3IsIENhY2hlUmVzdWx0IGNhY2hlUmVzdWx0LCBTdXBwcmVzc05vdEZvdW5kRXJyb3Jz
IHN1cHByZXNzRXJyb3JzKQotewotICAgIEFTU0VSVChvcmlnaW5hbFBhdGgpOwotCi0gICAgb3V0
RXJyb3IgPSBudWxscHRyOwotCi0gICAgU3RyaW5nIHBhdGggPSBvcmlnaW5hbFBhdGg7Ci0KLSAg
ICAvLyBSZW1vdmUgbGVhZGluZyBzbGFzaCB0byBub3JtYWxpemUgdGhlIHBhdGggZm9yIGxvb2t1
cC9zdG9yYWdlIGluIHRoZSBjYWNoZSBkaWN0aW9uYXJ5LgotICAgIGlmIChwYXRoLnN0YXJ0c1dp
dGgoJy8nKSkKLSAgICAgICAgcGF0aCA9IHBhdGguc3Vic3RyaW5nKDEpOwotCi0gICAgaWYgKHBh
dGguc3RhcnRzV2l0aCgiZGF0YToiX3MpKSB7Ci0gICAgICAgIGlmIChhdXRvIGJhc2U2NFBvc2l0
aW9uID0gcGF0aC5maW5kKCI7YmFzZTY0LCJfcyk7IGJhc2U2NFBvc2l0aW9uICE9IG5vdEZvdW5k
KSB7Ci0gICAgICAgICAgICBhdXRvIGJhc2U2NFN0cmluZyA9IGJhc2U2NERlY29kZVRvU3RyaW5n
KHBhdGguc3Vic3RyaW5nKGJhc2U2NFBvc2l0aW9uKSk7Ci0gICAgICAgICAgICByZXR1cm4gQVBJ
OjpEYXRhOjpjcmVhdGUoYmFzZTY0U3RyaW5nLnV0ZjgoKS5zcGFuKCkpOwotICAgICAgICB9Ci0K
LSAgICAgICAgaWYgKGF1dG8gY29tbWFQb3NpdGlvbiA9IHBhdGguZmluZCgnLCcpOyBjb21tYVBv
c2l0aW9uICE9IG5vdEZvdW5kKSB7Ci0gICAgICAgICAgICBhdXRvIHVybEVuY29kZWRTdHJpbmcg
PSBwYXRoLnN1YnN0cmluZyhjb21tYVBvc2l0aW9uKTsKLSAgICAgICAgICAgIGF1dG8gZGVjb2Rl
ZFN0cmluZyA9IFVSTCh1cmxFbmNvZGVkU3RyaW5nKS5zdHJpbmcoKTsKLSAgICAgICAgICAgIHJl
dHVybiBBUEk6OkRhdGE6OmNyZWF0ZShkZWNvZGVkU3RyaW5nLnV0ZjgoKS5zcGFuKCkpOwotICAg
ICAgICB9Ci0KLSAgICAgICAgQVNTRVJUKHBhdGggPT0gImRhdGE6Il9zKTsKLSAgICAgICAgcmV0
dXJuIEFQSTo6RGF0YTo6Y3JlYXRlKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiB7IH0pOwotICAg
IH0KLQotICAgIGlmIChwYXRoID09IGdlbmVyYXRlZEJhY2tncm91bmRQYWdlRmlsZW5hbWUgfHwg
cGF0aCAgPT0gZ2VuZXJhdGVkQmFja2dyb3VuZFNlcnZpY2VXb3JrZXJGaWxlbmFtZSkKLSAgICAg
ICAgcmV0dXJuIEFQSTo6RGF0YTo6Y3JlYXRlKGdlbmVyYXRlZEJhY2tncm91bmRDb250ZW50KCku
dXRmOCgpLnNwYW4oKSk7Ci0KLSAgICBpZiAoYXV0byBlbnRyeSA9IG1fcmVzb3VyY2VzLmZpbmQo
cGF0aCk7IGVudHJ5ICE9IG1fcmVzb3VyY2VzLmVuZCgpKSB7Ci0gICAgICAgIHJldHVybiBXVEY6
OnN3aXRjaE9uKGVudHJ5LT52YWx1ZSwKLSAgICAgICAgICAgIFtdKGNvbnN0IFJlZjxBUEk6OkRh
dGE+JiBkYXRhKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGRhdGE7Ci0gICAgICAgICAgICB9
LAotICAgICAgICAgICAgW10oY29uc3QgU3RyaW5nJiBzdHJpbmcpIHsKLSAgICAgICAgICAgICAg
ICByZXR1cm4gQVBJOjpEYXRhOjpjcmVhdGUoc3RyaW5nLnV0ZjgoKS5zcGFuKCkpOwotICAgICAg
ICAgICAgfSk7Ci0gICAgfQotCi0gICAgYXV0byByZXNvdXJjZVVSTCA9IHJlc291cmNlRmlsZVVS
TEZvclBhdGgocGF0aCk7Ci0gICAgaWYgKCFyZXNvdXJjZVVSTC5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgaWYgKHN1cHByZXNzRXJyb3JzID09IFN1cHByZXNzTm90Rm91bmRFcnJvcnM6Ok5vKQotICAg
ICAgICAgICAgb3V0RXJyb3IgPSBjcmVhdGVFcnJvcihFcnJvcjo6UmVzb3VyY2VOb3RGb3VuZCwg
V0VCX1VJX0ZPUk1BVF9TVFJJTkcoIlVuYWJsZSB0byBmaW5kIFwiJXNcIiBpbiB0aGUgZXh0ZW5z
aW9u4oCZcyByZXNvdXJjZXMuIEl0IGlzIGFuIGludmFsaWQgcGF0aC4iLCAiV0tXZWJFeHRlbnNp
b25FcnJvclJlc291cmNlTm90Rm91bmQgZGVzY3JpcHRpb24gd2l0aCBpbnZhbGlkIGZpbGUgcGF0
aCIsIHBhdGgudXRmOCgpLmRhdGEoKSkpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9
Ci0KLSAgICBhdXRvIHJhd0RhdGEgPSBGaWxlU3lzdGVtOjpyZWFkRW50aXJlRmlsZSgocmVzb3Vy
Y2VVUkwpLmZpbGVTeXN0ZW1QYXRoKCkpOwotICAgIGlmICghcmF3RGF0YS5oYXNfdmFsdWUoKSkg
ewotICAgICAgICBpZiAoc3VwcHJlc3NFcnJvcnMgPT0gU3VwcHJlc3NOb3RGb3VuZEVycm9yczo6
Tm8pCi0gICAgICAgICAgICBvdXRFcnJvciA9IGNyZWF0ZUVycm9yKEVycm9yOjpSZXNvdXJjZU5v
dEZvdW5kLCBXRUJfVUlfRk9STUFUX1NUUklORygiVW5hYmxlIHRvIGZpbmQgXCIlc1wiIGluIHRo
ZSBleHRlbnNpb27igJlzIHJlc291cmNlcy4iLCAiV0tXZWJFeHRlbnNpb25FcnJvclJlc291cmNl
Tm90Rm91bmQgZGVzY3JpcHRpb24gd2l0aCBmaWxlIG5hbWUiLCBwYXRoLnV0ZjgoKS5kYXRhKCkp
KTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgYXV0byBkYXRhID0gQVBJ
OjpEYXRhOjpjcmVhdGUoKnJhd0RhdGEpOwotCi0gICAgaWYgKGNhY2hlUmVzdWx0ID09IENhY2hl
UmVzdWx0OjpZZXMpCi0gICAgICAgIG1fcmVzb3VyY2VzLnNldChwYXRoLCBkYXRhKTsKLQotICAg
IHJldHVybiBkYXRhOwotfQotCi12b2lkIFdlYkV4dGVuc2lvbjo6cmVjb3JkRXJyb3IoUmVmPEFQ
STo6RXJyb3I+IGVycm9yKQotCi17Ci0gICAgUkVMRUFTRV9MT0dfRVJST1IoRXh0ZW5zaW9ucywg
IkVycm9yIHJlY29yZGVkOiAlcyIsIGVycm9yLT5wbGF0Zm9ybUVycm9yKCkuc2FuaXRpemVkRGVz
Y3JpcHRpb24oKS51dGY4KCkuZGF0YSgpKTsKLQotICAgIC8vIE9ubHkgdGhlIGZpcnN0IG9jY3Vy
cmVuY2Ugb2YgZWFjaCBlcnJvciBpcyByZWNvcmRlZCBpbiB0aGUgYXJyYXkuIFRoaXMgcHJldmVu
dHMgZHVwbGljYXRlIGVycm9ycywKLSAgICAvLyBzdWNoIGFzIHJlcGVhdGVkICJyZXNvdXJjZSBu
b3QgZm91bmQiIGVycm9ycywgZnJvbSBiZWluZyBpbmNsdWRlZCBtdWx0aXBsZSB0aW1lcy4KLSAg
ICBpZiAobV9lcnJvcnMuY29udGFpbnMoZXJyb3IpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBt
X2Vycm9ycy5hcHBlbmQoZXJyb3IpOwotfQotCi1SZWZQdHI8V2ViQ29yZTo6SWNvbj4gV2ViRXh0
ZW5zaW9uOjppY29uRm9yUGF0aChjb25zdCBTdHJpbmcmIHBhdGgsIFJlZlB0cjxBUEk6OkVycm9y
PiYgb3V0RXJyb3IsIFdlYkNvcmU6OkZsb2F0U2l6ZSBzaXplRm9yUmVzaXppbmcsIHN0ZDo6b3B0
aW9uYWw8ZG91YmxlPiBpZGVhbERpc3BsYXlTY2FsZSkKLXsKLSAgICBBU1NFUlQocGF0aCk7Ci0K
LSAgICBhdXRvIGltYWdlRGF0YSA9IHJlc291cmNlRGF0YUZvclBhdGgocGF0aCwgb3V0RXJyb3Ip
OwotICAgIGlmIChpbWFnZURhdGEtPnNwYW4oKS5lbXB0eSgpKQotICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLQotICAgIGF1dG8gZ2ltYWdlQnl0ZXMgPSBhZG9wdEdSZWYoZ19ieXRlc19uZXcoaW1h
Z2VEYXRhLT5zcGFuKCkuZGF0YSgpLCBpbWFnZURhdGEtPnNpemUoKSkpOwotCi0gICAgaWYgKCFz
aXplRm9yUmVzaXppbmcuaXNaZXJvKCkpIHsKLSAgICAgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+
IGVycm9yOwotCi0gICAgICAgIGF1dG8gbG9hZGVyID0gYWRvcHRHUmVmKGdka19waXhidWZfbG9h
ZGVyX25ldygpKTsKLSAgICAgICAgZ2RrX3BpeGJ1Zl9sb2FkZXJfd3JpdGVfYnl0ZXMobG9hZGVy
LmdldCgpLCBnaW1hZ2VCeXRlcy5nZXQoKSwgJmVycm9yLm91dFB0cigpKTsKLSAgICAgICAgaWYg
KGVycm9yKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihFeHRlbnNpb25zLCAiVW5r
bm93biBlcnJvciB3aGVuIGxvYWRpbmcgYW4gaWNvbjogJXMiLCBlcnJvci5nZXQoKS0+bWVzc2Fn
ZSk7Ci0gICAgICAgICAgICBvdXRFcnJvciA9IGNyZWF0ZUVycm9yKEVycm9yOjpVbmtub3duKTsK
LSAgICAgICAgfQotICAgICAgICBpZiAoIWdka19waXhidWZfbG9hZGVyX2Nsb3NlKGxvYWRlci5n
ZXQoKSwgJmVycm9yLm91dFB0cigpKSAmJiBlcnJvcikgewotICAgICAgICAgICAgUkVMRUFTRV9M
T0dfRVJST1IoRXh0ZW5zaW9ucywgIlVua25vd24gZXJyb3Igd2hlbiBsb2FkaW5nIGFuIGljb246
ICVzIiwgZXJyb3IuZ2V0KCktPm1lc3NhZ2UpOwotICAgICAgICAgICAgb3V0RXJyb3IgPSBjcmVh
dGVFcnJvcihFcnJvcjo6VW5rbm93bik7Ci0gICAgICAgIH0KLSAgICAgICAgYXV0byBwaXhidWYg
PSBhZG9wdEdSZWYoZ2RrX3BpeGJ1Zl9jb3B5KGdka19waXhidWZfbG9hZGVyX2dldF9waXhidWYo
bG9hZGVyLmdldCgpKSkpOwotICAgICAgICBpZiAoIXBpeGJ1ZikKLSAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwotCi0gICAgICAgIC8vIFByb3BvcnRpb25hbGx5IHNjYWxlIHRoZSBzaXplCi0g
ICAgICAgIGF1dG8gb3JpZ2luYWxXaWR0aCA9IGdka19waXhidWZfZ2V0X3dpZHRoKHBpeGJ1Zi5n
ZXQoKSk7Ci0gICAgICAgIGF1dG8gb3JpZ2luYWxIZWlnaHQgPSBnZGtfcGl4YnVmX2dldF9oZWln
aHQocGl4YnVmLmdldCgpKTsKLSAgICAgICAgYXV0byBhc3BlY3RXaWR0aCA9IG9yaWdpbmFsV2lk
dGggPyAoc2l6ZUZvclJlc2l6aW5nLndpZHRoKCkgLyBvcmlnaW5hbFdpZHRoKSA6IDA7Ci0gICAg
ICAgIGF1dG8gYXNwZWN0SGVpZ2h0ID0gb3JpZ2luYWxIZWlnaHQgPyAoc2l6ZUZvclJlc2l6aW5n
LmhlaWdodCgpIC8gb3JpZ2luYWxIZWlnaHQpIDogMDsKLSAgICAgICAgYXV0byBhc3BlY3RSYXRp
byA9IHN0ZDo6bWluKGFzcGVjdFdpZHRoLCBhc3BlY3RIZWlnaHQpOwotCi0gICAgICAgIGdka19w
aXhidWZfc2NhbGVfc2ltcGxlKHBpeGJ1Zi5nZXQoKSwgb3JpZ2luYWxXaWR0aCAqIGFzcGVjdFJh
dGlvLCBvcmlnaW5hbEhlaWdodCAqIGFzcGVjdFJhdGlvLCBHREtfSU5URVJQX0JJTElORUFSKTsK
LQotICAgICAgICBnY2hhciogYnVmZmVyOwotICAgICAgICBnc2l6ZSBidWZmZXJTaXplOwotICAg
ICAgICBpZiAoIWdka19waXhidWZfc2F2ZV90b19idWZmZXIocGl4YnVmLmdldCgpLCAmYnVmZmVy
LCAmYnVmZmVyU2l6ZSwgInBuZyIsICZlcnJvci5vdXRQdHIoKSwgbnVsbHB0cikgJiYgZXJyb3Ip
IHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKEV4dGVuc2lvbnMsICJVbmtub3duIGVy
cm9yIHdoZW4gbG9hZGluZyBhbiBpY29uOiAlcyIsIGVycm9yLmdldCgpLT5tZXNzYWdlKTsKLSAg
ICAgICAgICAgIG91dEVycm9yID0gY3JlYXRlRXJyb3IoRXJyb3I6OlVua25vd24pOwotICAgICAg
ICB9Ci0KLSAgICAgICAgZ2ltYWdlQnl0ZXMgPSBhZG9wdEdSZWYoZ19ieXRlc19uZXdfdGFrZShi
dWZmZXIsIGJ1ZmZlclNpemUpKTsKLSAgICB9Ci0KLSAgICBHUmVmUHRyPEdJY29uPiBpbWFnZSA9
IGFkb3B0R1JlZihnX2J5dGVzX2ljb25fbmV3KGdpbWFnZUJ5dGVzLmdldCgpKSk7Ci0KLSAgICBy
ZXR1cm4gV2ViQ29yZTo6SWNvbjo6Y3JlYXRlKFdURk1vdmUoaW1hZ2UpKTsKLX0KLQotUmVmUHRy
PFdlYkNvcmU6Okljb24+IFdlYkV4dGVuc2lvbjo6YmVzdEljb24oUmVmUHRyPEpTT046Ok9iamVj
dD4gaWNvbnMsIFdlYkNvcmU6OkZsb2F0U2l6ZSBpZGVhbFNpemUsIE5PRVNDQVBFIGNvbnN0IEZ1
bmN0aW9uPHZvaWQoUmVmPEFQSTo6RXJyb3I+KT4mIHJlcG9ydEVycm9yKQotewotICAgIGlmICgh
aWNvbnMpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgYXV0byBpZGVhbFBvaW50U2l6
ZSA9IGlkZWFsU2l6ZS53aWR0aCgpID4gaWRlYWxTaXplLmhlaWdodCgpID8gaWRlYWxTaXplLndp
ZHRoKCkgOiBpZGVhbFNpemUuaGVpZ2h0KCk7Ci0gICAgYXV0byBiZXN0U2NhbGUgPSBsYXJnZXN0
RGlzcGxheVNjYWxlKCk7Ci0KLSAgICBhdXRvIHBpeGVsU2l6ZSA9IGlkZWFsUG9pbnRTaXplICog
YmVzdFNjYWxlOwotICAgIGF1dG8gaWNvblBhdGggPSBwYXRoRm9yQmVzdEltYWdlKCppY29ucywg
cGl4ZWxTaXplKTsKLSAgICBpZiAoaWNvblBhdGguaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLQotICAgIFJlZlB0cjxBUEk6OkVycm9yPiByZXNvdXJjZUVycm9yOwotICAgIGlm
IChSZWZQdHIgaW1hZ2UgPSBpY29uRm9yUGF0aChpY29uUGF0aCwgcmVzb3VyY2VFcnJvciwgaWRl
YWxTaXplKSkKLSAgICAgICAgcmV0dXJuIGltYWdlOwotCi0gICAgaWYgKHJlcG9ydEVycm9yICYm
IHJlc291cmNlRXJyb3IpCi0gICAgICAgIHJlcG9ydEVycm9yKCpyZXNvdXJjZUVycm9yKTsKLQot
ICAgIHJldHVybiBudWxscHRyOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlm
IC8vIEVOQUJMRShXS19XRUJfRVhURU5TSU9OUykKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0V2ViRXh0ZW5zaW9uLmNwcCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0V2ViRXh0ZW5zaW9uLmNw
cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTYwYjZlMDA0NjM5Li4wMDAwMDAwMDAw
MDAKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRX
ZWJFeHRlbnNpb24uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTEyMiArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDI0IElnYWxpYSwgUy5MLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIg
R2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0g
KiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKFdLX1dFQl9FWFRFTlNJT05TKQotCi0jaW5j
bHVkZSAiVGVzdE1haW4uaCIKLSNpbmNsdWRlICJXZWJFeHRlbnNpb25VdGlsaXRpZXMuaCIKLSNp
bmNsdWRlIDxXZWJLaXRXZWJFeHRlbnNpb25JbnRlcm5hbC5oPgotI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgotI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0hhc2guaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQot
dXNpbmcgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEk7Ci0KLXN0YXRpYyBHUmVmUHRyPEdCeXRlcz4g
Y3JlYXRlR0J5dGVzKGNvbnN0IGdjaGFyKiBzdHJpbmcpCi17Ci0gICAgcmV0dXJuIGFkb3B0R1Jl
ZihnX2J5dGVzX25ld19zdGF0aWMoc3RyaW5nLCBzdHJsZW4oc3RyaW5nKSkpOwotfQotCi1zdGF0
aWMgdm9pZCB0ZXN0RGlzcGxheVN0cmluZ1BhcnNpbmcoVGVzdCosIGdjb25zdHBvaW50ZXIpCi17
Ci0gICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwotICAgIGF1dG8gcGFyc2UgPSBbJl0o
Y29uc3QgZ2NoYXIqIG1hbmlmZXN0U3RyaW5nKSB7Ci0gICAgICAgIHJldHVybiBhZG9wdEdSZWYo
d2Via2l0V2ViRXh0ZW5zaW9uQ3JlYXRlKHsgeyAibWFuaWZlc3QuanNvbiJfcywgY3JlYXRlR0J5
dGVzKG1hbmlmZXN0U3RyaW5nKSB9IH0sICZlcnJvci5vdXRQdHIoKSkpOwotICAgIH07Ci0KLSAg
ICBHUmVmUHRyPFdlYktpdFdlYkV4dGVuc2lvbj4gZXh0ZW5zaW9uID0gcGFyc2UoInsgXCJtYW5p
ZmVzdF92ZXJzaW9uXCI6IDIgfSIpOwotCi0gICAgZ19hc3NlcnRfbnVsbCh3ZWJraXRfd2ViX2V4
dGVuc2lvbl9nZXRfZGlzcGxheV9uYW1lKGV4dGVuc2lvbi5nZXQoKSkpOwotICAgIGdfYXNzZXJ0
X251bGwod2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X2Rpc3BsYXlfc2hvcnRfbmFtZShleHRlbnNp
b24uZ2V0KCkpKTsKLSAgICBnX2Fzc2VydF9udWxsKHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9k
aXNwbGF5X3ZlcnNpb24oZXh0ZW5zaW9uLmdldCgpKSk7Ci0gICAgZ19hc3NlcnRfbnVsbCh3ZWJr
aXRfd2ViX2V4dGVuc2lvbl9nZXRfZGlzcGxheV9kZXNjcmlwdGlvbihleHRlbnNpb24uZ2V0KCkp
KTsKLSAgICBnX2Fzc2VydF9udWxsKHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF92ZXJzaW9uKGV4
dGVuc2lvbi5nZXQoKSkpOwotICAgIGdfYXNzZXJ0X2Vycm9yKGVycm9yLmdldCgpLCBXRUJLSVRf
V0VCX0VYVEVOU0lPTl9FUlJPUiwgV0VCS0lUX1dFQl9FWFRFTlNJT05fRVJST1JfSU5WQUxJRF9N
QU5JRkVTVF9FTlRSWSk7Ci0KLSAgICBleHRlbnNpb24gPSBwYXJzZSgieyBcIm1hbmlmZXN0X3Zl
cnNpb25cIjogMiwgXCJuYW1lXCI6IFwiVGVzdFwiLCBcInZlcnNpb25cIjogXCIxLjBcIiwgXCJk
ZXNjcmlwdGlvblwiOiBcIlRlc3QgZGVzY3JpcHRpb25cIiB9Iik7Ci0KLSAgICBnX2Fzc2VydF9j
bXBzdHIod2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X2Rpc3BsYXlfbmFtZShleHRlbnNpb24uZ2V0
KCkpLCA9PSwgIlRlc3QiKTsKLSAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3dlYl9leHRlbnNp
b25fZ2V0X2Rpc3BsYXlfc2hvcnRfbmFtZShleHRlbnNpb24uZ2V0KCkpLCA9PSwgICJUZXN0Iik7
Ci0gICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9kaXNwbGF5X3Zl
cnNpb24oZXh0ZW5zaW9uLmdldCgpKSwgPT0sICAiMS4wIik7Ci0gICAgZ19hc3NlcnRfY21wc3Ry
KHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9kaXNwbGF5X2Rlc2NyaXB0aW9uKGV4dGVuc2lvbi5n
ZXQoKSksID09LCAgIlRlc3QgZGVzY3JpcHRpb24iKTsKLSAgICBnX2Fzc2VydF9jbXBzdHIod2Vi
a2l0X3dlYl9leHRlbnNpb25fZ2V0X3ZlcnNpb24oZXh0ZW5zaW9uLmdldCgpKSwgPT0sICAiMS4w
Iik7Ci0gICAgZ19hc3NlcnRfY21waW50KHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9tYW5pZmVz
dF92ZXJzaW9uKGV4dGVuc2lvbi5nZXQoKSksID09LCAyKTsKLSAgICBnX2Fzc2VydF9ub19lcnJv
cihlcnJvci5nZXQoKSk7Ci0KLSAgICBleHRlbnNpb24gPSBwYXJzZSgieyBcIm1hbmlmZXN0X3Zl
cnNpb25cIjogMywgXCJuYW1lXCI6IFwiVGVzdFwiLCBcInZlcnNpb25cIjogXCIxLjBcIiwgXCJk
ZXNjcmlwdGlvblwiOiBcIlRlc3QgZGVzY3JpcHRpb25cIiB9Iik7Ci0KLSAgICBnX2Fzc2VydF9j
bXBzdHIod2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X2Rpc3BsYXlfbmFtZShleHRlbnNpb24uZ2V0
KCkpLCA9PSwgIlRlc3QiKTsKLSAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3dlYl9leHRlbnNp
b25fZ2V0X2Rpc3BsYXlfc2hvcnRfbmFtZShleHRlbnNpb24uZ2V0KCkpLCA9PSwgICJUZXN0Iik7
Ci0gICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9kaXNwbGF5X3Zl
cnNpb24oZXh0ZW5zaW9uLmdldCgpKSwgPT0sICAiMS4wIik7Ci0gICAgZ19hc3NlcnRfY21wc3Ry
KHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9kaXNwbGF5X2Rlc2NyaXB0aW9uKGV4dGVuc2lvbi5n
ZXQoKSksID09LCAgIlRlc3QgZGVzY3JpcHRpb24iKTsKLSAgICBnX2Fzc2VydF9jbXBzdHIod2Vi
a2l0X3dlYl9leHRlbnNpb25fZ2V0X3ZlcnNpb24oZXh0ZW5zaW9uLmdldCgpKSwgPT0sICAiMS4w
Iik7Ci0gICAgZ19hc3NlcnRfY21waW50KHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9tYW5pZmVz
dF92ZXJzaW9uKGV4dGVuc2lvbi5nZXQoKSksID09LCAzKTsKLSAgICBnX2Fzc2VydF9ub19lcnJv
cihlcnJvci5nZXQoKSk7Ci0KLSAgICBleHRlbnNpb24gPSBwYXJzZSgieyBcIm1hbmlmZXN0X3Zl
cnNpb25cIjogMiwgXCJuYW1lXCI6IFwiVGVzdFwiLCBcInNob3J0X25hbWVcIjogXCJUc3RcIiwg
XCJ2ZXJzaW9uXCI6IFwiMS4wXCIsIFwidmVyc2lvbl9uYW1lXCI6IFwiMS4wIEZpbmFsXCIsIFwi
ZGVzY3JpcHRpb25cIjogXCJUZXN0IGRlc2NyaXB0aW9uXCIgfSIpOwotCi0gICAgZ19hc3NlcnRf
Y21wc3RyKHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9kaXNwbGF5X25hbWUoZXh0ZW5zaW9uLmdl
dCgpKSwgPT0sICJUZXN0Iik7Ci0gICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF93ZWJfZXh0ZW5z
aW9uX2dldF9kaXNwbGF5X3Nob3J0X25hbWUoZXh0ZW5zaW9uLmdldCgpKSwgPT0sICAiVHN0Iik7
Ci0gICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9kaXNwbGF5X3Zl
cnNpb24oZXh0ZW5zaW9uLmdldCgpKSwgPT0sICAiMS4wIEZpbmFsIik7Ci0gICAgZ19hc3NlcnRf
Y21wc3RyKHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9kaXNwbGF5X2Rlc2NyaXB0aW9uKGV4dGVu
c2lvbi5nZXQoKSksID09LCAgIlRlc3QgZGVzY3JpcHRpb24iKTsKLSAgICBnX2Fzc2VydF9jbXBz
dHIod2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X3ZlcnNpb24oZXh0ZW5zaW9uLmdldCgpKSwgPT0s
ICAiMS4wIik7Ci0gICAgZ19hc3NlcnRfbm9fZXJyb3IoZXJyb3IuZ2V0KCkpOwotfQotCi1zdGF0
aWMgdm9pZCB0ZXN0RGVmYXVsdExvY2FsZVBhcnNpbmcoVGVzdCosIGdjb25zdHBvaW50ZXIpCi17
Ci0gICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwotICAgIGF1dG8gcGFyc2UgPSBbJl0o
Y29uc3QgZ2NoYXIqIG1hbmlmZXN0U3RyaW5nLCBjb25zdCBnY2hhciogbG9jYWxlRmlsZSkgewot
ICAgICAgICByZXR1cm4gYWRvcHRHUmVmKHdlYmtpdFdlYkV4dGVuc2lvbkNyZWF0ZSh7IHsgIm1h
bmlmZXN0Lmpzb24iX3MsIGNyZWF0ZUdCeXRlcyhtYW5pZmVzdFN0cmluZykgfSwgeyBTdHJpbmc6
OmZyb21VVEY4KGxvY2FsZUZpbGUpLCBjcmVhdGVHQnl0ZXMoInt9IikgfSB9LCAmZXJyb3Iub3V0
UHRyKCkpKTsKLSAgICB9OwotCi0gICAgLy8gVGVzdCBubyBkZWZhdWx0IGxvY2FsZQotICAgIEdS
ZWZQdHI8V2ViS2l0V2ViRXh0ZW5zaW9uPiBleHRlbnNpb24gPSBhZG9wdEdSZWYod2Via2l0V2Vi
RXh0ZW5zaW9uQ3JlYXRlKHsgeyAibWFuaWZlc3QuanNvbiJfcywgY3JlYXRlR0J5dGVzKCJ7IFwi
bWFuaWZlc3RfdmVyc2lvblwiOiAyLCBcIm5hbWVcIjogXCJUZXN0XCIsIFwidmVyc2lvblwiOiBc
IjEuMFwiLCBcImRlc2NyaXB0aW9uXCI6IFwiVGVzdCBkZXNjcmlwdGlvblwiIH0iKSB9IH0sICZl
cnJvci5vdXRQdHIoKSkpOwotICAgIGdfYXNzZXJ0X25vX2Vycm9yKGVycm9yLmdldCgpKTsKLSAg
ICBnX2Fzc2VydF9udWxsKHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9kZWZhdWx0X2xvY2FsZShl
eHRlbnNpb24uZ2V0KCkpKTsKLQotICAgIC8vIFRlc3Qgd2l0aCBsYW5ndWFnZSBsb2NhbGUgZmls
ZSBleGlzdGluZwotICAgIGV4dGVuc2lvbiA9IHBhcnNlKCJ7IFwibWFuaWZlc3RfdmVyc2lvblwi
OiAyLCBcImRlZmF1bHRfbG9jYWxlXCI6IFwiZW5cIiwgXCJuYW1lXCI6IFwiVGVzdFwiLCBcInZl
cnNpb25cIjogXCIxLjBcIiwgXCJkZXNjcmlwdGlvblwiOiBcIlRlc3QgZGVzY3JpcHRpb25cIiB9
IiwgIl9sb2NhbGVzL2VuL21lc3NhZ2VzLmpzb24iKTsKLSAgICBhdXRvKiBkZWZhdWx0TG9jYWxl
ID0gd2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X2RlZmF1bHRfbG9jYWxlKGV4dGVuc2lvbi5nZXQo
KSk7Ci0gICAgZ19hc3NlcnRfbm9fZXJyb3IoZXJyb3IuZ2V0KCkpOwotICAgIGdfYXNzZXJ0X2Nt
cHN0cih3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfZGVmYXVsdF9sb2NhbGUoZXh0ZW5zaW9uLmdl
dCgpKSwgPT0sICJlbiIpOwotCi0gICAgLy8gVGVzdCB3aXRoIGxhbmd1YWdlIGxvY2FsZSBmaWxl
IGV4aXN0aW5nCi0gICAgZXh0ZW5zaW9uID0gcGFyc2UoInsgXCJtYW5pZmVzdF92ZXJzaW9uXCI6
IDIsIFwiZGVmYXVsdF9sb2NhbGVcIjogXCJlbl9VU1wiLCBcIm5hbWVcIjogXCJUZXN0XCIsIFwi
dmVyc2lvblwiOiBcIjEuMFwiLCBcImRlc2NyaXB0aW9uXCI6IFwiVGVzdCBkZXNjcmlwdGlvblwi
IH0iLCAiX2xvY2FsZXMvZW5fVVMvbWVzc2FnZXMuanNvbiIpOwotICAgIGRlZmF1bHRMb2NhbGUg
PSB3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfZGVmYXVsdF9sb2NhbGUoZXh0ZW5zaW9uLmdldCgp
KTsKLSAgICBnX2Fzc2VydF9ub19lcnJvcihlcnJvci5nZXQoKSk7Ci0gICAgZ19hc3NlcnRfY21w
c3RyKHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9kZWZhdWx0X2xvY2FsZShleHRlbnNpb24uZ2V0
KCkpLCA9PSwgImVuX1VTIik7Ci0KLSAgICAvLyBUZXN0IHdpdGggbGVzcyBzcGVjaWZpYyBsb2Nh
bGUgZmlsZSBleGlzdGluZwotICAgIGV4dGVuc2lvbiA9IHBhcnNlKCJ7IFwibWFuaWZlc3RfdmVy
c2lvblwiOiAyLCBcImRlZmF1bHRfbG9jYWxlXCI6IFwiZW5fVVNcIiwgXCJuYW1lXCI6IFwiVGVz
dFwiLCBcInZlcnNpb25cIjogXCIxLjBcIiwgXCJkZXNjcmlwdGlvblwiOiBcIlRlc3QgZGVzY3Jp
cHRpb25cIiB9IiwgIl9sb2NhbGVzL2VuL21lc3NhZ2VzLmpzb24iKTsKLSAgICBkZWZhdWx0TG9j
YWxlID0gd2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X2RlZmF1bHRfbG9jYWxlKGV4dGVuc2lvbi5n
ZXQoKSk7Ci0gICAgZ19hc3NlcnRfZXJyb3IoZXJyb3IuZ2V0KCksIFdFQktJVF9XRUJfRVhURU5T
SU9OX0VSUk9SLCBXRUJLSVRfV0VCX0VYVEVOU0lPTl9FUlJPUl9JTlZBTElEX01BTklGRVNUX0VO
VFJZKTsKLSAgICBnX2Fzc2VydF9udWxsKGRlZmF1bHRMb2NhbGUpOwotCi0gICAgLy8gVGVzdCB3
aXRoIHdyb25nIGxvY2FsZSBmaWxlIGV4aXN0aW5nCi0gICAgZXh0ZW5zaW9uID0gcGFyc2UoInsg
XCJtYW5pZmVzdF92ZXJzaW9uXCI6IDIsIFwiZGVmYXVsdF9sb2NhbGVcIjogXCJlbl9VU1wiLCBc
Im5hbWVcIjogXCJUZXN0XCIsIFwidmVyc2lvblwiOiBcIjEuMFwiLCBcImRlc2NyaXB0aW9uXCI6
IFwiVGVzdCBkZXNjcmlwdGlvblwiIH0iLCAiX2xvY2FsZXMvemhfQ04vbWVzc2FnZXMuanNvbiIp
OwotICAgIGRlZmF1bHRMb2NhbGUgPSB3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfZGVmYXVsdF9s
b2NhbGUoZXh0ZW5zaW9uLmdldCgpKTsKLSAgICBnX2Fzc2VydF9lcnJvcihlcnJvci5nZXQoKSwg
V0VCS0lUX1dFQl9FWFRFTlNJT05fRVJST1IsIFdFQktJVF9XRUJfRVhURU5TSU9OX0VSUk9SX0lO
VkFMSURfTUFOSUZFU1RfRU5UUlkpOwotICAgIGdfYXNzZXJ0X251bGwoZGVmYXVsdExvY2FsZSk7
Ci0KLSAgICAvLyBUZXN0IHdpdGggbm8gbG9jYWxlIGZpbGUgZXhpc3RpbmcKLSAgICBleHRlbnNp
b24gPSBwYXJzZSgieyBcIm1hbmlmZXN0X3ZlcnNpb25cIjogMiwgXCJkZWZhdWx0X2xvY2FsZVwi
OiBcImVuX1VTXCIsIFwibmFtZVwiOiBcIlRlc3RcIiwgXCJ2ZXJzaW9uXCI6IFwiMS4wXCIsIFwi
ZGVzY3JpcHRpb25cIjogXCJUZXN0IGRlc2NyaXB0aW9uXCIgfSIsICIiKTsKLSAgICBkZWZhdWx0
TG9jYWxlID0gd2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X2RlZmF1bHRfbG9jYWxlKGV4dGVuc2lv
bi5nZXQoKSk7Ci0gICAgZ19hc3NlcnRfZXJyb3IoZXJyb3IuZ2V0KCksIFdFQktJVF9XRUJfRVhU
RU5TSU9OX0VSUk9SLCBXRUJLSVRfV0VCX0VYVEVOU0lPTl9FUlJPUl9JTlZBTElEX01BTklGRVNU
X0VOVFJZKTsKLSAgICBnX2Fzc2VydF9udWxsKGRlZmF1bHRMb2NhbGUpOwotfQotCi1zdGF0aWMg
dm9pZCB0ZXN0RGlzcGxheVN0cmluZ1BhcnNpbmdXaXRoTG9jYWxpemF0aW9uKFRlc3QqLCBnY29u
c3Rwb2ludGVyKQotewotICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKLQotICAgIGNv
bnN0IGdjaGFyKiBtYW5pZmVzdCA9Ci0gICAgICAgICJ7IgotICAgICAgICAiXCJtYW5pZmVzdF92
ZXJzaW9uXCI6IDIsIgotICAgICAgICAiXCJkZWZhdWx0X2xvY2FsZVwiOiBcImVuX1VTXCIsIgot
ICAgICAgICAiXCJuYW1lXCI6IFwiX19NU0dfZGVmYXVsdF9uYW1lX19cIiwiCi0gICAgICAgICJc
InNob3J0X25hbWVcIjogXCJfX01TR19yZWdpb25hbF9uYW1lX19cIiwiCi0gICAgICAgICJcInZl
cnNpb25cIjogXCIxLjBcIiwiCi0gICAgICAgICJcImRlc2NyaXB0aW9uXCI6IFwiX19NU0dfZGVm
YXVsdF9kZXNjcmlwdGlvbl9fXCIiCi0gICAgICAgICJ9IjsKLQotICAgIGNvbnN0IGdjaGFyKiBk
ZWZhdWx0TWVzc2FnZXMgPQotICAgICAgICAieyIKLSAgICAgICAgIlwiZGVmYXVsdF9uYW1lXCI6
IHsiCi0gICAgICAgICJcIm1lc3NhZ2VcIjogXCJEZWZhdWx0IFN0cmluZ1wiLCIKLSAgICAgICAg
IlwiZGVzY3JpcHRpb25cIjogXCJUaGUgdGVzdCBuYW1lLlwiIgotICAgICAgICAifSwiCi0gICAg
ICAgICJcImRlZmF1bHRfZGVzY3JpcHRpb25cIjogeyIKLSAgICAgICAgIlwibWVzc2FnZVwiOiBc
IkRlZmF1bHQgRGVzY3JpcHRpb25cIiwiCi0gICAgICAgICJcImRlc2NyaXB0aW9uXCI6IFwiVGhl
IHRlc3QgZGVzY3JpcHRpb24uXCIiCi0gICAgICAgICJ9IgotICAgICAgICAifSI7Ci0KLSAgICBj
b25zdCBnY2hhciogcmVnaW9uYWxNZXNzYWdlcyA9Ci0gICAgICAgICJ7IgotICAgICAgICAiXCJy
ZWdpb25hbF9uYW1lXCI6IHsiCi0gICAgICAgICJcIm1lc3NhZ2VcIjogXCJSZWdpb25hbCBTdHJp
bmdcIiwiCi0gICAgICAgICJcImRlc2NyaXB0aW9uXCI6IFwiVGhlIHJlZ2lvbmFsIG5hbWUuXCIi
Ci0gICAgICAgICJ9IgotICAgICAgICAifSI7Ci0KLSAgICBIYXNoTWFwPFN0cmluZywgR1JlZlB0
cjxHQnl0ZXM+PiByZXNvdXJjZXMgPSB7Ci0gICAgICAgIHsgIm1hbmlmZXN0Lmpzb24iX3MsIGNy
ZWF0ZUdCeXRlcyhtYW5pZmVzdCkgfSwKLSAgICAgICAgeyAiX2xvY2FsZXMvZW4vbWVzc2FnZXMu
anNvbiJfcywgY3JlYXRlR0J5dGVzKGRlZmF1bHRNZXNzYWdlcykgfSwKLSAgICAgICAgeyAiX2xv
Y2FsZXMvZW5fVVMvbWVzc2FnZXMuanNvbiJfcywgY3JlYXRlR0J5dGVzKHJlZ2lvbmFsTWVzc2Fn
ZXMpIH0KLSAgICB9OwotCi0gICAgR1JlZlB0cjxXZWJLaXRXZWJFeHRlbnNpb24+IGV4dGVuc2lv
biA9IGFkb3B0R1JlZih3ZWJraXRXZWJFeHRlbnNpb25DcmVhdGUoV1RGTW92ZShyZXNvdXJjZXMp
LCAmZXJyb3Iub3V0UHRyKCkpKTsKLQotICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfd2ViX2V4
dGVuc2lvbl9nZXRfZGlzcGxheV9uYW1lKGV4dGVuc2lvbi5nZXQoKSksID09LCAiRGVmYXVsdCBT
dHJpbmciKTsKLSAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X2Rp
c3BsYXlfc2hvcnRfbmFtZShleHRlbnNpb24uZ2V0KCkpLCA9PSwgICJSZWdpb25hbCBTdHJpbmci
KTsKLSAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X2Rpc3BsYXlf
dmVyc2lvbihleHRlbnNpb24uZ2V0KCkpLCA9PSwgICIxLjAiKTsKLSAgICBnX2Fzc2VydF9jbXBz
dHIod2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X2Rpc3BsYXlfZGVzY3JpcHRpb24oZXh0ZW5zaW9u
LmdldCgpKSwgPT0sICAiRGVmYXVsdCBEZXNjcmlwdGlvbiIpOwotICAgIGdfYXNzZXJ0X2NtcHN0
cih3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfdmVyc2lvbihleHRlbnNpb24uZ2V0KCkpLCA9PSwg
ICIxLjAiKTsKLSAgICBnX2Fzc2VydF9ub19lcnJvcihlcnJvci5nZXQoKSk7Ci0KLSAgICBtYW5p
ZmVzdCA9Ci0gICAgICAgICJ7IgotICAgICAgICAiXCJtYW5pZmVzdF92ZXJzaW9uXCI6IDIsIgot
ICAgICAgICAiXCJkZWZhdWx0X2xvY2FsZVwiOiBcImVuX1VTXCIsIgotICAgICAgICAiXCJuYW1l
XCI6IFwiX19NU0dfZGVmYXVsdF9uYW1lX19cIiwiCi0gICAgICAgICJcInNob3J0X25hbWVcIjog
XCJfX01TR19kZWZhdWx0X25hbWVfX1wiLCIKLSAgICAgICAgIlwidmVyc2lvblwiOiBcIjEuMFwi
LCIKLSAgICAgICAgIlwiZGVzY3JpcHRpb25cIjogXCJfX01TR19kZWZhdWx0X2Rlc2NyaXB0aW9u
X19cIiIKLSAgICAgICAgIn0iOwotICAgIHJlc291cmNlcyA9IHsKLSAgICAgICAgeyAibWFuaWZl
c3QuanNvbiJfcywgY3JlYXRlR0J5dGVzKG1hbmlmZXN0KSB9LAotICAgICAgICB7ICJfbG9jYWxl
cy9lbi9tZXNzYWdlcy5qc29uIl9zLCBjcmVhdGVHQnl0ZXMoZGVmYXVsdE1lc3NhZ2VzKSB9LAot
ICAgICAgICB7ICJfbG9jYWxlcy9lbl9VUy9tZXNzYWdlcy5qc29uIl9zLCBjcmVhdGVHQnl0ZXMo
cmVnaW9uYWxNZXNzYWdlcykgfQotICAgIH07Ci0KLSAgICBleHRlbnNpb24gPSBhZG9wdEdSZWYo
d2Via2l0V2ViRXh0ZW5zaW9uQ3JlYXRlKFdURk1vdmUocmVzb3VyY2VzKSwgJmVycm9yLm91dFB0
cigpKSk7Ci0KLSAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X2Rp
c3BsYXlfc2hvcnRfbmFtZShleHRlbnNpb24uZ2V0KCkpLCA9PSwgICJEZWZhdWx0IFN0cmluZyIp
OwotICAgIGdfYXNzZXJ0X25vX2Vycm9yKGVycm9yLmdldCgpKTsKLX0KLQotc3RhdGljIHZvaWQg
dGVzdEFjdGlvblBhcnNpbmcoVGVzdCosIGdjb25zdHBvaW50ZXIpCi17Ci0gICAgR1VuaXF1ZU91
dFB0cjxHRXJyb3I+IGVycm9yOwotICAgIGF1dG8gcGFyc2UgPSBbJl0oY29uc3QgZ2NoYXIqIG1h
bmlmZXN0U3RyaW5nKSB7Ci0gICAgICAgIHJldHVybiBhZG9wdEdSZWYod2Via2l0V2ViRXh0ZW5z
aW9uQ3JlYXRlKHsgeyAibWFuaWZlc3QuanNvbiJfcywgY3JlYXRlR0J5dGVzKG1hbmlmZXN0U3Ry
aW5nKSB9IH0sICZlcnJvci5vdXRQdHIoKSkpOwotICAgIH07Ci0gICAgYXV0byBwYXJzZVdpdGhJ
Y29uID0gWyZdKGNvbnN0IGdjaGFyKiBtYW5pZmVzdFN0cmluZywgR1JlZlB0cjxHQnl0ZXM+IGlt
YWdlRGF0YSkgewotICAgICAgICByZXR1cm4gYWRvcHRHUmVmKHdlYmtpdFdlYkV4dGVuc2lvbkNy
ZWF0ZSh7Ci0gICAgICAgICAgICB7ICJtYW5pZmVzdC5qc29uIl9zLCBjcmVhdGVHQnl0ZXMobWFu
aWZlc3RTdHJpbmcpIH0sCi0gICAgICAgICAgICB7ICJ0ZXN0LnBuZyJfcywgaW1hZ2VEYXRhIH0K
LSAgICAgICAgfSwgJmVycm9yLm91dFB0cigpKSk7Ci0gICAgfTsKLQotICAgIEdSZWZQdHI8V2Vi
S2l0V2ViRXh0ZW5zaW9uPiBleHRlbnNpb24gPSBwYXJzZSgieyBcIm1hbmlmZXN0X3ZlcnNpb25c
IjogMiwgXCJuYW1lXCI6IFwiVGVzdFwiLCBcInZlcnNpb25cIjogXCIxLjBcIiwgXCJkZXNjcmlw
dGlvblwiOiBcIlRlc3QgZGVzY3JpcHRpb25cIiB9Iik7Ci0gICAgZ19hc3NlcnRfbm9fZXJyb3Io
ZXJyb3IuZ2V0KCkpOwotICAgIGdfYXNzZXJ0X251bGwod2Via2l0X3dlYl9leHRlbnNpb25fZ2V0
X2Rpc3BsYXlfYWN0aW9uX2xhYmVsKGV4dGVuc2lvbi5nZXQoKSkpOwotICAgIGdfYXNzZXJ0X251
bGwod2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X2FjdGlvbl9pY29uKGV4dGVuc2lvbi5nZXQoKSwg
MTYsIDE2KSk7Ci0KLSAgICBleHRlbnNpb24gPSBwYXJzZSgieyBcIm1hbmlmZXN0X3ZlcnNpb25c
IjogMiwgXCJicm93c2VyX2FjdGlvblwiOiB7fSwgXCJuYW1lXCI6IFwiVGVzdFwiLCBcInZlcnNp
b25cIjogXCIxLjBcIiwgXCJkZXNjcmlwdGlvblwiOiBcIlRlc3QgZGVzY3JpcHRpb25cIiB9Iik7
Ci0gICAgZ19hc3NlcnRfbm9fZXJyb3IoZXJyb3IuZ2V0KCkpOwotICAgIGdfYXNzZXJ0X251bGwo
d2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X2Rpc3BsYXlfYWN0aW9uX2xhYmVsKGV4dGVuc2lvbi5n
ZXQoKSkpOwotICAgIGdfYXNzZXJ0X251bGwod2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X2FjdGlv
bl9pY29uKGV4dGVuc2lvbi5nZXQoKSwgMTYsIDE2KSk7Ci0KLSAgICBleHRlbnNpb24gPSBwYXJz
ZSgieyBcIm1hbmlmZXN0X3ZlcnNpb25cIjogMiwgXCJwYWdlX2FjdGlvblwiOiB7fSwgXCJuYW1l
XCI6IFwiVGVzdFwiLCBcInZlcnNpb25cIjogXCIxLjBcIiwgXCJkZXNjcmlwdGlvblwiOiBcIlRl
c3QgZGVzY3JpcHRpb25cIiB9Iik7Ci0gICAgZ19hc3NlcnRfbm9fZXJyb3IoZXJyb3IuZ2V0KCkp
OwotICAgIGdfYXNzZXJ0X251bGwod2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X2Rpc3BsYXlfYWN0
aW9uX2xhYmVsKGV4dGVuc2lvbi5nZXQoKSkpOwotICAgIGdfYXNzZXJ0X251bGwod2Via2l0X3dl
Yl9leHRlbnNpb25fZ2V0X2FjdGlvbl9pY29uKGV4dGVuc2lvbi5nZXQoKSwgMTYsIDE2KSk7Ci0K
LSAgICBleHRlbnNpb24gPSBwYXJzZSgieyBcIm1hbmlmZXN0X3ZlcnNpb25cIjogMiwgXCJicm93
c2VyX2FjdGlvblwiOiB7fSwgXCJwYWdlX2FjdGlvblwiOiB7fSwgXCJuYW1lXCI6IFwiVGVzdFwi
LCBcInZlcnNpb25cIjogXCIxLjBcIiwgXCJkZXNjcmlwdGlvblwiOiBcIlRlc3QgZGVzY3JpcHRp
b25cIiB9Iik7Ci0gICAgZ19hc3NlcnRfbm9fZXJyb3IoZXJyb3IuZ2V0KCkpOwotICAgIGdfYXNz
ZXJ0X251bGwod2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X2Rpc3BsYXlfYWN0aW9uX2xhYmVsKGV4
dGVuc2lvbi5nZXQoKSkpOwotICAgIGdfYXNzZXJ0X251bGwod2Via2l0X3dlYl9leHRlbnNpb25f
Z2V0X2FjdGlvbl9pY29uKGV4dGVuc2lvbi5nZXQoKSwgMTYsIDE2KSk7Ci0KLSAgICBleHRlbnNp
b24gPSBwYXJzZSgieyBcIm1hbmlmZXN0X3ZlcnNpb25cIjogMiwgXCJicm93c2VyX2FjdGlvblwi
OiB7IFwiZGVmYXVsdF90aXRsZVwiOiBcIkJ1dHRvbiBUaXRsZVwiIH0sIFwibmFtZVwiOiBcIlRl
c3RcIiwgXCJ2ZXJzaW9uXCI6IFwiMS4wXCIsIFwiZGVzY3JpcHRpb25cIjogXCJUZXN0IGRlc2Ny
aXB0aW9uXCIgfSIpOwotICAgIGdfYXNzZXJ0X25vX2Vycm9yKGVycm9yLmdldCgpKTsKLSAgICBn
X2Fzc2VydF9jbXBzdHIod2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X2Rpc3BsYXlfYWN0aW9uX2xh
YmVsKGV4dGVuc2lvbi5nZXQoKSksID09LCAiQnV0dG9uIFRpdGxlIik7Ci0gICAgZ19hc3NlcnRf
bnVsbCh3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfYWN0aW9uX2ljb24oZXh0ZW5zaW9uLmdldCgp
LCAxNiwgMTYpKTsKLQotICAgIGV4dGVuc2lvbiA9IHBhcnNlKCJ7IFwibWFuaWZlc3RfdmVyc2lv
blwiOiAyLCBcInBhZ2VfYWN0aW9uXCI6IHsgXCJkZWZhdWx0X3RpdGxlXCI6IFwiQnV0dG9uIFRp
dGxlXCIgfSwgXCJuYW1lXCI6IFwiVGVzdFwiLCBcInZlcnNpb25cIjogXCIxLjBcIiwgXCJkZXNj
cmlwdGlvblwiOiBcIlRlc3QgZGVzY3JpcHRpb25cIiB9Iik7Ci0gICAgZ19hc3NlcnRfbm9fZXJy
b3IoZXJyb3IuZ2V0KCkpOwotICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfd2ViX2V4dGVuc2lv
bl9nZXRfZGlzcGxheV9hY3Rpb25fbGFiZWwoZXh0ZW5zaW9uLmdldCgpKSwgPT0sICJCdXR0b24g
VGl0bGUiKTsKLSAgICBnX2Fzc2VydF9udWxsKHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9hY3Rp
b25faWNvbihleHRlbnNpb24uZ2V0KCksIDE2LCAxNikpOwotCi0gICAgLy8gYGFjdGlvbmAgc2hv
dWxkIGJlIGlnbm9yZWQgaW4gbWFuaWZlc3QgdjIKLSAgICBleHRlbnNpb24gPSBwYXJzZSgieyBc
Im1hbmlmZXN0X3ZlcnNpb25cIjogMiwgXCJhY3Rpb25cIjogeyBcImRlZmF1bHRfdGl0bGVcIjog
XCJCdXR0b24gVGl0bGVcIiB9LCBcIm5hbWVcIjogXCJUZXN0XCIsIFwidmVyc2lvblwiOiBcIjEu
MFwiLCBcImRlc2NyaXB0aW9uXCI6IFwiVGVzdCBkZXNjcmlwdGlvblwiIH0iKTsKLSAgICBnX2Fz
c2VydF9ub19lcnJvcihlcnJvci5nZXQoKSk7Ci0gICAgZ19hc3NlcnRfbnVsbCh3ZWJraXRfd2Vi
X2V4dGVuc2lvbl9nZXRfZGlzcGxheV9hY3Rpb25fbGFiZWwoZXh0ZW5zaW9uLmdldCgpKSk7Ci0g
ICAgZ19hc3NlcnRfbnVsbCh3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfYWN0aW9uX2ljb24oZXh0
ZW5zaW9uLmdldCgpLCAxNiwgMTYpKTsKLQotICAgIC8vIG1hbmlmZXN0IHYzIHNob3VsZCBsb29r
IGZvciBhbiBgYWN0aW9uYCBrZXkKLSAgICBleHRlbnNpb24gPSBwYXJzZSgieyBcIm1hbmlmZXN0
X3ZlcnNpb25cIjogMywgXCJhY3Rpb25cIjogeyBcImRlZmF1bHRfdGl0bGVcIjogXCJCdXR0b24g
VGl0bGVcIiB9LCBcIm5hbWVcIjogXCJUZXN0XCIsIFwidmVyc2lvblwiOiBcIjEuMFwiLCBcImRl
c2NyaXB0aW9uXCI6IFwiVGVzdCBkZXNjcmlwdGlvblwiIH0iKTsKLSAgICBnX2Fzc2VydF9ub19l
cnJvcihlcnJvci5nZXQoKSk7Ci0gICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF93ZWJfZXh0ZW5z
aW9uX2dldF9kaXNwbGF5X2FjdGlvbl9sYWJlbChleHRlbnNpb24uZ2V0KCkpLCA9PSwgIkJ1dHRv
biBUaXRsZSIpOwotICAgIGdfYXNzZXJ0X251bGwod2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X2Fj
dGlvbl9pY29uKGV4dGVuc2lvbi5nZXQoKSwgMTYsIDE2KSk7Ci0KLSAgICAvLyBNYW5pZmVzdCB2
MyBzaG91bGQgbmV2ZXIgZmluZCBhIGJyb3dzZXJfYWN0aW9uLgotICAgIGV4dGVuc2lvbiA9IHBh
cnNlKCJ7IFwibWFuaWZlc3RfdmVyc2lvblwiOiAzLCBcImJyb3dzZXJfYWN0aW9uXCI6IHsgXCJk
ZWZhdWx0X3RpdGxlXCI6IFwiQnV0dG9uIFRpdGxlXCIgfSwgXCJuYW1lXCI6IFwiVGVzdFwiLCBc
InZlcnNpb25cIjogXCIxLjBcIiwgXCJkZXNjcmlwdGlvblwiOiBcIlRlc3QgZGVzY3JpcHRpb25c
IiB9Iik7Ci0gICAgZ19hc3NlcnRfbm9fZXJyb3IoZXJyb3IuZ2V0KCkpOwotICAgIGdfYXNzZXJ0
X251bGwod2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X2Rpc3BsYXlfYWN0aW9uX2xhYmVsKGV4dGVu
c2lvbi5nZXQoKSkpOwotICAgIGdfYXNzZXJ0X251bGwod2Via2l0X3dlYl9leHRlbnNpb25fZ2V0
X2FjdGlvbl9pY29uKGV4dGVuc2lvbi5nZXQoKSwgMTYsIDE2KSk7Ci0KLSAgICAvLyBPciBhIHBh
Z2UgYWN0aW9uCi0gICAgZXh0ZW5zaW9uID0gcGFyc2UoInsgXCJtYW5pZmVzdF92ZXJzaW9uXCI6
IDMsIFwicGFnZV9hY3Rpb25cIjogeyBcImRlZmF1bHRfdGl0bGVcIjogXCJCdXR0b24gVGl0bGVc
IiB9LCBcIm5hbWVcIjogXCJUZXN0XCIsIFwidmVyc2lvblwiOiBcIjEuMFwiLCBcImRlc2NyaXB0
aW9uXCI6IFwiVGVzdCBkZXNjcmlwdGlvblwiIH0iKTsKLSAgICBnX2Fzc2VydF9ub19lcnJvcihl
cnJvci5nZXQoKSk7Ci0gICAgZ19hc3NlcnRfbnVsbCh3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRf
ZGlzcGxheV9hY3Rpb25fbGFiZWwoZXh0ZW5zaW9uLmdldCgpKSk7Ci0gICAgZ19hc3NlcnRfbnVs
bCh3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfYWN0aW9uX2ljb24oZXh0ZW5zaW9uLmdldCgpLCAx
NiwgMTYpKTsKLQotICAgIGV4dGVuc2lvbiA9IHBhcnNlKCJ7IFwibWFuaWZlc3RfdmVyc2lvblwi
OiAzLCBcImFjdGlvblwiOiB7IH0sIFwibmFtZVwiOiBcIlRlc3RcIiwgXCJ2ZXJzaW9uXCI6IFwi
MS4wXCIsIFwiZGVzY3JpcHRpb25cIjogXCJUZXN0IGRlc2NyaXB0aW9uXCIgfSIpOwotICAgIGdf
YXNzZXJ0X25vX2Vycm9yKGVycm9yLmdldCgpKTsKLSAgICBnX2Fzc2VydF9udWxsKHdlYmtpdF93
ZWJfZXh0ZW5zaW9uX2dldF9kaXNwbGF5X2FjdGlvbl9sYWJlbChleHRlbnNpb24uZ2V0KCkpKTsK
LSAgICBnX2Fzc2VydF9udWxsKHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9hY3Rpb25faWNvbihl
eHRlbnNpb24uZ2V0KCksIDE2LCAxNikpOwotCi0gICAgR1JlZlB0cjxHQnl0ZXM+IGltYWdlRGF0
YSA9IFV0aWw6Om1ha2VQTkdEYXRhKDE2LCAxNiwgMHgwMDgwMDApOwotCi0gICAgZXh0ZW5zaW9u
ID0gcGFyc2VXaXRoSWNvbigieyBcIm1hbmlmZXN0X3ZlcnNpb25cIjogMywgXCJhY3Rpb25cIjog
eyBcImRlZmF1bHRfaWNvblwiOiBcInRlc3QucG5nXCIsIFwiZGVmYXVsdF90aXRsZVwiOiBcIkJ1
dHRvbiBUaXRsZVwiIH0sIFwibmFtZVwiOiBcIlRlc3RcIiwgXCJ2ZXJzaW9uXCI6IFwiMS4wXCIs
IFwiZGVzY3JpcHRpb25cIjogXCJUZXN0IGRlc2NyaXB0aW9uXCIgfSIsIGltYWdlRGF0YSk7Ci0g
ICAgZ19hc3NlcnRfbm9fZXJyb3IoZXJyb3IuZ2V0KCkpOwotICAgIGdfYXNzZXJ0X2NtcHN0cih3
ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfZGlzcGxheV9hY3Rpb25fbGFiZWwoZXh0ZW5zaW9uLmdl
dCgpKSwgPT0sICJCdXR0b24gVGl0bGUiKTsKLSAgICBnX2Fzc2VydF9ub25udWxsKHdlYmtpdF93
ZWJfZXh0ZW5zaW9uX2dldF9hY3Rpb25faWNvbihleHRlbnNpb24uZ2V0KCksIDE2LCAxNikpOwot
Ci0gICAgZXh0ZW5zaW9uID0gcGFyc2VXaXRoSWNvbigieyBcIm1hbmlmZXN0X3ZlcnNpb25cIjog
MywgXCJhY3Rpb25cIjogeyBcImRlZmF1bHRfaWNvblwiOiB7IFwiMTZcIjogXCJ0ZXN0LnBuZ1wi
IH0sIFwiZGVmYXVsdF90aXRsZVwiOiBcIkJ1dHRvbiBUaXRsZVwiIH0sIFwibmFtZVwiOiBcIlRl
c3RcIiwgXCJ2ZXJzaW9uXCI6IFwiMS4wXCIsIFwiZGVzY3JpcHRpb25cIjogXCJUZXN0IGRlc2Ny
aXB0aW9uXCIgfSIsIGltYWdlRGF0YSk7Ci0gICAgZ19hc3NlcnRfbm9fZXJyb3IoZXJyb3IuZ2V0
KCkpOwotICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfZGlzcGxh
eV9hY3Rpb25fbGFiZWwoZXh0ZW5zaW9uLmdldCgpKSwgPT0sICJCdXR0b24gVGl0bGUiKTsKLSAg
ICBnX2Fzc2VydF9ub25udWxsKHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9hY3Rpb25faWNvbihl
eHRlbnNpb24uZ2V0KCksIDE2LCAxNikpOwotCi0gICAgZXh0ZW5zaW9uID0gcGFyc2VXaXRoSWNv
bigieyBcIm1hbmlmZXN0X3ZlcnNpb25cIjogMywgXCJpY29uc1wiOiB7IFwiMTZcIjogXCJ0ZXN0
LnBuZ1wiIH0sIFwiYWN0aW9uXCI6IHsgXCJkZWZhdWx0X3RpdGxlXCI6IFwiQnV0dG9uIFRpdGxl
XCIgfSwgXCJuYW1lXCI6IFwiVGVzdFwiLCBcInZlcnNpb25cIjogXCIxLjBcIiwgXCJkZXNjcmlw
dGlvblwiOiBcIlRlc3QgZGVzY3JpcHRpb25cIiB9IiwgaW1hZ2VEYXRhKTsKLSAgICBnX2Fzc2Vy
dF9ub19lcnJvcihlcnJvci5nZXQoKSk7Ci0gICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF93ZWJf
ZXh0ZW5zaW9uX2dldF9kaXNwbGF5X2FjdGlvbl9sYWJlbChleHRlbnNpb24uZ2V0KCkpLCA9PSwg
IkJ1dHRvbiBUaXRsZSIpOwotICAgIGdfYXNzZXJ0X25vbm51bGwod2Via2l0X3dlYl9leHRlbnNp
b25fZ2V0X2FjdGlvbl9pY29uKGV4dGVuc2lvbi5nZXQoKSwgMTYsIDE2KSk7Ci19Ci0KLXN0YXRp
YyB2b2lkIHRlc3RDb250ZW50U2NyaXB0c1BhcnNpbmcoVGVzdCosIGdjb25zdHBvaW50ZXIpCi17
Ci0gICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwotICAgIGF1dG8gcGFyc2UgPSBbJl0o
Y29uc3QgZ2NoYXIqIG1hbmlmZXN0U3RyaW5nKSB7Ci0gICAgICAgIHJldHVybiBhZG9wdEdSZWYo
d2Via2l0V2ViRXh0ZW5zaW9uQ3JlYXRlKHsgeyAibWFuaWZlc3QuanNvbiJfcywgY3JlYXRlR0J5
dGVzKG1hbmlmZXN0U3RyaW5nKSB9IH0sICZlcnJvci5vdXRQdHIoKSkpOwotICAgIH07Ci0KLSAg
ICBHUmVmUHRyPFdlYktpdFdlYkV4dGVuc2lvbj4gZXh0ZW5zaW9uID0gcGFyc2UoInsgXCJjb250
ZW50X3NjcmlwdHNcIjogW3sgXCJqc1wiOiBbXCJcdGVzdC5qc1wiLCAxLCBcIlwiXSwgXCJjc3Nc
IjogW2ZhbHNlLCBcInRlc3QuY3NzXCIsIFwiXCJdLCBcIm1hdGNoZXNcIjogW1wiKjovLyovXCJd
IH1dLCBcIm1hbmlmZXN0X3ZlcnNpb25cIjogMiwgXCJuYW1lXCI6IFwiVGVzdFwiLCBcInZlcnNp
b25cIjogXCIxLjBcIiwgXCJkZXNjcmlwdGlvblwiOiBcIlRlc3RcIiB9Iik7Ci0gICAgZ19hc3Nl
cnRfbm9fZXJyb3IoZXJyb3IuZ2V0KCkpOwotICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X3dlYl9l
eHRlbnNpb25fZ2V0X2hhc19pbmplY3RlZF9jb250ZW50KGV4dGVuc2lvbi5nZXQoKSkpOwotCi0g
ICAgZXh0ZW5zaW9uID0gcGFyc2UoInsgXCJjb250ZW50X3NjcmlwdHNcIjogW3sgXCJqc1wiOiBb
XCJcdGVzdC5qc1wiLCAxLCBcIlwiXSwgXCJjc3NcIjogW2ZhbHNlLCBcInRlc3QuY3NzXCIsIFwi
XCJdLCBcIm1hdGNoZXNcIjogW1wiKjovLyovXCJdLCBcImV4Y2x1ZGVfbWF0Y2hlc1wiOiBbXCIq
Oi8vKi5leGFtcGxlLmNvbS9cIl0gfV0sIFwibWFuaWZlc3RfdmVyc2lvblwiOiAyLCBcIm5hbWVc
IjogXCJUZXN0XCIsIFwidmVyc2lvblwiOiBcIjEuMFwiLCBcImRlc2NyaXB0aW9uXCI6IFwiVGVz
dFwiIH0iKTsKLSAgICBnX2Fzc2VydF9ub19lcnJvcihlcnJvci5nZXQoKSk7Ci0gICAgZ19hc3Nl
cnRfdHJ1ZSh3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfaGFzX2luamVjdGVkX2NvbnRlbnQoZXh0
ZW5zaW9uLmdldCgpKSk7Ci0KLSAgICBleHRlbnNpb24gPSBwYXJzZSgieyBcImNvbnRlbnRfc2Ny
aXB0c1wiOiBbeyBcImpzXCI6IFtcIlx0ZXN0LmpzXCIsIDEsIFwiXCJdLCBcImNzc1wiOiBbZmFs
c2UsIFwidGVzdC5jc3NcIiwgXCJcIl0sIFwibWF0Y2hlc1wiOiBbXCIqOi8vKi5leGFtcGxlLmNv
bS9cIl0gfV0sIFwibWFuaWZlc3RfdmVyc2lvblwiOiAyLCBcIm5hbWVcIjogXCJUZXN0XCIsIFwi
dmVyc2lvblwiOiBcIjEuMFwiLCBcImRlc2NyaXB0aW9uXCI6IFwiVGVzdFwiIH0iKTsKLSAgICBn
X2Fzc2VydF9ub19lcnJvcihlcnJvci5nZXQoKSk7Ci0gICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRf
d2ViX2V4dGVuc2lvbl9nZXRfaGFzX2luamVjdGVkX2NvbnRlbnQoZXh0ZW5zaW9uLmdldCgpKSk7
Ci0KLSAgICBleHRlbnNpb24gPSBwYXJzZSgieyBcImNvbnRlbnRfc2NyaXB0c1wiOiBbeyBcImpz
XCI6IFtcIlx0ZXN0LmpzXCJdLCBcIm1hdGNoZXNcIjogW1wiKjovLyouZXhhbXBsZS5jb20vXCJd
LCBcIndvcmxkXCI6IFwiTUFJTlwiIH1dLCBcIm1hbmlmZXN0X3ZlcnNpb25cIjogMiwgXCJuYW1l
XCI6IFwiVGVzdFwiLCBcInZlcnNpb25cIjogXCIxLjBcIiwgXCJkZXNjcmlwdGlvblwiOiBcIlRl
c3RcIiB9Iik7Ci0gICAgZ19hc3NlcnRfbm9fZXJyb3IoZXJyb3IuZ2V0KCkpOwotICAgIGdfYXNz
ZXJ0X3RydWUod2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X2hhc19pbmplY3RlZF9jb250ZW50KGV4
dGVuc2lvbi5nZXQoKSkpOwotCi0gICAgZXh0ZW5zaW9uID0gcGFyc2UoInsgXCJjb250ZW50X3Nj
cmlwdHNcIjogW3sgXCJjc3NcIjogW2ZhbHNlLCBcInRlc3QuY3NzXCIsIFwiXCJdLCBcIm1hdGNo
ZXNcIjogW1wiKjovLyouZXhhbXBsZS5jb20vXCJdLCBcImNzc19vcmlnaW5cIjogXCJ1c2VyXCIg
fV0sIFwibWFuaWZlc3RfdmVyc2lvblwiOiAyLCBcIm5hbWVcIjogXCJUZXN0XCIsIFwidmVyc2lv
blwiOiBcIjEuMFwiLCBcImRlc2NyaXB0aW9uXCI6IFwiVGVzdFwiIH0iKTsKLSAgICBnX2Fzc2Vy
dF9ub19lcnJvcihlcnJvci5nZXQoKSk7Ci0gICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfd2ViX2V4
dGVuc2lvbl9nZXRfaGFzX2luamVjdGVkX2NvbnRlbnQoZXh0ZW5zaW9uLmdldCgpKSk7Ci0KLSAg
ICBleHRlbnNpb24gPSBwYXJzZSgieyBcImNvbnRlbnRfc2NyaXB0c1wiOiBbeyBcImNzc1wiOiBb
ZmFsc2UsIFwidGVzdC5jc3NcIiwgXCJcIl0sIFwibWF0Y2hlc1wiOiBbXCIqOi8vKi5leGFtcGxl
LmNvbS9cIl0sIFwiY3NzX29yaWdpblwiOiBcImF1dGhvclwiIH1dLCBcIm1hbmlmZXN0X3ZlcnNp
b25cIjogMiwgXCJuYW1lXCI6IFwiVGVzdFwiLCBcInZlcnNpb25cIjogXCIxLjBcIiwgXCJkZXNj
cmlwdGlvblwiOiBcIlRlc3RcIiB9Iik7Ci0gICAgZ19hc3NlcnRfbm9fZXJyb3IoZXJyb3IuZ2V0
KCkpOwotICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X2hhc19pbmpl
Y3RlZF9jb250ZW50KGV4dGVuc2lvbi5nZXQoKSkpOwotCi0gICAgLy8gSW52YWxpZCBjYXNlcwot
Ci0gICAgZXh0ZW5zaW9uID0gcGFyc2UoInsgXCJjb250ZW50X3NjcmlwdHNcIjogW10sIFwibWFu
aWZlc3RfdmVyc2lvblwiOiAyLCBcIm5hbWVcIjogXCJUZXN0XCIsIFwidmVyc2lvblwiOiBcIjEu
MFwiLCBcImRlc2NyaXB0aW9uXCI6IFwiVGVzdFwiIH0iKTsKLSAgICBnX2Fzc2VydF9lcnJvcihl
cnJvci5nZXQoKSwgV0VCS0lUX1dFQl9FWFRFTlNJT05fRVJST1IsIFdFQktJVF9XRUJfRVhURU5T
SU9OX0VSUk9SX0lOVkFMSURfTUFOSUZFU1RfRU5UUlkpOwotICAgIGdfYXNzZXJ0X2ZhbHNlKHdl
YmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9oYXNfaW5qZWN0ZWRfY29udGVudChleHRlbnNpb24uZ2V0
KCkpKTsKLQotICAgIGV4dGVuc2lvbiA9IHBhcnNlKCJ7IFwiY29udGVudF9zY3JpcHRzXCI6IHsg
XCJpbnZhbGlkXCI6IHRydWUgfSwgXCJtYW5pZmVzdF92ZXJzaW9uXCI6IDIsIFwibmFtZVwiOiBc
IlRlc3RcIiwgXCJ2ZXJzaW9uXCI6IFwiMS4wXCIsIFwiZGVzY3JpcHRpb25cIjogXCJUZXN0XCIg
fSIpOwotICAgIGdfYXNzZXJ0X2Vycm9yKGVycm9yLmdldCgpLCBXRUJLSVRfV0VCX0VYVEVOU0lP
Tl9FUlJPUiwgV0VCS0lUX1dFQl9FWFRFTlNJT05fRVJST1JfSU5WQUxJRF9NQU5JRkVTVF9FTlRS
WSk7Ci0gICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X2hhc19pbmpl
Y3RlZF9jb250ZW50KGV4dGVuc2lvbi5nZXQoKSkpOwotCi0gICAgZXh0ZW5zaW9uID0gcGFyc2Uo
InsgXCJjb250ZW50X3NjcmlwdHNcIjogW3sgXCJqc1wiOiBbIFwidGVzdC5qc1wiIF0sIFwibWF0
Y2hlc1wiOiBbXSB9XSwgXCJtYW5pZmVzdF92ZXJzaW9uXCI6IDIsIFwibmFtZVwiOiBcIlRlc3Rc
IiwgXCJ2ZXJzaW9uXCI6IFwiMS4wXCIsIFwiZGVzY3JpcHRpb25cIjogXCJUZXN0XCIgfSIpOwot
ICAgIGdfYXNzZXJ0X2Vycm9yKGVycm9yLmdldCgpLCBXRUJLSVRfV0VCX0VYVEVOU0lPTl9FUlJP
UiwgV0VCS0lUX1dFQl9FWFRFTlNJT05fRVJST1JfSU5WQUxJRF9NQU5JRkVTVF9FTlRSWSk7Ci0g
ICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X2hhc19pbmplY3RlZF9j
b250ZW50KGV4dGVuc2lvbi5nZXQoKSkpOwotCi0gICAgLy8gTm9uLWNyaXRpY2FsIGludmFsaWQg
Y2FzZXMKLQotICAgIGV4dGVuc2lvbiA9IHBhcnNlKCJ7IFwiY29udGVudF9zY3JpcHRzXCI6IFt7
IFwianNcIjogWyBcInRlc3QuanNcIiBdLCBcIm1hdGNoZXNcIjogW1wiKjovLyouZXhhbXBsZS5j
b20vXCJdLCBcInJ1bl9hdFwiOiBcImludmFsaWRcIiB9XSwgXCJtYW5pZmVzdF92ZXJzaW9uXCI6
IDIsIFwibmFtZVwiOiBcIlRlc3RcIiwgXCJ2ZXJzaW9uXCI6IFwiMS4wXCIsIFwiZGVzY3JpcHRp
b25cIjogXCJUZXN0XCIgfSIpOwotICAgIGdfYXNzZXJ0X2Vycm9yKGVycm9yLmdldCgpLCBXRUJL
SVRfV0VCX0VYVEVOU0lPTl9FUlJPUiwgV0VCS0lUX1dFQl9FWFRFTlNJT05fRVJST1JfSU5WQUxJ
RF9NQU5JRkVTVF9FTlRSWSk7Ci0gICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfd2ViX2V4dGVuc2lv
bl9nZXRfaGFzX2luamVjdGVkX2NvbnRlbnQoZXh0ZW5zaW9uLmdldCgpKSk7Ci0KLSAgICBleHRl
bnNpb24gPSBwYXJzZSgieyBcImNvbnRlbnRfc2NyaXB0c1wiOiBbeyBcImpzXCI6IFsgXCJ0ZXN0
LmpzXCIgXSwgXCJtYXRjaGVzXCI6IFtcIio6Ly8qLmV4YW1wbGUuY29tL1wiXSwgXCJ3b3JsZFwi
OiBcIklOVkFMSURcIiB9XSwgXCJtYW5pZmVzdF92ZXJzaW9uXCI6IDIsIFwibmFtZVwiOiBcIlRl
c3RcIiwgXCJ2ZXJzaW9uXCI6IFwiMS4wXCIsIFwiZGVzY3JpcHRpb25cIjogXCJUZXN0XCIgfSIp
OwotICAgIGdfYXNzZXJ0X2Vycm9yKGVycm9yLmdldCgpLCBXRUJLSVRfV0VCX0VYVEVOU0lPTl9F
UlJPUiwgV0VCS0lUX1dFQl9FWFRFTlNJT05fRVJST1JfSU5WQUxJRF9NQU5JRkVTVF9FTlRSWSk7
Ci0gICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfaGFzX2luamVjdGVk
X2NvbnRlbnQoZXh0ZW5zaW9uLmdldCgpKSk7Ci0KLSAgICBleHRlbnNpb24gPSBwYXJzZSgieyBc
ImNvbnRlbnRfc2NyaXB0c1wiOiBbeyBcImNzc1wiOiBbZmFsc2UsIFwidGVzdC5jc3NcIiwgXCJc
Il0sIFwibWF0Y2hlc1wiOiBbXCIqOi8vKi5leGFtcGxlLmNvbS9cIl0sIFwiY3NzX29yaWdpblwi
OiBcImJhZFwiIH1dLCBcIm1hbmlmZXN0X3ZlcnNpb25cIjogMiwgXCJuYW1lXCI6IFwiVGVzdFwi
LCBcInZlcnNpb25cIjogXCIxLjBcIiwgXCJkZXNjcmlwdGlvblwiOiBcIlRlc3RcIiB9Iik7Ci0g
ICAgZ19hc3NlcnRfZXJyb3IoZXJyb3IuZ2V0KCksIFdFQktJVF9XRUJfRVhURU5TSU9OX0VSUk9S
LCBXRUJLSVRfV0VCX0VYVEVOU0lPTl9FUlJPUl9JTlZBTElEX01BTklGRVNUX0VOVFJZKTsKLSAg
ICBnX2Fzc2VydF90cnVlKHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9oYXNfaW5qZWN0ZWRfY29u
dGVudChleHRlbnNpb24uZ2V0KCkpKTsKLX0KLQotc3RhdGljIHZvaWQgdGVzdFBlcm1pc3Npb25z
UGFyc2luZyhUZXN0KiwgZ2NvbnN0cG9pbnRlcikKLXsKLSAgICBHVW5pcXVlT3V0UHRyPEdFcnJv
cj4gZXJyb3I7Ci0gICAgYXV0byBwYXJzZSA9IFsmXShjb25zdCBnY2hhciogbWFuaWZlc3RTdHJp
bmcpIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0R1JlZih3ZWJraXRXZWJFeHRlbnNpb25DcmVhdGUo
eyB7ICJtYW5pZmVzdC5qc29uIl9zLCBjcmVhdGVHQnl0ZXMobWFuaWZlc3RTdHJpbmcpIH0gfSwg
JmVycm9yLm91dFB0cigpKSk7Ci0gICAgfTsKLQotICAgIC8vIEZhaWx1cmUgVGVzdGluZwotCi0g
ICAgLy8gTmVpdGhlciBvZiB0aGUgInBlcm1pc3Npb25zIiBhbmQgIm9wdGlvbmFsX3Blcm1pc3Np
b25zIiBrZXlzIGFyZSBkZWZpbmVkLgotCi0gICAgR1JlZlB0cjxXZWJLaXRXZWJFeHRlbnNpb24+
IGV4dGVuc2lvbiA9IHBhcnNlKCJ7IFwibWFuaWZlc3RfdmVyc2lvblwiOiAyLCBcIm5hbWVcIjog
XCJUZXN0XCIsIFwidmVyc2lvblwiOiBcIjEuMFwiLCBcImRlc2NyaXB0aW9uXCI6IFwiVGVzdCBk
ZXNjcmlwdGlvblwiIH0iKTsKLSAgICBjb25zdCBnY2hhciogY29uc3QqIHJlcXVlc3RlZFBlcm1p
c3Npb25zID0gd2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X3JlcXVlc3RlZF9wZXJtaXNzaW9ucyhl
eHRlbnNpb24uZ2V0KCkpOwotICAgIGNvbnN0IGdjaGFyKiBjb25zdCogb3B0aW9uYWxQZXJtaXNz
aW9ucyA9IHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9vcHRpb25hbF9wZXJtaXNzaW9ucyhleHRl
bnNpb24uZ2V0KCkpOwotICAgIGdfYXNzZXJ0X251bGwocmVxdWVzdGVkUGVybWlzc2lvbnMpOwot
ICAgIGdfYXNzZXJ0X251bGwod2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X3JlcXVlc3RlZF9wZXJt
aXNzaW9uX21hdGNoX3BhdHRlcm5zKGV4dGVuc2lvbi5nZXQoKSkpOwotICAgIGdfYXNzZXJ0X251
bGwob3B0aW9uYWxQZXJtaXNzaW9ucyk7Ci0gICAgZ19hc3NlcnRfbnVsbCh3ZWJraXRfd2ViX2V4
dGVuc2lvbl9nZXRfb3B0aW9uYWxfcGVybWlzc2lvbl9tYXRjaF9wYXR0ZXJucyhleHRlbnNpb24u
Z2V0KCkpKTsKLQotICAgIC8vIFRoZSAicGVybWlzc2lvbnMiIGtleSBhbG9uZSBpcyBkZWZpbmVk
IGFuZCBlbXB0eQotCi0gICAgZXh0ZW5zaW9uID0gcGFyc2UoInsgXCJtYW5pZmVzdF92ZXJzaW9u
XCI6IDIsIFwicGVybWlzc2lvbnNcIjogW10sIFwibmFtZVwiOiBcIlRlc3RcIiwgXCJ2ZXJzaW9u
XCI6IFwiMS4wXCIsIFwiZGVzY3JpcHRpb25cIjogXCJUZXN0IGRlc2NyaXB0aW9uXCIgfSIpOwot
ICAgIHJlcXVlc3RlZFBlcm1pc3Npb25zID0gd2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X3JlcXVl
c3RlZF9wZXJtaXNzaW9ucyhleHRlbnNpb24uZ2V0KCkpOwotICAgIG9wdGlvbmFsUGVybWlzc2lv
bnMgPSB3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfb3B0aW9uYWxfcGVybWlzc2lvbnMoZXh0ZW5z
aW9uLmdldCgpKTsKLSAgICBnX2Fzc2VydF9udWxsKHJlcXVlc3RlZFBlcm1pc3Npb25zKTsKLSAg
ICBnX2Fzc2VydF9udWxsKHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9yZXF1ZXN0ZWRfcGVybWlz
c2lvbl9tYXRjaF9wYXR0ZXJucyhleHRlbnNpb24uZ2V0KCkpKTsKLSAgICBnX2Fzc2VydF9udWxs
KG9wdGlvbmFsUGVybWlzc2lvbnMpOwotICAgIGdfYXNzZXJ0X251bGwod2Via2l0X3dlYl9leHRl
bnNpb25fZ2V0X29wdGlvbmFsX3Blcm1pc3Npb25fbWF0Y2hfcGF0dGVybnMoZXh0ZW5zaW9uLmdl
dCgpKSk7Ci0KLSAgICAvLyBUaGUgIm9wdGlvbmFsX3Blcm1pc3Npb25zIiBrZXkgYWxvbmUgaXMg
ZGVmaW5lZCBhbmQgZW1wdHkKLQotICAgIGV4dGVuc2lvbiA9IHBhcnNlKCJ7IFwibWFuaWZlc3Rf
dmVyc2lvblwiOiAyLCBcIm9wdGlvbmFsX3Blcm1pc3Npb25zXCI6IFtdLCBcIm5hbWVcIjogXCJU
ZXN0XCIsIFwidmVyc2lvblwiOiBcIjEuMFwiLCBcImRlc2NyaXB0aW9uXCI6IFwiVGVzdCBkZXNj
cmlwdGlvblwiIH0iKTsKLSAgICByZXF1ZXN0ZWRQZXJtaXNzaW9ucyA9IHdlYmtpdF93ZWJfZXh0
ZW5zaW9uX2dldF9yZXF1ZXN0ZWRfcGVybWlzc2lvbnMoZXh0ZW5zaW9uLmdldCgpKTsKLSAgICBv
cHRpb25hbFBlcm1pc3Npb25zID0gd2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X29wdGlvbmFsX3Bl
cm1pc3Npb25zKGV4dGVuc2lvbi5nZXQoKSk7Ci0gICAgZ19hc3NlcnRfbnVsbChyZXF1ZXN0ZWRQ
ZXJtaXNzaW9ucyk7Ci0gICAgZ19hc3NlcnRfbnVsbCh3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRf
cmVxdWVzdGVkX3Blcm1pc3Npb25fbWF0Y2hfcGF0dGVybnMoZXh0ZW5zaW9uLmdldCgpKSk7Ci0g
ICAgZ19hc3NlcnRfbnVsbChvcHRpb25hbFBlcm1pc3Npb25zKTsKLSAgICBnX2Fzc2VydF9udWxs
KHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9vcHRpb25hbF9wZXJtaXNzaW9uX21hdGNoX3BhdHRl
cm5zKGV4dGVuc2lvbi5nZXQoKSkpOwotCi0gICAgLy8gVGhlICJwZXJtaXNzaW9ucyIgYW5kICJv
cHRpb25hbF9wZXJtaXNzaW9ucyIga2V5cyBhcmUgZGVmaW5lZCBhcyBpbnZhbGlkIHR5cGVzCi0K
LSAgICBleHRlbnNpb24gPSBwYXJzZSgieyBcIm1hbmlmZXN0X3ZlcnNpb25cIjogMiwgXCJwZXJt
aXNzaW9uc1wiOiAyLCBcIm9wdGlvbmFsX3Blcm1pc3Npb25zXCI6IFwiZm9vXCIsIFwibmFtZVwi
OiBcIlRlc3RcIiwgXCJ2ZXJzaW9uXCI6IFwiMS4wXCIsIFwiZGVzY3JpcHRpb25cIjogXCJUZXN0
IGRlc2NyaXB0aW9uXCIgfSIpOwotICAgIHJlcXVlc3RlZFBlcm1pc3Npb25zID0gd2Via2l0X3dl
Yl9leHRlbnNpb25fZ2V0X3JlcXVlc3RlZF9wZXJtaXNzaW9ucyhleHRlbnNpb24uZ2V0KCkpOwot
ICAgIG9wdGlvbmFsUGVybWlzc2lvbnMgPSB3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfb3B0aW9u
YWxfcGVybWlzc2lvbnMoZXh0ZW5zaW9uLmdldCgpKTsKLSAgICBnX2Fzc2VydF9udWxsKHJlcXVl
c3RlZFBlcm1pc3Npb25zKTsKLSAgICBnX2Fzc2VydF9udWxsKHdlYmtpdF93ZWJfZXh0ZW5zaW9u
X2dldF9yZXF1ZXN0ZWRfcGVybWlzc2lvbl9tYXRjaF9wYXR0ZXJucyhleHRlbnNpb24uZ2V0KCkp
KTsKLSAgICBnX2Fzc2VydF9udWxsKG9wdGlvbmFsUGVybWlzc2lvbnMpOwotICAgIGdfYXNzZXJ0
X251bGwod2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X29wdGlvbmFsX3Blcm1pc3Npb25fbWF0Y2hf
cGF0dGVybnMoZXh0ZW5zaW9uLmdldCgpKSk7Ci0KLSAgICAvLyBUaGUgInBlcm1pc3Npb25zIiBr
ZXlzIGlzIGRlZmluZWQgd2l0aCBhbiBpbnZhbGlkIHBlcm1pc3Npb24uCi0KLSAgICBleHRlbnNp
b24gPSBwYXJzZSgieyBcIm1hbmlmZXN0X3ZlcnNpb25cIjogMiwgXCJwZXJtaXNzaW9uc1wiOiBb
IFwiaW52YWxpZFwiIF0sIFwibmFtZVwiOiBcIlRlc3RcIiwgXCJ2ZXJzaW9uXCI6IFwiMS4wXCIs
IFwiZGVzY3JpcHRpb25cIjogXCJUZXN0IGRlc2NyaXB0aW9uXCIgfSIpOwotICAgIHJlcXVlc3Rl
ZFBlcm1pc3Npb25zID0gd2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X3JlcXVlc3RlZF9wZXJtaXNz
aW9ucyhleHRlbnNpb24uZ2V0KCkpOwotICAgIG9wdGlvbmFsUGVybWlzc2lvbnMgPSB3ZWJraXRf
d2ViX2V4dGVuc2lvbl9nZXRfb3B0aW9uYWxfcGVybWlzc2lvbnMoZXh0ZW5zaW9uLmdldCgpKTsK
LSAgICBnX2Fzc2VydF9udWxsKHJlcXVlc3RlZFBlcm1pc3Npb25zKTsKLSAgICBnX2Fzc2VydF9u
dWxsKHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9yZXF1ZXN0ZWRfcGVybWlzc2lvbl9tYXRjaF9w
YXR0ZXJucyhleHRlbnNpb24uZ2V0KCkpKTsKLSAgICBnX2Fzc2VydF9udWxsKG9wdGlvbmFsUGVy
bWlzc2lvbnMpOwotICAgIGdfYXNzZXJ0X251bGwod2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X29w
dGlvbmFsX3Blcm1pc3Npb25fbWF0Y2hfcGF0dGVybnMoZXh0ZW5zaW9uLmdldCgpKSk7Ci0KLSAg
ICAvLyBUaGUgInBlcm1pc3Npb25zIiBrZXkgaXMgZGVmaW5lZCB3aXRoIGEgdmFsaWQgcGVybWlz
c2lvbgotCi0gICAgZXh0ZW5zaW9uID0gcGFyc2UoInsgXCJtYW5pZmVzdF92ZXJzaW9uXCI6IDIs
IFwicGVybWlzc2lvbnNcIjogWyBcInRhYnNcIiBdLCBcIm5hbWVcIjogXCJUZXN0XCIsIFwidmVy
c2lvblwiOiBcIjEuMFwiLCBcImRlc2NyaXB0aW9uXCI6IFwiVGVzdCBkZXNjcmlwdGlvblwiIH0i
KTsKLSAgICByZXF1ZXN0ZWRQZXJtaXNzaW9ucyA9IHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9y
ZXF1ZXN0ZWRfcGVybWlzc2lvbnMoZXh0ZW5zaW9uLmdldCgpKTsKLSAgICBvcHRpb25hbFBlcm1p
c3Npb25zID0gd2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X29wdGlvbmFsX3Blcm1pc3Npb25zKGV4
dGVuc2lvbi5nZXQoKSk7Ci0gICAgZ19hc3NlcnRfbm9ubnVsbChyZXF1ZXN0ZWRQZXJtaXNzaW9u
cyk7Ci0gICAgZ19hc3NlcnRfbnVsbCh3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfcmVxdWVzdGVk
X3Blcm1pc3Npb25fbWF0Y2hfcGF0dGVybnMoZXh0ZW5zaW9uLmdldCgpKSk7Ci0gICAgZ19hc3Nl
cnRfbnVsbChvcHRpb25hbFBlcm1pc3Npb25zKTsKLSAgICBnX2Fzc2VydF9udWxsKHdlYmtpdF93
ZWJfZXh0ZW5zaW9uX2dldF9vcHRpb25hbF9wZXJtaXNzaW9uX21hdGNoX3BhdHRlcm5zKGV4dGVu
c2lvbi5nZXQoKSkpOwotICAgIGdfYXNzZXJ0X2NtcHN0cihyZXF1ZXN0ZWRQZXJtaXNzaW9uc1sw
XSwgPT0sICJ0YWJzIik7Ci0gICAgZ19hc3NlcnRfbnVsbChyZXF1ZXN0ZWRQZXJtaXNzaW9uc1sx
XSk7Ci0KLSAgICAvLyBUaGUgInBlcm1pc3Npb25zIiBrZXkgaXMgZGVmaW5lZCB3aXRoIGEgdmFs
aWQgJiBpbnZhbGlkIHBlcm1pc3Npb24KLQotICAgIGV4dGVuc2lvbiA9IHBhcnNlKCJ7IFwibWFu
aWZlc3RfdmVyc2lvblwiOiAyLCBcInBlcm1pc3Npb25zXCI6IFsgXCJ0YWJzXCIsIFwiaW52YWxp
ZFwiIF0sIFwibmFtZVwiOiBcIlRlc3RcIiwgXCJ2ZXJzaW9uXCI6IFwiMS4wXCIsIFwiZGVzY3Jp
cHRpb25cIjogXCJUZXN0IGRlc2NyaXB0aW9uXCIgfSIpOwotICAgIHJlcXVlc3RlZFBlcm1pc3Np
b25zID0gd2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X3JlcXVlc3RlZF9wZXJtaXNzaW9ucyhleHRl
bnNpb24uZ2V0KCkpOwotICAgIG9wdGlvbmFsUGVybWlzc2lvbnMgPSB3ZWJraXRfd2ViX2V4dGVu
c2lvbl9nZXRfb3B0aW9uYWxfcGVybWlzc2lvbnMoZXh0ZW5zaW9uLmdldCgpKTsKLSAgICBnX2Fz
c2VydF9ub25udWxsKHJlcXVlc3RlZFBlcm1pc3Npb25zKTsKLSAgICBnX2Fzc2VydF9udWxsKHdl
YmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9yZXF1ZXN0ZWRfcGVybWlzc2lvbl9tYXRjaF9wYXR0ZXJu
cyhleHRlbnNpb24uZ2V0KCkpKTsKLSAgICBnX2Fzc2VydF9udWxsKG9wdGlvbmFsUGVybWlzc2lv
bnMpOwotICAgIGdfYXNzZXJ0X251bGwod2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X29wdGlvbmFs
X3Blcm1pc3Npb25fbWF0Y2hfcGF0dGVybnMoZXh0ZW5zaW9uLmdldCgpKSk7Ci0gICAgZ19hc3Nl
cnRfY21wc3RyKHJlcXVlc3RlZFBlcm1pc3Npb25zWzBdLCA9PSwgInRhYnMiKTsKLSAgICBnX2Fz
c2VydF9udWxsKHJlcXVlc3RlZFBlcm1pc3Npb25zWzFdKTsKLQotICAgIC8vIFRoZSAicGVybWlz
c2lvbnMiIGtleSBpcyBkZWZpbmVkIHdpdGggYSB2YWxpZCBwZXJtaXNzaW9uICYgb3JpZ2luCi0K
LSAgICBleHRlbnNpb24gPSBwYXJzZSgieyBcIm1hbmlmZXN0X3ZlcnNpb25cIjogMiwgXCJwZXJt
aXNzaW9uc1wiOiBbIFwidGFic1wiLCBcImh0dHA6Ly93d3cud2Via2l0Lm9yZy9cIiBdLCBcIm5h
bWVcIjogXCJUZXN0XCIsIFwidmVyc2lvblwiOiBcIjEuMFwiLCBcImRlc2NyaXB0aW9uXCI6IFwi
VGVzdCBkZXNjcmlwdGlvblwiIH0iKTsKLSAgICByZXF1ZXN0ZWRQZXJtaXNzaW9ucyA9IHdlYmtp
dF93ZWJfZXh0ZW5zaW9uX2dldF9yZXF1ZXN0ZWRfcGVybWlzc2lvbnMoZXh0ZW5zaW9uLmdldCgp
KTsKLSAgICBvcHRpb25hbFBlcm1pc3Npb25zID0gd2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X29w
dGlvbmFsX3Blcm1pc3Npb25zKGV4dGVuc2lvbi5nZXQoKSk7Ci0gICAgZ19hc3NlcnRfbm9ubnVs
bChyZXF1ZXN0ZWRQZXJtaXNzaW9ucyk7Ci0gICAgZ19hc3NlcnRfY21waW50KGdfbGlzdF9sZW5n
dGgod2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X3JlcXVlc3RlZF9wZXJtaXNzaW9uX21hdGNoX3Bh
dHRlcm5zKGV4dGVuc2lvbi5nZXQoKSkpLCA9PSwgMSk7Ci0gICAgZ19hc3NlcnRfY21wc3RyKHdl
YmtpdF93ZWJfZXh0ZW5zaW9uX21hdGNoX3BhdHRlcm5fZ2V0X3N0cmluZyhzdGF0aWNfY2FzdDxX
ZWJLaXRXZWJFeHRlbnNpb25NYXRjaFBhdHRlcm4qPihnX2xpc3RfbnRoX2RhdGEod2Via2l0X3dl
Yl9leHRlbnNpb25fZ2V0X3JlcXVlc3RlZF9wZXJtaXNzaW9uX21hdGNoX3BhdHRlcm5zKGV4dGVu
c2lvbi5nZXQoKSksIDApKSksID09LCAiaHR0cDovL3d3dy53ZWJraXQub3JnLyIpOwotICAgIGdf
YXNzZXJ0X251bGwob3B0aW9uYWxQZXJtaXNzaW9ucyk7Ci0gICAgZ19hc3NlcnRfbnVsbCh3ZWJr
aXRfd2ViX2V4dGVuc2lvbl9nZXRfb3B0aW9uYWxfcGVybWlzc2lvbl9tYXRjaF9wYXR0ZXJucyhl
eHRlbnNpb24uZ2V0KCkpKTsKLSAgICBnX2Fzc2VydF9jbXBzdHIocmVxdWVzdGVkUGVybWlzc2lv
bnNbMF0sID09LCAidGFicyIpOwotICAgIGdfYXNzZXJ0X251bGwocmVxdWVzdGVkUGVybWlzc2lv
bnNbMV0pOwotCi0gICAgLy8gVGhlICJwZXJtaXNzaW9ucyIga2V5IGlzIGRlZmluZWQgd2l0aCBh
IHZhbGlkIHBlcm1pc3Npb24gJiBpbnZhbGlkIG9yaWdpbgotCi0gICAgZXh0ZW5zaW9uID0gcGFy
c2UoInsgXCJtYW5pZmVzdF92ZXJzaW9uXCI6IDIsIFwicGVybWlzc2lvbnNcIjogWyBcInRhYnNc
IiwgXCJmb286Ly93d3cud2Via2l0Lm9yZy9cIiBdLCBcIm5hbWVcIjogXCJUZXN0XCIsIFwidmVy
c2lvblwiOiBcIjEuMFwiLCBcImRlc2NyaXB0aW9uXCI6IFwiVGVzdCBkZXNjcmlwdGlvblwiIH0i
KTsKLSAgICByZXF1ZXN0ZWRQZXJtaXNzaW9ucyA9IHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9y
ZXF1ZXN0ZWRfcGVybWlzc2lvbnMoZXh0ZW5zaW9uLmdldCgpKTsKLSAgICBvcHRpb25hbFBlcm1p
c3Npb25zID0gd2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X29wdGlvbmFsX3Blcm1pc3Npb25zKGV4
dGVuc2lvbi5nZXQoKSk7Ci0gICAgZ19hc3NlcnRfbm9ubnVsbChyZXF1ZXN0ZWRQZXJtaXNzaW9u
cyk7Ci0gICAgZ19hc3NlcnRfbnVsbCh3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfcmVxdWVzdGVk
X3Blcm1pc3Npb25fbWF0Y2hfcGF0dGVybnMoZXh0ZW5zaW9uLmdldCgpKSk7Ci0gICAgZ19hc3Nl
cnRfbnVsbChvcHRpb25hbFBlcm1pc3Npb25zKTsKLSAgICBnX2Fzc2VydF9udWxsKHdlYmtpdF93
ZWJfZXh0ZW5zaW9uX2dldF9vcHRpb25hbF9wZXJtaXNzaW9uX21hdGNoX3BhdHRlcm5zKGV4dGVu
c2lvbi5nZXQoKSkpOwotICAgIGdfYXNzZXJ0X2NtcHN0cihyZXF1ZXN0ZWRQZXJtaXNzaW9uc1sw
XSwgPT0sICJ0YWJzIik7Ci0gICAgZ19hc3NlcnRfbnVsbChyZXF1ZXN0ZWRQZXJtaXNzaW9uc1sx
XSk7Ci0KLSAgICAvLyBUaGUgIm9wdGlvbmFsX3Blcm1pc3Npb25zIiBrZXlzIGlzIGRlZmluZWQg
d2l0aCBhbiBpbnZhbGlkIHBlcm1pc3Npb24uCi0KLSAgICBleHRlbnNpb24gPSBwYXJzZSgieyBc
Im1hbmlmZXN0X3ZlcnNpb25cIjogMiwgXCJvcHRpb25hbF9wZXJtaXNzaW9uc1wiOiBbIFwiaW52
YWxpZFwiIF0sIFwibmFtZVwiOiBcIlRlc3RcIiwgXCJ2ZXJzaW9uXCI6IFwiMS4wXCIsIFwiZGVz
Y3JpcHRpb25cIjogXCJUZXN0IGRlc2NyaXB0aW9uXCIgfSIpOwotICAgIHJlcXVlc3RlZFBlcm1p
c3Npb25zID0gd2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X3JlcXVlc3RlZF9wZXJtaXNzaW9ucyhl
eHRlbnNpb24uZ2V0KCkpOwotICAgIG9wdGlvbmFsUGVybWlzc2lvbnMgPSB3ZWJraXRfd2ViX2V4
dGVuc2lvbl9nZXRfb3B0aW9uYWxfcGVybWlzc2lvbnMoZXh0ZW5zaW9uLmdldCgpKTsKLSAgICBn
X2Fzc2VydF9udWxsKG9wdGlvbmFsUGVybWlzc2lvbnMpOwotICAgIGdfYXNzZXJ0X251bGwod2Vi
a2l0X3dlYl9leHRlbnNpb25fZ2V0X29wdGlvbmFsX3Blcm1pc3Npb25fbWF0Y2hfcGF0dGVybnMo
ZXh0ZW5zaW9uLmdldCgpKSk7Ci0gICAgZ19hc3NlcnRfbnVsbChyZXF1ZXN0ZWRQZXJtaXNzaW9u
cyk7Ci0gICAgZ19hc3NlcnRfbnVsbCh3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfcmVxdWVzdGVk
X3Blcm1pc3Npb25fbWF0Y2hfcGF0dGVybnMoZXh0ZW5zaW9uLmdldCgpKSk7Ci0KLSAgICAvLyBU
aGUgIm9wdGlvbmFsX3Blcm1pc3Npb25zIiBrZXkgaXMgZGVmaW5lZCB3aXRoIGEgdmFsaWQgcGVy
bWlzc2lvbgotCi0gICAgZXh0ZW5zaW9uID0gcGFyc2UoInsgXCJtYW5pZmVzdF92ZXJzaW9uXCI6
IDIsIFwib3B0aW9uYWxfcGVybWlzc2lvbnNcIjogWyBcInRhYnNcIiBdLCBcIm5hbWVcIjogXCJU
ZXN0XCIsIFwidmVyc2lvblwiOiBcIjEuMFwiLCBcImRlc2NyaXB0aW9uXCI6IFwiVGVzdCBkZXNj
cmlwdGlvblwiIH0iKTsKLSAgICByZXF1ZXN0ZWRQZXJtaXNzaW9ucyA9IHdlYmtpdF93ZWJfZXh0
ZW5zaW9uX2dldF9yZXF1ZXN0ZWRfcGVybWlzc2lvbnMoZXh0ZW5zaW9uLmdldCgpKTsKLSAgICBv
cHRpb25hbFBlcm1pc3Npb25zID0gd2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X29wdGlvbmFsX3Bl
cm1pc3Npb25zKGV4dGVuc2lvbi5nZXQoKSk7Ci0gICAgZ19hc3NlcnRfbm9ubnVsbChvcHRpb25h
bFBlcm1pc3Npb25zKTsKLSAgICBnX2Fzc2VydF9udWxsKHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dl
dF9vcHRpb25hbF9wZXJtaXNzaW9uX21hdGNoX3BhdHRlcm5zKGV4dGVuc2lvbi5nZXQoKSkpOwot
ICAgIGdfYXNzZXJ0X251bGwocmVxdWVzdGVkUGVybWlzc2lvbnMpOwotICAgIGdfYXNzZXJ0X251
bGwod2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X3JlcXVlc3RlZF9wZXJtaXNzaW9uX21hdGNoX3Bh
dHRlcm5zKGV4dGVuc2lvbi5nZXQoKSkpOwotICAgIGdfYXNzZXJ0X2NtcHN0cihvcHRpb25hbFBl
cm1pc3Npb25zWzBdLCA9PSwgInRhYnMiKTsKLSAgICBnX2Fzc2VydF9udWxsKG9wdGlvbmFsUGVy
bWlzc2lvbnNbMV0pOwotCi0gICAgLy8gVGhlICJvcHRpb25hbF9wZXJtaXNzaW9ucyIga2V5IGlz
IGRlZmluZWQgd2l0aCBhIHZhbGlkICYgaW52YWxpZCBwZXJtaXNzaW9uCi0KLSAgICBleHRlbnNp
b24gPSBwYXJzZSgieyBcIm1hbmlmZXN0X3ZlcnNpb25cIjogMiwgXCJvcHRpb25hbF9wZXJtaXNz
aW9uc1wiOiBbIFwidGFic1wiLCBcImludmFsaWRcIiBdLCBcIm5hbWVcIjogXCJUZXN0XCIsIFwi
dmVyc2lvblwiOiBcIjEuMFwiLCBcImRlc2NyaXB0aW9uXCI6IFwiVGVzdCBkZXNjcmlwdGlvblwi
IH0iKTsKLSAgICByZXF1ZXN0ZWRQZXJtaXNzaW9ucyA9IHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dl
dF9yZXF1ZXN0ZWRfcGVybWlzc2lvbnMoZXh0ZW5zaW9uLmdldCgpKTsKLSAgICBvcHRpb25hbFBl
cm1pc3Npb25zID0gd2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X29wdGlvbmFsX3Blcm1pc3Npb25z
KGV4dGVuc2lvbi5nZXQoKSk7Ci0gICAgZ19hc3NlcnRfbm9ubnVsbChvcHRpb25hbFBlcm1pc3Np
b25zKTsKLSAgICBnX2Fzc2VydF9udWxsKHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9vcHRpb25h
bF9wZXJtaXNzaW9uX21hdGNoX3BhdHRlcm5zKGV4dGVuc2lvbi5nZXQoKSkpOwotICAgIGdfYXNz
ZXJ0X251bGwocmVxdWVzdGVkUGVybWlzc2lvbnMpOwotICAgIGdfYXNzZXJ0X251bGwod2Via2l0
X3dlYl9leHRlbnNpb25fZ2V0X29wdGlvbmFsX3Blcm1pc3Npb25fbWF0Y2hfcGF0dGVybnMoZXh0
ZW5zaW9uLmdldCgpKSk7Ci0gICAgZ19hc3NlcnRfY21wc3RyKG9wdGlvbmFsUGVybWlzc2lvbnNb
MF0sID09LCAidGFicyIpOwotICAgIGdfYXNzZXJ0X251bGwob3B0aW9uYWxQZXJtaXNzaW9uc1sx
XSk7Ci0KLSAgICAvLyBUaGUgIm9wdGlvbmFsX3Blcm1pc3Npb25zIiBrZXkgaXMgZGVmaW5lZCB3
aXRoIGEgdmFsaWQgcGVybWlzc2lvbiAmIG9yaWdpbgotCi0gICAgZXh0ZW5zaW9uID0gcGFyc2Uo
InsgXCJtYW5pZmVzdF92ZXJzaW9uXCI6IDIsIFwib3B0aW9uYWxfcGVybWlzc2lvbnNcIjogWyBc
InRhYnNcIiwgXCJodHRwOi8vd3d3LndlYmtpdC5vcmcvXCIgXSwgXCJuYW1lXCI6IFwiVGVzdFwi
LCBcInZlcnNpb25cIjogXCIxLjBcIiwgXCJkZXNjcmlwdGlvblwiOiBcIlRlc3QgZGVzY3JpcHRp
b25cIiB9Iik7Ci0gICAgcmVxdWVzdGVkUGVybWlzc2lvbnMgPSB3ZWJraXRfd2ViX2V4dGVuc2lv
bl9nZXRfcmVxdWVzdGVkX3Blcm1pc3Npb25zKGV4dGVuc2lvbi5nZXQoKSk7Ci0gICAgb3B0aW9u
YWxQZXJtaXNzaW9ucyA9IHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9vcHRpb25hbF9wZXJtaXNz
aW9ucyhleHRlbnNpb24uZ2V0KCkpOwotICAgIGdfYXNzZXJ0X251bGwocmVxdWVzdGVkUGVybWlz
c2lvbnMpOwotICAgIGdfYXNzZXJ0X251bGwod2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X3JlcXVl
c3RlZF9wZXJtaXNzaW9uX21hdGNoX3BhdHRlcm5zKGV4dGVuc2lvbi5nZXQoKSkpOwotICAgIGdf
YXNzZXJ0X25vbm51bGwob3B0aW9uYWxQZXJtaXNzaW9ucyk7Ci0gICAgZ19hc3NlcnRfY21waW50
KGdfbGlzdF9sZW5ndGgod2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X29wdGlvbmFsX3Blcm1pc3Np
b25fbWF0Y2hfcGF0dGVybnMoZXh0ZW5zaW9uLmdldCgpKSksID09LCAxKTsKLSAgICBnX2Fzc2Vy
dF9jbXBzdHIod2Via2l0X3dlYl9leHRlbnNpb25fbWF0Y2hfcGF0dGVybl9nZXRfc3RyaW5nKHN0
YXRpY19jYXN0PFdlYktpdFdlYkV4dGVuc2lvbk1hdGNoUGF0dGVybio+KGdfbGlzdF9udGhfZGF0
YSh3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfb3B0aW9uYWxfcGVybWlzc2lvbl9tYXRjaF9wYXR0
ZXJucyhleHRlbnNpb24uZ2V0KCkpLCAwKSkpLCA9PSwgImh0dHA6Ly93d3cud2Via2l0Lm9yZy8i
KTsKLSAgICBnX2Fzc2VydF9jbXBzdHIob3B0aW9uYWxQZXJtaXNzaW9uc1swXSwgPT0sICJ0YWJz
Iik7Ci0gICAgZ19hc3NlcnRfbnVsbChvcHRpb25hbFBlcm1pc3Npb25zWzFdKTsKLQotICAgIC8v
IFRoZSAib3B0aW9uYWxfcGVybWlzc2lvbnMiIGtleSBpcyBkZWZpbmVkIHdpdGggYSB2YWxpZCBw
ZXJtaXNzaW9uICYgaW52YWxpZCBvcmlnaW4KLQotICAgIGV4dGVuc2lvbiA9IHBhcnNlKCJ7IFwi
bWFuaWZlc3RfdmVyc2lvblwiOiAyLCBcIm9wdGlvbmFsX3Blcm1pc3Npb25zXCI6IFsgXCJ0YWJz
XCIsIFwiZm9vOi8vd3d3LndlYmtpdC5vcmcvXCIgXSwgXCJuYW1lXCI6IFwiVGVzdFwiLCBcInZl
cnNpb25cIjogXCIxLjBcIiwgXCJkZXNjcmlwdGlvblwiOiBcIlRlc3QgZGVzY3JpcHRpb25cIiB9
Iik7Ci0gICAgcmVxdWVzdGVkUGVybWlzc2lvbnMgPSB3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRf
cmVxdWVzdGVkX3Blcm1pc3Npb25zKGV4dGVuc2lvbi5nZXQoKSk7Ci0gICAgb3B0aW9uYWxQZXJt
aXNzaW9ucyA9IHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9vcHRpb25hbF9wZXJtaXNzaW9ucyhl
eHRlbnNpb24uZ2V0KCkpOwotICAgIGdfYXNzZXJ0X251bGwocmVxdWVzdGVkUGVybWlzc2lvbnMp
OwotICAgIGdfYXNzZXJ0X251bGwod2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X3JlcXVlc3RlZF9w
ZXJtaXNzaW9uX21hdGNoX3BhdHRlcm5zKGV4dGVuc2lvbi5nZXQoKSkpOwotICAgIGdfYXNzZXJ0
X25vbm51bGwob3B0aW9uYWxQZXJtaXNzaW9ucyk7Ci0gICAgZ19hc3NlcnRfbnVsbCh3ZWJraXRf
d2ViX2V4dGVuc2lvbl9nZXRfb3B0aW9uYWxfcGVybWlzc2lvbl9tYXRjaF9wYXR0ZXJucyhleHRl
bnNpb24uZ2V0KCkpKTsKLSAgICBnX2Fzc2VydF9jbXBzdHIob3B0aW9uYWxQZXJtaXNzaW9uc1sw
XSwgPT0sICJ0YWJzIik7Ci0gICAgZ19hc3NlcnRfbnVsbChvcHRpb25hbFBlcm1pc3Npb25zWzFd
KTsKLQotICAgIC8vIFRoZSAib3B0aW9uYWxfcGVybWlzc2lvbnMiIGtleSBpcyBkZWZpbmVkIHdp
dGggYSB2YWxpZCAmIGZvcmJpZGRlbiBpbnZhbGlkIHBlcm1pc3Npb24KLQotICAgIGV4dGVuc2lv
biA9IHBhcnNlKCJ7IFwibWFuaWZlc3RfdmVyc2lvblwiOiAyLCBcIm9wdGlvbmFsX3Blcm1pc3Np
b25zXCI6IFsgXCJ0YWJzXCIsIFwiZ2VvbG9jYXRpb25cIiBdLCBcIm5hbWVcIjogXCJUZXN0XCIs
IFwidmVyc2lvblwiOiBcIjEuMFwiLCBcImRlc2NyaXB0aW9uXCI6IFwiVGVzdCBkZXNjcmlwdGlv
blwiIH0iKTsKLSAgICByZXF1ZXN0ZWRQZXJtaXNzaW9ucyA9IHdlYmtpdF93ZWJfZXh0ZW5zaW9u
X2dldF9yZXF1ZXN0ZWRfcGVybWlzc2lvbnMoZXh0ZW5zaW9uLmdldCgpKTsKLSAgICBvcHRpb25h
bFBlcm1pc3Npb25zID0gd2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X29wdGlvbmFsX3Blcm1pc3Np
b25zKGV4dGVuc2lvbi5nZXQoKSk7Ci0gICAgZ19hc3NlcnRfbm9ubnVsbChvcHRpb25hbFBlcm1p
c3Npb25zKTsKLSAgICBnX2Fzc2VydF9udWxsKHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9vcHRp
b25hbF9wZXJtaXNzaW9uX21hdGNoX3BhdHRlcm5zKGV4dGVuc2lvbi5nZXQoKSkpOwotICAgIGdf
YXNzZXJ0X251bGwocmVxdWVzdGVkUGVybWlzc2lvbnMpOwotICAgIGdfYXNzZXJ0X251bGwod2Vi
a2l0X3dlYl9leHRlbnNpb25fZ2V0X3JlcXVlc3RlZF9wZXJtaXNzaW9uX21hdGNoX3BhdHRlcm5z
KGV4dGVuc2lvbi5nZXQoKSkpOwotICAgIGdfYXNzZXJ0X2NtcHN0cihvcHRpb25hbFBlcm1pc3Np
b25zWzBdLCA9PSwgInRhYnMiKTsKLSAgICBnX2Fzc2VydF9udWxsKG9wdGlvbmFsUGVybWlzc2lv
bnNbMV0pOwotCi0gICAgLy8gVGhlICJvcHRpb25hbF9wZXJtaXNzaW9ucyIga2V5IGlzIGRlZmlu
ZWQgaW4gInBlcm1pc3Npb25zIgotCi0gICAgZXh0ZW5zaW9uID0gcGFyc2UoInsgXCJtYW5pZmVz
dF92ZXJzaW9uXCI6IDIsIFwicGVybWlzc2lvbnNcIjogWyBcInRhYnNcIiwgXCJnZW9sb2NhdGlv
blwiIF0sIFwib3B0aW9uYWxfcGVybWlzc2lvbnNcIjogWyBcInRhYnNcIiBdLCBcIm5hbWVcIjog
XCJUZXN0XCIsIFwidmVyc2lvblwiOiBcIjEuMFwiLCBcImRlc2NyaXB0aW9uXCI6IFwiVGVzdCBk
ZXNjcmlwdGlvblwiIH0iKTsKLSAgICByZXF1ZXN0ZWRQZXJtaXNzaW9ucyA9IHdlYmtpdF93ZWJf
ZXh0ZW5zaW9uX2dldF9yZXF1ZXN0ZWRfcGVybWlzc2lvbnMoZXh0ZW5zaW9uLmdldCgpKTsKLSAg
ICBvcHRpb25hbFBlcm1pc3Npb25zID0gd2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X29wdGlvbmFs
X3Blcm1pc3Npb25zKGV4dGVuc2lvbi5nZXQoKSk7Ci0gICAgZ19hc3NlcnRfbm9ubnVsbChyZXF1
ZXN0ZWRQZXJtaXNzaW9ucyk7Ci0gICAgZ19hc3NlcnRfbnVsbCh3ZWJraXRfd2ViX2V4dGVuc2lv
bl9nZXRfcmVxdWVzdGVkX3Blcm1pc3Npb25fbWF0Y2hfcGF0dGVybnMoZXh0ZW5zaW9uLmdldCgp
KSk7Ci0gICAgZ19hc3NlcnRfbnVsbChvcHRpb25hbFBlcm1pc3Npb25zKTsKLSAgICBnX2Fzc2Vy
dF9udWxsKHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9vcHRpb25hbF9wZXJtaXNzaW9uX21hdGNo
X3BhdHRlcm5zKGV4dGVuc2lvbi5nZXQoKSkpOwotICAgIGdfYXNzZXJ0X2NtcHN0cihyZXF1ZXN0
ZWRQZXJtaXNzaW9uc1swXSwgPT0sICJ0YWJzIik7Ci0gICAgZ19hc3NlcnRfbnVsbChyZXF1ZXN0
ZWRQZXJtaXNzaW9uc1sxXSk7Ci0KLSAgICAvLyBUaGUgIm9wdGlvbmFsX3Blcm1pc3Npb25zIiBr
ZXkgY29udGFpbnMgYW4gb3JpZ2luIGRlZmluZWQgaW4gInBlcm1pc3Npb25zIgotCi0gICAgZXh0
ZW5zaW9uID0gcGFyc2UoInsgXCJtYW5pZmVzdF92ZXJzaW9uXCI6IDIsIFwicGVybWlzc2lvbnNc
IjogWyBcImh0dHA6Ly93d3cud2Via2l0Lm9yZy9cIiBdLCBcIm9wdGlvbmFsX3Blcm1pc3Npb25z
XCI6IFsgXCJodHRwOi8vd3d3LndlYmtpdC5vcmcvXCIgXSwgXCJuYW1lXCI6IFwiVGVzdFwiLCBc
InZlcnNpb25cIjogXCIxLjBcIiwgXCJkZXNjcmlwdGlvblwiOiBcIlRlc3QgZGVzY3JpcHRpb25c
IiB9Iik7Ci0gICAgZ19hc3NlcnRfY21waW50KGdfbGlzdF9sZW5ndGgod2Via2l0X3dlYl9leHRl
bnNpb25fZ2V0X3JlcXVlc3RlZF9wZXJtaXNzaW9uX21hdGNoX3BhdHRlcm5zKGV4dGVuc2lvbi5n
ZXQoKSkpLCA9PSwgMSk7Ci0gICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF93ZWJfZXh0ZW5zaW9u
X21hdGNoX3BhdHRlcm5fZ2V0X3N0cmluZyhzdGF0aWNfY2FzdDxXZWJLaXRXZWJFeHRlbnNpb25N
YXRjaFBhdHRlcm4qPihnX2xpc3RfbnRoX2RhdGEod2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X3Jl
cXVlc3RlZF9wZXJtaXNzaW9uX21hdGNoX3BhdHRlcm5zKGV4dGVuc2lvbi5nZXQoKSksIDApKSks
ID09LCAiaHR0cDovL3d3dy53ZWJraXQub3JnLyIpOwotICAgIGdfYXNzZXJ0X251bGwod2Via2l0
X3dlYl9leHRlbnNpb25fZ2V0X29wdGlvbmFsX3Blcm1pc3Npb25fbWF0Y2hfcGF0dGVybnMoZXh0
ZW5zaW9uLmdldCgpKSk7Ci0KLSAgICAvLyBNYWtlIHN1cmUgbWFuaWZlc3QgdjIgZXh0ZW5zaW9u
cyBpZ25vcmUgaG9zdHMgZnJvbSBob3N0X3Blcm1pc3Npb25zICh0aGlzIHNob3VsZCBvbmx5IGJl
IGNoZWNrZWQgZm9yIG1hbmlmZXN0IHYzKS4KLQotICAgIGV4dGVuc2lvbiA9IHBhcnNlKCJ7IFwi
bWFuaWZlc3RfdmVyc2lvblwiOiAyLCBcInBlcm1pc3Npb25zXCI6IFsgXCJodHRwOi8vd3d3Lndl
YmtpdC5vcmcvXCIgXSwgXCJvcHRpb25hbF9wZXJtaXNzaW9uc1wiOiBbIFwiaHR0cDovL3d3dy5l
eGFtcGxlLmNvbS9cIiBdLCBcImhvc3RfcGVybWlzc2lvbnNcIjogWyBcImh0dHBzOi8vd2Via2l0
Lm9yZy9cIiBdLCBcIm5hbWVcIjogXCJUZXN0XCIsIFwidmVyc2lvblwiOiBcIjEuMFwiLCBcImRl
c2NyaXB0aW9uXCI6IFwiVGVzdCBkZXNjcmlwdGlvblwiIH0iKTsKLSAgICBnX2Fzc2VydF9jbXBp
bnQoZ19saXN0X2xlbmd0aCh3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfcmVxdWVzdGVkX3Blcm1p
c3Npb25fbWF0Y2hfcGF0dGVybnMoZXh0ZW5zaW9uLmdldCgpKSksID09LCAxKTsKLSAgICBnX2Fz
c2VydF9jbXBzdHIod2Via2l0X3dlYl9leHRlbnNpb25fbWF0Y2hfcGF0dGVybl9nZXRfc3RyaW5n
KHN0YXRpY19jYXN0PFdlYktpdFdlYkV4dGVuc2lvbk1hdGNoUGF0dGVybio+KGdfbGlzdF9udGhf
ZGF0YSh3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfcmVxdWVzdGVkX3Blcm1pc3Npb25fbWF0Y2hf
cGF0dGVybnMoZXh0ZW5zaW9uLmdldCgpKSwgMCkpKSwgPT0sICJodHRwOi8vd3d3LndlYmtpdC5v
cmcvIik7Ci0gICAgZ19hc3NlcnRfY21waW50KGdfbGlzdF9sZW5ndGgod2Via2l0X3dlYl9leHRl
bnNpb25fZ2V0X29wdGlvbmFsX3Blcm1pc3Npb25fbWF0Y2hfcGF0dGVybnMoZXh0ZW5zaW9uLmdl
dCgpKSksID09LCAxKTsKLSAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3dlYl9leHRlbnNpb25f
bWF0Y2hfcGF0dGVybl9nZXRfc3RyaW5nKHN0YXRpY19jYXN0PFdlYktpdFdlYkV4dGVuc2lvbk1h
dGNoUGF0dGVybio+KGdfbGlzdF9udGhfZGF0YSh3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfb3B0
aW9uYWxfcGVybWlzc2lvbl9tYXRjaF9wYXR0ZXJucyhleHRlbnNpb24uZ2V0KCkpLCAwKSkpLCA9
PSwgImh0dHA6Ly93d3cuZXhhbXBsZS5jb20vIik7Ci0KLSAgICAvLyBNYWtlIHN1cmUgbWFuaWZl
c3QgdjMgcGFyc2VzIGhvc3RzIGZyb20gaG9zdF9wZXJtaXNzaW9ucywgYW5kIGlnbm9yZXMgaG9z
dHMgaW4gcGVybWlzc2lvbnMgYW5kIG9wdGlvbmFsX3Blcm1pc3Npb25zLgotCi0gICAgZXh0ZW5z
aW9uID0gcGFyc2UoInsgXCJtYW5pZmVzdF92ZXJzaW9uXCI6IDMsIFwicGVybWlzc2lvbnNcIjog
WyBcImh0dHA6Ly93d3cud2Via2l0Lm9yZy9cIiBdLCBcIm9wdGlvbmFsX3Blcm1pc3Npb25zXCI6
IFsgXCJodHRwOi8vd3d3LmV4YW1wbGUuY29tL1wiIF0sIFwiaG9zdF9wZXJtaXNzaW9uc1wiOiBb
IFwiaHR0cHM6Ly93ZWJraXQub3JnL1wiIF0sIFwibmFtZVwiOiBcIlRlc3RcIiwgXCJ2ZXJzaW9u
XCI6IFwiMS4wXCIsIFwiZGVzY3JpcHRpb25cIjogXCJUZXN0IGRlc2NyaXB0aW9uXCIgfSIpOwot
ICAgIGdfYXNzZXJ0X2NtcGludChnX2xpc3RfbGVuZ3RoKHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dl
dF9yZXF1ZXN0ZWRfcGVybWlzc2lvbl9tYXRjaF9wYXR0ZXJucyhleHRlbnNpb24uZ2V0KCkpKSwg
PT0sIDEpOwotICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfd2ViX2V4dGVuc2lvbl9tYXRjaF9w
YXR0ZXJuX2dldF9zdHJpbmcoc3RhdGljX2Nhc3Q8V2ViS2l0V2ViRXh0ZW5zaW9uTWF0Y2hQYXR0
ZXJuKj4oZ19saXN0X250aF9kYXRhKHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9yZXF1ZXN0ZWRf
cGVybWlzc2lvbl9tYXRjaF9wYXR0ZXJucyhleHRlbnNpb24uZ2V0KCkpLCAwKSkpLCA9PSwgImh0
dHBzOi8vd2Via2l0Lm9yZy8iKTsKLSAgICBnX2Fzc2VydF9udWxsKHdlYmtpdF93ZWJfZXh0ZW5z
aW9uX2dldF9vcHRpb25hbF9wZXJtaXNzaW9uX21hdGNoX3BhdHRlcm5zKGV4dGVuc2lvbi5nZXQo
KSkpOwotCi0gICAgLy8gTWFrZSBzdXJlIG1hbmlmZXN0IHYzIHBhcnNlcyBvcHRpb25hbF9ob3N0
X3Blcm1pc3Npb25zLgotCi0gICAgZXh0ZW5zaW9uID0gcGFyc2UoInsgXCJtYW5pZmVzdF92ZXJz
aW9uXCI6IDMsIFwib3B0aW9uYWxfaG9zdF9wZXJtaXNzaW9uc1wiOiBbIFwiaHR0cDovL3d3dy5l
eGFtcGxlLmNvbS9cIiBdLCBcImhvc3RfcGVybWlzc2lvbnNcIjogWyBcImh0dHBzOi8vd2Via2l0
Lm9yZy9cIiBdLCBcIm5hbWVcIjogXCJUZXN0XCIsIFwidmVyc2lvblwiOiBcIjEuMFwiLCBcImRl
c2NyaXB0aW9uXCI6IFwiVGVzdCBkZXNjcmlwdGlvblwiIH0iKTsKLSAgICBnX2Fzc2VydF9jbXBp
bnQoZ19saXN0X2xlbmd0aCh3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfcmVxdWVzdGVkX3Blcm1p
c3Npb25fbWF0Y2hfcGF0dGVybnMoZXh0ZW5zaW9uLmdldCgpKSksID09LCAxKTsKLSAgICBnX2Fz
c2VydF9jbXBzdHIod2Via2l0X3dlYl9leHRlbnNpb25fbWF0Y2hfcGF0dGVybl9nZXRfc3RyaW5n
KHN0YXRpY19jYXN0PFdlYktpdFdlYkV4dGVuc2lvbk1hdGNoUGF0dGVybio+KGdfbGlzdF9udGhf
ZGF0YSh3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfcmVxdWVzdGVkX3Blcm1pc3Npb25fbWF0Y2hf
cGF0dGVybnMoZXh0ZW5zaW9uLmdldCgpKSwgMCkpKSwgPT0sICJodHRwczovL3dlYmtpdC5vcmcv
Iik7Ci0gICAgZ19hc3NlcnRfY21waW50KGdfbGlzdF9sZW5ndGgod2Via2l0X3dlYl9leHRlbnNp
b25fZ2V0X29wdGlvbmFsX3Blcm1pc3Npb25fbWF0Y2hfcGF0dGVybnMoZXh0ZW5zaW9uLmdldCgp
KSksID09LCAxKTsKLSAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3dlYl9leHRlbnNpb25fbWF0
Y2hfcGF0dGVybl9nZXRfc3RyaW5nKHN0YXRpY19jYXN0PFdlYktpdFdlYkV4dGVuc2lvbk1hdGNo
UGF0dGVybio+KGdfbGlzdF9udGhfZGF0YSh3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfb3B0aW9u
YWxfcGVybWlzc2lvbl9tYXRjaF9wYXR0ZXJucyhleHRlbnNpb24uZ2V0KCkpLCAwKSkpLCA9PSwg
Imh0dHA6Ly93d3cuZXhhbXBsZS5jb20vIik7Ci19Ci0KLXN0YXRpYyB2b2lkIHRlc3RCYWNrZ3Jv
dW5kUGFyc2luZyhUZXN0KiwgZ2NvbnN0cG9pbnRlcikKLXsKLSAgICBHVW5pcXVlT3V0UHRyPEdF
cnJvcj4gZXJyb3I7Ci0gICAgYXV0byBwYXJzZSA9IFsmXShjb25zdCBnY2hhciogbWFuaWZlc3RT
dHJpbmcpIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0R1JlZih3ZWJraXRXZWJFeHRlbnNpb25DcmVh
dGUoeyB7ICJtYW5pZmVzdC5qc29uIl9zLCBjcmVhdGVHQnl0ZXMobWFuaWZlc3RTdHJpbmcpIH0g
fSwgJmVycm9yLm91dFB0cigpKSk7Ci0gICAgfTsKLQotICAgIEdSZWZQdHI8V2ViS2l0V2ViRXh0
ZW5zaW9uPiBleHRlbnNpb24gPSBwYXJzZSgieyBcIm1hbmlmZXN0X3ZlcnNpb25cIjogMiwgXCJi
YWNrZ3JvdW5kXCI6IHsgXCJzY3JpcHRzXCI6IFsgXCJ0ZXN0LmpzXCIgXSB9LCBcIm5hbWVcIjog
XCJUZXN0XCIsIFwidmVyc2lvblwiOiBcIjEuMFwiLCBcImRlc2NyaXB0aW9uXCI6IFwiVGVzdCBk
ZXNjcmlwdGlvblwiIH0iKTsKLSAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF93ZWJfZXh0ZW5zaW9u
X2dldF9oYXNfYmFja2dyb3VuZF9jb250ZW50KGV4dGVuc2lvbi5nZXQoKSkpOwotICAgIGdfYXNz
ZXJ0X3RydWUod2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X2hhc19wZXJzaXN0ZW50X2JhY2tncm91
bmRfY29udGVudChleHRlbnNpb24uZ2V0KCkpKTsKLSAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRf
d2ViX2V4dGVuc2lvbl9nZXRfaGFzX3NlcnZpY2Vfd29ya2VyX2JhY2tncm91bmRfY29udGVudChl
eHRlbnNpb24uZ2V0KCkpKTsKLSAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfd2ViX2V4dGVuc2lv
bl9nZXRfaGFzX21vZHVsYXJfYmFja2dyb3VuZF9jb250ZW50KGV4dGVuc2lvbi5nZXQoKSkpOwot
ICAgIGdfYXNzZXJ0X25vX2Vycm9yKGVycm9yLmdldCgpKTsKLQotICAgIGV4dGVuc2lvbiA9IHBh
cnNlKCJ7XCJtYW5pZmVzdF92ZXJzaW9uXCI6MixcImJhY2tncm91bmRcIjp7XCJwYWdlXCI6XCJ0
ZXN0Lmh0bWxcIixcInBlcnNpc3RlbnRcIjpmYWxzZX0sXCJuYW1lXCI6XCJUZXN0XCIsXCJ2ZXJz
aW9uXCI6XCIxLjBcIixcImRlc2NyaXB0aW9uXCI6XCJUZXN0XCJ9Iik7Ci0gICAgZ19hc3NlcnRf
bm9fZXJyb3IoZXJyb3IuZ2V0KCkpOwotICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X3dlYl9leHRl
bnNpb25fZ2V0X2hhc19iYWNrZ3JvdW5kX2NvbnRlbnQoZXh0ZW5zaW9uLmdldCgpKSk7Ci0gICAg
Z19hc3NlcnRfZmFsc2Uod2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X2hhc19wZXJzaXN0ZW50X2Jh
Y2tncm91bmRfY29udGVudChleHRlbnNpb24uZ2V0KCkpKTsKLSAgICBnX2Fzc2VydF9mYWxzZSh3
ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfaGFzX3NlcnZpY2Vfd29ya2VyX2JhY2tncm91bmRfY29u
dGVudChleHRlbnNpb24uZ2V0KCkpKTsKLSAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfd2ViX2V4
dGVuc2lvbl9nZXRfaGFzX21vZHVsYXJfYmFja2dyb3VuZF9jb250ZW50KGV4dGVuc2lvbi5nZXQo
KSkpOwotCi0gICAgZXh0ZW5zaW9uID0gcGFyc2UoInsgXCJtYW5pZmVzdF92ZXJzaW9uXCI6IDIs
IFwiYmFja2dyb3VuZFwiOiB7IFwic2NyaXB0c1wiOiBbIFwidGVzdC0xLmpzXCIsIFwiXCIsIFwi
dGVzdC0yLmpzXCIgXSwgXCJwZXJzaXN0ZW50XCI6IHRydWUgfSwgXCJuYW1lXCI6IFwiVGVzdFwi
LCBcInZlcnNpb25cIjogXCIxLjBcIiwgXCJkZXNjcmlwdGlvblwiOiBcIlRlc3QgZGVzY3JpcHRp
b25cIiB9Iik7Ci0gICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfaGFz
X2JhY2tncm91bmRfY29udGVudChleHRlbnNpb24uZ2V0KCkpKTsKLSAgICBnX2Fzc2VydF90cnVl
KHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9oYXNfcGVyc2lzdGVudF9iYWNrZ3JvdW5kX2NvbnRl
bnQoZXh0ZW5zaW9uLmdldCgpKSk7Ci0gICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3dlYl9leHRl
bnNpb25fZ2V0X2hhc19zZXJ2aWNlX3dvcmtlcl9iYWNrZ3JvdW5kX2NvbnRlbnQoZXh0ZW5zaW9u
LmdldCgpKSk7Ci0gICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X2hh
c19tb2R1bGFyX2JhY2tncm91bmRfY29udGVudChleHRlbnNpb24uZ2V0KCkpKTsKLSAgICBnX2Fz
c2VydF9ub19lcnJvcihlcnJvci5nZXQoKSk7Ci0KLSAgICBleHRlbnNpb24gPSBwYXJzZSgieyBc
Im1hbmlmZXN0X3ZlcnNpb25cIjogMiwgXCJiYWNrZ3JvdW5kXCI6IHsgXCJzZXJ2aWNlX3dvcmtl
clwiOiBcInRlc3QuanNcIiB9LCBcIm5hbWVcIjogXCJUZXN0XCIsIFwidmVyc2lvblwiOiBcIjEu
MFwiLCBcImRlc2NyaXB0aW9uXCI6IFwiVGVzdCBkZXNjcmlwdGlvblwiIH0iKTsKLSAgICBnX2Fz
c2VydF90cnVlKHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9oYXNfYmFja2dyb3VuZF9jb250ZW50
KGV4dGVuc2lvbi5nZXQoKSkpOwotICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF93ZWJfZXh0ZW5z
aW9uX2dldF9oYXNfcGVyc2lzdGVudF9iYWNrZ3JvdW5kX2NvbnRlbnQoZXh0ZW5zaW9uLmdldCgp
KSk7Ci0gICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfaGFzX3NlcnZp
Y2Vfd29ya2VyX2JhY2tncm91bmRfY29udGVudChleHRlbnNpb24uZ2V0KCkpKTsKLSAgICBnX2Fz
c2VydF9mYWxzZSh3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfaGFzX21vZHVsYXJfYmFja2dyb3Vu
ZF9jb250ZW50KGV4dGVuc2lvbi5nZXQoKSkpOwotICAgIGdfYXNzZXJ0X25vX2Vycm9yKGVycm9y
LmdldCgpKTsKLQotICAgIGV4dGVuc2lvbiA9IHBhcnNlKCJ7IFwibWFuaWZlc3RfdmVyc2lvblwi
OiAyLCBcImJhY2tncm91bmRcIjogeyBcInNjcmlwdHNcIjogWyBcInRlc3QtMS5qc1wiLCBcInRl
c3QtMi5qc1wiIF0sIFwic2VydmljZV93b3JrZXJcIjogXCJ0ZXN0LmpzXCIsIFwicGVyc2lzdGVu
dFwiOiBmYWxzZSB9LCBcIm5hbWVcIjogXCJUZXN0XCIsIFwidmVyc2lvblwiOiBcIjEuMFwiLCBc
ImRlc2NyaXB0aW9uXCI6IFwiVGVzdCBkZXNjcmlwdGlvblwiIH0iKTsKLSAgICBnX2Fzc2VydF90
cnVlKHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9oYXNfYmFja2dyb3VuZF9jb250ZW50KGV4dGVu
c2lvbi5nZXQoKSkpOwotICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dl
dF9oYXNfcGVyc2lzdGVudF9iYWNrZ3JvdW5kX2NvbnRlbnQoZXh0ZW5zaW9uLmdldCgpKSk7Ci0g
ICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X2hhc19zZXJ2aWNlX3dv
cmtlcl9iYWNrZ3JvdW5kX2NvbnRlbnQoZXh0ZW5zaW9uLmdldCgpKSk7Ci0gICAgZ19hc3NlcnRf
ZmFsc2Uod2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X2hhc19tb2R1bGFyX2JhY2tncm91bmRfY29u
dGVudChleHRlbnNpb24uZ2V0KCkpKTsKLSAgICBnX2Fzc2VydF9ub19lcnJvcihlcnJvci5nZXQo
KSk7Ci0KLSAgICBleHRlbnNpb24gPSBwYXJzZSgieyBcIm1hbmlmZXN0X3ZlcnNpb25cIjogMiwg
XCJiYWNrZ3JvdW5kXCI6IHsgXCJwYWdlXCI6IFwidGVzdC5odG1sXCIsIFwic2VydmljZV93b3Jr
ZXJcIjogXCJ0ZXN0LmpzXCIsIFwicGVyc2lzdGVudFwiOiBmYWxzZSB9LCBcIm5hbWVcIjogXCJU
ZXN0XCIsIFwidmVyc2lvblwiOiBcIjEuMFwiLCBcImRlc2NyaXB0aW9uXCI6IFwiVGVzdCBkZXNj
cmlwdGlvblwiIH0iKTsKLSAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dl
dF9oYXNfYmFja2dyb3VuZF9jb250ZW50KGV4dGVuc2lvbi5nZXQoKSkpOwotICAgIGdfYXNzZXJ0
X2ZhbHNlKHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9oYXNfcGVyc2lzdGVudF9iYWNrZ3JvdW5k
X2NvbnRlbnQoZXh0ZW5zaW9uLmdldCgpKSk7Ci0gICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3dl
Yl9leHRlbnNpb25fZ2V0X2hhc19zZXJ2aWNlX3dvcmtlcl9iYWNrZ3JvdW5kX2NvbnRlbnQoZXh0
ZW5zaW9uLmdldCgpKSk7Ci0gICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3dlYl9leHRlbnNpb25f
Z2V0X2hhc19tb2R1bGFyX2JhY2tncm91bmRfY29udGVudChleHRlbnNpb24uZ2V0KCkpKTsKLSAg
ICBnX2Fzc2VydF9ub19lcnJvcihlcnJvci5nZXQoKSk7Ci0KLSAgICBleHRlbnNpb24gPSBwYXJz
ZSgieyBcIm1hbmlmZXN0X3ZlcnNpb25cIjogMiwgXCJiYWNrZ3JvdW5kXCI6IHsgXCJzY3JpcHRz
XCI6IFsgXCJ0ZXN0LTEuanNcIiwgXCJ0ZXN0LTIuanNcIiBdLCBcInBhZ2VcIjogXCJ0ZXN0Lmh0
bWxcIiwgXCJzZXJ2aWNlX3dvcmtlclwiOiBcInRlc3QuanNcIiwgXCJwZXJzaXN0ZW50XCI6IGZh
bHNlIH0sIFwibmFtZVwiOiBcIlRlc3RcIiwgXCJ2ZXJzaW9uXCI6IFwiMS4wXCIsIFwiZGVzY3Jp
cHRpb25cIjogXCJUZXN0IGRlc2NyaXB0aW9uXCIgfSIpOwotICAgIGdfYXNzZXJ0X3RydWUod2Vi
a2l0X3dlYl9leHRlbnNpb25fZ2V0X2hhc19iYWNrZ3JvdW5kX2NvbnRlbnQoZXh0ZW5zaW9uLmdl
dCgpKSk7Ci0gICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X2hhc19w
ZXJzaXN0ZW50X2JhY2tncm91bmRfY29udGVudChleHRlbnNpb24uZ2V0KCkpKTsKLSAgICBnX2Fz
c2VydF9mYWxzZSh3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfaGFzX3NlcnZpY2Vfd29ya2VyX2Jh
Y2tncm91bmRfY29udGVudChleHRlbnNpb24uZ2V0KCkpKTsKLSAgICBnX2Fzc2VydF9mYWxzZSh3
ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfaGFzX21vZHVsYXJfYmFja2dyb3VuZF9jb250ZW50KGV4
dGVuc2lvbi5nZXQoKSkpOwotICAgIGdfYXNzZXJ0X25vX2Vycm9yKGVycm9yLmdldCgpKTsKLQot
ICAgIGV4dGVuc2lvbiA9IHBhcnNlKCJ7IFwibWFuaWZlc3RfdmVyc2lvblwiOiAyLCBcImJhY2tn
cm91bmRcIjogeyBcInNlcnZpY2Vfd29ya2VyXCI6IFwidGVzdC5qc1wiLCBcInBlcnNpc3RlbnRc
IjogZmFsc2UgfSwgXCJuYW1lXCI6IFwiVGVzdFwiLCBcInZlcnNpb25cIjogXCIxLjBcIiwgXCJk
ZXNjcmlwdGlvblwiOiBcIlRlc3QgZGVzY3JpcHRpb25cIiB9Iik7Ci0gICAgZ19hc3NlcnRfdHJ1
ZSh3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfaGFzX2JhY2tncm91bmRfY29udGVudChleHRlbnNp
b24uZ2V0KCkpKTsKLSAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRf
aGFzX3BlcnNpc3RlbnRfYmFja2dyb3VuZF9jb250ZW50KGV4dGVuc2lvbi5nZXQoKSkpOwotICAg
IGdfYXNzZXJ0X3RydWUod2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X2hhc19zZXJ2aWNlX3dvcmtl
cl9iYWNrZ3JvdW5kX2NvbnRlbnQoZXh0ZW5zaW9uLmdldCgpKSk7Ci0gICAgZ19hc3NlcnRfZmFs
c2Uod2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X2hhc19tb2R1bGFyX2JhY2tncm91bmRfY29udGVu
dChleHRlbnNpb24uZ2V0KCkpKTsKLSAgICBnX2Fzc2VydF9ub19lcnJvcihlcnJvci5nZXQoKSk7
Ci0KLSAgICBleHRlbnNpb24gPSBwYXJzZSgieyBcIm1hbmlmZXN0X3ZlcnNpb25cIjogMiwgXCJi
YWNrZ3JvdW5kXCI6IHsgXCJzZXJ2aWNlX3dvcmtlclwiOiBcInRlc3QuanNcIiwgXCJ0eXBlXCI6
IFwibW9kdWxlXCIsIFwicGVyc2lzdGVudFwiOiBmYWxzZSB9LCBcIm5hbWVcIjogXCJUZXN0XCIs
IFwidmVyc2lvblwiOiBcIjEuMFwiLCBcImRlc2NyaXB0aW9uXCI6IFwiVGVzdCBkZXNjcmlwdGlv
blwiIH0iKTsKLSAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9oYXNf
YmFja2dyb3VuZF9jb250ZW50KGV4dGVuc2lvbi5nZXQoKSkpOwotICAgIGdfYXNzZXJ0X2ZhbHNl
KHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9oYXNfcGVyc2lzdGVudF9iYWNrZ3JvdW5kX2NvbnRl
bnQoZXh0ZW5zaW9uLmdldCgpKSk7Ci0gICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfd2ViX2V4dGVu
c2lvbl9nZXRfaGFzX3NlcnZpY2Vfd29ya2VyX2JhY2tncm91bmRfY29udGVudChleHRlbnNpb24u
Z2V0KCkpKTsKLSAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9oYXNf
bW9kdWxhcl9iYWNrZ3JvdW5kX2NvbnRlbnQoZXh0ZW5zaW9uLmdldCgpKSk7Ci0gICAgZ19hc3Nl
cnRfbm9fZXJyb3IoZXJyb3IuZ2V0KCkpOwotCi0gICAgZXh0ZW5zaW9uID0gcGFyc2UoInsgXCJt
YW5pZmVzdF92ZXJzaW9uXCI6IDIsIFwiYmFja2dyb3VuZFwiOiB7IFwic2NyaXB0c1wiOiBbIFwi
dGVzdC0xLmpzXCIsIFwidGVzdC0yLmpzXCIgXSwgXCJ0eXBlXCI6IFwibW9kdWxlXCIsIFwicGVy
c2lzdGVudFwiOiBmYWxzZSB9LCBcIm5hbWVcIjogXCJUZXN0XCIsIFwidmVyc2lvblwiOiBcIjEu
MFwiLCBcImRlc2NyaXB0aW9uXCI6IFwiVGVzdCBkZXNjcmlwdGlvblwiIH0iKTsKLSAgICBnX2Fz
c2VydF90cnVlKHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9oYXNfYmFja2dyb3VuZF9jb250ZW50
KGV4dGVuc2lvbi5nZXQoKSkpOwotICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF93ZWJfZXh0ZW5z
aW9uX2dldF9oYXNfcGVyc2lzdGVudF9iYWNrZ3JvdW5kX2NvbnRlbnQoZXh0ZW5zaW9uLmdldCgp
KSk7Ci0gICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X2hhc19zZXJ2
aWNlX3dvcmtlcl9iYWNrZ3JvdW5kX2NvbnRlbnQoZXh0ZW5zaW9uLmdldCgpKSk7Ci0gICAgZ19h
c3NlcnRfdHJ1ZSh3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfaGFzX21vZHVsYXJfYmFja2dyb3Vu
ZF9jb250ZW50KGV4dGVuc2lvbi5nZXQoKSkpOwotICAgIGdfYXNzZXJ0X25vX2Vycm9yKGVycm9y
LmdldCgpKTsKLQotICAgIC8vIEludmFsaWQgY2FzZXMKLQotICAgIGV4dGVuc2lvbiA9IHBhcnNl
KCJ7IFwibWFuaWZlc3RfdmVyc2lvblwiOiAzLCBcImJhY2tncm91bmRcIjogeyBcInBhZ2VcIjog
XCJ0ZXN0Lmh0bWxcIiwgXCJwZXJzaXN0ZW50XCI6IHRydWUgfSwgXCJuYW1lXCI6IFwiVGVzdFwi
LCBcInZlcnNpb25cIjogXCIxLjBcIiwgXCJkZXNjcmlwdGlvblwiOiBcIlRlc3QgZGVzY3JpcHRp
b25cIiB9Iik7Ci0gICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfaGFz
X2JhY2tncm91bmRfY29udGVudChleHRlbnNpb24uZ2V0KCkpKTsKLSAgICBnX2Fzc2VydF9mYWxz
ZSh3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfaGFzX3BlcnNpc3RlbnRfYmFja2dyb3VuZF9jb250
ZW50KGV4dGVuc2lvbi5nZXQoKSkpOwotICAgIGdfYXNzZXJ0X2Vycm9yKGVycm9yLmdldCgpLCBX
RUJLSVRfV0VCX0VYVEVOU0lPTl9FUlJPUiwgV0VCS0lUX1dFQl9FWFRFTlNJT05fRVJST1JfSU5W
QUxJRF9CQUNLR1JPVU5EX1BFUlNJU1RFTkNFKTsKLQotICAgIGV4dGVuc2lvbiA9IHBhcnNlKCJ7
IFwibWFuaWZlc3RfdmVyc2lvblwiOiAyLCBcImJhY2tncm91bmRcIjogeyBcInNlcnZpY2Vfd29y
a2VyXCI6IFwidGVzdC5qc1wiLCBcInBlcnNpc3RlbnRcIjogdHJ1ZSB9LCBcIm5hbWVcIjogXCJU
ZXN0XCIsIFwidmVyc2lvblwiOiBcIjEuMFwiLCBcImRlc2NyaXB0aW9uXCI6IFwiVGVzdCBkZXNj
cmlwdGlvblwiIH0iKTsKLSAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dl
dF9oYXNfYmFja2dyb3VuZF9jb250ZW50KGV4dGVuc2lvbi5nZXQoKSkpOwotICAgIGdfYXNzZXJ0
X2ZhbHNlKHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9oYXNfcGVyc2lzdGVudF9iYWNrZ3JvdW5k
X2NvbnRlbnQoZXh0ZW5zaW9uLmdldCgpKSk7Ci0gICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3dl
Yl9leHRlbnNpb25fZ2V0X2hhc19tb2R1bGFyX2JhY2tncm91bmRfY29udGVudChleHRlbnNpb24u
Z2V0KCkpKTsKLSAgICBnX2Fzc2VydF9lcnJvcihlcnJvci5nZXQoKSwgV0VCS0lUX1dFQl9FWFRF
TlNJT05fRVJST1IsIFdFQktJVF9XRUJfRVhURU5TSU9OX0VSUk9SX0lOVkFMSURfQkFDS0dST1VO
RF9QRVJTSVNURU5DRSk7Ci0KLSAgICBleHRlbnNpb24gPSBwYXJzZSgieyBcIm1hbmlmZXN0X3Zl
cnNpb25cIjogMiwgXCJiYWNrZ3JvdW5kXCI6IHsgfSwgXCJuYW1lXCI6IFwiVGVzdFwiLCBcInZl
cnNpb25cIjogXCIxLjBcIiwgXCJkZXNjcmlwdGlvblwiOiBcIlRlc3QgZGVzY3JpcHRpb25cIiB9
Iik7Ci0gICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X2hhc19iYWNr
Z3JvdW5kX2NvbnRlbnQoZXh0ZW5zaW9uLmdldCgpKSk7Ci0gICAgZ19hc3NlcnRfZmFsc2Uod2Vi
a2l0X3dlYl9leHRlbnNpb25fZ2V0X2hhc19wZXJzaXN0ZW50X2JhY2tncm91bmRfY29udGVudChl
eHRlbnNpb24uZ2V0KCkpKTsKLSAgICBnX2Fzc2VydF9lcnJvcihlcnJvci5nZXQoKSwgV0VCS0lU
X1dFQl9FWFRFTlNJT05fRVJST1IsIFdFQktJVF9XRUJfRVhURU5TSU9OX0VSUk9SX0lOVkFMSURf
TUFOSUZFU1RfRU5UUlkpOwotCi0gICAgZXh0ZW5zaW9uID0gcGFyc2UoInsgXCJtYW5pZmVzdF92
ZXJzaW9uXCI6IDIsIFwiYmFja2dyb3VuZFwiOiBbIFwiaW52YWxpZFwiIF0sIFwibmFtZVwiOiBc
IlRlc3RcIiwgXCJ2ZXJzaW9uXCI6IFwiMS4wXCIsIFwiZGVzY3JpcHRpb25cIjogXCJUZXN0IGRl
c2NyaXB0aW9uXCIgfSIpOwotICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF93ZWJfZXh0ZW5zaW9u
X2dldF9oYXNfYmFja2dyb3VuZF9jb250ZW50KGV4dGVuc2lvbi5nZXQoKSkpOwotICAgIGdfYXNz
ZXJ0X2ZhbHNlKHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9oYXNfcGVyc2lzdGVudF9iYWNrZ3Jv
dW5kX2NvbnRlbnQoZXh0ZW5zaW9uLmdldCgpKSk7Ci0gICAgZ19hc3NlcnRfZXJyb3IoZXJyb3Iu
Z2V0KCksIFdFQktJVF9XRUJfRVhURU5TSU9OX0VSUk9SLCBXRUJLSVRfV0VCX0VYVEVOU0lPTl9F
UlJPUl9JTlZBTElEX01BTklGRVNUX0VOVFJZKTsKLQotICAgIGV4dGVuc2lvbiA9IHBhcnNlKCJ7
IFwibWFuaWZlc3RfdmVyc2lvblwiOiAyLCBcImJhY2tncm91bmRcIjogeyBcInNjcmlwdHNcIjog
W10sIFwicGVyc2lzdGVudFwiOiBmYWxzZSB9LCBcIm5hbWVcIjogXCJUZXN0XCIsIFwidmVyc2lv
blwiOiBcIjEuMFwiLCBcImRlc2NyaXB0aW9uXCI6IFwiVGVzdCBkZXNjcmlwdGlvblwiIH0iKTsK
LSAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfaGFzX2JhY2tncm91
bmRfY29udGVudChleHRlbnNpb24uZ2V0KCkpKTsKLSAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRf
d2ViX2V4dGVuc2lvbl9nZXRfaGFzX3BlcnNpc3RlbnRfYmFja2dyb3VuZF9jb250ZW50KGV4dGVu
c2lvbi5nZXQoKSkpOwotICAgIGdfYXNzZXJ0X2Vycm9yKGVycm9yLmdldCgpLCBXRUJLSVRfV0VC
X0VYVEVOU0lPTl9FUlJPUiwgV0VCS0lUX1dFQl9FWFRFTlNJT05fRVJST1JfSU5WQUxJRF9NQU5J
RkVTVF9FTlRSWSk7Ci0KLSAgICBleHRlbnNpb24gPSBwYXJzZSgieyBcIm1hbmlmZXN0X3ZlcnNp
b25cIjogMiwgXCJiYWNrZ3JvdW5kXCI6IHsgXCJwYWdlXCI6IFwiXCIsIFwicGVyc2lzdGVudFwi
OiBmYWxzZSB9LCBcIm5hbWVcIjogXCJUZXN0XCIsIFwidmVyc2lvblwiOiBcIjEuMFwiLCBcImRl
c2NyaXB0aW9uXCI6IFwiVGVzdCBkZXNjcmlwdGlvblwiIH0iKTsKLSAgICBnX2Fzc2VydF9mYWxz
ZSh3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfaGFzX2JhY2tncm91bmRfY29udGVudChleHRlbnNp
b24uZ2V0KCkpKTsKLSAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRf
aGFzX3BlcnNpc3RlbnRfYmFja2dyb3VuZF9jb250ZW50KGV4dGVuc2lvbi5nZXQoKSkpOwotICAg
IGdfYXNzZXJ0X2Vycm9yKGVycm9yLmdldCgpLCBXRUJLSVRfV0VCX0VYVEVOU0lPTl9FUlJPUiwg
V0VCS0lUX1dFQl9FWFRFTlNJT05fRVJST1JfSU5WQUxJRF9NQU5JRkVTVF9FTlRSWSk7Ci0KLSAg
ICBleHRlbnNpb24gPSBwYXJzZSgieyBcIm1hbmlmZXN0X3ZlcnNpb25cIjogMiwgXCJiYWNrZ3Jv
dW5kXCI6IHsgXCJwYWdlXCI6IFsgXCJ0ZXN0Lmh0bWxcIiBdLCBcInBlcnNpc3RlbnRcIjogZmFs
c2UgfSwgXCJuYW1lXCI6IFwiVGVzdFwiLCBcInZlcnNpb25cIjogXCIxLjBcIiwgXCJkZXNjcmlw
dGlvblwiOiBcIlRlc3QgZGVzY3JpcHRpb25cIiB9Iik7Ci0gICAgZ19hc3NlcnRfZmFsc2Uod2Vi
a2l0X3dlYl9leHRlbnNpb25fZ2V0X2hhc19iYWNrZ3JvdW5kX2NvbnRlbnQoZXh0ZW5zaW9uLmdl
dCgpKSk7Ci0gICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X2hhc19w
ZXJzaXN0ZW50X2JhY2tncm91bmRfY29udGVudChleHRlbnNpb24uZ2V0KCkpKTsKLSAgICBnX2Fz
c2VydF9lcnJvcihlcnJvci5nZXQoKSwgV0VCS0lUX1dFQl9FWFRFTlNJT05fRVJST1IsIFdFQktJ
VF9XRUJfRVhURU5TSU9OX0VSUk9SX0lOVkFMSURfTUFOSUZFU1RfRU5UUlkpOwotCi0gICAgZXh0
ZW5zaW9uID0gcGFyc2UoInsgXCJtYW5pZmVzdF92ZXJzaW9uXCI6IDIsIFwiYmFja2dyb3VuZFwi
OiB7IFwic2NyaXB0c1wiOiBbIFsgXCJ0ZXN0LmpzXCIgXSBdLCBcInBlcnNpc3RlbnRcIjogZmFs
c2UgfSwgXCJuYW1lXCI6IFwiVGVzdFwiLCBcInZlcnNpb25cIjogXCIxLjBcIiwgXCJkZXNjcmlw
dGlvblwiOiBcIlRlc3QgZGVzY3JpcHRpb25cIiB9Iik7Ci0gICAgZ19hc3NlcnRfZmFsc2Uod2Vi
a2l0X3dlYl9leHRlbnNpb25fZ2V0X2hhc19iYWNrZ3JvdW5kX2NvbnRlbnQoZXh0ZW5zaW9uLmdl
dCgpKSk7Ci0gICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X2hhc19w
ZXJzaXN0ZW50X2JhY2tncm91bmRfY29udGVudChleHRlbnNpb24uZ2V0KCkpKTsKLSAgICBnX2Fz
c2VydF9lcnJvcihlcnJvci5nZXQoKSwgV0VCS0lUX1dFQl9FWFRFTlNJT05fRVJST1IsIFdFQktJ
VF9XRUJfRVhURU5TSU9OX0VSUk9SX0lOVkFMSURfTUFOSUZFU1RfRU5UUlkpOwotCi0gICAgZXh0
ZW5zaW9uID0gcGFyc2UoInsgXCJtYW5pZmVzdF92ZXJzaW9uXCI6IDIsIFwiYmFja2dyb3VuZFwi
OiB7IFwic2VydmljZV93b3JrZXJcIjogXCJcIiwgXCJwZXJzaXN0ZW50XCI6IGZhbHNlIH0sIFwi
bmFtZVwiOiBcIlRlc3RcIiwgXCJ2ZXJzaW9uXCI6IFwiMS4wXCIsIFwiZGVzY3JpcHRpb25cIjog
XCJUZXN0IGRlc2NyaXB0aW9uXCIgfSIpOwotICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF93ZWJf
ZXh0ZW5zaW9uX2dldF9oYXNfYmFja2dyb3VuZF9jb250ZW50KGV4dGVuc2lvbi5nZXQoKSkpOwot
ICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9oYXNfcGVyc2lzdGVu
dF9iYWNrZ3JvdW5kX2NvbnRlbnQoZXh0ZW5zaW9uLmdldCgpKSk7Ci0gICAgZ19hc3NlcnRfZXJy
b3IoZXJyb3IuZ2V0KCksIFdFQktJVF9XRUJfRVhURU5TSU9OX0VSUk9SLCBXRUJLSVRfV0VCX0VY
VEVOU0lPTl9FUlJPUl9JTlZBTElEX01BTklGRVNUX0VOVFJZKTsKLQotICAgIGV4dGVuc2lvbiA9
IHBhcnNlKCJ7IFwibWFuaWZlc3RfdmVyc2lvblwiOiAyLCBcImJhY2tncm91bmRcIjogeyBcInNl
cnZpY2Vfd29ya2VyXCI6IFsgXCJ0ZXN0LmpzXCIgXSwgXCJwZXJzaXN0ZW50XCI6IGZhbHNlIH0s
IFwibmFtZVwiOiBcIlRlc3RcIiwgXCJ2ZXJzaW9uXCI6IFwiMS4wXCIsIFwiZGVzY3JpcHRpb25c
IjogXCJUZXN0IGRlc2NyaXB0aW9uXCIgfSIpOwotICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF93
ZWJfZXh0ZW5zaW9uX2dldF9oYXNfYmFja2dyb3VuZF9jb250ZW50KGV4dGVuc2lvbi5nZXQoKSkp
OwotICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9oYXNfcGVyc2lz
dGVudF9iYWNrZ3JvdW5kX2NvbnRlbnQoZXh0ZW5zaW9uLmdldCgpKSk7Ci0gICAgZ19hc3NlcnRf
ZXJyb3IoZXJyb3IuZ2V0KCksIFdFQktJVF9XRUJfRVhURU5TSU9OX0VSUk9SLCBXRUJLSVRfV0VC
X0VYVEVOU0lPTl9FUlJPUl9JTlZBTElEX01BTklGRVNUX0VOVFJZKTsKLX0KLQotc3RhdGljIHZv
aWQgdGVzdEJhY2tncm91bmRQcmVmZXJyZWRFbnZpcm9ubWVudFBhcnNpbmcoVGVzdCosIGdjb25z
dHBvaW50ZXIpCi17Ci0gICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwotICAgIGF1dG8g
cGFyc2UgPSBbJl0oY29uc3QgZ2NoYXIqIG1hbmlmZXN0U3RyaW5nKSB7Ci0gICAgICAgIHJldHVy
biBhZG9wdEdSZWYod2Via2l0V2ViRXh0ZW5zaW9uQ3JlYXRlKHsgeyAibWFuaWZlc3QuanNvbiJf
cywgY3JlYXRlR0J5dGVzKG1hbmlmZXN0U3RyaW5nKSB9IH0sICZlcnJvci5vdXRQdHIoKSkpOwot
ICAgIH07Ci0KLSAgICBHUmVmUHRyPFdlYktpdFdlYkV4dGVuc2lvbj4gZXh0ZW5zaW9uID0gcGFy
c2UoInsgXCJtYW5pZmVzdF92ZXJzaW9uXCI6IDMsIFwiYmFja2dyb3VuZFwiOiB7IFwicHJlZmVy
cmVkX2Vudmlyb25tZW50XCI6IFsgXCJzZXJ2aWNlX3dvcmtlclwiLCBcImRvY3VtZW50XCIgXSwg
XCJzZXJ2aWNlX3dvcmtlclwiOiBcImJhY2tncm91bmQuanNcIiwgXCJzY3JpcHRzXCI6IFsgXCJi
YWNrZ3JvdW5kLmpzXCIgXSwgXCJwYWdlXCI6IFwiYmFja2dyb3VuZC5odG1sXCIgfSwgXCJuYW1l
XCI6IFwiVGVzdFwiLCBcInZlcnNpb25cIjogXCIxLjBcIiwgXCJkZXNjcmlwdGlvblwiOiBcIlRl
c3QgZGVzY3JpcHRpb25cIiB9Iik7Ci0gICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfd2ViX2V4dGVu
c2lvbl9nZXRfaGFzX2JhY2tncm91bmRfY29udGVudChleHRlbnNpb24uZ2V0KCkpKTsKLSAgICBn
X2Fzc2VydF90cnVlKHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9oYXNfc2VydmljZV93b3JrZXJf
YmFja2dyb3VuZF9jb250ZW50KGV4dGVuc2lvbi5nZXQoKSkpOwotICAgIGdfYXNzZXJ0X25vX2Vy
cm9yKGVycm9yLmdldCgpKTsKLQotICAgIGV4dGVuc2lvbiA9IHBhcnNlKCJ7IFwibWFuaWZlc3Rf
dmVyc2lvblwiOiAzLCBcImJhY2tncm91bmRcIjogeyBcInByZWZlcnJlZF9lbnZpcm9ubWVudFwi
OiBbIFwiZG9jdW1lbnRcIiwgXCJzZXJ2aWNlX3dvcmtlclwiIF0sIFwic2VydmljZV93b3JrZXJc
IjogXCJiYWNrZ3JvdW5kLmpzXCIsIFwic2NyaXB0c1wiOiBbIFwiYmFja2dyb3VuZC5qc1wiIF0s
IFwicGFnZVwiOiBcImJhY2tncm91bmQuaHRtbFwiIH0sIFwibmFtZVwiOiBcIlRlc3RcIiwgXCJ2
ZXJzaW9uXCI6IFwiMS4wXCIsIFwiZGVzY3JpcHRpb25cIjogXCJUZXN0IGRlc2NyaXB0aW9uXCIg
fSIpOwotICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X2hhc19iYWNr
Z3JvdW5kX2NvbnRlbnQoZXh0ZW5zaW9uLmdldCgpKSk7Ci0gICAgZ19hc3NlcnRfZmFsc2Uod2Vi
a2l0X3dlYl9leHRlbnNpb25fZ2V0X2hhc19zZXJ2aWNlX3dvcmtlcl9iYWNrZ3JvdW5kX2NvbnRl
bnQoZXh0ZW5zaW9uLmdldCgpKSk7Ci0gICAgZ19hc3NlcnRfbm9fZXJyb3IoZXJyb3IuZ2V0KCkp
OwotCi0gICAgZXh0ZW5zaW9uID0gcGFyc2UoInsgXCJtYW5pZmVzdF92ZXJzaW9uXCI6IDMsIFwi
YmFja2dyb3VuZFwiOiB7IFwicHJlZmVycmVkX2Vudmlyb25tZW50XCI6IFwic2VydmljZV93b3Jr
ZXJcIiwgXCJzZXJ2aWNlX3dvcmtlclwiOiBcImJhY2tncm91bmQuanNcIiB9LCBcIm5hbWVcIjog
XCJUZXN0XCIsIFwidmVyc2lvblwiOiBcIjEuMFwiLCBcImRlc2NyaXB0aW9uXCI6IFwiVGVzdCBk
ZXNjcmlwdGlvblwiIH0iKTsKLSAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF93ZWJfZXh0ZW5zaW9u
X2dldF9oYXNfYmFja2dyb3VuZF9jb250ZW50KGV4dGVuc2lvbi5nZXQoKSkpOwotICAgIGdfYXNz
ZXJ0X3RydWUod2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X2hhc19zZXJ2aWNlX3dvcmtlcl9iYWNr
Z3JvdW5kX2NvbnRlbnQoZXh0ZW5zaW9uLmdldCgpKSk7Ci0gICAgZ19hc3NlcnRfbm9fZXJyb3Io
ZXJyb3IuZ2V0KCkpOwotCi0gICAgZXh0ZW5zaW9uID0gcGFyc2UoInsgXCJtYW5pZmVzdF92ZXJz
aW9uXCI6IDMsIFwiYmFja2dyb3VuZFwiOiB7IFwicHJlZmVycmVkX2Vudmlyb25tZW50XCI6IFsg
XCJkb2N1bWVudFwiIF0sIFwicGFnZVwiOiBcImJhY2tncm91bmQuaHRtbFwiIH0sIFwibmFtZVwi
OiBcIlRlc3RcIiwgXCJ2ZXJzaW9uXCI6IFwiMS4wXCIsIFwiZGVzY3JpcHRpb25cIjogXCJUZXN0
IGRlc2NyaXB0aW9uXCIgfSIpOwotICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X3dlYl9leHRlbnNp
b25fZ2V0X2hhc19iYWNrZ3JvdW5kX2NvbnRlbnQoZXh0ZW5zaW9uLmdldCgpKSk7Ci0gICAgZ19h
c3NlcnRfZmFsc2Uod2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X2hhc19zZXJ2aWNlX3dvcmtlcl9i
YWNrZ3JvdW5kX2NvbnRlbnQoZXh0ZW5zaW9uLmdldCgpKSk7Ci0gICAgZ19hc3NlcnRfbm9fZXJy
b3IoZXJyb3IuZ2V0KCkpOwotCi0gICAgZXh0ZW5zaW9uID0gcGFyc2UoInsgXCJtYW5pZmVzdF92
ZXJzaW9uXCI6IDMsIFwiYmFja2dyb3VuZFwiOiB7IFwicHJlZmVycmVkX2Vudmlyb25tZW50XCI6
IFwiZG9jdW1lbnRcIiwgXCJzY3JpcHRzXCI6IFsgXCJiYWNrZ3JvdW5kLmpzXCIgXSB9LCBcIm5h
bWVcIjogXCJUZXN0XCIsIFwidmVyc2lvblwiOiBcIjEuMFwiLCBcImRlc2NyaXB0aW9uXCI6IFwi
VGVzdCBkZXNjcmlwdGlvblwiIH0iKTsKLSAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF93ZWJfZXh0
ZW5zaW9uX2dldF9oYXNfYmFja2dyb3VuZF9jb250ZW50KGV4dGVuc2lvbi5nZXQoKSkpOwotICAg
IGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9oYXNfc2VydmljZV93b3Jr
ZXJfYmFja2dyb3VuZF9jb250ZW50KGV4dGVuc2lvbi5nZXQoKSkpOwotICAgIGdfYXNzZXJ0X25v
X2Vycm9yKGVycm9yLmdldCgpKTsKLQotICAgIGV4dGVuc2lvbiA9IHBhcnNlKCJ7IFwibWFuaWZl
c3RfdmVyc2lvblwiOiAzLCBcImJhY2tncm91bmRcIjogeyBcInByZWZlcnJlZF9lbnZpcm9ubWVu
dFwiOiBbIFwiZG9jdW1lbnRcIiwgXCJzZXJ2aWNlX3dvcmtlclwiIF0sIFwic2NyaXB0c1wiOiBb
IFwiYmFja2dyb3VuZC5qc1wiIF0gfSwgXCJuYW1lXCI6IFwiVGVzdFwiLCBcInZlcnNpb25cIjog
XCIxLjBcIiwgXCJkZXNjcmlwdGlvblwiOiBcIlRlc3QgZGVzY3JpcHRpb25cIiB9Iik7Ci0gICAg
Z19hc3NlcnRfdHJ1ZSh3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfaGFzX2JhY2tncm91bmRfY29u
dGVudChleHRlbnNpb24uZ2V0KCkpKTsKLSAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfd2ViX2V4
dGVuc2lvbl9nZXRfaGFzX3NlcnZpY2Vfd29ya2VyX2JhY2tncm91bmRfY29udGVudChleHRlbnNp
b24uZ2V0KCkpKTsKLSAgICBnX2Fzc2VydF9ub19lcnJvcihlcnJvci5nZXQoKSk7Ci0KLSAgICBl
eHRlbnNpb24gPSBwYXJzZSgieyBcIm1hbmlmZXN0X3ZlcnNpb25cIjogMywgXCJiYWNrZ3JvdW5k
XCI6IHsgXCJwcmVmZXJyZWRfZW52aXJvbm1lbnRcIjogWyBcImRvY3VtZW50XCIsIDQyLCBcInVu
a25vd25cIiBdLCBcInNjcmlwdHNcIjogWyBcImJhY2tncm91bmQuanNcIiBdIH0sIFwibmFtZVwi
OiBcIlRlc3RcIiwgXCJ2ZXJzaW9uXCI6IFwiMS4wXCIsIFwiZGVzY3JpcHRpb25cIjogXCJUZXN0
IGRlc2NyaXB0aW9uXCIgfSIpOwotICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X3dlYl9leHRlbnNp
b25fZ2V0X2hhc19iYWNrZ3JvdW5kX2NvbnRlbnQoZXh0ZW5zaW9uLmdldCgpKSk7Ci0gICAgZ19h
c3NlcnRfZmFsc2Uod2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X2hhc19zZXJ2aWNlX3dvcmtlcl9i
YWNrZ3JvdW5kX2NvbnRlbnQoZXh0ZW5zaW9uLmdldCgpKSk7Ci0gICAgZ19hc3NlcnRfbm9fZXJy
b3IoZXJyb3IuZ2V0KCkpOwotCi0gICAgZXh0ZW5zaW9uID0gcGFyc2UoInsgXCJtYW5pZmVzdF92
ZXJzaW9uXCI6IDMsIFwiYmFja2dyb3VuZFwiOiB7IFwicHJlZmVycmVkX2Vudmlyb25tZW50XCI6
IFsgXCJ1bmtub3duXCIsIDQyIF0sIFwicGFnZVwiOiBcImJhY2tncm91bmQuaHRtbFwiIH0sIFwi
bmFtZVwiOiBcIlRlc3RcIiwgXCJ2ZXJzaW9uXCI6IFwiMS4wXCIsIFwiZGVzY3JpcHRpb25cIjog
XCJUZXN0IGRlc2NyaXB0aW9uXCIgfSIpOwotICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X3dlYl9l
eHRlbnNpb25fZ2V0X2hhc19iYWNrZ3JvdW5kX2NvbnRlbnQoZXh0ZW5zaW9uLmdldCgpKSk7Ci0g
ICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X2hhc19zZXJ2aWNlX3dv
cmtlcl9iYWNrZ3JvdW5kX2NvbnRlbnQoZXh0ZW5zaW9uLmdldCgpKSk7Ci0gICAgZ19hc3NlcnRf
bm9fZXJyb3IoZXJyb3IuZ2V0KCkpOwotCi0gICAgZXh0ZW5zaW9uID0gcGFyc2UoInsgXCJtYW5p
ZmVzdF92ZXJzaW9uXCI6IDMsIFwiYmFja2dyb3VuZFwiOiB7IFwicHJlZmVycmVkX2Vudmlyb25t
ZW50XCI6IFwidW5rbm93blwiLCBcInNlcnZpY2Vfd29ya2VyXCI6IFwiYmFja2dyb3VuZC5qc1wi
IH0sIFwibmFtZVwiOiBcIlRlc3RcIiwgXCJ2ZXJzaW9uXCI6IFwiMS4wXCIsIFwiZGVzY3JpcHRp
b25cIjogXCJUZXN0IGRlc2NyaXB0aW9uXCIgfSIpOwotICAgIGdfYXNzZXJ0X3RydWUod2Via2l0
X3dlYl9leHRlbnNpb25fZ2V0X2hhc19iYWNrZ3JvdW5kX2NvbnRlbnQoZXh0ZW5zaW9uLmdldCgp
KSk7Ci0gICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfaGFzX3NlcnZp
Y2Vfd29ya2VyX2JhY2tncm91bmRfY29udGVudChleHRlbnNpb24uZ2V0KCkpKTsKLSAgICBnX2Fz
c2VydF9ub19lcnJvcihlcnJvci5nZXQoKSk7Ci0KLSAgICBleHRlbnNpb24gPSBwYXJzZSgieyBc
Im1hbmlmZXN0X3ZlcnNpb25cIjogMywgXCJiYWNrZ3JvdW5kXCI6IHsgXCJwcmVmZXJyZWRfZW52
aXJvbm1lbnRcIjogWyBcInVua25vd25cIiwgXCJkb2N1bWVudFwiIF0sIFwic2VydmljZV93b3Jr
ZXJcIjogXCJiYWNrZ3JvdW5kLmpzXCIsIFwicGFnZVwiOiBcImJhY2tncm91bmQuaHRtbFwiIH0s
IFwibmFtZVwiOiBcIlRlc3RcIiwgXCJ2ZXJzaW9uXCI6IFwiMS4wXCIsIFwiZGVzY3JpcHRpb25c
IjogXCJUZXN0IGRlc2NyaXB0aW9uXCIgfSIpOwotICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X3dl
Yl9leHRlbnNpb25fZ2V0X2hhc19iYWNrZ3JvdW5kX2NvbnRlbnQoZXh0ZW5zaW9uLmdldCgpKSk7
Ci0gICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X2hhc19zZXJ2aWNl
X3dvcmtlcl9iYWNrZ3JvdW5kX2NvbnRlbnQoZXh0ZW5zaW9uLmdldCgpKSk7Ci0gICAgZ19hc3Nl
cnRfbm9fZXJyb3IoZXJyb3IuZ2V0KCkpOwotCi0gICAgLy8gSW52YWxpZCBjYXNlcwotCi0gICAg
ZXh0ZW5zaW9uID0gcGFyc2UoInsgXCJtYW5pZmVzdF92ZXJzaW9uXCI6IDMsIFwiYmFja2dyb3Vu
ZFwiOiB7IFwicHJlZmVycmVkX2Vudmlyb25tZW50XCI6IFtdLCBcInNlcnZpY2Vfd29ya2VyXCI6
IFwiYmFja2dyb3VuZC5qc1wiIH0sIFwibmFtZVwiOiBcIlRlc3RcIiwgXCJ2ZXJzaW9uXCI6IFwi
MS4wXCIsIFwiZGVzY3JpcHRpb25cIjogXCJUZXN0IGRlc2NyaXB0aW9uXCIgfSIpOwotICAgIGdf
YXNzZXJ0X3RydWUod2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X2hhc19iYWNrZ3JvdW5kX2NvbnRl
bnQoZXh0ZW5zaW9uLmdldCgpKSk7Ci0gICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfd2ViX2V4dGVu
c2lvbl9nZXRfaGFzX3NlcnZpY2Vfd29ya2VyX2JhY2tncm91bmRfY29udGVudChleHRlbnNpb24u
Z2V0KCkpKTsKLSAgICBnX2Fzc2VydF9lcnJvcihlcnJvci5nZXQoKSwgV0VCS0lUX1dFQl9FWFRF
TlNJT05fRVJST1IsIFdFQktJVF9XRUJfRVhURU5TSU9OX0VSUk9SX0lOVkFMSURfTUFOSUZFU1Rf
RU5UUlkpOwotCi0gICAgZXh0ZW5zaW9uID0gcGFyc2UoInsgXCJtYW5pZmVzdF92ZXJzaW9uXCI6
IDMsIFwiYmFja2dyb3VuZFwiOiB7IFwicHJlZmVycmVkX2Vudmlyb25tZW50XCI6IDQyLCBcInNl
cnZpY2Vfd29ya2VyXCI6IFwiYmFja2dyb3VuZC5qc1wiLCBcInBhZ2VcIjogXCJiYWNrZ3JvdW5k
Lmh0bWxcIiB9LCBcIm5hbWVcIjogXCJUZXN0XCIsIFwidmVyc2lvblwiOiBcIjEuMFwiLCBcImRl
c2NyaXB0aW9uXCI6IFwiVGVzdCBkZXNjcmlwdGlvblwiIH0iKTsKLSAgICBnX2Fzc2VydF90cnVl
KHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9oYXNfYmFja2dyb3VuZF9jb250ZW50KGV4dGVuc2lv
bi5nZXQoKSkpOwotICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9o
YXNfc2VydmljZV93b3JrZXJfYmFja2dyb3VuZF9jb250ZW50KGV4dGVuc2lvbi5nZXQoKSkpOwot
ICAgIGdfYXNzZXJ0X2Vycm9yKGVycm9yLmdldCgpLCBXRUJLSVRfV0VCX0VYVEVOU0lPTl9FUlJP
UiwgV0VCS0lUX1dFQl9FWFRFTlNJT05fRVJST1JfSU5WQUxJRF9NQU5JRkVTVF9FTlRSWSk7Ci0K
LSAgICBleHRlbnNpb24gPSBwYXJzZSgieyBcIm1hbmlmZXN0X3ZlcnNpb25cIjogMywgXCJiYWNr
Z3JvdW5kXCI6IHsgXCJwcmVmZXJyZWRfZW52aXJvbm1lbnRcIjogWyBcInNlcnZpY2Vfd29ya2Vy
XCIsIFwiZG9jdW1lbnRcIiBdIH0sIFwibmFtZVwiOiBcIlRlc3RcIiwgXCJ2ZXJzaW9uXCI6IFwi
MS4wXCIsIFwiZGVzY3JpcHRpb25cIjogXCJUZXN0IGRlc2NyaXB0aW9uXCIgfSIpOwotICAgIGdf
YXNzZXJ0X2ZhbHNlKHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9oYXNfYmFja2dyb3VuZF9jb250
ZW50KGV4dGVuc2lvbi5nZXQoKSkpOwotICAgIGdfYXNzZXJ0X2Vycm9yKGVycm9yLmdldCgpLCBX
RUJLSVRfV0VCX0VYVEVOU0lPTl9FUlJPUiwgV0VCS0lUX1dFQl9FWFRFTlNJT05fRVJST1JfSU5W
QUxJRF9NQU5JRkVTVF9FTlRSWSk7Ci0KLSAgICBleHRlbnNpb24gPSBwYXJzZSgieyBcIm1hbmlm
ZXN0X3ZlcnNpb25cIjogMywgXCJiYWNrZ3JvdW5kXCI6IHsgXCJwcmVmZXJyZWRfZW52aXJvbm1l
bnRcIjogXCJkb2N1bWVudFwiLCBcInNlcnZpY2Vfd29ya2VyXCI6IFwiYmFja2dyb3VuZC5qc1wi
IH0sIFwibmFtZVwiOiBcIlRlc3RcIiwgXCJ2ZXJzaW9uXCI6IFwiMS4wXCIsIFwiZGVzY3JpcHRp
b25cIjogXCJUZXN0IGRlc2NyaXB0aW9uXCIgfSIpOwotICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtp
dF93ZWJfZXh0ZW5zaW9uX2dldF9oYXNfYmFja2dyb3VuZF9jb250ZW50KGV4dGVuc2lvbi5nZXQo
KSkpOwotICAgIGdfYXNzZXJ0X2Vycm9yKGVycm9yLmdldCgpLCBXRUJLSVRfV0VCX0VYVEVOU0lP
Tl9FUlJPUiwgV0VCS0lUX1dFQl9FWFRFTlNJT05fRVJST1JfSU5WQUxJRF9NQU5JRkVTVF9FTlRS
WSk7Ci0KLSAgICBleHRlbnNpb24gPSBwYXJzZSgieyBcIm1hbmlmZXN0X3ZlcnNpb25cIjogMywg
XCJiYWNrZ3JvdW5kXCI6IHsgXCJwcmVmZXJyZWRfZW52aXJvbm1lbnRcIjogXCJzZXJ2aWNlX3dv
cmtlclwiLCBcInBhZ2VcIjogXCJiYWNrZ3JvdW5kLmh0bWxcIiB9LCBcIm5hbWVcIjogXCJUZXN0
XCIsIFwidmVyc2lvblwiOiBcIjEuMFwiLCBcImRlc2NyaXB0aW9uXCI6IFwiVGVzdCBkZXNjcmlw
dGlvblwiIH0iKTsKLSAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRf
aGFzX2JhY2tncm91bmRfY29udGVudChleHRlbnNpb24uZ2V0KCkpKTsKLSAgICBnX2Fzc2VydF9l
cnJvcihlcnJvci5nZXQoKSwgV0VCS0lUX1dFQl9FWFRFTlNJT05fRVJST1IsIFdFQktJVF9XRUJf
RVhURU5TSU9OX0VSUk9SX0lOVkFMSURfTUFOSUZFU1RfRU5UUlkpOwotfQotCi1zdGF0aWMgdm9p
ZCB0ZXN0T3B0aW9uc1BhZ2VQYXJzaW5nKFRlc3QqLCBnY29uc3Rwb2ludGVyKQotewotICAgIEdV
bmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKLSAgICBhdXRvIHBhcnNlID0gWyZdKGNvbnN0IGdj
aGFyKiBtYW5pZmVzdFN0cmluZykgewotICAgICAgICByZXR1cm4gYWRvcHRHUmVmKHdlYmtpdFdl
YkV4dGVuc2lvbkNyZWF0ZSh7IHsgIm1hbmlmZXN0Lmpzb24iX3MsIGNyZWF0ZUdCeXRlcyhtYW5p
ZmVzdFN0cmluZykgfSB9LCAmZXJyb3Iub3V0UHRyKCkpKTsKLSAgICB9OwotCi0gICAgR1JlZlB0
cjxXZWJLaXRXZWJFeHRlbnNpb24+IGV4dGVuc2lvbiA9IHBhcnNlKCJ7IFwibWFuaWZlc3RfdmVy
c2lvblwiOiAzLCBcIm9wdGlvbnNfcGFnZVwiOiBcIm9wdGlvbnMuaHRtbFwiLCBcIm5hbWVcIjog
XCJUZXN0XCIsIFwiZGVzY3JpcHRpb25cIjogXCJUZXN0XCIsIFwidmVyc2lvblwiOiBcIjEuMFwi
IH0iKTsKLSAgICBnX2Fzc2VydF9ub19lcnJvcihlcnJvci5nZXQoKSk7Ci0gICAgZ19hc3NlcnRf
dHJ1ZSh3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfaGFzX29wdGlvbnNfcGFnZShleHRlbnNpb24u
Z2V0KCkpKTsKLQotICAgIGV4dGVuc2lvbiA9IHBhcnNlKCJ7IFwibWFuaWZlc3RfdmVyc2lvblwi
OiAzLCBcIm9wdGlvbnNfcGFnZVwiOiBcIlwiLCBcIm5hbWVcIjogXCJUZXN0XCIsIFwiZGVzY3Jp
cHRpb25cIjogXCJUZXN0XCIsIFwidmVyc2lvblwiOiBcIjEuMFwiIH0iKTsKLSAgICBnX2Fzc2Vy
dF9lcnJvcihlcnJvci5nZXQoKSwgV0VCS0lUX1dFQl9FWFRFTlNJT05fRVJST1IsIFdFQktJVF9X
RUJfRVhURU5TSU9OX0VSUk9SX0lOVkFMSURfTUFOSUZFU1RfRU5UUlkpOwotICAgIGdfYXNzZXJ0
X2ZhbHNlKHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9oYXNfb3B0aW9uc19wYWdlKGV4dGVuc2lv
bi5nZXQoKSkpOwotCi0gICAgZXh0ZW5zaW9uID0gcGFyc2UoInsgXCJtYW5pZmVzdF92ZXJzaW9u
XCI6IDMsIFwib3B0aW9uc19wYWdlXCI6IDEyMywgXCJuYW1lXCI6IFwiVGVzdFwiLCBcImRlc2Ny
aXB0aW9uXCI6IFwiVGVzdFwiLCBcInZlcnNpb25cIjogXCIxLjBcIiB9Iik7Ci0gICAgZ19hc3Nl
cnRfZXJyb3IoZXJyb3IuZ2V0KCksIFdFQktJVF9XRUJfRVhURU5TSU9OX0VSUk9SLCBXRUJLSVRf
V0VCX0VYVEVOU0lPTl9FUlJPUl9JTlZBTElEX01BTklGRVNUX0VOVFJZKTsKLSAgICBnX2Fzc2Vy
dF9mYWxzZSh3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfaGFzX29wdGlvbnNfcGFnZShleHRlbnNp
b24uZ2V0KCkpKTsKLQotICAgIGV4dGVuc2lvbiA9IHBhcnNlKCJ7IFwibWFuaWZlc3RfdmVyc2lv
blwiOiAzLCBcIm9wdGlvbnNfdWlcIjogeyBcInBhZ2VcIjogXCJvcHRpb25zLmh0bWxcIiB9LCBc
Im5hbWVcIjogXCJUZXN0XCIsIFwiZGVzY3JpcHRpb25cIjogXCJUZXN0XCIsIFwidmVyc2lvblwi
OiBcIjEuMFwiIH0iKTsKLSAgICBnX2Fzc2VydF9ub19lcnJvcihlcnJvci5nZXQoKSk7Ci0gICAg
Z19hc3NlcnRfdHJ1ZSh3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfaGFzX29wdGlvbnNfcGFnZShl
eHRlbnNpb24uZ2V0KCkpKTsKLQotICAgIGV4dGVuc2lvbiA9IHBhcnNlKCJ7IFwibWFuaWZlc3Rf
dmVyc2lvblwiOiAzLCBcIm9wdGlvbnNfdWlcIjogeyBcImJhZFwiOiBcIm9wdGlvbnMuaHRtbFwi
IH0sIFwibmFtZVwiOiBcIlRlc3RcIiwgXCJkZXNjcmlwdGlvblwiOiBcIlRlc3RcIiwgXCJ2ZXJz
aW9uXCI6IFwiMS4wXCIgfSIpOwotICAgIGdfYXNzZXJ0X2Vycm9yKGVycm9yLmdldCgpLCBXRUJL
SVRfV0VCX0VYVEVOU0lPTl9FUlJPUiwgV0VCS0lUX1dFQl9FWFRFTlNJT05fRVJST1JfSU5WQUxJ
RF9NQU5JRkVTVF9FTlRSWSk7Ci0gICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3dlYl9leHRlbnNp
b25fZ2V0X2hhc19vcHRpb25zX3BhZ2UoZXh0ZW5zaW9uLmdldCgpKSk7Ci0KLSAgICBleHRlbnNp
b24gPSBwYXJzZSgieyBcIm1hbmlmZXN0X3ZlcnNpb25cIjogMywgXCJvcHRpb25zX3VpXCI6IHsg
XCJwYWdlXCI6IDEyMyB9LCBcIm5hbWVcIjogXCJUZXN0XCIsIFwiZGVzY3JpcHRpb25cIjogXCJU
ZXN0XCIsIFwidmVyc2lvblwiOiBcIjEuMFwiIH0iKTsKLSAgICBnX2Fzc2VydF9lcnJvcihlcnJv
ci5nZXQoKSwgV0VCS0lUX1dFQl9FWFRFTlNJT05fRVJST1IsIFdFQktJVF9XRUJfRVhURU5TSU9O
X0VSUk9SX0lOVkFMSURfTUFOSUZFU1RfRU5UUlkpOwotICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtp
dF93ZWJfZXh0ZW5zaW9uX2dldF9oYXNfb3B0aW9uc19wYWdlKGV4dGVuc2lvbi5nZXQoKSkpOwot
Ci0gICAgZXh0ZW5zaW9uID0gcGFyc2UoInsgXCJtYW5pZmVzdF92ZXJzaW9uXCI6IDMsIFwib3B0
aW9uc191aVwiOiB7IH0sIFwibmFtZVwiOiBcIlRlc3RcIiwgXCJkZXNjcmlwdGlvblwiOiBcIlRl
c3RcIiwgXCJ2ZXJzaW9uXCI6IFwiMS4wXCIgfSIpOwotICAgIGdfYXNzZXJ0X2Vycm9yKGVycm9y
LmdldCgpLCBXRUJLSVRfV0VCX0VYVEVOU0lPTl9FUlJPUiwgV0VCS0lUX1dFQl9FWFRFTlNJT05f
RVJST1JfSU5WQUxJRF9NQU5JRkVTVF9FTlRSWSk7Ci0gICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0
X3dlYl9leHRlbnNpb25fZ2V0X2hhc19vcHRpb25zX3BhZ2UoZXh0ZW5zaW9uLmdldCgpKSk7Ci0K
LSAgICBleHRlbnNpb24gPSBwYXJzZSgieyBcIm1hbmlmZXN0X3ZlcnNpb25cIjogMywgXCJvcHRp
b25zX3VpXCI6IHsgXCJwYWdlXCI6IFwiXCIgfSwgXCJuYW1lXCI6IFwiVGVzdFwiLCBcImRlc2Ny
aXB0aW9uXCI6IFwiVGVzdFwiLCBcInZlcnNpb25cIjogXCIxLjBcIiB9Iik7Ci0gICAgZ19hc3Nl
cnRfZXJyb3IoZXJyb3IuZ2V0KCksIFdFQktJVF9XRUJfRVhURU5TSU9OX0VSUk9SLCBXRUJLSVRf
V0VCX0VYVEVOU0lPTl9FUlJPUl9JTlZBTElEX01BTklGRVNUX0VOVFJZKTsKLSAgICBnX2Fzc2Vy
dF9mYWxzZSh3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfaGFzX29wdGlvbnNfcGFnZShleHRlbnNp
b24uZ2V0KCkpKTsKLX0KLQotc3RhdGljIHZvaWQgdGVzdFVSTE92ZXJyaWRlc1BhcnNpbmcoVGVz
dCosIGdjb25zdHBvaW50ZXIpCi17Ci0gICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwot
ICAgIGF1dG8gcGFyc2UgPSBbJl0oY29uc3QgZ2NoYXIqIG1hbmlmZXN0U3RyaW5nKSB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdEdSZWYod2Via2l0V2ViRXh0ZW5zaW9uQ3JlYXRlKHsgeyAibWFuaWZl
c3QuanNvbiJfcywgY3JlYXRlR0J5dGVzKG1hbmlmZXN0U3RyaW5nKSB9IH0sICZlcnJvci5vdXRQ
dHIoKSkpOwotICAgIH07Ci0KLSAgICBHUmVmUHRyPFdlYktpdFdlYkV4dGVuc2lvbj4gZXh0ZW5z
aW9uID0gcGFyc2UoInsgXCJtYW5pZmVzdF92ZXJzaW9uXCI6IDMsIFwiYnJvd3Nlcl91cmxfb3Zl
cnJpZGVzXCI6IHsgXCJuZXd0YWJcIjogXCJuZXd0YWIuaHRtbFwiIH0sIFwibmFtZVwiOiBcIlRl
c3RcIiwgXCJkZXNjcmlwdGlvblwiOiBcIlRlc3RcIiwgXCJ2ZXJzaW9uXCI6IFwiMS4wXCIgfSIp
OwotICAgIGdfYXNzZXJ0X25vX2Vycm9yKGVycm9yLmdldCgpKTsKLSAgICBnX2Fzc2VydF90cnVl
KHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9oYXNfb3ZlcnJpZGVfbmV3X3RhYl9wYWdlKGV4dGVu
c2lvbi5nZXQoKSkpOwotCi0gICAgZXh0ZW5zaW9uID0gcGFyc2UoInsgXCJtYW5pZmVzdF92ZXJz
aW9uXCI6IDMsIFwiYnJvd3Nlcl91cmxfb3ZlcnJpZGVzXCI6IHsgXCJiYWRcIjogXCJuZXd0YWIu
aHRtbFwiIH0sIFwibmFtZVwiOiBcIlRlc3RcIiwgXCJkZXNjcmlwdGlvblwiOiBcIlRlc3RcIiwg
XCJ2ZXJzaW9uXCI6IFwiMS4wXCIgfSIpOwotICAgIGdfYXNzZXJ0X25vX2Vycm9yKGVycm9yLmdl
dCgpKTsKLSAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfaGFzX292
ZXJyaWRlX25ld190YWJfcGFnZShleHRlbnNpb24uZ2V0KCkpKTsKLQotICAgIGV4dGVuc2lvbiA9
IHBhcnNlKCJ7IFwibWFuaWZlc3RfdmVyc2lvblwiOiAzLCBcImJyb3dzZXJfdXJsX292ZXJyaWRl
c1wiOiB7IFwibmV3dGFiXCI6IDEyMyB9LCBcIm5hbWVcIjogXCJUZXN0XCIsIFwiZGVzY3JpcHRp
b25cIjogXCJUZXN0XCIsIFwidmVyc2lvblwiOiBcIjEuMFwiIH0iKTsKLSAgICBnX2Fzc2VydF9l
cnJvcihlcnJvci5nZXQoKSwgV0VCS0lUX1dFQl9FWFRFTlNJT05fRVJST1IsIFdFQktJVF9XRUJf
RVhURU5TSU9OX0VSUk9SX0lOVkFMSURfTUFOSUZFU1RfRU5UUlkpOwotICAgIGdfYXNzZXJ0X2Zh
bHNlKHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9oYXNfb3ZlcnJpZGVfbmV3X3RhYl9wYWdlKGV4
dGVuc2lvbi5nZXQoKSkpOwotCi0gICAgZXh0ZW5zaW9uID0gcGFyc2UoInsgXCJtYW5pZmVzdF92
ZXJzaW9uXCI6IDMsIFwiYnJvd3Nlcl91cmxfb3ZlcnJpZGVzXCI6IHsgfSwgXCJuYW1lXCI6IFwi
VGVzdFwiLCBcImRlc2NyaXB0aW9uXCI6IFwiVGVzdFwiLCBcInZlcnNpb25cIjogXCIxLjBcIiB9
Iik7Ci0gICAgZ19hc3NlcnRfZXJyb3IoZXJyb3IuZ2V0KCksIFdFQktJVF9XRUJfRVhURU5TSU9O
X0VSUk9SLCBXRUJLSVRfV0VCX0VYVEVOU0lPTl9FUlJPUl9JTlZBTElEX01BTklGRVNUX0VOVFJZ
KTsKLSAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfaGFzX292ZXJy
aWRlX25ld190YWJfcGFnZShleHRlbnNpb24uZ2V0KCkpKTsKLQotICAgIGV4dGVuc2lvbiA9IHBh
cnNlKCJ7IFwibWFuaWZlc3RfdmVyc2lvblwiOiAzLCBcImJyb3dzZXJfdXJsX292ZXJyaWRlc1wi
OiB7IFwibmV3dGFiXCI6IFwiXCIgfSwgXCJuYW1lXCI6IFwiVGVzdFwiLCBcImRlc2NyaXB0aW9u
XCI6IFwiVGVzdFwiLCBcInZlcnNpb25cIjogXCIxLjBcIiB9Iik7Ci0gICAgZ19hc3NlcnRfZXJy
b3IoZXJyb3IuZ2V0KCksIFdFQktJVF9XRUJfRVhURU5TSU9OX0VSUk9SLCBXRUJLSVRfV0VCX0VY
VEVOU0lPTl9FUlJPUl9JTlZBTElEX01BTklGRVNUX0VOVFJZKTsKLSAgICBnX2Fzc2VydF9mYWxz
ZSh3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfaGFzX292ZXJyaWRlX25ld190YWJfcGFnZShleHRl
bnNpb24uZ2V0KCkpKTsKLQotICAgIGV4dGVuc2lvbiA9IHBhcnNlKCJ7IFwibWFuaWZlc3RfdmVy
c2lvblwiOiAzLCBcImNocm9tZV91cmxfb3ZlcnJpZGVzXCI6IHsgXCJuZXd0YWJcIjogXCJuZXd0
YWIuaHRtbFwiIH0sIFwibmFtZVwiOiBcIlRlc3RcIiwgXCJkZXNjcmlwdGlvblwiOiBcIlRlc3Rc
IiwgXCJ2ZXJzaW9uXCI6IFwiMS4wXCIgfSIpOwotICAgIGdfYXNzZXJ0X25vX2Vycm9yKGVycm9y
LmdldCgpKTsKLSAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9oYXNf
b3ZlcnJpZGVfbmV3X3RhYl9wYWdlKGV4dGVuc2lvbi5nZXQoKSkpOwotCi0gICAgZXh0ZW5zaW9u
ID0gcGFyc2UoInsgXCJtYW5pZmVzdF92ZXJzaW9uXCI6IDMsIFwiY2hyb21lX3VybF9vdmVycmlk
ZXNcIjogeyBcImJhZFwiOiBcIm5ld3RhYi5odG1sXCIgfSwgXCJuYW1lXCI6IFwiVGVzdFwiLCBc
ImRlc2NyaXB0aW9uXCI6IFwiVGVzdFwiLCBcInZlcnNpb25cIjogXCIxLjBcIiB9Iik7Ci0gICAg
Z19hc3NlcnRfbm9fZXJyb3IoZXJyb3IuZ2V0KCkpOwotICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtp
dF93ZWJfZXh0ZW5zaW9uX2dldF9oYXNfb3ZlcnJpZGVfbmV3X3RhYl9wYWdlKGV4dGVuc2lvbi5n
ZXQoKSkpOwotCi0gICAgZXh0ZW5zaW9uID0gcGFyc2UoInsgXCJtYW5pZmVzdF92ZXJzaW9uXCI6
IDMsIFwiY2hyb21lX3VybF9vdmVycmlkZXNcIjogeyBcIm5ld3RhYlwiOiAxMjMgfSwgXCJuYW1l
XCI6IFwiVGVzdFwiLCBcImRlc2NyaXB0aW9uXCI6IFwiVGVzdFwiLCBcInZlcnNpb25cIjogXCIx
LjBcIiB9Iik7Ci0gICAgZ19hc3NlcnRfZXJyb3IoZXJyb3IuZ2V0KCksIFdFQktJVF9XRUJfRVhU
RU5TSU9OX0VSUk9SLCBXRUJLSVRfV0VCX0VYVEVOU0lPTl9FUlJPUl9JTlZBTElEX01BTklGRVNU
X0VOVFJZKTsKLSAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfaGFz
X292ZXJyaWRlX25ld190YWJfcGFnZShleHRlbnNpb24uZ2V0KCkpKTsKLQotICAgIGV4dGVuc2lv
biA9IHBhcnNlKCJ7IFwibWFuaWZlc3RfdmVyc2lvblwiOiAzLCBcImNocm9tZV91cmxfb3ZlcnJp
ZGVzXCI6IHsgfSwgXCJuYW1lXCI6IFwiVGVzdFwiLCBcImRlc2NyaXB0aW9uXCI6IFwiVGVzdFwi
LCBcInZlcnNpb25cIjogXCIxLjBcIiB9Iik7Ci0gICAgZ19hc3NlcnRfZXJyb3IoZXJyb3IuZ2V0
KCksIFdFQktJVF9XRUJfRVhURU5TSU9OX0VSUk9SLCBXRUJLSVRfV0VCX0VYVEVOU0lPTl9FUlJP
Ul9JTlZBTElEX01BTklGRVNUX0VOVFJZKTsKLSAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfd2Vi
X2V4dGVuc2lvbl9nZXRfaGFzX292ZXJyaWRlX25ld190YWJfcGFnZShleHRlbnNpb24uZ2V0KCkp
KTsKLQotICAgIGV4dGVuc2lvbiA9IHBhcnNlKCJ7IFwibWFuaWZlc3RfdmVyc2lvblwiOiAzLCBc
ImNocm9tZV91cmxfb3ZlcnJpZGVzXCI6IHsgXCJuZXd0YWJcIjogXCJcIiB9LCBcIm5hbWVcIjog
XCJUZXN0XCIsIFwiZGVzY3JpcHRpb25cIjogXCJUZXN0XCIsIFwidmVyc2lvblwiOiBcIjEuMFwi
IH0iKTsKLSAgICBnX2Fzc2VydF9lcnJvcihlcnJvci5nZXQoKSwgV0VCS0lUX1dFQl9FWFRFTlNJ
T05fRVJST1IsIFdFQktJVF9XRUJfRVhURU5TSU9OX0VSUk9SX0lOVkFMSURfTUFOSUZFU1RfRU5U
UlkpOwotICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9oYXNfb3Zl
cnJpZGVfbmV3X3RhYl9wYWdlKGV4dGVuc2lvbi5nZXQoKSkpOwotfQotCi1zdGF0aWMgdm9pZCB0
ZXN0Q29udGVudFNlY3VyaXR5UG9saWN5UGFyc2luZyhUZXN0KiwgZ2NvbnN0cG9pbnRlcikKLXsK
LSAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7Ci0gICAgYXV0byBwYXJzZSA9IFsmXShj
b25zdCBnY2hhciogbWFuaWZlc3RTdHJpbmcpIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0R1JlZih3
ZWJraXRXZWJFeHRlbnNpb25DcmVhdGUoeyB7ICJtYW5pZmVzdC5qc29uIl9zLCBjcmVhdGVHQnl0
ZXMobWFuaWZlc3RTdHJpbmcpIH0gfSwgJmVycm9yLm91dFB0cigpKSk7Ci0gICAgfTsKLQotICAg
IC8vIE1hbmlmZXN0IFYzCi0gICAgcGFyc2UoInsgXCJtYW5pZmVzdF92ZXJzaW9uXCI6IDMsIFwi
Y29udGVudF9zZWN1cml0eV9wb2xpY3lcIjogeyBcImV4dGVuc2lvbl9wYWdlc1wiOiBcInNjcmlw
dC1zcmMgJ3NlbGYnOyBvYmplY3Qtc3JjICdzZWxmJ1wiIH0sIFwibmFtZVwiOiBcIlRlc3RcIiwg
XCJkZXNjcmlwdGlvblwiOiBcIlRlc3RcIiwgXCJ2ZXJzaW9uXCI6IFwiMS4wXCIgfSIpOwotICAg
IGdfYXNzZXJ0X25vX2Vycm9yKGVycm9yLmdldCgpKTsKLQotICAgIHBhcnNlKCJ7IFwibWFuaWZl
c3RfdmVyc2lvblwiOiAzLCBcImNvbnRlbnRfc2VjdXJpdHlfcG9saWN5XCI6IHsgXCJzYW5kYm94
XCI6IFwic2FuZGJveCBhbGxvdy1zY3JpcHRzIGFsbG93LWZvcm1zIGFsbG93LXBvcHVwcyBhbGxv
dy1tb2RhbHM7IHNjcmlwdC1zcmMgJ3NlbGYnXCIgfSwgXCJuYW1lXCI6IFwiVGVzdFwiLCBcImRl
c2NyaXB0aW9uXCI6IFwiVGVzdFwiLCBcInZlcnNpb25cIjogXCIxLjBcIiB9Iik7Ci0gICAgZ19h
c3NlcnRfbm9fZXJyb3IoZXJyb3IuZ2V0KCkpOwotCi0gICAgcGFyc2UoInsgXCJtYW5pZmVzdF92
ZXJzaW9uXCI6IDMsIFwiY29udGVudF9zZWN1cml0eV9wb2xpY3lcIjogeyB9LCBcIm5hbWVcIjog
XCJUZXN0XCIsIFwiZGVzY3JpcHRpb25cIjogXCJUZXN0XCIsIFwidmVyc2lvblwiOiBcIjEuMFwi
IH0iKTsKLSAgICBnX2Fzc2VydF9lcnJvcihlcnJvci5nZXQoKSwgV0VCS0lUX1dFQl9FWFRFTlNJ
T05fRVJST1IsIFdFQktJVF9XRUJfRVhURU5TSU9OX0VSUk9SX0lOVkFMSURfTUFOSUZFU1RfRU5U
UlkpOwotCi0gICAgcGFyc2UoInsgXCJtYW5pZmVzdF92ZXJzaW9uXCI6IDIsIFwiY29udGVudF9z
ZWN1cml0eV9wb2xpY3lcIjogeyBcImV4dGVuc2lvbl9wYWdlc1wiOiAxMjMgfSwgXCJuYW1lXCI6
IFwiVGVzdFwiLCBcImRlc2NyaXB0aW9uXCI6IFwiVGVzdFwiLCBcInZlcnNpb25cIjogXCIxLjBc
IiB9Iik7Ci0gICAgZ19hc3NlcnRfZXJyb3IoZXJyb3IuZ2V0KCksIFdFQktJVF9XRUJfRVhURU5T
SU9OX0VSUk9SLCBXRUJLSVRfV0VCX0VYVEVOU0lPTl9FUlJPUl9JTlZBTElEX01BTklGRVNUX0VO
VFJZKTsKLQotICAgIC8vIE1hbmlmZXN0IFYyCi0gICAgcGFyc2UoInsgXCJtYW5pZmVzdF92ZXJz
aW9uXCI6IDIsIFwiY29udGVudF9zZWN1cml0eV9wb2xpY3lcIjogXCJzY3JpcHQtc3JjICdzZWxm
Jzsgb2JqZWN0LXNyYyAnc2VsZidcIiwgXCJuYW1lXCI6IFwiVGVzdFwiLCBcImRlc2NyaXB0aW9u
XCI6IFwiVGVzdFwiLCBcInZlcnNpb25cIjogXCIxLjBcIiB9Iik7Ci0gICAgZ19hc3NlcnRfbm9f
ZXJyb3IoZXJyb3IuZ2V0KCkpOwotCi0gICAgcGFyc2UoInsgXCJtYW5pZmVzdF92ZXJzaW9uXCI6
IDIsIFwiY29udGVudF9zZWN1cml0eV9wb2xpY3lcIjogWyBcImludmFsaWRcIiwgXCJ0eXBlXCIg
XSwgXCJuYW1lXCI6IFwiVGVzdFwiLCBcImRlc2NyaXB0aW9uXCI6IFwiVGVzdFwiLCBcInZlcnNp
b25cIjogXCIxLjBcIiB9Iik7Ci0gICAgZ19hc3NlcnRfZXJyb3IoZXJyb3IuZ2V0KCksIFdFQktJ
VF9XRUJfRVhURU5TSU9OX0VSUk9SLCBXRUJLSVRfV0VCX0VYVEVOU0lPTl9FUlJPUl9JTlZBTElE
X01BTklGRVNUX0VOVFJZKTsKLQotICAgIHBhcnNlKCJ7IFwibWFuaWZlc3RfdmVyc2lvblwiOiAy
LCBcImNvbnRlbnRfc2VjdXJpdHlfcG9saWN5XCI6IDEyMywgXCJuYW1lXCI6IFwiVGVzdFwiLCBc
ImRlc2NyaXB0aW9uXCI6IFwiVGVzdFwiLCBcInZlcnNpb25cIjogXCIxLjBcIiB9Iik7Ci0gICAg
Z19hc3NlcnRfZXJyb3IoZXJyb3IuZ2V0KCksIFdFQktJVF9XRUJfRVhURU5TSU9OX0VSUk9SLCBX
RUJLSVRfV0VCX0VYVEVOU0lPTl9FUlJPUl9JTlZBTElEX01BTklGRVNUX0VOVFJZKTsKLQotICAg
IHBhcnNlKCJ7IFwibWFuaWZlc3RfdmVyc2lvblwiOiAyLCBcImNvbnRlbnRfc2VjdXJpdHlfcG9s
aWN5XCI6IHsgXCJleHRlbnNpb25fcGFnZXNcIjogXCJzY3JpcHQtc3JjICdzZWxmJzsgb2JqZWN0
LXNyYyAnc2VsZidcIiB9LCBcIm5hbWVcIjogXCJUZXN0XCIsIFwiZGVzY3JpcHRpb25cIjogXCJU
ZXN0XCIsIFwidmVyc2lvblwiOiBcIjEuMFwiIH0iKTsKLSAgICBnX2Fzc2VydF9lcnJvcihlcnJv
ci5nZXQoKSwgV0VCS0lUX1dFQl9FWFRFTlNJT05fRVJST1IsIFdFQktJVF9XRUJfRVhURU5TSU9O
X0VSUk9SX0lOVkFMSURfTUFOSUZFU1RfRU5UUlkpOwotfQotCi1zdGF0aWMgdm9pZCB0ZXN0V2Vi
QWNjZXNzaWJsZVJlc291cmNlc1YyKFRlc3QqLCBnY29uc3Rwb2ludGVyKQotewotICAgIEdVbmlx
dWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKLSAgICBhdXRvIHBhcnNlID0gWyZdKGNvbnN0IGdjaGFy
KiBtYW5pZmVzdFN0cmluZykgewotICAgICAgICByZXR1cm4gYWRvcHRHUmVmKHdlYmtpdFdlYkV4
dGVuc2lvbkNyZWF0ZSh7IHsgIm1hbmlmZXN0Lmpzb24iX3MsIGNyZWF0ZUdCeXRlcyhtYW5pZmVz
dFN0cmluZykgfSB9LCAmZXJyb3Iub3V0UHRyKCkpKTsKLSAgICB9OwotCi0gICAgcGFyc2UoInsg
XCJtYW5pZmVzdF92ZXJzaW9uXCI6IDIsIFwid2ViX2FjY2Vzc2libGVfcmVzb3VyY2VzXCI6IFsg
XCJpbWFnZXMvKi5wbmdcIiwgXCJzdHlsZXMvKi5jc3NcIiBdLCBcIm5hbWVcIjogXCJUZXN0XCIs
IFwiZGVzY3JpcHRpb25cIjogXCJUZXN0XCIsIFwidmVyc2lvblwiOiBcIjEuMFwiIH0iKTsKLSAg
ICBnX2Fzc2VydF9ub19lcnJvcihlcnJvci5nZXQoKSk7Ci0KLSAgICBwYXJzZSgieyBcIm1hbmlm
ZXN0X3ZlcnNpb25cIjogMiwgXCJ3ZWJfYWNjZXNzaWJsZV9yZXNvdXJjZXNcIjogWyBdLCBcIm5h
bWVcIjogXCJUZXN0XCIsIFwiZGVzY3JpcHRpb25cIjogXCJUZXN0XCIsIFwidmVyc2lvblwiOiBc
IjEuMFwiIH0iKTsKLSAgICBnX2Fzc2VydF9ub19lcnJvcihlcnJvci5nZXQoKSk7Ci0KLSAgICBw
YXJzZSgieyBcIm1hbmlmZXN0X3ZlcnNpb25cIjogMiwgXCJ3ZWJfYWNjZXNzaWJsZV9yZXNvdXJj
ZXNcIjogXCJiYWRcIiwgXCJuYW1lXCI6IFwiVGVzdFwiLCBcImRlc2NyaXB0aW9uXCI6IFwiVGVz
dFwiLCBcInZlcnNpb25cIjogXCIxLjBcIiB9Iik7Ci0gICAgZ19hc3NlcnRfZXJyb3IoZXJyb3Iu
Z2V0KCksIFdFQktJVF9XRUJfRVhURU5TSU9OX0VSUk9SLCBXRUJLSVRfV0VCX0VYVEVOU0lPTl9F
UlJPUl9JTlZBTElEX01BTklGRVNUX0VOVFJZKTsKLQotICAgIHBhcnNlKCJ7IFwibWFuaWZlc3Rf
dmVyc2lvblwiOiAyLCBcIndlYl9hY2Nlc3NpYmxlX3Jlc291cmNlc1wiOiB7IH0sIFwibmFtZVwi
OiBcIlRlc3RcIiwgXCJkZXNjcmlwdGlvblwiOiBcIlRlc3RcIiwgXCJ2ZXJzaW9uXCI6IFwiMS4w
XCIgfSIpOwotICAgIGdfYXNzZXJ0X2Vycm9yKGVycm9yLmdldCgpLCBXRUJLSVRfV0VCX0VYVEVO
U0lPTl9FUlJPUiwgV0VCS0lUX1dFQl9FWFRFTlNJT05fRVJST1JfSU5WQUxJRF9NQU5JRkVTVF9F
TlRSWSk7Ci19Ci0KLXN0YXRpYyB2b2lkIHRlc3RXZWJBY2Nlc3NpYmxlUmVzb3VyY2VzVjMoVGVz
dCosIGdjb25zdHBvaW50ZXIpCi17Ci0gICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwot
ICAgIGF1dG8gcGFyc2UgPSBbJl0oY29uc3QgZ2NoYXIqIG1hbmlmZXN0U3RyaW5nKSB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdEdSZWYod2Via2l0V2ViRXh0ZW5zaW9uQ3JlYXRlKHsgeyAibWFuaWZl
c3QuanNvbiJfcywgY3JlYXRlR0J5dGVzKG1hbmlmZXN0U3RyaW5nKSB9IH0sICZlcnJvci5vdXRQ
dHIoKSkpOwotICAgIH07Ci0KLSAgICBwYXJzZSgieyBcIndlYl9hY2Nlc3NpYmxlX3Jlc291cmNl
c1wiOiBbIHsgXCJyZXNvdXJjZXNcIjogWyBcImltYWdlcy8qLnBuZ1wiLCBcInN0eWxlcy8qLmNz
c1wiIF0sIFwibWF0Y2hlc1wiOiBbIFwiPGFsbF91cmxzPlwiIF0gfSwgeyBcInJlc291cmNlc1wi
OiBbIFwic2NyaXB0cy8qLmpzXCIgXSwgXCJtYXRjaGVzXCI6IFsgXCIqOi8vbG9jYWxob3N0Lypc
IiBdIH0gXSwgXCJtYW5pZmVzdF92ZXJzaW9uXCI6IDMsIFwibmFtZVwiOiBcIlRlc3RcIiwgXCJk
ZXNjcmlwdGlvblwiOiBcIlRlc3RcIiwgXCJ2ZXJzaW9uXCI6IFwiMS4wXCIgfSIpOwotICAgIGdf
YXNzZXJ0X25vX2Vycm9yKGVycm9yLmdldCgpKTsKLQotICAgIHBhcnNlKCJ7IFwid2ViX2FjY2Vz
c2libGVfcmVzb3VyY2VzXCI6IFsgeyBcInJlc291cmNlc1wiOiBbXSwgXCJtYXRjaGVzXCI6IFtd
IH0gXSwgXCJtYW5pZmVzdF92ZXJzaW9uXCI6IDMsIFwibmFtZVwiOiBcIlRlc3RcIiwgXCJkZXNj
cmlwdGlvblwiOiBcIlRlc3RcIiwgXCJ2ZXJzaW9uXCI6IFwiMS4wXCIgfSIpOwotICAgIGdfYXNz
ZXJ0X25vX2Vycm9yKGVycm9yLmdldCgpKTsKLQotICAgIHBhcnNlKCJ7IFwid2ViX2FjY2Vzc2li
bGVfcmVzb3VyY2VzXCI6IFsgeyBcInJlc291cmNlc1wiOiBcImJhZFwiLCBcIm1hdGNoZXNcIjog
WyBcIjxhbGxfdXJscz5cIiBdIH0gXSwgXCJtYW5pZmVzdF92ZXJzaW9uXCI6IDMsIFwibmFtZVwi
OiBcIlRlc3RcIiwgXCJkZXNjcmlwdGlvblwiOiBcIlRlc3RcIiwgXCJ2ZXJzaW9uXCI6IFwiMS4w
XCIgfSIpOwotICAgIGdfYXNzZXJ0X2Vycm9yKGVycm9yLmdldCgpLCBXRUJLSVRfV0VCX0VYVEVO
U0lPTl9FUlJPUiwgV0VCS0lUX1dFQl9FWFRFTlNJT05fRVJST1JfSU5WQUxJRF9NQU5JRkVTVF9F
TlRSWSk7Ci0KLSAgICBwYXJzZSgieyBcIndlYl9hY2Nlc3NpYmxlX3Jlc291cmNlc1wiOiBbIHsg
XCJyZXNvdXJjZXNcIjogWyBcImltYWdlcy8qLnBuZ1wiIF0sIFwibWF0Y2hlc1wiOiBcImJhZFwi
IH0gXSwgXCJtYW5pZmVzdF92ZXJzaW9uXCI6IDMsIFwibmFtZVwiOiBcIlRlc3RcIiwgXCJkZXNj
cmlwdGlvblwiOiBcIlRlc3RcIiwgXCJ2ZXJzaW9uXCI6IFwiMS4wXCIgfSIpOwotICAgIGdfYXNz
ZXJ0X2Vycm9yKGVycm9yLmdldCgpLCBXRUJLSVRfV0VCX0VYVEVOU0lPTl9FUlJPUiwgV0VCS0lU
X1dFQl9FWFRFTlNJT05fRVJST1JfSU5WQUxJRF9NQU5JRkVTVF9FTlRSWSk7Ci0KLSAgICBwYXJz
ZSgieyBcIndlYl9hY2Nlc3NpYmxlX3Jlc291cmNlc1wiOiBbIHsgXCJtYXRjaGVzXCI6IFsgXCI8
YWxsX3VybHM+XCIgXSB9IF0sIFwibWFuaWZlc3RfdmVyc2lvblwiOiAzLCBcIm5hbWVcIjogXCJU
ZXN0XCIsIFwiZGVzY3JpcHRpb25cIjogXCJUZXN0XCIsIFwidmVyc2lvblwiOiBcIjEuMFwiIH0i
KTsKLSAgICBnX2Fzc2VydF9lcnJvcihlcnJvci5nZXQoKSwgV0VCS0lUX1dFQl9FWFRFTlNJT05f
RVJST1IsIFdFQktJVF9XRUJfRVhURU5TSU9OX0VSUk9SX0lOVkFMSURfTUFOSUZFU1RfRU5UUlkp
OwotCi0gICAgcGFyc2UoInsgXCJ3ZWJfYWNjZXNzaWJsZV9yZXNvdXJjZXNcIjogWyB7IFwicmVz
b3VyY2VzXCI6IFtdIH0gXSwgXCJtYW5pZmVzdF92ZXJzaW9uXCI6IDMsIFwibmFtZVwiOiBcIlRl
c3RcIiwgXCJkZXNjcmlwdGlvblwiOiBcIlRlc3RcIiwgXCJ2ZXJzaW9uXCI6IFwiMS4wXCIgfSIp
OwotICAgIGdfYXNzZXJ0X2Vycm9yKGVycm9yLmdldCgpLCBXRUJLSVRfV0VCX0VYVEVOU0lPTl9F
UlJPUiwgV0VCS0lUX1dFQl9FWFRFTlNJT05fRVJST1JfSU5WQUxJRF9NQU5JRkVTVF9FTlRSWSk7
Ci19Ci0KLXN0YXRpYyB2b2lkIHRlc3RDb21tYW5kc1BhcnNpbmcoVGVzdCosIGdjb25zdHBvaW50
ZXIpCi17Ci0gICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwotICAgIGF1dG8gcGFyc2Ug
PSBbJl0oY29uc3QgZ2NoYXIqIG1hbmlmZXN0U3RyaW5nKSB7Ci0gICAgICAgIHJldHVybiBhZG9w
dEdSZWYod2Via2l0V2ViRXh0ZW5zaW9uQ3JlYXRlKHsgeyAibWFuaWZlc3QuanNvbiJfcywgY3Jl
YXRlR0J5dGVzKG1hbmlmZXN0U3RyaW5nKSB9IH0sICZlcnJvci5vdXRQdHIoKSkpOwotICAgIH07
Ci0KLSAgICBHUmVmUHRyPFdlYktpdFdlYkV4dGVuc2lvbj4gZXh0ZW5zaW9uID0gcGFyc2UoInsg
XCJjb21tYW5kc1wiOiB7IFwic2hvdy1wb3B1cFwiOiB7IFwic3VnZ2VzdGVkX2tleVwiOiB7IFwi
ZGVmYXVsdFwiOiBcIkN0cmwrU2hpZnQrUFwiLCBcImxpbnV4XCI6IFwiQ3RybCtTaGlmdCtBXCIg
fSwgXCJkZXNjcmlwdGlvblwiOiBcIlNob3cgdGhlIHBvcHVwXCIgfSB9LCBcIm1hbmlmZXN0X3Zl
cnNpb25cIjogMywgXCJuYW1lXCI6IFwiVGVzdFwiLCBcImRlc2NyaXB0aW9uXCI6IFwiVGVzdFwi
LCBcInZlcnNpb25cIjogXCIxLjBcIiB9Iik7Ci0gICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfd2Vi
X2V4dGVuc2lvbl9nZXRfaGFzX2NvbW1hbmRzKGV4dGVuc2lvbi5nZXQoKSkpOwotICAgIGdfYXNz
ZXJ0X25vX2Vycm9yKGVycm9yLmdldCgpKTsKLQotICAgIGV4dGVuc2lvbiA9IHBhcnNlKCJ7IFwi
Y29tbWFuZHNcIjogeyB9LCBcImFjdGlvblwiOiB7IFwiZGVmYXVsdF90aXRsZVwiOiBcIlRlc3Qg
QWN0aW9uXCIgfSwgXCJtYW5pZmVzdF92ZXJzaW9uXCI6IDMsIFwibmFtZVwiOiBcIlRlc3RcIiwg
XCJkZXNjcmlwdGlvblwiOiBcIlRlc3RcIiwgXCJ2ZXJzaW9uXCI6IFwiMS4wXCIgfSIpOwotICAg
IGdfYXNzZXJ0X3RydWUod2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X2hhc19jb21tYW5kcyhleHRl
bnNpb24uZ2V0KCkpKTsKLSAgICBnX2Fzc2VydF9ub19lcnJvcihlcnJvci5nZXQoKSk7Ci0KLSAg
ICBleHRlbnNpb24gPSBwYXJzZSgieyBcImNvbW1hbmRzXCI6IHsgfSwgXCJicm93c2VyX2FjdGlv
blwiOiB7IFwiZGVmYXVsdF90aXRsZVwiOiBcIlRlc3QgQWN0aW9uXCIgfSwgXCJtYW5pZmVzdF92
ZXJzaW9uXCI6IDIsIFwibmFtZVwiOiBcIlRlc3RcIiwgXCJkZXNjcmlwdGlvblwiOiBcIlRlc3Rc
IiwgXCJ2ZXJzaW9uXCI6IFwiMS4wXCIgfSIpOwotICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X3dl
Yl9leHRlbnNpb25fZ2V0X2hhc19jb21tYW5kcyhleHRlbnNpb24uZ2V0KCkpKTsKLSAgICBnX2Fz
c2VydF9ub19lcnJvcihlcnJvci5nZXQoKSk7Ci0KLSAgICBleHRlbnNpb24gPSBwYXJzZSgieyBc
ImNvbW1hbmRzXCI6IHsgfSwgXCJwYWdlX2FjdGlvblwiOiB7IFwiZGVmYXVsdF90aXRsZVwiOiBc
IlRlc3QgQWN0aW9uXCIgfSwgXCJtYW5pZmVzdF92ZXJzaW9uXCI6IDIsIFwibmFtZVwiOiBcIlRl
c3RcIiwgXCJkZXNjcmlwdGlvblwiOiBcIlRlc3RcIiwgXCJ2ZXJzaW9uXCI6IFwiMS4wXCIgfSIp
OwotICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X2hhc19jb21tYW5k
cyhleHRlbnNpb24uZ2V0KCkpKTsKLSAgICBnX2Fzc2VydF9ub19lcnJvcihlcnJvci5nZXQoKSk7
Ci0KLSAgICBleHRlbnNpb24gPSBwYXJzZSgieyBcIm1hbmlmZXN0X3ZlcnNpb25cIjogMywgXCJu
YW1lXCI6IFwiVGVzdFwiLCBcImRlc2NyaXB0aW9uXCI6IFwiVGVzdFwiLCBcInZlcnNpb25cIjog
XCIxLjBcIiB9Iik7Ci0gICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3dlYl9leHRlbnNpb25fZ2V0
X2hhc19jb21tYW5kcyhleHRlbnNpb24uZ2V0KCkpKTsKLSAgICBnX2Fzc2VydF9ub19lcnJvcihl
cnJvci5nZXQoKSk7Ci0KLSAgICBleHRlbnNpb24gPSBwYXJzZSgieyBcImFjdGlvblwiOiB7IFwi
ZGVmYXVsdF90aXRsZVwiOiBcIlRlc3QgQWN0aW9uXCIgfSwgXCJtYW5pZmVzdF92ZXJzaW9uXCI6
IDMsIFwibmFtZVwiOiBcIlRlc3RcIiwgXCJkZXNjcmlwdGlvblwiOiBcIlRlc3RcIiwgXCJ2ZXJz
aW9uXCI6IFwiMS4wXCIgfSIpOwotICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X3dlYl9leHRlbnNp
b25fZ2V0X2hhc19jb21tYW5kcyhleHRlbnNpb24uZ2V0KCkpKTsKLSAgICBnX2Fzc2VydF9ub19l
cnJvcihlcnJvci5nZXQoKSk7Ci0KLSAgICBleHRlbnNpb24gPSBwYXJzZSgieyBcImJyb3dzZXJf
YWN0aW9uXCI6IHsgXCJkZWZhdWx0X3RpdGxlXCI6IFwiVGVzdCBBY3Rpb25cIiB9LCBcIm1hbmlm
ZXN0X3ZlcnNpb25cIjogMiwgXCJuYW1lXCI6IFwiVGVzdFwiLCBcImRlc2NyaXB0aW9uXCI6IFwi
VGVzdFwiLCBcInZlcnNpb25cIjogXCIxLjBcIiB9Iik7Ci0gICAgZ19hc3NlcnRfdHJ1ZSh3ZWJr
aXRfd2ViX2V4dGVuc2lvbl9nZXRfaGFzX2NvbW1hbmRzKGV4dGVuc2lvbi5nZXQoKSkpOwotICAg
IGdfYXNzZXJ0X25vX2Vycm9yKGVycm9yLmdldCgpKTsKLQotICAgIGV4dGVuc2lvbiA9IHBhcnNl
KCJ7IFwicGFnZV9hY3Rpb25cIjogeyBcImRlZmF1bHRfdGl0bGVcIjogXCJUZXN0IEFjdGlvblwi
IH0sIFwibWFuaWZlc3RfdmVyc2lvblwiOiAyLCBcIm5hbWVcIjogXCJUZXN0XCIsIFwiZGVzY3Jp
cHRpb25cIjogXCJUZXN0XCIsIFwidmVyc2lvblwiOiBcIjEuMFwiIH0iKTsKLSAgICBnX2Fzc2Vy
dF90cnVlKHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9oYXNfY29tbWFuZHMoZXh0ZW5zaW9uLmdl
dCgpKSk7Ci0gICAgZ19hc3NlcnRfbm9fZXJyb3IoZXJyb3IuZ2V0KCkpOwotCi0gICAgZXh0ZW5z
aW9uID0gcGFyc2UoInsgXCJjb21tYW5kc1wiOiB7IFwic2hvdy1wb3B1cFwiOiBcIkludmFsaWRc
IiB9LCBcIm1hbmlmZXN0X3ZlcnNpb25cIjogMywgXCJuYW1lXCI6IFwiVGVzdFwiLCBcImRlc2Ny
aXB0aW9uXCI6IFwiVGVzdFwiLCBcInZlcnNpb25cIjogXCIxLjBcIiB9Iik7Ci0gICAgZ19hc3Nl
cnRfZmFsc2Uod2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X2hhc19jb21tYW5kcyhleHRlbnNpb24u
Z2V0KCkpKTsKLSAgICBnX2Fzc2VydF9lcnJvcihlcnJvci5nZXQoKSwgV0VCS0lUX1dFQl9FWFRF
TlNJT05fRVJST1IsIFdFQktJVF9XRUJfRVhURU5TSU9OX0VSUk9SX0lOVkFMSURfTUFOSUZFU1Rf
RU5UUlkpOwotfQotCi1zdGF0aWMgdm9pZCB0ZXN0RGVjbGFyYXRpdmVOZXRSZXF1ZXN0UGFyc2lu
ZyhUZXN0KiwgZ2NvbnN0cG9pbnRlcikKLXsKLSAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJy
b3I7Ci0gICAgYXV0byBwYXJzZSA9IFsmXShjb25zdCBnY2hhciogbWFuaWZlc3RTdHJpbmcpIHsK
LSAgICAgICAgcmV0dXJuIGFkb3B0R1JlZih3ZWJraXRXZWJFeHRlbnNpb25DcmVhdGUoeyB7ICJt
YW5pZmVzdC5qc29uIl9zLCBjcmVhdGVHQnl0ZXMobWFuaWZlc3RTdHJpbmcpIH0gfSwgJmVycm9y
Lm91dFB0cigpKSk7Ci0gICAgfTsKLQotICAgIEdSZWZQdHI8V2ViS2l0V2ViRXh0ZW5zaW9uPiBl
eHRlbnNpb24gPSBwYXJzZSgieyBcImRlY2xhcmF0aXZlX25ldF9yZXF1ZXN0XCI6IHsgXCJydWxl
X3Jlc291cmNlc1wiOiBbeyBcImlkXCI6IFwidGVzdFwiLCBcImVuYWJsZWRcIjogdHJ1ZSwgXCJw
YXRoXCI6IFwicnVsZXMuanNvblwiIH1dIH0sIFwibWFuaWZlc3RfdmVyc2lvblwiOiAzLCBcIm5h
bWVcIjogXCJUZXN0XCIsIFwiZGVzY3JpcHRpb25cIjogXCJUZXN0XCIsIFwidmVyc2lvblwiOiBc
IjEuMFwiLCBcInBlcm1pc3Npb25zXCI6IFsgXCJkZWNsYXJhdGl2ZU5ldFJlcXVlc3RcIl0gfSIp
OwotICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X2hhc19jb250ZW50
X21vZGlmaWNhdGlvbl9ydWxlcyhleHRlbnNpb24uZ2V0KCkpKTsKLSAgICBnX2Fzc2VydF9ub19l
cnJvcihlcnJvci5nZXQoKSk7Ci0KLSAgICAvLyBNaXNzaW5nIGlkCi0gICAgZXh0ZW5zaW9uID0g
cGFyc2UoInsgXCJkZWNsYXJhdGl2ZV9uZXRfcmVxdWVzdFwiOiB7IFwicnVsZV9yZXNvdXJjZXNc
IjogW3sgXCJlbmFibGVkXCI6IHRydWUsIFwicGF0aFwiOiBcInJ1bGVzLmpzb25cIiB9XSB9LCBc
Im1hbmlmZXN0X3ZlcnNpb25cIjogMywgXCJuYW1lXCI6IFwiVGVzdFwiLCBcImRlc2NyaXB0aW9u
XCI6IFwiVGVzdFwiLCBcInZlcnNpb25cIjogXCIxLjBcIiwgXCJwZXJtaXNzaW9uc1wiOiBbIFwi
ZGVjbGFyYXRpdmVOZXRSZXF1ZXN0XCJdIH0iKTsKLSAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRf
d2ViX2V4dGVuc2lvbl9nZXRfaGFzX2NvbnRlbnRfbW9kaWZpY2F0aW9uX3J1bGVzKGV4dGVuc2lv
bi5nZXQoKSkpOwotICAgIGdfYXNzZXJ0X2Vycm9yKGVycm9yLmdldCgpLCBXRUJLSVRfV0VCX0VY
VEVOU0lPTl9FUlJPUiwgV0VCS0lUX1dFQl9FWFRFTlNJT05fRVJST1JfSU5WQUxJRF9ERUNMQVJB
VElWRV9ORVRfUkVRVUVTVF9FTlRSWSk7Ci0KLSAgICAvLyBNaXNzaW5nIGVuYWJsZWQKLSAgICBl
eHRlbnNpb24gPSBwYXJzZSgieyBcImRlY2xhcmF0aXZlX25ldF9yZXF1ZXN0XCI6IHsgXCJydWxl
X3Jlc291cmNlc1wiOiBbeyBcImlkXCI6IFwidGVzdFwiLCBcInBhdGhcIjogXCJydWxlcy5qc29u
XCIgfV0gfSwgXCJtYW5pZmVzdF92ZXJzaW9uXCI6IDMsIFwibmFtZVwiOiBcIlRlc3RcIiwgXCJk
ZXNjcmlwdGlvblwiOiBcIlRlc3RcIiwgXCJ2ZXJzaW9uXCI6IFwiMS4wXCIsIFwicGVybWlzc2lv
bnNcIjogWyBcImRlY2xhcmF0aXZlTmV0UmVxdWVzdFwiXSB9Iik7Ci0gICAgZ19hc3NlcnRfZmFs
c2Uod2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X2hhc19jb250ZW50X21vZGlmaWNhdGlvbl9ydWxl
cyhleHRlbnNpb24uZ2V0KCkpKTsKLSAgICBnX2Fzc2VydF9lcnJvcihlcnJvci5nZXQoKSwgV0VC
S0lUX1dFQl9FWFRFTlNJT05fRVJST1IsIFdFQktJVF9XRUJfRVhURU5TSU9OX0VSUk9SX0lOVkFM
SURfREVDTEFSQVRJVkVfTkVUX1JFUVVFU1RfRU5UUlkpOwotCi0gICAgLy8gTWlzc2luZyBwYXRo
Ci0gICAgZXh0ZW5zaW9uID0gcGFyc2UoInsgXCJkZWNsYXJhdGl2ZV9uZXRfcmVxdWVzdFwiOiB7
IFwicnVsZV9yZXNvdXJjZXNcIjogW3sgXCJpZFwiOiBcInRlc3RcIiwgXCJlbmFibGVkXCI6IHRy
dWUgfV0gfSwgXCJtYW5pZmVzdF92ZXJzaW9uXCI6IDMsIFwibmFtZVwiOiBcIlRlc3RcIiwgXCJk
ZXNjcmlwdGlvblwiOiBcIlRlc3RcIiwgXCJ2ZXJzaW9uXCI6IFwiMS4wXCIsIFwicGVybWlzc2lv
bnNcIjogWyBcImRlY2xhcmF0aXZlTmV0UmVxdWVzdFwiXSB9Iik7Ci0gICAgZ19hc3NlcnRfZmFs
c2Uod2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X2hhc19jb250ZW50X21vZGlmaWNhdGlvbl9ydWxl
cyhleHRlbnNpb24uZ2V0KCkpKTsKLSAgICBnX2Fzc2VydF9lcnJvcihlcnJvci5nZXQoKSwgV0VC
S0lUX1dFQl9FWFRFTlNJT05fRVJST1IsIFdFQktJVF9XRUJfRVhURU5TSU9OX0VSUk9SX0lOVkFM
SURfREVDTEFSQVRJVkVfTkVUX1JFUVVFU1RfRU5UUlkpOwotCi0gICAgLy8gRHVwbGljYXRlIG5h
bWVzCi0gICAgZXh0ZW5zaW9uID0gcGFyc2UoInsgXCJkZWNsYXJhdGl2ZV9uZXRfcmVxdWVzdFwi
OiB7IFwicnVsZV9yZXNvdXJjZXNcIjogW3sgXCJpZFwiOiBcInRlc3RcIiwgXCJlbmFibGVkXCI6
IHRydWUsIFwicGF0aFwiOiBcInJ1bGVzLmpzb25cIiB9LCB7IFwiaWRcIjogXCJ0ZXN0XCIsIFwi
ZW5hYmxlZFwiOiB0cnVlLCBcInBhdGhcIjogXCJydWxlczIuanNvblwiIH1dIH0sIFwibWFuaWZl
c3RfdmVyc2lvblwiOiAzLCBcIm5hbWVcIjogXCJUZXN0XCIsIFwiZGVzY3JpcHRpb25cIjogXCJU
ZXN0XCIsIFwidmVyc2lvblwiOiBcIjEuMFwiLCBcInBlcm1pc3Npb25zXCI6IFsgXCJkZWNsYXJh
dGl2ZU5ldFJlcXVlc3RcIl0gfSIpOwotICAgIC8vIFRoZSBmaXJzdCBydWxlIHNob3VsZCBiZSBs
b2FkZWQKLSAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9oYXNfY29u
dGVudF9tb2RpZmljYXRpb25fcnVsZXMoZXh0ZW5zaW9uLmdldCgpKSk7Ci0gICAgLy8gQnV0IGFu
IGVycm9yIHNob3VsZCBzdGlsbCBiZSBlbWl0dGVkCi0gICAgZ19hc3NlcnRfZXJyb3IoZXJyb3Iu
Z2V0KCksIFdFQktJVF9XRUJfRVhURU5TSU9OX0VSUk9SLCBXRUJLSVRfV0VCX0VYVEVOU0lPTl9F
UlJPUl9JTlZBTElEX0RFQ0xBUkFUSVZFX05FVF9SRVFVRVNUX0VOVFJZKTsKLQotICAgIC8vIE9u
ZSB2YWxpZCBydWxlLCBvbmUgaW52YWxpZCBydWxlCi0gICAgZXh0ZW5zaW9uID0gcGFyc2UoInsg
XCJkZWNsYXJhdGl2ZV9uZXRfcmVxdWVzdFwiOiB7IFwicnVsZV9yZXNvdXJjZXNcIjogW3sgXCJp
ZFwiOiBcInRlc3RcIiwgXCJlbmFibGVkXCI6IHRydWUsIFwicGF0aFwiOiBcInJ1bGVzLmpzb25c
IiB9LCB7IFwiZW5hYmxlZFwiOiB0cnVlLCBcInBhdGhcIjogXCJydWxlczIuanNvblwiIH1dIH0s
IFwibWFuaWZlc3RfdmVyc2lvblwiOiAzLCBcIm5hbWVcIjogXCJUZXN0XCIsIFwiZGVzY3JpcHRp
b25cIjogXCJUZXN0XCIsIFwidmVyc2lvblwiOiBcIjEuMFwiLCBcInBlcm1pc3Npb25zXCI6IFsg
XCJkZWNsYXJhdGl2ZU5ldFJlcXVlc3RcIl0gfSIpOwotICAgIC8vIFRoZSBmaXJzdCBydWxlIHNo
b3VsZCBiZSBsb2FkZWQKLSAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dl
dF9oYXNfY29udGVudF9tb2RpZmljYXRpb25fcnVsZXMoZXh0ZW5zaW9uLmdldCgpKSk7Ci0gICAg
Ly8gQnV0IGFuIGVycm9yIHNob3VsZCBzdGlsbCBiZSBlbWl0dGVkCi0gICAgZ19hc3NlcnRfZXJy
b3IoZXJyb3IuZ2V0KCksIFdFQktJVF9XRUJfRVhURU5TSU9OX0VSUk9SLCBXRUJLSVRfV0VCX0VY
VEVOU0lPTl9FUlJPUl9JTlZBTElEX0RFQ0xBUkFUSVZFX05FVF9SRVFVRVNUX0VOVFJZKTsKLQot
ICAgIC8vIE5vIHJ1bGVzCi0gICAgZXh0ZW5zaW9uID0gcGFyc2UoInsgXCJkZWNsYXJhdGl2ZV9u
ZXRfcmVxdWVzdFwiOiB7IFwicnVsZV9yZXNvdXJjZXNcIjogW10gfSwgXCJtYW5pZmVzdF92ZXJz
aW9uXCI6IDMsIFwibmFtZVwiOiBcIlRlc3RcIiwgXCJkZXNjcmlwdGlvblwiOiBcIlRlc3RcIiwg
XCJ2ZXJzaW9uXCI6IFwiMS4wXCIsIFwicGVybWlzc2lvbnNcIjogWyBcImRlY2xhcmF0aXZlTmV0
UmVxdWVzdFwiXSB9Iik7Ci0gICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3dlYl9leHRlbnNpb25f
Z2V0X2hhc19jb250ZW50X21vZGlmaWNhdGlvbl9ydWxlcyhleHRlbnNpb24uZ2V0KCkpKTsKLSAg
ICBnX2Fzc2VydF9ub19lcnJvcihlcnJvci5nZXQoKSk7Ci19Ci0KLXN0YXRpYyB2b2lkIHRlc3RF
eHRlcm5hbGx5Q29ubmVjdGFibGVQYXJzaW5nKFRlc3QqLCBnY29uc3Rwb2ludGVyKQotewotICAg
IEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKLSAgICBhdXRvIHBhcnNlID0gWyZdKGNvbnN0
IGdjaGFyKiBtYW5pZmVzdFN0cmluZykgewotICAgICAgICByZXR1cm4gYWRvcHRHUmVmKHdlYmtp
dFdlYkV4dGVuc2lvbkNyZWF0ZSh7IHsgIm1hbmlmZXN0Lmpzb24iX3MsIGNyZWF0ZUdCeXRlcyht
YW5pZmVzdFN0cmluZykgfSB9LCAmZXJyb3Iub3V0UHRyKCkpKTsKLSAgICB9OwotCi0gICAgR1Jl
ZlB0cjxXZWJLaXRXZWJFeHRlbnNpb24+IGV4dGVuc2lvbiA9IHBhcnNlKCJ7IFwiZXh0ZXJuYWxs
eV9jb25uZWN0YWJsZVwiOiB7fSwgXCJtYW5pZmVzdF92ZXJzaW9uXCI6IDMsIFwibmFtZVwiOiBc
IlRlc3RcIiwgXCJkZXNjcmlwdGlvblwiOiBcIlRlc3RcIiwgXCJ2ZXJzaW9uXCI6IFwiMS4wXCIg
fSIpOwotICAgIGdfYXNzZXJ0X251bGwod2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X2FsbF9yZXF1
ZXN0ZWRfbWF0Y2hfcGF0dGVybnMoZXh0ZW5zaW9uLmdldCgpKSk7Ci0gICAgZ19hc3NlcnRfZXJy
b3IoZXJyb3IuZ2V0KCksIFdFQktJVF9XRUJfRVhURU5TSU9OX0VSUk9SLCBXRUJLSVRfV0VCX0VY
VEVOU0lPTl9FUlJPUl9JTlZBTElEX01BTklGRVNUX0VOVFJZKTsKLQotICAgIC8vIEV4cGVjdCBh
biBlcnJvciBzaW5jZSAnZXh0ZXJuYWxseV9jb25uZWN0YWJsZScgaXMgc3BlY2lmaWVkLCBidXQg
dGhlcmUgYXJlIG5vIHZhbGlkIG1hdGNoIHBhdHRlcm5zIG9yIGV4dGVuc2lvbiBpZHMuCi0gICAg
ZXh0ZW5zaW9uID0gcGFyc2UoInsgXCJleHRlcm5hbGx5X2Nvbm5lY3RhYmxlXCI6IHsgXCJtYXRj
aGVzXCI6IFtdIH0sIFwibWFuaWZlc3RfdmVyc2lvblwiOiAzLCBcIm5hbWVcIjogXCJUZXN0XCIs
IFwiZGVzY3JpcHRpb25cIjogXCJUZXN0XCIsIFwidmVyc2lvblwiOiBcIjEuMFwiIH0iKTsKLSAg
ICBnX2Fzc2VydF9udWxsKHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9hbGxfcmVxdWVzdGVkX21h
dGNoX3BhdHRlcm5zKGV4dGVuc2lvbi5nZXQoKSkpOwotICAgIGdfYXNzZXJ0X2Vycm9yKGVycm9y
LmdldCgpLCBXRUJLSVRfV0VCX0VYVEVOU0lPTl9FUlJPUiwgV0VCS0lUX1dFQl9FWFRFTlNJT05f
RVJST1JfSU5WQUxJRF9NQU5JRkVTVF9FTlRSWSk7Ci0KLSAgICBleHRlbnNpb24gPSBwYXJzZSgi
eyBcImV4dGVybmFsbHlfY29ubmVjdGFibGVcIjogeyBcIm1hdGNoZXNcIjogWyBcIlwiIF0gfSwg
XCJtYW5pZmVzdF92ZXJzaW9uXCI6IDMsIFwibmFtZVwiOiBcIlRlc3RcIiwgXCJkZXNjcmlwdGlv
blwiOiBcIlRlc3RcIiwgXCJ2ZXJzaW9uXCI6IFwiMS4wXCIgfSIpOwotICAgIGdfYXNzZXJ0X251
bGwod2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X2FsbF9yZXF1ZXN0ZWRfbWF0Y2hfcGF0dGVybnMo
ZXh0ZW5zaW9uLmdldCgpKSk7Ci0gICAgZ19hc3NlcnRfZXJyb3IoZXJyb3IuZ2V0KCksIFdFQktJ
VF9XRUJfRVhURU5TSU9OX0VSUk9SLCBXRUJLSVRfV0VCX0VYVEVOU0lPTl9FUlJPUl9JTlZBTElE
X01BTklGRVNUX0VOVFJZKTsKLQotICAgIGV4dGVuc2lvbiA9IHBhcnNlKCJ7IFwiZXh0ZXJuYWxs
eV9jb25uZWN0YWJsZVwiOiB7IFwibWF0Y2hlc1wiOiBbXSwgXCJpZHNcIjogWyBcIlwiIF0gfSwg
XCJtYW5pZmVzdF92ZXJzaW9uXCI6IDMsIFwibmFtZVwiOiBcIlRlc3RcIiwgXCJkZXNjcmlwdGlv
blwiOiBcIlRlc3RcIiwgXCJ2ZXJzaW9uXCI6IFwiMS4wXCIgfSIpOwotICAgIGdfYXNzZXJ0X251
bGwod2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X2FsbF9yZXF1ZXN0ZWRfbWF0Y2hfcGF0dGVybnMo
ZXh0ZW5zaW9uLmdldCgpKSk7Ci0gICAgZ19hc3NlcnRfZXJyb3IoZXJyb3IuZ2V0KCksIFdFQktJ
VF9XRUJfRVhURU5TSU9OX0VSUk9SLCBXRUJLSVRfV0VCX0VYVEVOU0lPTl9FUlJPUl9JTlZBTElE
X01BTklGRVNUX0VOVFJZKTsKLQotICAgIC8vIEV4cGVjdCBhbiBlcnJvciBpZiA8YWxsX3VybHM+
IGlzIHNwZWNpZmllZC4KLSAgICBleHRlbnNpb24gPSBwYXJzZSgieyBcImV4dGVybmFsbHlfY29u
bmVjdGFibGVcIjogeyBcIm1hdGNoZXNcIjogWyBcIjxhbGxfdXJscz5cIiBdIH0sIFwibWFuaWZl
c3RfdmVyc2lvblwiOiAzLCBcIm5hbWVcIjogXCJUZXN0XCIsIFwiZGVzY3JpcHRpb25cIjogXCJU
ZXN0XCIsIFwidmVyc2lvblwiOiBcIjEuMFwiIH0iKTsKLSAgICBnX2Fzc2VydF9udWxsKHdlYmtp
dF93ZWJfZXh0ZW5zaW9uX2dldF9hbGxfcmVxdWVzdGVkX21hdGNoX3BhdHRlcm5zKGV4dGVuc2lv
bi5nZXQoKSkpOwotICAgIGdfYXNzZXJ0X2Vycm9yKGVycm9yLmdldCgpLCBXRUJLSVRfV0VCX0VY
VEVOU0lPTl9FUlJPUiwgV0VCS0lUX1dFQl9FWFRFTlNJT05fRVJST1JfSU5WQUxJRF9NQU5JRkVT
VF9FTlRSWSk7Ci0KLSAgICAvLyBTdGlsbCBleHBlY3QgdGhlIGVycm9yaywgYnV0IGhhdmUgYSB2
YWxpZCBtYXRjaCBwYXR0ZXJuCi0gICAgZXh0ZW5zaW9uID0gcGFyc2UoInsgXCJleHRlcm5hbGx5
X2Nvbm5lY3RhYmxlXCI6IHsgXCJtYXRjaGVzXCI6IFsgXCIqOi8vKi5leGFtcGxlLmNvbS9cIiwg
XCI8YWxsX3VybHM+XCIgXSB9LCBcIm1hbmlmZXN0X3ZlcnNpb25cIjogMywgXCJuYW1lXCI6IFwi
VGVzdFwiLCBcImRlc2NyaXB0aW9uXCI6IFwiVGVzdFwiLCBcInZlcnNpb25cIjogXCIxLjBcIiB9
Iik7Ci0gICAgZ19hc3NlcnRfY21waW50KGdfbGlzdF9sZW5ndGgod2Via2l0X3dlYl9leHRlbnNp
b25fZ2V0X2FsbF9yZXF1ZXN0ZWRfbWF0Y2hfcGF0dGVybnMoZXh0ZW5zaW9uLmdldCgpKSksID09
LCAxKTsKLSAgICBnX2Fzc2VydF9lcnJvcihlcnJvci5nZXQoKSwgV0VCS0lUX1dFQl9FWFRFTlNJ
T05fRVJST1IsIFdFQktJVF9XRUJfRVhURU5TSU9OX0VSUk9SX0lOVkFMSURfTUFOSUZFU1RfRU5U
UlkpOwotCi0gICAgLy8gRXhwZWN0IGFuIGVycm9yIGZvciBub3QgaGF2aW5nIGEgc2Vjb25kIGxl
dmVsIGRvbWFpbi4KLSAgICBleHRlbnNpb24gPSBwYXJzZSgieyBcImV4dGVybmFsbHlfY29ubmVj
dGFibGVcIjogeyBcIm1hdGNoZXNcIjogWyBcIio6Ly8qLmNvbS9cIiBdIH0sIFwibWFuaWZlc3Rf
dmVyc2lvblwiOiAzLCBcIm5hbWVcIjogXCJUZXN0XCIsIFwiZGVzY3JpcHRpb25cIjogXCJUZXN0
XCIsIFwidmVyc2lvblwiOiBcIjEuMFwiIH0iKTsKLSAgICBnX2Fzc2VydF9udWxsKHdlYmtpdF93
ZWJfZXh0ZW5zaW9uX2dldF9hbGxfcmVxdWVzdGVkX21hdGNoX3BhdHRlcm5zKGV4dGVuc2lvbi5n
ZXQoKSkpOwotICAgIGdfYXNzZXJ0X2Vycm9yKGVycm9yLmdldCgpLCBXRUJLSVRfV0VCX0VYVEVO
U0lPTl9FUlJPUiwgV0VCS0lUX1dFQl9FWFRFTlNJT05fRVJST1JfSU5WQUxJRF9NQU5JRkVTVF9F
TlRSWSk7Ci0KLSAgICAvLyBNYXRjaCBmb3IgKjovLyouZXhhbXBsZS5jb20vKgotICAgIGF1dG8q
IG1hdGNoaW5nUGF0dGVybiA9IHdlYmtpdF93ZWJfZXh0ZW5zaW9uX21hdGNoX3BhdHRlcm5fbmV3
X3dpdGhfc3RyaW5nKCIqOi8vKi5leGFtcGxlLmNvbS8iLCBudWxscHRyKTsKLSAgICBleHRlbnNp
b24gPSBwYXJzZSgieyBcImV4dGVybmFsbHlfY29ubmVjdGFibGVcIjogeyBcIm1hdGNoZXNcIjog
WyBcIio6Ly8qLmV4YW1wbGUuY29tL1wiIF0gfSwgXCJtYW5pZmVzdF92ZXJzaW9uXCI6IDMsIFwi
bmFtZVwiOiBcIlRlc3RcIiwgXCJkZXNjcmlwdGlvblwiOiBcIlRlc3RcIiwgXCJ2ZXJzaW9uXCI6
IFwiMS4wXCIgfSIpOwotICAgIGdfYXNzZXJ0X2NtcGludChnX2xpc3RfbGVuZ3RoKHdlYmtpdF93
ZWJfZXh0ZW5zaW9uX2dldF9hbGxfcmVxdWVzdGVkX21hdGNoX3BhdHRlcm5zKGV4dGVuc2lvbi5n
ZXQoKSkpLCA9PSwgMSk7Ci0gICAgZ19hc3NlcnRfbm9fZXJyb3IoZXJyb3IuZ2V0KCkpOwotICAg
IGdfYXNzZXJ0X3RydWUod2Via2l0X3dlYl9leHRlbnNpb25fbWF0Y2hfcGF0dGVybl9tYXRjaGVz
X3BhdHRlcm4oc3RhdGljX2Nhc3Q8V2ViS2l0V2ViRXh0ZW5zaW9uTWF0Y2hQYXR0ZXJuKj4oZ19s
aXN0X250aF9kYXRhKHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9hbGxfcmVxdWVzdGVkX21hdGNo
X3BhdHRlcm5zKGV4dGVuc2lvbi5nZXQoKSksIDApKSwgbWF0Y2hpbmdQYXR0ZXJuLCBXRUJLSVRf
V0VCX0VYVEVOU0lPTl9NQVRDSF9QQVRURVJOX09QVElPTlNfTk9ORSkpOwotCi0gICAgZXh0ZW5z
aW9uID0gcGFyc2UoInsgXCJleHRlcm5hbGx5X2Nvbm5lY3RhYmxlXCI6IHsgXCJtYXRjaGVzXCI6
IFsgXCIqOi8vKi5leGFtcGxlLmNvbS9cIiBdLCBcImlkc1wiOiBbIFwiKlwiXSB9LCBcIm1hbmlm
ZXN0X3ZlcnNpb25cIjogMywgXCJuYW1lXCI6IFwiVGVzdFwiLCBcImRlc2NyaXB0aW9uXCI6IFwi
VGVzdFwiLCBcInZlcnNpb25cIjogXCIxLjBcIiB9Iik7Ci0gICAgZ19hc3NlcnRfY21waW50KGdf
bGlzdF9sZW5ndGgod2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X2FsbF9yZXF1ZXN0ZWRfbWF0Y2hf
cGF0dGVybnMoZXh0ZW5zaW9uLmdldCgpKSksID09LCAxKTsKLSAgICBnX2Fzc2VydF9ub19lcnJv
cihlcnJvci5nZXQoKSk7Ci0KLSAgICBleHRlbnNpb24gPSBwYXJzZSgieyBcImV4dGVybmFsbHlf
Y29ubmVjdGFibGVcIjogeyBcImlkc1wiOiBbIFwiKlwiXSB9LCBcIm1hbmlmZXN0X3ZlcnNpb25c
IjogMywgXCJuYW1lXCI6IFwiVGVzdFwiLCBcImRlc2NyaXB0aW9uXCI6IFwiVGVzdFwiLCBcInZl
cnNpb25cIjogXCIxLjBcIiB9Iik7Ci0gICAgZ19hc3NlcnRfbnVsbCh3ZWJraXRfd2ViX2V4dGVu
c2lvbl9nZXRfYWxsX3JlcXVlc3RlZF9tYXRjaF9wYXR0ZXJucyhleHRlbnNpb24uZ2V0KCkpKTsK
LSAgICBnX2Fzc2VydF9ub19lcnJvcihlcnJvci5nZXQoKSk7Ci0KLSAgICAvLyBGSVhNRTogPGh0
dHBzOi8vd2Via2l0Lm9yZy9iLzI2OTI5OT4gQWRkIG1vcmUgdGVzdHMgZm9yIGV4dGVybmFsbHlf
Y29ubmVjdGFibGUgImlkcyIga2V5cy4KLX0KLQotdm9pZCBiZWZvcmVBbGwoKQotewotICAgIFRl
c3Q6OmFkZCgiV2ViS2l0V2ViRXh0ZW5zaW9uIiwgImRpc3BsYXktc3RyaW5nLXBhcnNpbmciLCB0
ZXN0RGlzcGxheVN0cmluZ1BhcnNpbmcpOwotICAgIFRlc3Q6OmFkZCgiV2ViS2l0V2ViRXh0ZW5z
aW9uIiwgImRlZmF1bHQtbG9jYWxlLXBhcnNpbmciLCB0ZXN0RGVmYXVsdExvY2FsZVBhcnNpbmcp
OwotICAgIFRlc3Q6OmFkZCgiV2ViS2l0V2ViRXh0ZW5zaW9uIiwgImRpc3BsYXktc3RyaW5nLXBh
cnNpbmctd2l0aC1sb2NhbGl6YXRpb24iLCB0ZXN0RGlzcGxheVN0cmluZ1BhcnNpbmdXaXRoTG9j
YWxpemF0aW9uKTsKLSAgICBUZXN0OjphZGQoIldlYktpdFdlYkV4dGVuc2lvbiIsICJhY3Rpb24t
cGFyc2luZyIsIHRlc3RBY3Rpb25QYXJzaW5nKTsKLSAgICBUZXN0OjphZGQoIldlYktpdFdlYkV4
dGVuc2lvbiIsICJjb250ZW50LXNjcmlwdHMtcGFyc2luZyIsIHRlc3RDb250ZW50U2NyaXB0c1Bh
cnNpbmcpOwotICAgIFRlc3Q6OmFkZCgiV2ViS2l0V2ViRXh0ZW5zaW9uIiwgInBlcm1pc3Npb25z
LXBhcnNpbmciLCB0ZXN0UGVybWlzc2lvbnNQYXJzaW5nKTsKLSAgICBUZXN0OjphZGQoIldlYktp
dFdlYkV4dGVuc2lvbiIsICJiYWNrZ3JvdW5kLXBhcnNpbmciLCB0ZXN0QmFja2dyb3VuZFBhcnNp
bmcpOwotICAgIFRlc3Q6OmFkZCgiV2ViS2l0V2ViRXh0ZW5zaW9uIiwgImJhY2tncm91bmQtcHJl
ZmVycmVkLWVudmlyb25tZW50LXBhcnNpbmciLCB0ZXN0QmFja2dyb3VuZFByZWZlcnJlZEVudmly
b25tZW50UGFyc2luZyk7Ci0gICAgVGVzdDo6YWRkKCJXZWJLaXRXZWJFeHRlbnNpb24iLCAib3B0
aW9ucy1wYWdlLXBhcnNpbmciLCB0ZXN0T3B0aW9uc1BhZ2VQYXJzaW5nKTsKLSAgICBUZXN0Ojph
ZGQoIldlYktpdFdlYkV4dGVuc2lvbiIsICJ1cmwtb3ZlcnJpZGVzLXBhcnNpbmciLCB0ZXN0VVJM
T3ZlcnJpZGVzUGFyc2luZyk7Ci0gICAgVGVzdDo6YWRkKCJXZWJLaXRXZWJFeHRlbnNpb24iLCAi
Y29udGVudC1zZWN1cml0eS1wb2xpY3ktcGFyc2luZyIsIHRlc3RDb250ZW50U2VjdXJpdHlQb2xp
Y3lQYXJzaW5nKTsKLSAgICBUZXN0OjphZGQoIldlYktpdFdlYkV4dGVuc2lvbiIsICJ3ZWItYWNj
ZXNzaWJsZS1yZXNvdXJjZXMtdjIiLCB0ZXN0V2ViQWNjZXNzaWJsZVJlc291cmNlc1YyKTsKLSAg
ICBUZXN0OjphZGQoIldlYktpdFdlYkV4dGVuc2lvbiIsICJ3ZWItYWNjZXNzaWJsZS1yZXNvdXJj
ZXMtdjMiLCB0ZXN0V2ViQWNjZXNzaWJsZVJlc291cmNlc1YzKTsKLSAgICBUZXN0OjphZGQoIldl
YktpdFdlYkV4dGVuc2lvbiIsICJjb21tYW5kcyIsIHRlc3RDb21tYW5kc1BhcnNpbmcpOwotICAg
IFRlc3Q6OmFkZCgiV2ViS2l0V2ViRXh0ZW5zaW9uIiwgImRlY2xhcmF0aXZlLW5ldC1yZXF1ZXN0
IiwgdGVzdERlY2xhcmF0aXZlTmV0UmVxdWVzdFBhcnNpbmcpOwotICAgIFRlc3Q6OmFkZCgiV2Vi
S2l0V2ViRXh0ZW5zaW9uIiwgImV4dGVybmFsbHktY29ubmVjdGFibGUiLCB0ZXN0RXh0ZXJuYWxs
eUNvbm5lY3RhYmxlUGFyc2luZyk7Ci19Ci0KLXZvaWQgYWZ0ZXJBbGwoKQotewotfQotCi0jZW5k
aWYgLy8gRU5BQkxFKFdLX1dFQl9FWFRFTlNJT05TKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9nbGliL0NNYWtlTGlzdHMudHh0IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL0NN
YWtlTGlzdHMudHh0CmluZGV4IDNmODQ0MTdmNjRiZS4uMDQ4ZWM1ODc0MWEzIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvQ01ha2VMaXN0cy50eHQKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9nbGliL0NNYWtlTGlzdHMudHh0CkBAIC0xLDcgKzEsNiBAQAogc2V0KFdlYktp
dEdMaWJBUElUZXN0c19TT1VSQ0VTCiAgICAgJHtUT09MU19ESVJ9L1Rlc3RXZWJLaXRBUEkvZ2xp
Yi9XZWJLaXRHTGliL0xvYWRUcmFja2luZ1Rlc3QuY3BwCiAgICAgJHtUT09MU19ESVJ9L1Rlc3RX
ZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1Rlc3RNYWluLmNwcAotICAgICR7VE9PTFNfRElSfS9U
ZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJFeHRlbnNpb25VdGlsaXRpZXMuY3BwCiAg
ICAgJHtUT09MU19ESVJ9L1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYktpdFRlc3RT
ZXJ2ZXIuY3BwCiAgICAgJHtUT09MU19ESVJ9L1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGli
L1dlYlZpZXdUZXN0LmNwcAogKQpAQCAtMjA5LDcgKzIwOCw2IEBAIEFERF9XSzJfVEVTVChUZXN0
R2VvbG9jYXRpb25NYW5hZ2VyICR7VE9PTFNfRElSfS9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dEdMaWIvCiBBRERfV0syX1RFU1QoVGVzdElucHV0TWV0aG9kQ29udGV4dCAke1RPT0xTX0RJUn0v
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RJbnB1dE1ldGhvZENvbnRleHQuY3Bw
KQogCiBpZiAoRU5BQkxFX1dLX1dFQl9FWFRFTlNJT05TKQotICAgIEFERF9XSzJfVEVTVChUZXN0
V2ViS2l0V2ViRXh0ZW5zaW9uICR7VE9PTFNfRElSfS9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dEdMaWIvVGVzdFdlYktpdFdlYkV4dGVuc2lvbi5jcHApCiAgICAgQUREX1dLMl9URVNUKFRlc3RX
ZWJLaXRXZWJFeHRlbnNpb25NYXRjaFBhdHRlcm4gJHtUT09MU19ESVJ9L1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0V2ViRXh0ZW5zaW9uTWF0Y2hQYXR0ZXJuLmNwcCkK
IGVuZGlmICgpCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRH
TGliL1dlYkV4dGVuc2lvblV0aWxpdGllcy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIv
V2ViS2l0R0xpYi9XZWJFeHRlbnNpb25VdGlsaXRpZXMuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA2MWI2NDYwZDA4YWQuLjAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJFeHRlbnNpb25VdGlsaXRpZXMuY3BwCisrKyAvZGV2
L251bGwKQEAgLTEsNTkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyNCBJZ2FsaWEg
Uy5MLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViRXh0ZW5z
aW9uVXRpbGl0aWVzLmgiCi0KLSNpZiBFTkFCTEUoV0tfV0VCX0VYVEVOU0lPTlMpCi0KLSNpbmNs
dWRlIDxndGsvZ3RrLmg+Ci0jaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgotI2luY2x1ZGUg
PHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KLQotbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewotbmFt
ZXNwYWNlIFV0aWwgewotCi1HUmVmUHRyPEdCeXRlcz4gbWFrZVBOR0RhdGEoaW50IHdpZHRoLCBp
bnQgaGVpZ2h0LCBpbnQgY29sb3IpCi17Ci0gICAgR1JlZlB0cjxHZGtQaXhidWY+IHBpeGJ1ZiA9
IGFkb3B0R1JlZihnZGtfcGl4YnVmX25ldyhHREtfQ09MT1JTUEFDRV9SR0IsIEZBTFNFLCA4LCB3
aWR0aCwgaGVpZ2h0KSk7Ci0KLSAgICBpZiAoIXBpeGJ1ZikKLSAgICAgICAgcmV0dXJuIHsgfTsK
LQotICAgIGdka19waXhidWZfZmlsbChwaXhidWYuZ2V0KCksIGNvbG9yKTsKLQotICAgIEdVbmlx
dWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKLSAgICBnY2hhciogYnVmZmVyOwotICAgIGdzaXplIGJ1
ZmZlclNpemU7Ci0gICAgaWYgKCFnZGtfcGl4YnVmX3NhdmVfdG9fYnVmZmVyKHBpeGJ1Zi5nZXQo
KSwgJmJ1ZmZlciwgJmJ1ZmZlclNpemUsICJwbmciLCAmZXJyb3Iub3V0UHRyKCksIG51bGxwdHIp
KQotICAgICAgICByZXR1cm4geyB9OwotCi0gICAgcmV0dXJuIGFkb3B0R1JlZihnX2J5dGVzX25l
d190YWtlKGJ1ZmZlciwgYnVmZmVyU2l6ZSkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBVdGlsCi19
IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0tfV0VCX0VY
VEVOU0lPTlMpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xp
Yi9XZWJFeHRlbnNpb25VdGlsaXRpZXMuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJL
aXRHTGliL1dlYkV4dGVuc2lvblV0aWxpdGllcy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAzMTFlYzY0YWJiNGEuLjAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L2dsaWIvV2ViS2l0R0xpYi9XZWJFeHRlbnNpb25VdGlsaXRpZXMuaAorKysgL2Rldi9udWxsCkBA
IC0xLDQ2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjQgSWdhbGlhIFMuTC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJVdGlsaXRpZXMuaCIKLSNpbmNsdWRl
ICJXVEZUZXN0VXRpbGl0aWVzLmgiCi0KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVk
ZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgotCi0jaWYgRU5BQkxFKFdLX1dFQl9FWFRFTlNJT05TKQot
Ci1uYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7Ci0KLW5hbWVzcGFjZSBVdGlsIHsKLQotR1JlZlB0
cjxHQnl0ZXM+IG1ha2VQTkdEYXRhKGludCB3aWR0aCwgaW50IGhlaWdodCwgaW50IGNvbG9yKTsK
LQotfSAvLyBuYW1lc3BhY2UgVXRpbAotCi19IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCi0K
LSNlbmRpZiAvLyBFTkFCTEUoV0tfV0VCX0VYVEVOU0lPTlMpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>