<?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>223112</bug_id>
          
          <creation_ts>2021-03-12 00:30:51 -0800</creation_ts>
          <short_desc>Make WebGL conformance test update script more usable and consistent</short_desc>
          <delta_ts>2021-03-16 14:28:25 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebGL</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>222812</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kimmo Kinnunen">kkinnunen</reporter>
          <assigned_to name="Kimmo Kinnunen">kkinnunen</assigned_to>
          <cc>dino</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fusticidre</cc>
    
    <cc>glenn</cc>
    
    <cc>gsnedders</cc>
    
    <cc>jbedard</cc>
    
    <cc>jdarpinian</cc>
    
    <cc>jonlee</cc>
    
    <cc>kbr</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1738793</commentid>
    <comment_count>0</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-03-12 00:30:51 -0800</bug_when>
    <thetext>Make WebGL conformance test update script more usable and consistent

- There&apos;s two old scripts: Tools/Scripts/update-webgl-conformance-tests, LayoutTests/webgl/generate-webgl-tests
- generate-webgl-tests cannot be used to update the &quot;sdk&quot; tests
- generate-webgl-tests needs manual flags, it is hard to know what the previous person used</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738795</commentid>
    <comment_count>1</comment_count>
      <attachid>423020</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-03-12 00:42:42 -0800</bug_when>
    <thetext>Created attachment 423020
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738796</commentid>
    <comment_count>2</comment_count>
      <attachid>423021</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-03-12 00:43:39 -0800</bug_when>
    <thetext>Created attachment 423021
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1739065</commentid>
    <comment_count>3</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2021-03-12 16:43:11 -0800</bug_when>
    <thetext>James (jdarpinian@), could you help review this?

Kimmo, I&apos;ll mark this r+ assuming it&apos;s been tested but please wait for James&apos; review. Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1739539</commentid>
    <comment_count>4</comment_count>
      <attachid>423021</attachid>
    <who name="James Darpinian">jdarpinian</who>
    <bug_when>2021-03-15 11:20:05 -0700</bug_when>
    <thetext>Comment on attachment 423021
Patch

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

LGTM!

&gt; Tools/ChangeLog:13
&gt; +          - to copy the &quot;beta&quot; 1.0.3/2.0.0 tests for the features that are implemented

As long as we&apos;re regenerating everything, what do you think about taking the opportunity to upgrade to 1.0.4/2.0.1, which includes all these tests automatically? Then we won&apos;t need extra special tests off to the side. Chrome and Firefox both test against 1.0.4/2.0.1 currently.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1739578</commentid>
    <comment_count>5</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-03-15 12:18:55 -0700</bug_when>
    <thetext>(In reply to James Darpinian from comment #4)
&gt; As long as we&apos;re regenerating everything, what do you think about taking the
&gt; opportunity to upgrade to 1.0.4/2.0.1, which includes all these tests
&gt; automatically? Then we won&apos;t need extra special tests off to the side.
&gt; Chrome and Firefox both test against 1.0.4/2.0.1 currently.

So what&apos;s the definition of 1.0.4/2.0.1 ? I.e where are they?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1739616</commentid>
    <comment_count>6</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-03-15 12:59:42 -0700</bug_when>
    <thetext>(In reply to Kimmo Kinnunen from comment #5)
&gt; So what&apos;s the definition of 1.0.4/2.0.1 ? I.e where are they?

So is it:
 copying WebGL/sdk/tests -&gt; resources/webgl_conformance_tests 
 generating drivers to 1.0.4/ with suite version 1.0.4
 generating drivers to 2.0.1/ with suite version 2.0.1

Maybe I&apos;ll try that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1739623</commentid>
    <comment_count>7</comment_count>
    <who name="James Darpinian">jdarpinian</who>
    <bug_when>2021-03-15 13:12:57 -0700</bug_when>
    <thetext>Yes, 1.0.4/2.0.1 haven&apos;t been snapshotted yet. They are just the tests in WebGL/sdk/tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1740113</commentid>
    <comment_count>8</comment_count>
      <attachid>423379</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-03-16 12:21:55 -0700</bug_when>
    <thetext>Created attachment 423379
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1740141</commentid>
    <comment_count>9</comment_count>
      <attachid>423379</attachid>
    <who name="James Darpinian">jdarpinian</who>
    <bug_when>2021-03-16 12:59:39 -0700</bug_when>
    <thetext>Comment on attachment 423379
Patch

Awesome, thank you! It will be great to have the most up to date version of all the tests on the bots. Ken will have to set r+ as I am not a reviewer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1740206</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-03-16 14:27:55 -0700</bug_when>
    <thetext>Committed r274518: &lt;https://commits.webkit.org/r274518&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 423379.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1740207</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-03-16 14:28:25 -0700</bug_when>
    <thetext>&lt;rdar://problem/75494562&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>423020</attachid>
            <date>2021-03-12 00:42:42 -0800</date>
            <delta_ts>2021-03-12 00:43:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223112-20210312104240.patch</filename>
            <type>text/plain</type>
            <size>45037</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0Mjg3CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMWZjNzFjNDc5ZDMzMDc1NTVkNDA5Y2E2Y2VkNzMzMGVi
MDA5MjhlOC4uNTkxYWY4ZThiNDMwY2RjZjUwMDJkM2Y0NzlmMTVkNDM0YjkxOWI3MyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUy
IEBACisyMDIxLTAzLTEyICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisK
KyAgICAgICAgTWFrZSBXZWJHTCBjb25mb3JtYW5jZSB0ZXN0IHVwZGF0ZSBzY3JpcHQgbW9yZSB1
c2FibGUgYW5kIGNvbnNpc3RlbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyMzExMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE1vdmVzIHRoZSBzY3JpcHQgTGF5b3V0VGVzdHMvd2ViZ2wvZ2VuZXJhdGUt
d2ViZ2wtdGVzdHMgb3ZlcgorICAgICAgICB1bnVzZWQgYW5kIHN0YWxlIFRvb2xzL1NjcmlwdHMv
dXBkYXRlLXdlYmdsLWNvbmZvcm1hbmNlLXRlc3RzCisKKyAgICAgICAgRml4ZXMgdGhlIHNjcmlw
dCB0bzoKKyAgICAgICAgICAtIHRvIHN1cHBvcnQgZ2VuZXJhdGlvbiBvZiB0aGUgdGVzdCBkcml2
ZXIgLmh0bWwgZmlsZXMgd2l0aCB3ZWJnbFZlcnNpb249MgorICAgICAgICAgIC0gdG8gY29weSB0
aGUgImJldGEiIDEuMC4zLzIuMC4wIHRlc3RzIGZvciB0aGUgZmVhdHVyZXMgdGhhdCBhcmUgaW1w
bGVtZW50ZWQKKyAgICAgICAgICAgIGluIFdlYktpdC4gVGhlc2UgYXJlIG5vdyBjb3BpZWQgdG8g
d2ViZ2wvc2RrIGRpciwgcHJldmlvdXNseSB0aGV5IHdlcmUKKyAgICAgICAgICAgIG1hbnVhbGx5
IGNvcGllZCB0byB3ZWJnbC8gZGlyLCBtYWtpbmcgaXQgaGFyZCB0byBtYWludGFpbiB0aGUgdGVz
dHMgc2luY2UgdGhleQorICAgICAgICAgICAgY291bGQgbm90IGJlIGNsZWFuZWQgdXAgYnkgcmVt
b3ZpbmcgdGhlIGRpciBhbmQgcmVnZW5lcmF0aW5nLgorICAgICAgICAgIC0gdG8gc3VwcG9ydCBj
b3B5aW5nIGFsbCB0aGUgdGVzdHMgYXQgdGhlIHNhbWUgdGltZS4gUHJldmlvdXNseSBlYWNoCisg
ICAgICAgICAgICBpbmRpdmlkdWFsIHN1aXRlcyAoMS4wLjMsIDIuMC4wIGFuZCB0aGUgYmV0YSB0
ZXN0cykgd291bGQgYmUgY29waWVkCisgICAgICAgICAgICBpbiBkaWZmZXJlbnQgaW52b2NhdGlv
bnMsIGxlYWRpbmcgdG8gZXJyb3JzIGFuZCBvbWlzc2lvbnMgdG8gcnVuIHdoZW4KKyAgICAgICAg
ICAgIHNvbWV0aGluZyBjaGFuZ2VzLCBzdWNoIGFzIHRoZSB0ZW1wbGF0ZXMuCisgICAgICAgICAg
LSBzdXBwb3J0cyBnZW5lcmF0aW9uIG9mIHRoZSBkaXJlY3RvcmllcyBmcm9tIHNjcmF0Y2gsIHNv
IHRoYXQgbm8gc3RhbGUgZmlsZXMKKyAgICAgICAgICAgIHN1Y2ggYXMgZXhwZWN0YXRpb25zLCBk
cml2ZXIgLmh0bWwgZmlsZXMgb3IgdGVzdCBzdWl0ZSBjb250ZW50IGlzIGxlZnQuCisgICAgICAg
ICAgLSBhdXRvbWF0aWNhbGx5IGZpbHRlciBmaWxlcyB0aGF0IGRvIG5vdCBuZWVkIHRvIGJlIGNv
cGllZCAoZGVxcC9jb21waWxlci5qYXIsIC4uLikKKyAgICAgICAgICAtIHRyeSB0byBhZG9wdCBh
IHN0eWxlIHNvbWV3aGF0IGNvbnNpc3RlbnQgd2l0aCBvdGhlciBXZWJLaXQgcHl0aG9uIHNjcmlw
dHMKKworICAgICAgICAqIFNjcmlwdHMvdXBkYXRlLXdlYmdsLWNvbmZvcm1hbmNlLXRlc3RzOgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9fYmVfbW92ZWQvX19pbml0X18ucHk6IFJlbW92
ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b19iZV9tb3ZlZC91cGRhdGVfd2ViZ2xf
Y29uZm9ybWFuY2VfdGVzdHMucHk6IFJlbW92ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS90b19iZV9tb3ZlZC91cGRhdGVfd2ViZ2xfY29uZm9ybWFuY2VfdGVzdHNfdW5pdHRlc3QucHk6
IFJlbW92ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS91cGRhdGVfd2ViZ2xfY29uZm9y
bWFuY2VfdGVzdHNfbGliL21haW4ucHk6IEFkZGVkLgorICAgICAgICAoX21ha2VfaWdub3JlX2Zu
bWF0Y2hfcnVsZV9tYXRjaGVyKToKKyAgICAgICAgKF9tYWtlX2lnbm9yZV9mbm1hdGNoX3J1bGVf
bWF0Y2hlci5tYXRjaF9ydWxlcyk6CisgICAgICAgIChfY29weV90cmVlKToKKyAgICAgICAgKF9X
ZWJHTFRlc3QpOgorICAgICAgICAoX3BhcnNlX3dlYmdsX3Rlc3RzKToKKyAgICAgICAgKF9maWx0
ZXJfd2ViZ2xfdGVzdF9wYXRoc19mb3Jfc3VpdGVfdmVyc2lvbik6CisgICAgICAgIChfZ2VuZXJh
dGVfd2Via2l0X3dlYmdsX3Rlc3RzKToKKyAgICAgICAgKF9maW5kX2V4cGVjdGF0aW9uc19mb3Jf
cmVtb3ZlZF90ZXN0cyk6CisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L3VwZGF0ZV93ZWJnbF9jb25mb3JtYW5jZV90ZXN0c19saWIvd2ViZ2wtZXhwZWN0YXRpb24t
dGVtcGxhdGUudHh0OiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsLWV4cGVjdGF0aW9uLXRlbXBsYXRlLnR4dC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L3VwZGF0ZV93ZWJnbF9jb25mb3JtYW5jZV90ZXN0c19saWIvd2ViZ2wtdGVzdC1kcml2ZXItdGVt
cGxhdGUuaHRtbDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bC13cmFwcGVyLXRlbXBsYXRlLmh0bWwuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS91cGRh
dGVfd2ViZ2xfY29uZm9ybWFuY2VfdGVzdHNfbGliL3dlYmtpdC13ZWJnbC10ZXN0LWhhcm5lc3Mt
dGVtcGxhdGUuanM6IEFkZGVkLgorICAgICAgICAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
LndpbmRvdy5jb25zb2xlLmxvZyk6CisgICAgICAgICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIud2luZG93LmNvbnNvbGUuZXJyb3IpOgorICAgICAgICAobGlzdCk6CisgICAgICAgIChsb2cp
OgorICAgICAgICAod2luZG93LndlYmdsVGVzdEhhcm5lc3MucmVwb3J0UmVzdWx0cyk6CisgICAg
ICAgICh3aW5kb3cud2ViZ2xUZXN0SGFybmVzcy5ub3RpZnlGaW5pc2hlZCk6CisKIDIwMjEtMDMt
MTEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBJbnRyb2R1Y2Ug
V29ya1F1ZXVlOjpkaXNwYXRjaFN5bmMoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy91cGRh
dGUtd2ViZ2wtY29uZm9ybWFuY2UtdGVzdHMgYi9Ub29scy9TY3JpcHRzL3VwZGF0ZS13ZWJnbC1j
b25mb3JtYW5jZS10ZXN0cwppbmRleCBiOTMwODM2NDVhZmFkNDNiM2Y4YzQyYzg2NzhjMDUyODBh
MWQ0NTExLi5jMTRlM2E5ZWVhMTBlZWE5MDljMjZjMjI5NmJhMTdhYzYyNTc2MWY2IDEwMDc1NQot
LS0gYS9Ub29scy9TY3JpcHRzL3VwZGF0ZS13ZWJnbC1jb25mb3JtYW5jZS10ZXN0cworKysgYi9U
b29scy9TY3JpcHRzL3VwZGF0ZS13ZWJnbC1jb25mb3JtYW5jZS10ZXN0cwpAQCAtMSw0ICsxLDQg
QEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwogIyBDb3B5
cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CkBAIC0yNywxMCArMjcsMjcgQEAKICMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAKLSIiIldyYXBwZXIgYXJvdW5kIHdlYmtpdHB5L2xheW91dF90ZXN0cy91cGRhdGUtd2ViZ2wt
Y29uZm9ybWFuY2UtdGVzdHMucHkiIiIKKyIiIkdlbmVyYXRlcyBXZWJLaXQgV2ViR0wgbGF5b3V0
IHRlc3RzIGZyb20gdGhlIEtocm9ub3MgV2ViR0wgY29uZm9ybWFuY2UgdGVzdHMiIiIKKworIyBU
byB1c2UgdGhpcywgZ2V0IGEgY29weSBvZiB0aGUgV2ViR0wgY29uZm9ybWFuY2UgdGVzdHMgdGhl
biBydW4gdGhpcyBzY3JpcHQKKyMgZWcuCisjCisjICAgY2Qgfi90ZW1wCisjICAgZ2l0IGNsb25l
IGdpdDovL2dpdGh1Yi5jb20vS2hyb25vc0dyb3VwL1dlYkdMLmdpdAorIyAgIG1rZGlyIGJhY2t1
cAorIyAgIG12IH4vV2ViS2l0L0xheW91dFRlc3RzL3dlYmdsL3sxLjAuMywyLjAuMCxzZGt9IGJh
Y2t1cC8KKyMgICB+L1dlYktpdC9Ub29scy9TY3JpcHRzL3VwZGF0ZS13ZWJnbC1jb25mb3JtYW5j
ZS10ZXN0cyB+L3RlbXAvV2ViR0wKKyMgICB+L1dlYktpdC9Ub29scy9TY3JpcHRzL3J1bi13ZWJr
aXQtdGVzdHMgLS1kZWJ1ZyAtLXdlYmdsIC0tb3JkZXI9cmFuZG9tIHdlYmdsCisjICAgfi9XZWJL
aXQvVG9vbHMvU2NyaXB0cy9ydW4td2Via2l0LXRlc3RzIC0tcmVsZWFzZSAtLXdlYmdsIC0tb3Jk
ZXI9cmFuZG9tIHdlYmdsCisjICAgfi9XZWJLaXQvVG9vbHMvU2NyaXB0cy9jaGVjay1mb3ItZHVw
bGljYXRlZC1wbGF0Zm9ybS10ZXN0LXJlc3VsdHMgLW4gMj4mMSB8IGdyZXAgd2ViZ2wKKyMgICBb
IFVwZGF0ZSBUZXN0RXhwZWN0YXRpb25zIF0KKyMgICBbIENoZWNrIGluIHRoZSByZXN1bHQgXQor
IworIyBOb3RlOiBUaGUgc2NyaXB0IGlzIGN1cnJlbnRseSBub3QgdGVzdGVkIHRvIGJlIHJ1biBv
biBXaW5kb3dzLgogCi1pbXBvcnQgd2Via2l0cHkudG9fYmVfbW92ZWQudXBkYXRlX3dlYmdsX2Nv
bmZvcm1hbmNlX3Rlc3RzCiBpbXBvcnQgc3lzCiAKK2Zyb20gd2Via2l0cHkudXBkYXRlX3dlYmds
X2NvbmZvcm1hbmNlX3Rlc3RzX2xpYi5tYWluIGltcG9ydCBtYWluCisKIGlmIF9fbmFtZV9fID09
ICdfX21haW5fXyc6Ci0gICAgc3lzLmV4aXQod2Via2l0cHkudG9fYmVfbW92ZWQudXBkYXRlX3dl
YmdsX2NvbmZvcm1hbmNlX3Rlc3RzLm1haW4oKSkKKyAgICBzeXMuZXhpdChtYWluKCkpCmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3RvX2JlX21vdmVkL19faW5pdF9fLnB5IGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b19iZV9tb3ZlZC9fX2luaXRfXy5weQpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggYzA1MjhiNzgzMzMwOTIyN2RjMGVjODlmODAwNDcxZGM3Njc0
ZDIyNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3RvX2JlX21vdmVkL19faW5pdF9fLnB5CisrKyAvZGV2L251bGwK
QEAgLTEsMTAgKzAsMCBAQAotIyBSZXF1aXJlZCBmb3IgUHl0aG9uIHRvIHNlYXJjaCB0aGlzIGRp
cmVjdG9yeSBmb3IgbW9kdWxlIGZpbGVzCi0jIFRoaXMgZGlyZWN0b3J5IGhvdXNlcyBQeXRob24g
bW9kdWxlcyB0aGF0IGRvIG5vdCB5ZXQgaGF2ZSBhIHByb3BlciBob21lLgotIwotIyBTb21lIG9m
IHRoZSBQeXRob24gbW9kdWxlcyBpbiB0aGlzIGRpcmVjdG9yeSBhcmVuJ3QgcmVhbGx5IHBhcnQg
b2Ygd2Via2l0cHkKLSMgaW4gdGhlIHNlbnNlIHRoYXQgdGhleSdyZSBub3QgY2xhc3NlcyB0aGF0
IGFyZSBtZWFudCB0byBiZSB1c2VkIGFzIHBhcnQgb2YKLSMgdGhlIHdlYmtpdHB5IGxpYnJhcnku
IEluc3RlYWQsIHRoZXkncmUgYSBidW5jaCBvZiBoZWxwZXIgY29kZSBmb3IgaW5kaXZpZHVhbAot
IyBzY3JpcHRzIGluIGluIFRvb2xzL1NjcmlwdHMuCi0jCi0jIFJlYWxseSwgYWxsIHRoaXMgY29k
ZSBzaG91bGQgZWl0aGVyIGJlIHJlZmFjdG9yZWQgb3IgbW92ZWQgc29tZXdoZXJlIGVsc2UsCi0j
IGhlbmNlIHRoZSBzb21ld2hhdCBsYW1lIG5hbWUgZm9yIHRoaXMgZGlyZWN0b3J5LgpkaWZmIC0t
Z2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b19iZV9tb3ZlZC91cGRhdGVfd2ViZ2xfY29u
Zm9ybWFuY2VfdGVzdHMucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3RvX2JlX21vdmVkL3Vw
ZGF0ZV93ZWJnbF9jb25mb3JtYW5jZV90ZXN0cy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNzg3YWNhZjI2MzViNzRjOTZjYTNiNmNjOWMwMzZmMDhjNWZmMDdjNC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L3RvX2JlX21vdmVkL3VwZGF0ZV93ZWJnbF9jb25mb3JtYW5jZV90ZXN0cy5weQorKysgL2Rl
di9udWxsCkBAIC0xLDE1NiArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFy
ZSBtZXQ6Ci0jIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSMgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0j
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
Ci0jIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAotIyBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0jIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotIyBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
Ci0jIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotaW1wb3J0IGdsb2IKLWlt
cG9ydCBsb2dnaW5nCi1pbXBvcnQgb3B0cGFyc2UKLWltcG9ydCBvcwotaW1wb3J0IHJlCi1pbXBv
cnQgc3lzCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVja291dCBpbXBvcnQgc2NtCi1mcm9tIHdl
YmtpdHB5LmNvbW1vbi5zeXN0ZW0uZmlsZXN5c3RlbSBpbXBvcnQgRmlsZVN5c3RlbQotZnJvbSB3
ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgRXhlY3V0aXZlCi0KLQotX2xv
ZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQotCi0KLWRlZiByZW1vdmVfZmlyc3RfbGlu
ZV9jb21tZW50KHRleHQpOgotICAgIHJldHVybiByZS5jb21waWxlKHInXjwhLS0uKj8tLT5ccyon
LCByZS5ET1RBTEwpLnN1YignJywgdGV4dCkKLQotCi1kZWYgdHJhbnNsYXRlX2luY2x1ZGVzKHRl
eHQpOgotICAgICMgTWFwcGluZyBvZiBzaW5nbGUgZmlsZW5hbWUgdG8gcmVsYXRpdmUgcGF0aCB1
bmRlciBXZWJLaXQgcm9vdC4KLSAgICAjIEFzc3VtcHRpb246IHRoZXNlIGZpbGVuYW1lcyBhcmUg
Z2xvYmFsbHkgdW5pcXVlLgotICAgIGluY2x1ZGVfbWFwcGluZyA9IHsKLSAgICAgICAgImpzLXRl
c3QtcHJlLmpzIjogIi4uLy4uLy4uL3Jlc291cmNlcyIsCi0gICAgICAgICJqcy10ZXN0LXBvc3Qu
anMiOiAiLi4vLi4vLi4vcmVzb3VyY2VzIiwKLSAgICAgICAgImRlc2t0b3AtZ2wtY29uc3RhbnRz
LmpzIjogInJlc291cmNlcyIsCi0gICAgfQotCi0gICAgZm9yIGZpbGVuYW1lLCBwYXRoIGluIGlu
Y2x1ZGVfbWFwcGluZy5pdGVtcygpOgotICAgICAgICBzZWFyY2ggPSByJyg/OlteIlwnPSBdKi8p
PycgKyByZS5lc2NhcGUoZmlsZW5hbWUpCi0gICAgICAgICMgV2UgdXNlICcvJyBpbnN0ZWFkIG9m
IG9zLnBhdGguam9pbiBpbiBvcmRlciB0byBwcm9kdWNlIGNvbnNpc3RlbnQKLSAgICAgICAgIyBv
dXRwdXQgY3Jvc3MtcGxhdGZvcm0uCi0gICAgICAgIHJlcGxhY2UgPSBwYXRoICsgJy8nICsgZmls
ZW5hbWUKLSAgICAgICAgdGV4dCA9IHJlLnN1YihzZWFyY2gsIHJlcGxhY2UsIHRleHQpCi0KLSAg
ICByZXR1cm4gdGV4dAotCi0KLWRlZiB0cmFuc2xhdGVfa2hyb25vc190ZXN0KHRleHQpOgotICAg
ICIiIgotICAgIFRoaXMgbWV0aG9kIHRyYW5zbGF0ZXMgdGhlIGNvbnRlbnRzIG9mIGEgS2hyb25v
cyB0ZXN0IHRvIGEgV2ViS2l0IHRlc3QuCi0gICAgIiIiCi0KLSAgICB0cmFuc2xhdGVGdW5jcyA9
IFsKLSAgICAgICAgcmVtb3ZlX2ZpcnN0X2xpbmVfY29tbWVudCwKLSAgICAgICAgdHJhbnNsYXRl
X2luY2x1ZGVzLAotICAgIF0KLQotICAgIGZvciBmIGluIHRyYW5zbGF0ZUZ1bmNzOgotICAgICAg
ICB0ZXh0ID0gZih0ZXh0KQotCi0gICAgcmV0dXJuIHRleHQKLQotCi1kZWYgdXBkYXRlX2ZpbGUo
aW5fZmlsZW5hbWUsIG91dF9kaXIpOgotICAgICMgY2hlY2sgaW5fZmlsZW5hbWUgZXhpc3RzCi0g
ICAgIyBjaGVjayBvdXRfZGlyIGV4aXN0cwotICAgIG91dF9maWxlbmFtZSA9IG9zLnBhdGguam9p
bihvdXRfZGlyLCBvcy5wYXRoLmJhc2VuYW1lKGluX2ZpbGVuYW1lKSkKLQotICAgIF9sb2cuZGVi
dWcoIlByb2Nlc3NpbmcgIiArIGluX2ZpbGVuYW1lKQotICAgIHdpdGggb3Blbihpbl9maWxlbmFt
ZSwgJ3InKSBhcyBpbl9maWxlOgotICAgICAgICB3aXRoIG9wZW4ob3V0X2ZpbGVuYW1lLCAndycp
IGFzIG91dF9maWxlOgotICAgICAgICAgICAgb3V0X2ZpbGUud3JpdGUodHJhbnNsYXRlX2tocm9u
b3NfdGVzdChpbl9maWxlLnJlYWQoKSkpCi0KLQotZGVmIHVwZGF0ZV9kaXJlY3RvcnkoaW5fZGly
LCBvdXRfZGlyKToKLSAgICBmb3IgZmlsZW5hbWUgaW4gZ2xvYi5nbG9iKG9zLnBhdGguam9pbihp
bl9kaXIsICcqLmh0bWwnKSk6Ci0gICAgICAgIHVwZGF0ZV9maWxlKG9zLnBhdGguam9pbihpbl9k
aXIsIGZpbGVuYW1lKSwgb3V0X2RpcikKLQotCi1kZWYgZGVmYXVsdF9vdXRfZGlyKCk6Ci0gICAg
ZGV0ZWN0b3IgPSBzY20uU0NNRGV0ZWN0b3IoRmlsZVN5c3RlbSgpLCBFeGVjdXRpdmUoKSkKLSAg
ICBjdXJyZW50X3NjbSA9IGRldGVjdG9yLmRldGVjdF9zY21fc3lzdGVtKG9zLnBhdGguZGlybmFt
ZShzeXMuYXJndlswXSkpCi0gICAgaWYgbm90IGN1cnJlbnRfc2NtOgotICAgICAgICByZXR1cm4g
b3MuZ2V0Y3dkKCkKLSAgICByb290X2RpciA9IGN1cnJlbnRfc2NtLmNoZWNrb3V0X3Jvb3QKLSAg
ICBpZiBub3Qgcm9vdF9kaXI6Ci0gICAgICAgIHJldHVybiBvcy5nZXRjd2QoKQotICAgIG91dF9k
aXIgPSBvcy5wYXRoLmpvaW4ocm9vdF9kaXIsICJMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJn
bCIpCi0gICAgaWYgb3MucGF0aC5pc2RpcihvdXRfZGlyKToKLSAgICAgICAgcmV0dXJuIG91dF9k
aXIKLSAgICByZXR1cm4gb3MuZ2V0Y3dkKCkKLQotCi1kZWYgY29uZmlndXJlX2xvZ2dpbmcob3B0
aW9ucyk6Ci0gICAgIiIiQ29uZmlndXJlcyB0aGUgbG9nZ2luZyBzeXN0ZW0uIiIiCi0gICAgbG9n
X2ZtdCA9ICclKGxldmVsbmFtZSlzOiAlKG1lc3NhZ2UpcycKLSAgICBsb2dfZGF0ZWZtdCA9ICcl
eSVtJWQgJUg6JU06JVMnCi0gICAgbG9nX2xldmVsID0gbG9nZ2luZy5JTkZPCi0gICAgaWYgb3B0
aW9ucy52ZXJib3NlOgotICAgICAgICBsb2dfZm10ID0gKCclKGFzY3RpbWUpcyAlKGZpbGVuYW1l
KXM6JShsaW5lbm8pLTRkICUobGV2ZWxuYW1lKXMgJwotICAgICAgICAgICAgICAgICAgICclKG1l
c3NhZ2UpcycpCi0gICAgICAgIGxvZ19sZXZlbCA9IGxvZ2dpbmcuREVCVUcKLSAgICBsb2dnaW5n
LmJhc2ljQ29uZmlnKGxldmVsPWxvZ19sZXZlbCwgZm9ybWF0PWxvZ19mbXQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICBkYXRlZm10PWxvZ19kYXRlZm10KQotCi0KLWRlZiBvcHRpb25fcGFyc2Vy
KCk6Ci0gICAgdXNhZ2UgPSAidXNhZ2U6ICVwcm9nIFtvcHRpb25zXSAoaW5wdXQgZmlsZSBvciBk
aXJlY3RvcnkpIgotICAgIHBhcnNlciA9IG9wdHBhcnNlLk9wdGlvblBhcnNlcih1c2FnZT11c2Fn
ZSkKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLXYnLCAnLS12ZXJib3NlJywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYWN0aW9uPSdzdG9yZV90cnVlJywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGVmYXVsdD1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aGVscD0naW5jbHVkZSBkZWJ1Zy1sZXZlbCBsb2dnaW5nJykKLSAgICBwYXJzZXIuYWRkX29wdGlv
bignLW8nLCAnLS1vdXRwdXQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249
J3N0b3JlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT0nc3RyaW5nJywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1kZWZhdWx0X291dF9kaXIoKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0YXZhcj0nRElSJywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaGVscD0nc3BlY2lmeSBhbiBvdXRwdXQgZGlyZWN0b3J5IHRvIHBsYWNl
IGZpbGVzICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW4gW2RlZmF1bHQ6
ICVkZWZhdWx0XScpCi0gICAgcmV0dXJuIHBhcnNlcgotCi0KLWRlZiBtYWluKCk6Ci0gICAgcGFy
c2VyID0gb3B0aW9uX3BhcnNlcigpCi0gICAgKG9wdGlvbnMsIGFyZ3MpID0gcGFyc2VyLnBhcnNl
X2FyZ3MoKQotICAgIGNvbmZpZ3VyZV9sb2dnaW5nKG9wdGlvbnMpCi0KLSAgICBpZiBsZW4oYXJn
cykgPT0gMDoKLSAgICAgICAgX2xvZy5lcnJvcigiTXVzdCBzcGVjaWZ5IGFuIGlucHV0IGRpcmVj
dG9yeSBvciBmaWxlbmFtZS4iKQotICAgICAgICBwYXJzZXIucHJpbnRfaGVscCgpCi0gICAgICAg
IHJldHVybiAxCi0KLSAgICBpbl9uYW1lID0gYXJnc1swXQotICAgIGlmIG9zLnBhdGguaXNmaWxl
KGluX25hbWUpOgotICAgICAgICB1cGRhdGVfZmlsZShpbl9uYW1lLCBvcHRpb25zLm91dHB1dCkK
LSAgICBlbGlmIG9zLnBhdGguaXNkaXIoaW5fbmFtZSk6Ci0gICAgICAgIHVwZGF0ZV9kaXJlY3Rv
cnkoaW5fbmFtZSwgb3B0aW9ucy5vdXRwdXQpCi0gICAgZWxzZToKLSAgICAgICAgX2xvZy5lcnJv
cigiJyVzJyBpcyBub3QgYSBkaXJlY3Rvcnkgb3IgYSBmaWxlLiIsIGluX25hbWUpCi0gICAgICAg
IHJldHVybiAyCi0KLSAgICByZXR1cm4gMApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS90b19iZV9tb3ZlZC91cGRhdGVfd2ViZ2xfY29uZm9ybWFuY2VfdGVzdHNfdW5pdHRlc3Qu
cHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3RvX2JlX21vdmVkL3VwZGF0ZV93ZWJnbF9jb25m
b3JtYW5jZV90ZXN0c191bml0dGVzdC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZWU5ZmI5NjliMzlkNDhkMjZkM2FiNzc3NzdiM2NlNDRhZjlhNWU0ZS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rv
X2JlX21vdmVkL3VwZGF0ZV93ZWJnbF9jb25mb3JtYW5jZV90ZXN0c191bml0dGVzdC5weQorKysg
L2Rldi9udWxsCkBAIC0xLDk2ICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
Ci0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMg
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQot
IyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0iIiJVbml0IHRl
c3RzIGZvciB1cGRhdGVfd2ViZ2xfY29uZm9ybWFuY2VfdGVzdHMuIiIiCi0KLWltcG9ydCB1bml0
dGVzdAotZnJvbSB3ZWJraXRweS50b19iZV9tb3ZlZCBpbXBvcnQgdXBkYXRlX3dlYmdsX2NvbmZv
cm1hbmNlX3Rlc3RzIGFzIHdlYmdsCi0KLQotZGVmIGNvbnN0cnVjdF9zY3JpcHQobmFtZSk6Ci0g
ICAgcmV0dXJuICI8c2NyaXB0IHNyYz1cIiIgKyBuYW1lICsgIlwiPjwvc2NyaXB0PlxuIgotCi0K
LWRlZiBjb25zdHJ1Y3Rfc3R5bGUobmFtZSk6Ci0gICAgcmV0dXJuICI8bGluayByZWw9XCJzdHls
ZXNoZWV0XCIgaHJlZj1cIiIgKyBuYW1lICsgIlwiPiIKLQotCi1jbGFzcyBUZXN0VHJhbnNsYXRp
b24odW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiBhc3NlcnRfdW5jaGFuZ2VkKHNlbGYsIHRl
eHQpOgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRleHQsIHdlYmdsLnRyYW5zbGF0ZV9raHJv
bm9zX3Rlc3QodGV4dCkpCi0KLSAgICBkZWYgYXNzZXJ0X3RyYW5zbGF0ZShzZWxmLCBpbnB1dCwg
b3V0cHV0KToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXRwdXQsIHdlYmdsLnRyYW5zbGF0
ZV9raHJvbm9zX3Rlc3QoaW5wdXQpKQotCi0gICAgZGVmIHRlc3Rfc2ltcGxlX3VuY2hhbmdlZChz
ZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRfdW5jaGFuZ2VkKCIiKQotICAgICAgICBzZWxmLmFz
c2VydF91bmNoYW5nZWQoIjxodG1sPjwvaHRtbD4iKQotCi0gICAgZGVmIHRlc3RfaGVhZGVyX3N0
cmlwKHNlbGYpOgotICAgICAgICBzaW5nbGVfbGluZV9oZWFkZXIgPSAiPCEtLSBzaW5nbGUgbGlu
ZSBoZWFkZXIuIC0tPiIKLSAgICAgICAgbXVsdGlfbGluZV9oZWFkZXIgPSAiIiI8IS0tIHRoaXMg
aXMgYSBtdWx0aS1saW5lCi0gICAgICAgICAgICAgICAgaGVhZGVyLiAgaXQgc2hvdWxkIGFsbCBi
ZSByZW1vdmVkIHRvby4KLSAgICAgICAgICAgICAgICAtLT4iIiIKLSAgICAgICAgdGV4dCA9ICI8
aHRtbD48L2h0bWw+IgotICAgICAgICBzZWxmLmFzc2VydF90cmFuc2xhdGUoc2luZ2xlX2xpbmVf
aGVhZGVyLCAiIikKLSAgICAgICAgc2VsZi5hc3NlcnRfdHJhbnNsYXRlKHNpbmdsZV9saW5lX2hl
YWRlciArIHRleHQsIHRleHQpCi0gICAgICAgIHNlbGYuYXNzZXJ0X3RyYW5zbGF0ZShtdWx0aV9s
aW5lX2hlYWRlciArIHRleHQsIHRleHQpCi0KLSAgICBkZWYgZG9udF9zdHJpcF9vdGhlcl9oZWFk
ZXJzKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydF91bmNoYW5nZWQoIjxodG1sPlxuPCEtLSBk
b24ndCByZW1vdmUgY29tbWVudHMgb24gb3RoZXIgbGluZXMuIC0tPlxuPC9odG1sPiIpCi0KLSAg
ICBkZWYgdGVzdF9pbmNsdWRlX3Jld3JpdGluZyhzZWxmKToKLSAgICAgICAgIyBNYXBwaW5ncyB0
byBOb25lIGFyZSB1bmNoYW5nZWQKLSAgICAgICAgc3R5bGVzID0gewotICAgICAgICAgICAgImZh
aWwuY3NzIjogTm9uZSwKLSAgICAgICAgICAgICJyZXNvdXJjZXMvc3R5bGVzaGVldC5jc3MiOiBO
b25lLAotICAgICAgICAgICAgIi4uL3Jlc291cmNlcy9zdHlsZS5jc3MiOiBOb25lLAotICAgICAg
ICB9Ci0gICAgICAgIHNjcmlwdHMgPSB7Ci0gICAgICAgICAgICAiLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIjogIi4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyIsCi0gICAgICAg
ICAgICAiLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI6ICIuLi8uLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIiwKLSAgICAgICAgICAgICIuLi9yZXNvdXJjZXMvZGVza3RvcC1nbC1j
b25zdGFudHMuanMiOiAicmVzb3VyY2VzL2Rlc2t0b3AtZ2wtY29uc3RhbnRzLmpzIiwKLQotICAg
ICAgICAgICAgInJlc291cmNlcy9zaGFkb3ctb2Zmc2V0LmpzIjogTm9uZSwKLSAgICAgICAgICAg
ICIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LWFzeW5jLmpzIjogTm9uZSwKLSAgICAgICAgfQot
Ci0gICAgICAgIGlucHV0X3RleHQgPSAiIgotICAgICAgICBvdXRwdXRfdGV4dCA9ICIiCi0gICAg
ICAgIGZvciBpbnB1dCwgb3V0cHV0IGluIHN0eWxlcy5pdGVtcygpOgotICAgICAgICAgICAgaW5w
dXRfdGV4dCArPSBjb25zdHJ1Y3Rfc3R5bGUoaW5wdXQpCi0gICAgICAgICAgICBvdXRwdXRfdGV4
dCArPSBjb25zdHJ1Y3Rfc3R5bGUob3V0cHV0IGlmIG91dHB1dCBlbHNlIGlucHV0KQotICAgICAg
ICBmb3IgaW5wdXQsIG91dHB1dCBpbiBzY3JpcHRzLml0ZW1zKCk6Ci0gICAgICAgICAgICBpbnB1
dF90ZXh0ICs9IGNvbnN0cnVjdF9zY3JpcHQoaW5wdXQpCi0gICAgICAgICAgICBvdXRwdXRfdGV4
dCArPSBjb25zdHJ1Y3Rfc2NyaXB0KG91dHB1dCBpZiBvdXRwdXQgZWxzZSBpbnB1dCkKLQotICAg
ICAgICBoZWFkID0gJzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VO
Ij5cbjxodG1sPlxuPGhlYWQ+XG4nCi0gICAgICAgIGZvb3QgPSAnPC9oZWFkPlxuPGJvZHk+XG48
L2JvZHk+XG48L2h0bWw+JwotICAgICAgICBpbnB1dF90ZXh0ID0gaGVhZCArIGlucHV0X3RleHQg
KyBmb290Ci0gICAgICAgIG91dHB1dF90ZXh0ID0gaGVhZCArIG91dHB1dF90ZXh0ICsgZm9vdAot
ICAgICAgICBzZWxmLmFzc2VydF90cmFuc2xhdGUoaW5wdXRfdGV4dCwgb3V0cHV0X3RleHQpCmRp
ZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3VwZGF0ZV93ZWJnbF9jb25mb3JtYW5j
ZV90ZXN0c19saWIvbWFpbi5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdXBkYXRlX3dlYmds
X2NvbmZvcm1hbmNlX3Rlc3RzX2xpYi9tYWluLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc3ZGM5MWRiN2JlYzRh
ODE2YzM4ZTA2YTY2NWQ3YTk3ZjAzODljNGEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3VwZGF0ZV93ZWJnbF9jb25mb3JtYW5jZV90ZXN0c19saWIvbWFpbi5weQpA
QCAtMCwwICsxLDMwOCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworIyBDb3B5cmlnaHQgKEMp
IDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisj
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisKKyIiIkdlbmVyYXRlcyBXZWJLaXQgV2ViR0wgbGF5b3V0IHRlc3RzIGZyb20gdGhlIEtocm9u
b3MgV2ViR0wgY29uZm9ybWFuY2UgdGVzdHMKKworIFRvIHVzZSB0aGlzLCBnZXQgYSBjb3B5IG9m
IHRoZSBXZWJHTCBjb25mb3JtYW5jZSB0ZXN0cyB0aGVuIHJ1biB0aGlzIHNjcmlwdAorIGVnLgor
ICAgY2Qgfi90ZW1wCisgICBnaXQgY2xvbmUgZ2l0Oi8vZ2l0aHViLmNvbS9LaHJvbm9zR3JvdXAv
V2ViR0wuZ2l0CisgICBta2RpciBiYWNrdXAKKyAgIG12IH4vV2ViS2l0L0xheW91dFRlc3RzL3dl
YmdsL3sxLjAuMywyLjAuMCxzZGt9IGJhY2t1cC8KKyAgIH4vV2ViS2l0L1Rvb2xzL1NjcmlwdHMv
Z2VuZXJhdGUtd2ViZ2wtdGVzdHMgfi90ZW1wL1dlYkdMCisgICB+L1dlYktpdC9Ub29scy9TY3Jp
cHRzL3J1bi13ZWJraXQtdGVzdHMgLS1kZWJ1ZyAtLXdlYmdsIC0tb3JkZXI9cmFuZG9tIHdlYmds
CisgICB+L1dlYktpdC9Ub29scy9TY3JpcHRzL3J1bi13ZWJraXQtdGVzdHMgLS1yZWxlYXNlIC0t
d2ViZ2wgLS1vcmRlcj1yYW5kb20gd2ViZ2wKKyAgIH4vV2ViS2l0L1Rvb2xzL1NjcmlwdHMvY2hl
Y2stZm9yLWR1cGxpY2F0ZWQtcGxhdGZvcm0tdGVzdC1yZXN1bHRzIC1uIDI+JjEgfCBncmVwIHdl
YmdsCisgICBbIFVwZGF0ZSBUZXN0RXhwZWN0YXRpb25zIF0KKyAgIFsgQ2hlY2sgaW4gdGhlIHJl
c3VsdCBdCisiIiIKKworIyBOb3RlOiBUaGUgc2NyaXB0IGlzIGN1cnJlbnRseSBub3QgdGVzdGVk
IHRvIGJlIHJ1biBvbiBXaW5kb3dzLgorIyBUbyBzdGFydCBpbXBsZW1lbnRpbmcgYSBuZXcgV2Vi
R0wgZmVhdHVyZSwgYWRkIHRoZSB0ZXN0IHRvIF9zZGtfcGF0dGVybnMgYW5kIHJ1bgorIyB0aGUg
c2NyaXB0IGFzIGFib3ZlLgorIworIyBUbyBhZGQgYSBuZXcgV2ViR0wgdGVzdCBzdWl0ZSwgZWRp
dCB0aGUgbWFpbigpLgorIworIyBweXRob24zIC1tIG15cHkgbWFpbi5weSAmJiBweXRob24zIC1t
IGJsYWNrIG1haW4ucHkgLS1saW5lLWxlbmd0aCAyMDAKKworaW1wb3J0IGFyZ3BhcnNlCitpbXBv
cnQgb3MKK2ltcG9ydCBzaHV0aWwKK2ltcG9ydCBzeXMKKworZnJvbSBkaXN0dXRpbHMudmVyc2lv
biBpbXBvcnQgU3RyaWN0VmVyc2lvbiBhcyBWZXJzaW9uCitmcm9tIGZubWF0Y2ggaW1wb3J0IGZu
bWF0Y2gKK2Zyb20gcGF0aGxpYiBpbXBvcnQgUGF0aAorZnJvbSB0eXBpbmcgaW1wb3J0IENhbGxh
YmxlLCBUdXBsZSwgSXRlcmFibGUsIFVuaW9uLCBOYW1lZFR1cGxlLCBPcHRpb25hbCwgR2VuZXJh
dG9yCisKK190b29sX2RpciA9IFBhdGgoX19maWxlX18pLnBhcmVudAorX2xheW91dF90ZXN0c19k
aXIgPSBQYXRoKF9fZmlsZV9fKS5wYXJlbnQucGFyZW50LnBhcmVudC5wYXJlbnQucGFyZW50IC8g
IkxheW91dFRlc3RzIgorCitfdXNlX3ZlcmJvc2Vfb3V0cHV0ID0gRmFsc2UKKworX0lnbm9yZWRG
aWxlbmFtZU1hdGNoZXIgPSBDYWxsYWJsZVtbUGF0aF0sIGJvb2xdCisKKworIyBDcmVhdGVzIGFu
IGlnbm9yZSBmaWxlIG5hbWUgcGF0dGVybiBtYXRjaGVyIGJhc2VkIG9uIGxpc3Qgb2YgbWF0Y2gg
cnVsZXMuCisjIFJ1bGUgaXRlcmF0aW9uIG9yZGVyIGlzIHRoZSBvcmRlciBvZiBsZWFzdCBzcGVj
aWZpYyB0byBtb3N0IHNwZWNpZmljIHJ1bGUuCisjIEVtcHR5IGxpc3QgbWVhbnMgZG8gbm90IGln
bm9yZS4KKyMgSWYgcnVsZSBpcyBzdHIgYW5kIGl0IG1hdGNoZXMsIGl0IG1lYW5zIGlnbm9yZSBp
ZiBubyBtb3JlIHNwZWNpZmljIHJ1bGUgbWF0Y2hlcy4KKyMgSWYgcnVsZSBpcyBhIHR1cGxlIGFu
ZCBpdHMgZmlyc3QgZWxlbWVudCBtYXRjaGVzLCBpdCBpdCBtZWFucyBkbyBub3QgaWdub3JlIGlm
IG5vIG1vcmUgc3BlY2lmaWMgcnVsZSBtYXRjaGVzLgorZGVmIF9tYWtlX2lnbm9yZV9mbm1hdGNo
X3J1bGVfbWF0Y2hlcihydWxlczogSXRlcmFibGVbVW5pb25bc3RyLCBUdXBsZVtzdHJdXV0pIC0+
IF9JZ25vcmVkRmlsZW5hbWVNYXRjaGVyOgorICAgIGRlZiBtYXRjaF9ydWxlcyhuYW1lOiBQYXRo
KSAtPiBib29sOgorICAgICAgICBzaG91bGRfZmlsdGVyID0gTm9uZQorICAgICAgICBmb3IgcnVs
ZSBpbiBydWxlczoKKyAgICAgICAgICAgIHBhdHRlcm46IHN0ciA9IHJ1bGUgaWYgaXNpbnN0YW5j
ZShydWxlLCBzdHIpIGVsc2UgcnVsZVswXQorICAgICAgICAgICAgaWYgZm5tYXRjaChzdHIobmFt
ZSksIHBhdHRlcm4pOgorICAgICAgICAgICAgICAgIHNob3VsZF9maWx0ZXIgPSBpc2luc3RhbmNl
KHJ1bGUsIHN0cikKKyAgICAgICAgcmV0dXJuIHNob3VsZF9maWx0ZXIgaXMgVHJ1ZQorCisgICAg
cmV0dXJuIG1hdGNoX3J1bGVzCisKKworX2NvbmZvcm1hbmNlX3BhdHRlcm5zID0gX21ha2VfaWdu
b3JlX2ZubWF0Y2hfcnVsZV9tYXRjaGVyKAorICAgIFsKKyAgICAgICAgIi5naXQiLAorICAgICAg
ICAiKi5weWMiLAorICAgICAgICAidG1wKiIsCisgICAgICAgICIqL2RlcXAvYnVpbGQucHkiLAor
ICAgICAgICAiKi9kZXFwL2NvbXBpbGVyX2FkZGl0aW9uYWxfZXh0ZXJuLmpzIiwKKyAgICAgICAg
IiovZGVxcC9jb21waWxlci5qYXIiLAorICAgICAgICAiKi9kZXFwL2dlbkhUTUxmcm9tVGVzdC5w
eSIsCisgICAgICAgICIqL2RlcXAvcnVuLWNsb3N1cmUuc2giLAorICAgICAgICAiKi9kZXFwL3Rl
bXBfZXh0ZXJucyoiLAorICAgICAgICAiKi9kZXFwL3Rlc3Qtd2ViZ2wyLmpzIiwKKyAgICAgICAg
IiovZGVxcC90ZXN0LXdlYmdsMi5zaCIsCisgICAgXQorKQorCitfc2RrX3BhdHRlcm5zID0gX21h
a2VfaWdub3JlX2ZubWF0Y2hfcnVsZV9tYXRjaGVyKAorICAgIFsKKyAgICAgICAgIioiLCAgIyBJ
Z25vcmUgYWxsIGV4Y2VwdCB0aGUgb25lcyB3ZSB3YW50LiBQb3NpdGl2ZSBtYXRjaGVzIGFyZSBp
biB0dXBsZXMgKCkuCisgICAgICAgICgiKi9qcy90ZXN0cy9leHQtZmxvYXQtYmxlbmQuanMiLCks
CisgICAgICAgICgiKi9qcy90ZXN0cy9jb21wcmVzc2VkLXRleHR1cmUtdXRpbHMuanMiLCksCisg
ICAgICAgICgiKi9qcy9qcy10ZXN0LXByZS5qcyIsKSwKKyAgICAgICAgKCIqL2pzL3dlYmdsLXRl
c3QtdXRpbHMuanMiLCksCisgICAgICAgICgiKi9qcy9qcy10ZXN0LXBvc3QuanMiLCksCisgICAg
ICAgICgiKi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLCksCisgICAgICAgICgiKi9jb25m
b3JtYW5jZS9leHRlbnNpb25zL2V4dC1mbG9hdC1ibGVuZC5odG1sIiwpLAorICAgICAgICAoIiov
Y29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9leHQtdGV4dHVyZS1jb21wcmVzc2lvbi1yZ3RjLmh0bWwi
LCksCisgICAgICAgICgiKi9jb25mb3JtYW5jZS9leHRlbnNpb25zL2toci1wYXJhbGxlbC1zaGFk
ZXItY29tcGlsZS5odG1sIiwpLAorICAgICAgICAoIiovY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9v
ZXMtZmJvLXJlbmRlci1taXBtYXAuaHRtbCIsKSwKKyAgICAgICAgKCIqL2NvbmZvcm1hbmNlL2V4
dGVuc2lvbnMvczN0Yy1hbmQtcmd0Yy5odG1sIiwpLAorICAgICAgICAoIiovY29uZm9ybWFuY2Uv
ZXh0ZW5zaW9ucy93ZWJnbC1tdWx0aS1kcmF3Lmh0bWwiLCksCisgICAgICAgICgiKi9jb25mb3Jt
YW5jZTIvdW5pZm9ybXMvZ2wtdW5pZm9ybS1hcnJheXMtc3ViLXNvdXJjZS5odG1sIiwpLAorICAg
IF0KKykKKworCitkZWYgX2NvcHlfdHJlZShzcmM6IFBhdGgsIGRzdDogUGF0aCwgaWdub3JlOiBP
cHRpb25hbFtfSWdub3JlZEZpbGVuYW1lTWF0Y2hlcl0gPSBOb25lKToKKyAgICAiIiJSZWN1cnNp
dmVseSBjb3B5IGEgZGlyZWN0b3J5IHRyZWUiIiIKKyAgICBuYW1lcyA9IG9zLmxpc3RkaXIoc3Jj
KQorICAgIGZvciBuYW1lIGluIG5hbWVzOgorICAgICAgICBzcmNfbmFtZSA9IHNyYyAvIG5hbWUK
KyAgICAgICAgZHN0X25hbWUgPSBkc3QgLyBuYW1lCisKKyAgICAgICAgaWYgc3JjX25hbWUuaXNf
ZGlyKCk6CisgICAgICAgICAgICBfY29weV90cmVlKHNyY19uYW1lLCBkc3RfbmFtZSwgaWdub3Jl
KQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaWYgaWdub3JlIGlzIG5vdCBOb25lIGFuZCBp
Z25vcmUoc3JjX25hbWUpOgorICAgICAgICAgICAgICAgIGlmIF91c2VfdmVyYm9zZV9vdXRwdXQ6
CisgICAgICAgICAgICAgICAgICAgIHByaW50KCJJZ25vcmluZzogJXMiICUgKHNyY19uYW1lKSkK
KyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgaWYgX3VzZV92ZXJib3NlX291
dHB1dDoKKyAgICAgICAgICAgICAgICBwcmludCgiQ29weWluZzogJXMgLT4gJXMiICUgKHNyY19u
YW1lLCBkc3RfbmFtZSkpCisgICAgICAgICAgICBkc3QubWtkaXIocGFyZW50cz1UcnVlLCBleGlz
dF9vaz1UcnVlKQorICAgICAgICAgICAgc2h1dGlsLmNvcHlmaWxlKHNyY19uYW1lLCBkc3RfbmFt
ZSkKKworCitjbGFzcyBfV2ViR0xUZXN0KE5hbWVkVHVwbGUpOgorICAgIHBhdGg6IFBhdGgKKyAg
ICBtaW5fdmVyc2lvbjogVmVyc2lvbgorICAgIG1heF92ZXJzaW9uOiBWZXJzaW9uCisKKworZGVm
IF9wYXJzZV93ZWJnbF90ZXN0cyh0ZXN0X2xpc3Rfcm9vdDogUGF0aCwgdGVzdF9saXN0OiBQYXRo
LCBtaW5fdmVyc2lvbjogVmVyc2lvbiwgbWF4X3ZlcnNpb246IFZlcnNpb24pIC0+IEdlbmVyYXRv
cltfV2ViR0xUZXN0LCBOb25lLCBOb25lXToKKyAgICBwcmVmaXggPSB0ZXN0X2xpc3QucGFyZW50
CisgICAgd2l0aCB0ZXN0X2xpc3Qub3BlbigiciIpIGFzIGY6CisgICAgICAgIGxpbmVzID0gZi5y
ZWFkbGluZXMoKQorICAgIGZvciBsaW5lX251bWJlciwgbGluZSBpbiBlbnVtZXJhdGUobGluZXMp
OgorICAgICAgICBsaW5lID0gbGluZS5zdHJpcCgpCisgICAgICAgIGlmIGxlbihsaW5lKSA8PSAw
IG9yIGxpbmUuc3RhcnRzd2l0aCgiIyIpIG9yIGxpbmUuc3RhcnRzd2l0aCgiOyIpIG9yIGxpbmUu
c3RhcnRzd2l0aCgiLy8iKToKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIHRlc3RfbWlu
X3ZlcnNpb24gPSBtaW5fdmVyc2lvbgorICAgICAgICB0ZXN0X21heF92ZXJzaW9uID0gbWF4X3Zl
cnNpb24KKyAgICAgICAgdGVzdF9uYW1lID0gIiIKKyAgICAgICAgYXJncyA9IGl0ZXIobGluZS5z
cGxpdCgpKQorICAgICAgICBmb3IgYXJnIGluIGFyZ3M6CisgICAgICAgICAgICBpZiBhcmcuc3Rh
cnRzd2l0aCgiLSIpOgorICAgICAgICAgICAgICAgIGlmIGFyZyA9PSAiLS1zbG93IjoKKyAgICAg
ICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgICAgIGVsaWYgYXJnID09ICItLW1pbi12
ZXJzaW9uIjoKKyAgICAgICAgICAgICAgICAgICAgdGVzdF9taW5fdmVyc2lvbiA9IFZlcnNpb24o
bmV4dChhcmdzKSkKKyAgICAgICAgICAgICAgICBlbGlmIGFyZyA9PSAiLS1tYXgtdmVyc2lvbiI6
CisgICAgICAgICAgICAgICAgICAgIHRlc3RfbWF4X3ZlcnNpb24gPSBWZXJzaW9uKG5leHQoYXJn
cykpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgRXhj
ZXB0aW9uKCIlczolZCB1bmtub3duIG9wdGlvbiAnJXMnIiAlICh0ZXN0X2xpc3QsIGxpbmVfbnVt
YmVyLCBhcmcpKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB0ZXN0X25hbWUg
Kz0gYXJnCisKKyAgICAgICAgaWYgdGVzdF9uYW1lLmVuZHN3aXRoKCIudHh0Iik6CisgICAgICAg
ICAgICBmb3IgciBpbiBfcGFyc2Vfd2ViZ2xfdGVzdHModGVzdF9saXN0X3Jvb3QsIHByZWZpeCAv
IHRlc3RfbmFtZSwgdGVzdF9taW5fdmVyc2lvbiwgdGVzdF9tYXhfdmVyc2lvbik6CisgICAgICAg
ICAgICAgICAgeWllbGQgcgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgeWllbGQgX1dlYkdM
VGVzdCgKKyAgICAgICAgICAgICAgICAocHJlZml4IC8gdGVzdF9uYW1lKS5yZWxhdGl2ZV90byh0
ZXN0X2xpc3Rfcm9vdCksCisgICAgICAgICAgICAgICAgbWluX3ZlcnNpb24sCisgICAgICAgICAg
ICAgICAgbWF4X3ZlcnNpb24sCisgICAgICAgICAgICApCisKKworZGVmIF9maWx0ZXJfd2ViZ2xf
dGVzdF9wYXRoc19mb3Jfc3VpdGVfdmVyc2lvbih0ZXN0czogSXRlcmFibGVbX1dlYkdMVGVzdF0s
IHN1aXRlX3ZlcnNpb246IFZlcnNpb24pIC0+IEdlbmVyYXRvcltQYXRoLCBOb25lLCBOb25lXToK
KyAgICBmb3IgdGVzdCBpbiB0ZXN0czoKKyAgICAgICAgaWYgdGVzdC5taW5fdmVyc2lvbiA8PSBz
dWl0ZV92ZXJzaW9uIGFuZCB0ZXN0Lm1heF92ZXJzaW9uID49IHN1aXRlX3ZlcnNpb246CisgICAg
ICAgICAgICBpZiBfdXNlX3ZlcmJvc2Vfb3V0cHV0OgorICAgICAgICAgICAgICAgIHByaW50KGYi
VXNpbmcgdGVzdDoge3Rlc3QucGF0aH0ge3Rlc3QubWluX3ZlcnNpb259IDw9IHtzdWl0ZV92ZXJz
aW9ufSA8PSB7dGVzdC5tYXhfdmVyc2lvbn0iKQorICAgICAgICAgICAgeWllbGQgdGVzdC5wYXRo
CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBpZiBfdXNlX3ZlcmJvc2Vfb3V0cHV0OgorICAg
ICAgICAgICAgICAgIHByaW50KGYiSWdub3JpbmcgdGVzdDoge3Rlc3QucGF0aH0ge3Rlc3QubWlu
X3ZlcnNpb259IDw9IHtzdWl0ZV92ZXJzaW9ufSA8PSB7dGVzdC5tYXhfdmVyc2lvbn0iKQorCisK
K2RlZiBfZ2VuZXJhdGVfd2Via2l0X3dlYmdsX3Rlc3RzKAorICAgIHNvdXJjZV90ZXN0c19kaXI6
IFBhdGgsCisgICAgc291cmNlX3BhdHRlcm5zOiBfSWdub3JlZEZpbGVuYW1lTWF0Y2hlciwKKyAg
ICBzdWl0ZV92ZXJzaW9uOiBWZXJzaW9uLAorICAgIHVzZV93ZWJnbDJfY29udGV4dDogYm9vbCwK
KyAgICB0YXJnZXRfdGVzdHNfZGlyOiBQYXRoLAorKToKKyAgICB0YXJnZXRfdGVzdF9maWxlc19k
aXIgPSB0YXJnZXRfdGVzdHNfZGlyIC8gInJlc291cmNlcyIgLyAid2ViZ2xfdGVzdF9maWxlcyIK
KyAgICBfY29weV90cmVlKHNvdXJjZV90ZXN0c19kaXIsIHRhcmdldF90ZXN0X2ZpbGVzX2Rpciwg
c291cmNlX3BhdHRlcm5zKQorCisgICAgc291cmNlX2pzX3Rlc3RfaGFybmVzcyA9IF90b29sX2Rp
ciAvICJ3ZWJraXQtd2ViZ2wtdGVzdC1oYXJuZXNzLXRlbXBsYXRlLmpzIgorICAgIHRhcmdldF9q
c190ZXN0X2hhcm5lc3MgPSB0YXJnZXRfdGVzdHNfZGlyIC8gInJlc291cmNlcyIgLyAid2Via2l0
LXdlYmdsLXRlc3QtaGFybmVzcy5qcyIKKyAgICB0YXJnZXRfanNfdGVzdF9oYXJuZXNzLnBhcmVu
dC5ta2RpcihwYXJlbnRzPVRydWUsIGV4aXN0X29rPVRydWUpCisgICAgc2h1dGlsLmNvcHlmaWxl
KHNvdXJjZV9qc190ZXN0X2hhcm5lc3MsIHRhcmdldF9qc190ZXN0X2hhcm5lc3MpCisKKyAgICB0
ZXN0X3RlbXBsYXRlID0gKF90b29sX2RpciAvICJ3ZWJnbC10ZXN0LWRyaXZlci10ZW1wbGF0ZS5o
dG1sIikucmVhZF90ZXh0KCkKKyAgICBleHBlY3RhdGlvbl90ZW1wbGF0ZSA9IChfdG9vbF9kaXIg
LyAid2ViZ2wtZXhwZWN0YXRpb24tdGVtcGxhdGUudHh0IikucmVhZF90ZXh0KCkKKworICAgIHRl
c3RzID0gX3BhcnNlX3dlYmdsX3Rlc3RzKHNvdXJjZV90ZXN0c19kaXIsIChzb3VyY2VfdGVzdHNf
ZGlyIC8gIjAwX3Rlc3RfbGlzdC50eHQiKSwgc3VpdGVfdmVyc2lvbiwgc3VpdGVfdmVyc2lvbikK
KworICAgIGZvciB0ZXN0X3BhdGggaW4gX2ZpbHRlcl93ZWJnbF90ZXN0X3BhdGhzX2Zvcl9zdWl0
ZV92ZXJzaW9uKHRlc3RzLCBzdWl0ZV92ZXJzaW9uKToKKyAgICAgICAgdGFyZ2V0X3Rlc3QgPSB0
YXJnZXRfdGVzdHNfZGlyIC8gdGVzdF9wYXRoCisgICAgICAgIHRhcmdldF90ZXN0X2ltcGwgPSB0
YXJnZXRfdGVzdF9maWxlc19kaXIgLyB0ZXN0X3BhdGgKKyAgICAgICAgaWYgbm90IHRhcmdldF90
ZXN0X2ltcGwuZXhpc3RzKCk6CisgICAgICAgICAgICBpZiBfdXNlX3ZlcmJvc2Vfb3V0cHV0Ogor
ICAgICAgICAgICAgICAgIHByaW50KGYiSWdub3JpbmcgdGVzdDoge3Rlc3RfcGF0aH0sIGltcGxl
bWVudGF0aW9uIGRvZXMgbm90IGV4aXN0IGF0IHt0YXJnZXRfdGVzdF9pbXBsfSIpCisgICAgICAg
ICAgICBjb250aW51ZQorICAgICAgICB0ZXN0X3RvX2ltcGwgPSBvcy5wYXRoLnJlbHBhdGgodGFy
Z2V0X3Rlc3RfaW1wbCwgdGFyZ2V0X3Rlc3QucGFyZW50KQorICAgICAgICB0ZXN0X3VybCA9IGYi
e3Rlc3RfdG9faW1wbH0/d2ViZ2xWZXJzaW9uPTIiIGlmIHVzZV93ZWJnbDJfY29udGV4dCBlbHNl
IHRlc3RfdG9faW1wbAorICAgICAgICBzdWJzID0geyJ1cmwiOiB0ZXN0X3VybCwgInVybF9uYW1l
IjogdGVzdF9wYXRoLm5hbWUsICJiYXNlX3VybCI6IG9zLnBhdGgucmVscGF0aCh0YXJnZXRfdGVz
dHNfZGlyLCB0YXJnZXRfdGVzdC5wYXJlbnQpfQorICAgICAgICB0YXJnZXRfdGVzdC5wYXJlbnQu
bWtkaXIocGFyZW50cz1UcnVlLCBleGlzdF9vaz1UcnVlKQorICAgICAgICB0YXJnZXRfdGVzdC53
cml0ZV90ZXh0KHRlc3RfdGVtcGxhdGUgJSBzdWJzKQorICAgICAgICBwcmludChmIndyb3RlIHt0
YXJnZXRfdGVzdH0iKQorICAgICAgICBleHBlY3RhdGlvbiA9IHRhcmdldF90ZXN0LnBhcmVudCAv
IGYie3RhcmdldF90ZXN0LnN0ZW19LWV4cGVjdGVkLnR4dCIKKyAgICAgICAgZXhwZWN0YXRpb24u
d3JpdGVfdGV4dChleHBlY3RhdGlvbl90ZW1wbGF0ZSAlIHN1YnMpCisKKworZGVmIF9maW5kX2V4
cGVjdGF0aW9uc19mb3JfcmVtb3ZlZF90ZXN0cyhsYXlvdXRfdGVzdHNfZGlyOiBQYXRoKToKKyAg
ICB0ZXN0X3ByZWZpeGVzID0gc2V0KCkKKyAgICBleHBlY3RhdGlvbnMgPSBzZXQoKQorICAgIGZv
ciByb290LCBfLCBmaWxlcyBpbiBvcy53YWxrKGxheW91dF90ZXN0c19kaXIpOgorICAgICAgICBm
b3IgZmlsZV9uYW1lIGluIGZpbGVzOgorICAgICAgICAgICAgcmVsYXRpdmVfcGF0aCA9IChQYXRo
KHJvb3QpIC8gZmlsZV9uYW1lKS5yZWxhdGl2ZV90byhsYXlvdXRfdGVzdHNfZGlyKQorICAgICAg
ICAgICAgaWYgcmVsYXRpdmVfcGF0aC5zdGVtLmVuZHN3aXRoKCItZXhwZWN0ZWQiKToKKyAgICAg
ICAgICAgICAgICBleHBlY3RhdGlvbnMuYWRkKHJlbGF0aXZlX3BhdGgpCisgICAgICAgICAgICBl
bHNlOgorICAgICAgICAgICAgICAgIHRlc3RfcHJlZml4ZXMuYWRkKHJlbGF0aXZlX3BhdGgucGFy
ZW50IC8gcmVsYXRpdmVfcGF0aC5zdGVtKQorICAgIG9sZF9leHBlY3RhdGlvbnMgPSBzZXQoW10p
CisgICAgZm9yIGV4cGVjdGF0aW9uIGluIGV4cGVjdGF0aW9uczoKKyAgICAgICAgdGVzdF9wYXRo
ID0gZXhwZWN0YXRpb24ucGFyZW50CisgICAgICAgIHdoaWxlIGxlbih0ZXN0X3BhdGgucGFydHMp
ID49IDE6CisgICAgICAgICAgICB0ZXN0X3ByZWZpeCA9IHRlc3RfcGF0aCAvIGV4cGVjdGF0aW9u
LnN0ZW1bOiAtbGVuKCItZXhwZWN0ZWQiKV0KKyAgICAgICAgICAgIGlmIHRlc3RfcHJlZml4IGlu
IHRlc3RfcHJlZml4ZXM6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIHRlc3Rf
cGF0aCA9IFBhdGgoIi8iLmpvaW4odGVzdF9wYXRoLnBhcnRzWzE6XSkpCisgICAgICAgIGlmIGxl
bih0ZXN0X3BhdGgucGFydHMpIDwgMToKKyAgICAgICAgICAgIG9sZF9leHBlY3RhdGlvbnMuYWRk
KGV4cGVjdGF0aW9uKQorICAgIHJldHVybiBvbGRfZXhwZWN0YXRpb25zCisKKworZGVmIG1haW4o
KToKKyAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcigpCisgICAgcGFyc2VyLmFk
ZF9hcmd1bWVudCgiLXYiLCAiLS12ZXJib3NlIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgaGVscD0i
cHJpbnQgdmVyYm9zZSBvdXRwdXQuIikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCJ3ZWJnbF9y
ZXBvc2l0b3J5IiwgaGVscD0icGF0aCB0byBXZWJHTCBjb25mb3JtYW5jZSB0ZXN0IHJlcG9zaXRv
cnkgcm9vdC4iKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICItbCIsCisgICAg
ICAgICItLWxheW91dC10ZXN0cy1kaXIiLAorICAgICAgICBoZWxwPSJiYXNlIGRpcmVjdG9yeSBm
b3Igc2VhcmNoaW5nIGZvciBwbGF0Zm9ybSBzcGVjaWZpYyB0ZXN0cy4gRGVmYXVsdHMgdG8gTGF5
b3V0VGVzdHMuIiwKKyAgICAgICAgZGVmYXVsdD1fbGF5b3V0X3Rlc3RzX2RpciwKKyAgICApCisK
KyAgICBvcHRpb25zID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQorICAgIGdsb2JhbCBfdXNlX3ZlcmJv
c2Vfb3V0cHV0CisgICAgX3VzZV92ZXJib3NlX291dHB1dCA9IG9wdGlvbnMudmVyYm9zZSBvciBG
YWxzZQorICAgIHNvdXJjZV9kaXIgPSBQYXRoKG9wdGlvbnMud2ViZ2xfcmVwb3NpdG9yeSkKKyAg
ICB0YXJnZXRfZGlyID0gUGF0aChvcHRpb25zLmxheW91dF90ZXN0c19kaXIpIC8gIndlYmdsIgor
CisgICAgX2dlbmVyYXRlX3dlYmtpdF93ZWJnbF90ZXN0cygKKyAgICAgICAgc291cmNlX3Rlc3Rz
X2Rpcj1zb3VyY2VfZGlyIC8gImNvbmZvcm1hbmNlLXN1aXRlcyIgLyAiMS4wLjMiLAorICAgICAg
ICBzb3VyY2VfcGF0dGVybnM9X2NvbmZvcm1hbmNlX3BhdHRlcm5zLAorICAgICAgICBzdWl0ZV92
ZXJzaW9uPVZlcnNpb24oIjEuMC4zIiksCisgICAgICAgIHVzZV93ZWJnbDJfY29udGV4dD1GYWxz
ZSwKKyAgICAgICAgdGFyZ2V0X3Rlc3RzX2Rpcj10YXJnZXRfZGlyIC8gIjEuMC4zIiwKKyAgICAp
CisgICAgX2dlbmVyYXRlX3dlYmtpdF93ZWJnbF90ZXN0cygKKyAgICAgICAgc291cmNlX3Rlc3Rz
X2Rpcj1zb3VyY2VfZGlyIC8gImNvbmZvcm1hbmNlLXN1aXRlcyIgLyAiMi4wLjAiLAorICAgICAg
ICBzb3VyY2VfcGF0dGVybnM9X2NvbmZvcm1hbmNlX3BhdHRlcm5zLAorICAgICAgICBzdWl0ZV92
ZXJzaW9uPVZlcnNpb24oIjIuMC4xIiksCisgICAgICAgIHVzZV93ZWJnbDJfY29udGV4dD1UcnVl
LAorICAgICAgICB0YXJnZXRfdGVzdHNfZGlyPXRhcmdldF9kaXIgLyAiMi4wLjAiLAorICAgICkK
KyAgICBfZ2VuZXJhdGVfd2Via2l0X3dlYmdsX3Rlc3RzKAorICAgICAgICBzb3VyY2VfdGVzdHNf
ZGlyPXNvdXJjZV9kaXIgLyAic2RrIiAvICJ0ZXN0cyIsCisgICAgICAgIHNvdXJjZV9wYXR0ZXJu
cz1fc2RrX3BhdHRlcm5zLAorICAgICAgICBzdWl0ZV92ZXJzaW9uPVZlcnNpb24oIjIuMC4xIiks
CisgICAgICAgIHVzZV93ZWJnbDJfY29udGV4dD1UcnVlLAorICAgICAgICB0YXJnZXRfdGVzdHNf
ZGlyPXRhcmdldF9kaXIgLyAic2RrIiwKKyAgICApCisgICAgbGF5b3V0X3Rlc3RzX2RpciA9IFBh
dGgob3B0aW9ucy5sYXlvdXRfdGVzdHNfZGlyKQorCisgICAgb2xkX2V4cGVjdGF0aW9ucyA9IF9m
aW5kX2V4cGVjdGF0aW9uc19mb3JfcmVtb3ZlZF90ZXN0cyhsYXlvdXRfdGVzdHNfZGlyKQorICAg
IG9sZF9leHBlY3RhdGlvbnMgPSBbZSBmb3IgZSBpbiBvbGRfZXhwZWN0YXRpb25zIGlmICJ3ZWJn
bCIgaW4gc3RyKGUpXQorICAgIGlmIG9sZF9leHBlY3RhdGlvbnM6CisgICAgICAgIHByaW50KAor
ICAgICAgICAgICAgIk9sZCBleHBlY3RhdGlvbnMgbWF5YmUgZm91bmQuIE1heWJlIGRvOlxuICAg
IGdpdCBybSAiCisgICAgICAgICAgICArICIgIi5qb2luKHNvcnRlZChbc3RyKChsYXlvdXRfdGVz
dHNfZGlyIC8gZSkucmVsYXRpdmVfdG8obGF5b3V0X3Rlc3RzX2Rpci5wYXJlbnQpKSBmb3IgZSBp
biBvbGRfZXhwZWN0YXRpb25zXSkpCisgICAgICAgICkKKworCitpZiBfX25hbWVfXyA9PSAiX19t
YWluX18iOgorICAgIHN5cy5leGl0KG1haW4oKSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdXBkYXRlX3dlYmdsX2NvbmZvcm1hbmNlX3Rlc3RzX2xpYi93ZWJnbC1leHBlY3Rh
dGlvbi10ZW1wbGF0ZS50eHQgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3VwZGF0ZV93ZWJnbF9j
b25mb3JtYW5jZV90ZXN0c19saWIvd2ViZ2wtZXhwZWN0YXRpb24tdGVtcGxhdGUudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjIzN2U4YjM4OGUwYzA5MzM4MTg2YTRiMGRhMTg0ZDIyMTM3NzBmMDkKLS0tIC9kZXYv
bnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3VwZGF0ZV93ZWJnbF9jb25mb3JtYW5j
ZV90ZXN0c19saWIvd2ViZ2wtZXhwZWN0YXRpb24tdGVtcGxhdGUudHh0CkBAIC0wLDAgKzEsNCBA
QAorVGhpcyB0ZXN0IHJ1bnMgdGhlIFdlYkdMIFRlc3QgbGlzdGVkIGJlbG93IGluIGFuIGlmcmFt
ZSBhbmQgcmVwb3J0cyBQQVNTIG9yIEZBSUwuCisKK1Rlc3Q6ICUodXJsKXMKK1sgUEFTUyBdIEFs
bCB0ZXN0cyBwYXNzZWQKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdXBkYXRl
X3dlYmdsX2NvbmZvcm1hbmNlX3Rlc3RzX2xpYi93ZWJnbC10ZXN0LWRyaXZlci10ZW1wbGF0ZS5o
dG1sIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS91cGRhdGVfd2ViZ2xfY29uZm9ybWFuY2VfdGVz
dHNfbGliL3dlYmdsLXRlc3QtZHJpdmVyLXRlbXBsYXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTEzZjhj
YTRjZTY5NmViNGYxNjkyOTM5YmMyOTE5ZDIyNzFkM2ExOAotLS0gL2Rldi9udWxsCisrKyBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdXBkYXRlX3dlYmdsX2NvbmZvcm1hbmNlX3Rlc3RzX2xpYi93
ZWJnbC10ZXN0LWRyaXZlci10ZW1wbGF0ZS5odG1sCkBAIC0wLDAgKzEsMTggQEAKKzwhLS0gVGhp
cyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGJ5IFRvb2xzL1NjcmlwdHMvdXBkYXRlLXdlYmdsLWNv
bmZvcm1hbmNlLXRlc3RzLiBETyBOT1QgRURJVCAtLT4KKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBDb25mb3JtYW5j
ZSBUZXN0IFdyYXBwZXIgZm9yICUodXJsX25hbWUpczwvdGl0bGU+Cis8c2NyaXB0IHR5cGU9InRl
eHQvamF2YXNjcmlwdCIgc3JjPSIlKGJhc2VfdXJsKXMvLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IiUoYmFz
ZV91cmwpcy9yZXNvdXJjZXMvd2Via2l0LXdlYmdsLXRlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgdGVzdCBydW5zIHRoZSBXZWJHTCBUZXN0IGxpc3Rl
ZCBiZWxvdyBpbiBhbiBpZnJhbWUgYW5kIHJlcG9ydHMgUEFTUyBvciBGQUlMLjwvcD4KK1Rlc3Q6
IDxhIGhyZWY9IiUodXJsKXMiPiUodXJsKXM8L2E+Cis8ZGl2IGlkPSJpZnJhbWUiPgorPGlmcmFt
ZSBzcmM9IiUodXJsKXMiIHdpZHRoPSI4MDAiIGhlaWdodD0iNjAwIj48L2lmcmFtZT4KKzwvZGl2
PgorPGRpdiBpZD0icmVzdWx0Ij48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdXBkYXRlX3dlYmdsX2NvbmZvcm1hbmNlX3Rlc3RzX2xp
Yi93ZWJraXQtd2ViZ2wtdGVzdC1oYXJuZXNzLXRlbXBsYXRlLmpzIGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS91cGRhdGVfd2ViZ2xfY29uZm9ybWFuY2VfdGVzdHNfbGliL3dlYmtpdC13ZWJnbC10
ZXN0LWhhcm5lc3MtdGVtcGxhdGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzg2MTViZTUwMGFiN2U5Njg5ZDIz
ZWVmZWVjMWNmYzZjNDA5NDAyZQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdXBkYXRlX3dlYmdsX2NvbmZvcm1hbmNlX3Rlc3RzX2xpYi93ZWJraXQtd2ViZ2wtdGVz
dC1oYXJuZXNzLXRlbXBsYXRlLmpzCkBAIC0wLDAgKzEsNzcgQEAKKyJ1c2Ugc3RyaWN0IjsKKyhm
dW5jdGlvbigpIHsKKyAgdmFyIG51bUZhaWx1cmVzID0gMDsKKyAgdmFyIHJlc3VsdHNMaXN0ID0g
bnVsbDsKKyAgdmFyIHJlc3VsdE51bSA9IDE7CisKKyAgaWYgKHdpbmRvdy50ZXN0UnVubmVyICYm
ICF3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICB3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIgPSB3aW5kb3cudGVzdFJ1bm5lcjsKKyAgfQorCisgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworCisgICAgLy8gVHVy
biBvZmYgY29uc29sZSBtZXNzYWdlcyBiZWNhdXNlIGZvciB0aGUgV2ViR0wgdGVzdHMgdGhleSBh
cmUKKyAgICAvLyBHUFUgY2FwYWJpbGl0eSBkZXBlbmRlbnQuCisgICAgd2luZG93LmNvbnNvbGUu
bG9nID0gZnVuY3Rpb24oKSB7IH07CisgICAgd2luZG93LmNvbnNvbGUuZXJyb3IgPSBmdW5jdGlv
bigpIHsgfTsKKyAgfQorCisKKyAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICB3aW5kb3cu
aW50ZXJuYWxzLnNldHRpbmdzLnNldFdlYkdMRXJyb3JzVG9Db25zb2xlRW5hYmxlZChmYWxzZSk7
CisgIH0KKworICB2YXIgbGlzdCA9IGZ1bmN0aW9uKG1zZywgY29sb3IpIHsKKyAgICBpZiAoIXJl
c3VsdHNMaXN0KSB7CisgICAgICByZXN1bHRzTGlzdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
InVsIik7CisgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuYXBwZW5kQ2hp
bGQocmVzdWx0c0xpc3QpOworICAgIH0KKworICAgIHZhciBpdGVtID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgibGkiKTsKKyAgICBpdGVtLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHRO
b2RlKG1zZykpOworICAgIGlmIChjb2xvcikgeworICAgICAgaXRlbS5zdHlsZS5jb2xvciA9IGNv
bG9yOworICAgIH0KKworICAgIHJlc3VsdHNMaXN0LmFwcGVuZENoaWxkKGl0ZW0pOworICB9CisK
KyAgdmFyIGxvZyA9IGZ1bmN0aW9uKG1zZywgY29sb3IpIHsKKyAgICB2YXIgZGl2ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgZGl2LmFwcGVuZENoaWxkKGRvY3VtZW50LmNy
ZWF0ZVRleHROb2RlKG1zZykpOworICAgIGlmIChjb2xvcikgeworICAgICAgZGl2LnN0eWxlLmNv
bG9yID0gY29sb3I7CisgICAgfQorICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQi
KS5hcHBlbmRDaGlsZChkaXYpOworICB9OworCisgIHdpbmRvdy53ZWJnbFRlc3RIYXJuZXNzID0g
eworICAgIHJlcG9ydFJlc3VsdHM6IGZ1bmN0aW9uKHVybCwgc3VjY2VzcywgbXNnKSB7CisgICAg
ICBpZiAoc3VjY2VzcykgeworICAgICAgICBsaXN0KGBbICR7cmVzdWx0TnVtfTogUEFTUyBdICR7
bXNnfWAsICJncmVlbiIpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgbGlzdChgWyAke3Jlc3Vs
dE51bX06IEZBSUwgXSAke21zZ31gLCAicmVkIik7CisgICAgICAgICsrbnVtRmFpbHVyZXM7Cisg
ICAgICB9CisKKyAgICAgICsrcmVzdWx0TnVtOworICAgIH0sCisKKyAgICBub3RpZnlGaW5pc2hl
ZDogZnVuY3Rpb24odXJsKSB7CisgICAgICB2YXIgaWZyYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImlmcmFtZSIpOworICAgICAgaWYgKG51bUZhaWx1cmVzID4gMCkgeworICAgICAgICBs
b2coYFsgRkFJTCBdICR7bnVtRmFpbHVyZXN9IGZhaWx1cmVzIHJlcG9ydGVkYCwgInJlZCIpOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgcmVzdWx0c0xpc3QuaW5uZXJIVE1MID0gIiI7CisgICAg
ICAgIGlmcmFtZS5pbm5lckhUTUwgPSAiIjsKKyAgICAgICAgbG9nKCJbIFBBU1MgXSBBbGwgdGVz
dHMgcGFzc2VkIiwgImdyZWVuIik7CisgICAgICB9CisKKyAgICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9u
ZSgpOworICAgICAgfQorICAgIH0sCisgIH0KK30oKSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNDc2YjY3NmYwYmFkYTQy
ZjI5NGU0ODRjMDJlNmU4N2U4NDk0MWUyMi4uZDI0MmQ5YWZhNmJmNDA4OGIzYjgxYzhjMzFjNDYz
ZDhkN2EwYmE0OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIxLTAzLTEyICBLaW1tbyBLaW5u
dW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBXZWJHTCBjb25mb3Jt
YW5jZSB0ZXN0IHVwZGF0ZSBzY3JpcHQgbW9yZSB1c2FibGUgYW5kIGNvbnNpc3RlbnQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzExMgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgdGhlIHNjcmlw
dCBvdmVyIHRoZSBleGlzdGluZyBidXQgdW51c2VkIFRvb2xzL1NjcmlwdHMvdXBkYXRlLXdlYmds
LWNvbmZvcm1hbmNlLXRlc3RzLgorCisgICAgICAgICogd2ViZ2wvZ2VuZXJhdGUtd2ViZ2wtdGVz
dHM6IFJlbW92ZWQuCisKIDIwMjEtMDMtMTEgIFJvYiBCdWlzICA8cmJ1aXNAaWdhbGlhLmNvbT4K
IAogICAgICAgICBBcHBseSB0cmFuc2ZlcnJlZCBtaW4vbWF4IHNpemVzIGZvciBpbnRyaW5zaWMg
c2l6aW5nCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9nZW5lcmF0ZS13ZWJnbC10ZXN0
cyBiL0xheW91dFRlc3RzL3dlYmdsL2dlbmVyYXRlLXdlYmdsLXRlc3RzCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDc1NQppbmRleCA1YTk1ZjIwNjcyZGU1NmRjOWIwYWRlNDBmN2M4ZDQzMTM5NTk4ODBm
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL3dlYmdsL2dlbmVyYXRlLXdlYmdsLXRlc3RzCisrKyAvZGV2L251bGwKQEAgLTEsMjcwICsw
LDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbjMKLSMgQ29weXJpZ2h0IChDKSAyMDEzIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMK
LSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
LSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0iIiJnZW5l
cmF0ZXMgd2ViZ2wgbGF5b3V0IHRlc3RzIGZyb20gdGhlIEtocm9ub3MgV2ViR0wgQ29uZm9ybWFu
Y2UgVGVzdHMiIiIKLQotIyBUbyB1c2UgdGhpcywgZ2V0IGEgY29weSBvZiB0aGUgV2ViR0wgY29u
Zm9ybWFuY2UgdGVzdHMgdGhlbiBydW4gdGhpcyBzY3JpcHQKLSMgZWcuCi0jCi0jICAgY2Qgfi90
ZW1wCi0jICAgZ2l0IGNsb25lIGdpdDovL2dpdGh1Yi5jb20vS2hyb25vc0dyb3VwL1dlYkdMLmdp
dAotIyAgIGNkIH4vV2ViS2l0L0xheW91dFRlc3RzL3dlYmdsCi0jICAgcHl0aG9uIGdlbmVyYXRl
LXdlYmdsLXRlc3RzLnB5IC13IH4vdGVtcC9XZWJHTC9zZGsvdGVzdHMgLWUKLSMKLSMgTm93IGNo
ZWNrIHJ1biB0aGUgTGF5b3V0VGVzdHMsIHVwZGF0ZSBUZXN0RXhwZWN0YXRpb25zIGFuZCBjaGVj
ayBpbiB0aGUKLSMgcmVzdWx0LgotCi1pbXBvcnQgY29weQotaW1wb3J0IG9zCi1pbXBvcnQgb3Mu
cGF0aAotaW1wb3J0IHN5cwotaW1wb3J0IHJlCi1pbXBvcnQganNvbgotaW1wb3J0IHNodXRpbAot
ZnJvbSBvcHRwYXJzZSBpbXBvcnQgT3B0aW9uUGFyc2VyCi0KLWlmIHN5cy52ZXJzaW9uIDwgJzIu
Nic6Ci0gIHByaW50ICdXcm9uZyBQeXRob24gVmVyc2lvbiAhISE6IE5lZWQgPj0gMi42JwotICBz
eXMuZXhpdCgxKQotCi0KLUdMT0JBTF9PUFRJT05TID0gewotICAjIHZlcnNpb24gdXNlLiBUZXN0
cyBhdCBvciBiZWxvdyB0aGlzIHdpbGwgYmUgaW5jbHVkZWQuCi0gICJ2ZXJzaW9uIjogIjIuMC4w
IiwKLQotICAjIHZlcnNpb24gdXNlZCBmb3IgdW5sYWJsZWQgdGVzdHMKLSAgImRlZmF1bHQtdmVy
c2lvbiI6ICIyLjAiLAotCi0gICMgSWYgc2V0LCB0aGUgdmVyc2lvbiB3ZSByZXF1aXJlLiBUZXN0
cyBiZWxvdyB0aGlzIHdpbGwgYmUgaWdub3JlZC4KLSAgIm1pbi12ZXJzaW9uIjogIjEuMC4zIiwK
LX0KLQotCi1kZWYgUmVhZEZpbGUoZmlsZW5hbWUpOgotICAiIiJSZWFkcyBhIGZpbGUgYXMgYSBz
dHJpbmciIiIKLSAgZmlsZSA9IG9wZW4oZmlsZW5hbWUsICJyIikKLSAgZGF0YSA9IGZpbGUucmVh
ZCgpCi0gIGZpbGUuY2xvc2UoKQotICByZXR1cm4gZGF0YQotCi0KLWRlZiBXcml0ZUZpbGUoZmls
ZW5hbWUsIGRhdGEpOgotICAiIiJXcml0ZXMgYSBzdHJpbmcgYXMgYSBmaWxlIiIiCi0gIHByaW50
ICJXcml0aW5nOiAiLCBmaWxlbmFtZQotICBkaXJuYW1lID0gb3MucGF0aC5kaXJuYW1lKGZpbGVu
YW1lKQotICBpZiBub3Qgb3MucGF0aC5leGlzdHMoZGlybmFtZSk6Ci0gICAgb3MubWFrZWRpcnMo
ZGlybmFtZSkKLSAgZmlsZSA9IG9wZW4oZmlsZW5hbWUsICJ3YiIpCi0gIGZpbGUud3JpdGUoZGF0
YSkKLSAgZmlsZS5jbG9zZSgpCi0KLQotZGVmIENvcHlUcmVlKHNyYywgZHN0LCBpZ25vcmU9Tm9u
ZSk6Ci0gICIiIlJlY3Vyc2l2ZWx5IGNvcHkgYSBkaXJlY3RvcnkgdHJlZSIiIgotICBuYW1lcyA9
IG9zLmxpc3RkaXIoc3JjKQotICBpZiBpZ25vcmUgaXMgbm90IE5vbmU6Ci0gICAgaWdub3JlZF9u
YW1lcyA9IGlnbm9yZShzcmMsIG5hbWVzKQotICBlbHNlOgotICAgIGlnbm9yZWRfbmFtZXMgPSBz
ZXQoKQotCi0gIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhkc3QpOgotICAgIG9zLm1ha2VkaXJzKGRz
dCkKLSAgZXJyb3JzID0gW10KLSAgZm9yIG5hbWUgaW4gbmFtZXM6Ci0gICAgaWYgbmFtZSBpbiBp
Z25vcmVkX25hbWVzOgotICAgICAgY29udGludWUKLSAgICBzcmNuYW1lID0gb3MucGF0aC5qb2lu
KHNyYywgbmFtZSkKLSAgICBkc3RuYW1lID0gb3MucGF0aC5qb2luKGRzdCwgbmFtZSkKLSAgICB0
cnk6Ci0gICAgICBpZiBvcy5wYXRoLmlzZGlyKHNyY25hbWUpOgotICAgICAgICBDb3B5VHJlZShz
cmNuYW1lLCBkc3RuYW1lLCBpZ25vcmUpCi0gICAgICBlbHNlOgotICAgICAgICAjIFdpbGwgcmFp
c2UgYSBTcGVjaWFsRmlsZUVycm9yIGZvciB1bnN1cHBvcnRlZCBmaWxlIHR5cGVzCi0gICAgICAg
IHNodXRpbC5jb3B5ZmlsZShzcmNuYW1lLCBkc3RuYW1lKQotICAgICMgY2F0Y2ggdGhlIEVycm9y
IGZyb20gdGhlIHJlY3Vyc2l2ZSBjb3B5dHJlZSBzbyB0aGF0IHdlIGNhbgotICAgICMgY29udGlu
dWUgd2l0aCBvdGhlciBmaWxlcwotICAgIGV4Y2VwdCBFcnJvciwgZXJyOgotICAgICAgZXJyb3Jz
LmV4dGVuZChlcnIuYXJnc1swXSkKLSAgICBleGNlcHQgRW52aXJvbm1lbnRFcnJvciwgd2h5Ogot
ICAgICAgZXJyb3JzLmFwcGVuZCgoc3JjbmFtZSwgZHN0bmFtZSwgc3RyKHdoeSkpKQotICBpZiBl
cnJvcnM6Ci0gICAgcmFpc2UgRXJyb3IsIGVycm9ycwotCi0KLWRlZiBGaWxlUmVhZGVyKGZpbGVu
YW1lKToKLSAgIiIiQSBGaWxlIGdlbmVyYXRvciB0aGF0IHJldHVybnMgb25seSBub24gZW1wdHks
IG5vbiBjb21tZW50IGxpbmVzIiIiCi0gIGZpbGUgPSBvcGVuKGZpbGVuYW1lLCAiciIpCi0gIGxp
bmVzID0gZmlsZS5yZWFkbGluZXMoKQotICBmaWxlLmNsb3NlKCkKLSAgZm9yIGxpbmVfbnVtYmVy
LCBsaW5lIGluIGVudW1lcmF0ZShsaW5lcyk6Ci0gICAgbGluZSA9IGxpbmUuc3RyaXAoKQotICAg
IGlmIChsZW4obGluZSkgPiAwIGFuZAotICAgICAgICBub3QgbGluZS5zdGFydHN3aXRoKCIjIikg
YW5kCi0gICAgICAgIG5vdCBsaW5lLnN0YXJ0c3dpdGgoIjsiKSBhbmQKLSAgICAgICAgbm90IGxp
bmUuc3RhcnRzd2l0aCgiLy8iKSk6Ci0gICAgICB5aWVsZCBsaW5lX251bWJlciArIDEsIGxpbmUK
LQotCi1kZWYgR3JlYXRlclRoYW5PckVxdWFsVG9WZXJzaW9uKGhhdmUsIHdhbnQpOgotICAiIiJD
b21wYXJlcyB0byB2ZXJzaW9uIHN0cmluZ3MiIiIKLSAgaGF2ZSA9IGhhdmUuc3BsaXQoIiAiKVsw
XS5zcGxpdCgiLiIpCi0gIHdhbnQgPSB3YW50LnNwbGl0KCIgIilbMF0uc3BsaXQoIi4iKQotICBm
b3IgbmR4LCB3YW50X3N0ciBpbiBlbnVtZXJhdGUod2FudCk6Ci0gICAgd2FudF9udW0gPSBpbnQo
d2FudF9zdHIpCi0gICAgaGF2ZV9udW0gPSAwCi0gICAgaWYgbmR4IDwgbGVuKGhhdmUpOgotICAg
ICAgaGF2ZV9udW0gPSBpbnQoaGF2ZVtuZHhdKQotICAgIGlmIGhhdmVfbnVtIDwgd2FudF9udW06
Ci0gICAgICByZXR1cm4gRmFsc2UKLSAgICBpZiBoYXZlX251bSA+PSB3YW50X251bToKLSAgICAg
IHJldHVybiBUcnVlCi0gIHJldHVybiBUcnVlCi0KLQotZGVmIEdldFRlc3RMaXN0KGxpc3RfZmls
ZW5hbWUsIGRlc3RfZGlyLCBoaWVyYXJjaGljYWxfb3B0aW9ucyk6Ci0gIGdsb2JhbCBHTE9CQUxf
T1BUSU9OUwotICB0ZXN0cyA9IFtdCi0gIHByZWZpeCA9IG9zLnBhdGguZGlybmFtZShsaXN0X2Zp
bGVuYW1lKQotICBmb3IgbGluZV9udW1iZXIsIGxpbmUgaW4gRmlsZVJlYWRlcihsaXN0X2ZpbGVu
YW1lKToKLSAgICBhcmdzID0gbGluZS5zcGxpdCgpCi0gICAgdGVzdF9vcHRpb25zID0ge30KLSAg
ICBub25fb3B0aW9ucyA9IFtdCi0gICAgdXNlX3Rlc3QgPSBUcnVlCi0gICAgd2hpbGUgbGVuKGFy
Z3MpOgotICAgICAgYXJnID0gYXJncy5wb3AoMCkKLSAgICAgIGlmIGFyZy5zdGFydHN3aXRoKCIt
Iik6Ci0gICAgICAgIGlmIG5vdCBhcmcuc3RhcnRzd2l0aCgiLS0iKToKLSAgICAgICAgICByYWlz
ZSAiJXM6JWQgYmFkIG9wdGlvbiIgJSAobGlzdF9maWxlbmFtZSwgbGluZV9udW1iZXIpCi0gICAg
ICAgIG9wdGlvbiA9IGFyZ1syOl0KLSAgICAgICAgaWYgb3B0aW9uID09ICdzbG93JzoKLSAgICAg
ICAgICBwYXNzCi0gICAgICAgIGVsaWYgb3B0aW9uID09ICdtaW4tdmVyc2lvbicgb3Igb3B0aW9u
ID09ICJtYXgtdmVyc2lvbiI6Ci0gICAgICAgICAgdGVzdF9vcHRpb25zW29wdGlvbl0gPSBhcmdz
LnBvcCgwKQotICAgICAgICBlbHNlOgotICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiJXM6JWQg
dW5rbm93biBvcHRpb24gJyVzJyIgJSAobGlzdF9maWxlbmFtZSwgbGluZV9udW1iZXIsIGFyZykp
Ci0gICAgICBlbHNlOgotICAgICAgICBub25fb3B0aW9ucy5hcHBlbmQoYXJnKQotICAgIHVybCA9
IG9zLnBhdGguam9pbihwcmVmaXgsICIgIi5qb2luKG5vbl9vcHRpb25zKSkKLQotICAgIGlmIG5v
dCB1cmwuZW5kc3dpdGgoIi50eHQiKToKLSAgICAgIGlmICJtaW4tdmVyc2lvbiIgaW4gdGVzdF9v
cHRpb25zOgotICAgICAgICBtaW5fdmVyc2lvbiA9IHRlc3Rfb3B0aW9uc1sibWluLXZlcnNpb24i
XQotICAgICAgZWxzZToKLSAgICAgICAgbWluX3ZlcnNpb24gPSBoaWVyYXJjaGljYWxfb3B0aW9u
c1siZGVmYXVsdC12ZXJzaW9uIl0KLQotICAgICAgaWYgIm1pbi12ZXJzaW9uIiBpbiBHTE9CQUxf
T1BUSU9OUzoKLSAgICAgICAgdXNlX3Rlc3QgPSBHcmVhdGVyVGhhbk9yRXF1YWxUb1ZlcnNpb24o
bWluX3ZlcnNpb24sIEdMT0JBTF9PUFRJT05TWyJtaW4tdmVyc2lvbiJdKQotICAgICAgZWxzZToK
LSAgICAgICAgdXNlX3Rlc3QgPSBHcmVhdGVyVGhhbk9yRXF1YWxUb1ZlcnNpb24oR0xPQkFMX09Q
VElPTlNbInZlcnNpb24iXSwgbWluX3ZlcnNpb24pCi0KLSAgICBpZiBub3QgdXNlX3Rlc3Q6Ci0g
ICAgICBjb250aW51ZQotCi0gICAgaWYgdXJsLmVuZHN3aXRoKCIudHh0Iik6Ci0gICAgICBpZiAi
bWluLXZlcnNpb24iIGluIHRlc3Rfb3B0aW9uczoKLSAgICAgICAgaGllcmFyY2hpY2FsX29wdGlv
bnNbImRlZmF1bHQtdmVyc2lvbiJdID0gdGVzdF9vcHRpb25zWyJtaW4tdmVyc2lvbiJdCi0gICAg
ICB0ZXN0cyA9IHRlc3RzICsgR2V0VGVzdExpc3QoCi0gICAgICAgICAgb3MucGF0aC5qb2luKHBy
ZWZpeCwgdXJsKSwgZGVzdF9kaXIsIGNvcHkuY29weShoaWVyYXJjaGljYWxfb3B0aW9ucykpCi0g
ICAgZWxzZToKLSAgICAgIHRlc3RzLmFwcGVuZCh7InVybCI6IHVybH0pCi0gIHJldHVybiB0ZXN0
cwotCi0KLWRlZiBtYWluKGFyZ3YpOgotICAiIiJUaGlzIGlzIHRoZSBtYWluIGZ1bmN0aW9uLiIi
IgotICBnbG9iYWwgR0xPQkFMX09QVElPTlMKLQotICBwYXJzZXIgPSBPcHRpb25QYXJzZXIoKQot
ICBwYXJzZXIuYWRkX29wdGlvbigKLSAgICAgICItdiIsICItLXZlcmJvc2UiLCBhY3Rpb249InN0
b3JlX3RydWUiLAotICAgICAgaGVscD0icHJpbnRzIG1vcmUgb3V0cHV0LiIpCi0gIHBhcnNlci5h
ZGRfb3B0aW9uKAotICAgICAgIi13IiwgIi0td2ViZ2wtY29uZm9ybWFuY2UtdGVzdCIsIGRlc3Q9
InNvdXJjZV9kaXIiLAotICAgICAgaGVscD0icGF0aCB0byB3ZWJnbCBjb25mb3JtYW5jZSB0ZXN0
cy4gUkVRVUlSRUQiKQotICBwYXJzZXIuYWRkX29wdGlvbigKLSAgICAgICItbiIsICItLW5vLWNv
cHkiLCBhY3Rpb249InN0b3JlX3RydWUiLAotICAgICAgaGVscD0iZG8gbm90IGNvcHkgdGVzdHMi
KQotICBwYXJzZXIuYWRkX29wdGlvbigKLSAgICAgICItZSIsICItLWdlbmVyYXRlLWV4cGVjdGF0
aW9ucyIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsCi0gICAgICBoZWxwPSJnZW5lcmF0ZXQgdGhlIHRl
c3QgZXhwZWN0YXRpb25zIikKLSAgcGFyc2VyLmFkZF9vcHRpb24oCi0gICAgICAiLW8iLCAiLS1v
dXRwdXQtZGlyIiwgZGVzdD0ib3V0cHV0X2RpciIsCi0gICAgICBoZWxwPSJiYXNlIGRpcmVjdG9y
eSBmb3Igb3V0cHV0LiBkZWZhdWx0cyB0byBcJy5cJyIsCi0gICAgICBkZWZhdWx0PSIuIikKLQot
ICAob3B0aW9ucywgYXJncykgPSBwYXJzZXIucGFyc2VfYXJncyhhcmdzPWFyZ3YpCi0KLSAgaWYg
bm90IG9wdGlvbnMuc291cmNlX2RpcjoKLSAgICBwYXJzZXIucHJpbnRfaGVscCgpCi0gICAgcmV0
dXJuIDEKLQotICBvcy5jaGRpcihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pIG9yICcuJykKLQot
ICBzb3VyY2VfZGlyID0gb3B0aW9ucy5zb3VyY2VfZGlyOwotICBvdXRwdXRfZGlyID0gb3B0aW9u
cy5vdXRwdXRfZGlyOwotICB3ZWJnbF90ZXN0c19kaXIgPSBvcy5wYXRoLmpvaW4ob3V0cHV0X2Rp
ciwgInJlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzIikKLQotICAjIGNvcHkgYWxsIHRoZSBmaWxl
cyBmcm9tIHRoZSBXZWJHTCBjb25mb3JtYW5jZSB0ZXN0cy4KLSAgaWYgbm90IG9wdGlvbnMubm9f
Y29weToKLSAgICBDb3B5VHJlZSgKLSAgICAgICAgc291cmNlX2Rpciwgd2ViZ2xfdGVzdHNfZGly
LCBzaHV0aWwuaWdub3JlX3BhdHRlcm5zKAotICAgICAgICAgICAgJy5naXQnLCAnKi5weWMnLCAn
dG1wKicpKQotCi0gIHRlc3RfdGVtcGxhdGUgPSBSZWFkRmlsZSgicmVzb3VyY2VzL3dlYmdsLXdy
YXBwZXItdGVtcGxhdGUuaHRtbCIpCi0gIGV4cGVjdGF0aW9uX3RlbXBsYXRlID0gUmVhZEZpbGUo
InJlc291cmNlcy93ZWJnbC1leHBlY3RhdGlvbi10ZW1wbGF0ZS50eHQiKQotCi0gICMgZ2VuZXJh
dGUgd3JhcHBlcnMgZm9yIGFsbCB0aGUgdGVzdHMKLSAgdGVzdHMgPSBHZXRUZXN0TGlzdChvcy5w
YXRoLmpvaW4oc291cmNlX2RpciwgIjAwX3Rlc3RfbGlzdC50eHQiKSwgIi4iLAotICAgICAgICAg
ICAgICAgICAgICAgIGNvcHkuY29weShHTE9CQUxfT1BUSU9OUykpCi0KLSAgZm9yIHRlc3QgaW4g
dGVzdHM6Ci0gICAgdXJsID0gb3MucGF0aC5yZWxwYXRoKHRlc3RbInVybCJdLCBzb3VyY2VfZGly
KQotICAgIGRzdCA9IG9zLnBhdGguam9pbihvdXRwdXRfZGlyLCB1cmwpCi0gICAgZHN0X2RpciA9
IG9zLnBhdGguZGlybmFtZShkc3QpCi0gICAgc3JjID0gb3MucGF0aC5yZWxwYXRoKG9zLnBhdGgu
am9pbih3ZWJnbF90ZXN0c19kaXIsIHVybCksIGRzdF9kaXIpLnJlcGxhY2UoIlxcIiwgIi8iKQot
ICAgIGJhc2VfdXJsID0gb3MucGF0aC5yZWxwYXRoKG91dHB1dF9kaXIsIGRzdF9kaXIpLnJlcGxh
Y2UoIlxcIiwgIi8iKQotICAgIHN1YnMgPSB7Ci0gICAgICAidXJsIjogc3JjLAotICAgICAgInVy
bF9uYW1lIjogb3MucGF0aC5iYXNlbmFtZSh1cmwpLAotICAgICAgImJhc2VfdXJsIjogYmFzZV91
cmwsCi0gICAgfQotICAgIFdyaXRlRmlsZShkc3QsIHRlc3RfdGVtcGxhdGUgJSBzdWJzKQotICAg
IGlmIG9wdGlvbnMuZ2VuZXJhdGVfZXhwZWN0YXRpb25zOgotICAgICAgZXhwZWN0YXRpb25fZmls
ZW5hbWUgPSBvcy5wYXRoLnNwbGl0ZXh0KGRzdClbMF0gKyAiLWV4cGVjdGVkLnR4dCIKLSAgICAg
IFdyaXRlRmlsZShleHBlY3RhdGlvbl9maWxlbmFtZSwgZXhwZWN0YXRpb25fdGVtcGxhdGUgJSBz
dWJzKQotCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgc3lzLmV4aXQobWFpbihz
eXMuYXJndlsxOl0pKQotCi0KLQotCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbC1leHBlY3RhdGlvbi10ZW1wbGF0ZS50eHQgYi9MYXlvdXRUZXN0cy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2wtZXhwZWN0YXRpb24tdGVtcGxhdGUudHh0CmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBlNmZiNzNjZDRmNjliN2Q2ZDJiN2QxMGU0ZjQ2YTVlZjEzMDM4MWJi
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbC1leHBlY3RhdGlvbi10ZW1wbGF0ZS50eHQKKysrIC9k
ZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLVRoaXMgdGVzdCBydW5zIHRoZSBXZWJHTCBUZXN0IGxp
c3RlZCBiZWxvdyBpbiBhbiBpZnJhbWUgYW5kIHJlcG9ydHMgUEFTUyBvciBGQUlMLgotCi1UZXN0
OiAlKHVybClzCi1bIFBBU1MgXSBBbGwgdGVzdHMgcGFzc2VkCi0KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbC13cmFwcGVyLXRlbXBsYXRlLmh0bWwgYi9MYXlv
dXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2wtd3JhcHBlci10ZW1wbGF0ZS5odG1sCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMWM4Mzc5YmQxOGU4NzdjZTZmMjNhNjlkOTA2ODky
YzYyYjE2N2MxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbC13cmFwcGVyLXRlbXBsYXRlLmh0bWwK
KysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi08IS0tIFRoaXMgZmlsZSBpcyBhdXRvLWdl
bmVyYXRlZCBieSBnZW5lcmF0ZS13ZWJnbC10ZXN0cy5weS4gRE8gTk9UIEVESVQgLS0+Ci08IURP
Q1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08dGl0
bGU+V2ViR0wgQ29uZm9ybWFuY2UgVGVzdCBXcmFwcGVyIGZvciAlKHVybF9uYW1lKXM8L3RpdGxl
PgotPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iJShiYXNlX3VybClzLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2
YXNjcmlwdCIgc3JjPSIlKGJhc2VfdXJsKXMvcmVzb3VyY2VzL3dlYmtpdC13ZWJnbC10ZXN0LWhh
cm5lc3MuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08cD5UaGlzIHRlc3QgcnVucyB0
aGUgV2ViR0wgVGVzdCBsaXN0ZWQgYmVsb3cgaW4gYW4gaWZyYW1lIGFuZCByZXBvcnRzIFBBU1Mg
b3IgRkFJTC48L3A+Ci1UZXN0OiA8YSBocmVmPSIlKHVybClzIj4lKHVybClzPC9hPgotPGRpdiBp
ZD0iaWZyYW1lIj4KLTxpZnJhbWUgc3JjPSIlKHVybClzIiB3aWR0aD0iODAwIiBoZWlnaHQ9IjYw
MCI+PC9pZnJhbWU+Ci08L2Rpdj4KLTxkaXYgaWQ9InJlc3VsdCI+PC9kaXY+Ci08L2JvZHk+Ci08
L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>423021</attachid>
            <date>2021-03-12 00:43:39 -0800</date>
            <delta_ts>2021-03-16 12:21:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223112-20210312104337.patch</filename>
            <type>text/plain</type>
            <size>44998</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0Mjg3CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMWZjNzFjNDc5ZDMzMDc1NTVkNDA5Y2E2Y2VkNzMzMGVi
MDA5MjhlOC4uNTkxYWY4ZThiNDMwY2RjZjUwMDJkM2Y0NzlmMTVkNDM0YjkxOWI3MyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUy
IEBACisyMDIxLTAzLTEyICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisK
KyAgICAgICAgTWFrZSBXZWJHTCBjb25mb3JtYW5jZSB0ZXN0IHVwZGF0ZSBzY3JpcHQgbW9yZSB1
c2FibGUgYW5kIGNvbnNpc3RlbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyMzExMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE1vdmVzIHRoZSBzY3JpcHQgTGF5b3V0VGVzdHMvd2ViZ2wvZ2VuZXJhdGUt
d2ViZ2wtdGVzdHMgb3ZlcgorICAgICAgICB1bnVzZWQgYW5kIHN0YWxlIFRvb2xzL1NjcmlwdHMv
dXBkYXRlLXdlYmdsLWNvbmZvcm1hbmNlLXRlc3RzCisKKyAgICAgICAgRml4ZXMgdGhlIHNjcmlw
dCB0bzoKKyAgICAgICAgICAtIHRvIHN1cHBvcnQgZ2VuZXJhdGlvbiBvZiB0aGUgdGVzdCBkcml2
ZXIgLmh0bWwgZmlsZXMgd2l0aCB3ZWJnbFZlcnNpb249MgorICAgICAgICAgIC0gdG8gY29weSB0
aGUgImJldGEiIDEuMC4zLzIuMC4wIHRlc3RzIGZvciB0aGUgZmVhdHVyZXMgdGhhdCBhcmUgaW1w
bGVtZW50ZWQKKyAgICAgICAgICAgIGluIFdlYktpdC4gVGhlc2UgYXJlIG5vdyBjb3BpZWQgdG8g
d2ViZ2wvc2RrIGRpciwgcHJldmlvdXNseSB0aGV5IHdlcmUKKyAgICAgICAgICAgIG1hbnVhbGx5
IGNvcGllZCB0byB3ZWJnbC8gZGlyLCBtYWtpbmcgaXQgaGFyZCB0byBtYWludGFpbiB0aGUgdGVz
dHMgc2luY2UgdGhleQorICAgICAgICAgICAgY291bGQgbm90IGJlIGNsZWFuZWQgdXAgYnkgcmVt
b3ZpbmcgdGhlIGRpciBhbmQgcmVnZW5lcmF0aW5nLgorICAgICAgICAgIC0gdG8gc3VwcG9ydCBj
b3B5aW5nIGFsbCB0aGUgdGVzdHMgYXQgdGhlIHNhbWUgdGltZS4gUHJldmlvdXNseSBlYWNoCisg
ICAgICAgICAgICBpbmRpdmlkdWFsIHN1aXRlcyAoMS4wLjMsIDIuMC4wIGFuZCB0aGUgYmV0YSB0
ZXN0cykgd291bGQgYmUgY29waWVkCisgICAgICAgICAgICBpbiBkaWZmZXJlbnQgaW52b2NhdGlv
bnMsIGxlYWRpbmcgdG8gZXJyb3JzIGFuZCBvbWlzc2lvbnMgdG8gcnVuIHdoZW4KKyAgICAgICAg
ICAgIHNvbWV0aGluZyBjaGFuZ2VzLCBzdWNoIGFzIHRoZSB0ZW1wbGF0ZXMuCisgICAgICAgICAg
LSBzdXBwb3J0cyBnZW5lcmF0aW9uIG9mIHRoZSBkaXJlY3RvcmllcyBmcm9tIHNjcmF0Y2gsIHNv
IHRoYXQgbm8gc3RhbGUgZmlsZXMKKyAgICAgICAgICAgIHN1Y2ggYXMgZXhwZWN0YXRpb25zLCBk
cml2ZXIgLmh0bWwgZmlsZXMgb3IgdGVzdCBzdWl0ZSBjb250ZW50IGlzIGxlZnQuCisgICAgICAg
ICAgLSBhdXRvbWF0aWNhbGx5IGZpbHRlciBmaWxlcyB0aGF0IGRvIG5vdCBuZWVkIHRvIGJlIGNv
cGllZCAoZGVxcC9jb21waWxlci5qYXIsIC4uLikKKyAgICAgICAgICAtIHRyeSB0byBhZG9wdCBh
IHN0eWxlIHNvbWV3aGF0IGNvbnNpc3RlbnQgd2l0aCBvdGhlciBXZWJLaXQgcHl0aG9uIHNjcmlw
dHMKKworICAgICAgICAqIFNjcmlwdHMvdXBkYXRlLXdlYmdsLWNvbmZvcm1hbmNlLXRlc3RzOgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9fYmVfbW92ZWQvX19pbml0X18ucHk6IFJlbW92
ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b19iZV9tb3ZlZC91cGRhdGVfd2ViZ2xf
Y29uZm9ybWFuY2VfdGVzdHMucHk6IFJlbW92ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS90b19iZV9tb3ZlZC91cGRhdGVfd2ViZ2xfY29uZm9ybWFuY2VfdGVzdHNfdW5pdHRlc3QucHk6
IFJlbW92ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS91cGRhdGVfd2ViZ2xfY29uZm9y
bWFuY2VfdGVzdHNfbGliL21haW4ucHk6IEFkZGVkLgorICAgICAgICAoX21ha2VfaWdub3JlX2Zu
bWF0Y2hfcnVsZV9tYXRjaGVyKToKKyAgICAgICAgKF9tYWtlX2lnbm9yZV9mbm1hdGNoX3J1bGVf
bWF0Y2hlci5tYXRjaF9ydWxlcyk6CisgICAgICAgIChfY29weV90cmVlKToKKyAgICAgICAgKF9X
ZWJHTFRlc3QpOgorICAgICAgICAoX3BhcnNlX3dlYmdsX3Rlc3RzKToKKyAgICAgICAgKF9maWx0
ZXJfd2ViZ2xfdGVzdF9wYXRoc19mb3Jfc3VpdGVfdmVyc2lvbik6CisgICAgICAgIChfZ2VuZXJh
dGVfd2Via2l0X3dlYmdsX3Rlc3RzKToKKyAgICAgICAgKF9maW5kX2V4cGVjdGF0aW9uc19mb3Jf
cmVtb3ZlZF90ZXN0cyk6CisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L3VwZGF0ZV93ZWJnbF9jb25mb3JtYW5jZV90ZXN0c19saWIvd2ViZ2wtZXhwZWN0YXRpb24t
dGVtcGxhdGUudHh0OiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsLWV4cGVjdGF0aW9uLXRlbXBsYXRlLnR4dC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L3VwZGF0ZV93ZWJnbF9jb25mb3JtYW5jZV90ZXN0c19saWIvd2ViZ2wtdGVzdC1kcml2ZXItdGVt
cGxhdGUuaHRtbDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bC13cmFwcGVyLXRlbXBsYXRlLmh0bWwuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS91cGRh
dGVfd2ViZ2xfY29uZm9ybWFuY2VfdGVzdHNfbGliL3dlYmtpdC13ZWJnbC10ZXN0LWhhcm5lc3Mt
dGVtcGxhdGUuanM6IEFkZGVkLgorICAgICAgICAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
LndpbmRvdy5jb25zb2xlLmxvZyk6CisgICAgICAgICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIud2luZG93LmNvbnNvbGUuZXJyb3IpOgorICAgICAgICAobGlzdCk6CisgICAgICAgIChsb2cp
OgorICAgICAgICAod2luZG93LndlYmdsVGVzdEhhcm5lc3MucmVwb3J0UmVzdWx0cyk6CisgICAg
ICAgICh3aW5kb3cud2ViZ2xUZXN0SGFybmVzcy5ub3RpZnlGaW5pc2hlZCk6CisKIDIwMjEtMDMt
MTEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBJbnRyb2R1Y2Ug
V29ya1F1ZXVlOjpkaXNwYXRjaFN5bmMoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy91cGRh
dGUtd2ViZ2wtY29uZm9ybWFuY2UtdGVzdHMgYi9Ub29scy9TY3JpcHRzL3VwZGF0ZS13ZWJnbC1j
b25mb3JtYW5jZS10ZXN0cwppbmRleCBiOTMwODM2NDVhZmFkNDNiM2Y4YzQyYzg2NzhjMDUyODBh
MWQ0NTExLi5jMTRlM2E5ZWVhMTBlZWE5MDljMjZjMjI5NmJhMTdhYzYyNTc2MWY2IDEwMDc1NQot
LS0gYS9Ub29scy9TY3JpcHRzL3VwZGF0ZS13ZWJnbC1jb25mb3JtYW5jZS10ZXN0cworKysgYi9U
b29scy9TY3JpcHRzL3VwZGF0ZS13ZWJnbC1jb25mb3JtYW5jZS10ZXN0cwpAQCAtMSw0ICsxLDQg
QEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwogIyBDb3B5
cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CkBAIC0yNywxMCArMjcsMjcgQEAKICMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAKLSIiIldyYXBwZXIgYXJvdW5kIHdlYmtpdHB5L2xheW91dF90ZXN0cy91cGRhdGUtd2ViZ2wt
Y29uZm9ybWFuY2UtdGVzdHMucHkiIiIKKyIiIkdlbmVyYXRlcyBXZWJLaXQgV2ViR0wgbGF5b3V0
IHRlc3RzIGZyb20gdGhlIEtocm9ub3MgV2ViR0wgY29uZm9ybWFuY2UgdGVzdHMiIiIKKworIyBU
byB1c2UgdGhpcywgZ2V0IGEgY29weSBvZiB0aGUgV2ViR0wgY29uZm9ybWFuY2UgdGVzdHMgdGhl
biBydW4gdGhpcyBzY3JpcHQKKyMgZWcuCisjCisjICAgY2Qgfi90ZW1wCisjICAgZ2l0IGNsb25l
IGdpdDovL2dpdGh1Yi5jb20vS2hyb25vc0dyb3VwL1dlYkdMLmdpdAorIyAgIG1rZGlyIGJhY2t1
cAorIyAgIG12IH4vV2ViS2l0L0xheW91dFRlc3RzL3dlYmdsL3sxLjAuMywyLjAuMCxzZGt9IGJh
Y2t1cC8KKyMgICB+L1dlYktpdC9Ub29scy9TY3JpcHRzL3VwZGF0ZS13ZWJnbC1jb25mb3JtYW5j
ZS10ZXN0cyB+L3RlbXAvV2ViR0wKKyMgICB+L1dlYktpdC9Ub29scy9TY3JpcHRzL3J1bi13ZWJr
aXQtdGVzdHMgLS1kZWJ1ZyAtLXdlYmdsIC0tb3JkZXI9cmFuZG9tIHdlYmdsCisjICAgfi9XZWJL
aXQvVG9vbHMvU2NyaXB0cy9ydW4td2Via2l0LXRlc3RzIC0tcmVsZWFzZSAtLXdlYmdsIC0tb3Jk
ZXI9cmFuZG9tIHdlYmdsCisjICAgfi9XZWJLaXQvVG9vbHMvU2NyaXB0cy9jaGVjay1mb3ItZHVw
bGljYXRlZC1wbGF0Zm9ybS10ZXN0LXJlc3VsdHMgLW4gMj4mMSB8IGdyZXAgd2ViZ2wKKyMgICBb
IFVwZGF0ZSBUZXN0RXhwZWN0YXRpb25zIF0KKyMgICBbIENoZWNrIGluIHRoZSByZXN1bHQgXQor
IworIyBOb3RlOiBUaGUgc2NyaXB0IGlzIGN1cnJlbnRseSBub3QgdGVzdGVkIHRvIGJlIHJ1biBv
biBXaW5kb3dzLgogCi1pbXBvcnQgd2Via2l0cHkudG9fYmVfbW92ZWQudXBkYXRlX3dlYmdsX2Nv
bmZvcm1hbmNlX3Rlc3RzCiBpbXBvcnQgc3lzCiAKK2Zyb20gd2Via2l0cHkudXBkYXRlX3dlYmds
X2NvbmZvcm1hbmNlX3Rlc3RzX2xpYi5tYWluIGltcG9ydCBtYWluCisKIGlmIF9fbmFtZV9fID09
ICdfX21haW5fXyc6Ci0gICAgc3lzLmV4aXQod2Via2l0cHkudG9fYmVfbW92ZWQudXBkYXRlX3dl
YmdsX2NvbmZvcm1hbmNlX3Rlc3RzLm1haW4oKSkKKyAgICBzeXMuZXhpdChtYWluKCkpCmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3RvX2JlX21vdmVkL19faW5pdF9fLnB5IGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b19iZV9tb3ZlZC9fX2luaXRfXy5weQpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggYzA1MjhiNzgzMzMwOTIyN2RjMGVjODlmODAwNDcxZGM3Njc0
ZDIyNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3RvX2JlX21vdmVkL19faW5pdF9fLnB5CisrKyAvZGV2L251bGwK
QEAgLTEsMTAgKzAsMCBAQAotIyBSZXF1aXJlZCBmb3IgUHl0aG9uIHRvIHNlYXJjaCB0aGlzIGRp
cmVjdG9yeSBmb3IgbW9kdWxlIGZpbGVzCi0jIFRoaXMgZGlyZWN0b3J5IGhvdXNlcyBQeXRob24g
bW9kdWxlcyB0aGF0IGRvIG5vdCB5ZXQgaGF2ZSBhIHByb3BlciBob21lLgotIwotIyBTb21lIG9m
IHRoZSBQeXRob24gbW9kdWxlcyBpbiB0aGlzIGRpcmVjdG9yeSBhcmVuJ3QgcmVhbGx5IHBhcnQg
b2Ygd2Via2l0cHkKLSMgaW4gdGhlIHNlbnNlIHRoYXQgdGhleSdyZSBub3QgY2xhc3NlcyB0aGF0
IGFyZSBtZWFudCB0byBiZSB1c2VkIGFzIHBhcnQgb2YKLSMgdGhlIHdlYmtpdHB5IGxpYnJhcnku
IEluc3RlYWQsIHRoZXkncmUgYSBidW5jaCBvZiBoZWxwZXIgY29kZSBmb3IgaW5kaXZpZHVhbAot
IyBzY3JpcHRzIGluIGluIFRvb2xzL1NjcmlwdHMuCi0jCi0jIFJlYWxseSwgYWxsIHRoaXMgY29k
ZSBzaG91bGQgZWl0aGVyIGJlIHJlZmFjdG9yZWQgb3IgbW92ZWQgc29tZXdoZXJlIGVsc2UsCi0j
IGhlbmNlIHRoZSBzb21ld2hhdCBsYW1lIG5hbWUgZm9yIHRoaXMgZGlyZWN0b3J5LgpkaWZmIC0t
Z2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b19iZV9tb3ZlZC91cGRhdGVfd2ViZ2xfY29u
Zm9ybWFuY2VfdGVzdHMucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3RvX2JlX21vdmVkL3Vw
ZGF0ZV93ZWJnbF9jb25mb3JtYW5jZV90ZXN0cy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNzg3YWNhZjI2MzViNzRjOTZjYTNiNmNjOWMwMzZmMDhjNWZmMDdjNC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L3RvX2JlX21vdmVkL3VwZGF0ZV93ZWJnbF9jb25mb3JtYW5jZV90ZXN0cy5weQorKysgL2Rl
di9udWxsCkBAIC0xLDE1NiArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFy
ZSBtZXQ6Ci0jIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSMgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0j
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
Ci0jIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAotIyBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0jIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotIyBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
Ci0jIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotaW1wb3J0IGdsb2IKLWlt
cG9ydCBsb2dnaW5nCi1pbXBvcnQgb3B0cGFyc2UKLWltcG9ydCBvcwotaW1wb3J0IHJlCi1pbXBv
cnQgc3lzCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVja291dCBpbXBvcnQgc2NtCi1mcm9tIHdl
YmtpdHB5LmNvbW1vbi5zeXN0ZW0uZmlsZXN5c3RlbSBpbXBvcnQgRmlsZVN5c3RlbQotZnJvbSB3
ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgRXhlY3V0aXZlCi0KLQotX2xv
ZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQotCi0KLWRlZiByZW1vdmVfZmlyc3RfbGlu
ZV9jb21tZW50KHRleHQpOgotICAgIHJldHVybiByZS5jb21waWxlKHInXjwhLS0uKj8tLT5ccyon
LCByZS5ET1RBTEwpLnN1YignJywgdGV4dCkKLQotCi1kZWYgdHJhbnNsYXRlX2luY2x1ZGVzKHRl
eHQpOgotICAgICMgTWFwcGluZyBvZiBzaW5nbGUgZmlsZW5hbWUgdG8gcmVsYXRpdmUgcGF0aCB1
bmRlciBXZWJLaXQgcm9vdC4KLSAgICAjIEFzc3VtcHRpb246IHRoZXNlIGZpbGVuYW1lcyBhcmUg
Z2xvYmFsbHkgdW5pcXVlLgotICAgIGluY2x1ZGVfbWFwcGluZyA9IHsKLSAgICAgICAgImpzLXRl
c3QtcHJlLmpzIjogIi4uLy4uLy4uL3Jlc291cmNlcyIsCi0gICAgICAgICJqcy10ZXN0LXBvc3Qu
anMiOiAiLi4vLi4vLi4vcmVzb3VyY2VzIiwKLSAgICAgICAgImRlc2t0b3AtZ2wtY29uc3RhbnRz
LmpzIjogInJlc291cmNlcyIsCi0gICAgfQotCi0gICAgZm9yIGZpbGVuYW1lLCBwYXRoIGluIGlu
Y2x1ZGVfbWFwcGluZy5pdGVtcygpOgotICAgICAgICBzZWFyY2ggPSByJyg/OlteIlwnPSBdKi8p
PycgKyByZS5lc2NhcGUoZmlsZW5hbWUpCi0gICAgICAgICMgV2UgdXNlICcvJyBpbnN0ZWFkIG9m
IG9zLnBhdGguam9pbiBpbiBvcmRlciB0byBwcm9kdWNlIGNvbnNpc3RlbnQKLSAgICAgICAgIyBv
dXRwdXQgY3Jvc3MtcGxhdGZvcm0uCi0gICAgICAgIHJlcGxhY2UgPSBwYXRoICsgJy8nICsgZmls
ZW5hbWUKLSAgICAgICAgdGV4dCA9IHJlLnN1YihzZWFyY2gsIHJlcGxhY2UsIHRleHQpCi0KLSAg
ICByZXR1cm4gdGV4dAotCi0KLWRlZiB0cmFuc2xhdGVfa2hyb25vc190ZXN0KHRleHQpOgotICAg
ICIiIgotICAgIFRoaXMgbWV0aG9kIHRyYW5zbGF0ZXMgdGhlIGNvbnRlbnRzIG9mIGEgS2hyb25v
cyB0ZXN0IHRvIGEgV2ViS2l0IHRlc3QuCi0gICAgIiIiCi0KLSAgICB0cmFuc2xhdGVGdW5jcyA9
IFsKLSAgICAgICAgcmVtb3ZlX2ZpcnN0X2xpbmVfY29tbWVudCwKLSAgICAgICAgdHJhbnNsYXRl
X2luY2x1ZGVzLAotICAgIF0KLQotICAgIGZvciBmIGluIHRyYW5zbGF0ZUZ1bmNzOgotICAgICAg
ICB0ZXh0ID0gZih0ZXh0KQotCi0gICAgcmV0dXJuIHRleHQKLQotCi1kZWYgdXBkYXRlX2ZpbGUo
aW5fZmlsZW5hbWUsIG91dF9kaXIpOgotICAgICMgY2hlY2sgaW5fZmlsZW5hbWUgZXhpc3RzCi0g
ICAgIyBjaGVjayBvdXRfZGlyIGV4aXN0cwotICAgIG91dF9maWxlbmFtZSA9IG9zLnBhdGguam9p
bihvdXRfZGlyLCBvcy5wYXRoLmJhc2VuYW1lKGluX2ZpbGVuYW1lKSkKLQotICAgIF9sb2cuZGVi
dWcoIlByb2Nlc3NpbmcgIiArIGluX2ZpbGVuYW1lKQotICAgIHdpdGggb3Blbihpbl9maWxlbmFt
ZSwgJ3InKSBhcyBpbl9maWxlOgotICAgICAgICB3aXRoIG9wZW4ob3V0X2ZpbGVuYW1lLCAndycp
IGFzIG91dF9maWxlOgotICAgICAgICAgICAgb3V0X2ZpbGUud3JpdGUodHJhbnNsYXRlX2tocm9u
b3NfdGVzdChpbl9maWxlLnJlYWQoKSkpCi0KLQotZGVmIHVwZGF0ZV9kaXJlY3RvcnkoaW5fZGly
LCBvdXRfZGlyKToKLSAgICBmb3IgZmlsZW5hbWUgaW4gZ2xvYi5nbG9iKG9zLnBhdGguam9pbihp
bl9kaXIsICcqLmh0bWwnKSk6Ci0gICAgICAgIHVwZGF0ZV9maWxlKG9zLnBhdGguam9pbihpbl9k
aXIsIGZpbGVuYW1lKSwgb3V0X2RpcikKLQotCi1kZWYgZGVmYXVsdF9vdXRfZGlyKCk6Ci0gICAg
ZGV0ZWN0b3IgPSBzY20uU0NNRGV0ZWN0b3IoRmlsZVN5c3RlbSgpLCBFeGVjdXRpdmUoKSkKLSAg
ICBjdXJyZW50X3NjbSA9IGRldGVjdG9yLmRldGVjdF9zY21fc3lzdGVtKG9zLnBhdGguZGlybmFt
ZShzeXMuYXJndlswXSkpCi0gICAgaWYgbm90IGN1cnJlbnRfc2NtOgotICAgICAgICByZXR1cm4g
b3MuZ2V0Y3dkKCkKLSAgICByb290X2RpciA9IGN1cnJlbnRfc2NtLmNoZWNrb3V0X3Jvb3QKLSAg
ICBpZiBub3Qgcm9vdF9kaXI6Ci0gICAgICAgIHJldHVybiBvcy5nZXRjd2QoKQotICAgIG91dF9k
aXIgPSBvcy5wYXRoLmpvaW4ocm9vdF9kaXIsICJMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJn
bCIpCi0gICAgaWYgb3MucGF0aC5pc2RpcihvdXRfZGlyKToKLSAgICAgICAgcmV0dXJuIG91dF9k
aXIKLSAgICByZXR1cm4gb3MuZ2V0Y3dkKCkKLQotCi1kZWYgY29uZmlndXJlX2xvZ2dpbmcob3B0
aW9ucyk6Ci0gICAgIiIiQ29uZmlndXJlcyB0aGUgbG9nZ2luZyBzeXN0ZW0uIiIiCi0gICAgbG9n
X2ZtdCA9ICclKGxldmVsbmFtZSlzOiAlKG1lc3NhZ2UpcycKLSAgICBsb2dfZGF0ZWZtdCA9ICcl
eSVtJWQgJUg6JU06JVMnCi0gICAgbG9nX2xldmVsID0gbG9nZ2luZy5JTkZPCi0gICAgaWYgb3B0
aW9ucy52ZXJib3NlOgotICAgICAgICBsb2dfZm10ID0gKCclKGFzY3RpbWUpcyAlKGZpbGVuYW1l
KXM6JShsaW5lbm8pLTRkICUobGV2ZWxuYW1lKXMgJwotICAgICAgICAgICAgICAgICAgICclKG1l
c3NhZ2UpcycpCi0gICAgICAgIGxvZ19sZXZlbCA9IGxvZ2dpbmcuREVCVUcKLSAgICBsb2dnaW5n
LmJhc2ljQ29uZmlnKGxldmVsPWxvZ19sZXZlbCwgZm9ybWF0PWxvZ19mbXQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICBkYXRlZm10PWxvZ19kYXRlZm10KQotCi0KLWRlZiBvcHRpb25fcGFyc2Vy
KCk6Ci0gICAgdXNhZ2UgPSAidXNhZ2U6ICVwcm9nIFtvcHRpb25zXSAoaW5wdXQgZmlsZSBvciBk
aXJlY3RvcnkpIgotICAgIHBhcnNlciA9IG9wdHBhcnNlLk9wdGlvblBhcnNlcih1c2FnZT11c2Fn
ZSkKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLXYnLCAnLS12ZXJib3NlJywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYWN0aW9uPSdzdG9yZV90cnVlJywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGVmYXVsdD1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aGVscD0naW5jbHVkZSBkZWJ1Zy1sZXZlbCBsb2dnaW5nJykKLSAgICBwYXJzZXIuYWRkX29wdGlv
bignLW8nLCAnLS1vdXRwdXQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249
J3N0b3JlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT0nc3RyaW5nJywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1kZWZhdWx0X291dF9kaXIoKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0YXZhcj0nRElSJywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaGVscD0nc3BlY2lmeSBhbiBvdXRwdXQgZGlyZWN0b3J5IHRvIHBsYWNl
IGZpbGVzICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW4gW2RlZmF1bHQ6
ICVkZWZhdWx0XScpCi0gICAgcmV0dXJuIHBhcnNlcgotCi0KLWRlZiBtYWluKCk6Ci0gICAgcGFy
c2VyID0gb3B0aW9uX3BhcnNlcigpCi0gICAgKG9wdGlvbnMsIGFyZ3MpID0gcGFyc2VyLnBhcnNl
X2FyZ3MoKQotICAgIGNvbmZpZ3VyZV9sb2dnaW5nKG9wdGlvbnMpCi0KLSAgICBpZiBsZW4oYXJn
cykgPT0gMDoKLSAgICAgICAgX2xvZy5lcnJvcigiTXVzdCBzcGVjaWZ5IGFuIGlucHV0IGRpcmVj
dG9yeSBvciBmaWxlbmFtZS4iKQotICAgICAgICBwYXJzZXIucHJpbnRfaGVscCgpCi0gICAgICAg
IHJldHVybiAxCi0KLSAgICBpbl9uYW1lID0gYXJnc1swXQotICAgIGlmIG9zLnBhdGguaXNmaWxl
KGluX25hbWUpOgotICAgICAgICB1cGRhdGVfZmlsZShpbl9uYW1lLCBvcHRpb25zLm91dHB1dCkK
LSAgICBlbGlmIG9zLnBhdGguaXNkaXIoaW5fbmFtZSk6Ci0gICAgICAgIHVwZGF0ZV9kaXJlY3Rv
cnkoaW5fbmFtZSwgb3B0aW9ucy5vdXRwdXQpCi0gICAgZWxzZToKLSAgICAgICAgX2xvZy5lcnJv
cigiJyVzJyBpcyBub3QgYSBkaXJlY3Rvcnkgb3IgYSBmaWxlLiIsIGluX25hbWUpCi0gICAgICAg
IHJldHVybiAyCi0KLSAgICByZXR1cm4gMApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS90b19iZV9tb3ZlZC91cGRhdGVfd2ViZ2xfY29uZm9ybWFuY2VfdGVzdHNfdW5pdHRlc3Qu
cHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3RvX2JlX21vdmVkL3VwZGF0ZV93ZWJnbF9jb25m
b3JtYW5jZV90ZXN0c191bml0dGVzdC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZWU5ZmI5NjliMzlkNDhkMjZkM2FiNzc3NzdiM2NlNDRhZjlhNWU0ZS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rv
X2JlX21vdmVkL3VwZGF0ZV93ZWJnbF9jb25mb3JtYW5jZV90ZXN0c191bml0dGVzdC5weQorKysg
L2Rldi9udWxsCkBAIC0xLDk2ICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
Ci0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMg
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQot
IyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0iIiJVbml0IHRl
c3RzIGZvciB1cGRhdGVfd2ViZ2xfY29uZm9ybWFuY2VfdGVzdHMuIiIiCi0KLWltcG9ydCB1bml0
dGVzdAotZnJvbSB3ZWJraXRweS50b19iZV9tb3ZlZCBpbXBvcnQgdXBkYXRlX3dlYmdsX2NvbmZv
cm1hbmNlX3Rlc3RzIGFzIHdlYmdsCi0KLQotZGVmIGNvbnN0cnVjdF9zY3JpcHQobmFtZSk6Ci0g
ICAgcmV0dXJuICI8c2NyaXB0IHNyYz1cIiIgKyBuYW1lICsgIlwiPjwvc2NyaXB0PlxuIgotCi0K
LWRlZiBjb25zdHJ1Y3Rfc3R5bGUobmFtZSk6Ci0gICAgcmV0dXJuICI8bGluayByZWw9XCJzdHls
ZXNoZWV0XCIgaHJlZj1cIiIgKyBuYW1lICsgIlwiPiIKLQotCi1jbGFzcyBUZXN0VHJhbnNsYXRp
b24odW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiBhc3NlcnRfdW5jaGFuZ2VkKHNlbGYsIHRl
eHQpOgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRleHQsIHdlYmdsLnRyYW5zbGF0ZV9raHJv
bm9zX3Rlc3QodGV4dCkpCi0KLSAgICBkZWYgYXNzZXJ0X3RyYW5zbGF0ZShzZWxmLCBpbnB1dCwg
b3V0cHV0KToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXRwdXQsIHdlYmdsLnRyYW5zbGF0
ZV9raHJvbm9zX3Rlc3QoaW5wdXQpKQotCi0gICAgZGVmIHRlc3Rfc2ltcGxlX3VuY2hhbmdlZChz
ZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRfdW5jaGFuZ2VkKCIiKQotICAgICAgICBzZWxmLmFz
c2VydF91bmNoYW5nZWQoIjxodG1sPjwvaHRtbD4iKQotCi0gICAgZGVmIHRlc3RfaGVhZGVyX3N0
cmlwKHNlbGYpOgotICAgICAgICBzaW5nbGVfbGluZV9oZWFkZXIgPSAiPCEtLSBzaW5nbGUgbGlu
ZSBoZWFkZXIuIC0tPiIKLSAgICAgICAgbXVsdGlfbGluZV9oZWFkZXIgPSAiIiI8IS0tIHRoaXMg
aXMgYSBtdWx0aS1saW5lCi0gICAgICAgICAgICAgICAgaGVhZGVyLiAgaXQgc2hvdWxkIGFsbCBi
ZSByZW1vdmVkIHRvby4KLSAgICAgICAgICAgICAgICAtLT4iIiIKLSAgICAgICAgdGV4dCA9ICI8
aHRtbD48L2h0bWw+IgotICAgICAgICBzZWxmLmFzc2VydF90cmFuc2xhdGUoc2luZ2xlX2xpbmVf
aGVhZGVyLCAiIikKLSAgICAgICAgc2VsZi5hc3NlcnRfdHJhbnNsYXRlKHNpbmdsZV9saW5lX2hl
YWRlciArIHRleHQsIHRleHQpCi0gICAgICAgIHNlbGYuYXNzZXJ0X3RyYW5zbGF0ZShtdWx0aV9s
aW5lX2hlYWRlciArIHRleHQsIHRleHQpCi0KLSAgICBkZWYgZG9udF9zdHJpcF9vdGhlcl9oZWFk
ZXJzKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydF91bmNoYW5nZWQoIjxodG1sPlxuPCEtLSBk
b24ndCByZW1vdmUgY29tbWVudHMgb24gb3RoZXIgbGluZXMuIC0tPlxuPC9odG1sPiIpCi0KLSAg
ICBkZWYgdGVzdF9pbmNsdWRlX3Jld3JpdGluZyhzZWxmKToKLSAgICAgICAgIyBNYXBwaW5ncyB0
byBOb25lIGFyZSB1bmNoYW5nZWQKLSAgICAgICAgc3R5bGVzID0gewotICAgICAgICAgICAgImZh
aWwuY3NzIjogTm9uZSwKLSAgICAgICAgICAgICJyZXNvdXJjZXMvc3R5bGVzaGVldC5jc3MiOiBO
b25lLAotICAgICAgICAgICAgIi4uL3Jlc291cmNlcy9zdHlsZS5jc3MiOiBOb25lLAotICAgICAg
ICB9Ci0gICAgICAgIHNjcmlwdHMgPSB7Ci0gICAgICAgICAgICAiLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIjogIi4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyIsCi0gICAgICAg
ICAgICAiLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI6ICIuLi8uLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIiwKLSAgICAgICAgICAgICIuLi9yZXNvdXJjZXMvZGVza3RvcC1nbC1j
b25zdGFudHMuanMiOiAicmVzb3VyY2VzL2Rlc2t0b3AtZ2wtY29uc3RhbnRzLmpzIiwKLQotICAg
ICAgICAgICAgInJlc291cmNlcy9zaGFkb3ctb2Zmc2V0LmpzIjogTm9uZSwKLSAgICAgICAgICAg
ICIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LWFzeW5jLmpzIjogTm9uZSwKLSAgICAgICAgfQot
Ci0gICAgICAgIGlucHV0X3RleHQgPSAiIgotICAgICAgICBvdXRwdXRfdGV4dCA9ICIiCi0gICAg
ICAgIGZvciBpbnB1dCwgb3V0cHV0IGluIHN0eWxlcy5pdGVtcygpOgotICAgICAgICAgICAgaW5w
dXRfdGV4dCArPSBjb25zdHJ1Y3Rfc3R5bGUoaW5wdXQpCi0gICAgICAgICAgICBvdXRwdXRfdGV4
dCArPSBjb25zdHJ1Y3Rfc3R5bGUob3V0cHV0IGlmIG91dHB1dCBlbHNlIGlucHV0KQotICAgICAg
ICBmb3IgaW5wdXQsIG91dHB1dCBpbiBzY3JpcHRzLml0ZW1zKCk6Ci0gICAgICAgICAgICBpbnB1
dF90ZXh0ICs9IGNvbnN0cnVjdF9zY3JpcHQoaW5wdXQpCi0gICAgICAgICAgICBvdXRwdXRfdGV4
dCArPSBjb25zdHJ1Y3Rfc2NyaXB0KG91dHB1dCBpZiBvdXRwdXQgZWxzZSBpbnB1dCkKLQotICAg
ICAgICBoZWFkID0gJzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VO
Ij5cbjxodG1sPlxuPGhlYWQ+XG4nCi0gICAgICAgIGZvb3QgPSAnPC9oZWFkPlxuPGJvZHk+XG48
L2JvZHk+XG48L2h0bWw+JwotICAgICAgICBpbnB1dF90ZXh0ID0gaGVhZCArIGlucHV0X3RleHQg
KyBmb290Ci0gICAgICAgIG91dHB1dF90ZXh0ID0gaGVhZCArIG91dHB1dF90ZXh0ICsgZm9vdAot
ICAgICAgICBzZWxmLmFzc2VydF90cmFuc2xhdGUoaW5wdXRfdGV4dCwgb3V0cHV0X3RleHQpCmRp
ZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3VwZGF0ZV93ZWJnbF9jb25mb3JtYW5j
ZV90ZXN0c19saWIvbWFpbi5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdXBkYXRlX3dlYmds
X2NvbmZvcm1hbmNlX3Rlc3RzX2xpYi9tYWluLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIxZjQ1NzRmNDNmM2Zl
YzdjYTk4MzJiMDllNTUwZWUyZmJhMjExMjcKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3VwZGF0ZV93ZWJnbF9jb25mb3JtYW5jZV90ZXN0c19saWIvbWFpbi5weQpA
QCAtMCwwICsxLDMwNyBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworIyBDb3B5cmlnaHQgKEMp
IDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisj
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisKKyIiIkdlbmVyYXRlcyBXZWJLaXQgV2ViR0wgbGF5b3V0IHRlc3RzIGZyb20gdGhlIEtocm9u
b3MgV2ViR0wgY29uZm9ybWFuY2UgdGVzdHMKKworIFRvIHVzZSB0aGlzLCBnZXQgYSBjb3B5IG9m
IHRoZSBXZWJHTCBjb25mb3JtYW5jZSB0ZXN0cyB0aGVuIHJ1biB0aGlzIHNjcmlwdAorIGVnLgor
ICAgY2Qgfi90ZW1wCisgICBnaXQgY2xvbmUgZ2l0Oi8vZ2l0aHViLmNvbS9LaHJvbm9zR3JvdXAv
V2ViR0wuZ2l0CisgICBta2RpciBiYWNrdXAKKyAgIG12IH4vV2ViS2l0L0xheW91dFRlc3RzL3dl
YmdsL3sxLjAuMywyLjAuMCxzZGt9IGJhY2t1cC8KKyAgIH4vV2ViS2l0L1Rvb2xzL1NjcmlwdHMv
Z2VuZXJhdGUtd2ViZ2wtdGVzdHMgfi90ZW1wL1dlYkdMCisgICB+L1dlYktpdC9Ub29scy9TY3Jp
cHRzL3J1bi13ZWJraXQtdGVzdHMgLS1kZWJ1ZyAtLXdlYmdsIC0tb3JkZXI9cmFuZG9tIHdlYmds
CisgICB+L1dlYktpdC9Ub29scy9TY3JpcHRzL3J1bi13ZWJraXQtdGVzdHMgLS1yZWxlYXNlIC0t
d2ViZ2wgLS1vcmRlcj1yYW5kb20gd2ViZ2wKKyAgIH4vV2ViS2l0L1Rvb2xzL1NjcmlwdHMvY2hl
Y2stZm9yLWR1cGxpY2F0ZWQtcGxhdGZvcm0tdGVzdC1yZXN1bHRzIC1uIDI+JjEgfCBncmVwIHdl
YmdsCisgICBbIFVwZGF0ZSBUZXN0RXhwZWN0YXRpb25zIF0KKyAgIFsgQ2hlY2sgaW4gdGhlIHJl
c3VsdCBdCisiIiIKKworIyBOb3RlOiBUaGUgc2NyaXB0IGlzIGN1cnJlbnRseSBub3QgdGVzdGVk
IHRvIGJlIHJ1biBvbiBXaW5kb3dzLgorIyBUbyBzdGFydCBpbXBsZW1lbnRpbmcgYSBuZXcgV2Vi
R0wgZmVhdHVyZSwgYWRkIHRoZSB0ZXN0IHRvIF9zZGtfcGF0dGVybnMgYW5kIHJ1bgorIyB0aGUg
c2NyaXB0IGFzIGFib3ZlLgorIworIyBUbyBhZGQgYSBuZXcgV2ViR0wgdGVzdCBzdWl0ZSwgZWRp
dCB0aGUgbWFpbigpLgorIworIyBweXRob24zIC1tIG15cHkgbWFpbi5weSAmJiBweXRob24zIC1t
IGJsYWNrIG1haW4ucHkgLS1saW5lLWxlbmd0aCAyMDAKKworaW1wb3J0IGFyZ3BhcnNlCitpbXBv
cnQgb3MKK2ltcG9ydCBzaHV0aWwKK2ltcG9ydCBzeXMKKworZnJvbSBkaXN0dXRpbHMudmVyc2lv
biBpbXBvcnQgU3RyaWN0VmVyc2lvbiBhcyBWZXJzaW9uCitmcm9tIGZubWF0Y2ggaW1wb3J0IGZu
bWF0Y2gKK2Zyb20gcGF0aGxpYiBpbXBvcnQgUGF0aAorZnJvbSB0eXBpbmcgaW1wb3J0IENhbGxh
YmxlLCBUdXBsZSwgSXRlcmFibGUsIFVuaW9uLCBOYW1lZFR1cGxlLCBPcHRpb25hbCwgR2VuZXJh
dG9yCisKK190b29sX2RpciA9IFBhdGgoX19maWxlX18pLnBhcmVudAorX2xheW91dF90ZXN0c19k
aXIgPSBQYXRoKF9fZmlsZV9fKS5wYXJlbnQucGFyZW50LnBhcmVudC5wYXJlbnQucGFyZW50IC8g
IkxheW91dFRlc3RzIgorCitfdXNlX3ZlcmJvc2Vfb3V0cHV0ID0gRmFsc2UKKworX0lnbm9yZWRG
aWxlbmFtZU1hdGNoZXIgPSBDYWxsYWJsZVtbUGF0aF0sIGJvb2xdCisKKworIyBDcmVhdGVzIGFu
IGlnbm9yZSBmaWxlIG5hbWUgcGF0dGVybiBtYXRjaGVyIGJhc2VkIG9uIGxpc3Qgb2YgbWF0Y2gg
cnVsZXMuCisjIFJ1bGUgaXRlcmF0aW9uIG9yZGVyIGlzIHRoZSBvcmRlciBvZiBsZWFzdCBzcGVj
aWZpYyB0byBtb3N0IHNwZWNpZmljIHJ1bGUuCisjIEVtcHR5IGxpc3QgbWVhbnMgZG8gbm90IGln
bm9yZS4KKyMgSWYgcnVsZSBpcyBzdHIgYW5kIGl0IG1hdGNoZXMsIGl0IG1lYW5zIGlnbm9yZSBp
ZiBubyBtb3JlIHNwZWNpZmljIHJ1bGUgbWF0Y2hlcy4KKyMgSWYgcnVsZSBpcyBhIHR1cGxlIGFu
ZCBpdHMgZmlyc3QgZWxlbWVudCBtYXRjaGVzLCBpdCBpdCBtZWFucyBkbyBub3QgaWdub3JlIGlm
IG5vIG1vcmUgc3BlY2lmaWMgcnVsZSBtYXRjaGVzLgorZGVmIF9tYWtlX2lnbm9yZV9mbm1hdGNo
X3J1bGVfbWF0Y2hlcihydWxlczogSXRlcmFibGVbVW5pb25bc3RyLCBUdXBsZVtzdHJdXV0pIC0+
IF9JZ25vcmVkRmlsZW5hbWVNYXRjaGVyOgorICAgIGRlZiBtYXRjaF9ydWxlcyhuYW1lOiBQYXRo
KSAtPiBib29sOgorICAgICAgICBzaG91bGRfZmlsdGVyID0gTm9uZQorICAgICAgICBmb3IgcnVs
ZSBpbiBydWxlczoKKyAgICAgICAgICAgIHBhdHRlcm46IHN0ciA9IHJ1bGUgaWYgaXNpbnN0YW5j
ZShydWxlLCBzdHIpIGVsc2UgcnVsZVswXQorICAgICAgICAgICAgaWYgZm5tYXRjaChzdHIobmFt
ZSksIHBhdHRlcm4pOgorICAgICAgICAgICAgICAgIHNob3VsZF9maWx0ZXIgPSBpc2luc3RhbmNl
KHJ1bGUsIHN0cikKKyAgICAgICAgcmV0dXJuIHNob3VsZF9maWx0ZXIgaXMgVHJ1ZQorCisgICAg
cmV0dXJuIG1hdGNoX3J1bGVzCisKKworX2NvbmZvcm1hbmNlX3BhdHRlcm5zID0gX21ha2VfaWdu
b3JlX2ZubWF0Y2hfcnVsZV9tYXRjaGVyKAorICAgIFsKKyAgICAgICAgIi5naXQiLAorICAgICAg
ICAiKi5weWMiLAorICAgICAgICAidG1wKiIsCisgICAgICAgICIqL2RlcXAvYnVpbGQucHkiLAor
ICAgICAgICAiKi9kZXFwL2NvbXBpbGVyX2FkZGl0aW9uYWxfZXh0ZXJuLmpzIiwKKyAgICAgICAg
IiovZGVxcC9jb21waWxlci5qYXIiLAorICAgICAgICAiKi9kZXFwL2dlbkhUTUxmcm9tVGVzdC5w
eSIsCisgICAgICAgICIqL2RlcXAvcnVuLWNsb3N1cmUuc2giLAorICAgICAgICAiKi9kZXFwL3Rl
bXBfZXh0ZXJucyoiLAorICAgICAgICAiKi9kZXFwL3Rlc3Qtd2ViZ2wyLmpzIiwKKyAgICAgICAg
IiovZGVxcC90ZXN0LXdlYmdsMi5zaCIsCisgICAgXQorKQorCitfc2RrX3BhdHRlcm5zID0gX21h
a2VfaWdub3JlX2ZubWF0Y2hfcnVsZV9tYXRjaGVyKAorICAgIFsKKyAgICAgICAgIioiLCAgIyBJ
Z25vcmUgYWxsIGV4Y2VwdCB0aGUgb25lcyB3ZSB3YW50LiBQb3NpdGl2ZSBtYXRjaGVzIGFyZSBp
biB0dXBsZXMgKCkuCisgICAgICAgICgiKi9qcy90ZXN0cy9leHQtZmxvYXQtYmxlbmQuanMiLCks
CisgICAgICAgICgiKi9qcy90ZXN0cy9jb21wcmVzc2VkLXRleHR1cmUtdXRpbHMuanMiLCksCisg
ICAgICAgICgiKi9qcy9qcy10ZXN0LXByZS5qcyIsKSwKKyAgICAgICAgKCIqL2pzL3dlYmdsLXRl
c3QtdXRpbHMuanMiLCksCisgICAgICAgICgiKi9qcy9qcy10ZXN0LXBvc3QuanMiLCksCisgICAg
ICAgICgiKi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLCksCisgICAgICAgICgiKi9jb25m
b3JtYW5jZS9leHRlbnNpb25zL2V4dC1mbG9hdC1ibGVuZC5odG1sIiwpLAorICAgICAgICAoIiov
Y29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9leHQtdGV4dHVyZS1jb21wcmVzc2lvbi1yZ3RjLmh0bWwi
LCksCisgICAgICAgICgiKi9jb25mb3JtYW5jZS9leHRlbnNpb25zL2toci1wYXJhbGxlbC1zaGFk
ZXItY29tcGlsZS5odG1sIiwpLAorICAgICAgICAoIiovY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9v
ZXMtZmJvLXJlbmRlci1taXBtYXAuaHRtbCIsKSwKKyAgICAgICAgKCIqL2NvbmZvcm1hbmNlL2V4
dGVuc2lvbnMvczN0Yy1hbmQtcmd0Yy5odG1sIiwpLAorICAgICAgICAoIiovY29uZm9ybWFuY2Uv
ZXh0ZW5zaW9ucy93ZWJnbC1tdWx0aS1kcmF3Lmh0bWwiLCksCisgICAgICAgICgiKi9jb25mb3Jt
YW5jZTIvdW5pZm9ybXMvZ2wtdW5pZm9ybS1hcnJheXMtc3ViLXNvdXJjZS5odG1sIiwpLAorICAg
IF0KKykKKworCitkZWYgX2NvcHlfdHJlZShzcmM6IFBhdGgsIGRzdDogUGF0aCwgaWdub3JlOiBP
cHRpb25hbFtfSWdub3JlZEZpbGVuYW1lTWF0Y2hlcl0gPSBOb25lKToKKyAgICAiIiJSZWN1cnNp
dmVseSBjb3B5IGEgZGlyZWN0b3J5IHRyZWUiIiIKKyAgICBuYW1lcyA9IG9zLmxpc3RkaXIoc3Jj
KQorICAgIGZvciBuYW1lIGluIG5hbWVzOgorICAgICAgICBzcmNfbmFtZSA9IHNyYyAvIG5hbWUK
KyAgICAgICAgZHN0X25hbWUgPSBkc3QgLyBuYW1lCisKKyAgICAgICAgaWYgc3JjX25hbWUuaXNf
ZGlyKCk6CisgICAgICAgICAgICBfY29weV90cmVlKHNyY19uYW1lLCBkc3RfbmFtZSwgaWdub3Jl
KQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaWYgaWdub3JlIGlzIG5vdCBOb25lIGFuZCBp
Z25vcmUoc3JjX25hbWUpOgorICAgICAgICAgICAgICAgIGlmIF91c2VfdmVyYm9zZV9vdXRwdXQ6
CisgICAgICAgICAgICAgICAgICAgIHByaW50KCJJZ25vcmluZzogJXMiICUgKHNyY19uYW1lKSkK
KyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgaWYgX3VzZV92ZXJib3NlX291
dHB1dDoKKyAgICAgICAgICAgICAgICBwcmludCgiQ29weWluZzogJXMgLT4gJXMiICUgKHNyY19u
YW1lLCBkc3RfbmFtZSkpCisgICAgICAgICAgICBkc3QubWtkaXIocGFyZW50cz1UcnVlLCBleGlz
dF9vaz1UcnVlKQorICAgICAgICAgICAgc2h1dGlsLmNvcHlmaWxlKHNyY19uYW1lLCBkc3RfbmFt
ZSkKKworCitjbGFzcyBfV2ViR0xUZXN0KE5hbWVkVHVwbGUpOgorICAgIHBhdGg6IFBhdGgKKyAg
ICBtaW5fdmVyc2lvbjogVmVyc2lvbgorICAgIG1heF92ZXJzaW9uOiBWZXJzaW9uCisKKworZGVm
IF9wYXJzZV93ZWJnbF90ZXN0cyh0ZXN0X2xpc3Rfcm9vdDogUGF0aCwgdGVzdF9saXN0OiBQYXRo
LCBtaW5fdmVyc2lvbjogVmVyc2lvbiwgbWF4X3ZlcnNpb246IFZlcnNpb24pIC0+IEdlbmVyYXRv
cltfV2ViR0xUZXN0LCBOb25lLCBOb25lXToKKyAgICBwcmVmaXggPSB0ZXN0X2xpc3QucGFyZW50
CisgICAgd2l0aCB0ZXN0X2xpc3Qub3BlbigiciIpIGFzIGY6CisgICAgICAgIGxpbmVzID0gZi5y
ZWFkbGluZXMoKQorICAgIGZvciBsaW5lX251bWJlciwgbGluZSBpbiBlbnVtZXJhdGUobGluZXMp
OgorICAgICAgICBsaW5lID0gbGluZS5zdHJpcCgpCisgICAgICAgIGlmIGxlbihsaW5lKSA8PSAw
IG9yIGxpbmUuc3RhcnRzd2l0aCgiIyIpIG9yIGxpbmUuc3RhcnRzd2l0aCgiOyIpIG9yIGxpbmUu
c3RhcnRzd2l0aCgiLy8iKToKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIHRlc3RfbWlu
X3ZlcnNpb24gPSBtaW5fdmVyc2lvbgorICAgICAgICB0ZXN0X21heF92ZXJzaW9uID0gbWF4X3Zl
cnNpb24KKyAgICAgICAgdGVzdF9uYW1lID0gIiIKKyAgICAgICAgYXJncyA9IGl0ZXIobGluZS5z
cGxpdCgpKQorICAgICAgICBmb3IgYXJnIGluIGFyZ3M6CisgICAgICAgICAgICBpZiBhcmcuc3Rh
cnRzd2l0aCgiLSIpOgorICAgICAgICAgICAgICAgIGlmIGFyZyA9PSAiLS1zbG93IjoKKyAgICAg
ICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgICAgIGVsaWYgYXJnID09ICItLW1pbi12
ZXJzaW9uIjoKKyAgICAgICAgICAgICAgICAgICAgdGVzdF9taW5fdmVyc2lvbiA9IFZlcnNpb24o
bmV4dChhcmdzKSkKKyAgICAgICAgICAgICAgICBlbGlmIGFyZyA9PSAiLS1tYXgtdmVyc2lvbiI6
CisgICAgICAgICAgICAgICAgICAgIHRlc3RfbWF4X3ZlcnNpb24gPSBWZXJzaW9uKG5leHQoYXJn
cykpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgRXhj
ZXB0aW9uKCIlczolZCB1bmtub3duIG9wdGlvbiAnJXMnIiAlICh0ZXN0X2xpc3QsIGxpbmVfbnVt
YmVyLCBhcmcpKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB0ZXN0X25hbWUg
Kz0gYXJnCisKKyAgICAgICAgaWYgdGVzdF9uYW1lLmVuZHN3aXRoKCIudHh0Iik6CisgICAgICAg
ICAgICBmb3IgciBpbiBfcGFyc2Vfd2ViZ2xfdGVzdHModGVzdF9saXN0X3Jvb3QsIHByZWZpeCAv
IHRlc3RfbmFtZSwgdGVzdF9taW5fdmVyc2lvbiwgdGVzdF9tYXhfdmVyc2lvbik6CisgICAgICAg
ICAgICAgICAgeWllbGQgcgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgeWllbGQgX1dlYkdM
VGVzdCgKKyAgICAgICAgICAgICAgICAocHJlZml4IC8gdGVzdF9uYW1lKS5yZWxhdGl2ZV90byh0
ZXN0X2xpc3Rfcm9vdCksCisgICAgICAgICAgICAgICAgbWluX3ZlcnNpb24sCisgICAgICAgICAg
ICAgICAgbWF4X3ZlcnNpb24sCisgICAgICAgICAgICApCisKKworZGVmIF9maWx0ZXJfd2ViZ2xf
dGVzdF9wYXRoc19mb3Jfc3VpdGVfdmVyc2lvbih0ZXN0czogSXRlcmFibGVbX1dlYkdMVGVzdF0s
IHN1aXRlX3ZlcnNpb246IFZlcnNpb24pIC0+IEdlbmVyYXRvcltQYXRoLCBOb25lLCBOb25lXToK
KyAgICBmb3IgdGVzdCBpbiB0ZXN0czoKKyAgICAgICAgaWYgdGVzdC5taW5fdmVyc2lvbiA8PSBz
dWl0ZV92ZXJzaW9uIGFuZCB0ZXN0Lm1heF92ZXJzaW9uID49IHN1aXRlX3ZlcnNpb246CisgICAg
ICAgICAgICBpZiBfdXNlX3ZlcmJvc2Vfb3V0cHV0OgorICAgICAgICAgICAgICAgIHByaW50KGYi
VXNpbmcgdGVzdDoge3Rlc3QucGF0aH0ge3Rlc3QubWluX3ZlcnNpb259IDw9IHtzdWl0ZV92ZXJz
aW9ufSA8PSB7dGVzdC5tYXhfdmVyc2lvbn0iKQorICAgICAgICAgICAgeWllbGQgdGVzdC5wYXRo
CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBpZiBfdXNlX3ZlcmJvc2Vfb3V0cHV0OgorICAg
ICAgICAgICAgICAgIHByaW50KGYiSWdub3JpbmcgdGVzdDoge3Rlc3QucGF0aH0ge3Rlc3QubWlu
X3ZlcnNpb259IDw9IHtzdWl0ZV92ZXJzaW9ufSA8PSB7dGVzdC5tYXhfdmVyc2lvbn0iKQorCisK
K2RlZiBfZ2VuZXJhdGVfd2Via2l0X3dlYmdsX3Rlc3RzKAorICAgIHNvdXJjZV90ZXN0c19kaXI6
IFBhdGgsCisgICAgc291cmNlX3BhdHRlcm5zOiBfSWdub3JlZEZpbGVuYW1lTWF0Y2hlciwKKyAg
ICBzdWl0ZV92ZXJzaW9uOiBWZXJzaW9uLAorICAgIHVzZV93ZWJnbDJfY29udGV4dDogYm9vbCwK
KyAgICB0YXJnZXRfdGVzdHNfZGlyOiBQYXRoLAorKToKKyAgICB0YXJnZXRfdGVzdF9maWxlc19k
aXIgPSB0YXJnZXRfdGVzdHNfZGlyIC8gInJlc291cmNlcyIgLyAid2ViZ2xfdGVzdF9maWxlcyIK
KyAgICBfY29weV90cmVlKHNvdXJjZV90ZXN0c19kaXIsIHRhcmdldF90ZXN0X2ZpbGVzX2Rpciwg
c291cmNlX3BhdHRlcm5zKQorCisgICAgc291cmNlX2pzX3Rlc3RfaGFybmVzcyA9IF90b29sX2Rp
ciAvICJ3ZWJraXQtd2ViZ2wtdGVzdC1oYXJuZXNzLXRlbXBsYXRlLmpzIgorICAgIHRhcmdldF9q
c190ZXN0X2hhcm5lc3MgPSB0YXJnZXRfdGVzdHNfZGlyIC8gInJlc291cmNlcyIgLyAid2Via2l0
LXdlYmdsLXRlc3QtaGFybmVzcy5qcyIKKyAgICB0YXJnZXRfanNfdGVzdF9oYXJuZXNzLnBhcmVu
dC5ta2RpcihwYXJlbnRzPVRydWUsIGV4aXN0X29rPVRydWUpCisgICAgc2h1dGlsLmNvcHlmaWxl
KHNvdXJjZV9qc190ZXN0X2hhcm5lc3MsIHRhcmdldF9qc190ZXN0X2hhcm5lc3MpCisKKyAgICB0
ZXN0X3RlbXBsYXRlID0gKF90b29sX2RpciAvICJ3ZWJnbC10ZXN0LWRyaXZlci10ZW1wbGF0ZS5o
dG1sIikucmVhZF90ZXh0KCkKKyAgICBleHBlY3RhdGlvbl90ZW1wbGF0ZSA9IChfdG9vbF9kaXIg
LyAid2ViZ2wtZXhwZWN0YXRpb24tdGVtcGxhdGUudHh0IikucmVhZF90ZXh0KCkKKworICAgIHRl
c3RzID0gX3BhcnNlX3dlYmdsX3Rlc3RzKHNvdXJjZV90ZXN0c19kaXIsIChzb3VyY2VfdGVzdHNf
ZGlyIC8gIjAwX3Rlc3RfbGlzdC50eHQiKSwgc3VpdGVfdmVyc2lvbiwgc3VpdGVfdmVyc2lvbikK
KworICAgIGZvciB0ZXN0X3BhdGggaW4gX2ZpbHRlcl93ZWJnbF90ZXN0X3BhdGhzX2Zvcl9zdWl0
ZV92ZXJzaW9uKHRlc3RzLCBzdWl0ZV92ZXJzaW9uKToKKyAgICAgICAgdGFyZ2V0X3Rlc3QgPSB0
YXJnZXRfdGVzdHNfZGlyIC8gdGVzdF9wYXRoCisgICAgICAgIHRhcmdldF90ZXN0X2ltcGwgPSB0
YXJnZXRfdGVzdF9maWxlc19kaXIgLyB0ZXN0X3BhdGgKKyAgICAgICAgaWYgbm90IHRhcmdldF90
ZXN0X2ltcGwuZXhpc3RzKCk6CisgICAgICAgICAgICBpZiBfdXNlX3ZlcmJvc2Vfb3V0cHV0Ogor
ICAgICAgICAgICAgICAgIHByaW50KGYiSWdub3JpbmcgdGVzdDoge3Rlc3RfcGF0aH0sIGltcGxl
bWVudGF0aW9uIGRvZXMgbm90IGV4aXN0IGF0IHt0YXJnZXRfdGVzdF9pbXBsfSIpCisgICAgICAg
ICAgICBjb250aW51ZQorICAgICAgICB0ZXN0X3RvX2ltcGwgPSBvcy5wYXRoLnJlbHBhdGgodGFy
Z2V0X3Rlc3RfaW1wbCwgdGFyZ2V0X3Rlc3QucGFyZW50KQorICAgICAgICB0ZXN0X3VybCA9IGYi
e3Rlc3RfdG9faW1wbH0/d2ViZ2xWZXJzaW9uPTIiIGlmIHVzZV93ZWJnbDJfY29udGV4dCBlbHNl
IHRlc3RfdG9faW1wbAorICAgICAgICBzdWJzID0geyJ1cmwiOiB0ZXN0X3VybCwgInVybF9uYW1l
IjogdGVzdF9wYXRoLm5hbWUsICJiYXNlX3VybCI6IG9zLnBhdGgucmVscGF0aCh0YXJnZXRfdGVz
dHNfZGlyLCB0YXJnZXRfdGVzdC5wYXJlbnQpfQorICAgICAgICB0YXJnZXRfdGVzdC5wYXJlbnQu
bWtkaXIocGFyZW50cz1UcnVlLCBleGlzdF9vaz1UcnVlKQorICAgICAgICB0YXJnZXRfdGVzdC53
cml0ZV90ZXh0KHRlc3RfdGVtcGxhdGUgJSBzdWJzKQorICAgICAgICBleHBlY3RhdGlvbiA9IHRh
cmdldF90ZXN0LnBhcmVudCAvIGYie3RhcmdldF90ZXN0LnN0ZW19LWV4cGVjdGVkLnR4dCIKKyAg
ICAgICAgZXhwZWN0YXRpb24ud3JpdGVfdGV4dChleHBlY3RhdGlvbl90ZW1wbGF0ZSAlIHN1YnMp
CisKKworZGVmIF9maW5kX2V4cGVjdGF0aW9uc19mb3JfcmVtb3ZlZF90ZXN0cyhsYXlvdXRfdGVz
dHNfZGlyOiBQYXRoKToKKyAgICB0ZXN0X3ByZWZpeGVzID0gc2V0KCkKKyAgICBleHBlY3RhdGlv
bnMgPSBzZXQoKQorICAgIGZvciByb290LCBfLCBmaWxlcyBpbiBvcy53YWxrKGxheW91dF90ZXN0
c19kaXIpOgorICAgICAgICBmb3IgZmlsZV9uYW1lIGluIGZpbGVzOgorICAgICAgICAgICAgcmVs
YXRpdmVfcGF0aCA9IChQYXRoKHJvb3QpIC8gZmlsZV9uYW1lKS5yZWxhdGl2ZV90byhsYXlvdXRf
dGVzdHNfZGlyKQorICAgICAgICAgICAgaWYgcmVsYXRpdmVfcGF0aC5zdGVtLmVuZHN3aXRoKCIt
ZXhwZWN0ZWQiKToKKyAgICAgICAgICAgICAgICBleHBlY3RhdGlvbnMuYWRkKHJlbGF0aXZlX3Bh
dGgpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHRlc3RfcHJlZml4ZXMuYWRk
KHJlbGF0aXZlX3BhdGgucGFyZW50IC8gcmVsYXRpdmVfcGF0aC5zdGVtKQorICAgIG9sZF9leHBl
Y3RhdGlvbnMgPSBzZXQoW10pCisgICAgZm9yIGV4cGVjdGF0aW9uIGluIGV4cGVjdGF0aW9uczoK
KyAgICAgICAgdGVzdF9wYXRoID0gZXhwZWN0YXRpb24ucGFyZW50CisgICAgICAgIHdoaWxlIGxl
bih0ZXN0X3BhdGgucGFydHMpID49IDE6CisgICAgICAgICAgICB0ZXN0X3ByZWZpeCA9IHRlc3Rf
cGF0aCAvIGV4cGVjdGF0aW9uLnN0ZW1bOiAtbGVuKCItZXhwZWN0ZWQiKV0KKyAgICAgICAgICAg
IGlmIHRlc3RfcHJlZml4IGluIHRlc3RfcHJlZml4ZXM6CisgICAgICAgICAgICAgICAgYnJlYWsK
KyAgICAgICAgICAgIHRlc3RfcGF0aCA9IFBhdGgoIi8iLmpvaW4odGVzdF9wYXRoLnBhcnRzWzE6
XSkpCisgICAgICAgIGlmIGxlbih0ZXN0X3BhdGgucGFydHMpIDwgMToKKyAgICAgICAgICAgIG9s
ZF9leHBlY3RhdGlvbnMuYWRkKGV4cGVjdGF0aW9uKQorICAgIHJldHVybiBvbGRfZXhwZWN0YXRp
b25zCisKKworZGVmIG1haW4oKToKKyAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNl
cigpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLXYiLCAiLS12ZXJib3NlIiwgYWN0aW9uPSJz
dG9yZV90cnVlIiwgaGVscD0icHJpbnQgdmVyYm9zZSBvdXRwdXQuIikKKyAgICBwYXJzZXIuYWRk
X2FyZ3VtZW50KCJ3ZWJnbF9yZXBvc2l0b3J5IiwgaGVscD0icGF0aCB0byBXZWJHTCBjb25mb3Jt
YW5jZSB0ZXN0IHJlcG9zaXRvcnkgcm9vdC4iKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCisg
ICAgICAgICItbCIsCisgICAgICAgICItLWxheW91dC10ZXN0cy1kaXIiLAorICAgICAgICBoZWxw
PSJiYXNlIGRpcmVjdG9yeSBmb3Igc2VhcmNoaW5nIGZvciBwbGF0Zm9ybSBzcGVjaWZpYyB0ZXN0
cy4gRGVmYXVsdHMgdG8gTGF5b3V0VGVzdHMuIiwKKyAgICAgICAgZGVmYXVsdD1fbGF5b3V0X3Rl
c3RzX2RpciwKKyAgICApCisKKyAgICBvcHRpb25zID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQorICAg
IGdsb2JhbCBfdXNlX3ZlcmJvc2Vfb3V0cHV0CisgICAgX3VzZV92ZXJib3NlX291dHB1dCA9IG9w
dGlvbnMudmVyYm9zZSBvciBGYWxzZQorICAgIHNvdXJjZV9kaXIgPSBQYXRoKG9wdGlvbnMud2Vi
Z2xfcmVwb3NpdG9yeSkKKyAgICB0YXJnZXRfZGlyID0gUGF0aChvcHRpb25zLmxheW91dF90ZXN0
c19kaXIpIC8gIndlYmdsIgorCisgICAgX2dlbmVyYXRlX3dlYmtpdF93ZWJnbF90ZXN0cygKKyAg
ICAgICAgc291cmNlX3Rlc3RzX2Rpcj1zb3VyY2VfZGlyIC8gImNvbmZvcm1hbmNlLXN1aXRlcyIg
LyAiMS4wLjMiLAorICAgICAgICBzb3VyY2VfcGF0dGVybnM9X2NvbmZvcm1hbmNlX3BhdHRlcm5z
LAorICAgICAgICBzdWl0ZV92ZXJzaW9uPVZlcnNpb24oIjEuMC4zIiksCisgICAgICAgIHVzZV93
ZWJnbDJfY29udGV4dD1GYWxzZSwKKyAgICAgICAgdGFyZ2V0X3Rlc3RzX2Rpcj10YXJnZXRfZGly
IC8gIjEuMC4zIiwKKyAgICApCisgICAgX2dlbmVyYXRlX3dlYmtpdF93ZWJnbF90ZXN0cygKKyAg
ICAgICAgc291cmNlX3Rlc3RzX2Rpcj1zb3VyY2VfZGlyIC8gImNvbmZvcm1hbmNlLXN1aXRlcyIg
LyAiMi4wLjAiLAorICAgICAgICBzb3VyY2VfcGF0dGVybnM9X2NvbmZvcm1hbmNlX3BhdHRlcm5z
LAorICAgICAgICBzdWl0ZV92ZXJzaW9uPVZlcnNpb24oIjIuMC4xIiksCisgICAgICAgIHVzZV93
ZWJnbDJfY29udGV4dD1UcnVlLAorICAgICAgICB0YXJnZXRfdGVzdHNfZGlyPXRhcmdldF9kaXIg
LyAiMi4wLjAiLAorICAgICkKKyAgICBfZ2VuZXJhdGVfd2Via2l0X3dlYmdsX3Rlc3RzKAorICAg
ICAgICBzb3VyY2VfdGVzdHNfZGlyPXNvdXJjZV9kaXIgLyAic2RrIiAvICJ0ZXN0cyIsCisgICAg
ICAgIHNvdXJjZV9wYXR0ZXJucz1fc2RrX3BhdHRlcm5zLAorICAgICAgICBzdWl0ZV92ZXJzaW9u
PVZlcnNpb24oIjIuMC4xIiksCisgICAgICAgIHVzZV93ZWJnbDJfY29udGV4dD1UcnVlLAorICAg
ICAgICB0YXJnZXRfdGVzdHNfZGlyPXRhcmdldF9kaXIgLyAic2RrIiwKKyAgICApCisgICAgbGF5
b3V0X3Rlc3RzX2RpciA9IFBhdGgob3B0aW9ucy5sYXlvdXRfdGVzdHNfZGlyKQorCisgICAgb2xk
X2V4cGVjdGF0aW9ucyA9IF9maW5kX2V4cGVjdGF0aW9uc19mb3JfcmVtb3ZlZF90ZXN0cyhsYXlv
dXRfdGVzdHNfZGlyKQorICAgIG9sZF9leHBlY3RhdGlvbnMgPSBbZSBmb3IgZSBpbiBvbGRfZXhw
ZWN0YXRpb25zIGlmICJ3ZWJnbCIgaW4gc3RyKGUpXQorICAgIGlmIG9sZF9leHBlY3RhdGlvbnM6
CisgICAgICAgIHByaW50KAorICAgICAgICAgICAgIk9sZCBleHBlY3RhdGlvbnMgbWF5YmUgZm91
bmQuIE1heWJlIGRvOlxuICAgIGdpdCBybSAiCisgICAgICAgICAgICArICIgIi5qb2luKHNvcnRl
ZChbc3RyKChsYXlvdXRfdGVzdHNfZGlyIC8gZSkucmVsYXRpdmVfdG8obGF5b3V0X3Rlc3RzX2Rp
ci5wYXJlbnQpKSBmb3IgZSBpbiBvbGRfZXhwZWN0YXRpb25zXSkpCisgICAgICAgICkKKworCitp
ZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIHN5cy5leGl0KG1haW4oKSkKZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdXBkYXRlX3dlYmdsX2NvbmZvcm1hbmNlX3Rlc3Rz
X2xpYi93ZWJnbC1leHBlY3RhdGlvbi10ZW1wbGF0ZS50eHQgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L3VwZGF0ZV93ZWJnbF9jb25mb3JtYW5jZV90ZXN0c19saWIvd2ViZ2wtZXhwZWN0YXRpb24t
dGVtcGxhdGUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzN2U4YjM4OGUwYzA5MzM4MTg2YTRiMGRhMTg0ZDIy
MTM3NzBmMDkKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3VwZGF0
ZV93ZWJnbF9jb25mb3JtYW5jZV90ZXN0c19saWIvd2ViZ2wtZXhwZWN0YXRpb24tdGVtcGxhdGUu
dHh0CkBAIC0wLDAgKzEsNCBAQAorVGhpcyB0ZXN0IHJ1bnMgdGhlIFdlYkdMIFRlc3QgbGlzdGVk
IGJlbG93IGluIGFuIGlmcmFtZSBhbmQgcmVwb3J0cyBQQVNTIG9yIEZBSUwuCisKK1Rlc3Q6ICUo
dXJsKXMKK1sgUEFTUyBdIEFsbCB0ZXN0cyBwYXNzZWQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdXBkYXRlX3dlYmdsX2NvbmZvcm1hbmNlX3Rlc3RzX2xpYi93ZWJnbC10ZXN0
LWRyaXZlci10ZW1wbGF0ZS5odG1sIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS91cGRhdGVfd2Vi
Z2xfY29uZm9ybWFuY2VfdGVzdHNfbGliL3dlYmdsLXRlc3QtZHJpdmVyLXRlbXBsYXRlLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNTEzZjhjYTRjZTY5NmViNGYxNjkyOTM5YmMyOTE5ZDIyNzFkM2ExOAotLS0g
L2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdXBkYXRlX3dlYmdsX2NvbmZv
cm1hbmNlX3Rlc3RzX2xpYi93ZWJnbC10ZXN0LWRyaXZlci10ZW1wbGF0ZS5odG1sCkBAIC0wLDAg
KzEsMTggQEAKKzwhLS0gVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGJ5IFRvb2xzL1Njcmlw
dHMvdXBkYXRlLXdlYmdsLWNvbmZvcm1hbmNlLXRlc3RzLiBETyBOT1QgRURJVCAtLT4KKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRs
ZT5XZWJHTCBDb25mb3JtYW5jZSBUZXN0IFdyYXBwZXIgZm9yICUodXJsX25hbWUpczwvdGl0bGU+
Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIlKGJhc2VfdXJsKXMvLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZh
c2NyaXB0IiBzcmM9IiUoYmFzZV91cmwpcy9yZXNvdXJjZXMvd2Via2l0LXdlYmdsLXRlc3QtaGFy
bmVzcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgdGVzdCBydW5zIHRo
ZSBXZWJHTCBUZXN0IGxpc3RlZCBiZWxvdyBpbiBhbiBpZnJhbWUgYW5kIHJlcG9ydHMgUEFTUyBv
ciBGQUlMLjwvcD4KK1Rlc3Q6IDxhIGhyZWY9IiUodXJsKXMiPiUodXJsKXM8L2E+Cis8ZGl2IGlk
PSJpZnJhbWUiPgorPGlmcmFtZSBzcmM9IiUodXJsKXMiIHdpZHRoPSI4MDAiIGhlaWdodD0iNjAw
Ij48L2lmcmFtZT4KKzwvZGl2PgorPGRpdiBpZD0icmVzdWx0Ij48L2Rpdj4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdXBkYXRlX3dlYmdsX2Nv
bmZvcm1hbmNlX3Rlc3RzX2xpYi93ZWJraXQtd2ViZ2wtdGVzdC1oYXJuZXNzLXRlbXBsYXRlLmpz
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS91cGRhdGVfd2ViZ2xfY29uZm9ybWFuY2VfdGVzdHNf
bGliL3dlYmtpdC13ZWJnbC10ZXN0LWhhcm5lc3MtdGVtcGxhdGUuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzg2
MTViZTUwMGFiN2U5Njg5ZDIzZWVmZWVjMWNmYzZjNDA5NDAyZQotLS0gL2Rldi9udWxsCisrKyBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdXBkYXRlX3dlYmdsX2NvbmZvcm1hbmNlX3Rlc3RzX2xp
Yi93ZWJraXQtd2ViZ2wtdGVzdC1oYXJuZXNzLXRlbXBsYXRlLmpzCkBAIC0wLDAgKzEsNzcgQEAK
KyJ1c2Ugc3RyaWN0IjsKKyhmdW5jdGlvbigpIHsKKyAgdmFyIG51bUZhaWx1cmVzID0gMDsKKyAg
dmFyIHJlc3VsdHNMaXN0ID0gbnVsbDsKKyAgdmFyIHJlc3VsdE51bSA9IDE7CisKKyAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyICYmICF3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICB3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIgPSB3aW5kb3cudGVzdFJ1bm5lcjsKKyAgfQorCisg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9u
ZSgpOworCisgICAgLy8gVHVybiBvZmYgY29uc29sZSBtZXNzYWdlcyBiZWNhdXNlIGZvciB0aGUg
V2ViR0wgdGVzdHMgdGhleSBhcmUKKyAgICAvLyBHUFUgY2FwYWJpbGl0eSBkZXBlbmRlbnQuCisg
ICAgd2luZG93LmNvbnNvbGUubG9nID0gZnVuY3Rpb24oKSB7IH07CisgICAgd2luZG93LmNvbnNv
bGUuZXJyb3IgPSBmdW5jdGlvbigpIHsgfTsKKyAgfQorCisKKyAgaWYgKHdpbmRvdy5pbnRlcm5h
bHMpIHsKKyAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldFdlYkdMRXJyb3JzVG9Db25z
b2xlRW5hYmxlZChmYWxzZSk7CisgIH0KKworICB2YXIgbGlzdCA9IGZ1bmN0aW9uKG1zZywgY29s
b3IpIHsKKyAgICBpZiAoIXJlc3VsdHNMaXN0KSB7CisgICAgICByZXN1bHRzTGlzdCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoInVsIik7CisgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
cmVzdWx0IikuYXBwZW5kQ2hpbGQocmVzdWx0c0xpc3QpOworICAgIH0KKworICAgIHZhciBpdGVt
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGkiKTsKKyAgICBpdGVtLmFwcGVuZENoaWxkKGRv
Y3VtZW50LmNyZWF0ZVRleHROb2RlKG1zZykpOworICAgIGlmIChjb2xvcikgeworICAgICAgaXRl
bS5zdHlsZS5jb2xvciA9IGNvbG9yOworICAgIH0KKworICAgIHJlc3VsdHNMaXN0LmFwcGVuZENo
aWxkKGl0ZW0pOworICB9CisKKyAgdmFyIGxvZyA9IGZ1bmN0aW9uKG1zZywgY29sb3IpIHsKKyAg
ICB2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgZGl2LmFwcGVu
ZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1zZykpOworICAgIGlmIChjb2xvcikgewor
ICAgICAgZGl2LnN0eWxlLmNvbG9yID0gY29sb3I7CisgICAgfQorICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJyZXN1bHQiKS5hcHBlbmRDaGlsZChkaXYpOworICB9OworCisgIHdpbmRvdy53
ZWJnbFRlc3RIYXJuZXNzID0geworICAgIHJlcG9ydFJlc3VsdHM6IGZ1bmN0aW9uKHVybCwgc3Vj
Y2VzcywgbXNnKSB7CisgICAgICBpZiAoc3VjY2VzcykgeworICAgICAgICBsaXN0KGBbICR7cmVz
dWx0TnVtfTogUEFTUyBdICR7bXNnfWAsICJncmVlbiIpOworICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgbGlzdChgWyAke3Jlc3VsdE51bX06IEZBSUwgXSAke21zZ31gLCAicmVkIik7CisgICAgICAg
ICsrbnVtRmFpbHVyZXM7CisgICAgICB9CisKKyAgICAgICsrcmVzdWx0TnVtOworICAgIH0sCisK
KyAgICBub3RpZnlGaW5pc2hlZDogZnVuY3Rpb24odXJsKSB7CisgICAgICB2YXIgaWZyYW1lID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImlmcmFtZSIpOworICAgICAgaWYgKG51bUZhaWx1cmVz
ID4gMCkgeworICAgICAgICBsb2coYFsgRkFJTCBdICR7bnVtRmFpbHVyZXN9IGZhaWx1cmVzIHJl
cG9ydGVkYCwgInJlZCIpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcmVzdWx0c0xpc3QuaW5u
ZXJIVE1MID0gIiI7CisgICAgICAgIGlmcmFtZS5pbm5lckhUTUwgPSAiIjsKKyAgICAgICAgbG9n
KCJbIFBBU1MgXSBBbGwgdGVzdHMgcGFzc2VkIiwgImdyZWVuIik7CisgICAgICB9CisKKyAgICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgfQorICAgIH0sCisgIH0KK30oKSk7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5k
ZXggNDc2YjY3NmYwYmFkYTQyZjI5NGU0ODRjMDJlNmU4N2U4NDk0MWUyMi4uZDI0MmQ5YWZhNmJm
NDA4OGIzYjgxYzhjMzFjNDYzZDhkN2EwYmE0OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIx
LTAzLTEyICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAg
TWFrZSBXZWJHTCBjb25mb3JtYW5jZSB0ZXN0IHVwZGF0ZSBzY3JpcHQgbW9yZSB1c2FibGUgYW5k
IGNvbnNpc3RlbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyMzExMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIE1vdmUgdGhlIHNjcmlwdCBvdmVyIHRoZSBleGlzdGluZyBidXQgdW51c2VkIFRvb2xzL1Nj
cmlwdHMvdXBkYXRlLXdlYmdsLWNvbmZvcm1hbmNlLXRlc3RzLgorCisgICAgICAgICogd2ViZ2wv
Z2VuZXJhdGUtd2ViZ2wtdGVzdHM6IFJlbW92ZWQuCisKIDIwMjEtMDMtMTEgIFJvYiBCdWlzICA8
cmJ1aXNAaWdhbGlhLmNvbT4KIAogICAgICAgICBBcHBseSB0cmFuc2ZlcnJlZCBtaW4vbWF4IHNp
emVzIGZvciBpbnRyaW5zaWMgc2l6aW5nCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9n
ZW5lcmF0ZS13ZWJnbC10ZXN0cyBiL0xheW91dFRlc3RzL3dlYmdsL2dlbmVyYXRlLXdlYmdsLXRl
c3RzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA1YTk1ZjIwNjcyZGU1NmRjOWIwYWRl
NDBmN2M4ZDQzMTM5NTk4ODBmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdsL2dlbmVyYXRlLXdlYmdsLXRlc3RzCisrKyAvZGV2
L251bGwKQEAgLTEsMjcwICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbjMKLSMgQ29weXJp
Z2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
IyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotCi0iIiJnZW5lcmF0ZXMgd2ViZ2wgbGF5b3V0IHRlc3RzIGZyb20gdGhlIEtocm9u
b3MgV2ViR0wgQ29uZm9ybWFuY2UgVGVzdHMiIiIKLQotIyBUbyB1c2UgdGhpcywgZ2V0IGEgY29w
eSBvZiB0aGUgV2ViR0wgY29uZm9ybWFuY2UgdGVzdHMgdGhlbiBydW4gdGhpcyBzY3JpcHQKLSMg
ZWcuCi0jCi0jICAgY2Qgfi90ZW1wCi0jICAgZ2l0IGNsb25lIGdpdDovL2dpdGh1Yi5jb20vS2hy
b25vc0dyb3VwL1dlYkdMLmdpdAotIyAgIGNkIH4vV2ViS2l0L0xheW91dFRlc3RzL3dlYmdsCi0j
ICAgcHl0aG9uIGdlbmVyYXRlLXdlYmdsLXRlc3RzLnB5IC13IH4vdGVtcC9XZWJHTC9zZGsvdGVz
dHMgLWUKLSMKLSMgTm93IGNoZWNrIHJ1biB0aGUgTGF5b3V0VGVzdHMsIHVwZGF0ZSBUZXN0RXhw
ZWN0YXRpb25zIGFuZCBjaGVjayBpbiB0aGUKLSMgcmVzdWx0LgotCi1pbXBvcnQgY29weQotaW1w
b3J0IG9zCi1pbXBvcnQgb3MucGF0aAotaW1wb3J0IHN5cwotaW1wb3J0IHJlCi1pbXBvcnQganNv
bgotaW1wb3J0IHNodXRpbAotZnJvbSBvcHRwYXJzZSBpbXBvcnQgT3B0aW9uUGFyc2VyCi0KLWlm
IHN5cy52ZXJzaW9uIDwgJzIuNic6Ci0gIHByaW50ICdXcm9uZyBQeXRob24gVmVyc2lvbiAhISE6
IE5lZWQgPj0gMi42JwotICBzeXMuZXhpdCgxKQotCi0KLUdMT0JBTF9PUFRJT05TID0gewotICAj
IHZlcnNpb24gdXNlLiBUZXN0cyBhdCBvciBiZWxvdyB0aGlzIHdpbGwgYmUgaW5jbHVkZWQuCi0g
ICJ2ZXJzaW9uIjogIjIuMC4wIiwKLQotICAjIHZlcnNpb24gdXNlZCBmb3IgdW5sYWJsZWQgdGVz
dHMKLSAgImRlZmF1bHQtdmVyc2lvbiI6ICIyLjAiLAotCi0gICMgSWYgc2V0LCB0aGUgdmVyc2lv
biB3ZSByZXF1aXJlLiBUZXN0cyBiZWxvdyB0aGlzIHdpbGwgYmUgaWdub3JlZC4KLSAgIm1pbi12
ZXJzaW9uIjogIjEuMC4zIiwKLX0KLQotCi1kZWYgUmVhZEZpbGUoZmlsZW5hbWUpOgotICAiIiJS
ZWFkcyBhIGZpbGUgYXMgYSBzdHJpbmciIiIKLSAgZmlsZSA9IG9wZW4oZmlsZW5hbWUsICJyIikK
LSAgZGF0YSA9IGZpbGUucmVhZCgpCi0gIGZpbGUuY2xvc2UoKQotICByZXR1cm4gZGF0YQotCi0K
LWRlZiBXcml0ZUZpbGUoZmlsZW5hbWUsIGRhdGEpOgotICAiIiJXcml0ZXMgYSBzdHJpbmcgYXMg
YSBmaWxlIiIiCi0gIHByaW50ICJXcml0aW5nOiAiLCBmaWxlbmFtZQotICBkaXJuYW1lID0gb3Mu
cGF0aC5kaXJuYW1lKGZpbGVuYW1lKQotICBpZiBub3Qgb3MucGF0aC5leGlzdHMoZGlybmFtZSk6
Ci0gICAgb3MubWFrZWRpcnMoZGlybmFtZSkKLSAgZmlsZSA9IG9wZW4oZmlsZW5hbWUsICJ3YiIp
Ci0gIGZpbGUud3JpdGUoZGF0YSkKLSAgZmlsZS5jbG9zZSgpCi0KLQotZGVmIENvcHlUcmVlKHNy
YywgZHN0LCBpZ25vcmU9Tm9uZSk6Ci0gICIiIlJlY3Vyc2l2ZWx5IGNvcHkgYSBkaXJlY3Rvcnkg
dHJlZSIiIgotICBuYW1lcyA9IG9zLmxpc3RkaXIoc3JjKQotICBpZiBpZ25vcmUgaXMgbm90IE5v
bmU6Ci0gICAgaWdub3JlZF9uYW1lcyA9IGlnbm9yZShzcmMsIG5hbWVzKQotICBlbHNlOgotICAg
IGlnbm9yZWRfbmFtZXMgPSBzZXQoKQotCi0gIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhkc3QpOgot
ICAgIG9zLm1ha2VkaXJzKGRzdCkKLSAgZXJyb3JzID0gW10KLSAgZm9yIG5hbWUgaW4gbmFtZXM6
Ci0gICAgaWYgbmFtZSBpbiBpZ25vcmVkX25hbWVzOgotICAgICAgY29udGludWUKLSAgICBzcmNu
YW1lID0gb3MucGF0aC5qb2luKHNyYywgbmFtZSkKLSAgICBkc3RuYW1lID0gb3MucGF0aC5qb2lu
KGRzdCwgbmFtZSkKLSAgICB0cnk6Ci0gICAgICBpZiBvcy5wYXRoLmlzZGlyKHNyY25hbWUpOgot
ICAgICAgICBDb3B5VHJlZShzcmNuYW1lLCBkc3RuYW1lLCBpZ25vcmUpCi0gICAgICBlbHNlOgot
ICAgICAgICAjIFdpbGwgcmFpc2UgYSBTcGVjaWFsRmlsZUVycm9yIGZvciB1bnN1cHBvcnRlZCBm
aWxlIHR5cGVzCi0gICAgICAgIHNodXRpbC5jb3B5ZmlsZShzcmNuYW1lLCBkc3RuYW1lKQotICAg
ICMgY2F0Y2ggdGhlIEVycm9yIGZyb20gdGhlIHJlY3Vyc2l2ZSBjb3B5dHJlZSBzbyB0aGF0IHdl
IGNhbgotICAgICMgY29udGludWUgd2l0aCBvdGhlciBmaWxlcwotICAgIGV4Y2VwdCBFcnJvciwg
ZXJyOgotICAgICAgZXJyb3JzLmV4dGVuZChlcnIuYXJnc1swXSkKLSAgICBleGNlcHQgRW52aXJv
bm1lbnRFcnJvciwgd2h5OgotICAgICAgZXJyb3JzLmFwcGVuZCgoc3JjbmFtZSwgZHN0bmFtZSwg
c3RyKHdoeSkpKQotICBpZiBlcnJvcnM6Ci0gICAgcmFpc2UgRXJyb3IsIGVycm9ycwotCi0KLWRl
ZiBGaWxlUmVhZGVyKGZpbGVuYW1lKToKLSAgIiIiQSBGaWxlIGdlbmVyYXRvciB0aGF0IHJldHVy
bnMgb25seSBub24gZW1wdHksIG5vbiBjb21tZW50IGxpbmVzIiIiCi0gIGZpbGUgPSBvcGVuKGZp
bGVuYW1lLCAiciIpCi0gIGxpbmVzID0gZmlsZS5yZWFkbGluZXMoKQotICBmaWxlLmNsb3NlKCkK
LSAgZm9yIGxpbmVfbnVtYmVyLCBsaW5lIGluIGVudW1lcmF0ZShsaW5lcyk6Ci0gICAgbGluZSA9
IGxpbmUuc3RyaXAoKQotICAgIGlmIChsZW4obGluZSkgPiAwIGFuZAotICAgICAgICBub3QgbGlu
ZS5zdGFydHN3aXRoKCIjIikgYW5kCi0gICAgICAgIG5vdCBsaW5lLnN0YXJ0c3dpdGgoIjsiKSBh
bmQKLSAgICAgICAgbm90IGxpbmUuc3RhcnRzd2l0aCgiLy8iKSk6Ci0gICAgICB5aWVsZCBsaW5l
X251bWJlciArIDEsIGxpbmUKLQotCi1kZWYgR3JlYXRlclRoYW5PckVxdWFsVG9WZXJzaW9uKGhh
dmUsIHdhbnQpOgotICAiIiJDb21wYXJlcyB0byB2ZXJzaW9uIHN0cmluZ3MiIiIKLSAgaGF2ZSA9
IGhhdmUuc3BsaXQoIiAiKVswXS5zcGxpdCgiLiIpCi0gIHdhbnQgPSB3YW50LnNwbGl0KCIgIilb
MF0uc3BsaXQoIi4iKQotICBmb3IgbmR4LCB3YW50X3N0ciBpbiBlbnVtZXJhdGUod2FudCk6Ci0g
ICAgd2FudF9udW0gPSBpbnQod2FudF9zdHIpCi0gICAgaGF2ZV9udW0gPSAwCi0gICAgaWYgbmR4
IDwgbGVuKGhhdmUpOgotICAgICAgaGF2ZV9udW0gPSBpbnQoaGF2ZVtuZHhdKQotICAgIGlmIGhh
dmVfbnVtIDwgd2FudF9udW06Ci0gICAgICByZXR1cm4gRmFsc2UKLSAgICBpZiBoYXZlX251bSA+
PSB3YW50X251bToKLSAgICAgIHJldHVybiBUcnVlCi0gIHJldHVybiBUcnVlCi0KLQotZGVmIEdl
dFRlc3RMaXN0KGxpc3RfZmlsZW5hbWUsIGRlc3RfZGlyLCBoaWVyYXJjaGljYWxfb3B0aW9ucyk6
Ci0gIGdsb2JhbCBHTE9CQUxfT1BUSU9OUwotICB0ZXN0cyA9IFtdCi0gIHByZWZpeCA9IG9zLnBh
dGguZGlybmFtZShsaXN0X2ZpbGVuYW1lKQotICBmb3IgbGluZV9udW1iZXIsIGxpbmUgaW4gRmls
ZVJlYWRlcihsaXN0X2ZpbGVuYW1lKToKLSAgICBhcmdzID0gbGluZS5zcGxpdCgpCi0gICAgdGVz
dF9vcHRpb25zID0ge30KLSAgICBub25fb3B0aW9ucyA9IFtdCi0gICAgdXNlX3Rlc3QgPSBUcnVl
Ci0gICAgd2hpbGUgbGVuKGFyZ3MpOgotICAgICAgYXJnID0gYXJncy5wb3AoMCkKLSAgICAgIGlm
IGFyZy5zdGFydHN3aXRoKCItIik6Ci0gICAgICAgIGlmIG5vdCBhcmcuc3RhcnRzd2l0aCgiLS0i
KToKLSAgICAgICAgICByYWlzZSAiJXM6JWQgYmFkIG9wdGlvbiIgJSAobGlzdF9maWxlbmFtZSwg
bGluZV9udW1iZXIpCi0gICAgICAgIG9wdGlvbiA9IGFyZ1syOl0KLSAgICAgICAgaWYgb3B0aW9u
ID09ICdzbG93JzoKLSAgICAgICAgICBwYXNzCi0gICAgICAgIGVsaWYgb3B0aW9uID09ICdtaW4t
dmVyc2lvbicgb3Igb3B0aW9uID09ICJtYXgtdmVyc2lvbiI6Ci0gICAgICAgICAgdGVzdF9vcHRp
b25zW29wdGlvbl0gPSBhcmdzLnBvcCgwKQotICAgICAgICBlbHNlOgotICAgICAgICAgIHJhaXNl
IEV4Y2VwdGlvbigiJXM6JWQgdW5rbm93biBvcHRpb24gJyVzJyIgJSAobGlzdF9maWxlbmFtZSwg
bGluZV9udW1iZXIsIGFyZykpCi0gICAgICBlbHNlOgotICAgICAgICBub25fb3B0aW9ucy5hcHBl
bmQoYXJnKQotICAgIHVybCA9IG9zLnBhdGguam9pbihwcmVmaXgsICIgIi5qb2luKG5vbl9vcHRp
b25zKSkKLQotICAgIGlmIG5vdCB1cmwuZW5kc3dpdGgoIi50eHQiKToKLSAgICAgIGlmICJtaW4t
dmVyc2lvbiIgaW4gdGVzdF9vcHRpb25zOgotICAgICAgICBtaW5fdmVyc2lvbiA9IHRlc3Rfb3B0
aW9uc1sibWluLXZlcnNpb24iXQotICAgICAgZWxzZToKLSAgICAgICAgbWluX3ZlcnNpb24gPSBo
aWVyYXJjaGljYWxfb3B0aW9uc1siZGVmYXVsdC12ZXJzaW9uIl0KLQotICAgICAgaWYgIm1pbi12
ZXJzaW9uIiBpbiBHTE9CQUxfT1BUSU9OUzoKLSAgICAgICAgdXNlX3Rlc3QgPSBHcmVhdGVyVGhh
bk9yRXF1YWxUb1ZlcnNpb24obWluX3ZlcnNpb24sIEdMT0JBTF9PUFRJT05TWyJtaW4tdmVyc2lv
biJdKQotICAgICAgZWxzZToKLSAgICAgICAgdXNlX3Rlc3QgPSBHcmVhdGVyVGhhbk9yRXF1YWxU
b1ZlcnNpb24oR0xPQkFMX09QVElPTlNbInZlcnNpb24iXSwgbWluX3ZlcnNpb24pCi0KLSAgICBp
ZiBub3QgdXNlX3Rlc3Q6Ci0gICAgICBjb250aW51ZQotCi0gICAgaWYgdXJsLmVuZHN3aXRoKCIu
dHh0Iik6Ci0gICAgICBpZiAibWluLXZlcnNpb24iIGluIHRlc3Rfb3B0aW9uczoKLSAgICAgICAg
aGllcmFyY2hpY2FsX29wdGlvbnNbImRlZmF1bHQtdmVyc2lvbiJdID0gdGVzdF9vcHRpb25zWyJt
aW4tdmVyc2lvbiJdCi0gICAgICB0ZXN0cyA9IHRlc3RzICsgR2V0VGVzdExpc3QoCi0gICAgICAg
ICAgb3MucGF0aC5qb2luKHByZWZpeCwgdXJsKSwgZGVzdF9kaXIsIGNvcHkuY29weShoaWVyYXJj
aGljYWxfb3B0aW9ucykpCi0gICAgZWxzZToKLSAgICAgIHRlc3RzLmFwcGVuZCh7InVybCI6IHVy
bH0pCi0gIHJldHVybiB0ZXN0cwotCi0KLWRlZiBtYWluKGFyZ3YpOgotICAiIiJUaGlzIGlzIHRo
ZSBtYWluIGZ1bmN0aW9uLiIiIgotICBnbG9iYWwgR0xPQkFMX09QVElPTlMKLQotICBwYXJzZXIg
PSBPcHRpb25QYXJzZXIoKQotICBwYXJzZXIuYWRkX29wdGlvbigKLSAgICAgICItdiIsICItLXZl
cmJvc2UiLCBhY3Rpb249InN0b3JlX3RydWUiLAotICAgICAgaGVscD0icHJpbnRzIG1vcmUgb3V0
cHV0LiIpCi0gIHBhcnNlci5hZGRfb3B0aW9uKAotICAgICAgIi13IiwgIi0td2ViZ2wtY29uZm9y
bWFuY2UtdGVzdCIsIGRlc3Q9InNvdXJjZV9kaXIiLAotICAgICAgaGVscD0icGF0aCB0byB3ZWJn
bCBjb25mb3JtYW5jZSB0ZXN0cy4gUkVRVUlSRUQiKQotICBwYXJzZXIuYWRkX29wdGlvbigKLSAg
ICAgICItbiIsICItLW5vLWNvcHkiLCBhY3Rpb249InN0b3JlX3RydWUiLAotICAgICAgaGVscD0i
ZG8gbm90IGNvcHkgdGVzdHMiKQotICBwYXJzZXIuYWRkX29wdGlvbigKLSAgICAgICItZSIsICIt
LWdlbmVyYXRlLWV4cGVjdGF0aW9ucyIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsCi0gICAgICBoZWxw
PSJnZW5lcmF0ZXQgdGhlIHRlc3QgZXhwZWN0YXRpb25zIikKLSAgcGFyc2VyLmFkZF9vcHRpb24o
Ci0gICAgICAiLW8iLCAiLS1vdXRwdXQtZGlyIiwgZGVzdD0ib3V0cHV0X2RpciIsCi0gICAgICBo
ZWxwPSJiYXNlIGRpcmVjdG9yeSBmb3Igb3V0cHV0LiBkZWZhdWx0cyB0byBcJy5cJyIsCi0gICAg
ICBkZWZhdWx0PSIuIikKLQotICAob3B0aW9ucywgYXJncykgPSBwYXJzZXIucGFyc2VfYXJncyhh
cmdzPWFyZ3YpCi0KLSAgaWYgbm90IG9wdGlvbnMuc291cmNlX2RpcjoKLSAgICBwYXJzZXIucHJp
bnRfaGVscCgpCi0gICAgcmV0dXJuIDEKLQotICBvcy5jaGRpcihvcy5wYXRoLmRpcm5hbWUoX19m
aWxlX18pIG9yICcuJykKLQotICBzb3VyY2VfZGlyID0gb3B0aW9ucy5zb3VyY2VfZGlyOwotICBv
dXRwdXRfZGlyID0gb3B0aW9ucy5vdXRwdXRfZGlyOwotICB3ZWJnbF90ZXN0c19kaXIgPSBvcy5w
YXRoLmpvaW4ob3V0cHV0X2RpciwgInJlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzIikKLQotICAj
IGNvcHkgYWxsIHRoZSBmaWxlcyBmcm9tIHRoZSBXZWJHTCBjb25mb3JtYW5jZSB0ZXN0cy4KLSAg
aWYgbm90IG9wdGlvbnMubm9fY29weToKLSAgICBDb3B5VHJlZSgKLSAgICAgICAgc291cmNlX2Rp
ciwgd2ViZ2xfdGVzdHNfZGlyLCBzaHV0aWwuaWdub3JlX3BhdHRlcm5zKAotICAgICAgICAgICAg
Jy5naXQnLCAnKi5weWMnLCAndG1wKicpKQotCi0gIHRlc3RfdGVtcGxhdGUgPSBSZWFkRmlsZSgi
cmVzb3VyY2VzL3dlYmdsLXdyYXBwZXItdGVtcGxhdGUuaHRtbCIpCi0gIGV4cGVjdGF0aW9uX3Rl
bXBsYXRlID0gUmVhZEZpbGUoInJlc291cmNlcy93ZWJnbC1leHBlY3RhdGlvbi10ZW1wbGF0ZS50
eHQiKQotCi0gICMgZ2VuZXJhdGUgd3JhcHBlcnMgZm9yIGFsbCB0aGUgdGVzdHMKLSAgdGVzdHMg
PSBHZXRUZXN0TGlzdChvcy5wYXRoLmpvaW4oc291cmNlX2RpciwgIjAwX3Rlc3RfbGlzdC50eHQi
KSwgIi4iLAotICAgICAgICAgICAgICAgICAgICAgIGNvcHkuY29weShHTE9CQUxfT1BUSU9OUykp
Ci0KLSAgZm9yIHRlc3QgaW4gdGVzdHM6Ci0gICAgdXJsID0gb3MucGF0aC5yZWxwYXRoKHRlc3Rb
InVybCJdLCBzb3VyY2VfZGlyKQotICAgIGRzdCA9IG9zLnBhdGguam9pbihvdXRwdXRfZGlyLCB1
cmwpCi0gICAgZHN0X2RpciA9IG9zLnBhdGguZGlybmFtZShkc3QpCi0gICAgc3JjID0gb3MucGF0
aC5yZWxwYXRoKG9zLnBhdGguam9pbih3ZWJnbF90ZXN0c19kaXIsIHVybCksIGRzdF9kaXIpLnJl
cGxhY2UoIlxcIiwgIi8iKQotICAgIGJhc2VfdXJsID0gb3MucGF0aC5yZWxwYXRoKG91dHB1dF9k
aXIsIGRzdF9kaXIpLnJlcGxhY2UoIlxcIiwgIi8iKQotICAgIHN1YnMgPSB7Ci0gICAgICAidXJs
Ijogc3JjLAotICAgICAgInVybF9uYW1lIjogb3MucGF0aC5iYXNlbmFtZSh1cmwpLAotICAgICAg
ImJhc2VfdXJsIjogYmFzZV91cmwsCi0gICAgfQotICAgIFdyaXRlRmlsZShkc3QsIHRlc3RfdGVt
cGxhdGUgJSBzdWJzKQotICAgIGlmIG9wdGlvbnMuZ2VuZXJhdGVfZXhwZWN0YXRpb25zOgotICAg
ICAgZXhwZWN0YXRpb25fZmlsZW5hbWUgPSBvcy5wYXRoLnNwbGl0ZXh0KGRzdClbMF0gKyAiLWV4
cGVjdGVkLnR4dCIKLSAgICAgIFdyaXRlRmlsZShleHBlY3RhdGlvbl9maWxlbmFtZSwgZXhwZWN0
YXRpb25fdGVtcGxhdGUgJSBzdWJzKQotCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoK
LSAgc3lzLmV4aXQobWFpbihzeXMuYXJndlsxOl0pKQotCi0KLQotCi0KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbC1leHBlY3RhdGlvbi10ZW1wbGF0ZS50eHQg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2wtZXhwZWN0YXRpb24tdGVtcGxhdGUu
dHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNmZiNzNjZDRmNjliN2Q2ZDJiN2Qx
MGU0ZjQ2YTVlZjEzMDM4MWJiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbC1leHBlY3RhdGlvbi10
ZW1wbGF0ZS50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLVRoaXMgdGVzdCBydW5z
IHRoZSBXZWJHTCBUZXN0IGxpc3RlZCBiZWxvdyBpbiBhbiBpZnJhbWUgYW5kIHJlcG9ydHMgUEFT
UyBvciBGQUlMLgotCi1UZXN0OiAlKHVybClzCi1bIFBBU1MgXSBBbGwgdGVzdHMgcGFzc2VkCi0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbC13cmFwcGVyLXRl
bXBsYXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2wtd3JhcHBlci10
ZW1wbGF0ZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMWM4Mzc5YmQxOGU4
NzdjZTZmMjNhNjlkOTA2ODkyYzYyYjE2N2MxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbC13cmFw
cGVyLXRlbXBsYXRlLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi08IS0tIFRo
aXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBieSBnZW5lcmF0ZS13ZWJnbC10ZXN0cy5weS4gRE8g
Tk9UIEVESVQgLS0+Ci08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08bWV0YSBjaGFy
c2V0PSJ1dGYtOCI+Ci08dGl0bGU+V2ViR0wgQ29uZm9ybWFuY2UgVGVzdCBXcmFwcGVyIGZvciAl
KHVybF9uYW1lKXM8L3RpdGxlPgotPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0i
JShiYXNlX3VybClzLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIlKGJhc2VfdXJsKXMvcmVzb3VyY2VzL3dl
YmtpdC13ZWJnbC10ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08
cD5UaGlzIHRlc3QgcnVucyB0aGUgV2ViR0wgVGVzdCBsaXN0ZWQgYmVsb3cgaW4gYW4gaWZyYW1l
IGFuZCByZXBvcnRzIFBBU1Mgb3IgRkFJTC48L3A+Ci1UZXN0OiA8YSBocmVmPSIlKHVybClzIj4l
KHVybClzPC9hPgotPGRpdiBpZD0iaWZyYW1lIj4KLTxpZnJhbWUgc3JjPSIlKHVybClzIiB3aWR0
aD0iODAwIiBoZWlnaHQ9IjYwMCI+PC9pZnJhbWU+Ci08L2Rpdj4KLTxkaXYgaWQ9InJlc3VsdCI+
PC9kaXY+Ci08L2JvZHk+Ci08L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>423379</attachid>
            <date>2021-03-16 12:21:55 -0700</date>
            <delta_ts>2021-03-16 14:27:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223112-20210316212153.patch</filename>
            <type>text/plain</type>
            <size>43976</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0NDY3CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNTRiNDM5YjVjNTEyYzkzYTMxZDljZTg5MDI3M2YwYmE3
MGQ0OGFmZC4uZGEwY2Y4YTU5ZDgyNmNhZTU5NzFmZDliNWVhODY5MTRkNzdiZGZkNSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUx
IEBACisyMDIxLTAzLTE2ICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisK
KyAgICAgICAgTWFrZSBXZWJHTCBjb25mb3JtYW5jZSB0ZXN0IHVwZGF0ZSBzY3JpcHQgbW9yZSB1
c2FibGUgYW5kIGNvbnNpc3RlbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyMzExMgorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUnVzc2Vs
bC4KKworICAgICAgICBNb3ZlcyB0aGUgc2NyaXB0IExheW91dFRlc3RzL3dlYmdsL2dlbmVyYXRl
LXdlYmdsLXRlc3RzIG92ZXIKKyAgICAgICAgdW51c2VkIGFuZCBzdGFsZSBUb29scy9TY3JpcHRz
L3VwZGF0ZS13ZWJnbC1jb25mb3JtYW5jZS10ZXN0cworCisgICAgICAgIEZpeGVzIHRoZSBzY3Jp
cHQgdG86CisgICAgICAgICAgLSB0byBzdXBwb3J0IGdlbmVyYXRpb24gb2YgdGhlIHRlc3QgZHJp
dmVyIC5odG1sIGZpbGVzIHdpdGggd2ViZ2xWZXJzaW9uPTIKKyAgICAgICAgICAtIGNvcHkgdGhl
IHdlYmdsIGNvbmZvcm1hbmNlIHRlc3QgZmlsZXMgb25jZSB0byB3ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy4KKyAgICAgICAgICAgIFByZXZpb3VzbHkgdGhleSB3ZXJlIGNvcGllZCB0
d2ljZSwgMS4wLjMvcmVzb3VyY2VzLy4uIGFuZCAyLjAuMC9yZXNvdXJjZXMKKyAgICAgICAgICAt
IHRvIHN1cHBvcnQgY29weWluZyBhbGwgdGhlIHRlc3RzIGF0IHRoZSBzYW1lIHRpbWUuIFByZXZp
b3VzbHkgZWFjaAorICAgICAgICAgICAgaW5kaXZpZHVhbCBzdWl0ZXMgKDEuMC4zLCAyLjAuMCkg
d291bGQgYmUgY29waWVkCisgICAgICAgICAgICBpbiBkaWZmZXJlbnQgaW52b2NhdGlvbnMsIGxl
YWRpbmcgdG8gZXJyb3JzIGFuZCBvbWlzc2lvbnMgdG8gcnVuIHdoZW4KKyAgICAgICAgICAgIHNv
bWV0aGluZyBjaGFuZ2VzLCBzdWNoIGFzIHRoZSB0ZW1wbGF0ZXMuCisgICAgICAgICAgLSBzdXBw
b3J0cyBnZW5lcmF0aW9uIG9mIHRoZSBkaXJlY3RvcmllcyBmcm9tIHNjcmF0Y2gsIHNvIHRoYXQg
bm8gc3RhbGUgZmlsZXMKKyAgICAgICAgICAgIHN1Y2ggYXMgZXhwZWN0YXRpb25zLCBkcml2ZXIg
Lmh0bWwgZmlsZXMgb3IgdGVzdCBzdWl0ZSBjb250ZW50IGlzIGxlZnQuCisgICAgICAgICAgLSBh
dXRvbWF0aWNhbGx5IGZpbHRlciBmaWxlcyB0aGF0IGRvIG5vdCBuZWVkIHRvIGJlIGNvcGllZCAo
ZGVxcC9jb21waWxlci5qYXIsIC4uLikKKyAgICAgICAgICAtIHRyeSB0byBhZG9wdCBhIHN0eWxl
IHNvbWV3aGF0IGNvbnNpc3RlbnQgd2l0aCBvdGhlciBXZWJLaXQgcHl0aG9uIHNjcmlwdHMKKyAg
ICAgICAgICAtIGNvcHkgdG8gdXBjb21pbmcgMS4wLjQgYW5kIDIuMC4xIGluc3RlYWQgb2Ygb2xk
IDEuMC4zLzIuMC4wLgorCisgICAgICAgICogU2NyaXB0cy91cGRhdGUtd2ViZ2wtY29uZm9ybWFu
Y2UtdGVzdHM6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b19iZV9tb3ZlZC9fX2luaXRf
Xy5weTogUmVtb3ZlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3RvX2JlX21vdmVkL3Vw
ZGF0ZV93ZWJnbF9jb25mb3JtYW5jZV90ZXN0cy5weTogUmVtb3ZlZC4KKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L3RvX2JlX21vdmVkL3VwZGF0ZV93ZWJnbF9jb25mb3JtYW5jZV90ZXN0c191
bml0dGVzdC5weTogUmVtb3ZlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3VwZGF0ZV93
ZWJnbF9jb25mb3JtYW5jZV90ZXN0c19saWIvbWFpbi5weTogQWRkZWQuCisgICAgICAgIChfbWFr
ZV9pZ25vcmVfZm5tYXRjaF9ydWxlX21hdGNoZXIpOgorICAgICAgICAoX21ha2VfaWdub3JlX2Zu
bWF0Y2hfcnVsZV9tYXRjaGVyLm1hdGNoX3J1bGVzKToKKyAgICAgICAgKF9jb3B5X3RyZWUpOgor
ICAgICAgICAoX1dlYkdMVGVzdCk6CisgICAgICAgIChfcGFyc2Vfd2ViZ2xfdGVzdHMpOgorICAg
ICAgICAoX2ZpbHRlcl93ZWJnbF90ZXN0X3BhdGhzX2Zvcl9zdWl0ZV92ZXJzaW9uKToKKyAgICAg
ICAgKF9nZW5lcmF0ZV93ZWJraXRfd2ViZ2xfdGVzdHMpOgorICAgICAgICAoX2ZpbmRfZXhwZWN0
YXRpb25zX2Zvcl9yZW1vdmVkX3Rlc3RzKToKKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvdXBkYXRlX3dlYmdsX2NvbmZvcm1hbmNlX3Rlc3RzX2xpYi93ZWJnbC1l
eHBlY3RhdGlvbi10ZW1wbGF0ZS50eHQ6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2wtZXhwZWN0YXRpb24tdGVtcGxhdGUudHh0LgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvdXBkYXRlX3dlYmdsX2NvbmZvcm1hbmNlX3Rlc3RzX2xpYi93ZWJnbC10ZXN0
LWRyaXZlci10ZW1wbGF0ZS5odG1sOiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsLXdyYXBwZXItdGVtcGxhdGUuaHRtbC4KKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L3VwZGF0ZV93ZWJnbF9jb25mb3JtYW5jZV90ZXN0c19saWIvd2Via2l0LXdlYmdsLXRl
c3QtaGFybmVzcy10ZW1wbGF0ZS5qczogQWRkZWQuCisgICAgICAgICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIud2luZG93LmNvbnNvbGUubG9nKToKKyAgICAgICAgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlci53aW5kb3cuY29uc29sZS5lcnJvcik6CisgICAgICAgIChsaXN0KToKKyAg
ICAgICAgKGxvZyk6CisgICAgICAgICh3aW5kb3cud2ViZ2xUZXN0SGFybmVzcy5yZXBvcnRSZXN1
bHRzKToKKyAgICAgICAgKHdpbmRvdy53ZWJnbFRlc3RIYXJuZXNzLm5vdGlmeUZpbmlzaGVkKToK
KwogMjAyMS0wMy0xNSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFJFR1JFU1NJT046IChyMjU1NjExKSBbIE1hYyBdIDMgbGxkYiB0ZXN0cyBm
YWlsaW5nIHJlbGF0ZWQgdG8gSGFzaE1hcApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy91cGRh
dGUtd2ViZ2wtY29uZm9ybWFuY2UtdGVzdHMgYi9Ub29scy9TY3JpcHRzL3VwZGF0ZS13ZWJnbC1j
b25mb3JtYW5jZS10ZXN0cwppbmRleCBiOTMwODM2NDVhZmFkNDNiM2Y4YzQyYzg2NzhjMDUyODBh
MWQ0NTExLi5jMTRlM2E5ZWVhMTBlZWE5MDljMjZjMjI5NmJhMTdhYzYyNTc2MWY2IDEwMDc1NQot
LS0gYS9Ub29scy9TY3JpcHRzL3VwZGF0ZS13ZWJnbC1jb25mb3JtYW5jZS10ZXN0cworKysgYi9U
b29scy9TY3JpcHRzL3VwZGF0ZS13ZWJnbC1jb25mb3JtYW5jZS10ZXN0cwpAQCAtMSw0ICsxLDQg
QEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwogIyBDb3B5
cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CkBAIC0yNywxMCArMjcsMjcgQEAKICMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAKLSIiIldyYXBwZXIgYXJvdW5kIHdlYmtpdHB5L2xheW91dF90ZXN0cy91cGRhdGUtd2ViZ2wt
Y29uZm9ybWFuY2UtdGVzdHMucHkiIiIKKyIiIkdlbmVyYXRlcyBXZWJLaXQgV2ViR0wgbGF5b3V0
IHRlc3RzIGZyb20gdGhlIEtocm9ub3MgV2ViR0wgY29uZm9ybWFuY2UgdGVzdHMiIiIKKworIyBU
byB1c2UgdGhpcywgZ2V0IGEgY29weSBvZiB0aGUgV2ViR0wgY29uZm9ybWFuY2UgdGVzdHMgdGhl
biBydW4gdGhpcyBzY3JpcHQKKyMgZWcuCisjCisjICAgY2Qgfi90ZW1wCisjICAgZ2l0IGNsb25l
IGdpdDovL2dpdGh1Yi5jb20vS2hyb25vc0dyb3VwL1dlYkdMLmdpdAorIyAgIG1rZGlyIGJhY2t1
cAorIyAgIG12IH4vV2ViS2l0L0xheW91dFRlc3RzL3dlYmdsL3sxLjAuMywyLjAuMCxzZGt9IGJh
Y2t1cC8KKyMgICB+L1dlYktpdC9Ub29scy9TY3JpcHRzL3VwZGF0ZS13ZWJnbC1jb25mb3JtYW5j
ZS10ZXN0cyB+L3RlbXAvV2ViR0wKKyMgICB+L1dlYktpdC9Ub29scy9TY3JpcHRzL3J1bi13ZWJr
aXQtdGVzdHMgLS1kZWJ1ZyAtLXdlYmdsIC0tb3JkZXI9cmFuZG9tIHdlYmdsCisjICAgfi9XZWJL
aXQvVG9vbHMvU2NyaXB0cy9ydW4td2Via2l0LXRlc3RzIC0tcmVsZWFzZSAtLXdlYmdsIC0tb3Jk
ZXI9cmFuZG9tIHdlYmdsCisjICAgfi9XZWJLaXQvVG9vbHMvU2NyaXB0cy9jaGVjay1mb3ItZHVw
bGljYXRlZC1wbGF0Zm9ybS10ZXN0LXJlc3VsdHMgLW4gMj4mMSB8IGdyZXAgd2ViZ2wKKyMgICBb
IFVwZGF0ZSBUZXN0RXhwZWN0YXRpb25zIF0KKyMgICBbIENoZWNrIGluIHRoZSByZXN1bHQgXQor
IworIyBOb3RlOiBUaGUgc2NyaXB0IGlzIGN1cnJlbnRseSBub3QgdGVzdGVkIHRvIGJlIHJ1biBv
biBXaW5kb3dzLgogCi1pbXBvcnQgd2Via2l0cHkudG9fYmVfbW92ZWQudXBkYXRlX3dlYmdsX2Nv
bmZvcm1hbmNlX3Rlc3RzCiBpbXBvcnQgc3lzCiAKK2Zyb20gd2Via2l0cHkudXBkYXRlX3dlYmds
X2NvbmZvcm1hbmNlX3Rlc3RzX2xpYi5tYWluIGltcG9ydCBtYWluCisKIGlmIF9fbmFtZV9fID09
ICdfX21haW5fXyc6Ci0gICAgc3lzLmV4aXQod2Via2l0cHkudG9fYmVfbW92ZWQudXBkYXRlX3dl
YmdsX2NvbmZvcm1hbmNlX3Rlc3RzLm1haW4oKSkKKyAgICBzeXMuZXhpdChtYWluKCkpCmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3RvX2JlX21vdmVkL19faW5pdF9fLnB5IGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b19iZV9tb3ZlZC9fX2luaXRfXy5weQpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggYzA1MjhiNzgzMzMwOTIyN2RjMGVjODlmODAwNDcxZGM3Njc0
ZDIyNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3RvX2JlX21vdmVkL19faW5pdF9fLnB5CisrKyAvZGV2L251bGwK
QEAgLTEsMTAgKzAsMCBAQAotIyBSZXF1aXJlZCBmb3IgUHl0aG9uIHRvIHNlYXJjaCB0aGlzIGRp
cmVjdG9yeSBmb3IgbW9kdWxlIGZpbGVzCi0jIFRoaXMgZGlyZWN0b3J5IGhvdXNlcyBQeXRob24g
bW9kdWxlcyB0aGF0IGRvIG5vdCB5ZXQgaGF2ZSBhIHByb3BlciBob21lLgotIwotIyBTb21lIG9m
IHRoZSBQeXRob24gbW9kdWxlcyBpbiB0aGlzIGRpcmVjdG9yeSBhcmVuJ3QgcmVhbGx5IHBhcnQg
b2Ygd2Via2l0cHkKLSMgaW4gdGhlIHNlbnNlIHRoYXQgdGhleSdyZSBub3QgY2xhc3NlcyB0aGF0
IGFyZSBtZWFudCB0byBiZSB1c2VkIGFzIHBhcnQgb2YKLSMgdGhlIHdlYmtpdHB5IGxpYnJhcnku
IEluc3RlYWQsIHRoZXkncmUgYSBidW5jaCBvZiBoZWxwZXIgY29kZSBmb3IgaW5kaXZpZHVhbAot
IyBzY3JpcHRzIGluIGluIFRvb2xzL1NjcmlwdHMuCi0jCi0jIFJlYWxseSwgYWxsIHRoaXMgY29k
ZSBzaG91bGQgZWl0aGVyIGJlIHJlZmFjdG9yZWQgb3IgbW92ZWQgc29tZXdoZXJlIGVsc2UsCi0j
IGhlbmNlIHRoZSBzb21ld2hhdCBsYW1lIG5hbWUgZm9yIHRoaXMgZGlyZWN0b3J5LgpkaWZmIC0t
Z2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b19iZV9tb3ZlZC91cGRhdGVfd2ViZ2xfY29u
Zm9ybWFuY2VfdGVzdHMucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3RvX2JlX21vdmVkL3Vw
ZGF0ZV93ZWJnbF9jb25mb3JtYW5jZV90ZXN0cy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNzg3YWNhZjI2MzViNzRjOTZjYTNiNmNjOWMwMzZmMDhjNWZmMDdjNC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L3RvX2JlX21vdmVkL3VwZGF0ZV93ZWJnbF9jb25mb3JtYW5jZV90ZXN0cy5weQorKysgL2Rl
di9udWxsCkBAIC0xLDE1NiArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFy
ZSBtZXQ6Ci0jIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSMgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0j
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
Ci0jIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAotIyBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0jIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotIyBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
Ci0jIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotaW1wb3J0IGdsb2IKLWlt
cG9ydCBsb2dnaW5nCi1pbXBvcnQgb3B0cGFyc2UKLWltcG9ydCBvcwotaW1wb3J0IHJlCi1pbXBv
cnQgc3lzCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVja291dCBpbXBvcnQgc2NtCi1mcm9tIHdl
YmtpdHB5LmNvbW1vbi5zeXN0ZW0uZmlsZXN5c3RlbSBpbXBvcnQgRmlsZVN5c3RlbQotZnJvbSB3
ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgRXhlY3V0aXZlCi0KLQotX2xv
ZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQotCi0KLWRlZiByZW1vdmVfZmlyc3RfbGlu
ZV9jb21tZW50KHRleHQpOgotICAgIHJldHVybiByZS5jb21waWxlKHInXjwhLS0uKj8tLT5ccyon
LCByZS5ET1RBTEwpLnN1YignJywgdGV4dCkKLQotCi1kZWYgdHJhbnNsYXRlX2luY2x1ZGVzKHRl
eHQpOgotICAgICMgTWFwcGluZyBvZiBzaW5nbGUgZmlsZW5hbWUgdG8gcmVsYXRpdmUgcGF0aCB1
bmRlciBXZWJLaXQgcm9vdC4KLSAgICAjIEFzc3VtcHRpb246IHRoZXNlIGZpbGVuYW1lcyBhcmUg
Z2xvYmFsbHkgdW5pcXVlLgotICAgIGluY2x1ZGVfbWFwcGluZyA9IHsKLSAgICAgICAgImpzLXRl
c3QtcHJlLmpzIjogIi4uLy4uLy4uL3Jlc291cmNlcyIsCi0gICAgICAgICJqcy10ZXN0LXBvc3Qu
anMiOiAiLi4vLi4vLi4vcmVzb3VyY2VzIiwKLSAgICAgICAgImRlc2t0b3AtZ2wtY29uc3RhbnRz
LmpzIjogInJlc291cmNlcyIsCi0gICAgfQotCi0gICAgZm9yIGZpbGVuYW1lLCBwYXRoIGluIGlu
Y2x1ZGVfbWFwcGluZy5pdGVtcygpOgotICAgICAgICBzZWFyY2ggPSByJyg/OlteIlwnPSBdKi8p
PycgKyByZS5lc2NhcGUoZmlsZW5hbWUpCi0gICAgICAgICMgV2UgdXNlICcvJyBpbnN0ZWFkIG9m
IG9zLnBhdGguam9pbiBpbiBvcmRlciB0byBwcm9kdWNlIGNvbnNpc3RlbnQKLSAgICAgICAgIyBv
dXRwdXQgY3Jvc3MtcGxhdGZvcm0uCi0gICAgICAgIHJlcGxhY2UgPSBwYXRoICsgJy8nICsgZmls
ZW5hbWUKLSAgICAgICAgdGV4dCA9IHJlLnN1YihzZWFyY2gsIHJlcGxhY2UsIHRleHQpCi0KLSAg
ICByZXR1cm4gdGV4dAotCi0KLWRlZiB0cmFuc2xhdGVfa2hyb25vc190ZXN0KHRleHQpOgotICAg
ICIiIgotICAgIFRoaXMgbWV0aG9kIHRyYW5zbGF0ZXMgdGhlIGNvbnRlbnRzIG9mIGEgS2hyb25v
cyB0ZXN0IHRvIGEgV2ViS2l0IHRlc3QuCi0gICAgIiIiCi0KLSAgICB0cmFuc2xhdGVGdW5jcyA9
IFsKLSAgICAgICAgcmVtb3ZlX2ZpcnN0X2xpbmVfY29tbWVudCwKLSAgICAgICAgdHJhbnNsYXRl
X2luY2x1ZGVzLAotICAgIF0KLQotICAgIGZvciBmIGluIHRyYW5zbGF0ZUZ1bmNzOgotICAgICAg
ICB0ZXh0ID0gZih0ZXh0KQotCi0gICAgcmV0dXJuIHRleHQKLQotCi1kZWYgdXBkYXRlX2ZpbGUo
aW5fZmlsZW5hbWUsIG91dF9kaXIpOgotICAgICMgY2hlY2sgaW5fZmlsZW5hbWUgZXhpc3RzCi0g
ICAgIyBjaGVjayBvdXRfZGlyIGV4aXN0cwotICAgIG91dF9maWxlbmFtZSA9IG9zLnBhdGguam9p
bihvdXRfZGlyLCBvcy5wYXRoLmJhc2VuYW1lKGluX2ZpbGVuYW1lKSkKLQotICAgIF9sb2cuZGVi
dWcoIlByb2Nlc3NpbmcgIiArIGluX2ZpbGVuYW1lKQotICAgIHdpdGggb3Blbihpbl9maWxlbmFt
ZSwgJ3InKSBhcyBpbl9maWxlOgotICAgICAgICB3aXRoIG9wZW4ob3V0X2ZpbGVuYW1lLCAndycp
IGFzIG91dF9maWxlOgotICAgICAgICAgICAgb3V0X2ZpbGUud3JpdGUodHJhbnNsYXRlX2tocm9u
b3NfdGVzdChpbl9maWxlLnJlYWQoKSkpCi0KLQotZGVmIHVwZGF0ZV9kaXJlY3RvcnkoaW5fZGly
LCBvdXRfZGlyKToKLSAgICBmb3IgZmlsZW5hbWUgaW4gZ2xvYi5nbG9iKG9zLnBhdGguam9pbihp
bl9kaXIsICcqLmh0bWwnKSk6Ci0gICAgICAgIHVwZGF0ZV9maWxlKG9zLnBhdGguam9pbihpbl9k
aXIsIGZpbGVuYW1lKSwgb3V0X2RpcikKLQotCi1kZWYgZGVmYXVsdF9vdXRfZGlyKCk6Ci0gICAg
ZGV0ZWN0b3IgPSBzY20uU0NNRGV0ZWN0b3IoRmlsZVN5c3RlbSgpLCBFeGVjdXRpdmUoKSkKLSAg
ICBjdXJyZW50X3NjbSA9IGRldGVjdG9yLmRldGVjdF9zY21fc3lzdGVtKG9zLnBhdGguZGlybmFt
ZShzeXMuYXJndlswXSkpCi0gICAgaWYgbm90IGN1cnJlbnRfc2NtOgotICAgICAgICByZXR1cm4g
b3MuZ2V0Y3dkKCkKLSAgICByb290X2RpciA9IGN1cnJlbnRfc2NtLmNoZWNrb3V0X3Jvb3QKLSAg
ICBpZiBub3Qgcm9vdF9kaXI6Ci0gICAgICAgIHJldHVybiBvcy5nZXRjd2QoKQotICAgIG91dF9k
aXIgPSBvcy5wYXRoLmpvaW4ocm9vdF9kaXIsICJMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJn
bCIpCi0gICAgaWYgb3MucGF0aC5pc2RpcihvdXRfZGlyKToKLSAgICAgICAgcmV0dXJuIG91dF9k
aXIKLSAgICByZXR1cm4gb3MuZ2V0Y3dkKCkKLQotCi1kZWYgY29uZmlndXJlX2xvZ2dpbmcob3B0
aW9ucyk6Ci0gICAgIiIiQ29uZmlndXJlcyB0aGUgbG9nZ2luZyBzeXN0ZW0uIiIiCi0gICAgbG9n
X2ZtdCA9ICclKGxldmVsbmFtZSlzOiAlKG1lc3NhZ2UpcycKLSAgICBsb2dfZGF0ZWZtdCA9ICcl
eSVtJWQgJUg6JU06JVMnCi0gICAgbG9nX2xldmVsID0gbG9nZ2luZy5JTkZPCi0gICAgaWYgb3B0
aW9ucy52ZXJib3NlOgotICAgICAgICBsb2dfZm10ID0gKCclKGFzY3RpbWUpcyAlKGZpbGVuYW1l
KXM6JShsaW5lbm8pLTRkICUobGV2ZWxuYW1lKXMgJwotICAgICAgICAgICAgICAgICAgICclKG1l
c3NhZ2UpcycpCi0gICAgICAgIGxvZ19sZXZlbCA9IGxvZ2dpbmcuREVCVUcKLSAgICBsb2dnaW5n
LmJhc2ljQ29uZmlnKGxldmVsPWxvZ19sZXZlbCwgZm9ybWF0PWxvZ19mbXQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICBkYXRlZm10PWxvZ19kYXRlZm10KQotCi0KLWRlZiBvcHRpb25fcGFyc2Vy
KCk6Ci0gICAgdXNhZ2UgPSAidXNhZ2U6ICVwcm9nIFtvcHRpb25zXSAoaW5wdXQgZmlsZSBvciBk
aXJlY3RvcnkpIgotICAgIHBhcnNlciA9IG9wdHBhcnNlLk9wdGlvblBhcnNlcih1c2FnZT11c2Fn
ZSkKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLXYnLCAnLS12ZXJib3NlJywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYWN0aW9uPSdzdG9yZV90cnVlJywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGVmYXVsdD1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aGVscD0naW5jbHVkZSBkZWJ1Zy1sZXZlbCBsb2dnaW5nJykKLSAgICBwYXJzZXIuYWRkX29wdGlv
bignLW8nLCAnLS1vdXRwdXQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249
J3N0b3JlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT0nc3RyaW5nJywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1kZWZhdWx0X291dF9kaXIoKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0YXZhcj0nRElSJywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaGVscD0nc3BlY2lmeSBhbiBvdXRwdXQgZGlyZWN0b3J5IHRvIHBsYWNl
IGZpbGVzICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW4gW2RlZmF1bHQ6
ICVkZWZhdWx0XScpCi0gICAgcmV0dXJuIHBhcnNlcgotCi0KLWRlZiBtYWluKCk6Ci0gICAgcGFy
c2VyID0gb3B0aW9uX3BhcnNlcigpCi0gICAgKG9wdGlvbnMsIGFyZ3MpID0gcGFyc2VyLnBhcnNl
X2FyZ3MoKQotICAgIGNvbmZpZ3VyZV9sb2dnaW5nKG9wdGlvbnMpCi0KLSAgICBpZiBsZW4oYXJn
cykgPT0gMDoKLSAgICAgICAgX2xvZy5lcnJvcigiTXVzdCBzcGVjaWZ5IGFuIGlucHV0IGRpcmVj
dG9yeSBvciBmaWxlbmFtZS4iKQotICAgICAgICBwYXJzZXIucHJpbnRfaGVscCgpCi0gICAgICAg
IHJldHVybiAxCi0KLSAgICBpbl9uYW1lID0gYXJnc1swXQotICAgIGlmIG9zLnBhdGguaXNmaWxl
KGluX25hbWUpOgotICAgICAgICB1cGRhdGVfZmlsZShpbl9uYW1lLCBvcHRpb25zLm91dHB1dCkK
LSAgICBlbGlmIG9zLnBhdGguaXNkaXIoaW5fbmFtZSk6Ci0gICAgICAgIHVwZGF0ZV9kaXJlY3Rv
cnkoaW5fbmFtZSwgb3B0aW9ucy5vdXRwdXQpCi0gICAgZWxzZToKLSAgICAgICAgX2xvZy5lcnJv
cigiJyVzJyBpcyBub3QgYSBkaXJlY3Rvcnkgb3IgYSBmaWxlLiIsIGluX25hbWUpCi0gICAgICAg
IHJldHVybiAyCi0KLSAgICByZXR1cm4gMApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS90b19iZV9tb3ZlZC91cGRhdGVfd2ViZ2xfY29uZm9ybWFuY2VfdGVzdHNfdW5pdHRlc3Qu
cHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3RvX2JlX21vdmVkL3VwZGF0ZV93ZWJnbF9jb25m
b3JtYW5jZV90ZXN0c191bml0dGVzdC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZWU5ZmI5NjliMzlkNDhkMjZkM2FiNzc3NzdiM2NlNDRhZjlhNWU0ZS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rv
X2JlX21vdmVkL3VwZGF0ZV93ZWJnbF9jb25mb3JtYW5jZV90ZXN0c191bml0dGVzdC5weQorKysg
L2Rldi9udWxsCkBAIC0xLDk2ICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
Ci0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMg
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQot
IyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0iIiJVbml0IHRl
c3RzIGZvciB1cGRhdGVfd2ViZ2xfY29uZm9ybWFuY2VfdGVzdHMuIiIiCi0KLWltcG9ydCB1bml0
dGVzdAotZnJvbSB3ZWJraXRweS50b19iZV9tb3ZlZCBpbXBvcnQgdXBkYXRlX3dlYmdsX2NvbmZv
cm1hbmNlX3Rlc3RzIGFzIHdlYmdsCi0KLQotZGVmIGNvbnN0cnVjdF9zY3JpcHQobmFtZSk6Ci0g
ICAgcmV0dXJuICI8c2NyaXB0IHNyYz1cIiIgKyBuYW1lICsgIlwiPjwvc2NyaXB0PlxuIgotCi0K
LWRlZiBjb25zdHJ1Y3Rfc3R5bGUobmFtZSk6Ci0gICAgcmV0dXJuICI8bGluayByZWw9XCJzdHls
ZXNoZWV0XCIgaHJlZj1cIiIgKyBuYW1lICsgIlwiPiIKLQotCi1jbGFzcyBUZXN0VHJhbnNsYXRp
b24odW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiBhc3NlcnRfdW5jaGFuZ2VkKHNlbGYsIHRl
eHQpOgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRleHQsIHdlYmdsLnRyYW5zbGF0ZV9raHJv
bm9zX3Rlc3QodGV4dCkpCi0KLSAgICBkZWYgYXNzZXJ0X3RyYW5zbGF0ZShzZWxmLCBpbnB1dCwg
b3V0cHV0KToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXRwdXQsIHdlYmdsLnRyYW5zbGF0
ZV9raHJvbm9zX3Rlc3QoaW5wdXQpKQotCi0gICAgZGVmIHRlc3Rfc2ltcGxlX3VuY2hhbmdlZChz
ZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRfdW5jaGFuZ2VkKCIiKQotICAgICAgICBzZWxmLmFz
c2VydF91bmNoYW5nZWQoIjxodG1sPjwvaHRtbD4iKQotCi0gICAgZGVmIHRlc3RfaGVhZGVyX3N0
cmlwKHNlbGYpOgotICAgICAgICBzaW5nbGVfbGluZV9oZWFkZXIgPSAiPCEtLSBzaW5nbGUgbGlu
ZSBoZWFkZXIuIC0tPiIKLSAgICAgICAgbXVsdGlfbGluZV9oZWFkZXIgPSAiIiI8IS0tIHRoaXMg
aXMgYSBtdWx0aS1saW5lCi0gICAgICAgICAgICAgICAgaGVhZGVyLiAgaXQgc2hvdWxkIGFsbCBi
ZSByZW1vdmVkIHRvby4KLSAgICAgICAgICAgICAgICAtLT4iIiIKLSAgICAgICAgdGV4dCA9ICI8
aHRtbD48L2h0bWw+IgotICAgICAgICBzZWxmLmFzc2VydF90cmFuc2xhdGUoc2luZ2xlX2xpbmVf
aGVhZGVyLCAiIikKLSAgICAgICAgc2VsZi5hc3NlcnRfdHJhbnNsYXRlKHNpbmdsZV9saW5lX2hl
YWRlciArIHRleHQsIHRleHQpCi0gICAgICAgIHNlbGYuYXNzZXJ0X3RyYW5zbGF0ZShtdWx0aV9s
aW5lX2hlYWRlciArIHRleHQsIHRleHQpCi0KLSAgICBkZWYgZG9udF9zdHJpcF9vdGhlcl9oZWFk
ZXJzKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydF91bmNoYW5nZWQoIjxodG1sPlxuPCEtLSBk
b24ndCByZW1vdmUgY29tbWVudHMgb24gb3RoZXIgbGluZXMuIC0tPlxuPC9odG1sPiIpCi0KLSAg
ICBkZWYgdGVzdF9pbmNsdWRlX3Jld3JpdGluZyhzZWxmKToKLSAgICAgICAgIyBNYXBwaW5ncyB0
byBOb25lIGFyZSB1bmNoYW5nZWQKLSAgICAgICAgc3R5bGVzID0gewotICAgICAgICAgICAgImZh
aWwuY3NzIjogTm9uZSwKLSAgICAgICAgICAgICJyZXNvdXJjZXMvc3R5bGVzaGVldC5jc3MiOiBO
b25lLAotICAgICAgICAgICAgIi4uL3Jlc291cmNlcy9zdHlsZS5jc3MiOiBOb25lLAotICAgICAg
ICB9Ci0gICAgICAgIHNjcmlwdHMgPSB7Ci0gICAgICAgICAgICAiLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIjogIi4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyIsCi0gICAgICAg
ICAgICAiLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI6ICIuLi8uLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIiwKLSAgICAgICAgICAgICIuLi9yZXNvdXJjZXMvZGVza3RvcC1nbC1j
b25zdGFudHMuanMiOiAicmVzb3VyY2VzL2Rlc2t0b3AtZ2wtY29uc3RhbnRzLmpzIiwKLQotICAg
ICAgICAgICAgInJlc291cmNlcy9zaGFkb3ctb2Zmc2V0LmpzIjogTm9uZSwKLSAgICAgICAgICAg
ICIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LWFzeW5jLmpzIjogTm9uZSwKLSAgICAgICAgfQot
Ci0gICAgICAgIGlucHV0X3RleHQgPSAiIgotICAgICAgICBvdXRwdXRfdGV4dCA9ICIiCi0gICAg
ICAgIGZvciBpbnB1dCwgb3V0cHV0IGluIHN0eWxlcy5pdGVtcygpOgotICAgICAgICAgICAgaW5w
dXRfdGV4dCArPSBjb25zdHJ1Y3Rfc3R5bGUoaW5wdXQpCi0gICAgICAgICAgICBvdXRwdXRfdGV4
dCArPSBjb25zdHJ1Y3Rfc3R5bGUob3V0cHV0IGlmIG91dHB1dCBlbHNlIGlucHV0KQotICAgICAg
ICBmb3IgaW5wdXQsIG91dHB1dCBpbiBzY3JpcHRzLml0ZW1zKCk6Ci0gICAgICAgICAgICBpbnB1
dF90ZXh0ICs9IGNvbnN0cnVjdF9zY3JpcHQoaW5wdXQpCi0gICAgICAgICAgICBvdXRwdXRfdGV4
dCArPSBjb25zdHJ1Y3Rfc2NyaXB0KG91dHB1dCBpZiBvdXRwdXQgZWxzZSBpbnB1dCkKLQotICAg
ICAgICBoZWFkID0gJzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VO
Ij5cbjxodG1sPlxuPGhlYWQ+XG4nCi0gICAgICAgIGZvb3QgPSAnPC9oZWFkPlxuPGJvZHk+XG48
L2JvZHk+XG48L2h0bWw+JwotICAgICAgICBpbnB1dF90ZXh0ID0gaGVhZCArIGlucHV0X3RleHQg
KyBmb290Ci0gICAgICAgIG91dHB1dF90ZXh0ID0gaGVhZCArIG91dHB1dF90ZXh0ICsgZm9vdAot
ICAgICAgICBzZWxmLmFzc2VydF90cmFuc2xhdGUoaW5wdXRfdGV4dCwgb3V0cHV0X3RleHQpCmRp
ZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3VwZGF0ZV93ZWJnbF9jb25mb3JtYW5j
ZV90ZXN0c19saWIvbWFpbi5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdXBkYXRlX3dlYmds
X2NvbmZvcm1hbmNlX3Rlc3RzX2xpYi9tYWluLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQwNjliYzQyY2JjYzQ5
YTYwODJiNDdjZGFiMjUxZWU4YTg2YzNmMjUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3VwZGF0ZV93ZWJnbF9jb25mb3JtYW5jZV90ZXN0c19saWIvbWFpbi5weQpA
QCAtMCwwICsxLDI4MCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworIyBDb3B5cmlnaHQgKEMp
IDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisj
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisKKyIiIkdlbmVyYXRlcyBXZWJLaXQgV2ViR0wgbGF5b3V0IHRlc3RzIGZyb20gdGhlIEtocm9u
b3MgV2ViR0wgY29uZm9ybWFuY2UgdGVzdHMKKworIFRvIHVzZSB0aGlzLCBnZXQgYSBjb3B5IG9m
IHRoZSBXZWJHTCBjb25mb3JtYW5jZSB0ZXN0cyB0aGVuIHJ1biB0aGlzIHNjcmlwdAorIGVnLgor
ICAgY2Qgfi90ZW1wCisgICBnaXQgY2xvbmUgZ2l0Oi8vZ2l0aHViLmNvbS9LaHJvbm9zR3JvdXAv
V2ViR0wuZ2l0CisgICBta2RpciBiYWNrdXAKKyAgIG12IH4vV2ViS2l0L0xheW91dFRlc3RzL3dl
YmdsL3sxLjAuNCwyLjAuMSxyZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlc30gYmFja3VwCisgICBn
ZW5lcmF0ZS13ZWJnbC10ZXN0cyB+L3RlbXAvV2ViR0wKKyAgIHJ1bi13ZWJraXQtdGVzdHMgLS1k
ZWJ1ZyAtLXdlYmdsIC0tb3JkZXI9cmFuZG9tIHdlYmdsCisgICBydW4td2Via2l0LXRlc3RzIC0t
cmVsZWFzZSAtLXdlYmdsIC0tb3JkZXI9cmFuZG9tIHdlYmdsCisgICBjaGVjay1mb3ItZHVwbGlj
YXRlZC1wbGF0Zm9ybS10ZXN0LXJlc3VsdHMgLW4gMj4mMSB8IGdyZXAgd2ViZ2wKKyAgIFsgVXBk
YXRlIFRlc3RFeHBlY3RhdGlvbnMgXQorICAgWyBDaGVjayBpbiB0aGUgcmVzdWx0IF0KKyIiIgor
CisjIE5vdGU6IFRoZSBzY3JpcHQgaXMgY3VycmVudGx5IG5vdCB0ZXN0ZWQgdG8gYmUgcnVuIG9u
IFdpbmRvd3MuCisjCisjIFRvIGFkZCBhIG5ldyBXZWJHTCB0ZXN0IHN1aXRlLCBlZGl0IHRoZSBt
YWluKCkuCisjCisjIHB5dGhvbjMgLW0gbXlweSBtYWluLnB5ICYmIHB5dGhvbjMgLW0gYmxhY2sg
bWFpbi5weSAtLWxpbmUtbGVuZ3RoIDIwMAorCitpbXBvcnQgYXJncGFyc2UKK2ltcG9ydCBvcwor
aW1wb3J0IHNodXRpbAoraW1wb3J0IHN5cworCitmcm9tIGRpc3R1dGlscy52ZXJzaW9uIGltcG9y
dCBTdHJpY3RWZXJzaW9uIGFzIFZlcnNpb24KK2Zyb20gZm5tYXRjaCBpbXBvcnQgZm5tYXRjaAor
ZnJvbSBwYXRobGliIGltcG9ydCBQYXRoCitmcm9tIHR5cGluZyBpbXBvcnQgQ2FsbGFibGUsIFR1
cGxlLCBJdGVyYWJsZSwgVW5pb24sIE5hbWVkVHVwbGUsIE9wdGlvbmFsLCBHZW5lcmF0b3IKKwor
X3Rvb2xfZGlyID0gUGF0aChfX2ZpbGVfXykucGFyZW50CitfbGF5b3V0X3Rlc3RzX2RpciA9IFBh
dGgoX19maWxlX18pLnBhcmVudC5wYXJlbnQucGFyZW50LnBhcmVudC5wYXJlbnQgLyAiTGF5b3V0
VGVzdHMiCisKK191c2VfdmVyYm9zZV9vdXRwdXQgPSBGYWxzZQorCitfSWdub3JlZEZpbGVuYW1l
TWF0Y2hlciA9IENhbGxhYmxlW1tQYXRoXSwgYm9vbF0KKworCisjIENyZWF0ZXMgYW4gaWdub3Jl
IGZpbGUgbmFtZSBwYXR0ZXJuIG1hdGNoZXIgYmFzZWQgb24gbGlzdCBvZiBtYXRjaCBydWxlcy4K
KyMgUnVsZSBpdGVyYXRpb24gb3JkZXIgaXMgdGhlIG9yZGVyIG9mIGxlYXN0IHNwZWNpZmljIHRv
IG1vc3Qgc3BlY2lmaWMgcnVsZS4KKyMgRW1wdHkgbGlzdCBtZWFucyBkbyBub3QgaWdub3JlLgor
IyBJZiBydWxlIGlzIHN0ciBhbmQgaXQgbWF0Y2hlcywgaXQgbWVhbnMgaWdub3JlIGlmIG5vIG1v
cmUgc3BlY2lmaWMgcnVsZSBtYXRjaGVzLgorIyBJZiBydWxlIGlzIGEgdHVwbGUgYW5kIGl0cyBm
aXJzdCBlbGVtZW50IG1hdGNoZXMsIGl0IGl0IG1lYW5zIGRvIG5vdCBpZ25vcmUgaWYgbm8gbW9y
ZSBzcGVjaWZpYyBydWxlIG1hdGNoZXMuCitkZWYgX21ha2VfaWdub3JlX2ZubWF0Y2hfcnVsZV9t
YXRjaGVyKHJ1bGVzOiBJdGVyYWJsZVtVbmlvbltzdHIsIFR1cGxlW3N0cl1dXSkgLT4gX0lnbm9y
ZWRGaWxlbmFtZU1hdGNoZXI6CisgICAgZGVmIG1hdGNoX3J1bGVzKG5hbWU6IFBhdGgpIC0+IGJv
b2w6CisgICAgICAgIHNob3VsZF9maWx0ZXIgPSBOb25lCisgICAgICAgIGZvciBydWxlIGluIHJ1
bGVzOgorICAgICAgICAgICAgcGF0dGVybjogc3RyID0gcnVsZSBpZiBpc2luc3RhbmNlKHJ1bGUs
IHN0cikgZWxzZSBydWxlWzBdCisgICAgICAgICAgICBpZiBmbm1hdGNoKHN0cihuYW1lKSwgcGF0
dGVybik6CisgICAgICAgICAgICAgICAgc2hvdWxkX2ZpbHRlciA9IGlzaW5zdGFuY2UocnVsZSwg
c3RyKQorICAgICAgICByZXR1cm4gc2hvdWxkX2ZpbHRlciBpcyBUcnVlCisKKyAgICByZXR1cm4g
bWF0Y2hfcnVsZXMKKworCitfY29uZm9ybWFuY2VfcGF0dGVybnMgPSBfbWFrZV9pZ25vcmVfZm5t
YXRjaF9ydWxlX21hdGNoZXIoCisgICAgWworICAgICAgICAiLmdpdCIsCisgICAgICAgICIqLnB5
YyIsCisgICAgICAgICJ0bXAqIiwKKyAgICAgICAgIiovcHkvKiIsCisgICAgICAgICIqLnB5IiwK
KyAgICAgICAgIiovcGVyZm9ybWFuY2UvKiIsCisgICAgICAgICIqLyoubWQiLAorICAgICAgICAi
Ki9leHRyYS8qIiwKKyAgICAgICAgIiovMDBfdGVzdF9saXN0LnR4dCIsCisgICAgICAgICIqL0NP
TkZPUk1BTkNFX1JVTEVTLnR4dCIsCisgICAgICAgICIqL2RlcXAvYnVpbGQucHkiLAorICAgICAg
ICAiKi9kZXFwL2NvbXBpbGVyX2FkZGl0aW9uYWxfZXh0ZXJuLmpzIiwKKyAgICAgICAgIiovZGVx
cC9jb21waWxlci5qYXIiLAorICAgICAgICAiKi9kZXFwL2dlbkhUTUxmcm9tVGVzdC5weSIsCisg
ICAgICAgICIqL2RlcXAvcnVuLWNsb3N1cmUuc2giLAorICAgICAgICAiKi9kZXFwL3RlbXBfZXh0
ZXJucyoiLAorICAgICAgICAiKi9kZXFwL3Rlc3Qtd2ViZ2wyLmpzIiwKKyAgICAgICAgIiovZGVx
cC90ZXN0LXdlYmdsMi5zaCIsCisgICAgXQorKQorCisKK2RlZiBfY29weV90cmVlKHNyYzogUGF0
aCwgZHN0OiBQYXRoLCBpZ25vcmU6IE9wdGlvbmFsW19JZ25vcmVkRmlsZW5hbWVNYXRjaGVyXSA9
IE5vbmUpOgorICAgICIiIlJlY3Vyc2l2ZWx5IGNvcHkgYSBkaXJlY3RvcnkgdHJlZSIiIgorICAg
IG5hbWVzID0gb3MubGlzdGRpcihzcmMpCisgICAgZm9yIG5hbWUgaW4gbmFtZXM6CisgICAgICAg
IHNyY19uYW1lID0gc3JjIC8gbmFtZQorICAgICAgICBkc3RfbmFtZSA9IGRzdCAvIG5hbWUKKwor
ICAgICAgICBpZiBzcmNfbmFtZS5pc19kaXIoKToKKyAgICAgICAgICAgIF9jb3B5X3RyZWUoc3Jj
X25hbWUsIGRzdF9uYW1lLCBpZ25vcmUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBpZiBp
Z25vcmUgaXMgbm90IE5vbmUgYW5kIGlnbm9yZShzcmNfbmFtZSk6CisgICAgICAgICAgICAgICAg
aWYgX3VzZV92ZXJib3NlX291dHB1dDoKKyAgICAgICAgICAgICAgICAgICAgcHJpbnQoIklnbm9y
aW5nOiAlcyIgJSAoc3JjX25hbWUpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAg
ICAgICBpZiBfdXNlX3ZlcmJvc2Vfb3V0cHV0OgorICAgICAgICAgICAgICAgIHByaW50KCJDb3B5
aW5nOiAlcyAtPiAlcyIgJSAoc3JjX25hbWUsIGRzdF9uYW1lKSkKKyAgICAgICAgICAgIGRzdC5t
a2RpcihwYXJlbnRzPVRydWUsIGV4aXN0X29rPVRydWUpCisgICAgICAgICAgICBzaHV0aWwuY29w
eWZpbGUoc3JjX25hbWUsIGRzdF9uYW1lKQorCisKK2NsYXNzIF9XZWJHTFRlc3QoTmFtZWRUdXBs
ZSk6CisgICAgcGF0aDogUGF0aAorICAgIG1pbl92ZXJzaW9uOiBWZXJzaW9uCisgICAgbWF4X3Zl
cnNpb246IFZlcnNpb24KKworCitkZWYgX3BhcnNlX3dlYmdsX3Rlc3RzKHRlc3RfbGlzdF9yb290
OiBQYXRoLCB0ZXN0X2xpc3Q6IFBhdGgsIG1pbl92ZXJzaW9uOiBWZXJzaW9uLCBtYXhfdmVyc2lv
bjogVmVyc2lvbikgLT4gR2VuZXJhdG9yW19XZWJHTFRlc3QsIE5vbmUsIE5vbmVdOgorICAgIHBy
ZWZpeCA9IHRlc3RfbGlzdC5wYXJlbnQKKyAgICB3aXRoIHRlc3RfbGlzdC5vcGVuKCJyIikgYXMg
ZjoKKyAgICAgICAgbGluZXMgPSBmLnJlYWRsaW5lcygpCisgICAgZm9yIGxpbmVfbnVtYmVyLCBs
aW5lIGluIGVudW1lcmF0ZShsaW5lcyk6CisgICAgICAgIGxpbmUgPSBsaW5lLnN0cmlwKCkKKyAg
ICAgICAgaWYgbGVuKGxpbmUpIDw9IDAgb3IgbGluZS5zdGFydHN3aXRoKCIjIikgb3IgbGluZS5z
dGFydHN3aXRoKCI7Iikgb3IgbGluZS5zdGFydHN3aXRoKCIvLyIpOgorICAgICAgICAgICAgY29u
dGludWUKKyAgICAgICAgdGVzdF9taW5fdmVyc2lvbiA9IG1pbl92ZXJzaW9uCisgICAgICAgIHRl
c3RfbWF4X3ZlcnNpb24gPSBtYXhfdmVyc2lvbgorICAgICAgICB0ZXN0X25hbWUgPSAiIgorICAg
ICAgICBhcmdzID0gaXRlcihsaW5lLnNwbGl0KCkpCisgICAgICAgIGZvciBhcmcgaW4gYXJnczoK
KyAgICAgICAgICAgIGlmIGFyZy5zdGFydHN3aXRoKCItIik6CisgICAgICAgICAgICAgICAgaWYg
YXJnID09ICItLXNsb3ciOgorICAgICAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICAg
ICAgZWxpZiBhcmcgPT0gIi0tbWluLXZlcnNpb24iOgorICAgICAgICAgICAgICAgICAgICB0ZXN0
X21pbl92ZXJzaW9uID0gVmVyc2lvbihuZXh0KGFyZ3MpKQorICAgICAgICAgICAgICAgIGVsaWYg
YXJnID09ICItLW1heC12ZXJzaW9uIjoKKyAgICAgICAgICAgICAgICAgICAgdGVzdF9tYXhfdmVy
c2lvbiA9IFZlcnNpb24obmV4dChhcmdzKSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAg
ICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIiVzOiVkIHVua25vd24gb3B0aW9uICclcyci
ICUgKHRlc3RfbGlzdCwgbGluZV9udW1iZXIsIGFyZykpCisgICAgICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgICAgIHRlc3RfbmFtZSArPSBhcmcKKworICAgICAgICBpZiB0ZXN0X25hbWUuZW5k
c3dpdGgoIi50eHQiKToKKyAgICAgICAgICAgIGZvciByIGluIF9wYXJzZV93ZWJnbF90ZXN0cyh0
ZXN0X2xpc3Rfcm9vdCwgcHJlZml4IC8gdGVzdF9uYW1lLCB0ZXN0X21pbl92ZXJzaW9uLCB0ZXN0
X21heF92ZXJzaW9uKToKKyAgICAgICAgICAgICAgICB5aWVsZCByCisgICAgICAgIGVsc2U6Cisg
ICAgICAgICAgICB5aWVsZCBfV2ViR0xUZXN0KAorICAgICAgICAgICAgICAgIChwcmVmaXggLyB0
ZXN0X25hbWUpLnJlbGF0aXZlX3RvKHRlc3RfbGlzdF9yb290KSwKKyAgICAgICAgICAgICAgICBt
aW5fdmVyc2lvbiwKKyAgICAgICAgICAgICAgICBtYXhfdmVyc2lvbiwKKyAgICAgICAgICAgICkK
KworCitkZWYgX2ZpbHRlcl93ZWJnbF90ZXN0X3BhdGhzX2Zvcl9zdWl0ZV92ZXJzaW9uKHRlc3Rz
OiBJdGVyYWJsZVtfV2ViR0xUZXN0XSwgc3VpdGVfdmVyc2lvbjogVmVyc2lvbikgLT4gR2VuZXJh
dG9yW1BhdGgsIE5vbmUsIE5vbmVdOgorICAgIGZvciB0ZXN0IGluIHRlc3RzOgorICAgICAgICBp
ZiB0ZXN0Lm1pbl92ZXJzaW9uIDw9IHN1aXRlX3ZlcnNpb24gYW5kIHRlc3QubWF4X3ZlcnNpb24g
Pj0gc3VpdGVfdmVyc2lvbjoKKyAgICAgICAgICAgIGlmIF91c2VfdmVyYm9zZV9vdXRwdXQ6Cisg
ICAgICAgICAgICAgICAgcHJpbnQoZiJVc2luZyB0ZXN0OiB7dGVzdC5wYXRofSB7dGVzdC5taW5f
dmVyc2lvbn0gPD0ge3N1aXRlX3ZlcnNpb259IDw9IHt0ZXN0Lm1heF92ZXJzaW9ufSIpCisgICAg
ICAgICAgICB5aWVsZCB0ZXN0LnBhdGgKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGlmIF91
c2VfdmVyYm9zZV9vdXRwdXQ6CisgICAgICAgICAgICAgICAgcHJpbnQoZiJJZ25vcmluZyB0ZXN0
OiB7dGVzdC5wYXRofSB7dGVzdC5taW5fdmVyc2lvbn0gPD0ge3N1aXRlX3ZlcnNpb259IDw9IHt0
ZXN0Lm1heF92ZXJzaW9ufSIpCisKKworZGVmIF9jb3B5X3dlYmdsX3Rlc3RfZmlsZXMoCisgICAg
c291cmNlX3Rlc3RzX2RpcjogUGF0aCwKKyAgICBzb3VyY2VfcGF0dGVybnM6IF9JZ25vcmVkRmls
ZW5hbWVNYXRjaGVyLAorICAgIHRhcmdldF9kaXI6IFBhdGgsCispOgorICAgIHRhcmdldF90ZXN0
X2ZpbGVzX2RpciA9IHRhcmdldF9kaXIgLyAicmVzb3VyY2VzIiAvICJ3ZWJnbF90ZXN0X2ZpbGVz
IgorICAgIF9jb3B5X3RyZWUoc291cmNlX3Rlc3RzX2RpciwgdGFyZ2V0X3Rlc3RfZmlsZXNfZGly
LCBzb3VyY2VfcGF0dGVybnMpCisKKworZGVmIF9nZW5lcmF0ZV93ZWJraXRfd2ViZ2xfdGVzdHMo
CisgICAgc291cmNlX3Rlc3RzX2RpcjogUGF0aCwKKyAgICBzdWl0ZV92ZXJzaW9uOiBWZXJzaW9u
LAorICAgIHVzZV93ZWJnbDJfY29udGV4dDogYm9vbCwKKyAgICB0YXJnZXRfZGlyOiBQYXRoLAor
KToKKyAgICB0YXJnZXRfdGVzdF9maWxlc19kaXIgPSB0YXJnZXRfZGlyIC8gInJlc291cmNlcyIg
LyAid2ViZ2xfdGVzdF9maWxlcyIKKworICAgIHNvdXJjZV9qc190ZXN0X2hhcm5lc3MgPSBfdG9v
bF9kaXIgLyAid2Via2l0LXdlYmdsLXRlc3QtaGFybmVzcy10ZW1wbGF0ZS5qcyIKKyAgICB0YXJn
ZXRfanNfdGVzdF9oYXJuZXNzID0gdGFyZ2V0X2RpciAvICJyZXNvdXJjZXMiIC8gIndlYmtpdC13
ZWJnbC10ZXN0LWhhcm5lc3MuanMiCisgICAgdGFyZ2V0X2pzX3Rlc3RfaGFybmVzcy5wYXJlbnQu
bWtkaXIocGFyZW50cz1UcnVlLCBleGlzdF9vaz1UcnVlKQorICAgIHNodXRpbC5jb3B5ZmlsZShz
b3VyY2VfanNfdGVzdF9oYXJuZXNzLCB0YXJnZXRfanNfdGVzdF9oYXJuZXNzKQorCisgICAgdGVz
dF90ZW1wbGF0ZSA9IChfdG9vbF9kaXIgLyAid2ViZ2wtdGVzdC1kcml2ZXItdGVtcGxhdGUuaHRt
bCIpLnJlYWRfdGV4dCgpCisgICAgZXhwZWN0YXRpb25fdGVtcGxhdGUgPSAoX3Rvb2xfZGlyIC8g
IndlYmdsLWV4cGVjdGF0aW9uLXRlbXBsYXRlLnR4dCIpLnJlYWRfdGV4dCgpCisKKyAgICB0ZXN0
cyA9IF9wYXJzZV93ZWJnbF90ZXN0cyhzb3VyY2VfdGVzdHNfZGlyLCAoc291cmNlX3Rlc3RzX2Rp
ciAvICIwMF90ZXN0X2xpc3QudHh0IiksIHN1aXRlX3ZlcnNpb24sIHN1aXRlX3ZlcnNpb24pCisK
KyAgICB0YXJnZXRfdGVzdHNfZGlyID0gdGFyZ2V0X2RpciAvIHN0cihzdWl0ZV92ZXJzaW9uKQor
ICAgIGZvciB0ZXN0X3BhdGggaW4gX2ZpbHRlcl93ZWJnbF90ZXN0X3BhdGhzX2Zvcl9zdWl0ZV92
ZXJzaW9uKHRlc3RzLCBzdWl0ZV92ZXJzaW9uKToKKyAgICAgICAgdGFyZ2V0X3Rlc3QgPSB0YXJn
ZXRfdGVzdHNfZGlyIC8gdGVzdF9wYXRoCisgICAgICAgIHRhcmdldF90ZXN0X2ltcGwgPSB0YXJn
ZXRfdGVzdF9maWxlc19kaXIgLyB0ZXN0X3BhdGgKKyAgICAgICAgaWYgbm90IHRhcmdldF90ZXN0
X2ltcGwuZXhpc3RzKCk6CisgICAgICAgICAgICBpZiBfdXNlX3ZlcmJvc2Vfb3V0cHV0OgorICAg
ICAgICAgICAgICAgIHByaW50KGYiSWdub3JpbmcgdGVzdDoge3Rlc3RfcGF0aH0sIGltcGxlbWVu
dGF0aW9uIGRvZXMgbm90IGV4aXN0IGF0IHt0YXJnZXRfdGVzdF9pbXBsfSIpCisgICAgICAgICAg
ICBjb250aW51ZQorICAgICAgICB0ZXN0X3RvX2ltcGwgPSBvcy5wYXRoLnJlbHBhdGgodGFyZ2V0
X3Rlc3RfaW1wbCwgdGFyZ2V0X3Rlc3QucGFyZW50KQorICAgICAgICB0ZXN0X2ZpbGVfdXJsID0g
ZiJ7dGVzdF90b19pbXBsfT93ZWJnbFZlcnNpb249MiIgaWYgdXNlX3dlYmdsMl9jb250ZXh0IGVs
c2UgdGVzdF90b19pbXBsCisgICAgICAgIHN1YnMgPSB7InRlc3RfZmlsZV91cmwiOiB0ZXN0X2Zp
bGVfdXJsLCAidGVzdF9uYW1lIjogdGVzdF9wYXRoLm5hbWUsICJ3ZWJnbF90b3BfbGV2ZWxfdXJs
Ijogb3MucGF0aC5yZWxwYXRoKHRhcmdldF9kaXIsIHRhcmdldF90ZXN0LnBhcmVudCl9CisgICAg
ICAgIHRhcmdldF90ZXN0LnBhcmVudC5ta2RpcihwYXJlbnRzPVRydWUsIGV4aXN0X29rPVRydWUp
CisgICAgICAgIHRhcmdldF90ZXN0LndyaXRlX3RleHQodGVzdF90ZW1wbGF0ZSAlIHN1YnMpCisg
ICAgICAgIGV4cGVjdGF0aW9uID0gdGFyZ2V0X3Rlc3QucGFyZW50IC8gZiJ7dGFyZ2V0X3Rlc3Qu
c3RlbX0tZXhwZWN0ZWQudHh0IgorICAgICAgICBleHBlY3RhdGlvbi53cml0ZV90ZXh0KGV4cGVj
dGF0aW9uX3RlbXBsYXRlICUgc3VicykKKworCitkZWYgX2ZpbmRfZXhwZWN0YXRpb25zX2Zvcl9y
ZW1vdmVkX3Rlc3RzKGxheW91dF90ZXN0c19kaXI6IFBhdGgpOgorICAgIHRlc3RfcHJlZml4ZXMg
PSBzZXQoKQorICAgIGV4cGVjdGF0aW9ucyA9IHNldCgpCisgICAgZm9yIHJvb3QsIF8sIGZpbGVz
IGluIG9zLndhbGsobGF5b3V0X3Rlc3RzX2Rpcik6CisgICAgICAgIGZvciBmaWxlX25hbWUgaW4g
ZmlsZXM6CisgICAgICAgICAgICByZWxhdGl2ZV9wYXRoID0gKFBhdGgocm9vdCkgLyBmaWxlX25h
bWUpLnJlbGF0aXZlX3RvKGxheW91dF90ZXN0c19kaXIpCisgICAgICAgICAgICBpZiByZWxhdGl2
ZV9wYXRoLnN0ZW0uZW5kc3dpdGgoIi1leHBlY3RlZCIpOgorICAgICAgICAgICAgICAgIGV4cGVj
dGF0aW9ucy5hZGQocmVsYXRpdmVfcGF0aCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAg
ICAgICAgdGVzdF9wcmVmaXhlcy5hZGQocmVsYXRpdmVfcGF0aC5wYXJlbnQgLyByZWxhdGl2ZV9w
YXRoLnN0ZW0pCisgICAgb2xkX2V4cGVjdGF0aW9ucyA9IHNldChbXSkKKyAgICBmb3IgZXhwZWN0
YXRpb24gaW4gZXhwZWN0YXRpb25zOgorICAgICAgICB0ZXN0X3BhdGggPSBleHBlY3RhdGlvbi5w
YXJlbnQKKyAgICAgICAgd2hpbGUgbGVuKHRlc3RfcGF0aC5wYXJ0cykgPj0gMToKKyAgICAgICAg
ICAgIHRlc3RfcHJlZml4ID0gdGVzdF9wYXRoIC8gZXhwZWN0YXRpb24uc3RlbVs6IC1sZW4oIi1l
eHBlY3RlZCIpXQorICAgICAgICAgICAgaWYgdGVzdF9wcmVmaXggaW4gdGVzdF9wcmVmaXhlczoK
KyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgdGVzdF9wYXRoID0gUGF0aCgiLyIu
am9pbih0ZXN0X3BhdGgucGFydHNbMTpdKSkKKyAgICAgICAgaWYgbGVuKHRlc3RfcGF0aC5wYXJ0
cykgPCAxOgorICAgICAgICAgICAgb2xkX2V4cGVjdGF0aW9ucy5hZGQoZXhwZWN0YXRpb24pCisg
ICAgcmV0dXJuIG9sZF9leHBlY3RhdGlvbnMKKworCitkZWYgbWFpbigpOgorICAgIHBhcnNlciA9
IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKGRlc2NyaXB0aW9uPV9fZG9jX18sIGZvcm1hdHRlcl9j
bGFzcz1hcmdwYXJzZS5SYXdUZXh0SGVscEZvcm1hdHRlcikKKyAgICBwYXJzZXIuYWRkX2FyZ3Vt
ZW50KCItdiIsICItLXZlcmJvc2UiLCBhY3Rpb249InN0b3JlX3RydWUiLCBoZWxwPSJwcmludCB2
ZXJib3NlIG91dHB1dC4iKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIndlYmdsX3JlcG9zaXRv
cnkiLCBoZWxwPSJwYXRoIHRvIFdlYkdMIGNvbmZvcm1hbmNlIHRlc3QgcmVwb3NpdG9yeSByb290
LiIpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgIi1sIiwKKyAgICAgICAgIi0t
bGF5b3V0LXRlc3RzLWRpciIsCisgICAgICAgIGhlbHA9ImJhc2UgZGlyZWN0b3J5IGZvciBzZWFy
Y2hpbmcgZm9yIHBsYXRmb3JtIHNwZWNpZmljIHRlc3RzLiBEZWZhdWx0cyB0byBMYXlvdXRUZXN0
cy4iLAorICAgICAgICBkZWZhdWx0PV9sYXlvdXRfdGVzdHNfZGlyLAorICAgICkKKworICAgIG9w
dGlvbnMgPSBwYXJzZXIucGFyc2VfYXJncygpCisgICAgZ2xvYmFsIF91c2VfdmVyYm9zZV9vdXRw
dXQKKyAgICBfdXNlX3ZlcmJvc2Vfb3V0cHV0ID0gb3B0aW9ucy52ZXJib3NlIG9yIEZhbHNlCisg
ICAgc291cmNlX2RpciA9IFBhdGgob3B0aW9ucy53ZWJnbF9yZXBvc2l0b3J5KQorICAgIHRhcmdl
dF9kaXIgPSBQYXRoKG9wdGlvbnMubGF5b3V0X3Rlc3RzX2RpcikgLyAid2ViZ2wiCisKKyAgICBf
Y29weV93ZWJnbF90ZXN0X2ZpbGVzKHNvdXJjZV90ZXN0c19kaXI9c291cmNlX2RpciAvICJzZGsi
IC8gInRlc3RzIiwgc291cmNlX3BhdHRlcm5zPV9jb25mb3JtYW5jZV9wYXR0ZXJucywgdGFyZ2V0
X2Rpcj10YXJnZXRfZGlyKQorICAgIF9nZW5lcmF0ZV93ZWJraXRfd2ViZ2xfdGVzdHMoc291cmNl
X3Rlc3RzX2Rpcj1zb3VyY2VfZGlyIC8gInNkayIgLyAidGVzdHMiLCBzdWl0ZV92ZXJzaW9uPVZl
cnNpb24oIjEuMC40IiksIHVzZV93ZWJnbDJfY29udGV4dD1GYWxzZSwgdGFyZ2V0X2Rpcj10YXJn
ZXRfZGlyKQorICAgIF9nZW5lcmF0ZV93ZWJraXRfd2ViZ2xfdGVzdHMoc291cmNlX3Rlc3RzX2Rp
cj1zb3VyY2VfZGlyIC8gInNkayIgLyAidGVzdHMiLCBzdWl0ZV92ZXJzaW9uPVZlcnNpb24oIjIu
MC4xIiksIHVzZV93ZWJnbDJfY29udGV4dD1UcnVlLCB0YXJnZXRfZGlyPXRhcmdldF9kaXIpCisg
ICAgbGF5b3V0X3Rlc3RzX2RpciA9IFBhdGgob3B0aW9ucy5sYXlvdXRfdGVzdHNfZGlyKQorCisg
ICAgb2xkX2V4cGVjdGF0aW9ucyA9IF9maW5kX2V4cGVjdGF0aW9uc19mb3JfcmVtb3ZlZF90ZXN0
cyhsYXlvdXRfdGVzdHNfZGlyKQorICAgIG9sZF9leHBlY3RhdGlvbnMgPSBbZSBmb3IgZSBpbiBv
bGRfZXhwZWN0YXRpb25zIGlmICJ3ZWJnbCIgaW4gc3RyKGUpXQorICAgIGlmIG9sZF9leHBlY3Rh
dGlvbnM6CisgICAgICAgIHByaW50KCJPbGQgZXhwZWN0YXRpb25zIG1heWJlIGZvdW5kLiBNYXli
ZSBkbzpcbiAgICBnaXQgcm0gIiArICIgIi5qb2luKHNvcnRlZChbc3RyKChsYXlvdXRfdGVzdHNf
ZGlyIC8gZSkucmVsYXRpdmVfdG8obGF5b3V0X3Rlc3RzX2Rpci5wYXJlbnQpKSBmb3IgZSBpbiBv
bGRfZXhwZWN0YXRpb25zXSkpKQorCisKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAg
c3lzLmV4aXQobWFpbigpKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS91cGRh
dGVfd2ViZ2xfY29uZm9ybWFuY2VfdGVzdHNfbGliL3dlYmdsLWV4cGVjdGF0aW9uLXRlbXBsYXRl
LnR4dCBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdXBkYXRlX3dlYmdsX2NvbmZvcm1hbmNlX3Rl
c3RzX2xpYi93ZWJnbC1leHBlY3RhdGlvbi10ZW1wbGF0ZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjEwYzU0
ODY2ZGUyZTYwNGRmYmNhMWQwODI5NDQ1YTBhZWFlYzg4OAotLS0gL2Rldi9udWxsCisrKyBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdXBkYXRlX3dlYmdsX2NvbmZvcm1hbmNlX3Rlc3RzX2xpYi93
ZWJnbC1leHBlY3RhdGlvbi10ZW1wbGF0ZS50eHQKQEAgLTAsMCArMSw0IEBACitUaGlzIHRlc3Qg
cnVucyB0aGUgV2ViR0wgVGVzdCBsaXN0ZWQgYmVsb3cgaW4gYW4gaWZyYW1lIGFuZCByZXBvcnRz
IFBBU1Mgb3IgRkFJTC4KKworVGVzdDogJSh0ZXN0X2ZpbGVfdXJsKXMKK1sgUEFTUyBdIEFsbCB0
ZXN0cyBwYXNzZWQKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdXBkYXRlX3dl
YmdsX2NvbmZvcm1hbmNlX3Rlc3RzX2xpYi93ZWJnbC10ZXN0LWRyaXZlci10ZW1wbGF0ZS5odG1s
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS91cGRhdGVfd2ViZ2xfY29uZm9ybWFuY2VfdGVzdHNf
bGliL3dlYmdsLXRlc3QtZHJpdmVyLXRlbXBsYXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTZhMjMyNzJk
YTFmMjAxNDBmNjk5ZDM1OGQwNmNjZWFmMzhhODhiNwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdXBkYXRlX3dlYmdsX2NvbmZvcm1hbmNlX3Rlc3RzX2xpYi93ZWJn
bC10ZXN0LWRyaXZlci10ZW1wbGF0ZS5odG1sCkBAIC0wLDAgKzEsMTggQEAKKzwhLS0gVGhpcyBm
aWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGJ5IFRvb2xzL1NjcmlwdHMvdXBkYXRlLXdlYmdsLWNvbmZv
cm1hbmNlLXRlc3RzLiBETyBOT1QgRURJVCAtLT4KKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBDb25mb3JtYW5jZSBU
ZXN0IFdyYXBwZXIgZm9yICUodGVzdF9uYW1lKXM8L3RpdGxlPgorPHNjcmlwdCB0eXBlPSJ0ZXh0
L2phdmFzY3JpcHQiIHNyYz0iJSh3ZWJnbF90b3BfbGV2ZWxfdXJsKXMvcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9
IiUod2ViZ2xfdG9wX2xldmVsX3VybClzL3Jlc291cmNlcy93ZWJraXQtd2ViZ2wtdGVzdC1oYXJu
ZXNzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGhpcyB0ZXN0IHJ1bnMgdGhl
IFdlYkdMIFRlc3QgbGlzdGVkIGJlbG93IGluIGFuIGlmcmFtZSBhbmQgcmVwb3J0cyBQQVNTIG9y
IEZBSUwuPC9wPgorVGVzdDogPGEgaHJlZj0iJSh0ZXN0X2ZpbGVfdXJsKXMiPiUodGVzdF9maWxl
X3VybClzPC9hPgorPGRpdiBpZD0iaWZyYW1lIj4KKzxpZnJhbWUgc3JjPSIlKHRlc3RfZmlsZV91
cmwpcyIgd2lkdGg9IjgwMCIgaGVpZ2h0PSI2MDAiPjwvaWZyYW1lPgorPC9kaXY+Cis8ZGl2IGlk
PSJyZXN1bHQiPjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS91cGRhdGVfd2ViZ2xfY29uZm9ybWFuY2VfdGVzdHNfbGliL3dlYmtpdC13
ZWJnbC10ZXN0LWhhcm5lc3MtdGVtcGxhdGUuanMgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Vw
ZGF0ZV93ZWJnbF9jb25mb3JtYW5jZV90ZXN0c19saWIvd2Via2l0LXdlYmdsLXRlc3QtaGFybmVz
cy10ZW1wbGF0ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jODYxNWJlNTAwYWI3ZTk2ODlkMjNlZWZlZWMxY2Zj
NmM0MDk0MDJlCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS91cGRh
dGVfd2ViZ2xfY29uZm9ybWFuY2VfdGVzdHNfbGliL3dlYmtpdC13ZWJnbC10ZXN0LWhhcm5lc3Mt
dGVtcGxhdGUuanMKQEAgLTAsMCArMSw3NyBAQAorInVzZSBzdHJpY3QiOworKGZ1bmN0aW9uKCkg
eworICB2YXIgbnVtRmFpbHVyZXMgPSAwOworICB2YXIgcmVzdWx0c0xpc3QgPSBudWxsOworICB2
YXIgcmVzdWx0TnVtID0gMTsKKworICBpZiAod2luZG93LnRlc3RSdW5uZXIgJiYgIXdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlciA9
IHdpbmRvdy50ZXN0UnVubmVyOworICB9CisKKyAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisKKyAgICAvLyBUdXJuIG9mZiBjb25z
b2xlIG1lc3NhZ2VzIGJlY2F1c2UgZm9yIHRoZSBXZWJHTCB0ZXN0cyB0aGV5IGFyZQorICAgIC8v
IEdQVSBjYXBhYmlsaXR5IGRlcGVuZGVudC4KKyAgICB3aW5kb3cuY29uc29sZS5sb2cgPSBmdW5j
dGlvbigpIHsgfTsKKyAgICB3aW5kb3cuY29uc29sZS5lcnJvciA9IGZ1bmN0aW9uKCkgeyB9Owor
ICB9CisKKworICBpZiAod2luZG93LmludGVybmFscykgeworICAgIHdpbmRvdy5pbnRlcm5hbHMu
c2V0dGluZ3Muc2V0V2ViR0xFcnJvcnNUb0NvbnNvbGVFbmFibGVkKGZhbHNlKTsKKyAgfQorCisg
IHZhciBsaXN0ID0gZnVuY3Rpb24obXNnLCBjb2xvcikgeworICAgIGlmICghcmVzdWx0c0xpc3Qp
IHsKKyAgICAgIHJlc3VsdHNMaXN0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidWwiKTsKKyAg
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5hcHBlbmRDaGlsZChyZXN1bHRz
TGlzdCk7CisgICAgfQorCisgICAgdmFyIGl0ZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJs
aSIpOworICAgIGl0ZW0uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobXNnKSk7
CisgICAgaWYgKGNvbG9yKSB7CisgICAgICBpdGVtLnN0eWxlLmNvbG9yID0gY29sb3I7CisgICAg
fQorCisgICAgcmVzdWx0c0xpc3QuYXBwZW5kQ2hpbGQoaXRlbSk7CisgIH0KKworICB2YXIgbG9n
ID0gZnVuY3Rpb24obXNnLCBjb2xvcikgeworICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJkaXYiKTsKKyAgICBkaXYuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5v
ZGUobXNnKSk7CisgICAgaWYgKGNvbG9yKSB7CisgICAgICBkaXYuc3R5bGUuY29sb3IgPSBjb2xv
cjsKKyAgICB9CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmFwcGVuZENo
aWxkKGRpdik7CisgIH07CisKKyAgd2luZG93LndlYmdsVGVzdEhhcm5lc3MgPSB7CisgICAgcmVw
b3J0UmVzdWx0czogZnVuY3Rpb24odXJsLCBzdWNjZXNzLCBtc2cpIHsKKyAgICAgIGlmIChzdWNj
ZXNzKSB7CisgICAgICAgIGxpc3QoYFsgJHtyZXN1bHROdW19OiBQQVNTIF0gJHttc2d9YCwgImdy
ZWVuIik7CisgICAgICB9IGVsc2UgeworICAgICAgICBsaXN0KGBbICR7cmVzdWx0TnVtfTogRkFJ
TCBdICR7bXNnfWAsICJyZWQiKTsKKyAgICAgICAgKytudW1GYWlsdXJlczsKKyAgICAgIH0KKwor
ICAgICAgKytyZXN1bHROdW07CisgICAgfSwKKworICAgIG5vdGlmeUZpbmlzaGVkOiBmdW5jdGlv
bih1cmwpIHsKKyAgICAgIHZhciBpZnJhbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaWZy
YW1lIik7CisgICAgICBpZiAobnVtRmFpbHVyZXMgPiAwKSB7CisgICAgICAgIGxvZyhgWyBGQUlM
IF0gJHtudW1GYWlsdXJlc30gZmFpbHVyZXMgcmVwb3J0ZWRgLCAicmVkIik7CisgICAgICB9IGVs
c2UgeworICAgICAgICByZXN1bHRzTGlzdC5pbm5lckhUTUwgPSAiIjsKKyAgICAgICAgaWZyYW1l
LmlubmVySFRNTCA9ICIiOworICAgICAgICBsb2coIlsgUEFTUyBdIEFsbCB0ZXN0cyBwYXNzZWQi
LCAiZ3JlZW4iKTsKKyAgICAgIH0KKworICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgeworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAg
ICB9CisgICAgfSwKKyAgfQorfSgpKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0M2NiOGM1ODcyN2RlNGYyNjZkZDY3ZGJk
ZmE2NmYzMTIyMTYyOWM2Li44OTY5ZTc4NDFiNjQ3N2IxNTM2YmNhMTcyNmIxYTc5ZjU4NTUxNWNl
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMDMtMTYgIEtpbW1vIEtpbm51bmVuICA8a2tp
bm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIFdlYkdMIGNvbmZvcm1hbmNlIHRlc3Qg
dXBkYXRlIHNjcmlwdCBtb3JlIHVzYWJsZSBhbmQgY29uc2lzdGVudAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzMTEyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgS2VubmV0aCBSdXNzZWxsLgorCisgICAgICAgIE1vdmUgdGhlIHNjcmlwdCBvdmVyIHRo
ZSBleGlzdGluZyBidXQgdW51c2VkIFRvb2xzL1NjcmlwdHMvdXBkYXRlLXdlYmdsLWNvbmZvcm1h
bmNlLXRlc3RzLgorCisgICAgICAgICogd2ViZ2wvZ2VuZXJhdGUtd2ViZ2wtdGVzdHM6IFJlbW92
ZWQuCisKIDIwMjEtMDMtMTUgIFJvYiBCdWlzICA8cmJ1aXNAaWdhbGlhLmNvbT4KIAogICAgICAg
ICBGaXggdGFibGUtZWxlbWVudC0wMDEuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvZ2VuZXJhdGUtd2ViZ2wtdGVzdHMgYi9MYXlvdXRUZXN0cy93ZWJnbC9nZW5lcmF0ZS13ZWJn
bC10ZXN0cwpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNWE5NWYyMDY3MmRlNTZkYzli
MGFkZTQwZjdjOGQ0MzEzOTU5ODgwZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJnbC9nZW5lcmF0ZS13ZWJnbC10ZXN0cworKysg
L2Rldi9udWxsCkBAIC0xLDI3MCArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24zCi0jIENv
cHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
Ci0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMg
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLQotIiIiZ2VuZXJhdGVzIHdlYmdsIGxheW91dCB0ZXN0cyBmcm9tIHRoZSBL
aHJvbm9zIFdlYkdMIENvbmZvcm1hbmNlIFRlc3RzIiIiCi0KLSMgVG8gdXNlIHRoaXMsIGdldCBh
IGNvcHkgb2YgdGhlIFdlYkdMIGNvbmZvcm1hbmNlIHRlc3RzIHRoZW4gcnVuIHRoaXMgc2NyaXB0
Ci0jIGVnLgotIwotIyAgIGNkIH4vdGVtcAotIyAgIGdpdCBjbG9uZSBnaXQ6Ly9naXRodWIuY29t
L0tocm9ub3NHcm91cC9XZWJHTC5naXQKLSMgICBjZCB+L1dlYktpdC9MYXlvdXRUZXN0cy93ZWJn
bAotIyAgIHB5dGhvbiBnZW5lcmF0ZS13ZWJnbC10ZXN0cy5weSAtdyB+L3RlbXAvV2ViR0wvc2Rr
L3Rlc3RzIC1lCi0jCi0jIE5vdyBjaGVjayBydW4gdGhlIExheW91dFRlc3RzLCB1cGRhdGUgVGVz
dEV4cGVjdGF0aW9ucyBhbmQgY2hlY2sgaW4gdGhlCi0jIHJlc3VsdC4KLQotaW1wb3J0IGNvcHkK
LWltcG9ydCBvcwotaW1wb3J0IG9zLnBhdGgKLWltcG9ydCBzeXMKLWltcG9ydCByZQotaW1wb3J0
IGpzb24KLWltcG9ydCBzaHV0aWwKLWZyb20gb3B0cGFyc2UgaW1wb3J0IE9wdGlvblBhcnNlcgot
Ci1pZiBzeXMudmVyc2lvbiA8ICcyLjYnOgotICBwcmludCAnV3JvbmcgUHl0aG9uIFZlcnNpb24g
ISEhOiBOZWVkID49IDIuNicKLSAgc3lzLmV4aXQoMSkKLQotCi1HTE9CQUxfT1BUSU9OUyA9IHsK
LSAgIyB2ZXJzaW9uIHVzZS4gVGVzdHMgYXQgb3IgYmVsb3cgdGhpcyB3aWxsIGJlIGluY2x1ZGVk
LgotICAidmVyc2lvbiI6ICIyLjAuMCIsCi0KLSAgIyB2ZXJzaW9uIHVzZWQgZm9yIHVubGFibGVk
IHRlc3RzCi0gICJkZWZhdWx0LXZlcnNpb24iOiAiMi4wIiwKLQotICAjIElmIHNldCwgdGhlIHZl
cnNpb24gd2UgcmVxdWlyZS4gVGVzdHMgYmVsb3cgdGhpcyB3aWxsIGJlIGlnbm9yZWQuCi0gICJt
aW4tdmVyc2lvbiI6ICIxLjAuMyIsCi19Ci0KLQotZGVmIFJlYWRGaWxlKGZpbGVuYW1lKToKLSAg
IiIiUmVhZHMgYSBmaWxlIGFzIGEgc3RyaW5nIiIiCi0gIGZpbGUgPSBvcGVuKGZpbGVuYW1lLCAi
ciIpCi0gIGRhdGEgPSBmaWxlLnJlYWQoKQotICBmaWxlLmNsb3NlKCkKLSAgcmV0dXJuIGRhdGEK
LQotCi1kZWYgV3JpdGVGaWxlKGZpbGVuYW1lLCBkYXRhKToKLSAgIiIiV3JpdGVzIGEgc3RyaW5n
IGFzIGEgZmlsZSIiIgotICBwcmludCAiV3JpdGluZzogIiwgZmlsZW5hbWUKLSAgZGlybmFtZSA9
IG9zLnBhdGguZGlybmFtZShmaWxlbmFtZSkKLSAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGRpcm5h
bWUpOgotICAgIG9zLm1ha2VkaXJzKGRpcm5hbWUpCi0gIGZpbGUgPSBvcGVuKGZpbGVuYW1lLCAi
d2IiKQotICBmaWxlLndyaXRlKGRhdGEpCi0gIGZpbGUuY2xvc2UoKQotCi0KLWRlZiBDb3B5VHJl
ZShzcmMsIGRzdCwgaWdub3JlPU5vbmUpOgotICAiIiJSZWN1cnNpdmVseSBjb3B5IGEgZGlyZWN0
b3J5IHRyZWUiIiIKLSAgbmFtZXMgPSBvcy5saXN0ZGlyKHNyYykKLSAgaWYgaWdub3JlIGlzIG5v
dCBOb25lOgotICAgIGlnbm9yZWRfbmFtZXMgPSBpZ25vcmUoc3JjLCBuYW1lcykKLSAgZWxzZToK
LSAgICBpZ25vcmVkX25hbWVzID0gc2V0KCkKLQotICBpZiBub3Qgb3MucGF0aC5leGlzdHMoZHN0
KToKLSAgICBvcy5tYWtlZGlycyhkc3QpCi0gIGVycm9ycyA9IFtdCi0gIGZvciBuYW1lIGluIG5h
bWVzOgotICAgIGlmIG5hbWUgaW4gaWdub3JlZF9uYW1lczoKLSAgICAgIGNvbnRpbnVlCi0gICAg
c3JjbmFtZSA9IG9zLnBhdGguam9pbihzcmMsIG5hbWUpCi0gICAgZHN0bmFtZSA9IG9zLnBhdGgu
am9pbihkc3QsIG5hbWUpCi0gICAgdHJ5OgotICAgICAgaWYgb3MucGF0aC5pc2RpcihzcmNuYW1l
KToKLSAgICAgICAgQ29weVRyZWUoc3JjbmFtZSwgZHN0bmFtZSwgaWdub3JlKQotICAgICAgZWxz
ZToKLSAgICAgICAgIyBXaWxsIHJhaXNlIGEgU3BlY2lhbEZpbGVFcnJvciBmb3IgdW5zdXBwb3J0
ZWQgZmlsZSB0eXBlcwotICAgICAgICBzaHV0aWwuY29weWZpbGUoc3JjbmFtZSwgZHN0bmFtZSkK
LSAgICAjIGNhdGNoIHRoZSBFcnJvciBmcm9tIHRoZSByZWN1cnNpdmUgY29weXRyZWUgc28gdGhh
dCB3ZSBjYW4KLSAgICAjIGNvbnRpbnVlIHdpdGggb3RoZXIgZmlsZXMKLSAgICBleGNlcHQgRXJy
b3IsIGVycjoKLSAgICAgIGVycm9ycy5leHRlbmQoZXJyLmFyZ3NbMF0pCi0gICAgZXhjZXB0IEVu
dmlyb25tZW50RXJyb3IsIHdoeToKLSAgICAgIGVycm9ycy5hcHBlbmQoKHNyY25hbWUsIGRzdG5h
bWUsIHN0cih3aHkpKSkKLSAgaWYgZXJyb3JzOgotICAgIHJhaXNlIEVycm9yLCBlcnJvcnMKLQot
Ci1kZWYgRmlsZVJlYWRlcihmaWxlbmFtZSk6Ci0gICIiIkEgRmlsZSBnZW5lcmF0b3IgdGhhdCBy
ZXR1cm5zIG9ubHkgbm9uIGVtcHR5LCBub24gY29tbWVudCBsaW5lcyIiIgotICBmaWxlID0gb3Bl
bihmaWxlbmFtZSwgInIiKQotICBsaW5lcyA9IGZpbGUucmVhZGxpbmVzKCkKLSAgZmlsZS5jbG9z
ZSgpCi0gIGZvciBsaW5lX251bWJlciwgbGluZSBpbiBlbnVtZXJhdGUobGluZXMpOgotICAgIGxp
bmUgPSBsaW5lLnN0cmlwKCkKLSAgICBpZiAobGVuKGxpbmUpID4gMCBhbmQKLSAgICAgICAgbm90
IGxpbmUuc3RhcnRzd2l0aCgiIyIpIGFuZAotICAgICAgICBub3QgbGluZS5zdGFydHN3aXRoKCI7
IikgYW5kCi0gICAgICAgIG5vdCBsaW5lLnN0YXJ0c3dpdGgoIi8vIikpOgotICAgICAgeWllbGQg
bGluZV9udW1iZXIgKyAxLCBsaW5lCi0KLQotZGVmIEdyZWF0ZXJUaGFuT3JFcXVhbFRvVmVyc2lv
bihoYXZlLCB3YW50KToKLSAgIiIiQ29tcGFyZXMgdG8gdmVyc2lvbiBzdHJpbmdzIiIiCi0gIGhh
dmUgPSBoYXZlLnNwbGl0KCIgIilbMF0uc3BsaXQoIi4iKQotICB3YW50ID0gd2FudC5zcGxpdCgi
ICIpWzBdLnNwbGl0KCIuIikKLSAgZm9yIG5keCwgd2FudF9zdHIgaW4gZW51bWVyYXRlKHdhbnQp
OgotICAgIHdhbnRfbnVtID0gaW50KHdhbnRfc3RyKQotICAgIGhhdmVfbnVtID0gMAotICAgIGlm
IG5keCA8IGxlbihoYXZlKToKLSAgICAgIGhhdmVfbnVtID0gaW50KGhhdmVbbmR4XSkKLSAgICBp
ZiBoYXZlX251bSA8IHdhbnRfbnVtOgotICAgICAgcmV0dXJuIEZhbHNlCi0gICAgaWYgaGF2ZV9u
dW0gPj0gd2FudF9udW06Ci0gICAgICByZXR1cm4gVHJ1ZQotICByZXR1cm4gVHJ1ZQotCi0KLWRl
ZiBHZXRUZXN0TGlzdChsaXN0X2ZpbGVuYW1lLCBkZXN0X2RpciwgaGllcmFyY2hpY2FsX29wdGlv
bnMpOgotICBnbG9iYWwgR0xPQkFMX09QVElPTlMKLSAgdGVzdHMgPSBbXQotICBwcmVmaXggPSBv
cy5wYXRoLmRpcm5hbWUobGlzdF9maWxlbmFtZSkKLSAgZm9yIGxpbmVfbnVtYmVyLCBsaW5lIGlu
IEZpbGVSZWFkZXIobGlzdF9maWxlbmFtZSk6Ci0gICAgYXJncyA9IGxpbmUuc3BsaXQoKQotICAg
IHRlc3Rfb3B0aW9ucyA9IHt9Ci0gICAgbm9uX29wdGlvbnMgPSBbXQotICAgIHVzZV90ZXN0ID0g
VHJ1ZQotICAgIHdoaWxlIGxlbihhcmdzKToKLSAgICAgIGFyZyA9IGFyZ3MucG9wKDApCi0gICAg
ICBpZiBhcmcuc3RhcnRzd2l0aCgiLSIpOgotICAgICAgICBpZiBub3QgYXJnLnN0YXJ0c3dpdGgo
Ii0tIik6Ci0gICAgICAgICAgcmFpc2UgIiVzOiVkIGJhZCBvcHRpb24iICUgKGxpc3RfZmlsZW5h
bWUsIGxpbmVfbnVtYmVyKQotICAgICAgICBvcHRpb24gPSBhcmdbMjpdCi0gICAgICAgIGlmIG9w
dGlvbiA9PSAnc2xvdyc6Ci0gICAgICAgICAgcGFzcwotICAgICAgICBlbGlmIG9wdGlvbiA9PSAn
bWluLXZlcnNpb24nIG9yIG9wdGlvbiA9PSAibWF4LXZlcnNpb24iOgotICAgICAgICAgIHRlc3Rf
b3B0aW9uc1tvcHRpb25dID0gYXJncy5wb3AoMCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICBy
YWlzZSBFeGNlcHRpb24oIiVzOiVkIHVua25vd24gb3B0aW9uICclcyciICUgKGxpc3RfZmlsZW5h
bWUsIGxpbmVfbnVtYmVyLCBhcmcpKQotICAgICAgZWxzZToKLSAgICAgICAgbm9uX29wdGlvbnMu
YXBwZW5kKGFyZykKLSAgICB1cmwgPSBvcy5wYXRoLmpvaW4ocHJlZml4LCAiICIuam9pbihub25f
b3B0aW9ucykpCi0KLSAgICBpZiBub3QgdXJsLmVuZHN3aXRoKCIudHh0Iik6Ci0gICAgICBpZiAi
bWluLXZlcnNpb24iIGluIHRlc3Rfb3B0aW9uczoKLSAgICAgICAgbWluX3ZlcnNpb24gPSB0ZXN0
X29wdGlvbnNbIm1pbi12ZXJzaW9uIl0KLSAgICAgIGVsc2U6Ci0gICAgICAgIG1pbl92ZXJzaW9u
ID0gaGllcmFyY2hpY2FsX29wdGlvbnNbImRlZmF1bHQtdmVyc2lvbiJdCi0KLSAgICAgIGlmICJt
aW4tdmVyc2lvbiIgaW4gR0xPQkFMX09QVElPTlM6Ci0gICAgICAgIHVzZV90ZXN0ID0gR3JlYXRl
clRoYW5PckVxdWFsVG9WZXJzaW9uKG1pbl92ZXJzaW9uLCBHTE9CQUxfT1BUSU9OU1sibWluLXZl
cnNpb24iXSkKLSAgICAgIGVsc2U6Ci0gICAgICAgIHVzZV90ZXN0ID0gR3JlYXRlclRoYW5PckVx
dWFsVG9WZXJzaW9uKEdMT0JBTF9PUFRJT05TWyJ2ZXJzaW9uIl0sIG1pbl92ZXJzaW9uKQotCi0g
ICAgaWYgbm90IHVzZV90ZXN0OgotICAgICAgY29udGludWUKLQotICAgIGlmIHVybC5lbmRzd2l0
aCgiLnR4dCIpOgotICAgICAgaWYgIm1pbi12ZXJzaW9uIiBpbiB0ZXN0X29wdGlvbnM6Ci0gICAg
ICAgIGhpZXJhcmNoaWNhbF9vcHRpb25zWyJkZWZhdWx0LXZlcnNpb24iXSA9IHRlc3Rfb3B0aW9u
c1sibWluLXZlcnNpb24iXQotICAgICAgdGVzdHMgPSB0ZXN0cyArIEdldFRlc3RMaXN0KAotICAg
ICAgICAgIG9zLnBhdGguam9pbihwcmVmaXgsIHVybCksIGRlc3RfZGlyLCBjb3B5LmNvcHkoaGll
cmFyY2hpY2FsX29wdGlvbnMpKQotICAgIGVsc2U6Ci0gICAgICB0ZXN0cy5hcHBlbmQoeyJ1cmwi
OiB1cmx9KQotICByZXR1cm4gdGVzdHMKLQotCi1kZWYgbWFpbihhcmd2KToKLSAgIiIiVGhpcyBp
cyB0aGUgbWFpbiBmdW5jdGlvbi4iIiIKLSAgZ2xvYmFsIEdMT0JBTF9PUFRJT05TCi0KLSAgcGFy
c2VyID0gT3B0aW9uUGFyc2VyKCkKLSAgcGFyc2VyLmFkZF9vcHRpb24oCi0gICAgICAiLXYiLCAi
LS12ZXJib3NlIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwKLSAgICAgIGhlbHA9InByaW50cyBtb3Jl
IG91dHB1dC4iKQotICBwYXJzZXIuYWRkX29wdGlvbigKLSAgICAgICItdyIsICItLXdlYmdsLWNv
bmZvcm1hbmNlLXRlc3QiLCBkZXN0PSJzb3VyY2VfZGlyIiwKLSAgICAgIGhlbHA9InBhdGggdG8g
d2ViZ2wgY29uZm9ybWFuY2UgdGVzdHMuIFJFUVVJUkVEIikKLSAgcGFyc2VyLmFkZF9vcHRpb24o
Ci0gICAgICAiLW4iLCAiLS1uby1jb3B5IiwgYWN0aW9uPSJzdG9yZV90cnVlIiwKLSAgICAgIGhl
bHA9ImRvIG5vdCBjb3B5IHRlc3RzIikKLSAgcGFyc2VyLmFkZF9vcHRpb24oCi0gICAgICAiLWUi
LCAiLS1nZW5lcmF0ZS1leHBlY3RhdGlvbnMiLCBhY3Rpb249InN0b3JlX3RydWUiLAotICAgICAg
aGVscD0iZ2VuZXJhdGV0IHRoZSB0ZXN0IGV4cGVjdGF0aW9ucyIpCi0gIHBhcnNlci5hZGRfb3B0
aW9uKAotICAgICAgIi1vIiwgIi0tb3V0cHV0LWRpciIsIGRlc3Q9Im91dHB1dF9kaXIiLAotICAg
ICAgaGVscD0iYmFzZSBkaXJlY3RvcnkgZm9yIG91dHB1dC4gZGVmYXVsdHMgdG8gXCcuXCciLAot
ICAgICAgZGVmYXVsdD0iLiIpCi0KLSAgKG9wdGlvbnMsIGFyZ3MpID0gcGFyc2VyLnBhcnNlX2Fy
Z3MoYXJncz1hcmd2KQotCi0gIGlmIG5vdCBvcHRpb25zLnNvdXJjZV9kaXI6Ci0gICAgcGFyc2Vy
LnByaW50X2hlbHAoKQotICAgIHJldHVybiAxCi0KLSAgb3MuY2hkaXIob3MucGF0aC5kaXJuYW1l
KF9fZmlsZV9fKSBvciAnLicpCi0KLSAgc291cmNlX2RpciA9IG9wdGlvbnMuc291cmNlX2RpcjsK
LSAgb3V0cHV0X2RpciA9IG9wdGlvbnMub3V0cHV0X2RpcjsKLSAgd2ViZ2xfdGVzdHNfZGlyID0g
b3MucGF0aC5qb2luKG91dHB1dF9kaXIsICJyZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcyIpCi0K
LSAgIyBjb3B5IGFsbCB0aGUgZmlsZXMgZnJvbSB0aGUgV2ViR0wgY29uZm9ybWFuY2UgdGVzdHMu
Ci0gIGlmIG5vdCBvcHRpb25zLm5vX2NvcHk6Ci0gICAgQ29weVRyZWUoCi0gICAgICAgIHNvdXJj
ZV9kaXIsIHdlYmdsX3Rlc3RzX2Rpciwgc2h1dGlsLmlnbm9yZV9wYXR0ZXJucygKLSAgICAgICAg
ICAgICcuZ2l0JywgJyoucHljJywgJ3RtcConKSkKLQotICB0ZXN0X3RlbXBsYXRlID0gUmVhZEZp
bGUoInJlc291cmNlcy93ZWJnbC13cmFwcGVyLXRlbXBsYXRlLmh0bWwiKQotICBleHBlY3RhdGlv
bl90ZW1wbGF0ZSA9IFJlYWRGaWxlKCJyZXNvdXJjZXMvd2ViZ2wtZXhwZWN0YXRpb24tdGVtcGxh
dGUudHh0IikKLQotICAjIGdlbmVyYXRlIHdyYXBwZXJzIGZvciBhbGwgdGhlIHRlc3RzCi0gIHRl
c3RzID0gR2V0VGVzdExpc3Qob3MucGF0aC5qb2luKHNvdXJjZV9kaXIsICIwMF90ZXN0X2xpc3Qu
dHh0IiksICIuIiwKLSAgICAgICAgICAgICAgICAgICAgICBjb3B5LmNvcHkoR0xPQkFMX09QVElP
TlMpKQotCi0gIGZvciB0ZXN0IGluIHRlc3RzOgotICAgIHVybCA9IG9zLnBhdGgucmVscGF0aCh0
ZXN0WyJ1cmwiXSwgc291cmNlX2RpcikKLSAgICBkc3QgPSBvcy5wYXRoLmpvaW4ob3V0cHV0X2Rp
ciwgdXJsKQotICAgIGRzdF9kaXIgPSBvcy5wYXRoLmRpcm5hbWUoZHN0KQotICAgIHNyYyA9IG9z
LnBhdGgucmVscGF0aChvcy5wYXRoLmpvaW4od2ViZ2xfdGVzdHNfZGlyLCB1cmwpLCBkc3RfZGly
KS5yZXBsYWNlKCJcXCIsICIvIikKLSAgICBiYXNlX3VybCA9IG9zLnBhdGgucmVscGF0aChvdXRw
dXRfZGlyLCBkc3RfZGlyKS5yZXBsYWNlKCJcXCIsICIvIikKLSAgICBzdWJzID0gewotICAgICAg
InVybCI6IHNyYywKLSAgICAgICJ1cmxfbmFtZSI6IG9zLnBhdGguYmFzZW5hbWUodXJsKSwKLSAg
ICAgICJiYXNlX3VybCI6IGJhc2VfdXJsLAotICAgIH0KLSAgICBXcml0ZUZpbGUoZHN0LCB0ZXN0
X3RlbXBsYXRlICUgc3VicykKLSAgICBpZiBvcHRpb25zLmdlbmVyYXRlX2V4cGVjdGF0aW9uczoK
LSAgICAgIGV4cGVjdGF0aW9uX2ZpbGVuYW1lID0gb3MucGF0aC5zcGxpdGV4dChkc3QpWzBdICsg
Ii1leHBlY3RlZC50eHQiCi0gICAgICBXcml0ZUZpbGUoZXhwZWN0YXRpb25fZmlsZW5hbWUsIGV4
cGVjdGF0aW9uX3RlbXBsYXRlICUgc3VicykKLQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5f
Xyc6Ci0gIHN5cy5leGl0KG1haW4oc3lzLmFyZ3ZbMTpdKSkKLQotCi0KLQotCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2wtZXhwZWN0YXRpb24tdGVtcGxhdGUu
dHh0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsLWV4cGVjdGF0aW9uLXRlbXBs
YXRlLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTZmYjczY2Q0ZjY5YjdkNmQy
YjdkMTBlNGY0NmE1ZWYxMzAzODFiYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2wtZXhwZWN0YXRp
b24tdGVtcGxhdGUudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1UaGlzIHRlc3Qg
cnVucyB0aGUgV2ViR0wgVGVzdCBsaXN0ZWQgYmVsb3cgaW4gYW4gaWZyYW1lIGFuZCByZXBvcnRz
IFBBU1Mgb3IgRkFJTC4KLQotVGVzdDogJSh1cmwpcwotWyBQQVNTIF0gQWxsIHRlc3RzIHBhc3Nl
ZAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2wtd3JhcHBl
ci10ZW1wbGF0ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsLXdyYXBw
ZXItdGVtcGxhdGUuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjFjODM3OWJk
MThlODc3Y2U2ZjIzYTY5ZDkwNjg5MmM2MmIxNjdjMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2wt
d3JhcHBlci10ZW1wbGF0ZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotPCEt
LSBUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtd2ViZ2wtdGVzdHMucHku
IERPIE5PVCBFRElUIC0tPgotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPG1ldGEg
Y2hhcnNldD0idXRmLTgiPgotPHRpdGxlPldlYkdMIENvbmZvcm1hbmNlIFRlc3QgV3JhcHBlciBm
b3IgJSh1cmxfbmFtZSlzPC90aXRsZT4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBz
cmM9IiUoYmFzZV91cmwpcy8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgot
PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iJShiYXNlX3VybClzL3Jlc291cmNl
cy93ZWJraXQtd2ViZ2wtdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5
PgotPHA+VGhpcyB0ZXN0IHJ1bnMgdGhlIFdlYkdMIFRlc3QgbGlzdGVkIGJlbG93IGluIGFuIGlm
cmFtZSBhbmQgcmVwb3J0cyBQQVNTIG9yIEZBSUwuPC9wPgotVGVzdDogPGEgaHJlZj0iJSh1cmwp
cyI+JSh1cmwpczwvYT4KLTxkaXYgaWQ9ImlmcmFtZSI+Ci08aWZyYW1lIHNyYz0iJSh1cmwpcyIg
d2lkdGg9IjgwMCIgaGVpZ2h0PSI2MDAiPjwvaWZyYW1lPgotPC9kaXY+Ci08ZGl2IGlkPSJyZXN1
bHQiPjwvZGl2PgotPC9ib2R5PgotPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>