<?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>102267</bug_id>
          
          <creation_ts>2012-11-14 12:15:58 -0800</creation_ts>
          <short_desc>IndexedDB: Test conversions batch 4</short_desc>
          <delta_ts>2012-11-14 17:19:38 -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>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="David Grogan">dgrogan</reporter>
          <assigned_to name="David Grogan">dgrogan</assigned_to>
          <cc>alecflett</cc>
    
    <cc>jsbell</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>767164</commentid>
    <comment_count>0</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-11-14 12:15:58 -0800</bug_when>
    <thetext>IndexedDB: Test conversions batch 4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>767180</commentid>
    <comment_count>1</comment_count>
      <attachid>174225</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-11-14 12:34:42 -0800</bug_when>
    <thetext>Created attachment 174225
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>767185</commentid>
    <comment_count>2</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-11-14 12:36:42 -0800</bug_when>
    <thetext>Alec or Josh, could you take a look at this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>767354</commentid>
    <comment_count>3</comment_count>
      <attachid>174225</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-14 15:15:11 -0800</bug_when>
    <thetext>Comment on attachment 174225
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=174225&amp;action=review

lgtm

&gt; LayoutTests/storage/indexeddb/lazy-index-population-expected.txt:47
&gt; +FIXME: Script shouldn&apos;t have to explicitly close connection after it failed to open. http://crbug.com/161066

Does this repro in DRT? If so, a WebKit bug reference would be more appropriate I think.

&gt; LayoutTests/storage/indexeddb/tutorial.html:-1
&gt; -&lt;html&gt;&lt;title&gt;IndexedDB Tutorial&lt;/title&gt;

Being paranoid, I&apos;m going to point out places where this test may have been doing unique things...

&gt; LayoutTests/storage/indexeddb/tutorial.html:-122
&gt; -    while (db.objectStoreNames.length)

Deleting all the existing object stores by referencing db.objectStoreNames.length / db.objectStoreNames[0] appears to only be done here and in the deleteAllObjectStores() function in shared.js, and this overall refactor to use indexedDBTest is removing most calls to it. We should probably keep one around.

&gt; LayoutTests/storage/indexeddb/tutorial.html:-307
&gt; -    // Note that multiple objectStore (or index) method calls will return the same object, within

This should be validated by mozilla/object-identity.html but we may want to add setting a property on the object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>767355</commentid>
    <comment_count>4</comment_count>
      <attachid>174225</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-14 15:16:42 -0800</bug_when>
    <thetext>Comment on attachment 174225
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=174225&amp;action=review

&gt; LayoutTests/ChangeLog:11
&gt; +        I think tutorial.html has outlived its usefulness now that there are

... and I agree with removing tutorial.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>767451</commentid>
    <comment_count>5</comment_count>
      <attachid>174225</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-11-14 16:43:10 -0800</bug_when>
    <thetext>Comment on attachment 174225
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=174225&amp;action=review

&gt;&gt; LayoutTests/storage/indexeddb/lazy-index-population-expected.txt:47
&gt;&gt; +FIXME: Script shouldn&apos;t have to explicitly close connection after it failed to open. http://crbug.com/161066
&gt; 
&gt; Does this repro in DRT? If so, a WebKit bug reference would be more appropriate I think.

Done.

&gt;&gt; LayoutTests/storage/indexeddb/tutorial.html:-122
&gt;&gt; -    while (db.objectStoreNames.length)
&gt; 
&gt; Deleting all the existing object stores by referencing db.objectStoreNames.length / db.objectStoreNames[0] appears to only be done here and in the deleteAllObjectStores() function in shared.js, and this overall refactor to use indexedDBTest is removing most calls to it. We should probably keep one around.

Good point. I&apos;d bet deleteAllObjectStores doesn&apos;t go away anytime soon. Note added to shared.js though.

&gt;&gt; LayoutTests/storage/indexeddb/tutorial.html:-307
&gt;&gt; -    // Note that multiple objectStore (or index) method calls will return the same object, within
&gt; 
&gt; This should be validated by mozilla/object-identity.html but we may want to add setting a property on the object.

Added.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>767456</commentid>
    <comment_count>6</comment_count>
      <attachid>174285</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-11-14 16:47:03 -0800</bug_when>
    <thetext>Created attachment 174285
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>767460</commentid>
    <comment_count>7</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-11-14 16:48:14 -0800</bug_when>
    <thetext>Tony, could you review this batch of tests?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>767505</commentid>
    <comment_count>8</comment_count>
      <attachid>174285</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-14 17:19:34 -0800</bug_when>
    <thetext>Comment on attachment 174285
Patch

Clearing flags on attachment: 174285

Committed r134700: &lt;http://trac.webkit.org/changeset/134700&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>767506</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-14 17:19:38 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174225</attachid>
            <date>2012-11-14 12:34:42 -0800</date>
            <delta_ts>2012-11-14 16:47:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102267-20121114123241.patch</filename>
            <type>text/plain</type>
            <size>65084</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0NjIyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMjE2NTAyYmM0ZTVmODNmMzdlZTg3
OWE4MTgxYTZlZmYzNjZiZWU5My4uZGYyZjMyZGZlOWNkYWZlNmFiYjI5YTcxMjc1ZmNjOTJmYTUx
OWY2YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEyLTExLTE0ICBEYXZpZCBHcm9nYW4gIDxk
Z3JvZ2FuQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IFRlc3QgY29udmVyc2lv
bnMgYmF0Y2ggNAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTAyMjY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhlc2UgYXJlIHRlc3RzIHRoYXQgZG9uJ3QgaGF2ZSB0aGUganMgZmlsZSBpbiByZXNvdXJj
ZXMuIFRoZSBvbmx5CisgICAgICAgIGludGVyZXN0aW5nIGJpdCBpcyB0aGF0IGxhenktaW5kZXgt
cG9wdWxhdGlvbiB1bmNvdmVyZWQgYSBwb3RlbnRpYWwgYnVnLgorCisgICAgICAgIEkgdGhpbmsg
dHV0b3JpYWwuaHRtbCBoYXMgb3V0bGl2ZWQgaXRzIHVzZWZ1bG5lc3Mgbm93IHRoYXQgdGhlcmUg
YXJlCisgICAgICAgIG1vcmUgdHV0b3JpYWxzIG9uIHRoZSB3ZWIuIEl0IHdhcyB2ZXJ5IG91dGRh
dGVkLiBJdCBpcyBkZWxldGVkIGluCisgICAgICAgIHRoaXMgcGF0Y2guCisKKyAgICAgICAgKiBz
dG9yYWdlL2luZGV4ZWRkYi9kZWxldGVkYXRhYmFzZS10cmFuc2FjdGlvbi1leHBlY3RlZC50eHQ6
CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvZGVsZXRlZGF0YWJhc2UtdHJhbnNhY3Rpb24u
aHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9kb250LWNvbW1pdC1vbi1ibG9ja2Vk
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9kb250LWNvbW1pdC1v
bi1ibG9ja2VkLmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbGF6eS1pbmRleC1w
b3B1bGF0aW9uLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9sYXp5
LWluZGV4LXBvcHVsYXRpb24uaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb3pp
bGxhL2luZGV4LXByZXYtbm8tZHVwbGljYXRlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdG9y
YWdlL2luZGV4ZWRkYi9tb3ppbGxhL2luZGV4LXByZXYtbm8tZHVwbGljYXRlLmh0bWw6CisgICAg
ICAgICogc3RvcmFnZS9pbmRleGVkZGIvbm9ibG9icy1leHBlY3RlZC50eHQ6CisgICAgICAgICog
c3RvcmFnZS9pbmRleGVkZGIvbm9ibG9icy5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhl
ZGRiL3Jlc291cmNlcy9kb250LWNvbW1pdC1vbi1ibG9ja2VkLXdvcmtlci5qczoKKyAgICAgICAg
KG9uU2V0VmVyc2lvblN1Y2Nlc3MpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3N0cnVj
dHVyZWQtY2xvbmUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3N0
cnVjdHVyZWQtY2xvbmUuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi90cmFuc2Fj
dGlvbi1jb21wbGV0ZS13aXRoLWpzLXJlY3Vyc2lvbi1jcm9zcy1mcmFtZS1leHBlY3RlZC50eHQ6
CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tY29tcGxldGUtd2l0aC1q
cy1yZWN1cnNpb24tY3Jvc3MtZnJhbWUuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRk
Yi90cmFuc2FjdGlvbi1jb21wbGV0ZS13aXRoLWpzLXJlY3Vyc2lvbi1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tY29tcGxldGUtd2l0aC1qcy1y
ZWN1cnNpb24uaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi90dXRvcmlhbC1leHBl
Y3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvdHV0b3JpYWwu
aHRtbDogUmVtb3ZlZC4KKwogMjAxMi0xMS0xMyAgRGF2aWQgR3JvZ2FuICA8ZGdyb2dhbkBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgSW5kZXhlZERCOiB0ZXN0IGNvbnZlcnNpb24gYmF0Y2ggMwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGVsZXRlZGF0YWJhc2Ut
dHJhbnNhY3Rpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
ZGVsZXRlZGF0YWJhc2UtdHJhbnNhY3Rpb24tZXhwZWN0ZWQudHh0CmluZGV4IDZmZTI0OTZjNjRm
OTk4ZGY2N2I4YzU0NzVjY2RjNWY0ZGU3YjM4NTQuLjU5ZGM1YjkwMmZlZGU0MDllYjAzYjI4N2Vh
ZGNmZTcwOWM0NmE5N2MgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L2RlbGV0ZWRhdGFiYXNlLXRyYW5zYWN0aW9uLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9kZWxldGVkYXRhYmFzZS10cmFuc2FjdGlvbi1leHBlY3RlZC50
eHQKQEAgLTEsNCArMSwzIEBACi1DT05TT0xFIE1FU1NBR0U6IFRoZSBzZXRWZXJzaW9uKCkgbWV0
aG9kIGlzIG5vbi1zdGFuZGFyZCBhbmQgd2lsbCBiZSByZW1vdmVkLiBVc2UgdGhlICJ1cGdyYWRl
bmVlZGVkIiBldmVudCBpbnN0ZWFkLgogRW5zdXJlIGRlbGV0ZURhdGFiYXNlKCkgY2FuIHJ1biBj
b25jdXJyZW50bHkgd2l0aCB0cmFuc2FjdGlvbnMgaW4gb3RoZXIgZGF0YWJhc2VzCiAKIE9uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KQEAgLTYsMTQgKzUsOSBAQCBPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURQogCiBpbmRleGVkREIgPSBzZWxmLmluZGV4ZWREQiB8fCBzZWxmLndlYmtpdEluZGV4ZWRE
QiB8fCBzZWxmLm1vekluZGV4ZWREQiB8fCBzZWxmLm1zSW5kZXhlZERCIHx8IHNlbGYuT0luZGV4
ZWREQjsKIAotZGJuYW1lMSA9ICdkZWxldGVkYXRhYmFzZS10cmFuc2FjdGlvbicKLWRibmFtZTIg
PSAnZGVsZXRlZGF0YWJhc2UtdHJhbnNhY3Rpb24yJwotCi1QcmVwYXJlIGRhdGFiYXNlOgotaW5k
ZXhlZERCLmRlbGV0ZURhdGFiYXNlKGRibmFtZTEpCi1yZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4o
ZGJuYW1lMSkKLWRiID0gcmVxdWVzdC5yZXN1bHQKLWRiLnNldFZlcnNpb24oJzEnKQorZGJuYW1l
ID0gImRlbGV0ZWRhdGFiYXNlLXRyYW5zYWN0aW9uLmh0bWwiCitpbmRleGVkREIuZGVsZXRlRGF0
YWJhc2UoZGJuYW1lKQoraW5kZXhlZERCLm9wZW4oZGJuYW1lKQogZGIuY3JlYXRlT2JqZWN0U3Rv
cmUoJ3N0b3JlJykKIAogU3RhcnQgYSB0cmFuc2FjdGlvbiBhZ2FpbnN0IHRoZSBmaXJzdCBkYXRh
YmFzZToKQEAgLTIxLDYgKzE1LDcgQEAgdHJhbnMgPSBkYi50cmFuc2FjdGlvbignc3RvcmUnLCAn
cmVhZG9ubHknKQogdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJykuZ2V0KDApCiAKIERlbGV0ZSBh
IGRpZmZlcmVudCBkYXRhYmFzZToKK2RibmFtZTIgPSBkYm5hbWUgKyAnMicKIGluZGV4ZWREQi5k
ZWxldGVEYXRhYmFzZShkYm5hbWUyKQogUEFTUyBzdWNjZXNzIGV2ZW50IHdhcyBmaXJlZCBhdCBk
ZWxldGUgcmVxdWVzdAogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGVsZXRlZGF0YWJhc2UtdHJhbnNhY3Rp
b24uaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RlbGV0ZWRhdGFiYXNlLXRy
YW5zYWN0aW9uLmh0bWwKaW5kZXggY2U0MmExZjlmNzU5MzU2YzdmMDQwMTMyYWI2NjcwNzlhYWIx
NDc3MS4uYTE5N2NjNWJmZThmZGU5NzM1MGQwOGVjMGY2OGZjNTg1NWJjYmM5MyAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGVsZXRlZGF0YWJhc2UtdHJhbnNhY3Rp
b24uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kZWxldGVkYXRhYmFz
ZS10cmFuc2FjdGlvbi5odG1sCkBAIC0zLDI4ICszLDEyIEBACiA8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogZGVzY3JpcHRpb24oIkVuc3VyZSBk
ZWxldGVEYXRhYmFzZSgpIGNhbiBydW4gY29uY3VycmVudGx5IHdpdGggdHJhbnNhY3Rpb25zIGlu
IG90aGVyIGRhdGFiYXNlcyIpOwotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9y
UHJlZml4ZXMoKTsKLQotICAgIGV2YWxBbmRMb2coImRibmFtZTEgPSAnZGVsZXRlZGF0YWJhc2Ut
dHJhbnNhY3Rpb24nIik7Ci0gICAgZXZhbEFuZExvZygiZGJuYW1lMiA9ICdkZWxldGVkYXRhYmFz
ZS10cmFuc2FjdGlvbjInIik7Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJQcmVwYXJlIGRh
dGFiYXNlOiIpOwogCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5kZWxldGVE
YXRhYmFzZShkYm5hbWUxKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7
Ci0gICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4o
ZGJuYW1lMSkiKTsKLSAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKLSAg
ICAgICAgICAgIGV2YWxBbmRMb2coImRiID0gcmVxdWVzdC5yZXN1bHQiKTsKLSAgICAgICAgICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCcxJykiKTsKLSAgICAgICAgICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgICAgIHRyYW5z
ID0gcmVxdWVzdC5yZXN1bHQ7Ci0gICAgICAgICAgICAgICAgZXZhbEFuZExvZygiZGIuY3JlYXRl
T2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsKLSAgICAgICAgICAgICAgICB0cmFucy5vbmNvbXBsZXRl
ID0gc3RhcnRUcmFuc2FjdGlvbjsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0gICAgfTsK
K2luZGV4ZWREQlRlc3QocHJlcGFyZURhdGFiYXNlLCBzdGFydFRyYW5zYWN0aW9uKTsKK2Z1bmN0
aW9uIHByZXBhcmVEYXRhYmFzZSgpCit7CisgICAgZGIgPSBldmVudC50YXJnZXQucmVzdWx0Owor
ICAgIGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZScpIik7CiB9CiAKIGZ1
bmN0aW9uIHN0YXJ0VHJhbnNhY3Rpb24oKSB7CkBAIC0zNSw2ICsxOSw3IEBAIGZ1bmN0aW9uIHN0
YXJ0VHJhbnNhY3Rpb24oKSB7CiAKICAgICBkZWJ1ZygiIik7CiAgICAgZGVidWcoIkRlbGV0ZSBh
IGRpZmZlcmVudCBkYXRhYmFzZToiKTsKKyAgICBldmFsQW5kTG9nKCJkYm5hbWUyID0gZGJuYW1l
ICsgJzInIik7CiAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5kZWxldGVEYXRh
YmFzZShkYm5hbWUyKSIpOwogICAgIHJlcXVlc3Qub25ibG9ja2VkID0gdW5leHBlY3RlZEJsb2Nr
ZWRDYWxsYmFjazsKICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKQEAgLTQ1LDYgKzMwLDUgQEAgZnVuY3Rpb24gc3RhcnRUcmFuc2FjdGlvbigpIHsKICAgICB0
cmFucy5vbmNvbXBsZXRlID0gZmluaXNoSlNUZXN0OwogfQogCi10ZXN0KCk7CiA8L3NjcmlwdD4K
IDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZG9udC1j
b21taXQtb24tYmxvY2tlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9kb250LWNvbW1pdC1vbi1ibG9ja2VkLWV4cGVjdGVkLnR4dAppbmRleCAyYjRiZjNiMjNm
NjI5ZGY4NTgyN2I0ZGNhNjAyMWQ5ZGM5NDMzMTZmLi5lNmJiYWVlZWY4ODU0ZWZiMjJmNzE5NGE2
ODQzNzRlZDZiZWNkMDM0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9kb250LWNvbW1pdC1vbi1ibG9ja2VkLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9kb250LWNvbW1pdC1vbi1ibG9ja2VkLWV4cGVjdGVkLnR4dApAQCAt
MSw1ICsxLDMgQEAKLUNPTlNPTEUgTUVTU0FHRTogVGhlIHNldFZlcnNpb24oKSBtZXRob2QgaXMg
bm9uLXN0YW5kYXJkIGFuZCB3aWxsIGJlIHJlbW92ZWQuIFVzZSB0aGUgInVwZ3JhZGVuZWVkZWQi
IGV2ZW50IGluc3RlYWQuCi1DT05TT0xFIE1FU1NBR0U6IFRoZSBzZXRWZXJzaW9uKCkgbWV0aG9k
IGlzIG5vbi1zdGFuZGFyZCBhbmQgd2lsbCBiZSByZW1vdmVkLiBVc2UgdGhlICJ1cGdyYWRlbmVl
ZGVkIiBldmVudCBpbnN0ZWFkLgogUmVncmVzc2lvbiB0ZXN0IGZvciBXSzgyNjc4IC0gZG9uJ3Qg
Y29tbWl0IGFmdGVyIGEgYmxvY2tlZCBldmVudAogCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CkBAIC03LDEzICs1LDEwIEBAIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFCiAKIGluZGV4ZWREQiA9
IHNlbGYuaW5kZXhlZERCIHx8IHNlbGYud2Via2l0SW5kZXhlZERCIHx8IHNlbGYubW96SW5kZXhl
ZERCIHx8IHNlbGYubXNJbmRleGVkREIgfHwgc2VsZi5PSW5kZXhlZERCOwogCi1QcmVwYXJlIERh
dGFiYXNlCi1yZXF1ZXN0ID0gaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKCdkb250LWNvbW1pdC1v
bi1ibG9ja2VkJykKLXJlcXVlc3QgPSBpbmRleGVkREIub3BlbignZG9udC1jb21taXQtb24tYmxv
Y2tlZCcpCi1kYiA9IHJlcXVlc3QucmVzdWx0CitkYm5hbWUgPSAiZG9udC1jb21taXQtb24tYmxv
Y2tlZC5odG1sIgoraW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKGRibmFtZSkKK2luZGV4ZWREQi5v
cGVuKGRibmFtZSkKIGRiLm9udmVyc2lvbmNoYW5nZSA9IG9uVmVyc2lvbkNoYW5nZQotUEFTUyBk
Yi52ZXJzaW9uIGlzIDEKLWRiLnNldFZlcnNpb24oJzEnKQogc3RvcmUgPSBkYi5jcmVhdGVPYmpl
Y3RTdG9yZSgnc3RvcmUxJykKIAogaG9sZENvbm5lY3Rpb24oKToKQEAgLTIzLDEyICsxOCwxMCBA
QCBTdGFydGluZyB3b3JrZXI6IHJlc291cmNlcy9kb250LWNvbW1pdC1vbi1ibG9ja2VkLXdvcmtl
ci5qcwogW1dvcmtlcl0gaW5kZXhlZERCID0gc2VsZi5pbmRleGVkREIgfHwgc2VsZi53ZWJraXRJ
bmRleGVkREIgfHwgc2VsZi5tb3pJbmRleGVkREIgfHwgc2VsZi5tc0luZGV4ZWREQiB8fCBzZWxm
Lk9JbmRleGVkREI7CiBbV29ya2VyXSAKIFtXb3JrZXJdIG9wZW5pbmcgZGF0YWJhc2UgY29ubmVj
dGlvbgotW1dvcmtlcl0gcmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKCdkb250LWNvbW1pdC1vbi1i
bG9ja2VkJykKLVtXb3JrZXJdIGRiID0gcmVxdWVzdC5yZXN1bHQKK1tXb3JrZXJdIHJlcXVlc3Qg
PSBpbmRleGVkREIub3BlbignZG9udC1jb21taXQtb24tYmxvY2tlZC5odG1sJywgMikKIFtXb3Jr
ZXJdIHN0YXRlID0gJ3NldHZlcnNpb24nCi1bV29ya2VyXSByZXF1ZXN0ID0gZGIuc2V0VmVyc2lv
bigyKQogW1dvcmtlcl0gcmVxdWVzdC5vbmJsb2NrZWQgPSBvblNldFZlcnNpb25CbG9ja2VkCi1b
V29ya2VyXSByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9uU2V0VmVyc2lvblN1Y2Nlc3MKK1tXb3JrZXJd
IHJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gb25TZXRWZXJzaW9uU3VjY2VzcwogW1dvcmtlcl0g
c3Bpbm5pbmcgZm9yIDEwMG1zIHRvIGxldCBldmVudHMgYmUgcXVldWVkIGJ1dCBwcmV2ZW50IGRp
c3BhdGNoCiBbV29ya2VyXSBkb25lIHNwaW5uaW5nCiBbV29ya2VyXSAKQEAgLTM3LDEyICszMCwx
MSBAQCBQQVNTIFtXb3JrZXJdIHN0YXRlIGlzICJzZXR2ZXJzaW9uIgogW1dvcmtlcl0gc3RhdGUg
PSAnYmxvY2tlZCcKIFtXb3JrZXJdIAogW1dvcmtlcl0gb25TZXRWZXJzaW9uU3VjY2VzcygpOgor
W1dvcmtlcl0gZGIgPSBldmVudC50YXJnZXQucmVzdWx0CiBQQVNTIFtXb3JrZXJdIHN0YXRlIGlz
ICJibG9ja2VkIgogW1dvcmtlcl0gc3RhdGUgPSAnc3VjY2VzcycKIFtXb3JrZXJdIGNyZWF0aW5n
IG9iamVjdCBzdG9yZSAtIHdpbGwgZmFpbCBpZiB0cmFuc2FjdGlvbiBjb21taXRlZCBhZnRlciBi
bG9ja2VkIGV2ZW50CiBbV29ya2VyXSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUyJykKLVtX
b3JrZXJdIHRyYW5zYWN0aW9uID0gcmVxdWVzdC5yZXN1bHQKLVtXb3JrZXJdIHRyYW5zYWN0aW9u
Lm9uY29tcGxldGUgPSBvblRyYW5zYWN0aW9uQ29tcGxldGUKIFtXb3JrZXJdIAogW1dvcmtlcl0g
b25UcmFuc2FjdGlvbkNvbXBsZXRlCiBQQVNTIFtXb3JrZXJdIHN0YXRlIGlzICJzdWNjZXNzIgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZG9udC1jb21taXQtb24t
YmxvY2tlZC5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZG9udC1jb21taXQt
b24tYmxvY2tlZC5odG1sCmluZGV4IDEyNDYwOTI2MGI5OTZkODk1ZjJmZjdiNzA5MzZmZjljYTBk
NjNkODQuLjNiMTk0YmZhOWVlZWZkZmQ0NTY3YzIzNTQ4NGNmMjU0MzA2OGY4ODAgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RvbnQtY29tbWl0LW9uLWJsb2NrZWQu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kb250LWNvbW1pdC1vbi1i
bG9ja2VkLmh0bWwKQEAgLTgsMzYgKzgsMTIgQEAKIAogZGVzY3JpcHRpb24oIlJlZ3Jlc3Npb24g
dGVzdCBmb3IgV0s4MjY3OCAtIGRvbid0IGNvbW1pdCBhZnRlciBhIGJsb2NrZWQgZXZlbnQiKTsK
IAotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLSAgICBw
cmVwYXJlRGF0YWJhc2UoKTsKLX0KLQoraW5kZXhlZERCVGVzdChwcmVwYXJlRGF0YWJhc2UsIGhv
bGRDb25uZWN0aW9uKTsKIGZ1bmN0aW9uIHByZXBhcmVEYXRhYmFzZSgpCiB7Ci0gICAgZGVidWco
IlByZXBhcmUgRGF0YWJhc2UiKTsKLSAgICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gaW5kZXhlZERC
LmRlbGV0ZURhdGFiYXNlKCdkb250LWNvbW1pdC1vbi1ibG9ja2VkJykiKTsKLSAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgZXZhbEFuZExvZygicmVxdWVzdCA9IGluZGV4ZWRE
Qi5vcGVuKCdkb250LWNvbW1pdC1vbi1ibG9ja2VkJykiKTsKLSAgICAgICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgZXZhbEFuZExvZygiZGIgPSByZXF1ZXN0LnJl
c3VsdCIpOwotICAgICAgICAgICAgZGIub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OwotICAgICAgICAgICAgZXZhbEFuZExvZygiZGIub252ZXJzaW9uY2hhbmdlID0gb25WZXJzaW9u
Q2hhbmdlIik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiZGIudmVyc2lvbiIsICIxIik7Ci0gICAg
ICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignMScpIik7Ci0gICAg
ICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICAg
ICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgICAg
IHZhciB0cmFucyA9IHJlcXVlc3QucmVzdWx0OwotICAgICAgICAgICAgICAgIGV2YWxBbmRMb2co
InN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlMScpIik7Ci0gICAgICAgICAgICAg
ICAgdHJhbnMub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgICAgICAgICAg
ICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAgICAgICAgICAg
ICAgICB0cmFucy5vbmNvbXBsZXRlID0gaG9sZENvbm5lY3Rpb247Ci0gICAgICAgICAgICB9Owot
ICAgICAgICB9OwotICAgIH07CisgICAgZGIgPSBldmVudC50YXJnZXQucmVzdWx0OworICAgIGV2
YWxBbmRMb2coImRiLm9udmVyc2lvbmNoYW5nZSA9IG9uVmVyc2lvbkNoYW5nZSIpOworICAgIGV2
YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlMScpIik7CiB9CiAK
IGZ1bmN0aW9uIGhvbGRDb25uZWN0aW9uKCkKQEAgLTU1LDggKzMxLDYgQEAgZnVuY3Rpb24gb25W
ZXJzaW9uQ2hhbmdlKGUpCiAgICAgZGIuY2xvc2UoKTsKIH0KIAotdGVzdCgpOwotCiA8L3Njcmlw
dD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgogPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvbGF6eS1pbmRleC1wb3B1bGF0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL2xhenktaW5kZXgtcG9wdWxhdGlvbi1leHBlY3RlZC50eHQKaW5kZXgg
NmNlODhkYjFhNDQ3OTM2OTBkNTdhZGQzZTU5YzFkOTE2ZmIwZGI5Ny4uNDMxNzY3YWRkMmM5OTg1
ZjQzOTRkZmZlMGU3ZWU1NzIxNzIwYzQ5YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvbGF6eS1pbmRleC1wb3B1bGF0aW9uLWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9sYXp5LWluZGV4LXBvcHVsYXRpb24tZXhwZWN0ZWQu
dHh0CkBAIC0xLDQgKzEsMyBAQAotQ09OU09MRSBNRVNTQUdFOiBUaGUgc2V0VmVyc2lvbigpIG1l
dGhvZCBpcyBub24tc3RhbmRhcmQgYW5kIHdpbGwgYmUgcmVtb3ZlZC4gVXNlIHRoZSAidXBncmFk
ZW5lZWRlZCIgZXZlbnQgaW5zdGVhZC4KIFZlcmlmeSBlZGdlIGNhc2VzIHRoYXQgbGF6eSBpbmRl
eCBwb3B1bGF0aW9uIGluIGFuIEluZGV4ZWREQiBpbXBsZW1lbnRhdGlvbiBtaWdodCByZXZlYWwu
CiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KQEAgLTYsMTQgKzUsMTMgQEAgT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUKIAogaW5kZXhlZERCID0gc2VsZi5pbmRleGVkREIgfHwgc2VsZi53ZWJr
aXRJbmRleGVkREIgfHwgc2VsZi5tb3pJbmRleGVkREIgfHwgc2VsZi5tc0luZGV4ZWREQiB8fCBz
ZWxmLk9JbmRleGVkREI7CiAKLWluZGV4ZWREQi5vcGVuKCdsYXp5LWluZGV4LXBvcHVsYXRpb24n
KQotY29ubmVjdGlvbiA9IHJlcXVlc3QucmVzdWx0Ci0KLVZlcmlmeSB0aGF0IHVuaXF1ZW5lc3Mg
Y29uc3RyYWludHMgYXJlIGVuZm9yY2VkIHdpdGggYSBwcmUtZXhpc3RpbmcgaW5kZXg6Ci1jb25u
ZWN0aW9uLnNldFZlcnNpb24oJzEnKQorZGJuYW1lID0gImxhenktaW5kZXgtcG9wdWxhdGlvbi5o
dG1sIgoraW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKGRibmFtZSkKK2luZGV4ZWREQi5vcGVuKGRi
bmFtZSkKIERlbGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMuCiBzdG9yZSA9IGNvbm5lY3Rpb24uY3Jl
YXRlT2JqZWN0U3RvcmUoJ3N0b3JlJykKIHN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleDEnLCAnbmFt
ZScsIHt1bmlxdWU6IHRydWV9KQorVmVyaWZ5IHRoYXQgdW5pcXVlbmVzcyBjb25zdHJhaW50cyBh
cmUgZW5mb3JjZWQgd2l0aCBhIHByZS1leGlzdGluZyBpbmRleDoKIHRyYW5zID0gY29ubmVjdGlv
bi50cmFuc2FjdGlvbignc3RvcmUnLCAncmVhZHdyaXRlJykKIHN0b3JlID0gdHJhbnMub2JqZWN0
U3RvcmUoJ3N0b3JlJykKIHJlcXVlc3QxID0gc3RvcmUucHV0KHtuYW1lOiAnYm9iJ30sIDEpCkBA
IC0yOCw3ICsyNiw4IEBAIFBBU1MgKytzdGF0ZSBpcyAzCiBQQVNTIHRyYW5zLmVycm9yLm5hbWUg
aXMgJ0NvbnN0cmFpbnRFcnJvcicKIAogVmVyaWZ5IHRoYXQgdW5pcXVlbmVzcyBjb25zdHJhaW50
cyBhcmUgZW5mb3JjZWQgd2hlbiBpbmRleCBpcyBjcmVhdGVkIGJlZm9yZSBwdXRzOgotY29ubmVj
dGlvbi5zZXRWZXJzaW9uKCcyJykKK2Nvbm5lY3Rpb24uY2xvc2UoKQoraW5kZXhlZERCLm9wZW4o
ZGJuYW1lLCAyKQogZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGNvbm5lY3Rpb24pCiBEZWxldGVkIGFs
bCBvYmplY3Qgc3RvcmVzLgogc3RvcmUgPSBjb25uZWN0aW9uLmNyZWF0ZU9iamVjdFN0b3JlKCdz
dG9yZScpCkBAIC00NSw3ICs0NCw5IEBAIFBBU1MgKytzdGF0ZSBpcyAzCiBQQVNTIHRyYW5zLmVy
cm9yLm5hbWUgaXMgJ0NvbnN0cmFpbnRFcnJvcicKIAogVmVyaWZ5IHRoYXQgdW5pcXVlbmVzcyBj
b25zdHJhaW50cyBhcmUgZW5mb3JjZWQgd2hlbiBpbmRleCBpcyBjcmVhdGVkIGFmdGVyIHB1dHM6
Ci1jb25uZWN0aW9uLnNldFZlcnNpb24oJzMnKQorRklYTUU6IFNjcmlwdCBzaG91bGRuJ3QgaGF2
ZSB0byBleHBsaWNpdGx5IGNsb3NlIGNvbm5lY3Rpb24gYWZ0ZXIgaXQgZmFpbGVkIHRvIG9wZW4u
IGh0dHA6Ly9jcmJ1Zy5jb20vMTYxMDY2Citjb25uZWN0aW9uLmNsb3NlKCkKK2luZGV4ZWREQi5v
cGVuKGRibmFtZSwgMykKIGRlbGV0ZUFsbE9iamVjdFN0b3Jlcyhjb25uZWN0aW9uKQogRGVsZXRl
ZCBhbGwgb2JqZWN0IHN0b3Jlcy4KIHN0b3JlID0gY29ubmVjdGlvbi5jcmVhdGVPYmplY3RTdG9y
ZSgnc3RvcmUnKQpAQCAtNjIsNyArNjMsOSBAQCBQQVNTICsrc3RhdGUgaXMgMwogUEFTUyB0cmFu
cy5lcnJvci5uYW1lIGlzICdDb25zdHJhaW50RXJyb3InCiAKIFZlcmlmeSB0aGF0IHVuaXF1ZW5l
c3MgY29uc3RyYWludHMgYXJlIGVuZm9yY2VkIHdoZW4gaW5kZXggaXMgY3JlYXRlZCBiZXR3ZWVu
IHB1dHM6Ci1jb25uZWN0aW9uLnNldFZlcnNpb24oJzQnKQorRklYTUU6IFNjcmlwdCBzaG91bGRu
J3QgaGF2ZSB0byBleHBsaWNpdGx5IGNsb3NlIGNvbm5lY3Rpb24gYWZ0ZXIgaXQgZmFpbGVkIHRv
IG9wZW4uIGh0dHA6Ly9jcmJ1Zy5jb20vMTYxMDY2Citjb25uZWN0aW9uLmNsb3NlKCkKK2luZGV4
ZWREQi5vcGVuKGRibmFtZSwgNCkKIGRlbGV0ZUFsbE9iamVjdFN0b3Jlcyhjb25uZWN0aW9uKQog
RGVsZXRlZCBhbGwgb2JqZWN0IHN0b3Jlcy4KIHN0b3JlID0gY29ubmVjdGlvbi5jcmVhdGVPYmpl
Y3RTdG9yZSgnc3RvcmUnKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvbGF6eS1pbmRleC1wb3B1bGF0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9sYXp5LWluZGV4LXBvcHVsYXRpb24uaHRtbAppbmRleCA5OTRmOWUxNDNmNjhiYmQ3MDQ4
YTMxYzM5ZmU3ZTY5MjY4ZTdhNDU4Li5iYTNmYTFlNzU4NTcyOWU2YzIwY2FiYThjMDdjYjBlNGJj
NThmNTQ5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9sYXp5LWlu
ZGV4LXBvcHVsYXRpb24uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9s
YXp5LWluZGV4LXBvcHVsYXRpb24uaHRtbApAQCAtNSw2MyArNSw0NCBAQAogCiBkZXNjcmlwdGlv
bigiVmVyaWZ5IGVkZ2UgY2FzZXMgdGhhdCBsYXp5IGluZGV4IHBvcHVsYXRpb24gaW4gYW4gSW5k
ZXhlZERCIGltcGxlbWVudGF0aW9uIG1pZ2h0IHJldmVhbC4iKTsKIAotZnVuY3Rpb24gdGVzdCgp
Ci17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLSAgICBwcmVwYXJlRGF0YWJhc2UoKTsK
LX0KLQoraW5kZXhlZERCVGVzdChwcmVwYXJlRGF0YWJhc2UsIHZlcmlmeVByZUV4aXN0aW5nSW5k
ZXgpOwogZnVuY3Rpb24gcHJlcGFyZURhdGFiYXNlKCkKIHsKLSAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygiaW5kZXhlZERCLm9wZW4oJ2xhenktaW5kZXgtcG9wdWxhdGlvbicpIik7Ci0gICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBmdW5jdGlvbihlKSB7Ci0gICAgICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb24gPSBy
ZXF1ZXN0LnJlc3VsdCIpOwotICAgICAgICB2ZXJpZnlQcmVFeGlzdGluZ0luZGV4KCk7Ci0gICAg
fTsKKyAgICBjb25uZWN0aW9uID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKyAgICB0cmFucyA9IGV2
ZW50LnRhcmdldC50cmFuc2FjdGlvbjsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFi
b3J0Q2FsbGJhY2s7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGNvbm5lY3Rpb24pOworICAg
IGV2YWxBbmRMb2coInN0b3JlID0gY29ubmVjdGlvbi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUn
KSIpOworICAgIGV2YWxBbmRMb2coInN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleDEnLCAnbmFtZScs
IHt1bmlxdWU6IHRydWV9KSIpOwogfQogCiBmdW5jdGlvbiB2ZXJpZnlQcmVFeGlzdGluZ0luZGV4
KCkKIHsKLSAgICBkZWJ1ZygiIik7CiAgICAgZGVidWcoIlZlcmlmeSB0aGF0IHVuaXF1ZW5lc3Mg
Y29uc3RyYWludHMgYXJlIGVuZm9yY2VkIHdpdGggYSBwcmUtZXhpc3RpbmcgaW5kZXg6Iik7Cisg
ICAgZXZhbEFuZExvZygidHJhbnMgPSBjb25uZWN0aW9uLnRyYW5zYWN0aW9uKCdzdG9yZScsICdy
ZWFkd3JpdGUnKSIpOworICAgIGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUo
J3N0b3JlJykiKTsKKyAgICBldmFsQW5kTG9nKCJyZXF1ZXN0MSA9IHN0b3JlLnB1dCh7bmFtZTog
J2JvYid9LCAxKSIpOworICAgIGV2YWxBbmRMb2coInJlcXVlc3QyID0gc3RvcmUucHV0KHtuYW1l
OiAnYm9iJ30sIDIpIik7CisgICAgZXZhbEFuZExvZygic3RhdGUgPSAwIik7CisKKyAgICByZXF1
ZXN0MS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdDEub25z
dWNjZXNzID0gZnVuY3Rpb24gKCkgeworICAgICAgICBkZWJ1ZygicmVxdWVzdDEgcmVjZWl2ZWQg
c3VjY2VzcyBldmVudCIpOworICAgICAgICBzaG91bGRCZSgiKytzdGF0ZSIsICIxIik7CisgICAg
fTsKIAotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJjb25uZWN0aW9uLnNldFZlcnNpb24oJzEn
KSIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgIHRyYW5zID0gcmVxdWVz
dC5yZXN1bHQ7Ci0gICAgICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFj
azsKLSAgICAgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGNvbm5lY3Rpb24pOwotICAgICAgICBl
dmFsQW5kTG9nKCJzdG9yZSA9IGNvbm5lY3Rpb24uY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlJyki
KTsKLSAgICAgICAgZXZhbEFuZExvZygic3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4MScsICduYW1l
Jywge3VuaXF1ZTogdHJ1ZX0pIik7Ci0KLSAgICAgICAgdHJhbnMub25jb21wbGV0ZSA9IGZ1bmN0
aW9uKCkgewotICAgICAgICAgICAgZXZhbEFuZExvZygidHJhbnMgPSBjb25uZWN0aW9uLnRyYW5z
YWN0aW9uKCdzdG9yZScsICdyZWFkd3JpdGUnKSIpOwotICAgICAgICAgICAgZXZhbEFuZExvZygi
c3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKSIpOwotICAgICAgICAgICAgZXZhbEFu
ZExvZygicmVxdWVzdDEgPSBzdG9yZS5wdXQoe25hbWU6ICdib2InfSwgMSkiKTsKLSAgICAgICAg
ICAgIGV2YWxBbmRMb2coInJlcXVlc3QyID0gc3RvcmUucHV0KHtuYW1lOiAnYm9iJ30sIDIpIik7
Ci0gICAgICAgICAgICBldmFsQW5kTG9nKCJzdGF0ZSA9IDAiKTsKLQotICAgICAgICAgICAgcmVx
dWVzdDEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgICAgICAgICAgcmVx
dWVzdDEub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgICAgIGRlYnVnKCJy
ZXF1ZXN0MSByZWNlaXZlZCBzdWNjZXNzIGV2ZW50Iik7Ci0gICAgICAgICAgICAgICAgc2hvdWxk
QmUoIisrc3RhdGUiLCAiMSIpOwotICAgICAgICAgICAgfTsKLQotICAgICAgICAgICAgcmVxdWVz
dDIub25zdWNjZXNzID0gdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjazsKLSAgICAgICAgICAgIHJl
cXVlc3QyLm9uZXJyb3IgPSBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICAgICAgZGVidWcoInJl
cXVlc3QyIHJlY2VpdmVkIGVycm9yIGV2ZW50Iik7Ci0gICAgICAgICAgICAgICAgc2hvdWxkQmUo
Iisrc3RhdGUiLCAiMiIpOwotICAgICAgICAgICAgfTsKLQotICAgICAgICAgICAgdHJhbnMub25j
b21wbGV0ZSA9IHVuZXhwZWN0ZWRDb21wbGV0ZUNhbGxiYWNrOwotICAgICAgICAgICAgdHJhbnMu
b25hYm9ydCA9IGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgICAgICBkZWJ1ZygidHJhbnNhY3Rp
b24gYWJvcnRlZCIpOwotICAgICAgICAgICAgICAgIHNob3VsZEJlKCIrK3N0YXRlIiwgIjMiKTsK
LSAgICAgICAgICAgICAgICBzaG91bGRCZSgidHJhbnMuZXJyb3IubmFtZSIsICInQ29uc3RyYWlu
dEVycm9yJyIpOwotICAgICAgICAgICAgICAgIHZlcmlmeUNyZWF0ZVRoZW5QdXQoKTsKLSAgICAg
ICAgICAgIH07Ci0gICAgICAgIH07CisgICAgcmVxdWVzdDIub25zdWNjZXNzID0gdW5leHBlY3Rl
ZFN1Y2Nlc3NDYWxsYmFjazsKKyAgICByZXF1ZXN0Mi5vbmVycm9yID0gZnVuY3Rpb24gKCkgewor
ICAgICAgICBkZWJ1ZygicmVxdWVzdDIgcmVjZWl2ZWQgZXJyb3IgZXZlbnQiKTsKKyAgICAgICAg
c2hvdWxkQmUoIisrc3RhdGUiLCAiMiIpOworICAgIH07CisKKyAgICB0cmFucy5vbmNvbXBsZXRl
ID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2s7CisgICAgdHJhbnMub25hYm9ydCA9IGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgZGVidWcoInRyYW5zYWN0aW9uIGFib3J0ZWQiKTsKKyAgICAgICAg
c2hvdWxkQmUoIisrc3RhdGUiLCAiMyIpOworICAgICAgICBzaG91bGRCZSgidHJhbnMuZXJyb3Iu
bmFtZSIsICInQ29uc3RyYWludEVycm9yJyIpOworICAgICAgICB2ZXJpZnlDcmVhdGVUaGVuUHV0
KCk7CiAgICAgfTsKIH0KIApAQCAtNzAsMTAgKzUxLDE0IEBAIGZ1bmN0aW9uIHZlcmlmeUNyZWF0
ZVRoZW5QdXQoKQogICAgIGRlYnVnKCIiKTsKICAgICBkZWJ1ZygiVmVyaWZ5IHRoYXQgdW5pcXVl
bmVzcyBjb25zdHJhaW50cyBhcmUgZW5mb3JjZWQgd2hlbiBpbmRleCBpcyBjcmVhdGVkIGJlZm9y
ZSBwdXRzOiIpOwogCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImNvbm5lY3Rpb24uc2V0VmVy
c2lvbignMicpIik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgdHJhbnMg
PSByZXF1ZXN0LnJlc3VsdDsKKyAgICBldmFsQW5kTG9nKCJjb25uZWN0aW9uLmNsb3NlKCkiKTsK
KyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oZGJuYW1lLCAyKSIpOwor
ICAgIHJlcXVlc3Qub25lcnJvciA9IHZlcmlmeVB1dFRoZW5DcmVhdGU7CisgICAgcmVxdWVzdC5v
bmJsb2NrZWQgPSB1bmV4cGVjdGVkQmxvY2tlZENhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9udXBncmFkZW5l
ZWRlZCA9IGZ1bmN0aW9uKCkgeworICAgICAgICBjb25uZWN0aW9uID0gcmVxdWVzdC5yZXN1bHQ7
CisgICAgICAgIHRyYW5zID0gcmVxdWVzdC50cmFuc2FjdGlvbjsKIAogICAgICAgICBldmFsQW5k
TG9nKCJkZWxldGVBbGxPYmplY3RTdG9yZXMoY29ubmVjdGlvbikiKTsKIApAQCAtMTAwLDcgKzg1
LDYgQEAgZnVuY3Rpb24gdmVyaWZ5Q3JlYXRlVGhlblB1dCgpCiAgICAgICAgICAgICBkZWJ1Zygi
dHJhbnNhY3Rpb24gYWJvcnRlZCIpOwogICAgICAgICAgICAgc2hvdWxkQmUoIisrc3RhdGUiLCAi
MyIpOwogICAgICAgICAgICAgc2hvdWxkQmUoInRyYW5zLmVycm9yLm5hbWUiLCAiJ0NvbnN0cmFp
bnRFcnJvciciKTsKLSAgICAgICAgICAgIHZlcmlmeVB1dFRoZW5DcmVhdGUoKTsKICAgICAgICAg
fTsKICAgICB9OwogfQpAQCAtMTEwLDEwICs5NCwxNSBAQCBmdW5jdGlvbiB2ZXJpZnlQdXRUaGVu
Q3JlYXRlKCkKICAgICBkZWJ1ZygiIik7CiAgICAgZGVidWcoIlZlcmlmeSB0aGF0IHVuaXF1ZW5l
c3MgY29uc3RyYWludHMgYXJlIGVuZm9yY2VkIHdoZW4gaW5kZXggaXMgY3JlYXRlZCBhZnRlciBw
dXRzOiIpOwogCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImNvbm5lY3Rpb24uc2V0VmVyc2lv
bignMycpIik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgdHJhbnMgPSBy
ZXF1ZXN0LnJlc3VsdDsKKyAgICBkZWJ1ZygiRklYTUU6IFNjcmlwdCBzaG91bGRuJ3QgaGF2ZSB0
byBleHBsaWNpdGx5IGNsb3NlIGNvbm5lY3Rpb24gYWZ0ZXIgaXQgZmFpbGVkIHRvIG9wZW4uIGh0
dHA6Ly9jcmJ1Zy5jb20vMTYxMDY2Iik7CisgICAgZXZhbEFuZExvZygiY29ubmVjdGlvbi5jbG9z
ZSgpIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKGRibmFtZSwg
MykiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB2ZXJpZnlQdXRUaGVuQ3JlYXRlVGhlblB1dDsK
KyAgICByZXF1ZXN0Lm9uYmxvY2tlZCA9IHVuZXhwZWN0ZWRCbG9ja2VkQ2FsbGJhY2s7CisgICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSB1bmV4cGVjdGVkU3VjY2Vzc0NhbGxiYWNrOworICAgIHJlcXVl
c3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGNvbm5lY3Rpb24gPSBy
ZXF1ZXN0LnJlc3VsdDsKKyAgICAgICAgdHJhbnMgPSByZXF1ZXN0LnRyYW5zYWN0aW9uOwogCiAg
ICAgICAgIGV2YWxBbmRMb2coImRlbGV0ZUFsbE9iamVjdFN0b3Jlcyhjb25uZWN0aW9uKSIpOwog
CkBAIC0xNDAsNyArMTI5LDYgQEAgZnVuY3Rpb24gdmVyaWZ5UHV0VGhlbkNyZWF0ZSgpCiAgICAg
ICAgICAgICBkZWJ1ZygidHJhbnNhY3Rpb24gYWJvcnRlZCIpOwogICAgICAgICAgICAgc2hvdWxk
QmUoIisrc3RhdGUiLCAiMyIpOwogICAgICAgICAgICAgc2hvdWxkQmUoInRyYW5zLmVycm9yLm5h
bWUiLCAiJ0NvbnN0cmFpbnRFcnJvciciKTsKLSAgICAgICAgICAgIHZlcmlmeVB1dFRoZW5DcmVh
dGVUaGVuUHV0KCk7CiAgICAgICAgIH07CiAgICAgfTsKIH0KQEAgLTE1MCwxMCArMTM4LDE1IEBA
IGZ1bmN0aW9uIHZlcmlmeVB1dFRoZW5DcmVhdGVUaGVuUHV0KCkKICAgICBkZWJ1ZygiIik7CiAg
ICAgZGVidWcoIlZlcmlmeSB0aGF0IHVuaXF1ZW5lc3MgY29uc3RyYWludHMgYXJlIGVuZm9yY2Vk
IHdoZW4gaW5kZXggaXMgY3JlYXRlZCBiZXR3ZWVuIHB1dHM6Iik7CiAKLSAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygiY29ubmVjdGlvbi5zZXRWZXJzaW9uKCc0JykiKTsKLSAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IGZ1bmN0aW9uKCkgewotICAgICAgICB0cmFucyA9IHJlcXVlc3QucmVzdWx0OworICAgIGRlYnVn
KCJGSVhNRTogU2NyaXB0IHNob3VsZG4ndCBoYXZlIHRvIGV4cGxpY2l0bHkgY2xvc2UgY29ubmVj
dGlvbiBhZnRlciBpdCBmYWlsZWQgdG8gb3Blbi4gaHR0cDovL2NyYnVnLmNvbS8xNjEwNjYiKTsK
KyAgICBldmFsQW5kTG9nKCJjb25uZWN0aW9uLmNsb3NlKCkiKTsKKyAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygiaW5kZXhlZERCLm9wZW4oZGJuYW1lLCA0KSIpOworICAgIHJlcXVlc3Qub25lcnJv
ciA9IGZpbmlzaEpTVGVzdDsKKyAgICByZXF1ZXN0Lm9uYmxvY2tlZCA9IHVuZXhwZWN0ZWRCbG9j
a2VkQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB1bmV4cGVjdGVkU3VjY2Vzc0Nh
bGxiYWNrOworICAgIHJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oKSB7CisgICAg
ICAgIGNvbm5lY3Rpb24gPSByZXF1ZXN0LnJlc3VsdDsKKyAgICAgICAgdHJhbnMgPSByZXF1ZXN0
LnRyYW5zYWN0aW9uOwogCiAgICAgICAgIGV2YWxBbmRMb2coImRlbGV0ZUFsbE9iamVjdFN0b3Jl
cyhjb25uZWN0aW9uKSIpOwogCkBAIC0xODAsMTIgKzE3Myw5IEBAIGZ1bmN0aW9uIHZlcmlmeVB1
dFRoZW5DcmVhdGVUaGVuUHV0KCkKICAgICAgICAgICAgIGRlYnVnKCJ0cmFuc2FjdGlvbiBhYm9y
dGVkIik7CiAgICAgICAgICAgICBzaG91bGRCZSgiKytzdGF0ZSIsICIzIik7CiAgICAgICAgICAg
ICBzaG91bGRCZSgidHJhbnMuZXJyb3IubmFtZSIsICInQ29uc3RyYWludEVycm9yJyIpOwotICAg
ICAgICAgICAgZmluaXNoSlNUZXN0KCk7CiAgICAgICAgIH07CiAgICAgfTsKIH0KIAotdGVzdCgp
OwotCiA8L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvbW96aWxsYS9pbmRleC1wcmV2LW5vLWR1cGxpY2F0ZS1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2luZGV4LXByZXYtbm8tZHVwbGlj
YXRlLWV4cGVjdGVkLnR4dAppbmRleCA5YWY2ZjRhNTllZDM3NDA4ZWYxYmJlYmE3NDA1Zjc4NmIy
OTJmNzIwLi42OTE5M2M4Y2UwODc2NThjNjk0NmY4OWI5NjQ1MmViZTUzOGExNWU2IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2luZGV4LXByZXYtbm8t
ZHVwbGljYXRlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9tb3ppbGxhL2luZGV4LXByZXYtbm8tZHVwbGljYXRlLWV4cGVjdGVkLnR4dApAQCAtMSwyNSAr
MSwxMyBAQAotQ09OU09MRSBNRVNTQUdFOiBUaGUgc2V0VmVyc2lvbigpIG1ldGhvZCBpcyBub24t
c3RhbmRhcmQgYW5kIHdpbGwgYmUgcmVtb3ZlZC4gVXNlIHRoZSAidXBncmFkZW5lZWRlZCIgZXZl
bnQgaW5zdGVhZC4KIFRlc3QgSW5kZXhlZERCOiBpdGVyYXRpbmcgYmFja3dhcmRzIHRocm91Z2gg
YW4gaW5kZXgsIHNraXBwaW5nIGR1cGxpY2F0ZXMKIAogT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgogCiAKLWluZGV4ZWREQiA9IHdpbmRvdy5pbmRleGVkREIgfHwgd2luZG93LndlYmtpdEluZGV4
ZWREQiB8fCB3aW5kb3cubW96SW5kZXhlZERCOwotUEFTUyBpbmRleGVkREIgPT0gbnVsbCBpcyBm
YWxzZQotSURCRGF0YWJhc2VFeGNlcHRpb24gPSB3aW5kb3cuSURCRGF0YWJhc2VFeGNlcHRpb24g
fHwgd2luZG93LndlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uOwotUEFTUyBJREJEYXRhYmFzZUV4
Y2VwdGlvbiA9PSBudWxsIGlzIGZhbHNlCi1JREJUcmFuc2FjdGlvbiA9IHdpbmRvdy5JREJUcmFu
c2FjdGlvbiB8fCB3aW5kb3cud2Via2l0SURCVHJhbnNhY3Rpb247Ci1QQVNTIElEQlRyYW5zYWN0
aW9uID09IG51bGwgaXMgZmFsc2UKLUlEQkN1cnNvciA9IHdpbmRvdy5JREJDdXJzb3IgfHwgd2lu
ZG93LndlYmtpdElEQkN1cnNvcjsKLVBBU1MgSURCQ3Vyc29yID09IG51bGwgaXMgZmFsc2UKLUlE
QktleVJhbmdlID0gd2luZG93LklEQktleVJhbmdlIHx8IHdpbmRvdy53ZWJraXRJREJLZXlSYW5n
ZTsKLVBBU1MgSURCS2V5UmFuZ2UgPT0gbnVsbCBpcyBmYWxzZQotaW5kZXhlZERCLm9wZW4obmFt
ZSkKLW9wZW5TdWNjZXNzKCk6Ci1kYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQKLXJlcXVlc3QgPSBk
Yi5zZXRWZXJzaW9uKCcxJykKLURlbGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMuCi10cmFucyA9IHJl
cXVlc3QucmVzdWx0CitpbmRleGVkREIgPSBzZWxmLmluZGV4ZWREQiB8fCBzZWxmLndlYmtpdElu
ZGV4ZWREQiB8fCBzZWxmLm1vekluZGV4ZWREQiB8fCBzZWxmLm1zSW5kZXhlZERCIHx8IHNlbGYu
T0luZGV4ZWREQjsKKworZGJuYW1lID0gImluZGV4LXByZXYtbm8tZHVwbGljYXRlLmh0bWwiCitp
bmRleGVkREIuZGVsZXRlRGF0YWJhc2UoZGJuYW1lKQoraW5kZXhlZERCLm9wZW4oZGJuYW1lKQog
b2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZShvYmplY3RTdG9yZU5hbWUpOwogRmly
c3QsIGFkZCBhbGwgb3VyIGRhdGEgdG8gdGhlIG9iamVjdCBzdG9yZS4KIHJlcXVlc3QgPSBvYmpl
Y3RTdG9yZS5hZGQob2JqZWN0U3RvcmVEYXRhW2ldLnZhbHVlLCBvYmplY3RTdG9yZURhdGFbaV0u
a2V5KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEv
aW5kZXgtcHJldi1uby1kdXBsaWNhdGUuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL21vemlsbGEvaW5kZXgtcHJldi1uby1kdXBsaWNhdGUuaHRtbAppbmRleCAxYmFjYjg5OWM4
NGQ0ZGFlODc4ZjEzMTBlOWFlNGIwYTcwZDBmZWZmLi4wMjM0N2ZiYjM2ODQxMzEwYWE2YjQ0OTA4
ODI2YmE4YjhmZmYxZjMzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9tb3ppbGxhL2luZGV4LXByZXYtbm8tZHVwbGljYXRlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9pbmRleC1wcmV2LW5vLWR1cGxpY2F0ZS5odG1sCkBA
IC04LDQxICs4LDE4IEBACiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci0gICAg
dmFyIGpzVGVzdElzQXN5bmMgPSB0cnVlOwotPC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vcmVz
b3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KIDxzY3JpcHQ+CiAK
IGRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQjogaXRlcmF0aW5nIGJhY2t3YXJkcyB0aHJvdWdo
IGFuIGluZGV4LCBza2lwcGluZyBkdXBsaWNhdGVzIik7Ci1pZiAod2luZG93LnRlc3RSdW5uZXIp
Ci0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewot
ICAgIGluZGV4ZWREQiA9IGV2YWxBbmRMb2coImluZGV4ZWREQiA9IHdpbmRvdy5pbmRleGVkREIg
fHwgd2luZG93LndlYmtpdEluZGV4ZWREQiB8fCB3aW5kb3cubW96SW5kZXhlZERCOyIpOwotICAg
IHNob3VsZEJlRmFsc2UoImluZGV4ZWREQiA9PSBudWxsIik7Ci0gICAgSURCRGF0YWJhc2VFeGNl
cHRpb24gPSBldmFsQW5kTG9nKCJJREJEYXRhYmFzZUV4Y2VwdGlvbiA9IHdpbmRvdy5JREJEYXRh
YmFzZUV4Y2VwdGlvbiB8fCB3aW5kb3cud2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb247Iik7Ci0g
ICAgc2hvdWxkQmVGYWxzZSgiSURCRGF0YWJhc2VFeGNlcHRpb24gPT0gbnVsbCIpOwotICAgIElE
QlRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygiSURCVHJhbnNhY3Rpb24gPSB3aW5kb3cuSURCVHJh
bnNhY3Rpb24gfHwgd2luZG93LndlYmtpdElEQlRyYW5zYWN0aW9uOyIpOwotICAgIHNob3VsZEJl
RmFsc2UoIklEQlRyYW5zYWN0aW9uID09IG51bGwiKTsKLSAgICBJREJDdXJzb3IgPSBldmFsQW5k
TG9nKCJJREJDdXJzb3IgPSB3aW5kb3cuSURCQ3Vyc29yIHx8IHdpbmRvdy53ZWJraXRJREJDdXJz
b3I7Iik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiSURCQ3Vyc29yID09IG51bGwiKTsKLSAgICBJREJL
ZXlSYW5nZSA9IGV2YWxBbmRMb2coIklEQktleVJhbmdlID0gd2luZG93LklEQktleVJhbmdlIHx8
IHdpbmRvdy53ZWJraXRJREJLZXlSYW5nZTsiKTsKLSAgICBzaG91bGRCZUZhbHNlKCJJREJLZXlS
YW5nZSA9PSBudWxsIik7Ci0KLSAgICBuYW1lID0gd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lOwot
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lKSIpOwotICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19CiAKLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK2luZGV4
ZWREQlRlc3QocHJlcGFyZURhdGFiYXNlLCB0ZXN0UHJldik7CitmdW5jdGlvbiBwcmVwYXJlRGF0
YWJhc2UoKQogewotICAgIGRlYnVnKCJvcGVuU3VjY2VzcygpOiIpOwotICAgIGRiID0gZXZhbEFu
ZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgZGIgPSBldmVudC50YXJnZXQu
cmVzdWx0OworICAgIHRyYW5zID0gZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uOwogCiAgICAgb2Jq
ZWN0U3RvcmVOYW1lID0gIlBlb3BsZSI7CiAKQEAgLTc2LDE2ICs1Myw2IEBAIGZ1bmN0aW9uIG9w
ZW5TdWNjZXNzKCkKICAgICAgICAgeyBrZXk6ICIyMzctMjMtNzc0MCIsIHZhbHVlOiB7IG5hbWU6
ICJTYW0iLCBoZWlnaHQ6IDczLCB3ZWlnaHQ6IDExMCB9IH0sCiAgICAgXTsKIAotICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7Ci0gICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBjcmVhdGVPYmplY3RTdG9yZTsKLSAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gY3JlYXRlT2JqZWN0U3Rv
cmUoKQotewotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0KLSAgICBldmFsQW5kTG9n
KCJ0cmFucyA9IHJlcXVlc3QucmVzdWx0Iik7CiAgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9n
KCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSk7Iik7
CiAgICAgZGVidWcoIkZpcnN0LCBhZGQgYWxsIG91ciBkYXRhIHRvIHRoZSBvYmplY3Qgc3RvcmUu
Iik7CiAgICAgYWRkZWREYXRhID0gMDsKQEAgLTEwMiw3ICs2OSw2IEBAIGZ1bmN0aW9uIGNyZWF0
ZU9iamVjdFN0b3JlKCkKICAgICB0cmFucy5vbmNvbXBsZXRlID0gZnVuY3Rpb24oKSB7CiAgICAg
ICAgIGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24ob2JqZWN0U3RvcmVOYW1lLCAn
cmVhZHdyaXRlJykiKTsKICAgICAgICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSB0cmFucy5v
YmplY3RTdG9yZShvYmplY3RTdG9yZU5hbWUpIik7Ci0gICAgICAgIHRlc3RQcmV2KCk7CiAgICAg
fTsKIH0KIApAQCAtMTg2LDggKzE1Miw2IEBAIGZ1bmN0aW9uIHRlc3RQcmV2Tm9EdXBsaWNhdGUo
KQogCiB2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKIAotdGVzdCgpOwotCiA8L3Njcmlw
dD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgogPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvbm9ibG9icy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9ub2Jsb2JzLWV4cGVjdGVkLnR4dAppbmRleCAwZmZmNmM0ODVmNzA3MTU5Njk4NWM4MDgz
NGU0ZjcxMjFhMzExMDFiLi5hMGY2ZjM5YmU3MzExYTZkMGRkNTEyODcxMzAyOGM0YTE5ZWIzZDI5
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9ub2Jsb2JzLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9ub2Jsb2JzLWV4cGVj
dGVkLnR4dApAQCAtMSw0ICsxLDMgQEAKLUNPTlNPTEUgTUVTU0FHRTogVGhlIHNldFZlcnNpb24o
KSBtZXRob2QgaXMgbm9uLXN0YW5kYXJkIGFuZCB3aWxsIGJlIHJlbW92ZWQuIFVzZSB0aGUgInVw
Z3JhZGVuZWVkZWQiIGV2ZW50IGluc3RlYWQuCiBDb25maXJtIEJsb2IvRmlsZS9GaWxlTGlzdCBs
aW1pdGF0aW9ucyBvZiBXZWJLaXQncyBJbmRleGVkREIgaW1wbGVtZW50YXRpb24uCiAKIE9uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KQEAgLTYsMTMgKzUsOSBAQCBPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURQogCiBpbmRleGVkREIgPSBzZWxmLmluZGV4ZWREQiB8fCBzZWxmLndlYmtpdEluZGV4ZWRE
QiB8fCBzZWxmLm1vekluZGV4ZWREQiB8fCBzZWxmLm1zSW5kZXhlZERCIHx8IHNlbGYuT0luZGV4
ZWREQjsKIAotCi1QcmVwYXJlIERhdGFiYXNlCi1pbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoJ25v
YmxvYnMnKQotaW5kZXhlZERCLm9wZW4oJ25vYmxvYnMnKQotZGIgPSByZXF1ZXN0LnJlc3VsdAot
UEFTUyBkYi52ZXJzaW9uIGlzIDEKLWRiLnNldFZlcnNpb24oJzEnKQorZGJuYW1lID0gIm5vYmxv
YnMuaHRtbCIKK2luZGV4ZWREQi5kZWxldGVEYXRhYmFzZShkYm5hbWUpCitpbmRleGVkREIub3Bl
bihkYm5hbWUpCiBzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKQogc3Rv
cmUucHV0KCd2YWx1ZScsICdrZXknKQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9ub2Jsb2JzLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9u
b2Jsb2JzLmh0bWwKaW5kZXggMTc4N2MyODNhODE0YTE1ZTc4NDI3OWIyNGUwYTMxNTZmMTZiNWY1
NS4uNDk3ODAxOWZmZjBkNGZmOWFmYjBhNTU4MTgxYmY4YzcyNGY4M2MyZSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbm9ibG9icy5odG1sCisrKyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL25vYmxvYnMuaHRtbApAQCAtMjEsMzYgKzIxLDE0IEBAIGlm
ICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKICAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7CiB9CiAK
LWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0gICAgcHJl
cGFyZURhdGFiYXNlKCk7Ci19Ci0KIGZ1bmN0aW9uIHByZXBhcmVEYXRhYmFzZSgpCiB7Ci0gICAg
ZGVidWcoIiIpOwotICAgIGRlYnVnKCJQcmVwYXJlIERhdGFiYXNlIik7Ci0gICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coImluZGV4ZWREQi5kZWxldGVEYXRhYmFzZSgnbm9ibG9icycpIik7Ci0gICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBmdW5jdGlvbihlKSB7Ci0gICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJp
bmRleGVkREIub3Blbignbm9ibG9icycpIik7Ci0gICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0
aW9uKGUpIHsKLSAgICAgICAgICAgIGV2YWxBbmRMb2coImRiID0gcmVxdWVzdC5yZXN1bHQiKTsK
LSAgICAgICAgICAgIHNob3VsZEJlKCJkYi52ZXJzaW9uIiwgIjEiKTsKLSAgICAgICAgICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCcxJykiKTsKLSAgICAgICAgICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgICAgICAgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICAgICAgZXZhbEFuZExv
Zygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKLSAgICAgICAg
ICAgICAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoJ3ZhbHVlJywgJ2tleScpIik7Ci0gICAgICAg
ICAgICAgICAgdmFyIHRyYW5zID0gcmVxdWVzdC5yZXN1bHQ7Ci0gICAgICAgICAgICAgICAgdHJh
bnMub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgICAgICAgICAgICAgIHRy
YW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAgICAgICAgICAgICAgICB0
cmFucy5vbmNvbXBsZXRlID0gdGVzdEJsb2I7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9Owot
ICAgIH07CisgICAgZGIgPSBldmVudC50YXJnZXQucmVzdWx0OworICAgIHZhciB0cmFucyA9IGV2
ZW50LnRhcmdldC50cmFuc2FjdGlvbjsKKyAgICBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0
ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOworICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCgn
dmFsdWUnLCAna2V5JykiKTsKKyAgICB0cmFucy5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7CisgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwogfQog
CiBmdW5jdGlvbiB0ZXN0QmxvYigpCkBAIC05NywxMCArNzUsMTAgQEAgZnVuY3Rpb24gdmFsaWRh
dGVFeGNlcHRpb25zKHZhcmlhYmxlLCBvbkNvbXBsZXRlKQogfQogCiBpZiAod2luZG93LmV2ZW50
U2VuZGVyKSB7Ci0gICAgdGVzdCgpOworICAgIGluZGV4ZWREQlRlc3QocHJlcGFyZURhdGFiYXNl
LCB0ZXN0QmxvYik7CiB9IGVsc2UgewogICAgIGFsZXJ0KCJTZWxlY3QgZmlsZShzKSB1c2luZyB0
aGUgaW5wdXQgY29udHJvbCBhYm92ZSB0byBpbml0aWF0ZSB0aGUgdGVzdCIpOwotICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJmaWxlSW5wdXQiKS5vbmNoYW5nZSA9IHRlc3Q7CisgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZpbGVJbnB1dCIpLm9uY2hhbmdlID0gZnVuY3Rpb24oKSB7
IGluZGV4ZWREQlRlc3QocHJlcGFyZURhdGFiYXNlLCB0ZXN0QmxvYik7IH07CiB9CiAKIDwvc2Ny
aXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2Vz
L2RvbnQtY29tbWl0LW9uLWJsb2NrZWQtd29ya2VyLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvcmVzb3VyY2VzL2RvbnQtY29tbWl0LW9uLWJsb2NrZWQtd29ya2VyLmpzCmluZGV4
IDRjMzhiZjZmNWI0MTQyMDRjZWFjMjI5ZjExZWZjYTQ4YmJkYjljYTcuLmM5OTMyYjlkMjMyMThm
OTM2ODYxNTk4ZjQxZTg4MTYxYTIwNTk1M2EgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kb250LWNvbW1pdC1vbi1ibG9ja2VkLXdvcmtlci5qcwor
KysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvZG9udC1jb21taXQt
b24tYmxvY2tlZC13b3JrZXIuanMKQEAgLTQsMjIgKzQsMTcgQEAgaW1wb3J0U2NyaXB0cygnc2hh
cmVkLmpzJyk7CiByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwogCiBkZWJ1Zygib3BlbmluZyBkYXRh
YmFzZSBjb25uZWN0aW9uIik7Ci1ldmFsQW5kTG9nKCJyZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4o
J2RvbnQtY29tbWl0LW9uLWJsb2NrZWQnKSIpOworZXZhbEFuZExvZygicmVxdWVzdCA9IGluZGV4
ZWREQi5vcGVuKCdkb250LWNvbW1pdC1vbi1ibG9ja2VkLmh0bWwnLCAyKSIpOwogcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci1yZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1
bmN0aW9uKGUpIHsKLSAgZXZhbEFuZExvZygiZGIgPSByZXF1ZXN0LnJlc3VsdCIpOwotICBkYi5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0KLSAgZXZhbEFuZExvZygic3RhdGUg
PSAnc2V0dmVyc2lvbiciKTsKLSAgZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24o
MikiKTsKLSAgZXZhbEFuZExvZygicmVxdWVzdC5vbmJsb2NrZWQgPSBvblNldFZlcnNpb25CbG9j
a2VkIik7Ci0gIGV2YWxBbmRMb2coInJlcXVlc3Qub25zdWNjZXNzID0gb25TZXRWZXJzaW9uU3Vj
Y2VzcyIpOwotICBkZWJ1Zygic3Bpbm5pbmcgZm9yIDEwMG1zIHRvIGxldCBldmVudHMgYmUgcXVl
dWVkIGJ1dCBwcmV2ZW50IGRpc3BhdGNoIik7Ci0gIHZhciB0ID0gRGF0ZS5ub3coKTsKLSAgd2hp
bGUgKChEYXRlLm5vdygpIC0gdCkgPCAxMDApIHsKLSAgfQotICBkZWJ1ZygiZG9uZSBzcGlubmlu
ZyIpOwotfTsKK2V2YWxBbmRMb2coInN0YXRlID0gJ3NldHZlcnNpb24nIik7CitldmFsQW5kTG9n
KCJyZXF1ZXN0Lm9uYmxvY2tlZCA9IG9uU2V0VmVyc2lvbkJsb2NrZWQiKTsKK2V2YWxBbmRMb2co
InJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gb25TZXRWZXJzaW9uU3VjY2VzcyIpOworcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBvblRyYW5zYWN0aW9uQ29tcGxldGU7CitkZWJ1Zygic3Bpbm5pbmcgZm9y
IDEwMG1zIHRvIGxldCBldmVudHMgYmUgcXVldWVkIGJ1dCBwcmV2ZW50IGRpc3BhdGNoIik7Cit2
YXIgdCA9IERhdGUubm93KCk7Cit3aGlsZSAoKERhdGUubm93KCkgLSB0KSA8IDEwMCkgeworfQor
ZGVidWcoImRvbmUgc3Bpbm5pbmciKTsKIAogZnVuY3Rpb24gb25TZXRWZXJzaW9uQmxvY2tlZChl
KQogewpAQCAtMzEsMTYgKzI2LDE0IEBAIGZ1bmN0aW9uIG9uU2V0VmVyc2lvbkJsb2NrZWQoZSkK
IAogZnVuY3Rpb24gb25TZXRWZXJzaW9uU3VjY2VzcyhlKQogewotICBkZWJ1ZygiIik7Ci0gIGRl
YnVnKCJvblNldFZlcnNpb25TdWNjZXNzKCk6Iik7CisgIHByZWFtYmxlKGUpOworICBldmFsQW5k
TG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgZGIub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOwogICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInN0YXRlIiwgImJsb2Nr
ZWQiKTsKICAgZXZhbEFuZExvZygic3RhdGUgPSAnc3VjY2VzcyciKTsKIAogICBkZWJ1ZygiY3Jl
YXRpbmcgb2JqZWN0IHN0b3JlIC0gd2lsbCBmYWlsIGlmIHRyYW5zYWN0aW9uIGNvbW1pdGVkIGFm
dGVyIGJsb2NrZWQgZXZlbnQiKTsKICAgZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUo
J3N0b3JlMicpIik7Ci0KLSAgZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSByZXF1ZXN0LnJlc3Vs
dCIpOwotICBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gb25UcmFuc2FjdGlv
bkNvbXBsZXRlIik7CiB9CiAKIGZ1bmN0aW9uIG9uVHJhbnNhY3Rpb25Db21wbGV0ZShlKQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvc3RydWN0dXJlZC1jbG9uZS1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9zdHJ1Y3R1cmVkLWNs
b25lLWV4cGVjdGVkLnR4dAppbmRleCAwYzc0MjA1YzkzZTlkODYyMjJiNmMyNWI5MjM2OWNmZTJj
MTFlMjU3Li5hMGY3M2Y0OTgyNjFmZTRjNzQ5NDYxZDJjMmEwNzUyNmQ1MzNkOTdkIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9zdHJ1Y3R1cmVkLWNsb25lLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9zdHJ1Y3R1cmVkLWNs
b25lLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDMgQEAKLUNPTlNPTEUgTUVTU0FHRTogVGhlIHNl
dFZlcnNpb24oKSBtZXRob2QgaXMgbm9uLXN0YW5kYXJkIGFuZCB3aWxsIGJlIHJlbW92ZWQuIFVz
ZSB0aGUgInVwZ3JhZGVuZWVkZWQiIGV2ZW50IGluc3RlYWQuCiBUZXN0IHN0cnVjdHVyZWQgY2xv
bmUgcGVybXV0YXRpb25zIGluIEluZGV4ZWREQi4gRmlsZS9GaWxlTGlzdCB0ZXN0cyByZXF1aXJl
IER1bXBSZW5kZXJUcmVlLgogCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCkBAIC02LDEzICs1
LDkgQEAgT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUKIAogaW5kZXhlZERCID0gc2VsZi5pbmRleGVk
REIgfHwgc2VsZi53ZWJraXRJbmRleGVkREIgfHwgc2VsZi5tb3pJbmRleGVkREIgfHwgc2VsZi5t
c0luZGV4ZWREQiB8fCBzZWxmLk9JbmRleGVkREI7CiAKLQotUHJlcGFyZSBEYXRhYmFzZQotaW5k
ZXhlZERCLmRlbGV0ZURhdGFiYXNlKCdzdHJ1Y3R1cmVkLWNsb25lJykKLWluZGV4ZWREQi5vcGVu
KCdzdHJ1Y3R1cmVkLWNsb25lJykKLWRiID0gcmVxdWVzdC5yZXN1bHQKLVBBU1MgZGIudmVyc2lv
biBpcyAxCi1kYi5zZXRWZXJzaW9uKCcxJykKK2RibmFtZSA9ICJzdHJ1Y3R1cmVkLWNsb25lLmh0
bWwiCitpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoZGJuYW1lKQoraW5kZXhlZERCLm9wZW4oZGJu
YW1lKQogc3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJykKIFRoaXMgaW5k
ZXggaXMgbm90IHVzZWQsIGJ1dCBldmFsdWF0aW5nIGtleSBwYXRoIG9uIGVhY2ggcHV0KCkgY2Fs
bCB3aWxsIGV4ZXJjaXNlIChkZSlzZXJpYWxpemF0aW9uOgogc3RvcmUuY3JlYXRlSW5kZXgoJ2lu
ZGV4TmFtZScsICdkdW1teUtleVBhdGgnKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvc3RydWN0dXJlZC1jbG9uZS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvc3RydWN0dXJlZC1jbG9uZS5odG1sCmluZGV4IDM1MDZjZjYxN2E0NDY1OWU5YzI2
NzIzM2M3NjlkMjcwNzA2ZmUxY2IuLjc3ZDBjZTJjODY3ZGRkMjdhMGQ2ZTlmOWQ4MzQ4ZjkyZGU5
Y2RjMDMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3N0cnVjdHVy
ZWQtY2xvbmUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9zdHJ1Y3R1
cmVkLWNsb25lLmh0bWwKQEAgLTE5LDM3ICsxOSwxMyBAQCBpZiAoc2VsZi5ldmVudFNlbmRlcikg
ewogICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKIH0KIAotZnVuY3Rpb24gdGVzdCgpCi17Ci0g
ICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLSAgICBwcmVwYXJlRGF0YWJhc2UoKTsKLX0KLQor
aW5kZXhlZERCVGVzdChwcmVwYXJlRGF0YWJhc2UsIHN0YXJ0VGVzdHMpOwogZnVuY3Rpb24gcHJl
cGFyZURhdGFiYXNlKCkKIHsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoIlByZXBhcmUgRGF0
YWJhc2UiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLmRlbGV0ZURhdGFi
YXNlKCdzdHJ1Y3R1cmVkLWNsb25lJykiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGUpIHsK
LSAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdzdHJ1Y3R1cmVk
LWNsb25lJykiKTsKLSAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Ci0gICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oZSkgewotICAgICAg
ICAgICAgZXZhbEFuZExvZygiZGIgPSByZXF1ZXN0LnJlc3VsdCIpOwotICAgICAgICAgICAgc2hv
dWxkQmUoImRiLnZlcnNpb24iLCAiMSIpOwotICAgICAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coImRiLnNldFZlcnNpb24oJzEnKSIpOwotICAgICAgICAgICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNy
ZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOwotICAgICAgICAgICAgICAgIGRlYnVnKCJU
aGlzIGluZGV4IGlzIG5vdCB1c2VkLCBidXQgZXZhbHVhdGluZyBrZXkgcGF0aCBvbiBlYWNoIHB1
dCgpIGNhbGwgd2lsbCBleGVyY2lzZSAoZGUpc2VyaWFsaXphdGlvbjoiKTsKLSAgICAgICAgICAg
ICAgICBldmFsQW5kTG9nKCJzdG9yZS5jcmVhdGVJbmRleCgnaW5kZXhOYW1lJywgJ2R1bW15S2V5
UGF0aCcpIik7Ci0gICAgICAgICAgICAgICAgdmFyIHRyYW5zID0gcmVxdWVzdC5yZXN1bHQ7Ci0g
ICAgICAgICAgICAgICAgdHJhbnMub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwot
ICAgICAgICAgICAgICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsK
LSAgICAgICAgICAgICAgICB0cmFucy5vbmNvbXBsZXRlID0gc3RhcnRUZXN0czsKLSAgICAgICAg
ICAgIH07Ci0gICAgICAgIH07Ci0gICAgfTsKKyAgICBkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7
CisgICAgZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1l
JykiKTsKKyAgICBkZWJ1ZygiVGhpcyBpbmRleCBpcyBub3QgdXNlZCwgYnV0IGV2YWx1YXRpbmcg
a2V5IHBhdGggb24gZWFjaCBwdXQoKSBjYWxsIHdpbGwgZXhlcmNpc2UgKGRlKXNlcmlhbGl6YXRp
b246Iik7CisgICAgZXZhbEFuZExvZygic3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4TmFtZScsICdk
dW1teUtleVBhdGgnKSIpOwogfQogCiBmdW5jdGlvbiBzdGFydFRlc3RzKCkKQEAgLTU2NSw4ICs1
NDEsNiBAQCBmdW5jdGlvbiB0ZXN0QmFkVHlwZXMoKQogICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRp
b24oInN0b3JlLnB1dChkb2N1bWVudC5ib2R5LCAna2V5JykiLCAiRE9NRXhjZXB0aW9uLkRBVEFf
Q0xPTkVfRVJSIik7CiB9CiAKLXRlc3QoKTsKLQogPC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWNv
bXBsZXRlLXdpdGgtanMtcmVjdXJzaW9uLWNyb3NzLWZyYW1lLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWNvbXBsZXRlLXdpdGgtanMtcmVj
dXJzaW9uLWNyb3NzLWZyYW1lLWV4cGVjdGVkLnR4dAppbmRleCA5MmM0MDgzYTFkZTQ1NTRiM2Rm
ODhkZGU0M2M5NDc0N2FjNmY1OWExLi5mZWY1M2EyYTZlYjc2NjU4YTI5MDliMmI5YmY3YjgxNTMx
OGQ2NzAxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2Fj
dGlvbi1jb21wbGV0ZS13aXRoLWpzLXJlY3Vyc2lvbi1jcm9zcy1mcmFtZS1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tY29tcGxldGUt
d2l0aC1qcy1yZWN1cnNpb24tY3Jvc3MtZnJhbWUtZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsMyBA
QAotQ09OU09MRSBNRVNTQUdFOiBUaGUgc2V0VmVyc2lvbigpIG1ldGhvZCBpcyBub24tc3RhbmRh
cmQgYW5kIHdpbGwgYmUgcmVtb3ZlZC4gVXNlIHRoZSAidXBncmFkZW5lZWRlZCIgZXZlbnQgaW5z
dGVhZC4KIFRlc3QgdGhhdCBwZW5kaW5nIHRyYW5zYWN0aW9ucyBhcmUgbm90IGNvbXBsZXRlZCBk
dXJpbmcgcmVjdXJzaXZlIEpTIGNhbGxzIHVudGlsIGFsbCBKUyAoaW4gYWxsIGZyYW1lcykgaXMg
ZmluaXNoZWQuCiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KQEAgLTYsMTAgKzUsOSBAQCBP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURQogCiBpbmRleGVkREIgPSBzZWxmLmluZGV4ZWREQiB8fCBz
ZWxmLndlYmtpdEluZGV4ZWREQiB8fCBzZWxmLm1vekluZGV4ZWREQiB8fCBzZWxmLm1zSW5kZXhl
ZERCIHx8IHNlbGYuT0luZGV4ZWREQjsKIAotaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKCd0cmFu
c2FjdGlvbi1jb21wbGV0ZS13aXRoLWpzLXJlY3Vyc2lvbi1jcm9zcy1mcmFtZScpCi1pbmRleGVk
REIub3BlbigndHJhbnNhY3Rpb24tY29tcGxldGUtd2l0aC1qcy1yZWN1cnNpb24tY3Jvc3MtZnJh
bWUnKQotZGIgPSBldmVudC50YXJnZXQucmVzdWx0Ci1kYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lv
bicpCitkYm5hbWUgPSAidHJhbnNhY3Rpb24tY29tcGxldGUtd2l0aC1qcy1yZWN1cnNpb24tY3Jv
c3MtZnJhbWUuaHRtbCIKK2luZGV4ZWREQi5kZWxldGVEYXRhYmFzZShkYm5hbWUpCitpbmRleGVk
REIub3BlbihkYm5hbWUpCiBwZW5kaW5nVHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbihbJ29i
amVjdFN0b3JlJ10sICdyZWFkd3JpdGUnKQogU3RhcnQgcmUtZW50cmFudCBKUwogdHJhbnNhY3Rp
b24gPSBkYi50cmFuc2FjdGlvbihbJ29iamVjdFN0b3JlJ10sICdyZWFkd3JpdGUnKQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tY29tcGxldGUt
d2l0aC1qcy1yZWN1cnNpb24tY3Jvc3MtZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3RyYW5zYWN0aW9uLWNvbXBsZXRlLXdpdGgtanMtcmVjdXJzaW9uLWNyb3NzLWZy
YW1lLmh0bWwKaW5kZXggY2FlYTczNTI5NmJjMzMyZTVhY2VkMzU3OTIxZDBkNzBmY2ZjMzFlZC4u
NmMwNzdkZWUzYzY3NTRkOWJjYzFmMjliZDU1MzMyZDcwOTM2OTZmNiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tY29tcGxldGUtd2l0aC1qcy1y
ZWN1cnNpb24tY3Jvc3MtZnJhbWUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi90cmFuc2FjdGlvbi1jb21wbGV0ZS13aXRoLWpzLXJlY3Vyc2lvbi1jcm9zcy1mcmFtZS5o
dG1sCkBAIC0xNywyNyArMTcsMTEgQEAgdmFyIGJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgiaWZyYW1lIilbMF0uY29udGVudERvY3VtZW50LmJvZHk7CiAKIGRlc2NyaXB0aW9u
KCJUZXN0IHRoYXQgcGVuZGluZyB0cmFuc2FjdGlvbnMgYXJlIG5vdCBjb21wbGV0ZWQgZHVyaW5n
IHJlY3Vyc2l2ZSBKUyBjYWxscyB1bnRpbCBhbGwgSlMgKGluIGFsbCBmcmFtZXMpIGlzIGZpbmlz
aGVkLiIpOwogCi1mdW5jdGlvbiBzZXR1cCgpIHsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygp
OwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoJ3Ry
YW5zYWN0aW9uLWNvbXBsZXRlLXdpdGgtanMtcmVjdXJzaW9uLWNyb3NzLWZyYW1lJykiKTsKLSAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKLSAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
ImluZGV4ZWREQi5vcGVuKCd0cmFuc2FjdGlvbi1jb21wbGV0ZS13aXRoLWpzLXJlY3Vyc2lvbi1j
cm9zcy1mcmFtZScpIik7Ci0gICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lvbjsK
LSAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAg
fTsKLX0KLQotZnVuY3Rpb24gc2V0VmVyc2lvbigpIHsKLSAgICBkYiA9IGV2YWxBbmRMb2coImRi
ID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5z
ZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXRW
ZXJzaW9uU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKLX0KLQotZnVuY3Rpb24gc2V0VmVyc2lvblN1Y2Nlc3MoKSB7CitpbmRleGVkREJUZXN0
KHByZXBhcmVEYXRhYmFzZSwgY2xpY2spOworZnVuY3Rpb24gcHJlcGFyZURhdGFiYXNlKCkKK3sK
KyAgICBkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CiAgICAgc3RvcmUgPSBkYi5jcmVhdGVPYmpl
Y3RTdG9yZSgnb2JqZWN0U3RvcmUnLCBudWxsKTsKLSAgICBldmVudC50YXJnZXQucmVzdWx0Lm9u
Y29tcGxldGUgPSBjbGljazsKIH0KIAogZnVuY3Rpb24gY2xpY2soKSB7CkBAIC02OCw4ICs1Miw2
IEBAIGZ1bmN0aW9uIGNvbXBsZXRlQ2FsbGJhY2soKQogICAgIGZpbmlzaEpTVGVzdCgpOwogfQog
Ci1zZXR1cCgpOwotCiA8L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tY29tcGxldGUtd2l0aC1qcy1y
ZWN1cnNpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJh
bnNhY3Rpb24tY29tcGxldGUtd2l0aC1qcy1yZWN1cnNpb24tZXhwZWN0ZWQudHh0CmluZGV4IDYz
M2U5Mjg1YTQwZTJjNWI4NDEyZDdjNTkyZTRiZjE3Yjk3NjcyMmUuLjg4NmZlMTMyMWUwMzlkMGQ4
MTMyMTZlNzNlZmI1ODFmYmE2MjMzZWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3RyYW5zYWN0aW9uLWNvbXBsZXRlLXdpdGgtanMtcmVjdXJzaW9uLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1jb21w
bGV0ZS13aXRoLWpzLXJlY3Vyc2lvbi1leHBlY3RlZC50eHQKQEAgLTEsNCArMSwzIEBACi1DT05T
T0xFIE1FU1NBR0U6IFRoZSBzZXRWZXJzaW9uKCkgbWV0aG9kIGlzIG5vbi1zdGFuZGFyZCBhbmQg
d2lsbCBiZSByZW1vdmVkLiBVc2UgdGhlICJ1cGdyYWRlbmVlZGVkIiBldmVudCBpbnN0ZWFkLgog
VGVzdCB0aGF0IHBlbmRpbmcgdHJhbnNhY3Rpb25zIGFyZSBub3QgY29tcGxldGVkIGR1cmluZyBy
ZWN1cnNpdmUgSlMgY2FsbHMgdW50aWwgYWxsIEpTIGlzIGZpbmlzaGVkLgogCiBPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCkBAIC02LDEwICs1LDkgQEAgT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUK
IAogaW5kZXhlZERCID0gc2VsZi5pbmRleGVkREIgfHwgc2VsZi53ZWJraXRJbmRleGVkREIgfHwg
c2VsZi5tb3pJbmRleGVkREIgfHwgc2VsZi5tc0luZGV4ZWREQiB8fCBzZWxmLk9JbmRleGVkREI7
CiAKLWluZGV4ZWREQi5kZWxldGVEYXRhYmFzZSgndHJhbnNhY3Rpb24tY29tcGxldGUtd2l0aC1q
cy1yZWN1cnNpb24nKQotaW5kZXhlZERCLm9wZW4oJ3RyYW5zYWN0aW9uLWNvbXBsZXRlLXdpdGgt
anMtcmVjdXJzaW9uJykKLWRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdAotZGIuc2V0VmVyc2lvbign
bmV3IHZlcnNpb24nKQorZGJuYW1lID0gInRyYW5zYWN0aW9uLWNvbXBsZXRlLXdpdGgtanMtcmVj
dXJzaW9uLmh0bWwiCitpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoZGJuYW1lKQoraW5kZXhlZERC
Lm9wZW4oZGJuYW1lKQogcGVuZGluZ1RyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oWydvYmpl
Y3RTdG9yZSddLCAncmVhZHdyaXRlJykKIFN0YXJ0IHJlLWVudHJhbnQgSlMKIHRyYW5zYWN0aW9u
ID0gZGIudHJhbnNhY3Rpb24oWydvYmplY3RTdG9yZSddLCAncmVhZHdyaXRlJykKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWNvbXBsZXRlLXdp
dGgtanMtcmVjdXJzaW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFu
c2FjdGlvbi1jb21wbGV0ZS13aXRoLWpzLXJlY3Vyc2lvbi5odG1sCmluZGV4IDg0YjBjMzg5NmQx
YmFiM2RmNjQwMmE1MjhhYmY2ODNhNDk2NmRkZjYuLjk4M2QyZmJlYjIwYmUzNDcwMmI2MjdjNGEx
NDhlZGVlZDkxZDdjYWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L3RyYW5zYWN0aW9uLWNvbXBsZXRlLXdpdGgtanMtcmVjdXJzaW9uLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tY29tcGxldGUtd2l0aC1qcy1yZWN1
cnNpb24uaHRtbApAQCAtMTMsMjkgKzEzLDExIEBAIHZhciBib2R5ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoImJvZHkiKVswXTsKIAogZGVzY3JpcHRpb24oIlRlc3QgdGhhdCBwZW5k
aW5nIHRyYW5zYWN0aW9ucyBhcmUgbm90IGNvbXBsZXRlZCBkdXJpbmcgcmVjdXJzaXZlIEpTIGNh
bGxzIHVudGlsIGFsbCBKUyBpcyBmaW5pc2hlZC4iKTsKIAotZnVuY3Rpb24gc2V0dXAoKSB7Ci0g
ICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJp
bmRleGVkREIuZGVsZXRlRGF0YWJhc2UoJ3RyYW5zYWN0aW9uLWNvbXBsZXRlLXdpdGgtanMtcmVj
dXJzaW9uJykiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKLSAgICAgICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCd0cmFuc2FjdGlvbi1jb21wbGV0ZS13aXRo
LWpzLXJlY3Vyc2lvbicpIik7Ci0gICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lv
bjsKLSAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0g
ICAgfTsKLX0KLQotZnVuY3Rpb24gc2V0VmVyc2lvbigpIHsKLSAgICBkYiA9IGV2YWxBbmRMb2co
ImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJk
Yi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBz
ZXRWZXJzaW9uU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKLX0KLQotZnVuY3Rpb24gc2V0VmVyc2lvblN1Y2Nlc3MoKQoraW5kZXhlZERCVGVz
dChwcmVwYXJlRGF0YWJhc2UsIGNsaWNrKTsKK2Z1bmN0aW9uIHByZXBhcmVEYXRhYmFzZSgpCiB7
CisgICAgZGIgPSBldmVudC50YXJnZXQucmVzdWx0OwogICAgIHN0b3JlID0gZGIuY3JlYXRlT2Jq
ZWN0U3RvcmUoJ29iamVjdFN0b3JlJywgbnVsbCk7Ci0gICAgZXZlbnQudGFyZ2V0LnJlc3VsdC5v
bmNvbXBsZXRlID0gY2xpY2s7CiB9CiAKIGZ1bmN0aW9uIGNsaWNrKCkKQEAgLTY3LDggKzQ5LDYg
QEAgZnVuY3Rpb24gY29tcGxldGVDYWxsYmFjaygpCiAgICAgZmluaXNoSlNUZXN0KCk7CiB9CiAK
LXNldHVwKCk7Ci0KIDwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90dXRvcmlhbC1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90dXRvcmlhbC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDg2OTAxYWNmYjJmMzFhMGFkYzFiNmUzOTgyM2FjMGUyMmI5ZTg3
MWEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHV0b3JpYWwtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251
bGwKQEAgLTEsNSArMCwwIEBACi1DT05TT0xFIE1FU1NBR0U6IFRoZSBzZXRWZXJzaW9uKCkgbWV0
aG9kIGlzIG5vbi1zdGFuZGFyZCBhbmQgd2lsbCBiZSByZW1vdmVkLiBVc2UgdGhlICJ1cGdyYWRl
bmVlZGVkIiBldmVudCBpbnN0ZWFkLgotUGxlYXNlIHZpZXcgc291cmNlIGZvciBtb3JlIGluZm9y
bWF0aW9uIG9uIHdoYXQgdGhpcyBpcyBkb2luZyBhbmQgd2h5Li4uCi0KLUV2ZXJ5dGhpbmcgd29y
a2VkIQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90dXRvcmlh
bC5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHV0b3JpYWwuaHRtbApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDI4OWE4NWQ2MGQzOGYwNDg2ZGVhZDM5ZWQ5MDli
MDU3OTBiN2VmNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90dXRvcmlhbC5odG1sCisrKyAvZGV2L251
bGwKQEAgLTEsNDM4ICswLDAgQEAKLTxodG1sPjx0aXRsZT5JbmRleGVkREIgVHV0b3JpYWw8L3Rp
dGxlPgotPHNjcmlwdD4KLQotLy8gVGhpcyBpcyBhIHR1dG9yaWFsIHRoYXQgaGlnaGxpZ2h0cyBt
YW55IG9mIHRoZSBmZWF0dXJlcyBvZiBJbmRleGVkREIgYWxvbmcgd2l0aGEgbnVtYmVyIG9mCi0v
LyBjYXZlYXRzIHRoYXQgY3VycmVudGx5IGV4aXN0IGluIENocm9taXVtL1dlYktpdCBidXQgd2hp
Y2ggd2lsbCBob3BlZnVsbHkgYmUgaW1wcm92ZWQgdXBvbgotLy8gb3ZlciB0aW1lLgotLy8KLS8v
IFRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGUgc3BlYyBjYW4gYmUgZm91bmQgaGVyZToKLS8vIGh0
dHA6Ly9kdmNzLnczLm9yZy9oZy9JbmRleGVkREIvcmF3LWZpbGUvdGlwL092ZXJ2aWV3Lmh0bWwg
YnV0IG5vdGUgdGhhdCB0aGVyZSBhcmUgcXVpdGUgYQotLy8gZmV3IGJ1Z3MgY3VycmVudGx5IG9w
ZW5lZCBhZ2FpbnN0IGl0IGFuZCBzb21lIG1ham9yIHVucmVzb2x2ZWQgaXNzdWVzIChsaWtlIHdo
ZXRoZXIgZHluYW1pYwotLy8gdHJhbnNhY3Rpb25zIHNob3VsZCBiZSBpbiBmb3IgdjEpLiBNYW55
IG9mIHRoZSBidWdzIGFyZSBmaWxlZCBoZXJlOgotLy8gaHR0cDovL3d3dy53My5vcmcvQnVncy9Q
dWJsaWMvYnVnbGlzdC5jZ2k/cXVlcnlfZm9ybWF0PWFkdmFuY2VkJnNob3J0X2Rlc2NfdHlwZT1h
bGx3b3Jkc3N1YnN0ciZzaG9ydF9kZXNjPSZjb21wb25lbnQ9SW5kZXhlZCtEYXRhYmFzZStBUEkm
bG9uZ2Rlc2NfdHlwZT1hbGx3b3Jkc3N1YnN0ciZsb25nZGVzYz0mYnVnX2ZpbGVfbG9jX3R5cGU9
YWxsd29yZHNzdWJzdHImYnVnX2ZpbGVfbG9jPSZzdGF0dXNfd2hpdGVib2FyZF90eXBlPWFsbHdv
cmRzc3Vic3RyJnN0YXR1c193aGl0ZWJvYXJkPSZrZXl3b3Jkc190eXBlPWFsbHdvcmRzJmtleXdv
cmRzPSZidWdfc3RhdHVzPU5FVyZidWdfc3RhdHVzPUFTU0lHTkVEJmJ1Z19zdGF0dXM9UkVPUEVO
RUQmZW1haWx0eXBlMT1zdWJzdHJpbmcmZW1haWwxPSZlbWFpbHR5cGUyPXN1YnN0cmluZyZlbWFp
bDI9JmJ1Z19pZF90eXBlPWFueWV4YWN0JmJ1Z19pZD0mdm90ZXM9JmNoZmllbGRmcm9tPSZjaGZp
ZWxkdG89Tm93JmNoZmllbGR2YWx1ZT0mY21kdHlwZT1kb2l0Jm9yZGVyPVJldXNlK3NhbWUrc29y
dCthcytsYXN0K3RpbWUma25vd25fbmFtZT1JbmRleGVkREImcXVlcnlfYmFzZWRfb249SW5kZXhl
ZERCJmZpZWxkMC0wLTA9bm9vcCZ0eXBlMC0wLTA9bm9vcCZ2YWx1ZTAtMC0wPQotLy8gRGlzY3Vz
c2lvbiBoYXBwZW5zIG9uIHB1YmxpYy13ZWJhcHBzQHczLm9yZwotLy8KLS8vIEFsdGhvdWdoIG5v
dCB1c2VyIGZyaWVuZGx5LCBhZGRpdGlvbmFsIGNhcGFiaWxpdGllcyBhbmQgZXhhbXBsZSBjb2Rl
IGNhbiBiZSBmb3VuZCBpbiB0aGUKLS8vIHRlc3RzIGZvciBJbmRleGVkREIgd2hpY2ggYXJlIGhl
cmU6Ci0vLyBodHRwOi8vdHJhYy53ZWJraXQub3JnL2Jyb3dzZXIvdHJ1bmsvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIKLS8vCi0vLyBUaGlzIGRvY3VtZW50IGlzIGN1cnJlbnRseSBtYWlu
dGFpbmVkIGJ5IEplcmVteSBPcmxvdyA8am9ybG93QGNocm9taXVtLm9yZz4KLQotCi0vLyBUaGlz
IGlzIG5vdCBhbiBpZGVhbCBsYXlvdXQgdGVzdCBzaW5jZSBpdCBkb2Vzbid0IHZlcmlmeSB0aGlu
Z3MgYXMgdGhvcm91Z2hseSBhcyBpdCBjb3VsZCwKLS8vIGJ1dCBhZGRpbmcgc3VjaCBjb250ZW50
IHdvdWxkIG1ha2UgaXQgbXVjaCBtb3JlIGNsdXR0ZXJlZCBhbmQgdGh1cyB3b3VsZG4ndCBzZXJ2
ZSBpdHMgcHJpbWFyeQotLy8gZ29hbCBvZiB0ZWFjaGluZyBwZW9wbGUgSW5kZXhlZERCLiBUaGF0
IHNhaWQsIGl0IGRvZXMgaGF2ZSBhIGdvb2QgYW1vdW50IG9mIGNvdmVyYWdlIGFuZAotLy8gc2Vy
dmVzIGFzIGEgbGl2aW5nIGRvY3VtZW50IGRlc2NyaWJpbmcgd2hhdCdzIGV4cGVjdGVkIHRvIHdv
cmsgYW5kIGhvdyB3aXRoaW4gV2ViS2l0IHNvIGl0Ci0vLyBzZWVtcyB3ZWxsIHdvcnRoIGhhdmlu
ZyBjaGVja2VkIGluLgotaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCk7Ci0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci19Ci0KLQotZnVu
Y3Rpb24gc2V0dXAoKQotewotICAgIC8vIEFzIHRoaXMgQVBJIGlzIHN0aWxsIGV4cGVyaW1lbnRh
bCwgaXQncyBiZWluZyBzaGlwcGVkIGJlaGluZCB2ZW5kb3Igc3BlY2lmaWMgcHJlZml4ZXMuCi0g
ICAgaWYgKCd3ZWJraXRJbmRleGVkREInIGluIHdpbmRvdykgewotICAgICAgICBpbmRleGVkREIg
PSB3ZWJraXRJbmRleGVkREI7Ci0gICAgICAgIElEQkN1cnNvciA9IHdlYmtpdElEQkN1cnNvcjsK
LSAgICAgICAgSURCS2V5UmFuZ2UgPSB3ZWJraXRJREJLZXlSYW5nZTsKLSAgICAgICAgSURCVHJh
bnNhY3Rpb24gPSB3ZWJraXRJREJUcmFuc2FjdGlvbjsKLSAgICB9Ci0KLSAgICAvLyBUaGlzIHR1
dG9yaWFsIGFzc3VtZXMgdGhhdCBNb3ppbGxhIGFuZCBXZWJLaXQgbWF0Y2ggZWFjaCBvdGhlciB3
aGljaCBpc24ndCB0cnVlIGF0IHRoZQotICAgIC8vIG1vbWVudCwgYnV0IHdlIGNhbiBob3BlIGl0
J2xsIGJlY29tZSB0cnVlIG92ZXIgdGltZS4KLSAgICBpZiAoJ21vel9pbmRleGVkREInIGluIHdp
bmRvdykgewotICAgICAgICBpbmRleGVkREIgPSBtb3pfaW5kZXhlZERCOwotICAgICAgICAvLyBO
b3QgaW1wbGVtZW50ZWQgYnkgdGhlbSB5ZXQuIEknbSBqdXN0IGd1ZXNzaW5nIHdoYXQgdGhleSds
bCBiZS4KLSAgICAgICAgSURCQ3Vyc29yID0gbW96X0lEQkN1cnNvcjsKLSAgICAgICAgSURCS2V5
UmFuZ2UgPSBtb3pfSURCS2V5UmFuZ2U7Ci0gICAgICAgIElEQlRyYW5zYWN0aW9uID0gbW96X0lE
QlRyYW5zYWN0aW9uOwotICAgIH0KLX0KLQotZnVuY3Rpb24gbG9nKHR4dCkKLXsKLSAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgibG9nZ2VyIikuaW5uZXJIVE1MICs9IHR4dCArICI8YnI+IjsK
LX0KLQotZnVuY3Rpb24gbG9nRXJyb3IodHh0KQotewotICAgIGxvZygiPGZvbnQgY29sb3I9cmVk
PiIgKyB0eHQgKyAiPC9mb250PiIpOwotfQotCi1mdW5jdGlvbiBzdGFydCgpCi17Ci0gICAgc2V0
dXAoKTsKLQotICAgIC8vIFRoaXMgaXMgYW4gZXhhbXBsZSBvZiBvbmUgb2YgdGhlIG1hbnkgYXN5
bmNocm9ub3VzIGNvbW1hbmRzIGluIEluZGV4ZWREQidzIGFzeW5jIGludGVyZmFjZS4KLSAgICAv
LyBFYWNoIHJldHVybnMgYW4gSURCUmVxdWVzdCBvYmplY3Qgd2hpY2ggaGFzICJzdWNjZXNzIiBh
bmQgImVycm9yIiBldmVudCBoYW5kbGVycy4gWW91IGNhbiB1c2UKLSAgICAvLyAiYWRkRXZlbnRM
aXN0ZW5lciIgaWYgeW91J2QgbGlrZSwgYnV0IEknbSB1c2luZyB0aGUgc2ltcGxlciA9IHN5bnRh
eC4gT25seSBvbmUgb3IgdGhlIG90aGVyCi0gICAgLy8gd2lsbCBmaXJlLiBZb3UncmUgZ3VhcmFu
dGVlZCB0aGF0IHRoZXkgd29uJ3QgZmlyZSB1bnRpbCBjb250cm9sIGlzIHJldHVybmVkIGZyb20g
SmF2YVNjcmlwdAotICAgIC8vIGV4ZWN1dGlvbi4KLSAgICB2YXIgcmVxdWVzdCA9IGluZGV4ZWRE
Qi5vcGVuKCJ0dXRvcmlhbERCIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvbk9wZW47Ci0g
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yOwotfQotCi1mdW5jdGlvbiB1bmV4
cGVjdGVkRXJyb3IoKQotewotICAgIC8vIElmIGFuIGFzeW5jaHJvbm91cyBjYWxsIHJlc3VsdHMg
aW4gYW4gZXJyb3IsIGFuICJlcnJvciIgZXZlbnQgd2lsbCBmaXJlIG9uIHRoZSBJREJSZXF1ZXN0
Ci0gICAgLy8gb2JqZWN0IHRoYXQgd2FzIHJldHVybmVkIGFuZCB0aGUgZXZlbnQncyBjb2RlIGFu
ZCBtZXNzYWdlIGF0dHJpYnV0ZXMgd2lsbCBiZSBwb3B1bGF0ZWQgd2l0aAotICAgIC8vIHRoZSBj
b3JyZWN0IHZhbHVlcy4KLSAgICBsb2dFcnJvcigiRXJyb3IgIiArIGV2ZW50LmNvZGUgKyAiOiAi
ICsgZXZlbnQubWVzc2FnZSk7Ci0KLSAgICAvLyBJZiB0aGUgZGVmYXVsdCBiZWhhdmlvciBvZiB0
aGUgZXJyb3IgaXMgbm90IHByZXZlbnRlZCwgdGhlIHRyYW5zYWN0aW9uIHdpbGwgaW1wbGljaXRs
eQotICAgIC8vIGJlIGFib3J0ZWQuCi19Ci0KLWZ1bmN0aW9uIG9uT3BlbigpCi17Ci0gICAgLy8g
SWYgYW4gYXN5bmNocm9ub3VzIGNhbGwgcmVzdWx0cyBpbiBzdWNjZXNzLCBhICJzdWNjZXNzIiBl
dmVudCB3aWxsIGZpcmUgb24gdGhlIElEQlJlcXVlc3QKLSAgICAvLyBvYmplY3QgdGhhdCB3YXMg
cmV0dXJuZWQgKGkuZS4gaXQnbGwgYmUgdGhlIGV2ZW50IHRhcmdldCksIHdoaWNoIG1lYW5zIHRo
YXQgeW91IGNhbiBzaW1wbHkKLSAgICAvLyBsb29rIGF0IGV2ZW50LnRhcmdldC5yZXN1bHQgdG8g
Z2V0IHRoZSByZXN1bHQgb2YgdGhlIGNhbGwuIEluIHNvbWUgY2FzZXMsIHRoZSBleHBlY3RlZAot
ICAgIC8vIHJlc3VsdCB3aWxsIGJlIG51bGwuCi0gICAgd2luZG93LmRiID0gZXZlbnQudGFyZ2V0
LnJlc3VsdDsKLQotICAgIC8vIFRoZSBJREJEYXRhYmFzZSBvYmplY3QgaGFzIGEgInZlcnNpb24i
IGF0dHJpYnV0ZS4gVGhpcyBjYW4gb25seSBiZSBzZXQgYnkgY2FsbGluZwotICAgIC8vICJzZXRW
ZXJzaW9uIiBvbiB0aGUgZGF0YWJhc2UgYW5kIHN1cHBseWluZyBhIG5ldyB2ZXJzaW9uLiBUaGlz
IGFsc28gc3RhcnRzIGEgbmV3Ci0gICAgLy8gdHJhbnNhY3Rpb24gd2hpY2ggaXMgdmVyeSBzcGVj
aWFsLiBUaGVyZSBhcmUgbWFueSBkZXRhaWxzIGFuZCBnb3RjaGFzIHN1cnJvdW5kaW5nCi0gICAg
Ly8gc2V0VmVyc2lvbiB3aGljaCB3ZSdsbCBnZXQgaW50byBsYXRlci4KLSAgICBpZiAoZGIudmVy
c2lvbiA9PSAiMS4wIikgewotICAgICAgICAvLyBXZSBjb3VsZCBza2lwIHNldHRpbmcgdXAgdGhl
IG9iamVjdCBzdG9yZXMgYW5kIGluZGV4ZXMgaWYgdGhpcyB3ZXJlIGEgcmVhbCBhcHBsaWNhdGlv
bgotICAgICAgICAvLyB0aGF0IHdhc24ndCBnb2luZyB0byBjaGFuZ2UgdGhpbmdzIHdpdGhvdXQg
Y2hhbmdpbmcgdGhlIHZlcnNpb24gbnVtYmVyLiBCdXQgc2luY2UgdGhpcwotICAgICAgICAvLyBp
cyBib3RoIGEgdHV0b3JpYWwgYW5kIGEgbGl2aW5nIGRvY3VtZW50LCB3ZSdsbCBnbyBvbiBhbmQg
c2V0IHRoaW5ncyB1cCBldmVyeSB0aW1lIHdlIHJ1bi4KLSAgICB9Ci0gICAgdmFyIHJlcXVlc3Qg
PSBkYi5zZXRWZXJzaW9uKCIxLjAiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9uU2V0VmVy
c2lvbjsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3I7Ci19Ci0KLWZ1bmN0
aW9uIG9uU2V0VmVyc2lvbigpCi17Ci0gICAgLy8gV2UgYXJlIG5vdyBpbiBhIHNldFZlcnNpb24g
dHJhbnNhY3Rpb24uIFN1Y2ggYSB0cmFuc2FjdGlvbiBpcyB0aGUgb25seSBwbGFjZSB3aGVyZSBv
bmUKLSAgICAvLyBjYW4gYWRkIG9yIGRlbGV0ZSBpbmRleGVzIGFuZCBvYmplY3RTdG9yZXMuIFRo
ZSByZXN1bHQgKHByb3BlcnR5IG9mIHRoZSByZXF1ZXN0KSBpcyBhbgotICAgIC8vIElEQlRyYW5z
YWN0aW9uIG9iamVjdCB0aGF0IGhhcyAiY29tcGxldGUiIGFuZCAiYWJvcnQiIGV2ZW50IGhhbmRs
ZXJzIHdoaWNoIHRlbGwKLSAgICAvLyB1cyB3aGVuIHRoZSB0cmFuc2FjdGlvbiBoYXMgY29tbWl0
dGVkLCBhYm9ydGVkLCBvciB0aW1lZCBvdXQuCi0gICAgd2luZG93LmN1cnJlbnRUcmFuc2FjdGlv
biA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Ci0gICAgY3VycmVudFRyYW5zYWN0aW9uLm9uY29tcGxl
dGUgPSBvblNldFZlcnNpb25Db21wbGV0ZTsKLSAgICBjdXJyZW50VHJhbnNhY3Rpb24ub25hYm9y
dCA9IHVuZXhwZWN0ZWRBYm9ydDsKLQotICAgIC8vIERlbGV0ZSBleGlzdGluZyBvYmplY3Qgc3Rv
cmVzLgotICAgIHdoaWxlIChkYi5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCkKLSAgICAgICAgZGIu
ZGVsZXRlT2JqZWN0U3RvcmUoZGIub2JqZWN0U3RvcmVOYW1lc1swXSk7Ci0KLSAgICAvLyBOb3cg
dGhhdCB3ZSBoYXZlIGEgYmxhbmsgc2xhdGUsIGxldCdzIGNyZWF0ZSBhbiBvYmplY3RTdG9yZS4g
QW4gb2JqZWN0U3RvcmUgaXMgc2ltcGx5IGFuCi0gICAgLy8gb3JkZXJlZCBtYXBwaW5nIG9mIGtl
eXMgdG8gdmFsdWVzLiBXZSBjYW4gaXRlcmF0ZSB0aHJvdWdoIHJhbmdlcyBvZiBrZXlzIG9yIGRv
IGluZGl2aWR1YWwKLSAgICAvLyBsb29rdXBzLiBPYmplY3RTdG9yZXMgZG9uJ3QgaGF2ZSBhbnkg
c2NoZW1hLgotICAgIC8vCi0gICAgLy8gS2V5cyBjYW4gYmUgaW50ZWdlcnMsIHN0cmluZ3MsIG9y
IG51bGwuIChUaGUgc3BlYyBhbHNvIGRlZmluZXMgZGF0ZXMgYW5kIHRoZXJlJ3MgdGFsayBvZgot
ICAgIC8vIGhhbmRsaW5nIGFycmF5cywgYnV0IHRoZXNlIGFyZSBub3QgaW1wbGVtZW50ZWQgeWV0
IGluIENocm9taXVtL1dlYktpdC4pIFZhbHVlcyBjYW4gYmUKLSAgICAvLyBhbnl0aGluZyBzdXBw
b3J0ZWQgYnkgdGhlIHN0cnVjdHVyZWQgY2xvbmUgYWxnb3JpdGhtCi0gICAgLy8gKGh0dHA6Ly9k
ZXYudzMub3JnL2h0bWw1L3NwZWMvT3ZlcnZpZXcuaHRtbCNpbnRlcm5hbC1zdHJ1Y3R1cmVkLWNs
b25pbmctYWxnb3JpdGhtKSB3aGljaAotICAgIC8vIGlzIGEgc3VwZXJzZXQgb2Ygd2hhdCBjYW4g
YmUgZXhwcmVzc2VkIGluIEpTT04uIChOb3RlIHRoYXQgQ2hyb21pdW0vV2ViS2l0IGRvZXMgbm90
IGZ1bGx5Ci0gICAgLy8gaW1wbGVtZW50IHRoZSBzdHJ1Y3R1cmVkIGNsb25lIGFsZ29yaXRobSB5
ZXQsIGJ1dCBpdCBkZWZpbml0ZWx5IGhhbmRsZXMgYW55dGhpbmcgSlNPTgotICAgIC8vIHNlcmlh
bGl6YWJsZS4pCi0gICAgLy8KLSAgICAvLyBUaGVyZSBhcmUgdHdvIHR5cGVzIG9mIG9iamVjdFN0
b3Jlczogb25lcyB3aGVyZSB0aGUgcGF0aCBpcyBzdXBwbGllZCBtYW51YWxseSBldmVyeSB0aW1l
IGEKLSAgICAvLyB2YWx1ZSBpcyBpbnNlcnRlZCBhbmQgdGhvc2Ugd2l0aCBhICJrZXkgcGF0aCIu
IEEga2V5UGF0aCBpcyBlc3NlbnRpYWxseSBhIEphdmFTY3JpcHQKLSAgICAvLyBleHByZXNzaW9u
IHRoYXQgaXMgZXZhbHVhdGVkIG9uIGV2ZXJ5IHZhbHVlIHRvIGV4dHJhY3QgYSBrZXkuIEZvciBl
eGFtcGxlLCBpZiB5b3UgcGFzcyBpbgotICAgIC8vIHRoZSB2YWx1ZSBvZiAie2ZuYW1lOiAnam9o
bicsIGxuYW1lOiAnZG9lJywgYWRkcmVzczoge3N0cmVldDogJ0J1Y2tpbmdoYW0gUGFsYWNlIiwg
bnVtYmVyOgotICAgIC8vIDc2fSwgc2libGluZ3M6IFsiTmFuY3kiLCAiTWFyY3VzIl0sIGlkOiAy
Mn0iIGFuZCBhbiBvYmplY3RTdG9yZSBoYXMgYSBrZXlQYXRoIG9mICJpZCIgdGhlbgotICAgIC8v
IDIyIHdpbGwgYmUgdGhlIGtleSBmb3IgdGhpcyB2YWx1ZS4gSW4gb2JqZWN0U3RvcmVzLCBlYWNo
IGtleSBtdXN0IGJlIHVuaXF1ZS4KLSAgICAvLwotICAgIC8vIE5vdGUgdGhhdCB0aGUgZXhhY3Qg
c3ludGF4IGFsbG93ZWQgZm9yIGtleVBhdGhzIGlzIG5vdCB5ZXQgd2VsbCBzcGVjaWZpZWQsIGJ1
dAotICAgIC8vIENocm9taXVtL1dlYktpdCBjdXJyZW50bHkgYWxsb3dzIHBhdGhzIHRoYXQgYXJl
IG11bHRpcGxlIGxldmVscyBkZWVwIHdpdGhpbiBhbiBvYmplY3QgYW5kCi0gICAgLy8gYWxsb3dz
IHRoYXQgdG8gYmUgaW50ZXJtaXhlZCB3aXRoIGFycmF5IGRlcmVmZXJlbmNlcy4gU28sIGZvciBl
eGFtcGxlLCBhIGtleSBwYXRoIG9mCi0gICAgLy8gImFkZHJlc3MubnVtYmVyIiBvciAic2libGlu
Z3NbMF0iIHdvdWxkIGJlIGxlZ2FsIChwcm92aWRlZCBldmVyeSBlbnRyeSBoYWQgYW4gYWRkcmVz
cyB3aXRoCi0gICAgLy8gYSBudW1iZXIgYXR0cmlidXRlIGFuZCBhdCBsZWFzdCBvbmUgc2libGlu
ZykuIFlvdSBjYW4gZXZlbiBnbyB3aWxkIGFuZCBzYXkKLSAgICAvLyAiZm9vWzBdWzJdLmJhclsw
XS5iYXoudGVzdFsxXVsyXVszXSIuIEl0J3MgcG9zc2libGUgdGhpcyB3aWxsIGNoYW5nZSBpbiB0
aGUgZnV0dXJlIHRob3VnaC4KLSAgICAvLwotICAgIC8vIElmIHlvdSBzZXQgYXV0b0luY3JlbWVu
dCAoYW5vdGhlciBvcHRpb25hbCBwYXJhbWV0ZXIpLCBJbmRleGVkREIgd2lsbCBnZW5lcmF0ZSBh
IGtleQotICAgIC8vIGZvciB5b3VyIGVudHJ5IGF1dG9tYXRpY2FsbHkuIEFuZCBpZiB5b3UgaGF2
ZSBhIGtleVBhdGggc2V0LCBpdCdsbCBzZXQgdGhlIHZhbHVlIGF0Ci0gICAgLy8gdGhlIGxvY2F0
aW9uIG9mIHRoZSBrZXlQYXRoIF9pbiB0aGUgZGF0YWJhc2VfIChpLmUuIGl0IHdpbGwgbm90IG1v
ZGlmeSB0aGUgdmFsdWUgeW91IHBhc3MKLSAgICAvLyBpbiB0byBwdXQvYWRkKS4gVW5mb3J0dW5h
dGVseSBhdXRvSW5jcmVtZW50IGlzIG5vdCB5ZXQgaW1wbGVtZW50ZWQgaW4gQ2hyb21pdW0vV2Vi
S2l0LgotICAgIC8vCi0gICAgLy8gQW5vdGhlciBvcHRpb25hbCBwYXJhbWV0ZXIsICJldmljdGFi
bGUiIGlzIG5vdCB5ZXQgaW1wbGVtZW50ZWQuIFdoZW4gaXQgaXMsIGl0J2xsIGhpbnQKLSAgICAv
LyB3aGljaCBkYXRhIHNob3VsZCBiZSBkZWxldGVkIGZpcnN0IGlmIHRoZSBicm93c2VyIGRlY2lk
ZXMgdGhpcyBvcmlnaW4gaXMgdXNpbmcgdG9vIG11Y2gKLSAgICAvLyBzdG9yYWdlLiAoVGhlIGFs
dGVybmF0aXZlIGlzIHRoYXQgaXQnbGwgc3VnZ2VzdCB0aGUgdXNlciBkZWxldGUgZXZlcnl0aGlu
ZyBmcm9tIHRoZQotICAgIC8vIG9yaWdpbiwgc28gaXQncyBpbiB5b3VyIGZhdm9yIHRvIHNldCBp
dCBhcHByb3BlcmF0ZWx5ISkgVGhpcyBpcyBncmVhdCBmb3Igd2hlbiB5b3UgaGF2ZQotICAgIC8v
IHNvbWUgYWJzb2x1dGVseSBjcml0aWNhbCBkYXRhIChsaWtlIHVuc2V0IGVtYWlscykgYW5kIGEg
YnVuY2ggb2YgbGVzcyBjcml0aWNhbCwgKGJ1dAotICAgIC8vIG1heWJlIHN0aWxsIGltcG9ydGFu
dCEpIGRhdGEuCi0gICAgLy8KLSAgICAvLyBBbGwgb2YgdGhlc2Ugb3B0aW9ucyBjYW4gYmUgcGFz
c2VkIGludG8gY3JlYXRlT2JqZWN0U3RvcmUgdmlhIGl0cyAob3B0aW9uYWwpIHNlY29uZAotICAg
IC8vIHBhcmFtZXRlci4gU28sIGlmIHlvdSB3YW50ZWQgdG8gZGVmaW5lIGFsbCwgWW91J2QgZG8g
e2tleVBhdGg6ICJzb21ldGhpbmciLAotICAgIC8vIGV2aWN0YWJsZTogdHJ1ZSwgYXV0b0luY3Jl
bWVudDogdHJ1ZX0uIFlvdSBjYW4gYWxzbyBwYXNzIGluIHN1YnNldHMgb2YgYWxsIHRocmVlIG9y
Ci0gICAgLy8gb21pdCB0aGUgb2JqZWN0IChzaW5jZSBpdCdzIG9wdGlvbmFsKS4KLSAgICAvLwot
ICAgIC8vIExldCdzIG5vdyBjcmVhdGUgYW4gb2JqZWN0U3RvcmUgZm9yIHBlb3BsZS4gV2UnbGwg
c3VwcGx5IGEga2V5IHBhdGggaW4gdGhpcyBjYXNlLgotICAgIHZhciBvYmplY3RTdG9yZSA9IGRi
LmNyZWF0ZU9iamVjdFN0b3JlKCJwZW9wbGUiLCB7a2V5UGF0aDogImlkIn0pOwotCi0gICAgLy8g
Tm90aWNlIHRoYXQgaXQgcmV0dXJuZWQgc3luY2hyb25vdXNseS4gVGhlIHJ1bGUgb2YgdGh1bWIg
aXMgdGhhdCBhbnkgY2FsbCB0aGF0IHRvdWNoZXMgKGluCi0gICAgLy8gYW55IHdheSkga2V5cyBv
ciB2YWx1ZXMgaXMgYXN5bmNocm9ub3VzIGFuZCBhbnkgb3RoZXIgY2FsbCAoYmVzaWRlcyBzZXRW
ZXJzaW9uIGFuZCBvcGVuKSBhcmUKLSAgICAvLyBhc3luY2hyb25vdXMuCi0gICAgLy8KLSAgICAv
LyBOb3cgbGV0J3MgY3JlYXRlIHNvbWUgaW5kZXhlcy4gSW5kZXhlcyBhbGxvdyB5b3UgdG8gY3Jl
YXRlIG90aGVyIGtleXMgdmlhIGtleSBwYXRocyB3aGljaAotICAgIC8vIHdpbGwgYWxzbyBwb2lu
dCB0byBhIHBhcnRpY3VsYXIgdmFsdWUgaW4gYW4gb2JqZWN0U3RvcmUuIEluIHRoaXMgZXhhbXBs
ZSwgd2UnbGwgY3JlYXRlCi0gICAgLy8gaW5kZXhlcyBmb3IgYSBwZXJzb25zIGZpcnN0IGFuZCBs
YXN0IG5hbWUuIEluZGV4ZXMgY2FuIG9wdGlvbmFsbHkgYmUgc3BlY2lmaWVkIHRvIG5vdCBiZQot
ICAgIC8vIHVuaXF1ZSwgd2hpY2ggaXMgZ29vZCBpbiB0aGUgY2FzZSBvZiBuYW1lcy4gVGhlIGZp
cnN0IHBhcmFtZXRlciBpcyB0aGUgbmFtZSBvZiB0aGUgaW5kZXguCi0gICAgLy8gU2Vjb25kIGlz
IHRoZSBrZXkgcGF0aC4gVGhlIHRoaXJkIHNwZWNpZmllcyB1bmlxdWVuZXNzLgotICAgIHZhciBm
bmFtZSA9IG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCJmbmFtZSIsICJmbmFtZSIsIHsgdW5pcXVl
OiBmYWxzZX0pOwotICAgIHZhciBsbmFtZSA9IG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCJsbmFt
ZSIsICJsbmFtZSIsIHsgdW5pcXVlOiBmYWxzZX0pOwotCi0gICAgLy8gTm90ZSB0aGF0IGlmIHlv
dSB3YW50ZWQgdG8gZGVsZXRlIHRoZXNlIGluZGV4ZXMsIHlvdSBjYW4gZWl0aGVyIGNhbGwgb2Jq
ZWN0U3RvcmUuZGVsZXRlSW5kZXgKLSAgICAvLyBvciBzaW1wbHkgZGVsZXRlIHRoZSBvYmplY3RT
dG9yZXMgdGhhdCBvd24gdGhlIGluZGV4ZXMuCi0gICAgLy8KLSAgICAvLyBJZiB3ZSB3YW50ZWQg
dG8sIHdlIGNvdWxkIHBvcHVsYXRlIHRoZSBvYmplY3RTdG9yZSB3aXRoIHNvbWUgZGF0YSBoZXJl
IG9yIGRvIGFueXRoaW5nIGVsc2UKLSAgICAvLyBhbGxvd2VkIGluIGEgbm9ybWFsIChpLmUuIG5v
bi1zZXRWZXJzaW9uKSB0cmFuc2FjdGlvbi4gVGhpcyBpcyB1c2VmdWwgc28gdGhhdCBkYXRhIG1p
Z3JhdGlvbnMKLSAgICAvLyBjYW4gYmUgYXRvbWljIHdpdGggY2hhbmdlcyB0byB0aGUgb2JqZWN0
U3RvcmVzL2luZGV4ZXMuCi0gICAgLy8gICAgCi0gICAgLy8gQmVjYXVzZSB3ZSBoYXZlbid0IGFj
dHVhbGx5IG1hZGUgYW55IG5ldyBhc3luY2hyb25vdXMgcmVxdWVzdHMsIHRoaXMgdHJhbnNhY3Rp
b24gd2lsbAotICAgIC8vIHN0YXJ0IGNvbW1pdHRpbmcgYXMgc29vbiBhcyB3ZSBsZWF2ZSB0aGlz
IGZ1bmN0aW9uLiBUaGlzIHdpbGwgY2F1c2Ugb25jb21wbGV0ZSBldmVudCBoYW5kbGVyCi0gICAg
Ly8gZm9yIHRoZSB0cmFuc2FjdGlvbiB3aWxsIGZpcmUgc2hvcnRseSBhZnRlci4gSW5kZXhlZERC
IHRyYW5zYWN0aW9ucyBjb21taXQgd2hlbmV2ZXIgY29udHJvbCBpcwotICAgIC8vIHJldHVybmVk
IGZyb20gSmF2YVNjcmlwdCB3aXRoIG5vIGZ1cnRoZXIgd29yayBiZWluZyBxdWV1ZWQgdXAgYWdh
aW5zdCB0aGUgdHJhbnNhY3Rpb24uIFRoaXMKLSAgICAvLyBtZWFucyBvbmUgY2Fubm90IGNhbGwg
c2V0VGltZW91dCwgZG8gYW4gWEhSLCBvciBhbnl0aGluZyBsaWtlIHRoYXQgYW5kIGV4cGVjdCBt
eSB0cmFuc2FjdGlvbgotICAgIC8vIHRvIHN0aWxsIGJlIGFyb3VuZCB3aGVuIHRoYXQgY29tcGxl
dGVzLgotICAgIAotfQotCi1mdW5jdGlvbiB1bmV4cGVjdGVkQWJvcnQoKQotewotICAgIGxvZ0Vy
cm9yKCJBIHRyYW5zYWN0aW9uIGFib3J0ZWQgdW5leHBlY3RlZGx5ISIpOwotfQotCi1mdW5jdGlv
biBvblNldFZlcnNpb25Db21wbGV0ZSgpCi17Ci0gICAgLy8gTGV0cyBjcmVhdGUgYSBuZXcgdHJh
bnNhY3Rpb24gYW5kIHRoZW4gbm90IHNjaGVkdWxlIGFueSB3b3JrIG9uIGl0IHRvIHdhdGNoIGl0
IGFib3J0IGl0c2VsZi4KLSAgICAvLyBUcmFuc2FjdGlvbnMgKGJlc2lkZXMgdGhvc2UgY3JlYXRl
ZCB3aXRoIHNldFZlcnNpb24pIGFyZSBjcmVhdGVkIHN5bmNocm9ub3VzbHkuIExpa2UKLSAgICAv
LyBjcmVhdGVPYmplY3RTdG9yZSwgdHJhbnNhY3Rpb24gb3B0aW9uYWxseSB0YWtlcyBpbiB2YXJp
b3VzIG9wdGlvbmFsIHBhcmFtZXRlcnMuCi0gICAgLy8KLSAgICAvLyBGaXJzdCBvZiBhbGwgaXMg
dGhlIHBhcmFtZXRlciAib2JqZWN0U3RvcmVOYW1lcyIuIElmIHlvdSBwYXNzIGluIGEgc3RyaW5n
LCB3ZSBsb2NrIGp1c3QgdGhhdAotICAgIC8vIG9iamVjdFN0b3JlLiAgSWYgeW91IHBhc3MgaW4g
YW4gYXJyYXksIHdlIGxvY2sgdGhvc2UuIEJ5IHNwZWNpZnlpbmcgbG9ja3Mgb3ZlciBmZXdlcgot
ICAgIC8vIG9iamVjdFN0b3JlcyB5b3UgbWFrZSBpdCBwb3NzaWJsZSBmb3IgYnJvd3NlcnMgdG8g
cnVuIHRyYW5zYWN0aW9ucyBjb25jdXJyZW50bHkuIFRoYXQgc2FpZCwKLSAgICAvLyBDaHJvbWl1
bS9XZWJLaXQgZG9lcyBub3Qgc3VwcG9ydCB0aGlzIHlldC4KLSAgICAvLwotICAgIC8vIE5leHQg
aXMgIm1vZGUiIHdoaWNoIHNwZWNpZmllcyB0aGUgbG9ja2luZyBtb2RlLiBUaGUgZGVmYXVsdCBp
cyBSRUFEX09OTFkgKGkuZS4gYSBzaGFyZWQgbG9jaykuCi0gICAgLy8gVGhhdCdzIGZpbmUgZm9y
IHRoaXMgY2FzZSwgYnV0IGxhdGVyIHdlJ2xsIGFzayBmb3IgJ3JlYWR3cml0ZScuIEF0IHRoZSBt
b21lbnQsCi0gICAgLy8gQ2hyb21pdW0vV2ViS2l0IHByZXRlbmRzIGV2ZXJ5IHRyYW5zYWN0aW9u
IGlzIFJFQURfV1JJVEUsIHdoaWNoIGlzIGtpbmQgb2YgYmFkLgotICAgIHdpbmRvdy5jdXJyZW50
VHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbigicGVvcGxlIiwgJ3JlYWR3cml0ZScpOwotICAg
IGN1cnJlbnRUcmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gb25UcmFuc2FjdGlvbkNvbXBsZXRlZDsK
LSAgICBjdXJyZW50VHJhbnNhY3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydDsKLQotICAg
IC8vIFZlcmlmeSB0aGF0ICJwZW9wbGUiIGlzIHRoZSBvbmx5IG9iamVjdCBzdG9yZSBpbiBleGlz
dGFuY2UuIFRoZSBvYmplY3RTdG9yZU5hbWVzIGF0dHJpYnV0ZSBpcwotICAgIC8vIGEgRE9NU3Ry
aW5nTGlzdCB3aGljaCBpcyBzb21ld2hhdCBsaWtlIGFuIGFycmF5LgotICAgIHZhciBvYmplY3RT
dG9yZUxpc3QgPSBkYi5vYmplY3RTdG9yZU5hbWVzOwotICAgIGlmIChvYmplY3RTdG9yZUxpc3Qu
bGVuZ3RoICE9IDEKLSAgICAgICAgfHwgIW9iamVjdFN0b3JlTGlzdC5jb250YWlucygicGVvcGxl
IikKLSAgICAgICAgfHwgb2JqZWN0U3RvcmVMaXN0Lml0ZW0oMCkgIT0gInBlb3BsZSIKLSAgICAg
ICAgfHwgb2JqZWN0U3RvcmVMaXN0WzBdICE9ICJwZW9wbGUiKSB7Ci0gICAgICAgIGxvZ0Vycm9y
KCJTb21ldGhpbmcgd2VudCB3cm9uZy4iKTsKLSAgICB9Ci0KLSAgICAvLyBMZXQncyBncmFiIGEg
aGFuZGxlIHRvIHRoZSBvYmplY3RTdG9yZS4gVGhpcyBoYW5kbGUgaXMgdGllZCB0byB0aGUgdHJh
bnNhY3Rpb24gdGhhdCBjcmVhdGVzCi0gICAgLy8gaXQgYW5kIHRodXMgYmVjb21lcyBpbnZhbGlk
IG9uY2UgdGhpcyB0cmFuc2FjdGlvbiBjb21wbGV0ZXMuCi0gICAgdmFyIG9iamVjdFN0b3JlID0g
Y3VycmVudFRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCJwZW9wbGUiKTsKLSAgICBpZiAoIW9iamVj
dFN0b3JlKQotICAgICAgICBsb2dFcnJvcigiU29tZXRoaW5nIHdlbnQgd3JvbmcuIik7Ci0KLSAg
ICAvLyBJZiB3ZSB0cnkgdG8gZ3JhYiBhbiBvYmplY3RTdG9yZSB0aGF0IGRvZXNuJ3QgZXhpc3Qs
IEluZGV4ZWREQiB0aHJvd3MgYW4gZXhjZXB0aW9uLgotICAgIHRyeSB7Ci0gICAgICAgIGN1cnJl
bnRUcmFuc2FjdGlvbi5vYmplY3RTdG9yZSgieCIpOwotICAgICAgICBsb2dFcnJvcigiU29tZXRo
aW5nIHdlbnQgd3JvbmcuIik7Ci0gICAgfSBjYXRjaCAoZSkgewotICAgICAgICAvLyBOb3RlIHRo
YXQgdGhlIGVycm9yIG1lc3NhZ2VzIGluIGV4Y2VwdGlvbnMgYXJlIG1vc3RseSBsaWVzIGF0IHRo
ZSBtb21lbnQuIFRoZSByZWFzb24gaXMKLSAgICAgICAgLy8gdGhhdCB0aGUgc3BlYyByZS11c2Vz
IGV4Y2VwdGlvbiBjb2RlcyBmb3IgZXhpc3RpbmcgZXhjZXB0aW9ucyBhbmQgdGhlcmUncyBubyB3
YXkgd2UgY2FuCi0gICAgICAgIC8vIGRpc2FtYmlndWF0ZSBiZXR3ZWVuIHRoZSB0d28uIFRoZSBi
ZXN0IHdvcmstYXJvdW5kIGF0IHRoZSBtb21lbnQgaXMgdG8gbG9vayBhdAotICAgICAgICAvLyBo
dHRwOi8vZHZjcy53My5vcmcvaGcvSW5kZXhlZERCL3Jhdy1maWxlL3RpcC9PdmVydmlldy5odG1s
I3RoZS1pZGJkYXRhYmFzZWV4Y2VwdGlvbi1pbnRlcmZhY2UKLSAgICAgICAgLy8gdG8gZmlndXJl
IG91dCB3aGF0IHRoZSBudW1iZXIgY29ycmVzcG9uZHMgdG8uIFdlIHdpbGwgdHJ5IHRvIHJlc29s
dmUgdGhpcyBzb29uIGluIHNwZWMtbGFuZC4KLSAgICB9Ci0KLSAgICAvLyBWZXJpZnkgdGhhdCBm
bmFtZSBhbmQgbG5hbWUgYXJlIHRoZSBvbmx5IGluZGV4ZXMgaW4gZXhpc3RhbmNlLgotICAgIGlm
IChvYmplY3RTdG9yZS5pbmRleE5hbWVzLmxlbmd0aCAhPSAyKQotICAgICAgICBsb2dFcnJvcigi
U29tZXRoaW5nIHdlbnQgd3JvbmcuIik7Ci0KLSAgICAvLyBOb3RlIHRoYXQgbm8gYXN5bmMgYWN0
aW9ucyB3ZXJlIGV2ZXIgcXVldWVkIHVwIGFnYWluc3Qgb3VyIHRyYW5zYWN0aW9uLiBJdCB3aWxs
IGNvbW1pdCB3aGVuCi0gICAgLy8gd2UgbGVhdmUgdGhpcyBjb250ZXh0LgotfQotCi1mdW5jdGlv
biBvblRyYW5zYWN0aW9uQ29tcGxldGVkKCkKLXsKLSAgICAvLyBOb3cgbGV0J3MgbWFrZSBhIHJl
YWwgdHJhbnNhY3Rpb24gYW5kIGEgcGVyc29uIHRvIG91ciBvYmplY3RTdG9yZS4KLSAgICB3aW5k
b3cuY3VycmVudFRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oInBlb3BsZSIsICdyZWFkd3Jp
dGUnKTsKLSAgICBjdXJyZW50VHJhbnNhY3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydDsK
LQotICAgIHZhciBwZW9wbGUgPSBjdXJyZW50VHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoInBlb3Bs
ZSIpOwotICAgIHZhciByZXF1ZXN0ID0gcGVvcGxlLnB1dCh7Zm5hbWU6ICdKb2huJywgbG5hbWU6
ICdEb2UnLCBpZDogMX0pOyAvLyBJZiBvdXIgb2JqZWN0U3RvcmUgZGlkbid0IGhhdmUgYSBrZXkg
cGF0aCwgdGhlIHNlY29uZCBwYXJhbWV0ZXIgd291bGQgaGF2ZSBiZWVuIHRoZSBrZXkuCi0gICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBvblB1dFN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yOwotCi0gICAgLy8gV2hpbGUgd2UncmUgYXQgaXQsIHdoeSBub3QgYWRk
IGEgZmV3IG1vcmU/IE11bHRpcGxlIHF1ZXVlZCB1cCBhc3luYyBjb21tYW5kcyB3aWxsIGJlIGV4
ZWN1dGVkCi0gICAgLy8gc2VxdWVudGlhbGx5ICh0aG91Z2ggdGhlcmUgaXMgdGFsayBvZiBwcmlv
cml0aXppbmcgY3Vyc29yLmNvbnRpbnVlLS1zZWUgZGlzY3Vzc2lvbiBiZWxvdykuIFNpbmNlCi0g
ICAgLy8gd2UgZG9uJ3QgY2FyZSBhYm91dCB0aGUgaW5kaXZpZHVhbCBjb21tYW5kcycgc3VjY2Vz
c2VzLCB3ZSdsbCBvbmx5IGJvdGhlciB3aXRoIG9uIGVycm9yIGhhbmRsZXJzLgotICAgIC8vCi0g
ICAgLy8gUmVtZW1iZXIgdGhhdCBvdXIgaW1wbGVtZW50YXRpb24gb2YgdW5leHBlY3RlZEVycm9y
IHNob3VsZCBhYm9ydCB0aGUgImN1cnJlbnRUcmFuc2FjdGlvbiIgaW4gdGhlCi0gICAgLy8gY2Fz
ZSBvZiBhbiBlcnJvci4gKFRob3VnaCBubyBlcnJvciBzaG91bGQgb2NjdXIgaW4gdGhpcyBjYXNl
LikKLSAgICBwZW9wbGUucHV0KHtmbmFtZTogJ0phbmUnLCBsbmFtZTogJ0RvZScsIGlkOiAyfSku
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvcjsKLSAgICBwZW9wbGUucHV0KHtmbmFtZTogJ1BoaWxp
cCcsIGxuYW1lOiAnRnJ5JywgaWQ6IDN9KS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yOwotCi0g
ICAgLy8gTm90IHNob3duIGhlcmUgYXJlIHRoZSAuZGVsZXRlIG1ldGhvZCBhbmQgLmFkZCAod2hp
Y2ggaXMKLSAgICAvLyBsaWtlIC5wdXQgZXhjZXB0IHRoYXQgaXQgZmlyZXMgYW4gb25lcnJvciBp
ZiB0aGUgZWxlbWVudCBhbHJlYWR5IGV4aXN0cykuCi19Ci0KLWZ1bmN0aW9uIG9uUHV0U3VjY2Vz
cygpCi17Ci0gICAgLy8gUmVzdWx0IGlzIHRoZSBrZXkgdXNlZCBmb3IgdGhlIHB1dC4KLSAgICBp
ZiAoZXZlbnQudGFyZ2V0LnJlc3VsdCAhPT0gMSkKLSAgICAgICAgbG9nRXJyb3IoIlNvbWV0aGlu
ZyB3ZW50IHdyb25nLiIpOwotCi0gICAgLy8gV2Ugc2hvdWxkIGJlIGFibGUgdG8gcmVxdWVzdCB0
aGUgdHJhbnNhY3Rpb24gdmlhIGV2ZW50LnRyYW5zYWN0aW9uIGZyb20gd2l0aGluIGFueSBldmVu
dCBoYW5kbGVyCi0gICAgLy8gKGxpa2UgdGhpcyBvbmUpIGJ1dCB0aGlzIGlzIG5vdCB5ZXQgaW1w
bGVtZW50ZWQgaW4gQ2hyb21pdW0vV2ViS2l0LiBBcyBhIHdvcmstYXJvdW5kLCB3ZSB1c2UgdGhl
Ci0gICAgLy8gZ2xvYmFsICJjdXJyZW50VHJhbnNhY3Rpb24iIHZhcmlhYmxlIHdlIHNldCBhYm92
ZS4KLSAgICBjdXJyZW50VHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IG9uUHV0VHJhbnNhY3Rpb25D
b21wbGV0ZTsKLX0KLQotZnVuY3Rpb24gb25QdXRUcmFuc2FjdGlvbkNvbXBsZXRlKCkKLXsKLSAg
ICAvLyBPSywgbm93IGxldCdzIHF1ZXJ5IHRoZSBwZW9wbGUgb2JqZWN0U3RvcmUgaW4gYSBjb3Vw
bGUgZGlmZmVyZW50IHdheXMuIEZpcnN0IHVwLCBsZXQncyB0cnkgZ2V0LgotICAgIC8vIEl0IHNp
bXBseSB0YWtlcyBpbiBhIGtleSBhbmQgcmV0dXJucyBhIHJlcXVlc3Qgd2hvc2UgcmVzdWx0IHdp
bGwgYmUgdGhlIHZhbHVlLiBOb3RlIHRoYXQgaGVyZQotICAgIC8vIHdlJ3JlIHBhc3NpbmcgaW4g
YW4gYXJyYXkgZm9yIG9iamVjdFN0b3JlTmFtZXMgcmF0aGVyIHRoYW4gYSBzaW1wbGUgc3RyaW5n
LgotICAgIHdpbmRvdy5jdXJyZW50VHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbihbInBlb3Bs
ZSJdLCAncmVhZHdyaXRlJyk7Ci0gICAgY3VycmVudFRyYW5zYWN0aW9uLm9uYWJvcnQgPSB1bmV4
cGVjdGVkQWJvcnQ7Ci0KLSAgICB2YXIgcGVvcGxlID0gY3VycmVudFRyYW5zYWN0aW9uLm9iamVj
dFN0b3JlKCJwZW9wbGUiKTsKLSAgICB2YXIgcmVxdWVzdCA9IHBlb3BsZS5nZXQoMSk7Ci0gICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBvbkdldFN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yOwotCi0gICAgLy8gTm90ZSB0aGF0IG11bHRpcGxlIG9iamVjdFN0b3Jl
IChvciBpbmRleCkgbWV0aG9kIGNhbGxzIHdpbGwgcmV0dXJuIHRoZSBzYW1lIG9iamVjdCwgd2l0
aGluCi0gICAgLy8gYSB0cmFuc2FjdGlvbjoKLSAgICBwZW9wbGUuc29tZVByb3BlcnR5ID0gInh5
eiI7Ci0gICAgaWYgKGN1cnJlbnRUcmFuc2FjdGlvbi5vYmplY3RTdG9yZSgicGVvcGxlIikuc29t
ZVByb3BlcnR5ICE9ICJ4eXoiKQotICAgICAgICBsb2dFcnJvcigiU29tZXRoaW5nIHdlbnQgd3Jv
bmcuIik7Ci19Ci0KLWZ1bmN0aW9uIG9uR2V0U3VjY2VzcygpCi17Ci0gICAgaWYgKGV2ZW50LnRh
cmdldC5yZXN1bHQuZm5hbWUgIT09ICJKb2huIikKLSAgICAgICAgbG9nRXJyb3IoIlNvbWV0aGlu
ZyB3ZW50IHdyb25nLiIpOwotCi0gICAgLy8gUmVxdWVzdHMgKHdoaWNoIGFyZSBvdXIgZXZlbnQg
dGFyZ2V0KSBhbHNvIGhhdmUgYSBzb3VyY2UgYXR0cmlidXRlIHRoYXQncyB0aGUgb2JqZWN0IHRo
YXQKLSAgICAvLyByZXR1cm5lZCB0aGUgcmVxdWVzdC4gSW4gdGhpcyBjYXNlLCBpdCdzIG91ciAi
cGVvcGxlIiBvYmplY3RTdG9yZSBvYmplY3QuCi0gICAgdmFyIHBlb3BsZSA9IGV2ZW50LnRhcmdl
dC5zb3VyY2U7Ci0KLSAgICAvLyBOb3cgbGV0J3MgdHJ5IG9wZW5pbmcgYSBjdXJzb3IgZnJvbSBp
ZCAxIChleGNsdXNpdmUvb3BlbikgdG8gaWQgMyAoaW5jbHVzaXZlL2Nsb3NlZCkuIFRoaXMgbWVh
bnMKLSAgICAvLyB3ZSdsbCBnZXQgdGhlIG9iamVjdHMgZm9yIGlkcyAyIGFuZCAzLiBZb3UgY2Fu
IGFsc28gY3JlYXRlIGN1cnNvcnMgdGhhdCBhcmUgb25seSByaWdodCBvciBvbmx5Ci0gICAgLy8g
bGVmdCBib3VuZGVkIG9yIG9tbWl0IHRoZSBib3VuZCBpbiBvcmRlciB0byBncmFiIGFsbCBvYmpl
Y3RzLiBZb3UgY2FuIGFsc28gc3BlY2lmeSBhIGRpcmVjdGlvbgotICAgIC8vIHdoaWNoIGNhbiBi
ZSAnbmV4dCcgKGRlZmF1bHQpIGZvciB0aGUgY3Vyc29yIHRvIG1vdmUgZm9yd2FyZCwgTkVYVF9O
T19EVVBMSUNBVEUgdG8gb25seQotICAgIC8vIHJldHVybiB1bmlxdWUgZW50aXJlcyAob25seSBh
cHBsaWVzIHRvIGluZGV4ZXMgd2l0aCB1bmlxdWUgc2V0IHRvIGZhbHNlKSwgUFJFViB0byBtb3Zl
IGJhY2t3YXJkcywKLSAgICAvLyBhbmQgUFJFVl9OT19EVVBMSUNBVEUuCi0gICAgdmFyIGtleVJh
bmdlID0gSURCS2V5UmFuZ2UuYm91bmQoMSwgMywgdHJ1ZSwgZmFsc2UpOwotICAgIHZhciByZXF1
ZXN0ID0gcGVvcGxlLm9wZW5DdXJzb3Ioa2V5UmFuZ2UsICduZXh0Jyk7Ci0gICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBvbk9iamVjdFN0b3JlQ3Vyc29yOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvcjsKLX0KLQotZnVuY3Rpb24gb25PYmplY3RTdG9yZUN1cnNvcigpCi17Ci0g
ICAgLy8gVGhlIHJlc3VsdCBvZiBvcGVuQ3Vyc29yIGlzIGFuIElEQkN1cnNvciBvYmplY3Qgb3Ig
bnVsbCBpZiB0aGVyZSBhcmUgbm8gKG1vcmUtLXNlZSBiZWxvdykKLSAgICAvLyByZWNvcmRzIGxl
ZnQuCi0gICAgdmFyIGN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Ci0gICAgaWYgKGN1cnNv
ciA9PT0gbnVsbCkgewotICAgICAgICBjdXJzb3JDb21wbGV0ZShldmVudC50YXJnZXQuc291cmNl
KTsgLy8gVGhlIHNvcnVjZSBpcyBzdGlsbCBhbiBvYmplY3RTdG9yZS4KLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIC8vIFdlIGNvdWxkIHVzZSB0aGVzZSB2YWx1ZXMgaWYgd2Ugd2FudGVk
IHRvLgotICAgIHZhciBrZXkgPSBjdXJzb3Iua2V5OwotICAgIHZhciB2YWx1ZSA9IGN1cnNvci52
YWx1ZTsKLQotICAgIC8vIGN1cnNvci5jb3VudCBpcyBwcm9iYWJseSBnb2luZyB0byBiZSByZW1v
dmVkLgotICAgIC8vIGN1cnNvci51cGRhdGUgYW5kIC5yZW1vdmUgYXJlIG5vdCB5ZXQgaW1wbGVt
ZW50ZWQgaW4gQ2hyb21pdW0vV2ViS2l0LgotCi0gICAgLy8gY3Vyc29yLmNvbnRpbnVlIHdpbGwg
cmV1c2UgdGhlIHNhbWUgcmVxdWVzdCBvYmplY3QgYXMgd2hhdCBvcGVuQ3Vyc29yIHJldHVybmVk
LiBJbiB0aGUgZnV0dXJlLAotICAgIC8vIHdlIE1BWSBwcmlvcml0aXplIC5jb250aW51ZSgpIGNh
bGxzIGFoZWFkIG9mIGFsbCBvdGhlciBhc3luYyBvcGVyYXRpb25zIHF1ZXVlZCB1cC4gVGhpcyB3
aWxsCi0gICAgLy8gaW50cm9kdWNlIGEgbGV2ZWwgb2Ygbm9uLWRldGVybWluaXNtIGJ1dCBzaG91
bGQgc3BlZWQgdGhpbmdzIHVwLiBNb3ppbGxhIGhhcyBhbHJlYWR5IGltcGxlbWVudGVkCi0gICAg
Ly8gdGhpcyBub24tc3RhbmRhcmQgYmVoYXZpb3IsIGZyb20gd2hhdCBJJ3ZlIGhlYWQuCi0gICAg
ZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgpOwotfQotCi1mdW5jdGlvbiBjdXJzb3JDb21w
bGV0ZShvYmplY3RTdG9yZSkKLXsKLSAgICAvLyBXaGlsZSBzdGlsbCBpbiB0aGUgc2FtZSB0cmFu
c2FjdGlvbiwgbGV0J3Mgbm93IGRvIGEgbG9va3VwIG9uIHRoZSBsbmFtZSBpbmRleC4KLSAgICB2
YXIgbG5hbWUgPSBvYmplY3RTdG9yZS5pbmRleCgibG5hbWUiKTsKLQotICAgIC8vIE5vdGUgdGhh
dCB0aGUgc3BlYyBoYXMgbm90IGJlZW4gdXBkYXRlZCB5ZXQsIGJ1dCBpbnN0ZWFkIG9mIGdldCBh
bmQgZ2V0T2JqZWN0LCB3ZSBub3cKLSAgICAvLyBoYXZlIGdldEtleSBhbmQgZ2V0LiBUaGUgZm9y
bWVyIHJldHVybnMgdGhlIG9iamVjdFN0b3JlJ3Mga2V5IHRoYXQgY29ycmVzcG9uZHMgdG8gdGhl
IGtleQotICAgIC8vIGluIHRoZSBpbmRleC4gZ2V0IHJldHVybnMgdGhlIG9iamVjdFN0b3JlJ3Mg
dmFsdWUgdGhhdCBjb3JyZXNwb25kcyB0byB0aGUga2V5IGluIHRoZQotICAgIC8vIGluZGV4Lgot
ICAgIHZhciByZXF1ZXN0ID0gbG5hbWUuZ2V0S2V5KCJEb2UiKTsKLSAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IG9uSW5kZXhHZXRTdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvcjsKLX0KLQotZnVuY3Rpb24gb25JbmRleEdldFN1Y2Nlc3MoKQotewotICAgIC8vIEJl
Y2F1c2Ugd2UgZGlkICJnZXRLZXkiIHRoZSByZXN1bHQgaXMgdGhlIG9iamVjdFN0b3JlJ3Mga2V5
LgotICAgIGlmIChldmVudC50YXJnZXQucmVzdWx0ICE9PSAxKQotICAgICAgICBsb2dFcnJvcigi
U29tZXRoaW5nIHdlbnQgd3JvbmcuIik7Ci0KLSAgICAvLyBTaW1pbGFybHksIGluZGV4ZXMgaGF2
ZSBvcGVuQ3Vyc29yIGFuZCBvcGVuS2V5Q3Vyc29yLiBXZSdsbCB0cnkgYSBmZXcgb2YgdGhlbSB3
aXRoIHZhcmlvdXMKLSAgICAvLyBkaWZmZXJlbnQgSURCS2V5UmFuZ2VzIGp1c3QgdG8gZGVtb25z
dHJhdGUgaG93IHRvIHVzZSB0aGVtLCBidXQgd2Ugd29uJ3QgYm90aGVyIHRvIGhhbmRsZQotICAg
IC8vIHRoZSBvbnN1Y2Nlc3MgY29uZGl0aW9ucy4KLSAgICB2YXIgbG5hbWUgPSBldmVudC50YXJn
ZXQuc291cmNlOwotICAgIGxuYW1lLm9wZW5DdXJzb3IoSURCS2V5UmFuZ2UubG93ZXJCb3VuZCgi
RG9lIiwgZmFsc2UpLCAnbmV4dHVuaXF1ZScpOwotICAgIGxuYW1lLm9wZW5DdXJzb3IobnVsbCwg
J3ByZXZ1bmlxdWUnKTsKLSAgICBsbmFtZS5vcGVuQ3Vyc29yKElEQktleVJhbmdlLnVwcGVyQm91
bmQoIlpaWloiKSk7Ci0gICAgbG5hbWUub3BlbkN1cnNvcihJREJLZXlSYW5nZS5vbmx5KCJEb2Ui
KSwgJ3ByZXYnKTsKLSAgICBsbmFtZS5vcGVuQ3Vyc29yKCk7Ci0gICAgbG5hbWUub3BlbktleUN1
cnNvcigpOwotCi0gICAgLy8gV2Ugc2hvdWxkIGJlIGFibGUgdG8gcmVxdWVzdCB0aGUgdHJhbnNh
Y3Rpb24gdmlhIGV2ZW50LnRyYW5zYWN0aW9uIGZyb20gd2l0aGluIGFueSBldmVudCBoYW5kbGVy
Ci0gICAgLy8gKGxpa2UgdGhpcyBvbmUpIGJ1dCB0aGlzIGlzIG5vdCB5ZXQgaW1wbGVtZW50ZWQg
aW4gQ2hyb21pdW0vV2ViS2l0LiBBcyBhIHdvcmstYXJvdW5kLCB3ZSB1c2UgdGhlCi0gICAgLy8g
Z2xvYmFsICJjdXJyZW50VHJhbnNhY3Rpb24iIHZhcmlhYmxlIHdlIHNldCBhYm92ZS4KLSAgICBj
dXJyZW50VHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IG9uQWxsRG9uZTsKLX0KLQotZnVuY3Rpb24g
b25BbGxEb25lKCkKLXsKLSAgICBsb2coIkV2ZXJ5dGhpbmcgd29ya2VkISIpOwotICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19Ci0K
LS8vIFRoZSB3YXkgc2V0VmVyc2lvbiBpcyBzdXBwb3NlZCB0byB3b3JrOgotLy8gICBUbyBrZWVw
IHRoaW5ncyBzaW1wbGUgdG8gYmVnaW4gd2l0aCwgb2JqZWN0U3RvcmVzIGFuZCBpbmRleGVzIGNh
biBvbmx5IGJlIGNyZWF0ZWQgaW4gYSBzZXRWZXJzaW9uCi0vLyB0cmFuc2FjdGlvbiBhbmQgb25l
IGNhbiBvbmx5IHJ1biBpZiBubyBvdGhlciBjb25uZWN0aW9ucyBhcmUgb3BlbiB0byB0aGUgZGF0
YWJhc2UuIFRoaXMgaXMgZGVzaWduZWQKLS8vIHRvIHNhdmUgYXBwIGRldmVsb3BlcnMgZnJvbSBo
YXZpbmcgYW4gb2xkZXIgdmVyaXNvbiBvZiBhIHdlYiBwYWdlIHRoYXQgZXhwZWN0cyBhIGNlcnRh
aW4gc2V0IG9mCi0vLyBvYmplY3RTdG9yZXMgYW5kIGluZGV4ZXMgZnJvbSBicmVha2luZyBpbiBv
ZGQgd2F5cyB3aGVuIHRoaW5ncyBnZXQgY2hhbmdlZCBvdXQgZnJvbSB1bmRlcm5laXRoIGl0Lgot
Ly8gSW4gdGhlIGZ1dHVyZSwgd2UnbGwgcHJvYmFibHkgYWRkIGEgbW9yZSBhZHZhbmNlZCBtZWNo
YW5pc20sIGJ1dCB0aGlzIGlzIGl0IGZvciBub3cuCi0vLyAgIEJlY2F1c2UgYSBzZXRWZXJzaW9u
IHRyYW5zYWN0aW9uIGNvdWxkIHN0YWxsIG91dCBuZWFybHkgZm9yZXZlciB1bnRpbCB0aGUgdXNl
ciBjbG9zZXMgd2luZG93cywKLS8vIHdlJ3ZlIGFkZGVkIGEgImJsb2NrZWQiIGV2ZW50IHRvIHRo
ZSByZXF1ZXN0IG9iamVjdCByZXR1cm5lZCBieSBzZXRWZXJzaW9uLiBUaGlzIHdpbGwgZmlyZSBp
ZiB0aGUKLS8vIHNldFZlcnNpb24gdHJhbnNhY3Rpb24gY2FuJ3QgYmVnaW4gYmVjYXVzZSBvdGhl
ciB3aW5kb3dzIGhhdmUgYW4gb3BlbiBjb25uZWN0aW9uLiBUaGUgYXBwIGNhbiB0aGVuCi0vLyBl
aXRoZXIgcG9wIHNvbWV0aGluZyB1cCB0ZWxsaW5nIHRoZSB1c2VyIHRvIGNsb3NlIHdpbmRvd3Mg
b3IgaXQgY2FuIHRlbGwgdGhlIG90aGVyIHdpbmRvd3MgdG8gY2FsbAotLy8gLmNsb3NlKCkgb24g
dGhlaXIgZGF0YWJhc2UgaGFuZGxlLiAuY2xvc2UoKSBoYWx0cyBhbnkgbmV3IHRyYW5zYWN0aW9u
cyBmcm9tIHN0YXJ0aW5nIGFuZCB3YWl0cyBmb3IKLS8vIHRoZSBleGlzdGluZyBvbmVzIHRvIGZp
bmlzaC4gSXQgdGhlbiBjbG9zZXMgdGhlIGNvbm5lY3Rpb24gYW5kIGFueSBpbmRleGVkREIgY2Fs
bHMgYWZ0ZXJ3YXJkcyBhcmUKLS8vIGludmFsaWQgKHRoZXknbGwgcHJvYmFibHkgdGhyb3csIGJ1
dCB0aGlzIGlzbid0IHNwZWNpZmllZCB5ZXQpLiBXZSBtYXkgc3BlY2lmeSAuY2xvc2UoKSB0byBy
ZXR1cm4KLS8vIGFuIElEQlJlcXVlc3Qgb2JqZWN0IHNvIHRoYXQgd2UgY2FuIGZpcmUgdGhlIG9u
c3VjY2VzcyB3aGVuIHRoZSBjbG9zZSBjb21wbGV0ZXMuCi0vLyAgIE9uY2UgaW5zaWRlIGEgc2V0
VmVyc2lvbiB0cmFuc2FjdGlvbiwgeW91IGNhbiBkbyBhbnl0aGluZyB5b3UnZCBsaWtlLiBUaGUg
b25lIGNvbm5lY3Rpb24gd2hpY2gKLS8vIHdhcyBhbGxvd2VkIHRvIHN0YXkgb3BlbiB0byBjb21w
bGV0ZSB0aGUgc2V0VmVyc2lvbiB0cmFuc2FjdGlvbiB3aWxsIHN0YXkgYWxpdmUuIE11bHRpcGxl
Ci0vLyBzZXRWZXJzaW9uIHRyYW5zYWN0aW9ucyBjYW4gYmUgcXVldWVkIHVwIGF0IG9uY2UgYW5k
IHdpbGwgZmlyZSBpbiB0aGUgb3JkZXIgcXVldWVkICh0aG91Z2gKLS8vIHRoaXMgb2J2aW91c2x5
IG9ubHkgd29ya3MgaWYgdGhleSdyZSBxdWV1ZWQgaW4gdGhlIHNhbWUgcGFnZSkuCi0vLwotLy8g
VGhlIGN1cnJlbnQgc3RhdHVzIG9mIHNldFZlcnNpb24gaW4gQ2hyb21pdW0vV2ViS2l0OgotLy8g
ICBJbiBDaHJvbWl1bS9XZWJLaXQgd2UgY3VycmVudGx5IGRvbid0IGVuZm9yY2UgdGhlICJhbGwg
Y29ubmVjdGlvbnMgbXVzdCBiZSBjbG9zZWQgYmVmb3JlIGEKLS8vIHNldFZlcnNpb24gdHJhbnNh
Y3Rpb24gc3RhcnRzIiBydWxlLiBXZSBhbHNvIGRvbid0IGltcGxlbWVudCBkYXRhYmFzZS5jbG9z
ZSgpIG9yIGhhdmUgYSBibG9ja2VkCi0vLyBldmVudCBvbiB0aGUgcmVxdWVzdCAuc2V0VmVyc2lv
bigpIHJldHVybnMuCi0vLwotLy8gVGhlIGN1cnJlbnQgc3RhdHVzIG9mIHdvcmtlcnM6Ci0vLyAg
IENocm9taXVtL1dlYktpdCBkbyBub3QgeWV0IHN1cHBvcnQgd29ya2VycyB1c2luZyBJbmRleGVk
REIuIFN1cHBvcnQgZm9yIHRoZSBhc3luYyBpbnRlcmZhY2UKLS8vIHdpbGwgbGlrZWx5IGNvbWUg
YmVmb3JlIHRoZSBzeW5jIGludGVyZmFjZS4gRm9yIG5vdywgYSB3b3JrLWFyb3VuZCBpcyB1c2lu
ZyBwb3N0TWVzc2FnZSB0byB0ZWxsCi0vLyB0aGUgcGFnZSB3aGF0IHRvIGRvIG9uIHRoZSB3b3Jr
ZXIncyBiZWhhbGYgaW4gYW4gYWQtaG9jIG1hbm5lci4gQW55dGhpbmcgdGhhdCBjYW4gYmUgc2Vy
aWFsaXplZAotLy8gdG8gZGlzayBjYW4gYmUgc2VyaWFsaXplZCBmb3IgcG9zdE1lc3NhZ2UuCi0K
LTwvc2NyaXB0PgotPGJvZHkgb25sb2FkPSJzdGFydCgpIj4KLVBsZWFzZSB2aWV3IHNvdXJjZSBm
b3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB3aGF0IHRoaXMgaXMgZG9pbmcgYW5kIHdoeS4uLjxicj48
YnI+Ci08ZGl2IGlkPSJsb2dnZXIiPjwvZGl2PgotPC9ib2R5PgotPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174285</attachid>
            <date>2012-11-14 16:47:03 -0800</date>
            <delta_ts>2012-11-14 17:19:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102267-20121114164502.patch</filename>
            <type>text/plain</type>
            <size>67543</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0NjIyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMjE2NTAyYmM0ZTVmODNmMzdlZTg3
OWE4MTgxYTZlZmYzNjZiZWU5My4uZDhjMjRhNDA3Mjg4YWFlMTczM2I2YjdlYThlM2QxODk5ZTUy
ZTc1MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEyLTExLTE0ICBEYXZpZCBHcm9nYW4gIDxk
Z3JvZ2FuQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IFRlc3QgY29udmVyc2lv
bnMgYmF0Y2ggNAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTAyMjY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhlc2UgYXJlIHRlc3RzIHRoYXQgZG9uJ3QgaGF2ZSB0aGUganMgZmlsZSBpbiByZXNvdXJj
ZXMuIFRoZSBvbmx5CisgICAgICAgIGludGVyZXN0aW5nIGJpdCBpcyB0aGF0IGxhenktaW5kZXgt
cG9wdWxhdGlvbiB1bmNvdmVyZWQgYSBwb3RlbnRpYWwgYnVnLgorCisgICAgICAgIEkgdGhpbmsg
dHV0b3JpYWwuaHRtbCBoYXMgb3V0bGl2ZWQgaXRzIHVzZWZ1bG5lc3Mgbm93IHRoYXQgdGhlcmUg
YXJlCisgICAgICAgIG1vcmUgdHV0b3JpYWxzIG9uIHRoZSB3ZWIuIEl0IHdhcyB2ZXJ5IG91dGRh
dGVkLiBJdCBpcyBkZWxldGVkIGluCisgICAgICAgIHRoaXMgcGF0Y2guCisKKyAgICAgICAgKiBz
dG9yYWdlL2luZGV4ZWRkYi9kZWxldGVkYXRhYmFzZS10cmFuc2FjdGlvbi1leHBlY3RlZC50eHQ6
CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvZGVsZXRlZGF0YWJhc2UtdHJhbnNhY3Rpb24u
aHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9kb250LWNvbW1pdC1vbi1ibG9ja2Vk
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9kb250LWNvbW1pdC1v
bi1ibG9ja2VkLmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbGF6eS1pbmRleC1w
b3B1bGF0aW9uLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9sYXp5
LWluZGV4LXBvcHVsYXRpb24uaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb3pp
bGxhL2luZGV4LXByZXYtbm8tZHVwbGljYXRlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdG9y
YWdlL2luZGV4ZWRkYi9tb3ppbGxhL2luZGV4LXByZXYtbm8tZHVwbGljYXRlLmh0bWw6CisgICAg
ICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvb2JqZWN0LWlkZW50aXR5
LmpzOgorICAgICAgICAgIFRlc3QgYWRkZWQgaGVyZSB0byByZXBsYWNlIHRlc3QgY292ZXJlZCBp
biB0dXRvcmlhbC5odG1sCisKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9ub2Jsb2JzLWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9ub2Jsb2JzLmh0bWw6Cisg
ICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RvbnQtY29tbWl0LW9uLWJsb2Nr
ZWQtd29ya2VyLmpzOgorICAgICAgICAob25TZXRWZXJzaW9uU3VjY2Vzcyk6CisgICAgICAgICog
c3RvcmFnZS9pbmRleGVkZGIvc3RydWN0dXJlZC1jbG9uZS1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogc3RvcmFnZS9pbmRleGVkZGIvc3RydWN0dXJlZC1jbG9uZS5odG1sOgorICAgICAgICAqIHN0
b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWNvbXBsZXRlLXdpdGgtanMtcmVjdXJzaW9uLWNy
b3NzLWZyYW1lLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi90cmFu
c2FjdGlvbi1jb21wbGV0ZS13aXRoLWpzLXJlY3Vyc2lvbi1jcm9zcy1mcmFtZS5odG1sOgorICAg
ICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWNvbXBsZXRlLXdpdGgtanMtcmVj
dXJzaW9uLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi90cmFuc2Fj
dGlvbi1jb21wbGV0ZS13aXRoLWpzLXJlY3Vyc2lvbi5odG1sOgorICAgICAgICAqIHN0b3JhZ2Uv
aW5kZXhlZGRiL3R1dG9yaWFsLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBzdG9y
YWdlL2luZGV4ZWRkYi90dXRvcmlhbC5odG1sOiBSZW1vdmVkLgorCiAyMDEyLTExLTEzICBEYXZp
ZCBHcm9nYW4gIDxkZ3JvZ2FuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBJbmRleGVkREI6IHRl
c3QgY29udmVyc2lvbiBiYXRjaCAzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9kZWxldGVkYXRhYmFzZS10cmFuc2FjdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kZWxldGVkYXRhYmFzZS10cmFuc2FjdGlvbi1leHBlY3Rl
ZC50eHQKaW5kZXggNmZlMjQ5NmM2NGY5OThkZjY3YjhjNTQ3NWNjZGM1ZjRkZTdiMzg1NC4uNTlk
YzViOTAyZmVkZTQwOWViMDNiMjg3ZWFkY2ZlNzA5YzQ2YTk3YyAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGVsZXRlZGF0YWJhc2UtdHJhbnNhY3Rpb24tZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RlbGV0ZWRhdGFiYXNl
LXRyYW5zYWN0aW9uLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDMgQEAKLUNPTlNPTEUgTUVTU0FH
RTogVGhlIHNldFZlcnNpb24oKSBtZXRob2QgaXMgbm9uLXN0YW5kYXJkIGFuZCB3aWxsIGJlIHJl
bW92ZWQuIFVzZSB0aGUgInVwZ3JhZGVuZWVkZWQiIGV2ZW50IGluc3RlYWQuCiBFbnN1cmUgZGVs
ZXRlRGF0YWJhc2UoKSBjYW4gcnVuIGNvbmN1cnJlbnRseSB3aXRoIHRyYW5zYWN0aW9ucyBpbiBv
dGhlciBkYXRhYmFzZXMKIAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgpAQCAtNiwxNCArNSw5
IEBAIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFCiAKIGluZGV4ZWREQiA9IHNlbGYuaW5kZXhlZERC
IHx8IHNlbGYud2Via2l0SW5kZXhlZERCIHx8IHNlbGYubW96SW5kZXhlZERCIHx8IHNlbGYubXNJ
bmRleGVkREIgfHwgc2VsZi5PSW5kZXhlZERCOwogCi1kYm5hbWUxID0gJ2RlbGV0ZWRhdGFiYXNl
LXRyYW5zYWN0aW9uJwotZGJuYW1lMiA9ICdkZWxldGVkYXRhYmFzZS10cmFuc2FjdGlvbjInCi0K
LVByZXBhcmUgZGF0YWJhc2U6Ci1pbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoZGJuYW1lMSkKLXJl
cXVlc3QgPSBpbmRleGVkREIub3BlbihkYm5hbWUxKQotZGIgPSByZXF1ZXN0LnJlc3VsdAotZGIu
c2V0VmVyc2lvbignMScpCitkYm5hbWUgPSAiZGVsZXRlZGF0YWJhc2UtdHJhbnNhY3Rpb24uaHRt
bCIKK2luZGV4ZWREQi5kZWxldGVEYXRhYmFzZShkYm5hbWUpCitpbmRleGVkREIub3BlbihkYm5h
bWUpCiBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKQogCiBTdGFydCBhIHRyYW5zYWN0aW9u
IGFnYWluc3QgdGhlIGZpcnN0IGRhdGFiYXNlOgpAQCAtMjEsNiArMTUsNyBAQCB0cmFucyA9IGRi
LnRyYW5zYWN0aW9uKCdzdG9yZScsICdyZWFkb25seScpCiB0cmFucy5vYmplY3RTdG9yZSgnc3Rv
cmUnKS5nZXQoMCkKIAogRGVsZXRlIGEgZGlmZmVyZW50IGRhdGFiYXNlOgorZGJuYW1lMiA9IGRi
bmFtZSArICcyJwogaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKGRibmFtZTIpCiBQQVNTIHN1Y2Nl
c3MgZXZlbnQgd2FzIGZpcmVkIGF0IGRlbGV0ZSByZXF1ZXN0CiBQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9k
ZWxldGVkYXRhYmFzZS10cmFuc2FjdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvZGVsZXRlZGF0YWJhc2UtdHJhbnNhY3Rpb24uaHRtbAppbmRleCBjZTQyYTFmOWY3NTkz
NTZjN2YwNDAxMzJhYjY2NzA3OWFhYjE0NzcxLi5hMTk3Y2M1YmZlOGZkZTk3MzUwZDA4ZWMwZjY4
ZmM1ODU1YmNiYzkzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9k
ZWxldGVkYXRhYmFzZS10cmFuc2FjdGlvbi5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL2RlbGV0ZWRhdGFiYXNlLXRyYW5zYWN0aW9uLmh0bWwKQEAgLTMsMjggKzMsMTIg
QEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+
CiBkZXNjcmlwdGlvbigiRW5zdXJlIGRlbGV0ZURhdGFiYXNlKCkgY2FuIHJ1biBjb25jdXJyZW50
bHkgd2l0aCB0cmFuc2FjdGlvbnMgaW4gb3RoZXIgZGF0YWJhc2VzIik7Ci1mdW5jdGlvbiB0ZXN0
KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0gICAgZXZhbEFuZExvZygiZGJu
YW1lMSA9ICdkZWxldGVkYXRhYmFzZS10cmFuc2FjdGlvbiciKTsKLSAgICBldmFsQW5kTG9nKCJk
Ym5hbWUyID0gJ2RlbGV0ZWRhdGFiYXNlLXRyYW5zYWN0aW9uMiciKTsKLSAgICBkZWJ1ZygiIik7
Ci0gICAgZGVidWcoIlByZXBhcmUgZGF0YWJhc2U6Iik7CiAKLSAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygiaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKGRibmFtZTEpIik7Ci0gICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJl
cXVlc3QgPSBpbmRleGVkREIub3BlbihkYm5hbWUxKSIpOwotICAgICAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgZXZhbEFuZExvZygiZGIgPSByZXF1ZXN0
LnJlc3VsdCIpOwotICAgICAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNp
b24oJzEnKSIpOwotICAgICAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7
Ci0gICAgICAgICAgICAgICAgdHJhbnMgPSByZXF1ZXN0LnJlc3VsdDsKLSAgICAgICAgICAgICAg
ICBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKSIpOwotICAgICAgICAg
ICAgICAgIHRyYW5zLm9uY29tcGxldGUgPSBzdGFydFRyYW5zYWN0aW9uOwotICAgICAgICAgICAg
fTsKLSAgICAgICAgfTsKLSAgICB9OworaW5kZXhlZERCVGVzdChwcmVwYXJlRGF0YWJhc2UsIHN0
YXJ0VHJhbnNhY3Rpb24pOworZnVuY3Rpb24gcHJlcGFyZURhdGFiYXNlKCkKK3sKKyAgICBkYiA9
IGV2ZW50LnRhcmdldC5yZXN1bHQ7CisgICAgZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3Rv
cmUoJ3N0b3JlJykiKTsKIH0KIAogZnVuY3Rpb24gc3RhcnRUcmFuc2FjdGlvbigpIHsKQEAgLTM1
LDYgKzE5LDcgQEAgZnVuY3Rpb24gc3RhcnRUcmFuc2FjdGlvbigpIHsKIAogICAgIGRlYnVnKCIi
KTsKICAgICBkZWJ1ZygiRGVsZXRlIGEgZGlmZmVyZW50IGRhdGFiYXNlOiIpOworICAgIGV2YWxB
bmRMb2coImRibmFtZTIgPSBkYm5hbWUgKyAnMiciKTsKICAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygiaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKGRibmFtZTIpIik7CiAgICAgcmVxdWVzdC5vbmJs
b2NrZWQgPSB1bmV4cGVjdGVkQmxvY2tlZENhbGxiYWNrOwogICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwpAQCAtNDUsNiArMzAsNSBAQCBmdW5jdGlvbiBzdGFy
dFRyYW5zYWN0aW9uKCkgewogICAgIHRyYW5zLm9uY29tcGxldGUgPSBmaW5pc2hKU1Rlc3Q7CiB9
CiAKLXRlc3QoKTsKIDwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9kb250LWNvbW1pdC1vbi1ibG9ja2VkLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RvbnQtY29tbWl0LW9uLWJsb2NrZWQtZXhwZWN0
ZWQudHh0CmluZGV4IDJiNGJmM2IyM2Y2MjlkZjg1ODI3YjRkY2E2MDIxZDlkYzk0MzMxNmYuLmU2
YmJhZWVlZjg4NTRlZmIyMmY3MTk0YTY4NDM3NGVkNmJlY2QwMzQgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RvbnQtY29tbWl0LW9uLWJsb2NrZWQtZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RvbnQtY29tbWl0LW9uLWJs
b2NrZWQtZXhwZWN0ZWQudHh0CkBAIC0xLDUgKzEsMyBAQAotQ09OU09MRSBNRVNTQUdFOiBUaGUg
c2V0VmVyc2lvbigpIG1ldGhvZCBpcyBub24tc3RhbmRhcmQgYW5kIHdpbGwgYmUgcmVtb3ZlZC4g
VXNlIHRoZSAidXBncmFkZW5lZWRlZCIgZXZlbnQgaW5zdGVhZC4KLUNPTlNPTEUgTUVTU0FHRTog
VGhlIHNldFZlcnNpb24oKSBtZXRob2QgaXMgbm9uLXN0YW5kYXJkIGFuZCB3aWxsIGJlIHJlbW92
ZWQuIFVzZSB0aGUgInVwZ3JhZGVuZWVkZWQiIGV2ZW50IGluc3RlYWQuCiBSZWdyZXNzaW9uIHRl
c3QgZm9yIFdLODI2NzggLSBkb24ndCBjb21taXQgYWZ0ZXIgYSBibG9ja2VkIGV2ZW50CiAKIE9u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KQEAgLTcsMTMgKzUsMTAgQEAgT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUKIAogaW5kZXhlZERCID0gc2VsZi5pbmRleGVkREIgfHwgc2VsZi53ZWJraXRJbmRl
eGVkREIgfHwgc2VsZi5tb3pJbmRleGVkREIgfHwgc2VsZi5tc0luZGV4ZWREQiB8fCBzZWxmLk9J
bmRleGVkREI7CiAKLVByZXBhcmUgRGF0YWJhc2UKLXJlcXVlc3QgPSBpbmRleGVkREIuZGVsZXRl
RGF0YWJhc2UoJ2RvbnQtY29tbWl0LW9uLWJsb2NrZWQnKQotcmVxdWVzdCA9IGluZGV4ZWREQi5v
cGVuKCdkb250LWNvbW1pdC1vbi1ibG9ja2VkJykKLWRiID0gcmVxdWVzdC5yZXN1bHQKK2RibmFt
ZSA9ICJkb250LWNvbW1pdC1vbi1ibG9ja2VkLmh0bWwiCitpbmRleGVkREIuZGVsZXRlRGF0YWJh
c2UoZGJuYW1lKQoraW5kZXhlZERCLm9wZW4oZGJuYW1lKQogZGIub252ZXJzaW9uY2hhbmdlID0g
b25WZXJzaW9uQ2hhbmdlCi1QQVNTIGRiLnZlcnNpb24gaXMgMQotZGIuc2V0VmVyc2lvbignMScp
CiBzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZTEnKQogCiBob2xkQ29ubmVjdGlv
bigpOgpAQCAtMjMsMTIgKzE4LDEwIEBAIFN0YXJ0aW5nIHdvcmtlcjogcmVzb3VyY2VzL2RvbnQt
Y29tbWl0LW9uLWJsb2NrZWQtd29ya2VyLmpzCiBbV29ya2VyXSBpbmRleGVkREIgPSBzZWxmLmlu
ZGV4ZWREQiB8fCBzZWxmLndlYmtpdEluZGV4ZWREQiB8fCBzZWxmLm1vekluZGV4ZWREQiB8fCBz
ZWxmLm1zSW5kZXhlZERCIHx8IHNlbGYuT0luZGV4ZWREQjsKIFtXb3JrZXJdIAogW1dvcmtlcl0g
b3BlbmluZyBkYXRhYmFzZSBjb25uZWN0aW9uCi1bV29ya2VyXSByZXF1ZXN0ID0gaW5kZXhlZERC
Lm9wZW4oJ2RvbnQtY29tbWl0LW9uLWJsb2NrZWQnKQotW1dvcmtlcl0gZGIgPSByZXF1ZXN0LnJl
c3VsdAorW1dvcmtlcl0gcmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKCdkb250LWNvbW1pdC1vbi1i
bG9ja2VkLmh0bWwnLCAyKQogW1dvcmtlcl0gc3RhdGUgPSAnc2V0dmVyc2lvbicKLVtXb3JrZXJd
IHJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKDIpCiBbV29ya2VyXSByZXF1ZXN0Lm9uYmxvY2tlZCA9
IG9uU2V0VmVyc2lvbkJsb2NrZWQKLVtXb3JrZXJdIHJlcXVlc3Qub25zdWNjZXNzID0gb25TZXRW
ZXJzaW9uU3VjY2VzcworW1dvcmtlcl0gcmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBvblNldFZl
cnNpb25TdWNjZXNzCiBbV29ya2VyXSBzcGlubmluZyBmb3IgMTAwbXMgdG8gbGV0IGV2ZW50cyBi
ZSBxdWV1ZWQgYnV0IHByZXZlbnQgZGlzcGF0Y2gKIFtXb3JrZXJdIGRvbmUgc3Bpbm5pbmcKIFtX
b3JrZXJdIApAQCAtMzcsMTIgKzMwLDExIEBAIFBBU1MgW1dvcmtlcl0gc3RhdGUgaXMgInNldHZl
cnNpb24iCiBbV29ya2VyXSBzdGF0ZSA9ICdibG9ja2VkJwogW1dvcmtlcl0gCiBbV29ya2VyXSBv
blNldFZlcnNpb25TdWNjZXNzKCk6CitbV29ya2VyXSBkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQK
IFBBU1MgW1dvcmtlcl0gc3RhdGUgaXMgImJsb2NrZWQiCiBbV29ya2VyXSBzdGF0ZSA9ICdzdWNj
ZXNzJwogW1dvcmtlcl0gY3JlYXRpbmcgb2JqZWN0IHN0b3JlIC0gd2lsbCBmYWlsIGlmIHRyYW5z
YWN0aW9uIGNvbW1pdGVkIGFmdGVyIGJsb2NrZWQgZXZlbnQKIFtXb3JrZXJdIGRiLmNyZWF0ZU9i
amVjdFN0b3JlKCdzdG9yZTInKQotW1dvcmtlcl0gdHJhbnNhY3Rpb24gPSByZXF1ZXN0LnJlc3Vs
dAotW1dvcmtlcl0gdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IG9uVHJhbnNhY3Rpb25Db21wbGV0
ZQogW1dvcmtlcl0gCiBbV29ya2VyXSBvblRyYW5zYWN0aW9uQ29tcGxldGUKIFBBU1MgW1dvcmtl
cl0gc3RhdGUgaXMgInN1Y2Nlc3MiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9kb250LWNvbW1pdC1vbi1ibG9ja2VkLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9kb250LWNvbW1pdC1vbi1ibG9ja2VkLmh0bWwKaW5kZXggMTI0NjA5MjYwYjk5
NmQ4OTVmMmZmN2I3MDkzNmZmOWNhMGQ2M2Q4NC4uM2IxOTRiZmE5ZWVlZmRmZDQ1NjdjMjM1NDg0
Y2YyNTQzMDY4Zjg4MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
ZG9udC1jb21taXQtb24tYmxvY2tlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL2RvbnQtY29tbWl0LW9uLWJsb2NrZWQuaHRtbApAQCAtOCwzNiArOCwxMiBAQAogCiBk
ZXNjcmlwdGlvbigiUmVncmVzc2lvbiB0ZXN0IGZvciBXSzgyNjc4IC0gZG9uJ3QgY29tbWl0IGFm
dGVyIGEgYmxvY2tlZCBldmVudCIpOwogCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVW
ZW5kb3JQcmVmaXhlcygpOwotICAgIHByZXBhcmVEYXRhYmFzZSgpOwotfQotCitpbmRleGVkREJU
ZXN0KHByZXBhcmVEYXRhYmFzZSwgaG9sZENvbm5lY3Rpb24pOwogZnVuY3Rpb24gcHJlcGFyZURh
dGFiYXNlKCkKIHsKLSAgICBkZWJ1ZygiUHJlcGFyZSBEYXRhYmFzZSIpOwotICAgIGV2YWxBbmRM
b2coInJlcXVlc3QgPSBpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoJ2RvbnQtY29tbWl0LW9uLWJs
b2NrZWQnKSIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oZSkgewotICAgICAgICBldmFsQW5k
TG9nKCJyZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oJ2RvbnQtY29tbWl0LW9uLWJsb2NrZWQnKSIp
OwotICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAg
ICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICBldmFs
QW5kTG9nKCJkYiA9IHJlcXVlc3QucmVzdWx0Iik7Ci0gICAgICAgICAgICBkYi5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgICAgICAgICBldmFsQW5kTG9nKCJkYi5vbnZl
cnNpb25jaGFuZ2UgPSBvblZlcnNpb25DaGFuZ2UiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJk
Yi52ZXJzaW9uIiwgIjEiKTsKLSAgICAgICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5z
ZXRWZXJzaW9uKCcxJykiKTsKLSAgICAgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOwotICAgICAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlv
bihlKSB7Ci0gICAgICAgICAgICAgICAgdmFyIHRyYW5zID0gcmVxdWVzdC5yZXN1bHQ7Ci0gICAg
ICAgICAgICAgICAgZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3Rv
cmUxJykiKTsKLSAgICAgICAgICAgICAgICB0cmFucy5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Ci0gICAgICAgICAgICAgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9y
dENhbGxiYWNrOwotICAgICAgICAgICAgICAgIHRyYW5zLm9uY29tcGxldGUgPSBob2xkQ29ubmVj
dGlvbjsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0gICAgfTsKKyAgICBkYiA9IGV2ZW50
LnRhcmdldC5yZXN1bHQ7CisgICAgZXZhbEFuZExvZygiZGIub252ZXJzaW9uY2hhbmdlID0gb25W
ZXJzaW9uQ2hhbmdlIik7CisgICAgZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RT
dG9yZSgnc3RvcmUxJykiKTsKIH0KIAogZnVuY3Rpb24gaG9sZENvbm5lY3Rpb24oKQpAQCAtNTUs
OCArMzEsNiBAQCBmdW5jdGlvbiBvblZlcnNpb25DaGFuZ2UoZSkKICAgICBkYi5jbG9zZSgpOwog
fQogCi10ZXN0KCk7Ci0KIDwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9sYXp5LWluZGV4LXBvcHVsYXRpb24tZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbGF6eS1pbmRleC1wb3B1bGF0
aW9uLWV4cGVjdGVkLnR4dAppbmRleCA2Y2U4OGRiMWE0NDc5MzY5MGQ1N2FkZDNlNTljMWQ5MTZm
YjBkYjk3Li44MGQzNDUxMDM5NmMyYzNlMjExNzg2ZTk0ZTg1Zjk2ZmJkOTg4NzkzIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9sYXp5LWluZGV4LXBvcHVsYXRpb24t
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2xhenktaW5k
ZXgtcG9wdWxhdGlvbi1leHBlY3RlZC50eHQKQEAgLTEsNCArMSwzIEBACi1DT05TT0xFIE1FU1NB
R0U6IFRoZSBzZXRWZXJzaW9uKCkgbWV0aG9kIGlzIG5vbi1zdGFuZGFyZCBhbmQgd2lsbCBiZSBy
ZW1vdmVkLiBVc2UgdGhlICJ1cGdyYWRlbmVlZGVkIiBldmVudCBpbnN0ZWFkLgogVmVyaWZ5IGVk
Z2UgY2FzZXMgdGhhdCBsYXp5IGluZGV4IHBvcHVsYXRpb24gaW4gYW4gSW5kZXhlZERCIGltcGxl
bWVudGF0aW9uIG1pZ2h0IHJldmVhbC4KIAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgpAQCAt
NiwxNCArNSwxMyBAQCBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURQogCiBpbmRleGVkREIgPSBzZWxm
LmluZGV4ZWREQiB8fCBzZWxmLndlYmtpdEluZGV4ZWREQiB8fCBzZWxmLm1vekluZGV4ZWREQiB8
fCBzZWxmLm1zSW5kZXhlZERCIHx8IHNlbGYuT0luZGV4ZWREQjsKIAotaW5kZXhlZERCLm9wZW4o
J2xhenktaW5kZXgtcG9wdWxhdGlvbicpCi1jb25uZWN0aW9uID0gcmVxdWVzdC5yZXN1bHQKLQot
VmVyaWZ5IHRoYXQgdW5pcXVlbmVzcyBjb25zdHJhaW50cyBhcmUgZW5mb3JjZWQgd2l0aCBhIHBy
ZS1leGlzdGluZyBpbmRleDoKLWNvbm5lY3Rpb24uc2V0VmVyc2lvbignMScpCitkYm5hbWUgPSAi
bGF6eS1pbmRleC1wb3B1bGF0aW9uLmh0bWwiCitpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoZGJu
YW1lKQoraW5kZXhlZERCLm9wZW4oZGJuYW1lKQogRGVsZXRlZCBhbGwgb2JqZWN0IHN0b3Jlcy4K
IHN0b3JlID0gY29ubmVjdGlvbi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKQogc3RvcmUuY3Jl
YXRlSW5kZXgoJ2luZGV4MScsICduYW1lJywge3VuaXF1ZTogdHJ1ZX0pCitWZXJpZnkgdGhhdCB1
bmlxdWVuZXNzIGNvbnN0cmFpbnRzIGFyZSBlbmZvcmNlZCB3aXRoIGEgcHJlLWV4aXN0aW5nIGlu
ZGV4OgogdHJhbnMgPSBjb25uZWN0aW9uLnRyYW5zYWN0aW9uKCdzdG9yZScsICdyZWFkd3JpdGUn
KQogc3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKQogcmVxdWVzdDEgPSBzdG9yZS5w
dXQoe25hbWU6ICdib2InfSwgMSkKQEAgLTI4LDcgKzI2LDggQEAgUEFTUyArK3N0YXRlIGlzIDMK
IFBBU1MgdHJhbnMuZXJyb3IubmFtZSBpcyAnQ29uc3RyYWludEVycm9yJwogCiBWZXJpZnkgdGhh
dCB1bmlxdWVuZXNzIGNvbnN0cmFpbnRzIGFyZSBlbmZvcmNlZCB3aGVuIGluZGV4IGlzIGNyZWF0
ZWQgYmVmb3JlIHB1dHM6Ci1jb25uZWN0aW9uLnNldFZlcnNpb24oJzInKQorY29ubmVjdGlvbi5j
bG9zZSgpCitpbmRleGVkREIub3BlbihkYm5hbWUsIDIpCiBkZWxldGVBbGxPYmplY3RTdG9yZXMo
Y29ubmVjdGlvbikKIERlbGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMuCiBzdG9yZSA9IGNvbm5lY3Rp
b24uY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlJykKQEAgLTQ1LDcgKzQ0LDkgQEAgUEFTUyArK3N0
YXRlIGlzIDMKIFBBU1MgdHJhbnMuZXJyb3IubmFtZSBpcyAnQ29uc3RyYWludEVycm9yJwogCiBW
ZXJpZnkgdGhhdCB1bmlxdWVuZXNzIGNvbnN0cmFpbnRzIGFyZSBlbmZvcmNlZCB3aGVuIGluZGV4
IGlzIGNyZWF0ZWQgYWZ0ZXIgcHV0czoKLWNvbm5lY3Rpb24uc2V0VmVyc2lvbignMycpCitGSVhN
RTogU2NyaXB0IHNob3VsZG4ndCBoYXZlIHRvIGV4cGxpY2l0bHkgY2xvc2UgY29ubmVjdGlvbiBh
ZnRlciBpdCBmYWlsZWQgdG8gb3Blbi4gaHR0cDovL3drYnVnLmNvbS8xMDIyOTgKK2Nvbm5lY3Rp
b24uY2xvc2UoKQoraW5kZXhlZERCLm9wZW4oZGJuYW1lLCAzKQogZGVsZXRlQWxsT2JqZWN0U3Rv
cmVzKGNvbm5lY3Rpb24pCiBEZWxldGVkIGFsbCBvYmplY3Qgc3RvcmVzLgogc3RvcmUgPSBjb25u
ZWN0aW9uLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZScpCkBAIC02Miw3ICs2Myw5IEBAIFBBU1Mg
KytzdGF0ZSBpcyAzCiBQQVNTIHRyYW5zLmVycm9yLm5hbWUgaXMgJ0NvbnN0cmFpbnRFcnJvcicK
IAogVmVyaWZ5IHRoYXQgdW5pcXVlbmVzcyBjb25zdHJhaW50cyBhcmUgZW5mb3JjZWQgd2hlbiBp
bmRleCBpcyBjcmVhdGVkIGJldHdlZW4gcHV0czoKLWNvbm5lY3Rpb24uc2V0VmVyc2lvbignNCcp
CitGSVhNRTogU2NyaXB0IHNob3VsZG4ndCBoYXZlIHRvIGV4cGxpY2l0bHkgY2xvc2UgY29ubmVj
dGlvbiBhZnRlciBpdCBmYWlsZWQgdG8gb3Blbi4gaHR0cDovL3drYnVnLmNvbS8xMDIyOTgKK2Nv
bm5lY3Rpb24uY2xvc2UoKQoraW5kZXhlZERCLm9wZW4oZGJuYW1lLCA0KQogZGVsZXRlQWxsT2Jq
ZWN0U3RvcmVzKGNvbm5lY3Rpb24pCiBEZWxldGVkIGFsbCBvYmplY3Qgc3RvcmVzLgogc3RvcmUg
PSBjb25uZWN0aW9uLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZScpCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9sYXp5LWluZGV4LXBvcHVsYXRpb24uaHRtbCBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2xhenktaW5kZXgtcG9wdWxhdGlvbi5odG1sCmlu
ZGV4IDk5NGY5ZTE0M2Y2OGJiZDcwNDhhMzFjMzlmZTdlNjkyNjhlN2E0NTguLjRhNDZmM2ZlOTkw
ODJiOGY1NjNlYTNlN2FlZDYwMTc4ZDFhMjU4ZjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL2xhenktaW5kZXgtcG9wdWxhdGlvbi5odG1sCisrKyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2xhenktaW5kZXgtcG9wdWxhdGlvbi5odG1sCkBAIC01LDYz
ICs1LDQyIEBACiAKIGRlc2NyaXB0aW9uKCJWZXJpZnkgZWRnZSBjYXNlcyB0aGF0IGxhenkgaW5k
ZXggcG9wdWxhdGlvbiBpbiBhbiBJbmRleGVkREIgaW1wbGVtZW50YXRpb24gbWlnaHQgcmV2ZWFs
LiIpOwogCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwot
ICAgIHByZXBhcmVEYXRhYmFzZSgpOwotfQotCitpbmRleGVkREJUZXN0KHByZXBhcmVEYXRhYmFz
ZSwgdmVyaWZ5UHJlRXhpc3RpbmdJbmRleCk7CiBmdW5jdGlvbiBwcmVwYXJlRGF0YWJhc2UoKQog
ewotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbignbGF6eS1pbmRleC1w
b3B1bGF0aW9uJykiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgZXZh
bEFuZExvZygiY29ubmVjdGlvbiA9IHJlcXVlc3QucmVzdWx0Iik7Ci0gICAgICAgIHZlcmlmeVBy
ZUV4aXN0aW5nSW5kZXgoKTsKLSAgICB9OworICAgIGNvbm5lY3Rpb24gPSBldmVudC50YXJnZXQu
cmVzdWx0OworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3Jlcyhjb25uZWN0aW9uKTsKKyAgICBldmFs
QW5kTG9nKCJzdG9yZSA9IGNvbm5lY3Rpb24uY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsK
KyAgICBldmFsQW5kTG9nKCJzdG9yZS5jcmVhdGVJbmRleCgnaW5kZXgxJywgJ25hbWUnLCB7dW5p
cXVlOiB0cnVlfSkiKTsKIH0KIAogZnVuY3Rpb24gdmVyaWZ5UHJlRXhpc3RpbmdJbmRleCgpCiB7
Ci0gICAgZGVidWcoIiIpOwogICAgIGRlYnVnKCJWZXJpZnkgdGhhdCB1bmlxdWVuZXNzIGNvbnN0
cmFpbnRzIGFyZSBlbmZvcmNlZCB3aXRoIGEgcHJlLWV4aXN0aW5nIGluZGV4OiIpOworICAgIGV2
YWxBbmRMb2coInRyYW5zID0gY29ubmVjdGlvbi50cmFuc2FjdGlvbignc3RvcmUnLCAncmVhZHdy
aXRlJykiKTsKKyAgICBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9y
ZScpIik7CisgICAgZXZhbEFuZExvZygicmVxdWVzdDEgPSBzdG9yZS5wdXQoe25hbWU6ICdib2In
fSwgMSkiKTsKKyAgICBldmFsQW5kTG9nKCJyZXF1ZXN0MiA9IHN0b3JlLnB1dCh7bmFtZTogJ2Jv
Yid9LCAyKSIpOworICAgIGV2YWxBbmRMb2coInN0YXRlID0gMCIpOworCisgICAgcmVxdWVzdDEu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3QxLm9uc3VjY2Vz
cyA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgZGVidWcoInJlcXVlc3QxIHJlY2VpdmVkIHN1Y2Nl
c3MgZXZlbnQiKTsKKyAgICAgICAgc2hvdWxkQmUoIisrc3RhdGUiLCAiMSIpOworICAgIH07CiAK
LSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiY29ubmVjdGlvbi5zZXRWZXJzaW9uKCcxJykiKTsK
LSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgewotICAgICAgICB0cmFucyA9IHJlcXVlc3QucmVz
dWx0OwotICAgICAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0g
ICAgICAgIGRlbGV0ZUFsbE9iamVjdFN0b3Jlcyhjb25uZWN0aW9uKTsKLSAgICAgICAgZXZhbEFu
ZExvZygic3RvcmUgPSBjb25uZWN0aW9uLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZScpIik7Ci0g
ICAgICAgIGV2YWxBbmRMb2coInN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleDEnLCAnbmFtZScsIHt1
bmlxdWU6IHRydWV9KSIpOwotCi0gICAgICAgIHRyYW5zLm9uY29tcGxldGUgPSBmdW5jdGlvbigp
IHsKLSAgICAgICAgICAgIGV2YWxBbmRMb2coInRyYW5zID0gY29ubmVjdGlvbi50cmFuc2FjdGlv
bignc3RvcmUnLCAncmVhZHdyaXRlJykiKTsKLSAgICAgICAgICAgIGV2YWxBbmRMb2coInN0b3Jl
ID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsKLSAgICAgICAgICAgIGV2YWxBbmRMb2co
InJlcXVlc3QxID0gc3RvcmUucHV0KHtuYW1lOiAnYm9iJ30sIDEpIik7Ci0gICAgICAgICAgICBl
dmFsQW5kTG9nKCJyZXF1ZXN0MiA9IHN0b3JlLnB1dCh7bmFtZTogJ2JvYid9LCAyKSIpOwotICAg
ICAgICAgICAgZXZhbEFuZExvZygic3RhdGUgPSAwIik7Ci0KLSAgICAgICAgICAgIHJlcXVlc3Qx
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICAgICAgICAgIHJlcXVlc3Qx
Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgICAgICBkZWJ1ZygicmVxdWVz
dDEgcmVjZWl2ZWQgc3VjY2VzcyBldmVudCIpOwotICAgICAgICAgICAgICAgIHNob3VsZEJlKCIr
K3N0YXRlIiwgIjEiKTsKLSAgICAgICAgICAgIH07Ci0KLSAgICAgICAgICAgIHJlcXVlc3QyLm9u
c3VjY2VzcyA9IHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2s7Ci0gICAgICAgICAgICByZXF1ZXN0
Mi5vbmVycm9yID0gZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgICAgIGRlYnVnKCJyZXF1ZXN0
MiByZWNlaXZlZCBlcnJvciBldmVudCIpOwotICAgICAgICAgICAgICAgIHNob3VsZEJlKCIrK3N0
YXRlIiwgIjIiKTsKLSAgICAgICAgICAgIH07Ci0KLSAgICAgICAgICAgIHRyYW5zLm9uY29tcGxl
dGUgPSB1bmV4cGVjdGVkQ29tcGxldGVDYWxsYmFjazsKLSAgICAgICAgICAgIHRyYW5zLm9uYWJv
cnQgPSBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICAgICAgZGVidWcoInRyYW5zYWN0aW9uIGFi
b3J0ZWQiKTsKLSAgICAgICAgICAgICAgICBzaG91bGRCZSgiKytzdGF0ZSIsICIzIik7Ci0gICAg
ICAgICAgICAgICAgc2hvdWxkQmUoInRyYW5zLmVycm9yLm5hbWUiLCAiJ0NvbnN0cmFpbnRFcnJv
ciciKTsKLSAgICAgICAgICAgICAgICB2ZXJpZnlDcmVhdGVUaGVuUHV0KCk7Ci0gICAgICAgICAg
ICB9OwotICAgICAgICB9OworICAgIHJlcXVlc3QyLm9uc3VjY2VzcyA9IHVuZXhwZWN0ZWRTdWNj
ZXNzQ2FsbGJhY2s7CisgICAgcmVxdWVzdDIub25lcnJvciA9IGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgZGVidWcoInJlcXVlc3QyIHJlY2VpdmVkIGVycm9yIGV2ZW50Iik7CisgICAgICAgIHNob3Vs
ZEJlKCIrK3N0YXRlIiwgIjIiKTsKKyAgICB9OworCisgICAgdHJhbnMub25jb21wbGV0ZSA9IHVu
ZXhwZWN0ZWRDb21wbGV0ZUNhbGxiYWNrOworICAgIHRyYW5zLm9uYWJvcnQgPSBmdW5jdGlvbiAo
KSB7CisgICAgICAgIGRlYnVnKCJ0cmFuc2FjdGlvbiBhYm9ydGVkIik7CisgICAgICAgIHNob3Vs
ZEJlKCIrK3N0YXRlIiwgIjMiKTsKKyAgICAgICAgc2hvdWxkQmUoInRyYW5zLmVycm9yLm5hbWUi
LCAiJ0NvbnN0cmFpbnRFcnJvciciKTsKKyAgICAgICAgdmVyaWZ5Q3JlYXRlVGhlblB1dCgpOwog
ICAgIH07CiB9CiAKQEAgLTcwLDEwICs0OSwxNCBAQCBmdW5jdGlvbiB2ZXJpZnlDcmVhdGVUaGVu
UHV0KCkKICAgICBkZWJ1ZygiIik7CiAgICAgZGVidWcoIlZlcmlmeSB0aGF0IHVuaXF1ZW5lc3Mg
Y29uc3RyYWludHMgYXJlIGVuZm9yY2VkIHdoZW4gaW5kZXggaXMgY3JlYXRlZCBiZWZvcmUgcHV0
czoiKTsKIAotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJjb25uZWN0aW9uLnNldFZlcnNpb24o
JzInKSIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwot
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgIHRyYW5zID0gcmVx
dWVzdC5yZXN1bHQ7CisgICAgZXZhbEFuZExvZygiY29ubmVjdGlvbi5jbG9zZSgpIik7CisgICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKGRibmFtZSwgMikiKTsKKyAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB2ZXJpZnlQdXRUaGVuQ3JlYXRlOworICAgIHJlcXVlc3Qub25ibG9j
a2VkID0gdW5leHBlY3RlZEJsb2NrZWRDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQg
PSBmdW5jdGlvbigpIHsKKyAgICAgICAgY29ubmVjdGlvbiA9IHJlcXVlc3QucmVzdWx0OworICAg
ICAgICB0cmFucyA9IHJlcXVlc3QudHJhbnNhY3Rpb247CiAKICAgICAgICAgZXZhbEFuZExvZygi
ZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGNvbm5lY3Rpb24pIik7CiAKQEAgLTEwMCw3ICs4Myw2IEBA
IGZ1bmN0aW9uIHZlcmlmeUNyZWF0ZVRoZW5QdXQoKQogICAgICAgICAgICAgZGVidWcoInRyYW5z
YWN0aW9uIGFib3J0ZWQiKTsKICAgICAgICAgICAgIHNob3VsZEJlKCIrK3N0YXRlIiwgIjMiKTsK
ICAgICAgICAgICAgIHNob3VsZEJlKCJ0cmFucy5lcnJvci5uYW1lIiwgIidDb25zdHJhaW50RXJy
b3InIik7Ci0gICAgICAgICAgICB2ZXJpZnlQdXRUaGVuQ3JlYXRlKCk7CiAgICAgICAgIH07CiAg
ICAgfTsKIH0KQEAgLTExMCwxMCArOTIsMTUgQEAgZnVuY3Rpb24gdmVyaWZ5UHV0VGhlbkNyZWF0
ZSgpCiAgICAgZGVidWcoIiIpOwogICAgIGRlYnVnKCJWZXJpZnkgdGhhdCB1bmlxdWVuZXNzIGNv
bnN0cmFpbnRzIGFyZSBlbmZvcmNlZCB3aGVuIGluZGV4IGlzIGNyZWF0ZWQgYWZ0ZXIgcHV0czoi
KTsKIAotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJjb25uZWN0aW9uLnNldFZlcnNpb24oJzMn
KSIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgIHRyYW5zID0gcmVxdWVz
dC5yZXN1bHQ7CisgICAgZGVidWcoIkZJWE1FOiBTY3JpcHQgc2hvdWxkbid0IGhhdmUgdG8gZXhw
bGljaXRseSBjbG9zZSBjb25uZWN0aW9uIGFmdGVyIGl0IGZhaWxlZCB0byBvcGVuLiBodHRwOi8v
d2tidWcuY29tLzEwMjI5OCIpOworICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb24uY2xvc2UoKSIp
OworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihkYm5hbWUsIDMpIik7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdmVyaWZ5UHV0VGhlbkNyZWF0ZVRoZW5QdXQ7CisgICAg
cmVxdWVzdC5vbmJsb2NrZWQgPSB1bmV4cGVjdGVkQmxvY2tlZENhbGxiYWNrOworICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9u
dXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKCkgeworICAgICAgICBjb25uZWN0aW9uID0gcmVxdWVz
dC5yZXN1bHQ7CisgICAgICAgIHRyYW5zID0gcmVxdWVzdC50cmFuc2FjdGlvbjsKIAogICAgICAg
ICBldmFsQW5kTG9nKCJkZWxldGVBbGxPYmplY3RTdG9yZXMoY29ubmVjdGlvbikiKTsKIApAQCAt
MTQwLDcgKzEyNyw2IEBAIGZ1bmN0aW9uIHZlcmlmeVB1dFRoZW5DcmVhdGUoKQogICAgICAgICAg
ICAgZGVidWcoInRyYW5zYWN0aW9uIGFib3J0ZWQiKTsKICAgICAgICAgICAgIHNob3VsZEJlKCIr
K3N0YXRlIiwgIjMiKTsKICAgICAgICAgICAgIHNob3VsZEJlKCJ0cmFucy5lcnJvci5uYW1lIiwg
IidDb25zdHJhaW50RXJyb3InIik7Ci0gICAgICAgICAgICB2ZXJpZnlQdXRUaGVuQ3JlYXRlVGhl
blB1dCgpOwogICAgICAgICB9OwogICAgIH07CiB9CkBAIC0xNTAsMTAgKzEzNiwxNSBAQCBmdW5j
dGlvbiB2ZXJpZnlQdXRUaGVuQ3JlYXRlVGhlblB1dCgpCiAgICAgZGVidWcoIiIpOwogICAgIGRl
YnVnKCJWZXJpZnkgdGhhdCB1bmlxdWVuZXNzIGNvbnN0cmFpbnRzIGFyZSBlbmZvcmNlZCB3aGVu
IGluZGV4IGlzIGNyZWF0ZWQgYmV0d2VlbiBwdXRzOiIpOwogCi0gICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coImNvbm5lY3Rpb24uc2V0VmVyc2lvbignNCcpIik7Ci0gICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5j
dGlvbigpIHsKLSAgICAgICAgdHJhbnMgPSByZXF1ZXN0LnJlc3VsdDsKKyAgICBkZWJ1ZygiRklY
TUU6IFNjcmlwdCBzaG91bGRuJ3QgaGF2ZSB0byBleHBsaWNpdGx5IGNsb3NlIGNvbm5lY3Rpb24g
YWZ0ZXIgaXQgZmFpbGVkIHRvIG9wZW4uIGh0dHA6Ly93a2J1Zy5jb20vMTAyMjk4Iik7CisgICAg
ZXZhbEFuZExvZygiY29ubmVjdGlvbi5jbG9zZSgpIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coImluZGV4ZWREQi5vcGVuKGRibmFtZSwgNCkiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSBm
aW5pc2hKU1Rlc3Q7CisgICAgcmVxdWVzdC5vbmJsb2NrZWQgPSB1bmV4cGVjdGVkQmxvY2tlZENh
bGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFj
azsKKyAgICByZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKCkgeworICAgICAgICBj
b25uZWN0aW9uID0gcmVxdWVzdC5yZXN1bHQ7CisgICAgICAgIHRyYW5zID0gcmVxdWVzdC50cmFu
c2FjdGlvbjsKIAogICAgICAgICBldmFsQW5kTG9nKCJkZWxldGVBbGxPYmplY3RTdG9yZXMoY29u
bmVjdGlvbikiKTsKIApAQCAtMTgwLDEyICsxNzEsOSBAQCBmdW5jdGlvbiB2ZXJpZnlQdXRUaGVu
Q3JlYXRlVGhlblB1dCgpCiAgICAgICAgICAgICBkZWJ1ZygidHJhbnNhY3Rpb24gYWJvcnRlZCIp
OwogICAgICAgICAgICAgc2hvdWxkQmUoIisrc3RhdGUiLCAiMyIpOwogICAgICAgICAgICAgc2hv
dWxkQmUoInRyYW5zLmVycm9yLm5hbWUiLCAiJ0NvbnN0cmFpbnRFcnJvciciKTsKLSAgICAgICAg
ICAgIGZpbmlzaEpTVGVzdCgpOwogICAgICAgICB9OwogICAgIH07CiB9CiAKLXRlc3QoKTsKLQog
PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL21vemlsbGEvaW5kZXgtcHJldi1uby1kdXBsaWNhdGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9pbmRleC1wcmV2LW5vLWR1cGxpY2F0ZS1l
eHBlY3RlZC50eHQKaW5kZXggOWFmNmY0YTU5ZWQzNzQwOGVmMWJiZWJhNzQwNWY3ODZiMjkyZjcy
MC4uNjkxOTNjOGNlMDg3NjU4YzY5NDZmODliOTY0NTJlYmU1MzhhMTVlNiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9pbmRleC1wcmV2LW5vLWR1cGxp
Y2F0ZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96
aWxsYS9pbmRleC1wcmV2LW5vLWR1cGxpY2F0ZS1leHBlY3RlZC50eHQKQEAgLTEsMjUgKzEsMTMg
QEAKLUNPTlNPTEUgTUVTU0FHRTogVGhlIHNldFZlcnNpb24oKSBtZXRob2QgaXMgbm9uLXN0YW5k
YXJkIGFuZCB3aWxsIGJlIHJlbW92ZWQuIFVzZSB0aGUgInVwZ3JhZGVuZWVkZWQiIGV2ZW50IGlu
c3RlYWQuCiBUZXN0IEluZGV4ZWREQjogaXRlcmF0aW5nIGJhY2t3YXJkcyB0aHJvdWdoIGFuIGlu
ZGV4LCBza2lwcGluZyBkdXBsaWNhdGVzCiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAog
Ci1pbmRleGVkREIgPSB3aW5kb3cuaW5kZXhlZERCIHx8IHdpbmRvdy53ZWJraXRJbmRleGVkREIg
fHwgd2luZG93Lm1vekluZGV4ZWREQjsKLVBBU1MgaW5kZXhlZERCID09IG51bGwgaXMgZmFsc2UK
LUlEQkRhdGFiYXNlRXhjZXB0aW9uID0gd2luZG93LklEQkRhdGFiYXNlRXhjZXB0aW9uIHx8IHdp
bmRvdy53ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbjsKLVBBU1MgSURCRGF0YWJhc2VFeGNlcHRp
b24gPT0gbnVsbCBpcyBmYWxzZQotSURCVHJhbnNhY3Rpb24gPSB3aW5kb3cuSURCVHJhbnNhY3Rp
b24gfHwgd2luZG93LndlYmtpdElEQlRyYW5zYWN0aW9uOwotUEFTUyBJREJUcmFuc2FjdGlvbiA9
PSBudWxsIGlzIGZhbHNlCi1JREJDdXJzb3IgPSB3aW5kb3cuSURCQ3Vyc29yIHx8IHdpbmRvdy53
ZWJraXRJREJDdXJzb3I7Ci1QQVNTIElEQkN1cnNvciA9PSBudWxsIGlzIGZhbHNlCi1JREJLZXlS
YW5nZSA9IHdpbmRvdy5JREJLZXlSYW5nZSB8fCB3aW5kb3cud2Via2l0SURCS2V5UmFuZ2U7Ci1Q
QVNTIElEQktleVJhbmdlID09IG51bGwgaXMgZmFsc2UKLWluZGV4ZWREQi5vcGVuKG5hbWUpCi1v
cGVuU3VjY2VzcygpOgotZGIgPSBldmVudC50YXJnZXQucmVzdWx0Ci1yZXF1ZXN0ID0gZGIuc2V0
VmVyc2lvbignMScpCi1EZWxldGVkIGFsbCBvYmplY3Qgc3RvcmVzLgotdHJhbnMgPSByZXF1ZXN0
LnJlc3VsdAoraW5kZXhlZERCID0gc2VsZi5pbmRleGVkREIgfHwgc2VsZi53ZWJraXRJbmRleGVk
REIgfHwgc2VsZi5tb3pJbmRleGVkREIgfHwgc2VsZi5tc0luZGV4ZWREQiB8fCBzZWxmLk9JbmRl
eGVkREI7CisKK2RibmFtZSA9ICJpbmRleC1wcmV2LW5vLWR1cGxpY2F0ZS5odG1sIgoraW5kZXhl
ZERCLmRlbGV0ZURhdGFiYXNlKGRibmFtZSkKK2luZGV4ZWREQi5vcGVuKGRibmFtZSkKIG9iamVj
dFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1lKTsKIEZpcnN0LCBh
ZGQgYWxsIG91ciBkYXRhIHRvIHRoZSBvYmplY3Qgc3RvcmUuCiByZXF1ZXN0ID0gb2JqZWN0U3Rv
cmUuYWRkKG9iamVjdFN0b3JlRGF0YVtpXS52YWx1ZSwgb2JqZWN0U3RvcmVEYXRhW2ldLmtleSk7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2luZGV4
LXByZXYtbm8tZHVwbGljYXRlLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9t
b3ppbGxhL2luZGV4LXByZXYtbm8tZHVwbGljYXRlLmh0bWwKaW5kZXggMWJhY2I4OTljODRkNGRh
ZTg3OGYxMzEwZTlhZTRiMGE3MGQwZmVmZi4uMDIzNDdmYmIzNjg0MTMxMGFhNmI0NDkwODgyNmJh
OGI4ZmZmMWYzMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96
aWxsYS9pbmRleC1wcmV2LW5vLWR1cGxpY2F0ZS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL21vemlsbGEvaW5kZXgtcHJldi1uby1kdXBsaWNhdGUuaHRtbApAQCAtOCw0
MSArOCwxOCBAQAogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotICAgIHZhciBq
c1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLTwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNl
cy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+CiA8c2NyaXB0PgogCiBkZXNj
cmlwdGlvbigiVGVzdCBJbmRleGVkREI6IGl0ZXJhdGluZyBiYWNrd2FyZHMgdGhyb3VnaCBhbiBp
bmRleCwgc2tpcHBpbmcgZHVwbGljYXRlcyIpOwotaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAg
IHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICBp
bmRleGVkREIgPSBldmFsQW5kTG9nKCJpbmRleGVkREIgPSB3aW5kb3cuaW5kZXhlZERCIHx8IHdp
bmRvdy53ZWJraXRJbmRleGVkREIgfHwgd2luZG93Lm1vekluZGV4ZWREQjsiKTsKLSAgICBzaG91
bGRCZUZhbHNlKCJpbmRleGVkREIgPT0gbnVsbCIpOwotICAgIElEQkRhdGFiYXNlRXhjZXB0aW9u
ID0gZXZhbEFuZExvZygiSURCRGF0YWJhc2VFeGNlcHRpb24gPSB3aW5kb3cuSURCRGF0YWJhc2VF
eGNlcHRpb24gfHwgd2luZG93LndlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uOyIpOwotICAgIHNo
b3VsZEJlRmFsc2UoIklEQkRhdGFiYXNlRXhjZXB0aW9uID09IG51bGwiKTsKLSAgICBJREJUcmFu
c2FjdGlvbiA9IGV2YWxBbmRMb2coIklEQlRyYW5zYWN0aW9uID0gd2luZG93LklEQlRyYW5zYWN0
aW9uIHx8IHdpbmRvdy53ZWJraXRJREJUcmFuc2FjdGlvbjsiKTsKLSAgICBzaG91bGRCZUZhbHNl
KCJJREJUcmFuc2FjdGlvbiA9PSBudWxsIik7Ci0gICAgSURCQ3Vyc29yID0gZXZhbEFuZExvZygi
SURCQ3Vyc29yID0gd2luZG93LklEQkN1cnNvciB8fCB3aW5kb3cud2Via2l0SURCQ3Vyc29yOyIp
OwotICAgIHNob3VsZEJlRmFsc2UoIklEQkN1cnNvciA9PSBudWxsIik7Ci0gICAgSURCS2V5UmFu
Z2UgPSBldmFsQW5kTG9nKCJJREJLZXlSYW5nZSA9IHdpbmRvdy5JREJLZXlSYW5nZSB8fCB3aW5k
b3cud2Via2l0SURCS2V5UmFuZ2U7Iik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiSURCS2V5UmFuZ2Ug
PT0gbnVsbCIpOwotCi0gICAgbmFtZSA9IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZTsKLSAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSkiKTsKLSAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOwotfQogCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCitpbmRleGVkREJU
ZXN0KHByZXBhcmVEYXRhYmFzZSwgdGVzdFByZXYpOworZnVuY3Rpb24gcHJlcGFyZURhdGFiYXNl
KCkKIHsKLSAgICBkZWJ1Zygib3BlblN1Y2Nlc3MoKToiKTsKLSAgICBkYiA9IGV2YWxBbmRMb2co
ImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIGRiID0gZXZlbnQudGFyZ2V0LnJlc3Vs
dDsKKyAgICB0cmFucyA9IGV2ZW50LnRhcmdldC50cmFuc2FjdGlvbjsKIAogICAgIG9iamVjdFN0
b3JlTmFtZSA9ICJQZW9wbGUiOwogCkBAIC03NiwxNiArNTMsNiBAQCBmdW5jdGlvbiBvcGVuU3Vj
Y2VzcygpCiAgICAgICAgIHsga2V5OiAiMjM3LTIzLTc3NDAiLCB2YWx1ZTogeyBuYW1lOiAiU2Ft
IiwgaGVpZ2h0OiA3Mywgd2VpZ2h0OiAxMTAgfSB9LAogICAgIF07CiAKLSAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOwotICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gY3JlYXRlT2JqZWN0U3RvcmU7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGNyZWF0ZU9iamVjdFN0b3JlKCkK
LXsKLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgZXZhbEFuZExvZygidHJh
bnMgPSByZXF1ZXN0LnJlc3VsdCIpOwogICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2Jq
ZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZShvYmplY3RTdG9yZU5hbWUpOyIpOwogICAg
IGRlYnVnKCJGaXJzdCwgYWRkIGFsbCBvdXIgZGF0YSB0byB0aGUgb2JqZWN0IHN0b3JlLiIpOwog
ICAgIGFkZGVkRGF0YSA9IDA7CkBAIC0xMDIsNyArNjksNiBAQCBmdW5jdGlvbiBjcmVhdGVPYmpl
Y3RTdG9yZSgpCiAgICAgdHJhbnMub25jb21wbGV0ZSA9IGZ1bmN0aW9uKCkgewogICAgICAgICBl
dmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKG9iamVjdFN0b3JlTmFtZSwgJ3JlYWR3
cml0ZScpIik7CiAgICAgICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gdHJhbnMub2JqZWN0
U3RvcmUob2JqZWN0U3RvcmVOYW1lKSIpOwotICAgICAgICB0ZXN0UHJldigpOwogICAgIH07CiB9
CiAKQEAgLTE4Niw4ICsxNTIsNiBAQCBmdW5jdGlvbiB0ZXN0UHJldk5vRHVwbGljYXRlKCkKIAog
dmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CiAKLXRlc3QoKTsKLQogPC9zY3JpcHQ+CiA8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KIDwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL21vemlsbGEvb2JqZWN0LWlkZW50aXR5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvb2JqZWN0LWlkZW50aXR5LWV4cGVjdGVkLnR4dAppbmRl
eCAxMjhhN2YyMjQ5OGEyNWUyNTFkNGFiNDBiMTNjY2ExMGE3MDc0Y2FlLi41MTU0OTk0NzhmMjQ1
MDVlYjkyMmMxMGRhNGFjYWY5NzYwYzA0MjA0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9tb3ppbGxhL29iamVjdC1pZGVudGl0eS1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9vYmplY3QtaWRlbnRpdHktZXhw
ZWN0ZWQudHh0CkBAIC0xNyw4ICsxNywxMCBAQCBpbmRleDIgPSBvYmplY3RTdG9yZTIuaW5kZXgo
J2JhcicpOwogUEFTUyBpbmRleDEgPT09IGluZGV4MiBpcyB0cnVlCiB0cmFuc2FjdGlvbiA9IGRi
LnRyYW5zYWN0aW9uKCdmb28nKTsKIG9iamVjdFN0b3JlMyA9IHRyYW5zYWN0aW9uLm9iamVjdFN0
b3JlKCdmb28nKTsKK29iamVjdFN0b3JlMy5zb21lUHJvcGVydHkgPSAneHl6Jwogb2JqZWN0U3Rv
cmU0ID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ2ZvbycpOwogUEFTUyBvYmplY3RTdG9yZTMg
PT09IG9iamVjdFN0b3JlNCBpcyB0cnVlCitQQVNTIG9iamVjdFN0b3JlNC5zb21lUHJvcGVydHkg
aXMgInh5eiIKIFBBU1Mgb2JqZWN0U3RvcmUzID09PSBvYmplY3RTdG9yZTEgaXMgZmFsc2UKIFBB
U1Mgb2JqZWN0U3RvcmU0ID09PSBvYmplY3RTdG9yZTIgaXMgZmFsc2UKIGluZGV4MyA9IG9iamVj
dFN0b3JlMy5pbmRleCgnYmFyJyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9vYmplY3QtaWRlbnRpdHkuanMgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9vYmplY3QtaWRlbnRpdHkuanMK
aW5kZXggOGNkMDhiYzBhYWUxMDI2Y2NjZjRlOGQ5YWQ3ZjQyNGIyNWMyMGYzOC4uNzU2MWUwZjU2
MjA5MjAwODlkNDQwNTFlYjY1NDJhNGVjNzc2ZjlkNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvb2JqZWN0LWlkZW50aXR5LmpzCisr
KyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL29iamVj
dC1pZGVudGl0eS5qcwpAQCAtMjksOCArMjksMTAgQEAgZnVuY3Rpb24gdGVzdElkZW50aXR5U29t
ZU1vcmUoKQogewogICAgIHRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBk
Yi50cmFuc2FjdGlvbignZm9vJyk7Iik7CiAgICAgb2JqZWN0U3RvcmUzID0gZXZhbEFuZExvZygi
b2JqZWN0U3RvcmUzID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ2ZvbycpOyIpOworICAgIGV2
YWxBbmRMb2coIm9iamVjdFN0b3JlMy5zb21lUHJvcGVydHkgPSAneHl6JyIpOwogICAgIG9iamVj
dFN0b3JlNCA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlNCA9IHRyYW5zYWN0aW9uLm9iamVjdFN0
b3JlKCdmb28nKTsiKTsKICAgICBzaG91bGRCZVRydWUoIm9iamVjdFN0b3JlMyA9PT0gb2JqZWN0
U3RvcmU0Iik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJvYmplY3RTdG9yZTQuc29tZVBy
b3BlcnR5IiwgInh5eiIpOwogCiAgICAgc2hvdWxkQmVGYWxzZSgib2JqZWN0U3RvcmUzID09PSBv
YmplY3RTdG9yZTEiKTsKICAgICBzaG91bGRCZUZhbHNlKCJvYmplY3RTdG9yZTQgPT09IG9iamVj
dFN0b3JlMiIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbm9i
bG9icy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9ub2Jsb2Jz
LWV4cGVjdGVkLnR4dAppbmRleCAwZmZmNmM0ODVmNzA3MTU5Njk4NWM4MDgzNGU0ZjcxMjFhMzEx
MDFiLi5hMGY2ZjM5YmU3MzExYTZkMGRkNTEyODcxMzAyOGM0YTE5ZWIzZDI5IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9ub2Jsb2JzLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9ub2Jsb2JzLWV4cGVjdGVkLnR4dApAQCAt
MSw0ICsxLDMgQEAKLUNPTlNPTEUgTUVTU0FHRTogVGhlIHNldFZlcnNpb24oKSBtZXRob2QgaXMg
bm9uLXN0YW5kYXJkIGFuZCB3aWxsIGJlIHJlbW92ZWQuIFVzZSB0aGUgInVwZ3JhZGVuZWVkZWQi
IGV2ZW50IGluc3RlYWQuCiBDb25maXJtIEJsb2IvRmlsZS9GaWxlTGlzdCBsaW1pdGF0aW9ucyBv
ZiBXZWJLaXQncyBJbmRleGVkREIgaW1wbGVtZW50YXRpb24uCiAKIE9uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KQEAgLTYsMTMgKzUsOSBAQCBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURQogCiBpbmRl
eGVkREIgPSBzZWxmLmluZGV4ZWREQiB8fCBzZWxmLndlYmtpdEluZGV4ZWREQiB8fCBzZWxmLm1v
ekluZGV4ZWREQiB8fCBzZWxmLm1zSW5kZXhlZERCIHx8IHNlbGYuT0luZGV4ZWREQjsKIAotCi1Q
cmVwYXJlIERhdGFiYXNlCi1pbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoJ25vYmxvYnMnKQotaW5k
ZXhlZERCLm9wZW4oJ25vYmxvYnMnKQotZGIgPSByZXF1ZXN0LnJlc3VsdAotUEFTUyBkYi52ZXJz
aW9uIGlzIDEKLWRiLnNldFZlcnNpb24oJzEnKQorZGJuYW1lID0gIm5vYmxvYnMuaHRtbCIKK2lu
ZGV4ZWREQi5kZWxldGVEYXRhYmFzZShkYm5hbWUpCitpbmRleGVkREIub3BlbihkYm5hbWUpCiBz
dG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKQogc3RvcmUucHV0KCd2YWx1
ZScsICdrZXknKQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9u
b2Jsb2JzLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9ub2Jsb2JzLmh0bWwK
aW5kZXggMTc4N2MyODNhODE0YTE1ZTc4NDI3OWIyNGUwYTMxNTZmMTZiNWY1NS4uNDk3ODAxOWZm
ZjBkNGZmOWFmYjBhNTU4MTgxYmY4YzcyNGY4M2MyZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvbm9ibG9icy5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL25vYmxvYnMuaHRtbApAQCAtMjEsMzYgKzIxLDE0IEBAIGlmICh3aW5kb3cuZXZl
bnRTZW5kZXIpIHsKICAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7CiB9CiAKLWZ1bmN0aW9uIHRl
c3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0gICAgcHJlcGFyZURhdGFiYXNl
KCk7Ci19Ci0KIGZ1bmN0aW9uIHByZXBhcmVEYXRhYmFzZSgpCiB7Ci0gICAgZGVidWcoIiIpOwot
ICAgIGRlYnVnKCJQcmVwYXJlIERhdGFiYXNlIik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
ImluZGV4ZWREQi5kZWxldGVEYXRhYmFzZSgnbm9ibG9icycpIik7Ci0gICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBm
dW5jdGlvbihlKSB7Ci0gICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Bl
bignbm9ibG9icycpIik7Ci0gICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOwotICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGUpIHsKLSAg
ICAgICAgICAgIGV2YWxBbmRMb2coImRiID0gcmVxdWVzdC5yZXN1bHQiKTsKLSAgICAgICAgICAg
IHNob3VsZEJlKCJkYi52ZXJzaW9uIiwgIjEiKTsKLSAgICAgICAgICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJkYi5zZXRWZXJzaW9uKCcxJykiKTsKLSAgICAgICAgICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgICAgICAgICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICAgICAgZXZhbEFuZExvZygic3RvcmUgPSBk
Yi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKLSAgICAgICAgICAgICAgICBldmFs
QW5kTG9nKCJzdG9yZS5wdXQoJ3ZhbHVlJywgJ2tleScpIik7Ci0gICAgICAgICAgICAgICAgdmFy
IHRyYW5zID0gcmVxdWVzdC5yZXN1bHQ7Ci0gICAgICAgICAgICAgICAgdHJhbnMub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgICAgICAgICAgICAgIHRyYW5zLm9uYWJvcnQg
PSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAgICAgICAgICAgICAgICB0cmFucy5vbmNvbXBs
ZXRlID0gdGVzdEJsb2I7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotICAgIH07CisgICAg
ZGIgPSBldmVudC50YXJnZXQucmVzdWx0OworICAgIHZhciB0cmFucyA9IGV2ZW50LnRhcmdldC50
cmFuc2FjdGlvbjsKKyAgICBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3Jl
KCdzdG9yZU5hbWUnKSIpOworICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCgndmFsdWUnLCAna2V5
JykiKTsKKyAgICB0cmFucy5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAg
dHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwogfQogCiBmdW5jdGlvbiB0
ZXN0QmxvYigpCkBAIC05NywxMCArNzUsMTAgQEAgZnVuY3Rpb24gdmFsaWRhdGVFeGNlcHRpb25z
KHZhcmlhYmxlLCBvbkNvbXBsZXRlKQogfQogCiBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7Ci0g
ICAgdGVzdCgpOworICAgIGluZGV4ZWREQlRlc3QocHJlcGFyZURhdGFiYXNlLCB0ZXN0QmxvYik7
CiB9IGVsc2UgewogICAgIGFsZXJ0KCJTZWxlY3QgZmlsZShzKSB1c2luZyB0aGUgaW5wdXQgY29u
dHJvbCBhYm92ZSB0byBpbml0aWF0ZSB0aGUgdGVzdCIpOwotICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJmaWxlSW5wdXQiKS5vbmNoYW5nZSA9IHRlc3Q7CisgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImZpbGVJbnB1dCIpLm9uY2hhbmdlID0gZnVuY3Rpb24oKSB7IGluZGV4ZWREQlRl
c3QocHJlcGFyZURhdGFiYXNlLCB0ZXN0QmxvYik7IH07CiB9CiAKIDwvc2NyaXB0PgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RvbnQtY29tbWl0
LW9uLWJsb2NrZWQtd29ya2VyLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVz
b3VyY2VzL2RvbnQtY29tbWl0LW9uLWJsb2NrZWQtd29ya2VyLmpzCmluZGV4IDRjMzhiZjZmNWI0
MTQyMDRjZWFjMjI5ZjExZWZjYTQ4YmJkYjljYTcuLmM5OTMyYjlkMjMyMThmOTM2ODYxNTk4ZjQx
ZTg4MTYxYTIwNTk1M2EgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L3Jlc291cmNlcy9kb250LWNvbW1pdC1vbi1ibG9ja2VkLXdvcmtlci5qcworKysgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvZG9udC1jb21taXQtb24tYmxvY2tlZC13
b3JrZXIuanMKQEAgLTQsMjIgKzQsMTcgQEAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7CiBy
ZW1vdmVWZW5kb3JQcmVmaXhlcygpOwogCiBkZWJ1Zygib3BlbmluZyBkYXRhYmFzZSBjb25uZWN0
aW9uIik7Ci1ldmFsQW5kTG9nKCJyZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oJ2RvbnQtY29tbWl0
LW9uLWJsb2NrZWQnKSIpOworZXZhbEFuZExvZygicmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKCdk
b250LWNvbW1pdC1vbi1ibG9ja2VkLmh0bWwnLCAyKSIpOwogcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci1yZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGUpIHsK
LSAgZXZhbEFuZExvZygiZGIgPSByZXF1ZXN0LnJlc3VsdCIpOwotICBkYi5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0KLSAgZXZhbEFuZExvZygic3RhdGUgPSAnc2V0dmVyc2lv
biciKTsKLSAgZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oMikiKTsKLSAgZXZh
bEFuZExvZygicmVxdWVzdC5vbmJsb2NrZWQgPSBvblNldFZlcnNpb25CbG9ja2VkIik7Ci0gIGV2
YWxBbmRMb2coInJlcXVlc3Qub25zdWNjZXNzID0gb25TZXRWZXJzaW9uU3VjY2VzcyIpOwotICBk
ZWJ1Zygic3Bpbm5pbmcgZm9yIDEwMG1zIHRvIGxldCBldmVudHMgYmUgcXVldWVkIGJ1dCBwcmV2
ZW50IGRpc3BhdGNoIik7Ci0gIHZhciB0ID0gRGF0ZS5ub3coKTsKLSAgd2hpbGUgKChEYXRlLm5v
dygpIC0gdCkgPCAxMDApIHsKLSAgfQotICBkZWJ1ZygiZG9uZSBzcGlubmluZyIpOwotfTsKK2V2
YWxBbmRMb2coInN0YXRlID0gJ3NldHZlcnNpb24nIik7CitldmFsQW5kTG9nKCJyZXF1ZXN0Lm9u
YmxvY2tlZCA9IG9uU2V0VmVyc2lvbkJsb2NrZWQiKTsKK2V2YWxBbmRMb2coInJlcXVlc3Qub251
cGdyYWRlbmVlZGVkID0gb25TZXRWZXJzaW9uU3VjY2VzcyIpOworcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBvblRyYW5zYWN0aW9uQ29tcGxldGU7CitkZWJ1Zygic3Bpbm5pbmcgZm9yIDEwMG1zIHRvIGxl
dCBldmVudHMgYmUgcXVldWVkIGJ1dCBwcmV2ZW50IGRpc3BhdGNoIik7Cit2YXIgdCA9IERhdGUu
bm93KCk7Cit3aGlsZSAoKERhdGUubm93KCkgLSB0KSA8IDEwMCkgeworfQorZGVidWcoImRvbmUg
c3Bpbm5pbmciKTsKIAogZnVuY3Rpb24gb25TZXRWZXJzaW9uQmxvY2tlZChlKQogewpAQCAtMzEs
MTYgKzI2LDE0IEBAIGZ1bmN0aW9uIG9uU2V0VmVyc2lvbkJsb2NrZWQoZSkKIAogZnVuY3Rpb24g
b25TZXRWZXJzaW9uU3VjY2VzcyhlKQogewotICBkZWJ1ZygiIik7Ci0gIGRlYnVnKCJvblNldFZl
cnNpb25TdWNjZXNzKCk6Iik7CisgIHByZWFtYmxlKGUpOworICBldmFsQW5kTG9nKCJkYiA9IGV2
ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgZGIub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOwogICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInN0YXRlIiwgImJsb2NrZWQiKTsKICAgZXZh
bEFuZExvZygic3RhdGUgPSAnc3VjY2VzcyciKTsKIAogICBkZWJ1ZygiY3JlYXRpbmcgb2JqZWN0
IHN0b3JlIC0gd2lsbCBmYWlsIGlmIHRyYW5zYWN0aW9uIGNvbW1pdGVkIGFmdGVyIGJsb2NrZWQg
ZXZlbnQiKTsKICAgZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlMicpIik7
Ci0KLSAgZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSByZXF1ZXN0LnJlc3VsdCIpOwotICBldmFs
QW5kTG9nKCJ0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gb25UcmFuc2FjdGlvbkNvbXBsZXRlIik7
CiB9CiAKIGZ1bmN0aW9uIG9uVHJhbnNhY3Rpb25Db21wbGV0ZShlKQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3NoYXJlZC5qcyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9zaGFyZWQuanMKaW5kZXggNDNhMTAxYzBh
NTBlZjUzNTRmOGQ1M2Y5ZGRjMzM2YWZkYWY2ODVlYS4uMDk4MWU0MGQ2NzkxMWJmNmZlYjJhZjY4
NWQxYWZiZjI5NzI4YmFiNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvcmVzb3VyY2VzL3NoYXJlZC5qcworKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9yZXNvdXJjZXMvc2hhcmVkLmpzCkBAIC0xMjMsNiArMTIzLDggQEAgZnVuY3Rpb24gZXZhbEFu
ZExvZ0NhbGxiYWNrKGNtZCkgewogICByZXR1cm4gY2FsbGJhY2s7CiB9CiAKKy8vIElmIHRoaXMg
ZnVuY3Rpb24gaXMgZGVsZXRlZCwgYSBzdGFuZGFsb25lIGxheW91dCB0ZXN0IGV4ZXJjaXNpbmcg
aXRzCisvLyBmdW5jdGlvbmFsaXR5IHNob3VsZCBiZSBhZGRlZC4KIGZ1bmN0aW9uIGRlbGV0ZUFs
bE9iamVjdFN0b3JlcyhkYikKIHsKICAgICB3aGlsZSAoZGIub2JqZWN0U3RvcmVOYW1lcy5sZW5n
dGgpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9zdHJ1Y3R1cmVk
LWNsb25lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3N0cnVj
dHVyZWQtY2xvbmUtZXhwZWN0ZWQudHh0CmluZGV4IDBjNzQyMDVjOTNlOWQ4NjIyMmI2YzI1Yjky
MzY5Y2ZlMmMxMWUyNTcuLmEwZjczZjQ5ODI2MWZlNGM3NDk0NjFkMmMyYTA3NTI2ZDUzM2Q5N2Qg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3N0cnVjdHVyZWQtY2xv
bmUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3N0cnVj
dHVyZWQtY2xvbmUtZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsMyBAQAotQ09OU09MRSBNRVNTQUdF
OiBUaGUgc2V0VmVyc2lvbigpIG1ldGhvZCBpcyBub24tc3RhbmRhcmQgYW5kIHdpbGwgYmUgcmVt
b3ZlZC4gVXNlIHRoZSAidXBncmFkZW5lZWRlZCIgZXZlbnQgaW5zdGVhZC4KIFRlc3Qgc3RydWN0
dXJlZCBjbG9uZSBwZXJtdXRhdGlvbnMgaW4gSW5kZXhlZERCLiBGaWxlL0ZpbGVMaXN0IHRlc3Rz
IHJlcXVpcmUgRHVtcFJlbmRlclRyZWUuCiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KQEAg
LTYsMTMgKzUsOSBAQCBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURQogCiBpbmRleGVkREIgPSBzZWxm
LmluZGV4ZWREQiB8fCBzZWxmLndlYmtpdEluZGV4ZWREQiB8fCBzZWxmLm1vekluZGV4ZWREQiB8
fCBzZWxmLm1zSW5kZXhlZERCIHx8IHNlbGYuT0luZGV4ZWREQjsKIAotCi1QcmVwYXJlIERhdGFi
YXNlCi1pbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoJ3N0cnVjdHVyZWQtY2xvbmUnKQotaW5kZXhl
ZERCLm9wZW4oJ3N0cnVjdHVyZWQtY2xvbmUnKQotZGIgPSByZXF1ZXN0LnJlc3VsdAotUEFTUyBk
Yi52ZXJzaW9uIGlzIDEKLWRiLnNldFZlcnNpb24oJzEnKQorZGJuYW1lID0gInN0cnVjdHVyZWQt
Y2xvbmUuaHRtbCIKK2luZGV4ZWREQi5kZWxldGVEYXRhYmFzZShkYm5hbWUpCitpbmRleGVkREIu
b3BlbihkYm5hbWUpCiBzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKQog
VGhpcyBpbmRleCBpcyBub3QgdXNlZCwgYnV0IGV2YWx1YXRpbmcga2V5IHBhdGggb24gZWFjaCBw
dXQoKSBjYWxsIHdpbGwgZXhlcmNpc2UgKGRlKXNlcmlhbGl6YXRpb246CiBzdG9yZS5jcmVhdGVJ
bmRleCgnaW5kZXhOYW1lJywgJ2R1bW15S2V5UGF0aCcpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9zdHJ1Y3R1cmVkLWNsb25lLmh0bWwgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9zdHJ1Y3R1cmVkLWNsb25lLmh0bWwKaW5kZXggMzUwNmNmNjE3YTQ0
NjU5ZTljMjY3MjMzYzc2OWQyNzA3MDZmZTFjYi4uNzdkMGNlMmM4NjdkZGQyN2EwZDZlOWY5ZDgz
NDhmOTJkZTljZGMwMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
c3RydWN0dXJlZC1jbG9uZS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L3N0cnVjdHVyZWQtY2xvbmUuaHRtbApAQCAtMTksMzcgKzE5LDEzIEBAIGlmIChzZWxmLmV2ZW50
U2VuZGVyKSB7CiAgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOwogfQogCi1mdW5jdGlvbiB0ZXN0
KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotICAgIHByZXBhcmVEYXRhYmFzZSgp
OwotfQotCitpbmRleGVkREJUZXN0KHByZXBhcmVEYXRhYmFzZSwgc3RhcnRUZXN0cyk7CiBmdW5j
dGlvbiBwcmVwYXJlRGF0YWJhc2UoKQogewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiUHJl
cGFyZSBEYXRhYmFzZSIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIuZGVs
ZXRlRGF0YWJhc2UoJ3N0cnVjdHVyZWQtY2xvbmUnKSIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rp
b24oZSkgewotICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ3N0
cnVjdHVyZWQtY2xvbmUnKSIpOwotICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKLSAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihlKSB7
Ci0gICAgICAgICAgICBldmFsQW5kTG9nKCJkYiA9IHJlcXVlc3QucmVzdWx0Iik7Ci0gICAgICAg
ICAgICBzaG91bGRCZSgiZGIudmVyc2lvbiIsICIxIik7Ci0gICAgICAgICAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignMScpIik7Ci0gICAgICAgICAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICAgICAgICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgICAgIGV2YWxBbmRMb2coInN0b3Jl
ID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7Ci0gICAgICAgICAgICAgICAg
ZGVidWcoIlRoaXMgaW5kZXggaXMgbm90IHVzZWQsIGJ1dCBldmFsdWF0aW5nIGtleSBwYXRoIG9u
IGVhY2ggcHV0KCkgY2FsbCB3aWxsIGV4ZXJjaXNlIChkZSlzZXJpYWxpemF0aW9uOiIpOwotICAg
ICAgICAgICAgICAgIGV2YWxBbmRMb2coInN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleE5hbWUnLCAn
ZHVtbXlLZXlQYXRoJykiKTsKLSAgICAgICAgICAgICAgICB2YXIgdHJhbnMgPSByZXF1ZXN0LnJl
c3VsdDsKLSAgICAgICAgICAgICAgICB0cmFucy5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Ci0gICAgICAgICAgICAgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENh
bGxiYWNrOwotICAgICAgICAgICAgICAgIHRyYW5zLm9uY29tcGxldGUgPSBzdGFydFRlc3RzOwot
ICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLSAgICB9OworICAgIGRiID0gZXZlbnQudGFyZ2V0
LnJlc3VsdDsKKyAgICBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdz
dG9yZU5hbWUnKSIpOworICAgIGRlYnVnKCJUaGlzIGluZGV4IGlzIG5vdCB1c2VkLCBidXQgZXZh
bHVhdGluZyBrZXkgcGF0aCBvbiBlYWNoIHB1dCgpIGNhbGwgd2lsbCBleGVyY2lzZSAoZGUpc2Vy
aWFsaXphdGlvbjoiKTsKKyAgICBldmFsQW5kTG9nKCJzdG9yZS5jcmVhdGVJbmRleCgnaW5kZXhO
YW1lJywgJ2R1bW15S2V5UGF0aCcpIik7CiB9CiAKIGZ1bmN0aW9uIHN0YXJ0VGVzdHMoKQpAQCAt
NTY1LDggKzU0MSw2IEBAIGZ1bmN0aW9uIHRlc3RCYWRUeXBlcygpCiAgICAgZXZhbEFuZEV4cGVj
dEV4Y2VwdGlvbigic3RvcmUucHV0KGRvY3VtZW50LmJvZHksICdrZXknKSIsICJET01FeGNlcHRp
b24uREFUQV9DTE9ORV9FUlIiKTsKIH0KIAotdGVzdCgpOwotCiA8L3NjcmlwdD4KIDxzY3JpcHQg
c3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgog
PC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNh
Y3Rpb24tY29tcGxldGUtd2l0aC1qcy1yZWN1cnNpb24tY3Jvc3MtZnJhbWUtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tY29tcGxldGUtd2l0
aC1qcy1yZWN1cnNpb24tY3Jvc3MtZnJhbWUtZXhwZWN0ZWQudHh0CmluZGV4IDkyYzQwODNhMWRl
NDU1NGIzZGY4OGRkZTQzYzk0NzQ3YWM2ZjU5YTEuLmZlZjUzYTJhNmViNzY2NThhMjkwOWIyYjli
ZjdiODE1MzE4ZDY3MDEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L3RyYW5zYWN0aW9uLWNvbXBsZXRlLXdpdGgtanMtcmVjdXJzaW9uLWNyb3NzLWZyYW1lLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1j
b21wbGV0ZS13aXRoLWpzLXJlY3Vyc2lvbi1jcm9zcy1mcmFtZS1leHBlY3RlZC50eHQKQEAgLTEs
NCArMSwzIEBACi1DT05TT0xFIE1FU1NBR0U6IFRoZSBzZXRWZXJzaW9uKCkgbWV0aG9kIGlzIG5v
bi1zdGFuZGFyZCBhbmQgd2lsbCBiZSByZW1vdmVkLiBVc2UgdGhlICJ1cGdyYWRlbmVlZGVkIiBl
dmVudCBpbnN0ZWFkLgogVGVzdCB0aGF0IHBlbmRpbmcgdHJhbnNhY3Rpb25zIGFyZSBub3QgY29t
cGxldGVkIGR1cmluZyByZWN1cnNpdmUgSlMgY2FsbHMgdW50aWwgYWxsIEpTIChpbiBhbGwgZnJh
bWVzKSBpcyBmaW5pc2hlZC4KIAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgpAQCAtNiwxMCAr
NSw5IEBAIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFCiAKIGluZGV4ZWREQiA9IHNlbGYuaW5kZXhl
ZERCIHx8IHNlbGYud2Via2l0SW5kZXhlZERCIHx8IHNlbGYubW96SW5kZXhlZERCIHx8IHNlbGYu
bXNJbmRleGVkREIgfHwgc2VsZi5PSW5kZXhlZERCOwogCi1pbmRleGVkREIuZGVsZXRlRGF0YWJh
c2UoJ3RyYW5zYWN0aW9uLWNvbXBsZXRlLXdpdGgtanMtcmVjdXJzaW9uLWNyb3NzLWZyYW1lJykK
LWluZGV4ZWREQi5vcGVuKCd0cmFuc2FjdGlvbi1jb21wbGV0ZS13aXRoLWpzLXJlY3Vyc2lvbi1j
cm9zcy1mcmFtZScpCi1kYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQKLWRiLnNldFZlcnNpb24oJ25l
dyB2ZXJzaW9uJykKK2RibmFtZSA9ICJ0cmFuc2FjdGlvbi1jb21wbGV0ZS13aXRoLWpzLXJlY3Vy
c2lvbi1jcm9zcy1mcmFtZS5odG1sIgoraW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKGRibmFtZSkK
K2luZGV4ZWREQi5vcGVuKGRibmFtZSkKIHBlbmRpbmdUcmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0
aW9uKFsnb2JqZWN0U3RvcmUnXSwgJ3JlYWR3cml0ZScpCiBTdGFydCByZS1lbnRyYW50IEpTCiB0
cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKFsnb2JqZWN0U3RvcmUnXSwgJ3JlYWR3cml0ZScp
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1j
b21wbGV0ZS13aXRoLWpzLXJlY3Vyc2lvbi1jcm9zcy1mcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tY29tcGxldGUtd2l0aC1qcy1yZWN1cnNpb24t
Y3Jvc3MtZnJhbWUuaHRtbAppbmRleCBjYWVhNzM1Mjk2YmMzMzJlNWFjZWQzNTc5MjFkMGQ3MGZj
ZmMzMWVkLi42YzA3N2RlZTNjNjc1NGQ5YmNjMWYyOWJkNTUzMzJkNzA5MzY5NmY2IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1jb21wbGV0ZS13
aXRoLWpzLXJlY3Vyc2lvbi1jcm9zcy1mcmFtZS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWNvbXBsZXRlLXdpdGgtanMtcmVjdXJzaW9uLWNyb3Nz
LWZyYW1lLmh0bWwKQEAgLTE3LDI3ICsxNywxMSBAQCB2YXIgYm9keSA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJpZnJhbWUiKVswXS5jb250ZW50RG9jdW1lbnQuYm9keTsKIAogZGVz
Y3JpcHRpb24oIlRlc3QgdGhhdCBwZW5kaW5nIHRyYW5zYWN0aW9ucyBhcmUgbm90IGNvbXBsZXRl
ZCBkdXJpbmcgcmVjdXJzaXZlIEpTIGNhbGxzIHVudGlsIGFsbCBKUyAoaW4gYWxsIGZyYW1lcykg
aXMgZmluaXNoZWQuIik7CiAKLWZ1bmN0aW9uIHNldHVwKCkgewotICAgIHJlbW92ZVZlbmRvclBy
ZWZpeGVzKCk7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5kZWxldGVEYXRh
YmFzZSgndHJhbnNhY3Rpb24tY29tcGxldGUtd2l0aC1qcy1yZWN1cnNpb24tY3Jvc3MtZnJhbWUn
KSIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgewotICAgICAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ3RyYW5zYWN0aW9uLWNvbXBsZXRlLXdpdGgtanMtcmVj
dXJzaW9uLWNyb3NzLWZyYW1lJykiKTsKLSAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXRW
ZXJzaW9uOwotICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKLSAgICB9OwotfQotCi1mdW5jdGlvbiBzZXRWZXJzaW9uKCkgewotICAgIGRiID0gZXZhbEFu
ZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IHNldFZlcnNpb25TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBzZXRWZXJzaW9uU3VjY2VzcygpIHsKK2luZGV4
ZWREQlRlc3QocHJlcGFyZURhdGFiYXNlLCBjbGljayk7CitmdW5jdGlvbiBwcmVwYXJlRGF0YWJh
c2UoKQoreworICAgIGRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKICAgICBzdG9yZSA9IGRiLmNy
ZWF0ZU9iamVjdFN0b3JlKCdvYmplY3RTdG9yZScsIG51bGwpOwotICAgIGV2ZW50LnRhcmdldC5y
ZXN1bHQub25jb21wbGV0ZSA9IGNsaWNrOwogfQogCiBmdW5jdGlvbiBjbGljaygpIHsKQEAgLTY4
LDggKzUyLDYgQEAgZnVuY3Rpb24gY29tcGxldGVDYWxsYmFjaygpCiAgICAgZmluaXNoSlNUZXN0
KCk7CiB9CiAKLXNldHVwKCk7Ci0KIDwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1jb21wbGV0ZS13
aXRoLWpzLXJlY3Vyc2lvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi90cmFuc2FjdGlvbi1jb21wbGV0ZS13aXRoLWpzLXJlY3Vyc2lvbi1leHBlY3RlZC50eHQK
aW5kZXggNjMzZTkyODVhNDBlMmM1Yjg0MTJkN2M1OTJlNGJmMTdiOTc2NzIyZS4uODg2ZmUxMzIx
ZTAzOWQwZDgxMzIxNmU3M2VmYjU4MWZiYTYyMzNlYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tY29tcGxldGUtd2l0aC1qcy1yZWN1cnNpb24t
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0
aW9uLWNvbXBsZXRlLXdpdGgtanMtcmVjdXJzaW9uLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDMg
QEAKLUNPTlNPTEUgTUVTU0FHRTogVGhlIHNldFZlcnNpb24oKSBtZXRob2QgaXMgbm9uLXN0YW5k
YXJkIGFuZCB3aWxsIGJlIHJlbW92ZWQuIFVzZSB0aGUgInVwZ3JhZGVuZWVkZWQiIGV2ZW50IGlu
c3RlYWQuCiBUZXN0IHRoYXQgcGVuZGluZyB0cmFuc2FjdGlvbnMgYXJlIG5vdCBjb21wbGV0ZWQg
ZHVyaW5nIHJlY3Vyc2l2ZSBKUyBjYWxscyB1bnRpbCBhbGwgSlMgaXMgZmluaXNoZWQuCiAKIE9u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KQEAgLTYsMTAgKzUsOSBAQCBPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURQogCiBpbmRleGVkREIgPSBzZWxmLmluZGV4ZWREQiB8fCBzZWxmLndlYmtpdEluZGV4
ZWREQiB8fCBzZWxmLm1vekluZGV4ZWREQiB8fCBzZWxmLm1zSW5kZXhlZERCIHx8IHNlbGYuT0lu
ZGV4ZWREQjsKIAotaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKCd0cmFuc2FjdGlvbi1jb21wbGV0
ZS13aXRoLWpzLXJlY3Vyc2lvbicpCi1pbmRleGVkREIub3BlbigndHJhbnNhY3Rpb24tY29tcGxl
dGUtd2l0aC1qcy1yZWN1cnNpb24nKQotZGIgPSBldmVudC50YXJnZXQucmVzdWx0Ci1kYi5zZXRW
ZXJzaW9uKCduZXcgdmVyc2lvbicpCitkYm5hbWUgPSAidHJhbnNhY3Rpb24tY29tcGxldGUtd2l0
aC1qcy1yZWN1cnNpb24uaHRtbCIKK2luZGV4ZWREQi5kZWxldGVEYXRhYmFzZShkYm5hbWUpCitp
bmRleGVkREIub3BlbihkYm5hbWUpCiBwZW5kaW5nVHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlv
bihbJ29iamVjdFN0b3JlJ10sICdyZWFkd3JpdGUnKQogU3RhcnQgcmUtZW50cmFudCBKUwogdHJh
bnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbihbJ29iamVjdFN0b3JlJ10sICdyZWFkd3JpdGUnKQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tY29t
cGxldGUtd2l0aC1qcy1yZWN1cnNpb24uaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3RyYW5zYWN0aW9uLWNvbXBsZXRlLXdpdGgtanMtcmVjdXJzaW9uLmh0bWwKaW5kZXggODRi
MGMzODk2ZDFiYWIzZGY2NDAyYTUyOGFiZjY4M2E0OTY2ZGRmNi4uOTgzZDJmYmViMjBiZTM0NzAy
YjYyN2M0YTE0OGVkZWVkOTFkN2NhYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvdHJhbnNhY3Rpb24tY29tcGxldGUtd2l0aC1qcy1yZWN1cnNpb24uaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1jb21wbGV0ZS13aXRo
LWpzLXJlY3Vyc2lvbi5odG1sCkBAIC0xMywyOSArMTMsMTEgQEAgdmFyIGJvZHkgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdOwogCiBkZXNjcmlwdGlvbigiVGVzdCB0
aGF0IHBlbmRpbmcgdHJhbnNhY3Rpb25zIGFyZSBub3QgY29tcGxldGVkIGR1cmluZyByZWN1cnNp
dmUgSlMgY2FsbHMgdW50aWwgYWxsIEpTIGlzIGZpbmlzaGVkLiIpOwogCi1mdW5jdGlvbiBzZXR1
cCgpIHsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coImluZGV4ZWREQi5kZWxldGVEYXRhYmFzZSgndHJhbnNhY3Rpb24tY29tcGxldGUtd2l0
aC1qcy1yZWN1cnNpb24nKSIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgewotICAgICAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ3RyYW5zYWN0aW9uLWNvbXBs
ZXRlLXdpdGgtanMtcmVjdXJzaW9uJykiKTsKLSAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBz
ZXRWZXJzaW9uOwotICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKLSAgICB9OwotfQotCi1mdW5jdGlvbiBzZXRWZXJzaW9uKCkgewotICAgIGRiID0gZXZh
bEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKLSAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IHNldFZlcnNpb25TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBzZXRWZXJzaW9uU3VjY2VzcygpCitpbmRl
eGVkREJUZXN0KHByZXBhcmVEYXRhYmFzZSwgY2xpY2spOworZnVuY3Rpb24gcHJlcGFyZURhdGFi
YXNlKCkKIHsKKyAgICBkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CiAgICAgc3RvcmUgPSBkYi5j
cmVhdGVPYmplY3RTdG9yZSgnb2JqZWN0U3RvcmUnLCBudWxsKTsKLSAgICBldmVudC50YXJnZXQu
cmVzdWx0Lm9uY29tcGxldGUgPSBjbGljazsKIH0KIAogZnVuY3Rpb24gY2xpY2soKQpAQCAtNjcs
OCArNDksNiBAQCBmdW5jdGlvbiBjb21wbGV0ZUNhbGxiYWNrKCkKICAgICBmaW5pc2hKU1Rlc3Qo
KTsKIH0KIAotc2V0dXAoKTsKLQogPC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3R1dG9yaWFsLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3R1dG9yaWFsLWV4cGVjdGVkLnR4dApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODY5MDFhY2ZiMmYzMWEwYWRjMWI2ZTM5ODIzYWMw
ZTIyYjllODcxYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90dXRvcmlhbC1leHBlY3RlZC50eHQKKysr
IC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLUNPTlNPTEUgTUVTU0FHRTogVGhlIHNldFZlcnNp
b24oKSBtZXRob2QgaXMgbm9uLXN0YW5kYXJkIGFuZCB3aWxsIGJlIHJlbW92ZWQuIFVzZSB0aGUg
InVwZ3JhZGVuZWVkZWQiIGV2ZW50IGluc3RlYWQuCi1QbGVhc2UgdmlldyBzb3VyY2UgZm9yIG1v
cmUgaW5mb3JtYXRpb24gb24gd2hhdCB0aGlzIGlzIGRvaW5nIGFuZCB3aHkuLi4KLQotRXZlcnl0
aGluZyB3b3JrZWQhCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L3R1dG9yaWFsLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90dXRvcmlhbC5o
dG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMjg5YTg1ZDYwZDM4ZjA0ODZkZWFk
MzllZDkwOWIwNTc5MGI3ZWY3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3R1dG9yaWFsLmh0bWwKKysr
IC9kZXYvbnVsbApAQCAtMSw0MzggKzAsMCBAQAotPGh0bWw+PHRpdGxlPkluZGV4ZWREQiBUdXRv
cmlhbDwvdGl0bGU+Ci08c2NyaXB0PgotCi0vLyBUaGlzIGlzIGEgdHV0b3JpYWwgdGhhdCBoaWdo
bGlnaHRzIG1hbnkgb2YgdGhlIGZlYXR1cmVzIG9mIEluZGV4ZWREQiBhbG9uZyB3aXRoYSBudW1i
ZXIgb2YKLS8vIGNhdmVhdHMgdGhhdCBjdXJyZW50bHkgZXhpc3QgaW4gQ2hyb21pdW0vV2ViS2l0
IGJ1dCB3aGljaCB3aWxsIGhvcGVmdWxseSBiZSBpbXByb3ZlZCB1cG9uCi0vLyBvdmVyIHRpbWUu
Ci0vLwotLy8gVGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoZSBzcGVjIGNhbiBiZSBmb3VuZCBoZXJl
OgotLy8gaHR0cDovL2R2Y3MudzMub3JnL2hnL0luZGV4ZWREQi9yYXctZmlsZS90aXAvT3ZlcnZp
ZXcuaHRtbCBidXQgbm90ZSB0aGF0IHRoZXJlIGFyZSBxdWl0ZSBhCi0vLyBmZXcgYnVncyBjdXJy
ZW50bHkgb3BlbmVkIGFnYWluc3QgaXQgYW5kIHNvbWUgbWFqb3IgdW5yZXNvbHZlZCBpc3N1ZXMg
KGxpa2Ugd2hldGhlciBkeW5hbWljCi0vLyB0cmFuc2FjdGlvbnMgc2hvdWxkIGJlIGluIGZvciB2
MSkuIE1hbnkgb2YgdGhlIGJ1Z3MgYXJlIGZpbGVkIGhlcmU6Ci0vLyBodHRwOi8vd3d3LnczLm9y
Zy9CdWdzL1B1YmxpYy9idWdsaXN0LmNnaT9xdWVyeV9mb3JtYXQ9YWR2YW5jZWQmc2hvcnRfZGVz
Y190eXBlPWFsbHdvcmRzc3Vic3RyJnNob3J0X2Rlc2M9JmNvbXBvbmVudD1JbmRleGVkK0RhdGFi
YXNlK0FQSSZsb25nZGVzY190eXBlPWFsbHdvcmRzc3Vic3RyJmxvbmdkZXNjPSZidWdfZmlsZV9s
b2NfdHlwZT1hbGx3b3Jkc3N1YnN0ciZidWdfZmlsZV9sb2M9JnN0YXR1c193aGl0ZWJvYXJkX3R5
cGU9YWxsd29yZHNzdWJzdHImc3RhdHVzX3doaXRlYm9hcmQ9JmtleXdvcmRzX3R5cGU9YWxsd29y
ZHMma2V5d29yZHM9JmJ1Z19zdGF0dXM9TkVXJmJ1Z19zdGF0dXM9QVNTSUdORUQmYnVnX3N0YXR1
cz1SRU9QRU5FRCZlbWFpbHR5cGUxPXN1YnN0cmluZyZlbWFpbDE9JmVtYWlsdHlwZTI9c3Vic3Ry
aW5nJmVtYWlsMj0mYnVnX2lkX3R5cGU9YW55ZXhhY3QmYnVnX2lkPSZ2b3Rlcz0mY2hmaWVsZGZy
b209JmNoZmllbGR0bz1Ob3cmY2hmaWVsZHZhbHVlPSZjbWR0eXBlPWRvaXQmb3JkZXI9UmV1c2Ur
c2FtZStzb3J0K2FzK2xhc3QrdGltZSZrbm93bl9uYW1lPUluZGV4ZWREQiZxdWVyeV9iYXNlZF9v
bj1JbmRleGVkREImZmllbGQwLTAtMD1ub29wJnR5cGUwLTAtMD1ub29wJnZhbHVlMC0wLTA9Ci0v
LyBEaXNjdXNzaW9uIGhhcHBlbnMgb24gcHVibGljLXdlYmFwcHNAdzMub3JnCi0vLwotLy8gQWx0
aG91Z2ggbm90IHVzZXIgZnJpZW5kbHksIGFkZGl0aW9uYWwgY2FwYWJpbGl0aWVzIGFuZCBleGFt
cGxlIGNvZGUgY2FuIGJlIGZvdW5kIGluIHRoZQotLy8gdGVzdHMgZm9yIEluZGV4ZWREQiB3aGlj
aCBhcmUgaGVyZToKLS8vIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvYnJvd3Nlci90cnVuay9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYgotLy8KLS8vIFRoaXMgZG9jdW1lbnQgaXMgY3VycmVu
dGx5IG1haW50YWluZWQgYnkgSmVyZW15IE9ybG93IDxqb3Jsb3dAY2hyb21pdW0ub3JnPgotCi0K
LS8vIFRoaXMgaXMgbm90IGFuIGlkZWFsIGxheW91dCB0ZXN0IHNpbmNlIGl0IGRvZXNuJ3QgdmVy
aWZ5IHRoaW5ncyBhcyB0aG9yb3VnaGx5IGFzIGl0IGNvdWxkLAotLy8gYnV0IGFkZGluZyBzdWNo
IGNvbnRlbnQgd291bGQgbWFrZSBpdCBtdWNoIG1vcmUgY2x1dHRlcmVkIGFuZCB0aHVzIHdvdWxk
bid0IHNlcnZlIGl0cyBwcmltYXJ5Ci0vLyBnb2FsIG9mIHRlYWNoaW5nIHBlb3BsZSBJbmRleGVk
REIuIFRoYXQgc2FpZCwgaXQgZG9lcyBoYXZlIGEgZ29vZCBhbW91bnQgb2YgY292ZXJhZ2UgYW5k
Ci0vLyBzZXJ2ZXMgYXMgYSBsaXZpbmcgZG9jdW1lbnQgZGVzY3JpYmluZyB3aGF0J3MgZXhwZWN0
ZWQgdG8gd29yayBhbmQgaG93IHdpdGhpbiBXZWJLaXQgc28gaXQKLS8vIHNlZW1zIHdlbGwgd29y
dGggaGF2aW5nIGNoZWNrZWQgaW4uCi1pZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLSAgICB0ZXN0
UnVubmVyLmR1bXBBc1RleHQoKTsKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLX0K
LQotCi1mdW5jdGlvbiBzZXR1cCgpCi17Ci0gICAgLy8gQXMgdGhpcyBBUEkgaXMgc3RpbGwgZXhw
ZXJpbWVudGFsLCBpdCdzIGJlaW5nIHNoaXBwZWQgYmVoaW5kIHZlbmRvciBzcGVjaWZpYyBwcmVm
aXhlcy4KLSAgICBpZiAoJ3dlYmtpdEluZGV4ZWREQicgaW4gd2luZG93KSB7Ci0gICAgICAgIGlu
ZGV4ZWREQiA9IHdlYmtpdEluZGV4ZWREQjsKLSAgICAgICAgSURCQ3Vyc29yID0gd2Via2l0SURC
Q3Vyc29yOwotICAgICAgICBJREJLZXlSYW5nZSA9IHdlYmtpdElEQktleVJhbmdlOwotICAgICAg
ICBJREJUcmFuc2FjdGlvbiA9IHdlYmtpdElEQlRyYW5zYWN0aW9uOwotICAgIH0KLQotICAgIC8v
IFRoaXMgdHV0b3JpYWwgYXNzdW1lcyB0aGF0IE1vemlsbGEgYW5kIFdlYktpdCBtYXRjaCBlYWNo
IG90aGVyIHdoaWNoIGlzbid0IHRydWUgYXQgdGhlCi0gICAgLy8gbW9tZW50LCBidXQgd2UgY2Fu
IGhvcGUgaXQnbGwgYmVjb21lIHRydWUgb3ZlciB0aW1lLgotICAgIGlmICgnbW96X2luZGV4ZWRE
QicgaW4gd2luZG93KSB7Ci0gICAgICAgIGluZGV4ZWREQiA9IG1vel9pbmRleGVkREI7Ci0gICAg
ICAgIC8vIE5vdCBpbXBsZW1lbnRlZCBieSB0aGVtIHlldC4gSSdtIGp1c3QgZ3Vlc3Npbmcgd2hh
dCB0aGV5J2xsIGJlLgotICAgICAgICBJREJDdXJzb3IgPSBtb3pfSURCQ3Vyc29yOwotICAgICAg
ICBJREJLZXlSYW5nZSA9IG1vel9JREJLZXlSYW5nZTsKLSAgICAgICAgSURCVHJhbnNhY3Rpb24g
PSBtb3pfSURCVHJhbnNhY3Rpb247Ci0gICAgfQotfQotCi1mdW5jdGlvbiBsb2codHh0KQotewot
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2dnZXIiKS5pbm5lckhUTUwgKz0gdHh0ICsg
Ijxicj4iOwotfQotCi1mdW5jdGlvbiBsb2dFcnJvcih0eHQpCi17Ci0gICAgbG9nKCI8Zm9udCBj
b2xvcj1yZWQ+IiArIHR4dCArICI8L2ZvbnQ+Iik7Ci19Ci0KLWZ1bmN0aW9uIHN0YXJ0KCkKLXsK
LSAgICBzZXR1cCgpOwotCi0gICAgLy8gVGhpcyBpcyBhbiBleGFtcGxlIG9mIG9uZSBvZiB0aGUg
bWFueSBhc3luY2hyb25vdXMgY29tbWFuZHMgaW4gSW5kZXhlZERCJ3MgYXN5bmMgaW50ZXJmYWNl
LgotICAgIC8vIEVhY2ggcmV0dXJucyBhbiBJREJSZXF1ZXN0IG9iamVjdCB3aGljaCBoYXMgInN1
Y2Nlc3MiIGFuZCAiZXJyb3IiIGV2ZW50IGhhbmRsZXJzLiBZb3UgY2FuIHVzZQotICAgIC8vICJh
ZGRFdmVudExpc3RlbmVyIiBpZiB5b3UnZCBsaWtlLCBidXQgSSdtIHVzaW5nIHRoZSBzaW1wbGVy
ID0gc3ludGF4LiBPbmx5IG9uZSBvciB0aGUgb3RoZXIKLSAgICAvLyB3aWxsIGZpcmUuIFlvdSdy
ZSBndWFyYW50ZWVkIHRoYXQgdGhleSB3b24ndCBmaXJlIHVudGlsIGNvbnRyb2wgaXMgcmV0dXJu
ZWQgZnJvbSBKYXZhU2NyaXB0Ci0gICAgLy8gZXhlY3V0aW9uLgotICAgIHZhciByZXF1ZXN0ID0g
aW5kZXhlZERCLm9wZW4oInR1dG9yaWFsREIiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9u
T3BlbjsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3I7Ci19Ci0KLWZ1bmN0
aW9uIHVuZXhwZWN0ZWRFcnJvcigpCi17Ci0gICAgLy8gSWYgYW4gYXN5bmNocm9ub3VzIGNhbGwg
cmVzdWx0cyBpbiBhbiBlcnJvciwgYW4gImVycm9yIiBldmVudCB3aWxsIGZpcmUgb24gdGhlIElE
QlJlcXVlc3QKLSAgICAvLyBvYmplY3QgdGhhdCB3YXMgcmV0dXJuZWQgYW5kIHRoZSBldmVudCdz
IGNvZGUgYW5kIG1lc3NhZ2UgYXR0cmlidXRlcyB3aWxsIGJlIHBvcHVsYXRlZCB3aXRoCi0gICAg
Ly8gdGhlIGNvcnJlY3QgdmFsdWVzLgotICAgIGxvZ0Vycm9yKCJFcnJvciAiICsgZXZlbnQuY29k
ZSArICI6ICIgKyBldmVudC5tZXNzYWdlKTsKLQotICAgIC8vIElmIHRoZSBkZWZhdWx0IGJlaGF2
aW9yIG9mIHRoZSBlcnJvciBpcyBub3QgcHJldmVudGVkLCB0aGUgdHJhbnNhY3Rpb24gd2lsbCBp
bXBsaWNpdGx5Ci0gICAgLy8gYmUgYWJvcnRlZC4KLX0KLQotZnVuY3Rpb24gb25PcGVuKCkKLXsK
LSAgICAvLyBJZiBhbiBhc3luY2hyb25vdXMgY2FsbCByZXN1bHRzIGluIHN1Y2Nlc3MsIGEgInN1
Y2Nlc3MiIGV2ZW50IHdpbGwgZmlyZSBvbiB0aGUgSURCUmVxdWVzdAotICAgIC8vIG9iamVjdCB0
aGF0IHdhcyByZXR1cm5lZCAoaS5lLiBpdCdsbCBiZSB0aGUgZXZlbnQgdGFyZ2V0KSwgd2hpY2gg
bWVhbnMgdGhhdCB5b3UgY2FuIHNpbXBseQotICAgIC8vIGxvb2sgYXQgZXZlbnQudGFyZ2V0LnJl
c3VsdCB0byBnZXQgdGhlIHJlc3VsdCBvZiB0aGUgY2FsbC4gSW4gc29tZSBjYXNlcywgdGhlIGV4
cGVjdGVkCi0gICAgLy8gcmVzdWx0IHdpbGwgYmUgbnVsbC4KLSAgICB3aW5kb3cuZGIgPSBldmVu
dC50YXJnZXQucmVzdWx0OwotCi0gICAgLy8gVGhlIElEQkRhdGFiYXNlIG9iamVjdCBoYXMgYSAi
dmVyc2lvbiIgYXR0cmlidXRlLiBUaGlzIGNhbiBvbmx5IGJlIHNldCBieSBjYWxsaW5nCi0gICAg
Ly8gInNldFZlcnNpb24iIG9uIHRoZSBkYXRhYmFzZSBhbmQgc3VwcGx5aW5nIGEgbmV3IHZlcnNp
b24uIFRoaXMgYWxzbyBzdGFydHMgYSBuZXcKLSAgICAvLyB0cmFuc2FjdGlvbiB3aGljaCBpcyB2
ZXJ5IHNwZWNpYWwuIFRoZXJlIGFyZSBtYW55IGRldGFpbHMgYW5kIGdvdGNoYXMgc3Vycm91bmRp
bmcKLSAgICAvLyBzZXRWZXJzaW9uIHdoaWNoIHdlJ2xsIGdldCBpbnRvIGxhdGVyLgotICAgIGlm
IChkYi52ZXJzaW9uID09ICIxLjAiKSB7Ci0gICAgICAgIC8vIFdlIGNvdWxkIHNraXAgc2V0dGlu
ZyB1cCB0aGUgb2JqZWN0IHN0b3JlcyBhbmQgaW5kZXhlcyBpZiB0aGlzIHdlcmUgYSByZWFsIGFw
cGxpY2F0aW9uCi0gICAgICAgIC8vIHRoYXQgd2Fzbid0IGdvaW5nIHRvIGNoYW5nZSB0aGluZ3Mg
d2l0aG91dCBjaGFuZ2luZyB0aGUgdmVyc2lvbiBudW1iZXIuIEJ1dCBzaW5jZSB0aGlzCi0gICAg
ICAgIC8vIGlzIGJvdGggYSB0dXRvcmlhbCBhbmQgYSBsaXZpbmcgZG9jdW1lbnQsIHdlJ2xsIGdv
IG9uIGFuZCBzZXQgdGhpbmdzIHVwIGV2ZXJ5IHRpbWUgd2UgcnVuLgotICAgIH0KLSAgICB2YXIg
cmVxdWVzdCA9IGRiLnNldFZlcnNpb24oIjEuMCIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
b25TZXRWZXJzaW9uOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvcjsKLX0K
LQotZnVuY3Rpb24gb25TZXRWZXJzaW9uKCkKLXsKLSAgICAvLyBXZSBhcmUgbm93IGluIGEgc2V0
VmVyc2lvbiB0cmFuc2FjdGlvbi4gU3VjaCBhIHRyYW5zYWN0aW9uIGlzIHRoZSBvbmx5IHBsYWNl
IHdoZXJlIG9uZQotICAgIC8vIGNhbiBhZGQgb3IgZGVsZXRlIGluZGV4ZXMgYW5kIG9iamVjdFN0
b3Jlcy4gVGhlIHJlc3VsdCAocHJvcGVydHkgb2YgdGhlIHJlcXVlc3QpIGlzIGFuCi0gICAgLy8g
SURCVHJhbnNhY3Rpb24gb2JqZWN0IHRoYXQgaGFzICJjb21wbGV0ZSIgYW5kICJhYm9ydCIgZXZl
bnQgaGFuZGxlcnMgd2hpY2ggdGVsbAotICAgIC8vIHVzIHdoZW4gdGhlIHRyYW5zYWN0aW9uIGhh
cyBjb21taXR0ZWQsIGFib3J0ZWQsIG9yIHRpbWVkIG91dC4KLSAgICB3aW5kb3cuY3VycmVudFRy
YW5zYWN0aW9uID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKLSAgICBjdXJyZW50VHJhbnNhY3Rpb24u
b25jb21wbGV0ZSA9IG9uU2V0VmVyc2lvbkNvbXBsZXRlOwotICAgIGN1cnJlbnRUcmFuc2FjdGlv
bi5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0OwotCi0gICAgLy8gRGVsZXRlIGV4aXN0aW5nIG9i
amVjdCBzdG9yZXMuCi0gICAgd2hpbGUgKGRiLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoKQotICAg
ICAgICBkYi5kZWxldGVPYmplY3RTdG9yZShkYi5vYmplY3RTdG9yZU5hbWVzWzBdKTsKLQotICAg
IC8vIE5vdyB0aGF0IHdlIGhhdmUgYSBibGFuayBzbGF0ZSwgbGV0J3MgY3JlYXRlIGFuIG9iamVj
dFN0b3JlLiBBbiBvYmplY3RTdG9yZSBpcyBzaW1wbHkgYW4KLSAgICAvLyBvcmRlcmVkIG1hcHBp
bmcgb2Yga2V5cyB0byB2YWx1ZXMuIFdlIGNhbiBpdGVyYXRlIHRocm91Z2ggcmFuZ2VzIG9mIGtl
eXMgb3IgZG8gaW5kaXZpZHVhbAotICAgIC8vIGxvb2t1cHMuIE9iamVjdFN0b3JlcyBkb24ndCBo
YXZlIGFueSBzY2hlbWEuCi0gICAgLy8KLSAgICAvLyBLZXlzIGNhbiBiZSBpbnRlZ2Vycywgc3Ry
aW5ncywgb3IgbnVsbC4gKFRoZSBzcGVjIGFsc28gZGVmaW5lcyBkYXRlcyBhbmQgdGhlcmUncyB0
YWxrIG9mCi0gICAgLy8gaGFuZGxpbmcgYXJyYXlzLCBidXQgdGhlc2UgYXJlIG5vdCBpbXBsZW1l
bnRlZCB5ZXQgaW4gQ2hyb21pdW0vV2ViS2l0LikgVmFsdWVzIGNhbiBiZQotICAgIC8vIGFueXRo
aW5nIHN1cHBvcnRlZCBieSB0aGUgc3RydWN0dXJlZCBjbG9uZSBhbGdvcml0aG0KLSAgICAvLyAo
aHR0cDovL2Rldi53My5vcmcvaHRtbDUvc3BlYy9PdmVydmlldy5odG1sI2ludGVybmFsLXN0cnVj
dHVyZWQtY2xvbmluZy1hbGdvcml0aG0pIHdoaWNoCi0gICAgLy8gaXMgYSBzdXBlcnNldCBvZiB3
aGF0IGNhbiBiZSBleHByZXNzZWQgaW4gSlNPTi4gKE5vdGUgdGhhdCBDaHJvbWl1bS9XZWJLaXQg
ZG9lcyBub3QgZnVsbHkKLSAgICAvLyBpbXBsZW1lbnQgdGhlIHN0cnVjdHVyZWQgY2xvbmUgYWxn
b3JpdGhtIHlldCwgYnV0IGl0IGRlZmluaXRlbHkgaGFuZGxlcyBhbnl0aGluZyBKU09OCi0gICAg
Ly8gc2VyaWFsaXphYmxlLikKLSAgICAvLwotICAgIC8vIFRoZXJlIGFyZSB0d28gdHlwZXMgb2Yg
b2JqZWN0U3RvcmVzOiBvbmVzIHdoZXJlIHRoZSBwYXRoIGlzIHN1cHBsaWVkIG1hbnVhbGx5IGV2
ZXJ5IHRpbWUgYQotICAgIC8vIHZhbHVlIGlzIGluc2VydGVkIGFuZCB0aG9zZSB3aXRoIGEgImtl
eSBwYXRoIi4gQSBrZXlQYXRoIGlzIGVzc2VudGlhbGx5IGEgSmF2YVNjcmlwdAotICAgIC8vIGV4
cHJlc3Npb24gdGhhdCBpcyBldmFsdWF0ZWQgb24gZXZlcnkgdmFsdWUgdG8gZXh0cmFjdCBhIGtl
eS4gRm9yIGV4YW1wbGUsIGlmIHlvdSBwYXNzIGluCi0gICAgLy8gdGhlIHZhbHVlIG9mICJ7Zm5h
bWU6ICdqb2huJywgbG5hbWU6ICdkb2UnLCBhZGRyZXNzOiB7c3RyZWV0OiAnQnVja2luZ2hhbSBQ
YWxhY2UiLCBudW1iZXI6Ci0gICAgLy8gNzZ9LCBzaWJsaW5nczogWyJOYW5jeSIsICJNYXJjdXMi
XSwgaWQ6IDIyfSIgYW5kIGFuIG9iamVjdFN0b3JlIGhhcyBhIGtleVBhdGggb2YgImlkIiB0aGVu
Ci0gICAgLy8gMjIgd2lsbCBiZSB0aGUga2V5IGZvciB0aGlzIHZhbHVlLiBJbiBvYmplY3RTdG9y
ZXMsIGVhY2gga2V5IG11c3QgYmUgdW5pcXVlLgotICAgIC8vCi0gICAgLy8gTm90ZSB0aGF0IHRo
ZSBleGFjdCBzeW50YXggYWxsb3dlZCBmb3Iga2V5UGF0aHMgaXMgbm90IHlldCB3ZWxsIHNwZWNp
ZmllZCwgYnV0Ci0gICAgLy8gQ2hyb21pdW0vV2ViS2l0IGN1cnJlbnRseSBhbGxvd3MgcGF0aHMg
dGhhdCBhcmUgbXVsdGlwbGUgbGV2ZWxzIGRlZXAgd2l0aGluIGFuIG9iamVjdCBhbmQKLSAgICAv
LyBhbGxvd3MgdGhhdCB0byBiZSBpbnRlcm1peGVkIHdpdGggYXJyYXkgZGVyZWZlcmVuY2VzLiBT
bywgZm9yIGV4YW1wbGUsIGEga2V5IHBhdGggb2YKLSAgICAvLyAiYWRkcmVzcy5udW1iZXIiIG9y
ICJzaWJsaW5nc1swXSIgd291bGQgYmUgbGVnYWwgKHByb3ZpZGVkIGV2ZXJ5IGVudHJ5IGhhZCBh
biBhZGRyZXNzIHdpdGgKLSAgICAvLyBhIG51bWJlciBhdHRyaWJ1dGUgYW5kIGF0IGxlYXN0IG9u
ZSBzaWJsaW5nKS4gWW91IGNhbiBldmVuIGdvIHdpbGQgYW5kIHNheQotICAgIC8vICJmb29bMF1b
Ml0uYmFyWzBdLmJhei50ZXN0WzFdWzJdWzNdIi4gSXQncyBwb3NzaWJsZSB0aGlzIHdpbGwgY2hh
bmdlIGluIHRoZSBmdXR1cmUgdGhvdWdoLgotICAgIC8vCi0gICAgLy8gSWYgeW91IHNldCBhdXRv
SW5jcmVtZW50IChhbm90aGVyIG9wdGlvbmFsIHBhcmFtZXRlciksIEluZGV4ZWREQiB3aWxsIGdl
bmVyYXRlIGEga2V5Ci0gICAgLy8gZm9yIHlvdXIgZW50cnkgYXV0b21hdGljYWxseS4gQW5kIGlm
IHlvdSBoYXZlIGEga2V5UGF0aCBzZXQsIGl0J2xsIHNldCB0aGUgdmFsdWUgYXQKLSAgICAvLyB0
aGUgbG9jYXRpb24gb2YgdGhlIGtleVBhdGggX2luIHRoZSBkYXRhYmFzZV8gKGkuZS4gaXQgd2ls
bCBub3QgbW9kaWZ5IHRoZSB2YWx1ZSB5b3UgcGFzcwotICAgIC8vIGluIHRvIHB1dC9hZGQpLiBV
bmZvcnR1bmF0ZWx5IGF1dG9JbmNyZW1lbnQgaXMgbm90IHlldCBpbXBsZW1lbnRlZCBpbiBDaHJv
bWl1bS9XZWJLaXQuCi0gICAgLy8KLSAgICAvLyBBbm90aGVyIG9wdGlvbmFsIHBhcmFtZXRlciwg
ImV2aWN0YWJsZSIgaXMgbm90IHlldCBpbXBsZW1lbnRlZC4gV2hlbiBpdCBpcywgaXQnbGwgaGlu
dAotICAgIC8vIHdoaWNoIGRhdGEgc2hvdWxkIGJlIGRlbGV0ZWQgZmlyc3QgaWYgdGhlIGJyb3dz
ZXIgZGVjaWRlcyB0aGlzIG9yaWdpbiBpcyB1c2luZyB0b28gbXVjaAotICAgIC8vIHN0b3JhZ2Uu
IChUaGUgYWx0ZXJuYXRpdmUgaXMgdGhhdCBpdCdsbCBzdWdnZXN0IHRoZSB1c2VyIGRlbGV0ZSBl
dmVyeXRoaW5nIGZyb20gdGhlCi0gICAgLy8gb3JpZ2luLCBzbyBpdCdzIGluIHlvdXIgZmF2b3Ig
dG8gc2V0IGl0IGFwcHJvcGVyYXRlbHkhKSBUaGlzIGlzIGdyZWF0IGZvciB3aGVuIHlvdSBoYXZl
Ci0gICAgLy8gc29tZSBhYnNvbHV0ZWx5IGNyaXRpY2FsIGRhdGEgKGxpa2UgdW5zZXQgZW1haWxz
KSBhbmQgYSBidW5jaCBvZiBsZXNzIGNyaXRpY2FsLCAoYnV0Ci0gICAgLy8gbWF5YmUgc3RpbGwg
aW1wb3J0YW50ISkgZGF0YS4KLSAgICAvLwotICAgIC8vIEFsbCBvZiB0aGVzZSBvcHRpb25zIGNh
biBiZSBwYXNzZWQgaW50byBjcmVhdGVPYmplY3RTdG9yZSB2aWEgaXRzIChvcHRpb25hbCkgc2Vj
b25kCi0gICAgLy8gcGFyYW1ldGVyLiBTbywgaWYgeW91IHdhbnRlZCB0byBkZWZpbmUgYWxsLCBZ
b3UnZCBkbyB7a2V5UGF0aDogInNvbWV0aGluZyIsCi0gICAgLy8gZXZpY3RhYmxlOiB0cnVlLCBh
dXRvSW5jcmVtZW50OiB0cnVlfS4gWW91IGNhbiBhbHNvIHBhc3MgaW4gc3Vic2V0cyBvZiBhbGwg
dGhyZWUgb3IKLSAgICAvLyBvbWl0IHRoZSBvYmplY3QgKHNpbmNlIGl0J3Mgb3B0aW9uYWwpLgot
ICAgIC8vCi0gICAgLy8gTGV0J3Mgbm93IGNyZWF0ZSBhbiBvYmplY3RTdG9yZSBmb3IgcGVvcGxl
LiBXZSdsbCBzdXBwbHkgYSBrZXkgcGF0aCBpbiB0aGlzIGNhc2UuCi0gICAgdmFyIG9iamVjdFN0
b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoInBlb3BsZSIsIHtrZXlQYXRoOiAiaWQifSk7Ci0K
LSAgICAvLyBOb3RpY2UgdGhhdCBpdCByZXR1cm5lZCBzeW5jaHJvbm91c2x5LiBUaGUgcnVsZSBv
ZiB0aHVtYiBpcyB0aGF0IGFueSBjYWxsIHRoYXQgdG91Y2hlcyAoaW4KLSAgICAvLyBhbnkgd2F5
KSBrZXlzIG9yIHZhbHVlcyBpcyBhc3luY2hyb25vdXMgYW5kIGFueSBvdGhlciBjYWxsIChiZXNp
ZGVzIHNldFZlcnNpb24gYW5kIG9wZW4pIGFyZQotICAgIC8vIGFzeW5jaHJvbm91cy4KLSAgICAv
LwotICAgIC8vIE5vdyBsZXQncyBjcmVhdGUgc29tZSBpbmRleGVzLiBJbmRleGVzIGFsbG93IHlv
dSB0byBjcmVhdGUgb3RoZXIga2V5cyB2aWEga2V5IHBhdGhzIHdoaWNoCi0gICAgLy8gd2lsbCBh
bHNvIHBvaW50IHRvIGEgcGFydGljdWxhciB2YWx1ZSBpbiBhbiBvYmplY3RTdG9yZS4gSW4gdGhp
cyBleGFtcGxlLCB3ZSdsbCBjcmVhdGUKLSAgICAvLyBpbmRleGVzIGZvciBhIHBlcnNvbnMgZmly
c3QgYW5kIGxhc3QgbmFtZS4gSW5kZXhlcyBjYW4gb3B0aW9uYWxseSBiZSBzcGVjaWZpZWQgdG8g
bm90IGJlCi0gICAgLy8gdW5pcXVlLCB3aGljaCBpcyBnb29kIGluIHRoZSBjYXNlIG9mIG5hbWVz
LiBUaGUgZmlyc3QgcGFyYW1ldGVyIGlzIHRoZSBuYW1lIG9mIHRoZSBpbmRleC4KLSAgICAvLyBT
ZWNvbmQgaXMgdGhlIGtleSBwYXRoLiBUaGUgdGhpcmQgc3BlY2lmaWVzIHVuaXF1ZW5lc3MuCi0g
ICAgdmFyIGZuYW1lID0gb2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoImZuYW1lIiwgImZuYW1lIiwg
eyB1bmlxdWU6IGZhbHNlfSk7Ci0gICAgdmFyIGxuYW1lID0gb2JqZWN0U3RvcmUuY3JlYXRlSW5k
ZXgoImxuYW1lIiwgImxuYW1lIiwgeyB1bmlxdWU6IGZhbHNlfSk7Ci0KLSAgICAvLyBOb3RlIHRo
YXQgaWYgeW91IHdhbnRlZCB0byBkZWxldGUgdGhlc2UgaW5kZXhlcywgeW91IGNhbiBlaXRoZXIg
Y2FsbCBvYmplY3RTdG9yZS5kZWxldGVJbmRleAotICAgIC8vIG9yIHNpbXBseSBkZWxldGUgdGhl
IG9iamVjdFN0b3JlcyB0aGF0IG93biB0aGUgaW5kZXhlcy4KLSAgICAvLwotICAgIC8vIElmIHdl
IHdhbnRlZCB0bywgd2UgY291bGQgcG9wdWxhdGUgdGhlIG9iamVjdFN0b3JlIHdpdGggc29tZSBk
YXRhIGhlcmUgb3IgZG8gYW55dGhpbmcgZWxzZQotICAgIC8vIGFsbG93ZWQgaW4gYSBub3JtYWwg
KGkuZS4gbm9uLXNldFZlcnNpb24pIHRyYW5zYWN0aW9uLiBUaGlzIGlzIHVzZWZ1bCBzbyB0aGF0
IGRhdGEgbWlncmF0aW9ucwotICAgIC8vIGNhbiBiZSBhdG9taWMgd2l0aCBjaGFuZ2VzIHRvIHRo
ZSBvYmplY3RTdG9yZXMvaW5kZXhlcy4KLSAgICAvLyAgICAKLSAgICAvLyBCZWNhdXNlIHdlIGhh
dmVuJ3QgYWN0dWFsbHkgbWFkZSBhbnkgbmV3IGFzeW5jaHJvbm91cyByZXF1ZXN0cywgdGhpcyB0
cmFuc2FjdGlvbiB3aWxsCi0gICAgLy8gc3RhcnQgY29tbWl0dGluZyBhcyBzb29uIGFzIHdlIGxl
YXZlIHRoaXMgZnVuY3Rpb24uIFRoaXMgd2lsbCBjYXVzZSBvbmNvbXBsZXRlIGV2ZW50IGhhbmRs
ZXIKLSAgICAvLyBmb3IgdGhlIHRyYW5zYWN0aW9uIHdpbGwgZmlyZSBzaG9ydGx5IGFmdGVyLiBJ
bmRleGVkREIgdHJhbnNhY3Rpb25zIGNvbW1pdCB3aGVuZXZlciBjb250cm9sIGlzCi0gICAgLy8g
cmV0dXJuZWQgZnJvbSBKYXZhU2NyaXB0IHdpdGggbm8gZnVydGhlciB3b3JrIGJlaW5nIHF1ZXVl
ZCB1cCBhZ2FpbnN0IHRoZSB0cmFuc2FjdGlvbi4gVGhpcwotICAgIC8vIG1lYW5zIG9uZSBjYW5u
b3QgY2FsbCBzZXRUaW1lb3V0LCBkbyBhbiBYSFIsIG9yIGFueXRoaW5nIGxpa2UgdGhhdCBhbmQg
ZXhwZWN0IG15IHRyYW5zYWN0aW9uCi0gICAgLy8gdG8gc3RpbGwgYmUgYXJvdW5kIHdoZW4gdGhh
dCBjb21wbGV0ZXMuCi0gICAgCi19Ci0KLWZ1bmN0aW9uIHVuZXhwZWN0ZWRBYm9ydCgpCi17Ci0g
ICAgbG9nRXJyb3IoIkEgdHJhbnNhY3Rpb24gYWJvcnRlZCB1bmV4cGVjdGVkbHkhIik7Ci19Ci0K
LWZ1bmN0aW9uIG9uU2V0VmVyc2lvbkNvbXBsZXRlKCkKLXsKLSAgICAvLyBMZXRzIGNyZWF0ZSBh
IG5ldyB0cmFuc2FjdGlvbiBhbmQgdGhlbiBub3Qgc2NoZWR1bGUgYW55IHdvcmsgb24gaXQgdG8g
d2F0Y2ggaXQgYWJvcnQgaXRzZWxmLgotICAgIC8vIFRyYW5zYWN0aW9ucyAoYmVzaWRlcyB0aG9z
ZSBjcmVhdGVkIHdpdGggc2V0VmVyc2lvbikgYXJlIGNyZWF0ZWQgc3luY2hyb25vdXNseS4gTGlr
ZQotICAgIC8vIGNyZWF0ZU9iamVjdFN0b3JlLCB0cmFuc2FjdGlvbiBvcHRpb25hbGx5IHRha2Vz
IGluIHZhcmlvdXMgb3B0aW9uYWwgcGFyYW1ldGVycy4KLSAgICAvLwotICAgIC8vIEZpcnN0IG9m
IGFsbCBpcyB0aGUgcGFyYW1ldGVyICJvYmplY3RTdG9yZU5hbWVzIi4gSWYgeW91IHBhc3MgaW4g
YSBzdHJpbmcsIHdlIGxvY2sganVzdCB0aGF0Ci0gICAgLy8gb2JqZWN0U3RvcmUuICBJZiB5b3Ug
cGFzcyBpbiBhbiBhcnJheSwgd2UgbG9jayB0aG9zZS4gQnkgc3BlY2lmeWluZyBsb2NrcyBvdmVy
IGZld2VyCi0gICAgLy8gb2JqZWN0U3RvcmVzIHlvdSBtYWtlIGl0IHBvc3NpYmxlIGZvciBicm93
c2VycyB0byBydW4gdHJhbnNhY3Rpb25zIGNvbmN1cnJlbnRseS4gVGhhdCBzYWlkLAotICAgIC8v
IENocm9taXVtL1dlYktpdCBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgeWV0LgotICAgIC8vCi0gICAg
Ly8gTmV4dCBpcyAibW9kZSIgd2hpY2ggc3BlY2lmaWVzIHRoZSBsb2NraW5nIG1vZGUuIFRoZSBk
ZWZhdWx0IGlzIFJFQURfT05MWSAoaS5lLiBhIHNoYXJlZCBsb2NrKS4KLSAgICAvLyBUaGF0J3Mg
ZmluZSBmb3IgdGhpcyBjYXNlLCBidXQgbGF0ZXIgd2UnbGwgYXNrIGZvciAncmVhZHdyaXRlJy4g
QXQgdGhlIG1vbWVudCwKLSAgICAvLyBDaHJvbWl1bS9XZWJLaXQgcHJldGVuZHMgZXZlcnkgdHJh
bnNhY3Rpb24gaXMgUkVBRF9XUklURSwgd2hpY2ggaXMga2luZCBvZiBiYWQuCi0gICAgd2luZG93
LmN1cnJlbnRUcmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKCJwZW9wbGUiLCAncmVhZHdyaXRl
Jyk7Ci0gICAgY3VycmVudFRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBvblRyYW5zYWN0aW9uQ29t
cGxldGVkOwotICAgIGN1cnJlbnRUcmFuc2FjdGlvbi5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0
OwotCi0gICAgLy8gVmVyaWZ5IHRoYXQgInBlb3BsZSIgaXMgdGhlIG9ubHkgb2JqZWN0IHN0b3Jl
IGluIGV4aXN0YW5jZS4gVGhlIG9iamVjdFN0b3JlTmFtZXMgYXR0cmlidXRlIGlzCi0gICAgLy8g
YSBET01TdHJpbmdMaXN0IHdoaWNoIGlzIHNvbWV3aGF0IGxpa2UgYW4gYXJyYXkuCi0gICAgdmFy
IG9iamVjdFN0b3JlTGlzdCA9IGRiLm9iamVjdFN0b3JlTmFtZXM7Ci0gICAgaWYgKG9iamVjdFN0
b3JlTGlzdC5sZW5ndGggIT0gMQotICAgICAgICB8fCAhb2JqZWN0U3RvcmVMaXN0LmNvbnRhaW5z
KCJwZW9wbGUiKQotICAgICAgICB8fCBvYmplY3RTdG9yZUxpc3QuaXRlbSgwKSAhPSAicGVvcGxl
IgotICAgICAgICB8fCBvYmplY3RTdG9yZUxpc3RbMF0gIT0gInBlb3BsZSIpIHsKLSAgICAgICAg
bG9nRXJyb3IoIlNvbWV0aGluZyB3ZW50IHdyb25nLiIpOwotICAgIH0KLQotICAgIC8vIExldCdz
IGdyYWIgYSBoYW5kbGUgdG8gdGhlIG9iamVjdFN0b3JlLiBUaGlzIGhhbmRsZSBpcyB0aWVkIHRv
IHRoZSB0cmFuc2FjdGlvbiB0aGF0IGNyZWF0ZXMKLSAgICAvLyBpdCBhbmQgdGh1cyBiZWNvbWVz
IGludmFsaWQgb25jZSB0aGlzIHRyYW5zYWN0aW9uIGNvbXBsZXRlcy4KLSAgICB2YXIgb2JqZWN0
U3RvcmUgPSBjdXJyZW50VHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoInBlb3BsZSIpOwotICAgIGlm
ICghb2JqZWN0U3RvcmUpCi0gICAgICAgIGxvZ0Vycm9yKCJTb21ldGhpbmcgd2VudCB3cm9uZy4i
KTsKLQotICAgIC8vIElmIHdlIHRyeSB0byBncmFiIGFuIG9iamVjdFN0b3JlIHRoYXQgZG9lc24n
dCBleGlzdCwgSW5kZXhlZERCIHRocm93cyBhbiBleGNlcHRpb24uCi0gICAgdHJ5IHsKLSAgICAg
ICAgY3VycmVudFRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCJ4Iik7Ci0gICAgICAgIGxvZ0Vycm9y
KCJTb21ldGhpbmcgd2VudCB3cm9uZy4iKTsKLSAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgIC8v
IE5vdGUgdGhhdCB0aGUgZXJyb3IgbWVzc2FnZXMgaW4gZXhjZXB0aW9ucyBhcmUgbW9zdGx5IGxp
ZXMgYXQgdGhlIG1vbWVudC4gVGhlIHJlYXNvbiBpcwotICAgICAgICAvLyB0aGF0IHRoZSBzcGVj
IHJlLXVzZXMgZXhjZXB0aW9uIGNvZGVzIGZvciBleGlzdGluZyBleGNlcHRpb25zIGFuZCB0aGVy
ZSdzIG5vIHdheSB3ZSBjYW4KLSAgICAgICAgLy8gZGlzYW1iaWd1YXRlIGJldHdlZW4gdGhlIHR3
by4gVGhlIGJlc3Qgd29yay1hcm91bmQgYXQgdGhlIG1vbWVudCBpcyB0byBsb29rIGF0Ci0gICAg
ICAgIC8vIGh0dHA6Ly9kdmNzLnczLm9yZy9oZy9JbmRleGVkREIvcmF3LWZpbGUvdGlwL092ZXJ2
aWV3Lmh0bWwjdGhlLWlkYmRhdGFiYXNlZXhjZXB0aW9uLWludGVyZmFjZQotICAgICAgICAvLyB0
byBmaWd1cmUgb3V0IHdoYXQgdGhlIG51bWJlciBjb3JyZXNwb25kcyB0by4gV2Ugd2lsbCB0cnkg
dG8gcmVzb2x2ZSB0aGlzIHNvb24gaW4gc3BlYy1sYW5kLgotICAgIH0KLQotICAgIC8vIFZlcmlm
eSB0aGF0IGZuYW1lIGFuZCBsbmFtZSBhcmUgdGhlIG9ubHkgaW5kZXhlcyBpbiBleGlzdGFuY2Uu
Ci0gICAgaWYgKG9iamVjdFN0b3JlLmluZGV4TmFtZXMubGVuZ3RoICE9IDIpCi0gICAgICAgIGxv
Z0Vycm9yKCJTb21ldGhpbmcgd2VudCB3cm9uZy4iKTsKLQotICAgIC8vIE5vdGUgdGhhdCBubyBh
c3luYyBhY3Rpb25zIHdlcmUgZXZlciBxdWV1ZWQgdXAgYWdhaW5zdCBvdXIgdHJhbnNhY3Rpb24u
IEl0IHdpbGwgY29tbWl0IHdoZW4KLSAgICAvLyB3ZSBsZWF2ZSB0aGlzIGNvbnRleHQuCi19Ci0K
LWZ1bmN0aW9uIG9uVHJhbnNhY3Rpb25Db21wbGV0ZWQoKQotewotICAgIC8vIE5vdyBsZXQncyBt
YWtlIGEgcmVhbCB0cmFuc2FjdGlvbiBhbmQgYSBwZXJzb24gdG8gb3VyIG9iamVjdFN0b3JlLgot
ICAgIHdpbmRvdy5jdXJyZW50VHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbigicGVvcGxlIiwg
J3JlYWR3cml0ZScpOwotICAgIGN1cnJlbnRUcmFuc2FjdGlvbi5vbmFib3J0ID0gdW5leHBlY3Rl
ZEFib3J0OwotCi0gICAgdmFyIHBlb3BsZSA9IGN1cnJlbnRUcmFuc2FjdGlvbi5vYmplY3RTdG9y
ZSgicGVvcGxlIik7Ci0gICAgdmFyIHJlcXVlc3QgPSBwZW9wbGUucHV0KHtmbmFtZTogJ0pvaG4n
LCBsbmFtZTogJ0RvZScsIGlkOiAxfSk7IC8vIElmIG91ciBvYmplY3RTdG9yZSBkaWRuJ3QgaGF2
ZSBhIGtleSBwYXRoLCB0aGUgc2Vjb25kIHBhcmFtZXRlciB3b3VsZCBoYXZlIGJlZW4gdGhlIGtl
eS4KLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9uUHV0U3VjY2VzczsKLSAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3I7Ci0KLSAgICAvLyBXaGlsZSB3ZSdyZSBhdCBpdCwgd2h5
IG5vdCBhZGQgYSBmZXcgbW9yZT8gTXVsdGlwbGUgcXVldWVkIHVwIGFzeW5jIGNvbW1hbmRzIHdp
bGwgYmUgZXhlY3V0ZWQKLSAgICAvLyBzZXF1ZW50aWFsbHkgKHRob3VnaCB0aGVyZSBpcyB0YWxr
IG9mIHByaW9yaXRpemluZyBjdXJzb3IuY29udGludWUtLXNlZSBkaXNjdXNzaW9uIGJlbG93KS4g
U2luY2UKLSAgICAvLyB3ZSBkb24ndCBjYXJlIGFib3V0IHRoZSBpbmRpdmlkdWFsIGNvbW1hbmRz
JyBzdWNjZXNzZXMsIHdlJ2xsIG9ubHkgYm90aGVyIHdpdGggb24gZXJyb3IgaGFuZGxlcnMuCi0g
ICAgLy8KLSAgICAvLyBSZW1lbWJlciB0aGF0IG91ciBpbXBsZW1lbnRhdGlvbiBvZiB1bmV4cGVj
dGVkRXJyb3Igc2hvdWxkIGFib3J0IHRoZSAiY3VycmVudFRyYW5zYWN0aW9uIiBpbiB0aGUKLSAg
ICAvLyBjYXNlIG9mIGFuIGVycm9yLiAoVGhvdWdoIG5vIGVycm9yIHNob3VsZCBvY2N1ciBpbiB0
aGlzIGNhc2UuKQotICAgIHBlb3BsZS5wdXQoe2ZuYW1lOiAnSmFuZScsIGxuYW1lOiAnRG9lJywg
aWQ6IDJ9KS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yOwotICAgIHBlb3BsZS5wdXQoe2ZuYW1l
OiAnUGhpbGlwJywgbG5hbWU6ICdGcnknLCBpZDogM30pLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3I7Ci0KLSAgICAvLyBOb3Qgc2hvd24gaGVyZSBhcmUgdGhlIC5kZWxldGUgbWV0aG9kIGFuZCAu
YWRkICh3aGljaCBpcwotICAgIC8vIGxpa2UgLnB1dCBleGNlcHQgdGhhdCBpdCBmaXJlcyBhbiBv
bmVycm9yIGlmIHRoZSBlbGVtZW50IGFscmVhZHkgZXhpc3RzKS4KLX0KLQotZnVuY3Rpb24gb25Q
dXRTdWNjZXNzKCkKLXsKLSAgICAvLyBSZXN1bHQgaXMgdGhlIGtleSB1c2VkIGZvciB0aGUgcHV0
LgotICAgIGlmIChldmVudC50YXJnZXQucmVzdWx0ICE9PSAxKQotICAgICAgICBsb2dFcnJvcigi
U29tZXRoaW5nIHdlbnQgd3JvbmcuIik7Ci0KLSAgICAvLyBXZSBzaG91bGQgYmUgYWJsZSB0byBy
ZXF1ZXN0IHRoZSB0cmFuc2FjdGlvbiB2aWEgZXZlbnQudHJhbnNhY3Rpb24gZnJvbSB3aXRoaW4g
YW55IGV2ZW50IGhhbmRsZXIKLSAgICAvLyAobGlrZSB0aGlzIG9uZSkgYnV0IHRoaXMgaXMgbm90
IHlldCBpbXBsZW1lbnRlZCBpbiBDaHJvbWl1bS9XZWJLaXQuIEFzIGEgd29yay1hcm91bmQsIHdl
IHVzZSB0aGUKLSAgICAvLyBnbG9iYWwgImN1cnJlbnRUcmFuc2FjdGlvbiIgdmFyaWFibGUgd2Ug
c2V0IGFib3ZlLgotICAgIGN1cnJlbnRUcmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gb25QdXRUcmFu
c2FjdGlvbkNvbXBsZXRlOwotfQotCi1mdW5jdGlvbiBvblB1dFRyYW5zYWN0aW9uQ29tcGxldGUo
KQotewotICAgIC8vIE9LLCBub3cgbGV0J3MgcXVlcnkgdGhlIHBlb3BsZSBvYmplY3RTdG9yZSBp
biBhIGNvdXBsZSBkaWZmZXJlbnQgd2F5cy4gRmlyc3QgdXAsIGxldCdzIHRyeSBnZXQuCi0gICAg
Ly8gSXQgc2ltcGx5IHRha2VzIGluIGEga2V5IGFuZCByZXR1cm5zIGEgcmVxdWVzdCB3aG9zZSBy
ZXN1bHQgd2lsbCBiZSB0aGUgdmFsdWUuIE5vdGUgdGhhdCBoZXJlCi0gICAgLy8gd2UncmUgcGFz
c2luZyBpbiBhbiBhcnJheSBmb3Igb2JqZWN0U3RvcmVOYW1lcyByYXRoZXIgdGhhbiBhIHNpbXBs
ZSBzdHJpbmcuCi0gICAgd2luZG93LmN1cnJlbnRUcmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9u
KFsicGVvcGxlIl0sICdyZWFkd3JpdGUnKTsKLSAgICBjdXJyZW50VHJhbnNhY3Rpb24ub25hYm9y
dCA9IHVuZXhwZWN0ZWRBYm9ydDsKLQotICAgIHZhciBwZW9wbGUgPSBjdXJyZW50VHJhbnNhY3Rp
b24ub2JqZWN0U3RvcmUoInBlb3BsZSIpOwotICAgIHZhciByZXF1ZXN0ID0gcGVvcGxlLmdldCgx
KTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9uR2V0U3VjY2VzczsKLSAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3I7Ci0KLSAgICAvLyBOb3RlIHRoYXQgbXVsdGlwbGUgb2Jq
ZWN0U3RvcmUgKG9yIGluZGV4KSBtZXRob2QgY2FsbHMgd2lsbCByZXR1cm4gdGhlIHNhbWUgb2Jq
ZWN0LCB3aXRoaW4KLSAgICAvLyBhIHRyYW5zYWN0aW9uOgotICAgIHBlb3BsZS5zb21lUHJvcGVy
dHkgPSAieHl6IjsKLSAgICBpZiAoY3VycmVudFRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCJwZW9w
bGUiKS5zb21lUHJvcGVydHkgIT0gInh5eiIpCi0gICAgICAgIGxvZ0Vycm9yKCJTb21ldGhpbmcg
d2VudCB3cm9uZy4iKTsKLX0KLQotZnVuY3Rpb24gb25HZXRTdWNjZXNzKCkKLXsKLSAgICBpZiAo
ZXZlbnQudGFyZ2V0LnJlc3VsdC5mbmFtZSAhPT0gIkpvaG4iKQotICAgICAgICBsb2dFcnJvcigi
U29tZXRoaW5nIHdlbnQgd3JvbmcuIik7Ci0KLSAgICAvLyBSZXF1ZXN0cyAod2hpY2ggYXJlIG91
ciBldmVudCB0YXJnZXQpIGFsc28gaGF2ZSBhIHNvdXJjZSBhdHRyaWJ1dGUgdGhhdCdzIHRoZSBv
YmplY3QgdGhhdAotICAgIC8vIHJldHVybmVkIHRoZSByZXF1ZXN0LiBJbiB0aGlzIGNhc2UsIGl0
J3Mgb3VyICJwZW9wbGUiIG9iamVjdFN0b3JlIG9iamVjdC4KLSAgICB2YXIgcGVvcGxlID0gZXZl
bnQudGFyZ2V0LnNvdXJjZTsKLQotICAgIC8vIE5vdyBsZXQncyB0cnkgb3BlbmluZyBhIGN1cnNv
ciBmcm9tIGlkIDEgKGV4Y2x1c2l2ZS9vcGVuKSB0byBpZCAzIChpbmNsdXNpdmUvY2xvc2VkKS4g
VGhpcyBtZWFucwotICAgIC8vIHdlJ2xsIGdldCB0aGUgb2JqZWN0cyBmb3IgaWRzIDIgYW5kIDMu
IFlvdSBjYW4gYWxzbyBjcmVhdGUgY3Vyc29ycyB0aGF0IGFyZSBvbmx5IHJpZ2h0IG9yIG9ubHkK
LSAgICAvLyBsZWZ0IGJvdW5kZWQgb3Igb21taXQgdGhlIGJvdW5kIGluIG9yZGVyIHRvIGdyYWIg
YWxsIG9iamVjdHMuIFlvdSBjYW4gYWxzbyBzcGVjaWZ5IGEgZGlyZWN0aW9uCi0gICAgLy8gd2hp
Y2ggY2FuIGJlICduZXh0JyAoZGVmYXVsdCkgZm9yIHRoZSBjdXJzb3IgdG8gbW92ZSBmb3J3YXJk
LCBORVhUX05PX0RVUExJQ0FURSB0byBvbmx5Ci0gICAgLy8gcmV0dXJuIHVuaXF1ZSBlbnRpcmVz
IChvbmx5IGFwcGxpZXMgdG8gaW5kZXhlcyB3aXRoIHVuaXF1ZSBzZXQgdG8gZmFsc2UpLCBQUkVW
IHRvIG1vdmUgYmFja3dhcmRzLAotICAgIC8vIGFuZCBQUkVWX05PX0RVUExJQ0FURS4KLSAgICB2
YXIga2V5UmFuZ2UgPSBJREJLZXlSYW5nZS5ib3VuZCgxLCAzLCB0cnVlLCBmYWxzZSk7Ci0gICAg
dmFyIHJlcXVlc3QgPSBwZW9wbGUub3BlbkN1cnNvcihrZXlSYW5nZSwgJ25leHQnKTsKLSAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IG9uT2JqZWN0U3RvcmVDdXJzb3I7Ci0gICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yOwotfQotCi1mdW5jdGlvbiBvbk9iamVjdFN0b3JlQ3Vyc29y
KCkKLXsKLSAgICAvLyBUaGUgcmVzdWx0IG9mIG9wZW5DdXJzb3IgaXMgYW4gSURCQ3Vyc29yIG9i
amVjdCBvciBudWxsIGlmIHRoZXJlIGFyZSBubyAobW9yZS0tc2VlIGJlbG93KQotICAgIC8vIHJl
Y29yZHMgbGVmdC4KLSAgICB2YXIgY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKLSAgICBp
ZiAoY3Vyc29yID09PSBudWxsKSB7Ci0gICAgICAgIGN1cnNvckNvbXBsZXRlKGV2ZW50LnRhcmdl
dC5zb3VyY2UpOyAvLyBUaGUgc29ydWNlIGlzIHN0aWxsIGFuIG9iamVjdFN0b3JlLgotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gV2UgY291bGQgdXNlIHRoZXNlIHZhbHVlcyBpZiB3
ZSB3YW50ZWQgdG8uCi0gICAgdmFyIGtleSA9IGN1cnNvci5rZXk7Ci0gICAgdmFyIHZhbHVlID0g
Y3Vyc29yLnZhbHVlOwotCi0gICAgLy8gY3Vyc29yLmNvdW50IGlzIHByb2JhYmx5IGdvaW5nIHRv
IGJlIHJlbW92ZWQuCi0gICAgLy8gY3Vyc29yLnVwZGF0ZSBhbmQgLnJlbW92ZSBhcmUgbm90IHll
dCBpbXBsZW1lbnRlZCBpbiBDaHJvbWl1bS9XZWJLaXQuCi0KLSAgICAvLyBjdXJzb3IuY29udGlu
dWUgd2lsbCByZXVzZSB0aGUgc2FtZSByZXF1ZXN0IG9iamVjdCBhcyB3aGF0IG9wZW5DdXJzb3Ig
cmV0dXJuZWQuIEluIHRoZSBmdXR1cmUsCi0gICAgLy8gd2UgTUFZIHByaW9yaXRpemUgLmNvbnRp
bnVlKCkgY2FsbHMgYWhlYWQgb2YgYWxsIG90aGVyIGFzeW5jIG9wZXJhdGlvbnMgcXVldWVkIHVw
LiBUaGlzIHdpbGwKLSAgICAvLyBpbnRyb2R1Y2UgYSBsZXZlbCBvZiBub24tZGV0ZXJtaW5pc20g
YnV0IHNob3VsZCBzcGVlZCB0aGluZ3MgdXAuIE1vemlsbGEgaGFzIGFscmVhZHkgaW1wbGVtZW50
ZWQKLSAgICAvLyB0aGlzIG5vbi1zdGFuZGFyZCBiZWhhdmlvciwgZnJvbSB3aGF0IEkndmUgaGVh
ZC4KLSAgICBldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCk7Ci19Ci0KLWZ1bmN0aW9uIGN1
cnNvckNvbXBsZXRlKG9iamVjdFN0b3JlKQotewotICAgIC8vIFdoaWxlIHN0aWxsIGluIHRoZSBz
YW1lIHRyYW5zYWN0aW9uLCBsZXQncyBub3cgZG8gYSBsb29rdXAgb24gdGhlIGxuYW1lIGluZGV4
LgotICAgIHZhciBsbmFtZSA9IG9iamVjdFN0b3JlLmluZGV4KCJsbmFtZSIpOwotCi0gICAgLy8g
Tm90ZSB0aGF0IHRoZSBzcGVjIGhhcyBub3QgYmVlbiB1cGRhdGVkIHlldCwgYnV0IGluc3RlYWQg
b2YgZ2V0IGFuZCBnZXRPYmplY3QsIHdlIG5vdwotICAgIC8vIGhhdmUgZ2V0S2V5IGFuZCBnZXQu
IFRoZSBmb3JtZXIgcmV0dXJucyB0aGUgb2JqZWN0U3RvcmUncyBrZXkgdGhhdCBjb3JyZXNwb25k
cyB0byB0aGUga2V5Ci0gICAgLy8gaW4gdGhlIGluZGV4LiBnZXQgcmV0dXJucyB0aGUgb2JqZWN0
U3RvcmUncyB2YWx1ZSB0aGF0IGNvcnJlc3BvbmRzIHRvIHRoZSBrZXkgaW4gdGhlCi0gICAgLy8g
aW5kZXguCi0gICAgdmFyIHJlcXVlc3QgPSBsbmFtZS5nZXRLZXkoIkRvZSIpOwotICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gb25JbmRleEdldFN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yOwotfQotCi1mdW5jdGlvbiBvbkluZGV4R2V0U3VjY2VzcygpCi17Ci0g
ICAgLy8gQmVjYXVzZSB3ZSBkaWQgImdldEtleSIgdGhlIHJlc3VsdCBpcyB0aGUgb2JqZWN0U3Rv
cmUncyBrZXkuCi0gICAgaWYgKGV2ZW50LnRhcmdldC5yZXN1bHQgIT09IDEpCi0gICAgICAgIGxv
Z0Vycm9yKCJTb21ldGhpbmcgd2VudCB3cm9uZy4iKTsKLQotICAgIC8vIFNpbWlsYXJseSwgaW5k
ZXhlcyBoYXZlIG9wZW5DdXJzb3IgYW5kIG9wZW5LZXlDdXJzb3IuIFdlJ2xsIHRyeSBhIGZldyBv
ZiB0aGVtIHdpdGggdmFyaW91cwotICAgIC8vIGRpZmZlcmVudCBJREJLZXlSYW5nZXMganVzdCB0
byBkZW1vbnN0cmF0ZSBob3cgdG8gdXNlIHRoZW0sIGJ1dCB3ZSB3b24ndCBib3RoZXIgdG8gaGFu
ZGxlCi0gICAgLy8gdGhlIG9uc3VjY2VzcyBjb25kaXRpb25zLgotICAgIHZhciBsbmFtZSA9IGV2
ZW50LnRhcmdldC5zb3VyY2U7Ci0gICAgbG5hbWUub3BlbkN1cnNvcihJREJLZXlSYW5nZS5sb3dl
ckJvdW5kKCJEb2UiLCBmYWxzZSksICduZXh0dW5pcXVlJyk7Ci0gICAgbG5hbWUub3BlbkN1cnNv
cihudWxsLCAncHJldnVuaXF1ZScpOwotICAgIGxuYW1lLm9wZW5DdXJzb3IoSURCS2V5UmFuZ2Uu
dXBwZXJCb3VuZCgiWlpaWiIpKTsKLSAgICBsbmFtZS5vcGVuQ3Vyc29yKElEQktleVJhbmdlLm9u
bHkoIkRvZSIpLCAncHJldicpOwotICAgIGxuYW1lLm9wZW5DdXJzb3IoKTsKLSAgICBsbmFtZS5v
cGVuS2V5Q3Vyc29yKCk7Ci0KLSAgICAvLyBXZSBzaG91bGQgYmUgYWJsZSB0byByZXF1ZXN0IHRo
ZSB0cmFuc2FjdGlvbiB2aWEgZXZlbnQudHJhbnNhY3Rpb24gZnJvbSB3aXRoaW4gYW55IGV2ZW50
IGhhbmRsZXIKLSAgICAvLyAobGlrZSB0aGlzIG9uZSkgYnV0IHRoaXMgaXMgbm90IHlldCBpbXBs
ZW1lbnRlZCBpbiBDaHJvbWl1bS9XZWJLaXQuIEFzIGEgd29yay1hcm91bmQsIHdlIHVzZSB0aGUK
LSAgICAvLyBnbG9iYWwgImN1cnJlbnRUcmFuc2FjdGlvbiIgdmFyaWFibGUgd2Ugc2V0IGFib3Zl
LgotICAgIGN1cnJlbnRUcmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gb25BbGxEb25lOwotfQotCi1m
dW5jdGlvbiBvbkFsbERvbmUoKQotewotICAgIGxvZygiRXZlcnl0aGluZyB3b3JrZWQhIik7Ci0g
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUo
KTsKLX0KLQotLy8gVGhlIHdheSBzZXRWZXJzaW9uIGlzIHN1cHBvc2VkIHRvIHdvcms6Ci0vLyAg
IFRvIGtlZXAgdGhpbmdzIHNpbXBsZSB0byBiZWdpbiB3aXRoLCBvYmplY3RTdG9yZXMgYW5kIGlu
ZGV4ZXMgY2FuIG9ubHkgYmUgY3JlYXRlZCBpbiBhIHNldFZlcnNpb24KLS8vIHRyYW5zYWN0aW9u
IGFuZCBvbmUgY2FuIG9ubHkgcnVuIGlmIG5vIG90aGVyIGNvbm5lY3Rpb25zIGFyZSBvcGVuIHRv
IHRoZSBkYXRhYmFzZS4gVGhpcyBpcyBkZXNpZ25lZAotLy8gdG8gc2F2ZSBhcHAgZGV2ZWxvcGVy
cyBmcm9tIGhhdmluZyBhbiBvbGRlciB2ZXJpc29uIG9mIGEgd2ViIHBhZ2UgdGhhdCBleHBlY3Rz
IGEgY2VydGFpbiBzZXQgb2YKLS8vIG9iamVjdFN0b3JlcyBhbmQgaW5kZXhlcyBmcm9tIGJyZWFr
aW5nIGluIG9kZCB3YXlzIHdoZW4gdGhpbmdzIGdldCBjaGFuZ2VkIG91dCBmcm9tIHVuZGVybmVp
dGggaXQuCi0vLyBJbiB0aGUgZnV0dXJlLCB3ZSdsbCBwcm9iYWJseSBhZGQgYSBtb3JlIGFkdmFu
Y2VkIG1lY2hhbmlzbSwgYnV0IHRoaXMgaXMgaXQgZm9yIG5vdy4KLS8vICAgQmVjYXVzZSBhIHNl
dFZlcnNpb24gdHJhbnNhY3Rpb24gY291bGQgc3RhbGwgb3V0IG5lYXJseSBmb3JldmVyIHVudGls
IHRoZSB1c2VyIGNsb3NlcyB3aW5kb3dzLAotLy8gd2UndmUgYWRkZWQgYSAiYmxvY2tlZCIgZXZl
bnQgdG8gdGhlIHJlcXVlc3Qgb2JqZWN0IHJldHVybmVkIGJ5IHNldFZlcnNpb24uIFRoaXMgd2ls
bCBmaXJlIGlmIHRoZQotLy8gc2V0VmVyc2lvbiB0cmFuc2FjdGlvbiBjYW4ndCBiZWdpbiBiZWNh
dXNlIG90aGVyIHdpbmRvd3MgaGF2ZSBhbiBvcGVuIGNvbm5lY3Rpb24uIFRoZSBhcHAgY2FuIHRo
ZW4KLS8vIGVpdGhlciBwb3Agc29tZXRoaW5nIHVwIHRlbGxpbmcgdGhlIHVzZXIgdG8gY2xvc2Ug
d2luZG93cyBvciBpdCBjYW4gdGVsbCB0aGUgb3RoZXIgd2luZG93cyB0byBjYWxsCi0vLyAuY2xv
c2UoKSBvbiB0aGVpciBkYXRhYmFzZSBoYW5kbGUuIC5jbG9zZSgpIGhhbHRzIGFueSBuZXcgdHJh
bnNhY3Rpb25zIGZyb20gc3RhcnRpbmcgYW5kIHdhaXRzIGZvcgotLy8gdGhlIGV4aXN0aW5nIG9u
ZXMgdG8gZmluaXNoLiBJdCB0aGVuIGNsb3NlcyB0aGUgY29ubmVjdGlvbiBhbmQgYW55IGluZGV4
ZWREQiBjYWxscyBhZnRlcndhcmRzIGFyZQotLy8gaW52YWxpZCAodGhleSdsbCBwcm9iYWJseSB0
aHJvdywgYnV0IHRoaXMgaXNuJ3Qgc3BlY2lmaWVkIHlldCkuIFdlIG1heSBzcGVjaWZ5IC5jbG9z
ZSgpIHRvIHJldHVybgotLy8gYW4gSURCUmVxdWVzdCBvYmplY3Qgc28gdGhhdCB3ZSBjYW4gZmly
ZSB0aGUgb25zdWNjZXNzIHdoZW4gdGhlIGNsb3NlIGNvbXBsZXRlcy4KLS8vICAgT25jZSBpbnNp
ZGUgYSBzZXRWZXJzaW9uIHRyYW5zYWN0aW9uLCB5b3UgY2FuIGRvIGFueXRoaW5nIHlvdSdkIGxp
a2UuIFRoZSBvbmUgY29ubmVjdGlvbiB3aGljaAotLy8gd2FzIGFsbG93ZWQgdG8gc3RheSBvcGVu
IHRvIGNvbXBsZXRlIHRoZSBzZXRWZXJzaW9uIHRyYW5zYWN0aW9uIHdpbGwgc3RheSBhbGl2ZS4g
TXVsdGlwbGUKLS8vIHNldFZlcnNpb24gdHJhbnNhY3Rpb25zIGNhbiBiZSBxdWV1ZWQgdXAgYXQg
b25jZSBhbmQgd2lsbCBmaXJlIGluIHRoZSBvcmRlciBxdWV1ZWQgKHRob3VnaAotLy8gdGhpcyBv
YnZpb3VzbHkgb25seSB3b3JrcyBpZiB0aGV5J3JlIHF1ZXVlZCBpbiB0aGUgc2FtZSBwYWdlKS4K
LS8vCi0vLyBUaGUgY3VycmVudCBzdGF0dXMgb2Ygc2V0VmVyc2lvbiBpbiBDaHJvbWl1bS9XZWJL
aXQ6Ci0vLyAgIEluIENocm9taXVtL1dlYktpdCB3ZSBjdXJyZW50bHkgZG9uJ3QgZW5mb3JjZSB0
aGUgImFsbCBjb25uZWN0aW9ucyBtdXN0IGJlIGNsb3NlZCBiZWZvcmUgYQotLy8gc2V0VmVyc2lv
biB0cmFuc2FjdGlvbiBzdGFydHMiIHJ1bGUuIFdlIGFsc28gZG9uJ3QgaW1wbGVtZW50IGRhdGFi
YXNlLmNsb3NlKCkgb3IgaGF2ZSBhIGJsb2NrZWQKLS8vIGV2ZW50IG9uIHRoZSByZXF1ZXN0IC5z
ZXRWZXJzaW9uKCkgcmV0dXJucy4KLS8vCi0vLyBUaGUgY3VycmVudCBzdGF0dXMgb2Ygd29ya2Vy
czoKLS8vICAgQ2hyb21pdW0vV2ViS2l0IGRvIG5vdCB5ZXQgc3VwcG9ydCB3b3JrZXJzIHVzaW5n
IEluZGV4ZWREQi4gU3VwcG9ydCBmb3IgdGhlIGFzeW5jIGludGVyZmFjZQotLy8gd2lsbCBsaWtl
bHkgY29tZSBiZWZvcmUgdGhlIHN5bmMgaW50ZXJmYWNlLiBGb3Igbm93LCBhIHdvcmstYXJvdW5k
IGlzIHVzaW5nIHBvc3RNZXNzYWdlIHRvIHRlbGwKLS8vIHRoZSBwYWdlIHdoYXQgdG8gZG8gb24g
dGhlIHdvcmtlcidzIGJlaGFsZiBpbiBhbiBhZC1ob2MgbWFubmVyLiBBbnl0aGluZyB0aGF0IGNh
biBiZSBzZXJpYWxpemVkCi0vLyB0byBkaXNrIGNhbiBiZSBzZXJpYWxpemVkIGZvciBwb3N0TWVz
c2FnZS4KLQotPC9zY3JpcHQ+Ci08Ym9keSBvbmxvYWQ9InN0YXJ0KCkiPgotUGxlYXNlIHZpZXcg
c291cmNlIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHdoYXQgdGhpcyBpcyBkb2luZyBhbmQgd2h5
Li4uPGJyPjxicj4KLTxkaXYgaWQ9ImxvZ2dlciI+PC9kaXY+Ci08L2JvZHk+Ci08L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>