<?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>51092</bug_id>
          
          <creation_ts>2010-12-14 20:33:30 -0800</creation_ts>
          <short_desc>nrwt multiprocessing - split out TestRunner into its own file</short_desc>
          <delta_ts>2011-01-10 12:48:25 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>51081</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Pranke">dpranke</reporter>
          <assigned_to name="Dirk Pranke">dpranke</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>322474</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-12-14 20:33:30 -0800</bug_when>
    <thetext>nrwt multiprocessing - split out TestRunner into its own file</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322479</commentid>
    <comment_count>1</comment_count>
      <attachid>76625</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-12-14 20:43:55 -0800</bug_when>
    <thetext>Created attachment 76625
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322482</commentid>
    <comment_count>2</comment_count>
      <attachid>76625</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-12-14 20:45:37 -0800</bug_when>
    <thetext>Comment on attachment 76625
Patch

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

&gt; WebKitTools/ChangeLog:13
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=51092

You can ignore the weird diff in this changelog entry and just look at the added lines. The diff is the result of diffing against the my branch with the patch in 51081 in it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322954</commentid>
    <comment_count>3</comment_count>
      <attachid>76625</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-12-15 17:05:06 -0800</bug_when>
    <thetext>Comment on attachment 76625
Patch

Nice cleanup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>325816</commentid>
    <comment_count>4</comment_count>
      <attachid>77285</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-12-22 17:26:03 -0800</bug_when>
    <thetext>Created attachment 77285
rebase after WebKitTools -&gt; Tools rename</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>325817</commentid>
    <comment_count>5</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-12-22 17:26:48 -0800</bug_when>
    <thetext>Committed r74525: &lt;http://trac.webkit.org/changeset/74525&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>331851</commentid>
    <comment_count>6</comment_count>
      <attachid>77285</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-01-10 12:48:25 -0800</bug_when>
    <thetext>Comment on attachment 77285
rebase after WebKitTools -&gt; Tools rename

Removing review flag to get out of review queue as this has been landed.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76625</attachid>
            <date>2010-12-14 20:43:55 -0800</date>
            <delta_ts>2010-12-22 17:26:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-51092-20101214204353.patch</filename>
            <type>text/plain</type>
            <size>127157</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCAyMGRkYzg3NWM5YWQxMGY1NWQ2MmMwOGYxNzE2MWRkZDdkMmU4NzBiLi5mZGRkNGE3
MzI4YTZkZWQ0M2E0YjQ5OGQ3Yzc0MTc3M2I0ZGQ2ZTcwIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0yLDE5ICsyLDIxIEBA
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCiAKLSAgICAgICAgbnJ3dCBt
dWx0aXByb2Nlc3NpbmcgLSBzdGFydCBvdmVyLCBwcmVwYXJlIHRvIGZvcmsgdGhlIGNvZGUKKyAg
ICAgICAgVGhpcyBjaGFuZ2Ugc3BsaXRzIG91dCB0aGUgVGVzdFJ1bm5lciBjbGFzcyBpbnRvIGl0
cyBvd24gZmlsZS4KKyAgICAgICAgV2hlbiB3ZSBmb3JrIHRoZSBjb2RlIGZvciBtZXNzYWdlIHBh
c3NpbmcsIHdlIHdpbGwgY3JlYXRlIGEgbmV3CisgICAgICAgIFRlc3RSdW5uZXIsIGFuZCB0aGlz
IGNoYW5nZSB3aWxsIGFsbG93IHRoYXQgdG8gYmUgbW9yZSBtb2R1bGFyLgogCi0gICAgICAgIFRo
aXMgY29kZSBjbGVhbnMgdXAgdGhlIHNpZ25hdHVyZXMgYW5kIGltcGxlbWVudGF0aW9uIG9mIHRo
ZQotICAgICAgICBUZXN0UnVubmVyIGNsYXNzIHNvIHdlIGNhbiBlYXNpbHkgZm9yayBpdCB0byBy
dW4gZWl0aGVyIHRoZQotICAgICAgICBzdGFibGUgaW1wbGVtZW50YXRpb24gb3IgdGhlIG5ldywg
dW5zdGFibGUgbWVzc2FnZS1wYXNzaW5nCi0gICAgICAgIGltcGxlbWVudGF0aW9uLiBUaGUgdHdv
IHZhcmlhbnRzIHdpbGwgaGF2ZSBkaWZmZXJlbnQKLSAgICAgICAgaW1wbGVtZW50YXRpb25zIG9m
IHRoZSBydW5fdGVzdHMoKSBtZXRob2QuIFdlIHdpbGwgc3dpdGNoCi0gICAgICAgIGJldHdlZW4g
dGhlIHR3byBiYXNlZCBvbiB0aGUgc2V0dGluZyBmb3IgdGhlICctLXdvcmtlci1tb2RlbCcKLSAg
ICAgICAgc3dpdGNoLiBXZSByZW5hbWUgdGhlIHR3byBjdXJyZW50bHkgdmFsaWQgdmFsdWVzIHRv
ICdvbGQtaW5saW5lJwotICAgICAgICBhbmQgJ29sZC10aHJlYWRzJy4KKyAgICAgICAgV2hpbGUg
d2UncmUgYXQgaXQsIHNwbGl0IG91dCBUZXN0SW5wdXQgYW5kIFJlc3VsdFN1bW1hcnkgaW50bwor
ICAgICAgICB0aGVpciBvd24gZmlsZXMsIHRvIHJlZHVjZSB0aGUgc2l6ZSBvZiBydW5fd2Via2l0
X3Rlc3RzIHRvCisgICAgICAgIHNvbWV0aGluZyBtb3JlIG1hbmFnYWJsZS4KIAotICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTEwODEKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUxMDkyCiAKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9wcmludGluZ191bml0
dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRf
cGFja2FnZS9yZXN1bHRfc3VtbWFyeS5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X3J1bm5lci5weToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X3J1bm5lcl91bml0
dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRf
cGFja2FnZS90ZXN0X2lucHV0LnB5OgogICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHk6CiAgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c191bml0dGVzdC5weToKIApkaWZmIC0tZ2l0IGEv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2Uv
cHJpbnRpbmdfdW5pdHRlc3QucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9wcmludGluZ191bml0dGVzdC5weQppbmRleCAyN2E2YTI5
YmU1YzlhN2EzZjA3M2YwMGU2MzBjNWIwNDUyNzZkYmMwLi4wZTQ3OGM4ZGM0M2ZkZGM0ZWE1N2Vi
NzlhNWRmODRiYTliNDU0OTg1IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9wcmludGluZ191bml0dGVzdC5weQorKysg
Yi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2Fn
ZS9wcmludGluZ191bml0dGVzdC5weQpAQCAtMzksMTEgKzM5LDEzIEBAIGltcG9ydCBsb2dnaW5n
CiBmcm9tIHdlYmtpdHB5LmNvbW1vbiBpbXBvcnQgYXJyYXlfc3RyZWFtCiBmcm9tIHdlYmtpdHB5
LmNvbW1vbi5zeXN0ZW0gaW1wb3J0IGxvZ3Rlc3RpbmcKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rl
c3RzIGltcG9ydCBwb3J0CisKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmxheW91dF9wYWNr
YWdlIGltcG9ydCBwcmludGluZwotZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubGF5b3V0X3Bh
Y2thZ2UgaW1wb3J0IHRlc3RfcmVzdWx0cworZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubGF5
b3V0X3BhY2thZ2UgaW1wb3J0IHJlc3VsdF9zdW1tYXJ5CiBmcm9tIHdlYmtpdHB5LmxheW91dF90
ZXN0cy5sYXlvdXRfcGFja2FnZSBpbXBvcnQgdGVzdF9leHBlY3RhdGlvbnMKIGZyb20gd2Via2l0
cHkubGF5b3V0X3Rlc3RzLmxheW91dF9wYWNrYWdlIGltcG9ydCB0ZXN0X2ZhaWx1cmVzCi1mcm9t
IHdlYmtpdHB5LmxheW91dF90ZXN0cyBpbXBvcnQgcnVuX3dlYmtpdF90ZXN0cworZnJvbSB3ZWJr
aXRweS5sYXlvdXRfdGVzdHMubGF5b3V0X3BhY2thZ2UgaW1wb3J0IHRlc3RfcmVzdWx0cworZnJv
bSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubGF5b3V0X3BhY2thZ2UgaW1wb3J0IHRlc3RfcnVubmVy
CiAKIAogZGVmIGdldF9vcHRpb25zKGFyZ3MpOgpAQCAtMTQ5LDcgKzE1MSw3IEBAIGNsYXNzICBU
ZXN0cHJpbnRlcih1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAgICBzZWxmLl9wb3J0LnRl
c3RfcGxhdGZvcm1fbmFtZSgpLCBpc19kZWJ1Z19tb2RlPUZhbHNlLAogICAgICAgICAgICAgaXNf
bGludF9tb2RlPUZhbHNlKQogCi0gICAgICAgIHJzID0gcnVuX3dlYmtpdF90ZXN0cy5SZXN1bHRT
dW1tYXJ5KGV4cGVjdGF0aW9ucywgdGVzdF9wYXRocykKKyAgICAgICAgcnMgPSByZXN1bHRfc3Vt
bWFyeS5SZXN1bHRTdW1tYXJ5KGV4cGVjdGF0aW9ucywgdGVzdF9wYXRocykKICAgICAgICAgcmV0
dXJuIHRlc3RfcGF0aHMsIHJzLCBleHBlY3RhdGlvbnMKIAogICAgIGRlZiB0ZXN0X2hlbHBfcHJp
bnRlcihzZWxmKToKQEAgLTUxNSw3ICs1MTcsNyBAQCBjbGFzcyAgVGVzdHByaW50ZXIodW5pdHRl
c3QuVGVzdENhc2UpOgogICAgICAgICAgICAgICAgIHJldHJ5LmFkZChzZWxmLmdldF9yZXN1bHQo
J3Bhc3Nlcy90ZXh0Lmh0bWwnKSwgVHJ1ZSkKICAgICAgICAgICAgICAgICByZXRyeS5hZGQoc2Vs
Zi5nZXRfcmVzdWx0KCdmYWlsdXJlcy9leHBlY3RlZC90aW1lb3V0Lmh0bWwnKSwgVHJ1ZSkKICAg
ICAgICAgICAgICAgICByZXRyeS5hZGQoc2VsZi5nZXRfcmVzdWx0KCdmYWlsdXJlcy9leHBlY3Rl
ZC9jcmFzaC5odG1sJyksIFRydWUpCi0gICAgICAgICAgICB1bmV4cGVjdGVkX3Jlc3VsdHMgPSBy
dW5fd2Via2l0X3Rlc3RzLnN1bW1hcml6ZV91bmV4cGVjdGVkX3Jlc3VsdHMoCisgICAgICAgICAg
ICB1bmV4cGVjdGVkX3Jlc3VsdHMgPSB0ZXN0X3J1bm5lci5zdW1tYXJpemVfdW5leHBlY3RlZF9y
ZXN1bHRzKAogICAgICAgICAgICAgICAgIHNlbGYuX3BvcnQsIGV4cCwgcnMsIHJldHJ5KQogICAg
ICAgICAgICAgcmV0dXJuIHVuZXhwZWN0ZWRfcmVzdWx0cwogCmRpZmYgLS1naXQgYS9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9yZXN1bHRf
c3VtbWFyeS5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xh
eW91dF9wYWNrYWdlL3Jlc3VsdF9zdW1tYXJ5LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc0YWVkMDY2ZDE0NGNk
MzUwN2I5NmFiYTIxOGQ5ZTBlMzcyMWIwOTYKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9yZXN1bHRfc3Vt
bWFyeS5weQpAQCAtMCwwICsxLDgzIEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMgQ29weXJp
Z2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdo
dCAoQykgMjAxMCBHYWJvciBSYXBjc2FueWkgKHJnYWJvckBpbmYudS1zemVnZWQuaHUpLCBVbml2
ZXJzaXR5IG9mIFN6ZWdlZAorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6
CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIiIiUnVuIGxheW91dCB0ZXN0
cy4iIiIKKworaW1wb3J0IGxvZ2dpbmcKKworaW1wb3J0IHRlc3RfZXhwZWN0YXRpb25zCisKK19s
b2cgPSBsb2dnaW5nLmdldExvZ2dlcigid2Via2l0cHkubGF5b3V0X3Rlc3RzLnJ1bl93ZWJraXRf
dGVzdHMiKQorCitUZXN0RXhwZWN0YXRpb25zRmlsZSA9IHRlc3RfZXhwZWN0YXRpb25zLlRlc3RF
eHBlY3RhdGlvbnNGaWxlCisKKworY2xhc3MgUmVzdWx0U3VtbWFyeShvYmplY3QpOgorICAgICIi
IkEgY2xhc3MgZm9yIHBhcnRpdGlvbmluZyB0aGUgdGVzdCByZXN1bHRzIHdlIGdldCBpbnRvIGJ1
Y2tldHMuCisKKyAgICBUaGlzIGNsYXNzIGlzIGJhc2ljYWxseSBhIGdsb3JpZmllZCBzdHJ1Y3Qg
YW5kIGl0J3MgcHJpdmF0ZSB0byB0aGlzIGZpbGUKKyAgICBzbyB3ZSBkb24ndCBib3RoZXIgd2l0
aCBhbnkgaW5mb3JtYXRpb24gaGlkaW5nLiIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGV4
cGVjdGF0aW9ucywgdGVzdF9maWxlcyk6CisgICAgICAgIHNlbGYudG90YWwgPSBsZW4odGVzdF9m
aWxlcykKKyAgICAgICAgc2VsZi5yZW1haW5pbmcgPSBzZWxmLnRvdGFsCisgICAgICAgIHNlbGYu
ZXhwZWN0YXRpb25zID0gZXhwZWN0YXRpb25zCisgICAgICAgIHNlbGYuZXhwZWN0ZWQgPSAwCisg
ICAgICAgIHNlbGYudW5leHBlY3RlZCA9IDAKKyAgICAgICAgc2VsZi50ZXN0c19ieV9leHBlY3Rh
dGlvbiA9IHt9CisgICAgICAgIHNlbGYudGVzdHNfYnlfdGltZWxpbmUgPSB7fQorICAgICAgICBz
ZWxmLnJlc3VsdHMgPSB7fQorICAgICAgICBzZWxmLnVuZXhwZWN0ZWRfcmVzdWx0cyA9IHt9Cisg
ICAgICAgIHNlbGYuZmFpbHVyZXMgPSB7fQorICAgICAgICBzZWxmLnRlc3RzX2J5X2V4cGVjdGF0
aW9uW3Rlc3RfZXhwZWN0YXRpb25zLlNLSVBdID0gc2V0KCkKKyAgICAgICAgZm9yIGV4cGVjdGF0
aW9uIGluIFRlc3RFeHBlY3RhdGlvbnNGaWxlLkVYUEVDVEFUSU9OUy52YWx1ZXMoKToKKyAgICAg
ICAgICAgIHNlbGYudGVzdHNfYnlfZXhwZWN0YXRpb25bZXhwZWN0YXRpb25dID0gc2V0KCkKKyAg
ICAgICAgZm9yIHRpbWVsaW5lIGluIFRlc3RFeHBlY3RhdGlvbnNGaWxlLlRJTUVMSU5FUy52YWx1
ZXMoKToKKyAgICAgICAgICAgIHNlbGYudGVzdHNfYnlfdGltZWxpbmVbdGltZWxpbmVdID0gKAor
ICAgICAgICAgICAgICAgIGV4cGVjdGF0aW9ucy5nZXRfdGVzdHNfd2l0aF90aW1lbGluZSh0aW1l
bGluZSkpCisKKyAgICBkZWYgYWRkKHNlbGYsIHJlc3VsdCwgZXhwZWN0ZWQpOgorICAgICAgICAi
IiJBZGQgYSBUZXN0UmVzdWx0IGludG8gdGhlIGFwcHJvcHJpYXRlIGJpbi4KKworICAgICAgICBB
cmdzOgorICAgICAgICAgIHJlc3VsdDogVGVzdFJlc3VsdAorICAgICAgICAgIGV4cGVjdGVkOiB3
aGV0aGVyIHRoZSByZXN1bHQgd2FzIHdoYXQgd2UgZXhwZWN0ZWQgaXQgdG8gYmUuCisgICAgICAg
ICIiIgorCisgICAgICAgIHNlbGYudGVzdHNfYnlfZXhwZWN0YXRpb25bcmVzdWx0LnR5cGVdLmFk
ZChyZXN1bHQuZmlsZW5hbWUpCisgICAgICAgIHNlbGYucmVzdWx0c1tyZXN1bHQuZmlsZW5hbWVd
ID0gcmVzdWx0CisgICAgICAgIHNlbGYucmVtYWluaW5nIC09IDEKKyAgICAgICAgaWYgbGVuKHJl
c3VsdC5mYWlsdXJlcyk6CisgICAgICAgICAgICBzZWxmLmZhaWx1cmVzW3Jlc3VsdC5maWxlbmFt
ZV0gPSByZXN1bHQuZmFpbHVyZXMKKyAgICAgICAgaWYgZXhwZWN0ZWQ6CisgICAgICAgICAgICBz
ZWxmLmV4cGVjdGVkICs9IDEKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYudW5leHBl
Y3RlZF9yZXN1bHRzW3Jlc3VsdC5maWxlbmFtZV0gPSByZXN1bHQudHlwZQorICAgICAgICAgICAg
c2VsZi51bmV4cGVjdGVkICs9IDEKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfaW5wdXQucHkgYi9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2lu
cHV0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRiMDI3YzA0ZDIyMGY1ZWE5NjRmOTkzZjRhMjhiZDNiMDk0MGM2
YzEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2lucHV0LnB5CkBAIC0wLDAgKzEsNDcgQEAKKyMh
L3Vzci9iaW4vZW52IHB5dGhvbgorIyBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDEwIEdhYm9yIFJhcGNzYW55aSAo
cmdhYm9yQGluZi51LXN6ZWdlZC5odSksIFVuaXZlcnNpdHkgb2YgU3plZ2VkCisjCisjIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
IyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorCisKK2NsYXNzIFRlc3RJbnB1dDoKKyAgICAiIiJHcm91cHMgaW5mb3JtYXRpb24g
YWJvdXQgYSB0ZXN0IGZvciBlYXN5IHBhc3Npbmcgb2YgZGF0YS4iIiIKKworICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBmaWxlbmFtZSwgdGltZW91dCk6CisgICAgICAgICIiIkhvbGRzIHRoZSBpbnB1
dCBwYXJhbWV0ZXJzIGZvciBhIHRlc3QuCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgZmlsZW5h
bWU6IEZ1bGwgcGF0aCB0byB0aGUgdGVzdC4KKyAgICAgICAgICB0aW1lb3V0OiBUaW1lb3V0IGlu
IG1zZWNzIHRoZSBkcml2ZXIgc2hvdWxkIHVzZSB3aGlsZSBydW5uaW5nIHRoZSB0ZXN0CisgICAg
ICAgICAgIiIiCisgICAgICAgICMgRklYTUU6IGZpbGVuYW1lIHNob3VsZCByZWFsbHkgYmUgdGVz
dF9uYW1lIGFzIGEgcmVsYXRpdmUgcGF0aC4KKyAgICAgICAgc2VsZi5maWxlbmFtZSA9IGZpbGVu
YW1lCisgICAgICAgIHNlbGYudGltZW91dCA9IHRpbWVvdXQKKyAgICAgICAgIyBUaGUgaW1hZ2Vf
aGFzaCBpcyB1c2VkIHRvIGF2b2lkIGRvaW5nIGFuIGltYWdlIGR1bXAgaWYgdGhlCisgICAgICAg
ICMgY2hlY2tzdW1zIG1hdGNoLiBUaGUgaW1hZ2VfaGFzaCBpcyBzZXQgbGF0ZXIsIGFuZCBvbmx5
IGlmIGl0IGlzIG5lZWRlZAorICAgICAgICAjIGZvciB0aGUgdGVzdC4KKyAgICAgICAgc2VsZi5p
bWFnZV9oYXNoID0gTm9uZQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9ydW5uZXIucHkgYi9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X3J1bm5l
ci5weQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi41MDg4OTVhZWJkOTY1MTg0OWFkNjlmYTYwODc0ZGI0MzFmMGEyMjgz
Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9ydW5uZXIucHkKQEAgLTAsMCArMSwxMTkxIEBACisj
IS91c3IvYmluL2VudiBweXRob24KKyMgQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxMCBHYWJvciBSYXBjc2FueWkg
KHJnYWJvckBpbmYudS1zemVnZWQuaHUpLCBVbml2ZXJzaXR5IG9mIFN6ZWdlZAorIworIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisj
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKworIiIiCitUaGUgVGVzdFJ1bm5lciBjbGFzcyBydW5zIGEgc2VyaWVzIG9mIHRl
c3RzIChUZXN0VHlwZSBpbnRlcmZhY2UpIGFnYWluc3QgYSBzZXQKK29mIHRlc3QgZmlsZXMuICBJ
ZiBhIHRlc3QgZmlsZSBmYWlscyBhIFRlc3RUeXBlLCBpdCByZXR1cm5zIGEgbGlzdCBUZXN0RmFp
bHVyZQorb2JqZWN0cyB0byB0aGUgVGVzdFJ1bm5lci4gIFRoZSBUZXN0UnVubmVyIHRoZW4gYWdn
cmVnYXRlcyB0aGUgVGVzdEZhaWx1cmVzIHRvCitjcmVhdGUgYSBmaW5hbCByZXBvcnQuCisiIiIK
KworZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB3aXRoX3N0YXRlbWVudAorCitpbXBvcnQgY29kZWNz
CitpbXBvcnQgZXJybm8KK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgbWF0aAoraW1wb3J0IG9zCitp
bXBvcnQgUXVldWUKK2ltcG9ydCByYW5kb20KK2ltcG9ydCBzaHV0aWwKK2ltcG9ydCBzeXMKK2lt
cG9ydCB0aW1lCisKK2Zyb20gcmVzdWx0X3N1bW1hcnkgaW1wb3J0IFJlc3VsdFN1bW1hcnkKK2Zy
b20gdGVzdF9pbnB1dCBpbXBvcnQgVGVzdElucHV0CisKK2ltcG9ydCBkdW1wX3JlbmRlcl90cmVl
X3RocmVhZAoraW1wb3J0IGpzb25fbGF5b3V0X3Jlc3VsdHNfZ2VuZXJhdG9yCitpbXBvcnQgbWVz
c2FnZV9icm9rZXIKK2ltcG9ydCBwcmludGluZworaW1wb3J0IHRlc3RfZXhwZWN0YXRpb25zCitp
bXBvcnQgdGVzdF9mYWlsdXJlcworaW1wb3J0IHRlc3RfcmVzdWx0cworaW1wb3J0IHRlc3RfcmVz
dWx0c191cGxvYWRlcgorCitmcm9tIHdlYmtpdHB5LnRoaXJkcGFydHkgaW1wb3J0IHNpbXBsZWpz
b24KK2Zyb20gd2Via2l0cHkudG9vbCBpbXBvcnQgZ3JhbW1hcgorCitfbG9nID0gbG9nZ2luZy5n
ZXRMb2dnZXIoIndlYmtpdHB5LmxheW91dF90ZXN0cy5ydW5fd2Via2l0X3Rlc3RzIikKKworIyBC
dWlsZGVyIGJhc2UgVVJMIHdoZXJlIHdlIGhhdmUgdGhlIGFyY2hpdmVkIHRlc3QgcmVzdWx0cy4K
K0JVSUxERVJfQkFTRV9VUkwgPSAiaHR0cDovL2J1aWxkLmNocm9taXVtLm9yZy9idWlsZGJvdC9s
YXlvdXRfdGVzdF9yZXN1bHRzLyIKKworTEFZT1VUX1RFU1RTX0RJUkVDVE9SWSA9ICJMYXlvdXRU
ZXN0cyIgKyBvcy5zZXAKKworVGVzdEV4cGVjdGF0aW9uc0ZpbGUgPSB0ZXN0X2V4cGVjdGF0aW9u
cy5UZXN0RXhwZWN0YXRpb25zRmlsZQorCisKK2RlZiBzdW1tYXJpemVfdW5leHBlY3RlZF9yZXN1
bHRzKHBvcnRfb2JqLCBleHBlY3RhdGlvbnMsIHJlc3VsdF9zdW1tYXJ5LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0cnlfc3VtbWFyeSk6CisgICAgIiIiU3VtbWFyaXplIGFu
eSB1bmV4cGVjdGVkIHJlc3VsdHMgYXMgYSBkaWN0LgorCisgICAgRklYTUU6IHNwbGl0IHRoaXMg
ZGF0YSBzdHJ1Y3R1cmUgaW50byBhIHNlcGFyYXRlIGNsYXNzPworCisgICAgQXJnczoKKyAgICAg
ICAgcG9ydF9vYmo6IGludGVyZmFjZSB0byBwb3J0LXNwZWNpZmljIGhvb2tzCisgICAgICAgIGV4
cGVjdGF0aW9uczogdGVzdF9leHBlY3RhdGlvbnMuVGVzdEV4cGVjdGF0aW9ucyBvYmplY3QKKyAg
ICAgICAgcmVzdWx0X3N1bW1hcnk6IHN1bW1hcnkgb2JqZWN0IGZyb20gaW5pdGlhbCB0ZXN0IHJ1
bnMKKyAgICAgICAgcmV0cnlfc3VtbWFyeTogc3VtbWFyeSBvYmplY3QgZnJvbSBmaW5hbCB0ZXN0
IHJ1biBvZiByZXRyaWVkIHRlc3RzCisgICAgUmV0dXJuczoKKyAgICAgICAgQSBkaWN0aW9uYXJ5
IGNvbnRhaW5pbmcgYSBzdW1tYXJ5IG9mIHRoZSB1bmV4cGVjdGVkIHJlc3VsdHMgZnJvbSB0aGUK
KyAgICAgICAgcnVuLCB3aXRoIHRoZSBmb2xsb3dpbmcgZmllbGRzOgorICAgICAgICAndmVyc2lv
bic6IGEgdmVyc2lvbiBpbmRpY2F0b3IgKDEgaW4gdGhpcyB2ZXJzaW9uKQorICAgICAgICAnZml4
YWJsZSc6ICMgb2YgZml4YWJsZSB0ZXN0cyAoTk9XIC0gUEFTUykKKyAgICAgICAgJ3NraXBwZWQn
OiAjIG9mIHNraXBwZWQgdGVzdHMgKE5PVyAmIFNLSVBQRUQpCisgICAgICAgICdudW1fcmVncmVz
c2lvbnMnOiAjIG9mIG5vbi1mbGFreSBmYWlsdXJlcworICAgICAgICAnbnVtX2ZsYWt5JzogIyBv
ZiBmbGFreSBmYWlsdXJlcworICAgICAgICAnbnVtX3Bhc3Nlcyc6ICMgb2YgdW5leHBlY3RlZCBw
YXNzZXMKKyAgICAgICAgJ3Rlc3RzJzogYSBkaWN0IG9mIHRlc3RzIC0+IHsnZXhwZWN0ZWQnOiAn
Li4uJywgJ2FjdHVhbCc6ICcuLi4nfQorICAgICIiIgorICAgIHJlc3VsdHMgPSB7fQorICAgIHJl
c3VsdHNbJ3ZlcnNpb24nXSA9IDEKKworICAgIHRiZSA9IHJlc3VsdF9zdW1tYXJ5LnRlc3RzX2J5
X2V4cGVjdGF0aW9uCisgICAgdGJ0ID0gcmVzdWx0X3N1bW1hcnkudGVzdHNfYnlfdGltZWxpbmUK
KyAgICByZXN1bHRzWydmaXhhYmxlJ10gPSBsZW4odGJ0W3Rlc3RfZXhwZWN0YXRpb25zLk5PV10g
LQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YmVbdGVzdF9leHBlY3RhdGlvbnMu
UEFTU10pCisgICAgcmVzdWx0c1snc2tpcHBlZCddID0gbGVuKHRidFt0ZXN0X2V4cGVjdGF0aW9u
cy5OT1ddICYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGJlW3Rlc3RfZXhwZWN0
YXRpb25zLlNLSVBdKQorCisgICAgbnVtX3Bhc3NlcyA9IDAKKyAgICBudW1fZmxha3kgPSAwCisg
ICAgbnVtX3JlZ3Jlc3Npb25zID0gMAorICAgIGtleXdvcmRzID0ge30KKyAgICBmb3IgaywgdiBp
biBUZXN0RXhwZWN0YXRpb25zRmlsZS5FWFBFQ1RBVElPTlMuaXRlcml0ZW1zKCk6CisgICAgICAg
IGtleXdvcmRzW3ZdID0gay51cHBlcigpCisKKyAgICB0ZXN0cyA9IHt9CisgICAgZm9yIGZpbGVu
YW1lLCByZXN1bHQgaW4gcmVzdWx0X3N1bW1hcnkudW5leHBlY3RlZF9yZXN1bHRzLml0ZXJpdGVt
cygpOgorICAgICAgICAjIE5vdGUgdGhhdCBpZiBhIHRlc3QgY3Jhc2hlZCBpbiB0aGUgb3JpZ2lu
YWwgcnVuLCB3ZSBpZ25vcmUKKyAgICAgICAgIyB3aGV0aGVyIG9yIG5vdCBpdCBjcmFzaGVkIHdo
ZW4gd2UgcmV0cmllZCBpdCAoaWYgd2UgcmV0cmllZCBpdCksCisgICAgICAgICMgYW5kIGFsd2F5
cyBjb25zaWRlciB0aGUgcmVzdWx0IG5vdCBmbGFreS4KKyAgICAgICAgdGVzdCA9IHBvcnRfb2Jq
LnJlbGF0aXZlX3Rlc3RfZmlsZW5hbWUoZmlsZW5hbWUpCisgICAgICAgIGV4cGVjdGVkID0gZXhw
ZWN0YXRpb25zLmdldF9leHBlY3RhdGlvbnNfc3RyaW5nKGZpbGVuYW1lKQorICAgICAgICBhY3R1
YWwgPSBba2V5d29yZHNbcmVzdWx0XV0KKworICAgICAgICBpZiByZXN1bHQgPT0gdGVzdF9leHBl
Y3RhdGlvbnMuUEFTUzoKKyAgICAgICAgICAgIG51bV9wYXNzZXMgKz0gMQorICAgICAgICBlbGlm
IHJlc3VsdCA9PSB0ZXN0X2V4cGVjdGF0aW9ucy5DUkFTSDoKKyAgICAgICAgICAgIG51bV9yZWdy
ZXNzaW9ucyArPSAxCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBpZiBmaWxlbmFtZSBub3Qg
aW4gcmV0cnlfc3VtbWFyeS51bmV4cGVjdGVkX3Jlc3VsdHM6CisgICAgICAgICAgICAgICAgYWN0
dWFsLmV4dGVuZChleHBlY3RhdGlvbnMuZ2V0X2V4cGVjdGF0aW9uc19zdHJpbmcoCisgICAgICAg
ICAgICAgICAgICAgIGZpbGVuYW1lKS5zcGxpdCgiICIpKQorICAgICAgICAgICAgICAgIG51bV9m
bGFreSArPSAxCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHJ5X3Jlc3Vs
dCA9IHJldHJ5X3N1bW1hcnkudW5leHBlY3RlZF9yZXN1bHRzW2ZpbGVuYW1lXQorICAgICAgICAg
ICAgICAgIGlmIHJlc3VsdCAhPSByZXRyeV9yZXN1bHQ6CisgICAgICAgICAgICAgICAgICAgIGFj
dHVhbC5hcHBlbmQoa2V5d29yZHNbcmV0cnlfcmVzdWx0XSkKKyAgICAgICAgICAgICAgICAgICAg
bnVtX2ZsYWt5ICs9IDEKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAg
ICBudW1fcmVncmVzc2lvbnMgKz0gMQorCisgICAgICAgIHRlc3RzW3Rlc3RdID0ge30KKyAgICAg
ICAgdGVzdHNbdGVzdF1bJ2V4cGVjdGVkJ10gPSBleHBlY3RlZAorICAgICAgICB0ZXN0c1t0ZXN0
XVsnYWN0dWFsJ10gPSAiICIuam9pbihhY3R1YWwpCisKKyAgICByZXN1bHRzWyd0ZXN0cyddID0g
dGVzdHMKKyAgICByZXN1bHRzWydudW1fcGFzc2VzJ10gPSBudW1fcGFzc2VzCisgICAgcmVzdWx0
c1snbnVtX2ZsYWt5J10gPSBudW1fZmxha3kKKyAgICByZXN1bHRzWydudW1fcmVncmVzc2lvbnMn
XSA9IG51bV9yZWdyZXNzaW9ucworCisgICAgcmV0dXJuIHJlc3VsdHMKKworCitjbGFzcyBUZXN0
UnVubmVyOgorICAgICIiIkEgY2xhc3MgZm9yIG1hbmFnaW5nIHJ1bm5pbmcgYSBzZXJpZXMgb2Yg
dGVzdHMgb24gYSBzZXJpZXMgb2YgbGF5b3V0CisgICAgdGVzdCBmaWxlcy4iIiIKKworICAgIEhU
VFBfU1VCRElSID0gb3Muc2VwLmpvaW4oWycnLCAnaHR0cCcsICcnXSkKKyAgICBXRUJTT0NLRVRf
U1VCRElSID0gb3Muc2VwLmpvaW4oWycnLCAnd2Vic29ja2V0JywgJyddKQorCisgICAgIyBUaGUg
cGVyLXRlc3QgdGltZW91dCBpbiBtaWxsaXNlY29uZHMsIGlmIG5vIC0tdGltZS1vdXQtbXMgb3B0
aW9uIHdhcworICAgICMgZ2l2ZW4gdG8gcnVuX3dlYmtpdF90ZXN0cy4gVGhpcyBzaG91bGQgY29y
cmVzcG9uZCB0byB0aGUgZGVmYXVsdCB0aW1lb3V0CisgICAgIyBpbiBEdW1wUmVuZGVyVHJlZS4K
KyAgICBERUZBVUxUX1RFU1RfVElNRU9VVF9NUyA9IDYgKiAxMDAwCisKKyAgICBkZWYgX19pbml0
X18oc2VsZiwgcG9ydCwgb3B0aW9ucywgcHJpbnRlcik6CisgICAgICAgICIiIkluaXRpYWxpemUg
dGVzdCBydW5uZXIgZGF0YSBzdHJ1Y3R1cmVzLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAg
cG9ydDogYW4gb2JqZWN0IGltcGxlbWVudGluZyBwb3J0LXNwZWNpZmljCisgICAgICAgICAgb3B0
aW9uczogYSBkaWN0aW9uYXJ5IG9mIGNvbW1hbmQgbGluZSBvcHRpb25zCisgICAgICAgICAgcHJp
bnRlcjogYSBQcmludGVyIG9iamVjdCB0byByZWNvcmQgdXBkYXRlcyB0by4KKyAgICAgICAgIiIi
CisgICAgICAgIHNlbGYuX3BvcnQgPSBwb3J0CisgICAgICAgIHNlbGYuX29wdGlvbnMgPSBvcHRp
b25zCisgICAgICAgIHNlbGYuX3ByaW50ZXIgPSBwcmludGVyCisgICAgICAgIHNlbGYuX21lc3Nh
Z2VfYnJva2VyID0gTm9uZQorCisgICAgICAgICMgZGlzYWJsZSB3c3Mgc2VydmVyLiBuZWVkIHRv
IGluc3RhbGwgcHlPcGVuU1NMIG9uIGJ1aWxkYm90cy4KKyAgICAgICAgIyBzZWxmLl93ZWJzb2Nr
ZXRfc2VjdXJlX3NlcnZlciA9IHdlYnNvY2tldF9zZXJ2ZXIuUHlXZWJTb2NrZXQoCisgICAgICAg
ICMgICAgICAgIG9wdGlvbnMucmVzdWx0c19kaXJlY3RvcnksIHVzZV90bHM9VHJ1ZSwgcG9ydD05
MzIzKQorCisgICAgICAgICMgYSBzZXQgb2YgdGVzdCBmaWxlcywgYW5kIHRoZSBzYW1lIHRlc3Rz
IGFzIGEgbGlzdAorICAgICAgICBzZWxmLl90ZXN0X2ZpbGVzID0gc2V0KCkKKyAgICAgICAgc2Vs
Zi5fdGVzdF9maWxlc19saXN0ID0gTm9uZQorICAgICAgICBzZWxmLl9yZXN1bHRfcXVldWUgPSBR
dWV1ZS5RdWV1ZSgpCisgICAgICAgIHNlbGYuX3JldHJ5aW5nID0gRmFsc2UKKworICAgIGRlZiBj
b2xsZWN0X3Rlc3RzKHNlbGYsIGFyZ3MsIGxhc3RfdW5leHBlY3RlZF9yZXN1bHRzKToKKyAgICAg
ICAgIiIiRmluZCBhbGwgdGhlIGZpbGVzIHRvIHRlc3QuCisKKyAgICAgICAgQXJnczoKKyAgICAg
ICAgICBhcmdzOiBsaXN0IG9mIHRlc3QgYXJndW1lbnRzIGZyb20gdGhlIGNvbW1hbmQgbGluZQor
ICAgICAgICAgIGxhc3RfdW5leHBlY3RlZF9yZXN1bHRzOiBsaXN0IG9mIHVuZXhwZWN0ZWQgcmVz
dWx0cyB0byByZXRlc3QsIGlmIGFueQorCisgICAgICAgICIiIgorICAgICAgICBwYXRocyA9IFtz
ZWxmLl9zdHJpcF90ZXN0X2Rpcl9wcmVmaXgoYXJnKSBmb3IgYXJnIGluIGFyZ3MgaWYgYXJnIGFu
ZCBhcmcgIT0gJyddCisgICAgICAgIHBhdGhzICs9IGxhc3RfdW5leHBlY3RlZF9yZXN1bHRzCisg
ICAgICAgIGlmIHNlbGYuX29wdGlvbnMudGVzdF9saXN0OgorICAgICAgICAgICAgcGF0aHMgKz0g
cmVhZF90ZXN0X2ZpbGVzKHNlbGYuX29wdGlvbnMudGVzdF9saXN0KQorICAgICAgICBzZWxmLl90
ZXN0X2ZpbGVzID0gc2VsZi5fcG9ydC50ZXN0cyhwYXRocykKKworICAgIGRlZiBfc3RyaXBfdGVz
dF9kaXJfcHJlZml4KHNlbGYsIHBhdGgpOgorICAgICAgICBpZiBwYXRoLnN0YXJ0c3dpdGgoTEFZ
T1VUX1RFU1RTX0RJUkVDVE9SWSk6CisgICAgICAgICAgICByZXR1cm4gcGF0aFtsZW4oTEFZT1VU
X1RFU1RTX0RJUkVDVE9SWSk6XQorICAgICAgICByZXR1cm4gcGF0aAorCisgICAgZGVmIGxpbnQo
c2VsZik6CisgICAgICAgIGxpbnRfZmFpbGVkID0gRmFsc2UKKworICAgICAgICAjIENyZWF0aW5n
IHRoZSBleHBlY2F0aW9ucyBmb3IgZWFjaCBwbGF0Zm9ybS9jb25maWd1cmF0aW9uIHBhaXIgZG9l
cworICAgICAgICAjIGFsbCB0aGUgdGVzdCBsaXN0IHBhcnNpbmcgYW5kIGVuc3VyZXMgaXQncyBj
b3JyZWN0IHN5bnRheCAoZS5nLiBubworICAgICAgICAjIGR1cGVzKS4KKyAgICAgICAgZm9yIHBs
YXRmb3JtX25hbWUgaW4gc2VsZi5fcG9ydC50ZXN0X3BsYXRmb3JtX25hbWVzKCk6CisgICAgICAg
ICAgICB0cnk6CisgICAgICAgICAgICAgICAgc2VsZi5wYXJzZV9leHBlY3RhdGlvbnMocGxhdGZv
cm1fbmFtZSwgaXNfZGVidWdfbW9kZT1UcnVlKQorICAgICAgICAgICAgZXhjZXB0IHRlc3RfZXhw
ZWN0YXRpb25zLlBhcnNlRXJyb3I6CisgICAgICAgICAgICAgICAgbGludF9mYWlsZWQgPSBUcnVl
CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc2VsZi5wYXJzZV9leHBlY3RhdGlv
bnMocGxhdGZvcm1fbmFtZSwgaXNfZGVidWdfbW9kZT1GYWxzZSkKKyAgICAgICAgICAgIGV4Y2Vw
dCB0ZXN0X2V4cGVjdGF0aW9ucy5QYXJzZUVycm9yOgorICAgICAgICAgICAgICAgIGxpbnRfZmFp
bGVkID0gVHJ1ZQorCisgICAgICAgIHNlbGYuX3ByaW50ZXIud3JpdGUoIiIpCisgICAgICAgIGlm
IGxpbnRfZmFpbGVkOgorICAgICAgICAgICAgX2xvZy5lcnJvcigiTGludCBmYWlsZWQuIikKKyAg
ICAgICAgICAgIHJldHVybiAtMQorCisgICAgICAgIF9sb2cuaW5mbygiTGludCBzdWNjZWVkZWQu
IikKKyAgICAgICAgcmV0dXJuIDAKKworICAgIGRlZiBwYXJzZV9leHBlY3RhdGlvbnMoc2VsZiwg
dGVzdF9wbGF0Zm9ybV9uYW1lLCBpc19kZWJ1Z19tb2RlKToKKyAgICAgICAgIiIiUGFyc2UgdGhl
IGV4cGVjdGF0aW9ucyBmcm9tIHRoZSB0ZXN0X2xpc3QgZmlsZXMgYW5kIHJldHVybiBhIGRhdGEK
KyAgICAgICAgc3RydWN0dXJlIGhvbGRpbmcgdGhlbS4gVGhyb3dzIGFuIGVycm9yIGlmIHRoZSB0
ZXN0X2xpc3QgZmlsZXMgaGF2ZQorICAgICAgICBpbnZhbGlkIHN5bnRheC4iIiIKKyAgICAgICAg
aWYgc2VsZi5fb3B0aW9ucy5saW50X3Rlc3RfZmlsZXM6CisgICAgICAgICAgICB0ZXN0X2ZpbGVz
ID0gTm9uZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgdGVzdF9maWxlcyA9IHNlbGYuX3Rl
c3RfZmlsZXMKKworICAgICAgICBleHBlY3RhdGlvbnNfc3RyID0gc2VsZi5fcG9ydC50ZXN0X2V4
cGVjdGF0aW9ucygpCisgICAgICAgIG92ZXJyaWRlc19zdHIgPSBzZWxmLl9wb3J0LnRlc3RfZXhw
ZWN0YXRpb25zX292ZXJyaWRlcygpCisgICAgICAgIHNlbGYuX2V4cGVjdGF0aW9ucyA9IHRlc3Rf
ZXhwZWN0YXRpb25zLlRlc3RFeHBlY3RhdGlvbnMoCisgICAgICAgICAgICBzZWxmLl9wb3J0LCB0
ZXN0X2ZpbGVzLCBleHBlY3RhdGlvbnNfc3RyLCB0ZXN0X3BsYXRmb3JtX25hbWUsCisgICAgICAg
ICAgICBpc19kZWJ1Z19tb2RlLCBzZWxmLl9vcHRpb25zLmxpbnRfdGVzdF9maWxlcywKKyAgICAg
ICAgICAgIG92ZXJyaWRlcz1vdmVycmlkZXNfc3RyKQorICAgICAgICByZXR1cm4gc2VsZi5fZXhw
ZWN0YXRpb25zCisKKyAgICBkZWYgcHJlcGFyZV9saXN0c19hbmRfcHJpbnRfb3V0cHV0KHNlbGYp
OgorICAgICAgICAiIiJDcmVhdGUgYXBwcm9wcmlhdGUgc3Vic2V0cyBvZiB0ZXN0IGxpc3RzIGFu
ZCByZXR1cm5zIGEKKyAgICAgICAgUmVzdWx0U3VtbWFyeSBvYmplY3QuIEFsc28gcHJpbnRzIGV4
cGVjdGVkIHRlc3QgY291bnRzLgorICAgICAgICAiIiIKKworICAgICAgICAjIFJlbW92ZSBza2lw
cGVkIC0gYm90aCBmaXhhYmxlIGFuZCBpZ25vcmVkIC0gZmlsZXMgZnJvbSB0aGUKKyAgICAgICAg
IyB0b3AtbGV2ZWwgbGlzdCBvZiBmaWxlcyB0byB0ZXN0LgorICAgICAgICBudW1fYWxsX3Rlc3Rf
ZmlsZXMgPSBsZW4oc2VsZi5fdGVzdF9maWxlcykKKyAgICAgICAgc2VsZi5fcHJpbnRlci5wcmlu
dF9leHBlY3RlZCgiRm91bmQ6ICAlZCB0ZXN0cyIgJQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChsZW4oc2VsZi5fdGVzdF9maWxlcykpKQorICAgICAgICBpZiBub3QgbnVt
X2FsbF90ZXN0X2ZpbGVzOgorICAgICAgICAgICAgX2xvZy5jcml0aWNhbCgnTm8gdGVzdHMgdG8g
cnVuLicpCisgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgICAgIHNraXBwZWQgPSBzZXQo
KQorICAgICAgICBpZiBudW1fYWxsX3Rlc3RfZmlsZXMgPiAxIGFuZCBub3Qgc2VsZi5fb3B0aW9u
cy5mb3JjZToKKyAgICAgICAgICAgIHNraXBwZWQgPSBzZWxmLl9leHBlY3RhdGlvbnMuZ2V0X3Rl
c3RzX3dpdGhfcmVzdWx0X3R5cGUoCisgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2V4
cGVjdGF0aW9ucy5TS0lQKQorICAgICAgICAgICAgc2VsZi5fdGVzdF9maWxlcyAtPSBza2lwcGVk
CisKKyAgICAgICAgIyBDcmVhdGUgYSBzb3J0ZWQgbGlzdCBvZiB0ZXN0IGZpbGVzIHNvIHRoZSBz
dWJzZXQgY2h1bmssCisgICAgICAgICMgaWYgdXNlZCwgY29udGFpbnMgYWxwaGFiZXRpY2FsbHkg
Y29uc2VjdXRpdmUgdGVzdHMuCisgICAgICAgIHNlbGYuX3Rlc3RfZmlsZXNfbGlzdCA9IGxpc3Qo
c2VsZi5fdGVzdF9maWxlcykKKyAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5yYW5kb21pemVfb3Jk
ZXI6CisgICAgICAgICAgICByYW5kb20uc2h1ZmZsZShzZWxmLl90ZXN0X2ZpbGVzX2xpc3QpCisg
ICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLl90ZXN0X2ZpbGVzX2xpc3Quc29ydCgpCisK
KyAgICAgICAgIyBJZiB0aGUgdXNlciBzcGVjaWZpZXMgdGhleSBqdXN0IHdhbnQgdG8gcnVuIGEg
c3Vic2V0IG9mIHRoZSB0ZXN0cywKKyAgICAgICAgIyBqdXN0IGdyYWIgYSBzdWJzZXQgb2YgdGhl
IG5vbi1za2lwcGVkIHRlc3RzLgorICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnJ1bl9jaHVuayBv
ciBzZWxmLl9vcHRpb25zLnJ1bl9wYXJ0OgorICAgICAgICAgICAgY2h1bmtfdmFsdWUgPSBzZWxm
Ll9vcHRpb25zLnJ1bl9jaHVuayBvciBzZWxmLl9vcHRpb25zLnJ1bl9wYXJ0CisgICAgICAgICAg
ICB0ZXN0X2ZpbGVzID0gc2VsZi5fdGVzdF9maWxlc19saXN0CisgICAgICAgICAgICB0cnk6Cisg
ICAgICAgICAgICAgICAgKGNodW5rX251bSwgY2h1bmtfbGVuKSA9IGNodW5rX3ZhbHVlLnNwbGl0
KCI6IikKKyAgICAgICAgICAgICAgICBjaHVua19udW0gPSBpbnQoY2h1bmtfbnVtKQorICAgICAg
ICAgICAgICAgIGFzc2VydChjaHVua19udW0gPj0gMCkKKyAgICAgICAgICAgICAgICB0ZXN0X3Np
emUgPSBpbnQoY2h1bmtfbGVuKQorICAgICAgICAgICAgICAgIGFzc2VydCh0ZXN0X3NpemUgPiAw
KQorICAgICAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgICAgIF9sb2cuY3JpdGljYWwoImlu
dmFsaWQgY2h1bmsgJyVzJyIgJSBjaHVua192YWx1ZSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
Tm9uZQorCisgICAgICAgICAgICAjIEdldCB0aGUgbnVtYmVyIG9mIHRlc3RzCisgICAgICAgICAg
ICBudW1fdGVzdHMgPSBsZW4odGVzdF9maWxlcykKKworICAgICAgICAgICAgIyBHZXQgdGhlIHN0
YXJ0IG9mZnNldCBvZiB0aGUgc2xpY2UuCisgICAgICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnJ1
bl9jaHVuazoKKyAgICAgICAgICAgICAgICBjaHVua19sZW4gPSB0ZXN0X3NpemUKKyAgICAgICAg
ICAgICAgICAjIEluIHRoaXMgY2FzZSBjaHVua19udW0gY2FuIGJlIHJlYWxseSBsYXJnZS4gV2Ug
bmVlZAorICAgICAgICAgICAgICAgICMgdG8gbWFrZSB0aGUgc2xhdmUgZml0IGluIHRoZSBjdXJy
ZW50IG51bWJlciBvZiB0ZXN0cy4KKyAgICAgICAgICAgICAgICBzbGljZV9zdGFydCA9IChjaHVu
a19udW0gKiBjaHVua19sZW4pICUgbnVtX3Rlc3RzCisgICAgICAgICAgICBlbHNlOgorICAgICAg
ICAgICAgICAgICMgVmFsaWRhdGUgdGhlIGRhdGEuCisgICAgICAgICAgICAgICAgYXNzZXJ0KHRl
c3Rfc2l6ZSA8PSBudW1fdGVzdHMpCisgICAgICAgICAgICAgICAgYXNzZXJ0KGNodW5rX251bSA8
PSB0ZXN0X3NpemUpCisKKyAgICAgICAgICAgICAgICAjIFRvIGNvdW50IHRoZSBjaHVua19sZW4s
IGFuZCBtYWtlIHN1cmUgd2UgZG9uJ3Qgc2tpcAorICAgICAgICAgICAgICAgICMgc29tZSB0ZXN0
cywgd2Ugcm91bmQgdG8gdGhlIG5leHQgdmFsdWUgdGhhdCBmaXRzIGV4YWN0bHkKKyAgICAgICAg
ICAgICAgICAjIGFsbCB0aGUgcGFydHMuCisgICAgICAgICAgICAgICAgcm91bmRlZF90ZXN0cyA9
IG51bV90ZXN0cworICAgICAgICAgICAgICAgIGlmIHJvdW5kZWRfdGVzdHMgJSB0ZXN0X3NpemUg
IT0gMDoKKyAgICAgICAgICAgICAgICAgICAgcm91bmRlZF90ZXN0cyA9IChudW1fdGVzdHMgKyB0
ZXN0X3NpemUgLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChudW1fdGVz
dHMgJSB0ZXN0X3NpemUpKQorCisgICAgICAgICAgICAgICAgY2h1bmtfbGVuID0gcm91bmRlZF90
ZXN0cyAvIHRlc3Rfc2l6ZQorICAgICAgICAgICAgICAgIHNsaWNlX3N0YXJ0ID0gY2h1bmtfbGVu
ICogKGNodW5rX251bSAtIDEpCisgICAgICAgICAgICAgICAgIyBJdCBkb2VzIG5vdCBtaW5kIGlm
IHdlIGdvIG92ZXIgdGVzdF9zaXplLgorCisgICAgICAgICAgICAjIEdldCB0aGUgZW5kIG9mZnNl
dCBvZiB0aGUgc2xpY2UuCisgICAgICAgICAgICBzbGljZV9lbmQgPSBtaW4obnVtX3Rlc3RzLCBz
bGljZV9zdGFydCArIGNodW5rX2xlbikKKworICAgICAgICAgICAgZmlsZXMgPSB0ZXN0X2ZpbGVz
W3NsaWNlX3N0YXJ0OnNsaWNlX2VuZF0KKworICAgICAgICAgICAgdGVzdHNfcnVuX21zZyA9ICdS
dW5uaW5nOiAlZCB0ZXN0cyAoY2h1bmsgc2xpY2UgWyVkOiVkXSBvZiAlZCknICUgKAorICAgICAg
ICAgICAgICAgIChzbGljZV9lbmQgLSBzbGljZV9zdGFydCksIHNsaWNlX3N0YXJ0LCBzbGljZV9l
bmQsIG51bV90ZXN0cykKKyAgICAgICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfZXhwZWN0ZWQo
dGVzdHNfcnVuX21zZykKKworICAgICAgICAgICAgIyBJZiB3ZSByZWFjaGVkIHRoZSBlbmQgYW5k
IHdlIGRvbid0IGhhdmUgZW5vdWdoIHRlc3RzLCB3ZSBydW4gc29tZQorICAgICAgICAgICAgIyBm
cm9tIHRoZSBiZWdpbm5pbmcuCisgICAgICAgICAgICBpZiBzbGljZV9lbmQgLSBzbGljZV9zdGFy
dCA8IGNodW5rX2xlbjoKKyAgICAgICAgICAgICAgICBleHRyYSA9IGNodW5rX2xlbiAtIChzbGlj
ZV9lbmQgLSBzbGljZV9zdGFydCkKKyAgICAgICAgICAgICAgICBleHRyYV9tc2cgPSAoJyAgIGxh
c3QgY2h1bmsgaXMgcGFydGlhbCwgYXBwZW5kaW5nIFswOiVkXScgJQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGV4dHJhKQorICAgICAgICAgICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRf
ZXhwZWN0ZWQoZXh0cmFfbXNnKQorICAgICAgICAgICAgICAgIHRlc3RzX3J1bl9tc2cgKz0gIlxu
IiArIGV4dHJhX21zZworICAgICAgICAgICAgICAgIGZpbGVzLmV4dGVuZCh0ZXN0X2ZpbGVzWzA6
ZXh0cmFdKQorICAgICAgICAgICAgdGVzdHNfcnVuX2ZpbGVuYW1lID0gb3MucGF0aC5qb2luKHNl
bGYuX29wdGlvbnMucmVzdWx0c19kaXJlY3RvcnksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgInRlc3RzX3J1bi50eHQiKQorICAgICAgICAgICAgd2l0aCBj
b2RlY3Mub3Blbih0ZXN0c19ydW5fZmlsZW5hbWUsICJ3IiwgInV0Zi04IikgYXMgZmlsZToKKyAg
ICAgICAgICAgICAgICBmaWxlLndyaXRlKHRlc3RzX3J1bl9tc2cgKyAiXG4iKQorCisgICAgICAg
ICAgICBsZW5fc2tpcF9jaHVuayA9IGludChsZW4oZmlsZXMpICogbGVuKHNraXBwZWQpIC8KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0KGxlbihzZWxmLl90ZXN0X2ZpbGVz
KSkpCisgICAgICAgICAgICBza2lwX2NodW5rX2xpc3QgPSBsaXN0KHNraXBwZWQpWzA6bGVuX3Nr
aXBfY2h1bmtdCisgICAgICAgICAgICBza2lwX2NodW5rID0gc2V0KHNraXBfY2h1bmtfbGlzdCkK
KworICAgICAgICAgICAgIyBVcGRhdGUgZXhwZWN0YXRpb25zIHNvIHRoYXQgdGhlIHN0YXRzIGFy
ZSBjYWxjdWxhdGVkIGNvcnJlY3RseS4KKyAgICAgICAgICAgICMgV2UgbmVlZCB0byBwYXNzIGEg
bGlzdCB0aGF0IGluY2x1ZGVzIHRoZSByaWdodCAjIG9mIHNraXBwZWQgZmlsZXMKKyAgICAgICAg
ICAgICMgdG8gUGFyc2VFeHBlY3RhdGlvbnMgc28gdGhhdCBSZXN1bHRTdW1tYXJ5KCkgd2lsbCBn
ZXQgdGhlIGNvcnJlY3QKKyAgICAgICAgICAgICMgc3RhdHMuIFNvLCB3ZSBhZGQgaW4gdGhlIHN1
YnNldCBvZiBza2lwcGVkIGZpbGVzLCBhbmQgdGhlbgorICAgICAgICAgICAgIyBzdWJ0cmFjdCB0
aGVtIGJhY2sgb3V0LgorICAgICAgICAgICAgc2VsZi5fdGVzdF9maWxlc19saXN0ID0gZmlsZXMg
KyBza2lwX2NodW5rX2xpc3QKKyAgICAgICAgICAgIHNlbGYuX3Rlc3RfZmlsZXMgPSBzZXQoc2Vs
Zi5fdGVzdF9maWxlc19saXN0KQorCisgICAgICAgICAgICBzZWxmLl9leHBlY3RhdGlvbnMgPSBz
ZWxmLnBhcnNlX2V4cGVjdGF0aW9ucygKKyAgICAgICAgICAgICAgICBzZWxmLl9wb3J0LnRlc3Rf
cGxhdGZvcm1fbmFtZSgpLAorICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMuY29uZmlndXJh
dGlvbiA9PSAnRGVidWcnKQorCisgICAgICAgICAgICBzZWxmLl90ZXN0X2ZpbGVzID0gc2V0KGZp
bGVzKQorICAgICAgICAgICAgc2VsZi5fdGVzdF9maWxlc19saXN0ID0gZmlsZXMKKyAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgIHNraXBfY2h1bmsgPSBza2lwcGVkCisKKyAgICAgICAgcmVzdWx0
X3N1bW1hcnkgPSBSZXN1bHRTdW1tYXJ5KHNlbGYuX2V4cGVjdGF0aW9ucywKKyAgICAgICAgICAg
IHNlbGYuX3Rlc3RfZmlsZXMgfCBza2lwX2NodW5rKQorICAgICAgICBzZWxmLl9wcmludF9leHBl
Y3RlZF9yZXN1bHRzX29mX3R5cGUocmVzdWx0X3N1bW1hcnksCisgICAgICAgICAgICB0ZXN0X2V4
cGVjdGF0aW9ucy5QQVNTLCAicGFzc2VzIikKKyAgICAgICAgc2VsZi5fcHJpbnRfZXhwZWN0ZWRf
cmVzdWx0c19vZl90eXBlKHJlc3VsdF9zdW1tYXJ5LAorICAgICAgICAgICAgdGVzdF9leHBlY3Rh
dGlvbnMuRkFJTCwgImZhaWx1cmVzIikKKyAgICAgICAgc2VsZi5fcHJpbnRfZXhwZWN0ZWRfcmVz
dWx0c19vZl90eXBlKHJlc3VsdF9zdW1tYXJ5LAorICAgICAgICAgICAgdGVzdF9leHBlY3RhdGlv
bnMuRkxBS1ksICJmbGFreSIpCisgICAgICAgIHNlbGYuX3ByaW50X2V4cGVjdGVkX3Jlc3VsdHNf
b2ZfdHlwZShyZXN1bHRfc3VtbWFyeSwKKyAgICAgICAgICAgIHRlc3RfZXhwZWN0YXRpb25zLlNL
SVAsICJza2lwcGVkIikKKworICAgICAgICBpZiBzZWxmLl9vcHRpb25zLmZvcmNlOgorICAgICAg
ICAgICAgc2VsZi5fcHJpbnRlci5wcmludF9leHBlY3RlZCgnUnVubmluZyBhbGwgdGVzdHMsIGlu
Y2x1ZGluZyAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdza2lw
cyAoLS1mb3JjZSknKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBOb3RlIHRoYXQgd2Ug
ZG9uJ3QgYWN0dWFsbHkgcnVuIHRoZSBza2lwcGVkIHRlc3RzICh0aGV5IHdlcmUKKyAgICAgICAg
ICAgICMgc3VidHJhY3RlZCBvdXQgb2Ygc2VsZi5fdGVzdF9maWxlcywgYWJvdmUpLCBidXQgd2Ug
c3R1YiBvdXQgdGhlCisgICAgICAgICAgICAjIHJlc3VsdHMgaGVyZSBzbyB0aGUgc3RhdGlzdGlj
cyBjYW4gcmVtYWluIGFjY3VyYXRlLgorICAgICAgICAgICAgZm9yIHRlc3QgaW4gc2tpcF9jaHVu
azoKKyAgICAgICAgICAgICAgICByZXN1bHQgPSB0ZXN0X3Jlc3VsdHMuVGVzdFJlc3VsdCh0ZXN0
LAorICAgICAgICAgICAgICAgICAgICBmYWlsdXJlcz1bXSwgdGVzdF9ydW5fdGltZT0wLCB0b3Rh
bF90aW1lX2Zvcl9hbGxfZGlmZnM9MCwKKyAgICAgICAgICAgICAgICAgICAgdGltZV9mb3JfZGlm
ZnM9MCkKKyAgICAgICAgICAgICAgICByZXN1bHQudHlwZSA9IHRlc3RfZXhwZWN0YXRpb25zLlNL
SVAKKyAgICAgICAgICAgICAgICByZXN1bHRfc3VtbWFyeS5hZGQocmVzdWx0LCBleHBlY3RlZD1U
cnVlKQorICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X2V4cGVjdGVkKCcnKQorCisgICAgICAg
IHJldHVybiByZXN1bHRfc3VtbWFyeQorCisgICAgZGVmIF9nZXRfZGlyX2Zvcl90ZXN0X2ZpbGUo
c2VsZiwgdGVzdF9maWxlKToKKyAgICAgICAgIiIiUmV0dXJucyB0aGUgaGlnaGVzdC1sZXZlbCBk
aXJlY3RvcnkgYnkgd2hpY2ggdG8gc2hhcmQgdGhlIGdpdmVuCisgICAgICAgIHRlc3QgZmlsZS4i
IiIKKyAgICAgICAgaW5kZXggPSB0ZXN0X2ZpbGUucmZpbmQob3Muc2VwICsgTEFZT1VUX1RFU1RT
X0RJUkVDVE9SWSkKKworICAgICAgICB0ZXN0X2ZpbGUgPSB0ZXN0X2ZpbGVbaW5kZXggKyBsZW4o
TEFZT1VUX1RFU1RTX0RJUkVDVE9SWSk6XQorICAgICAgICB0ZXN0X2ZpbGVfcGFydHMgPSB0ZXN0
X2ZpbGUuc3BsaXQob3Muc2VwLCAxKQorICAgICAgICBkaXJlY3RvcnkgPSB0ZXN0X2ZpbGVfcGFy
dHNbMF0KKyAgICAgICAgdGVzdF9maWxlID0gdGVzdF9maWxlX3BhcnRzWzFdCisKKyAgICAgICAg
IyBUaGUgaHR0cCB0ZXN0cyBhcmUgdmVyeSBzdGFibGUgb24gbWFjL2xpbnV4LgorICAgICAgICAj
IFRPRE8ob2phbik6IE1ha2UgdGhlIGh0dHAgc2VydmVyIG9uIFdpbmRvd3MgYmUgYXBhY2hlIHNv
IHdlIGNhbgorICAgICAgICAjIHR1cm4gc2hhcmQgdGhlIGh0dHAgdGVzdHMgdGhlcmUgYXMgd2Vs
bC4gU3dpdGNoaW5nIHRvIGFwYWNoZSBpcworICAgICAgICAjIHdoYXQgbWFkZSB0aGVtIHN0YWJs
ZSBvbiBsaW51eC9tYWMuCisgICAgICAgIHJldHVybl92YWx1ZSA9IGRpcmVjdG9yeQorICAgICAg
ICB3aGlsZSAoKGRpcmVjdG9yeSAhPSAnaHR0cCcgb3Igc3lzLnBsYXRmb3JtIGluICgnZGFyd2lu
JywgJ2xpbnV4MicpKQorICAgICAgICAgICAgICAgIGFuZCB0ZXN0X2ZpbGUuZmluZChvcy5zZXAp
ID49IDApOgorICAgICAgICAgICAgdGVzdF9maWxlX3BhcnRzID0gdGVzdF9maWxlLnNwbGl0KG9z
LnNlcCwgMSkKKyAgICAgICAgICAgIGRpcmVjdG9yeSA9IHRlc3RfZmlsZV9wYXJ0c1swXQorICAg
ICAgICAgICAgcmV0dXJuX3ZhbHVlID0gb3MucGF0aC5qb2luKHJldHVybl92YWx1ZSwgZGlyZWN0
b3J5KQorICAgICAgICAgICAgdGVzdF9maWxlID0gdGVzdF9maWxlX3BhcnRzWzFdCisKKyAgICAg
ICAgcmV0dXJuIHJldHVybl92YWx1ZQorCisgICAgZGVmIF9nZXRfdGVzdF9pbnB1dF9mb3JfZmls
ZShzZWxmLCB0ZXN0X2ZpbGUpOgorICAgICAgICAiIiJSZXR1cm5zIHRoZSBhcHByb3ByaWF0ZSBU
ZXN0SW5wdXQgb2JqZWN0IGZvciB0aGUgZmlsZS4gTW9zdGx5IHRoaXMKKyAgICAgICAgaXMgdXNl
ZCBmb3IgbG9va2luZyB1cCB0aGUgdGltZW91dCB2YWx1ZSAoaW4gbXMpIHRvIHVzZSBmb3IgdGhl
IGdpdmVuCisgICAgICAgIHRlc3QuIiIiCisgICAgICAgIGlmIHNlbGYuX3Rlc3RfaXNfc2xvdyh0
ZXN0X2ZpbGUpOgorICAgICAgICAgICAgcmV0dXJuIFRlc3RJbnB1dCh0ZXN0X2ZpbGUsIHNlbGYu
X29wdGlvbnMuc2xvd190aW1lX291dF9tcykKKyAgICAgICAgcmV0dXJuIFRlc3RJbnB1dCh0ZXN0
X2ZpbGUsIHNlbGYuX29wdGlvbnMudGltZV9vdXRfbXMpCisKKyAgICBkZWYgX3Rlc3RfcmVxdWly
ZXNfbG9jayhzZWxmLCB0ZXN0X2ZpbGUpOgorICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiB0aGUg
dGVzdCBuZWVkcyB0byBiZSBsb2NrZWQgd2hlbgorICAgICAgICBydW5uaW5nIG11bHRpcGxlIGNv
cGllcyBvZiBOUldUcy4iIiIKKyAgICAgICAgc3BsaXRfcGF0aCA9IHRlc3RfZmlsZS5zcGxpdChv
cy5zZXApCisgICAgICAgIHJldHVybiAnaHR0cCcgaW4gc3BsaXRfcGF0aCBvciAnd2Vic29ja2V0
JyBpbiBzcGxpdF9wYXRoCisKKyAgICBkZWYgX3Rlc3RfaXNfc2xvdyhzZWxmLCB0ZXN0X2ZpbGUp
OgorICAgICAgICByZXR1cm4gc2VsZi5fZXhwZWN0YXRpb25zLmhhc19tb2RpZmllcih0ZXN0X2Zp
bGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rf
ZXhwZWN0YXRpb25zLlNMT1cpCisKKyAgICBkZWYgX3NoYXJkX3Rlc3RzKHNlbGYsIHRlc3RfZmls
ZXMsIHVzZV9yZWFsX3NoYXJkcyk6CisgICAgICAgICIiIkdyb3VwcyB0ZXN0cyBpbnRvIGJhdGNo
ZXMuCisgICAgICAgIFRoaXMgaGVscHMgZW5zdXJlIHRoYXQgdGVzdHMgdGhhdCBkZXBlbmQgb24g
ZWFjaCBvdGhlciAoYWthIGJhZCB0ZXN0cyEpCisgICAgICAgIGNvbnRpbnVlIHRvIHJ1biB0b2dl
dGhlciBhcyBtb3N0IGNyb3NzLXRlc3RzIGRlcGVuZGVuY2llcyB0ZW5kIHRvCisgICAgICAgIG9j
Y3VyIHdpdGhpbiB0aGUgc2FtZSBkaXJlY3RvcnkuIElmIHVzZV9yZWFsX3NoYXJkcyBpcyBGYWxz
ZSwgd2UKKyAgICAgICAgcHV0IGVhY2ggKG5vbi1IVFRQL3dlYnNvY2tldCkgdGVzdCBpbnRvIGl0
cyBvd24gc2hhcmQgZm9yIG1heGltdW0KKyAgICAgICAgY29uY3VycmVuY3kgaW5zdGVhZCBvZiB0
cnlpbmcgdG8gZG8gYW55IHNvcnQgb2YgcmVhbCBzaGFyZGluZy4KKworICAgICAgICBSZXR1cm46
CisgICAgICAgICAgICBBIGxpc3Qgb2YgbGlzdHMgb2YgVGVzdElucHV0IG9iamVjdHMuCisgICAg
ICAgICIiIgorICAgICAgICAjIEZJWE1FOiB3aGVuIHdlIGFkZGVkIGh0dHAgbG9ja2luZywgd2Ug
Y2hhbmdlZCBob3cgdGhpcyB3b3JrcyBzdWNoCisgICAgICAgICMgdGhhdCB3ZSBhbHdheXMgbHVt
cCBhbGwgb2YgdGhlIEhUVFAgdGhyZWFkcyBpbnRvIGEgc2luZ2xlIHNoYXJkLgorICAgICAgICAj
IFRoYXQgd2lsbCBzbG93IGRvd24gZXhwZXJpbWVudGFsLWZ1bGx5LXBhcmFsbGVsLCBidXQgaXQn
cyB1bmNsZWFyCisgICAgICAgICMgd2hhdCB0aGUgYmVzdCBhbHRlcm5hdGl2ZSBpcyBjb21wbGV0
ZWx5IHJldmFtcGluZyBob3cgd2UgdHJhY2sKKyAgICAgICAgIyB3aGVuIHRvIGdyYWIgdGhlIGxv
Y2suCisKKyAgICAgICAgdGVzdF9saXN0cyA9IFtdCisgICAgICAgIHRlc3RzX3RvX2h0dHBfbG9j
ayA9IFtdCisgICAgICAgIGlmIG5vdCB1c2VfcmVhbF9zaGFyZHM6CisgICAgICAgICAgICBmb3Ig
dGVzdF9maWxlIGluIHRlc3RfZmlsZXM6CisgICAgICAgICAgICAgICAgdGVzdF9pbnB1dCA9IHNl
bGYuX2dldF90ZXN0X2lucHV0X2Zvcl9maWxlKHRlc3RfZmlsZSkKKyAgICAgICAgICAgICAgICBp
ZiBzZWxmLl90ZXN0X3JlcXVpcmVzX2xvY2sodGVzdF9maWxlKToKKyAgICAgICAgICAgICAgICAg
ICAgdGVzdHNfdG9faHR0cF9sb2NrLmFwcGVuZCh0ZXN0X2lucHV0KQorICAgICAgICAgICAgICAg
IGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHRlc3RfbGlzdHMuYXBwZW5kKCgiLiIsIFt0ZXN0
X2lucHV0XSkpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB0ZXN0c19ieV9kaXIgPSB7fQor
ICAgICAgICAgICAgZm9yIHRlc3RfZmlsZSBpbiB0ZXN0X2ZpbGVzOgorICAgICAgICAgICAgICAg
IGRpcmVjdG9yeSA9IHNlbGYuX2dldF9kaXJfZm9yX3Rlc3RfZmlsZSh0ZXN0X2ZpbGUpCisgICAg
ICAgICAgICAgICAgdGVzdF9pbnB1dCA9IHNlbGYuX2dldF90ZXN0X2lucHV0X2Zvcl9maWxlKHRl
c3RfZmlsZSkKKyAgICAgICAgICAgICAgICBpZiBzZWxmLl90ZXN0X3JlcXVpcmVzX2xvY2sodGVz
dF9maWxlKToKKyAgICAgICAgICAgICAgICAgICAgdGVzdHNfdG9faHR0cF9sb2NrLmFwcGVuZCh0
ZXN0X2lucHV0KQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHRl
c3RzX2J5X2Rpci5zZXRkZWZhdWx0KGRpcmVjdG9yeSwgW10pCisgICAgICAgICAgICAgICAgICAg
IHRlc3RzX2J5X2RpcltkaXJlY3RvcnldLmFwcGVuZCh0ZXN0X2lucHV0KQorICAgICAgICAgICAg
IyBTb3J0IGJ5IHRoZSBudW1iZXIgb2YgdGVzdHMgaW4gdGhlIGRpciBzbyB0aGF0IHRoZSBvbmVz
IHdpdGggdGhlCisgICAgICAgICAgICAjIG1vc3QgdGVzdHMgZ2V0IHJ1biBmaXJzdCBpbiBvcmRl
ciB0byBtYXhpbWl6ZSBwYXJhbGxlbGl6YXRpb24uCisgICAgICAgICAgICAjIE51bWJlciBvZiB0
ZXN0cyBpcyBhIGdvb2QgZW5vdWdoLCBidXQgbm90IHBlcmZlY3QsIGFwcHJveGltYXRpb24KKyAg
ICAgICAgICAgICMgb2YgaG93IGxvbmcgdGhhdCBzZXQgb2YgdGVzdHMgd2lsbCB0YWtlIHRvIHJ1
bi4gV2UgY2FuJ3QganVzdCB1c2UKKyAgICAgICAgICAgICMgYSBQcmlvcml0eVF1ZXVlIHVudGls
IHdlIG1vdmUgdG8gUHl0aG9uIDIuNi4KKyAgICAgICAgICAgIGZvciBkaXJlY3RvcnkgaW4gdGVz
dHNfYnlfZGlyOgorICAgICAgICAgICAgICAgIHRlc3RfbGlzdCA9IHRlc3RzX2J5X2RpcltkaXJl
Y3RvcnldCisgICAgICAgICAgICAgICAgIyBLZWVwIHRoZSB0ZXN0cyBpbiBhbHBoYWJldGljYWwg
b3JkZXIuCisgICAgICAgICAgICAgICAgIyBGSVhNRTogUmVtb3ZlIG9uY2UgdGVzdHMgYXJlIGZp
eGVkIHNvIHRoZXkgY2FuIGJlIHJ1biBpbiBhbnkKKyAgICAgICAgICAgICAgICAjIG9yZGVyLgor
ICAgICAgICAgICAgICAgIHRlc3RfbGlzdC5yZXZlcnNlKCkKKyAgICAgICAgICAgICAgICB0ZXN0
X2xpc3RfdHVwbGUgPSAoZGlyZWN0b3J5LCB0ZXN0X2xpc3QpCisgICAgICAgICAgICAgICAgdGVz
dF9saXN0cy5hcHBlbmQodGVzdF9saXN0X3R1cGxlKQorICAgICAgICAgICAgdGVzdF9saXN0cy5z
b3J0KGxhbWJkYSBhLCBiOiBjbXAobGVuKGJbMV0pLCBsZW4oYVsxXSkpKQorCisgICAgICAgICMg
UHV0IHRoZSBodHRwIHRlc3RzIGZpcnN0LiBUaGVyZSBhcmUgb25seSBhIGNvdXBsZSBodW5kcmVk
IG9mIHRoZW0sCisgICAgICAgICMgYnV0IGVhY2ggaHR0cCB0ZXN0IHRha2VzIGEgdmVyeSBsb25n
IHRpbWUgdG8gcnVuLCBzbyBzb3J0aW5nIGJ5IHRoZQorICAgICAgICAjIG51bWJlciBvZiB0ZXN0
cyBkb2Vzbid0IGFjY3VyYXRlbHkgY2FwdHVyZSBob3cgbG9uZyB0aGV5IHRha2UgdG8gcnVuLgor
ICAgICAgICBpZiB0ZXN0c190b19odHRwX2xvY2s6CisgICAgICAgICAgICB0ZXN0c190b19odHRw
X2xvY2sucmV2ZXJzZSgpCisgICAgICAgICAgICB0ZXN0X2xpc3RzLmluc2VydCgwLCAoInRlc3Rz
X3RvX2h0dHBfbG9jayIsIHRlc3RzX3RvX2h0dHBfbG9jaykpCisKKyAgICAgICAgcmV0dXJuIHRl
c3RfbGlzdHMKKworICAgIGRlZiBfY29udGFpbnNfdGVzdHMoc2VsZiwgc3ViZGlyKToKKyAgICAg
ICAgZm9yIHRlc3RfZmlsZSBpbiBzZWxmLl90ZXN0X2ZpbGVzOgorICAgICAgICAgICAgaWYgdGVz
dF9maWxlLmZpbmQoc3ViZGlyKSA+PSAwOgorICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisg
ICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIF9udW1fd29ya2VycyhzZWxmKToKKyAgICAg
ICAgcmV0dXJuIGludChzZWxmLl9vcHRpb25zLmNoaWxkX3Byb2Nlc3NlcykKKworICAgIGRlZiBf
cnVuX3Rlc3RzKHNlbGYsIGZpbGVfbGlzdCwgcmVzdWx0X3N1bW1hcnkpOgorICAgICAgICAiIiJS
dW5zIHRoZSB0ZXN0cyBpbiB0aGUgZmlsZV9saXN0LgorCisgICAgICAgIFJldHVybjogQSB0dXBs
ZSAoa2V5Ym9hcmRfaW50ZXJydXB0ZWQsIHRocmVhZF90aW1pbmdzLCB0ZXN0X3RpbWluZ3MsCisg
ICAgICAgICAgICBpbmRpdmlkdWFsX3Rlc3RfdGltaW5ncykKKyAgICAgICAgICAgIGtleWJvYXJk
X2ludGVycnVwdGVkIGlzIHdoZXRoZXIgc29tZW9uZSB0eXBlZCBDdHJsXkMKKyAgICAgICAgICAg
IHRocmVhZF90aW1pbmdzIGlzIGEgbGlzdCBvZiBkaWN0cyB3aXRoIHRoZSB0b3RhbCBydW50aW1l
CisgICAgICAgICAgICAgIG9mIGVhY2ggdGhyZWFkIHdpdGggJ25hbWUnLCAnbnVtX3Rlc3RzJywg
J3RvdGFsX3RpbWUnIHByb3BlcnRpZXMKKyAgICAgICAgICAgIHRlc3RfdGltaW5ncyBpcyBhIGxp
c3Qgb2YgdGltaW5ncyBmb3IgZWFjaCBzaGFyZGVkIHN1YmRpcmVjdG9yeQorICAgICAgICAgICAg
ICBvZiB0aGUgZm9ybSBbdGltZSwgZGlyZWN0b3J5X25hbWUsIG51bV90ZXN0c10KKyAgICAgICAg
ICAgIGluZGl2aWR1YWxfdGVzdF90aW1pbmdzIGlzIGEgbGlzdCBvZiBydW4gdGltZXMgZm9yIGVh
Y2ggdGVzdAorICAgICAgICAgICAgICBpbiB0aGUgZm9ybSB7ZmlsZW5hbWU6ZmlsZW5hbWUsIHRl
c3RfcnVuX3RpbWU6dGVzdF9ydW5fdGltZX0KKyAgICAgICAgICAgIHJlc3VsdF9zdW1tYXJ5OiBz
dW1tYXJ5IG9iamVjdCB0byBwb3B1bGF0ZSB3aXRoIHRoZSByZXN1bHRzCisgICAgICAgICIiIgor
CisgICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfdXBkYXRlKCdTaGFyZGluZyB0ZXN0cyAuLi4n
KQorICAgICAgICBudW1fd29ya2VycyA9IHNlbGYuX251bV93b3JrZXJzKCkKKyAgICAgICAgdGVz
dF9saXN0cyA9IHNlbGYuX3NoYXJkX3Rlc3RzKGZpbGVfbGlzdCwKKyAgICAgICAgICAgIG51bV93
b3JrZXJzID4gMSBhbmQgbm90IHNlbGYuX29wdGlvbnMuZXhwZXJpbWVudGFsX2Z1bGx5X3BhcmFs
bGVsKQorICAgICAgICBmaWxlbmFtZV9xdWV1ZSA9IFF1ZXVlLlF1ZXVlKCkKKyAgICAgICAgZm9y
IGl0ZW0gaW4gdGVzdF9saXN0czoKKyAgICAgICAgICAgIGZpbGVuYW1lX3F1ZXVlLnB1dChpdGVt
KQorCisgICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfdXBkYXRlKCdTdGFydGluZyAlcyAuLi4n
ICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JhbW1hci5wbHVyYWxpemUo
J3dvcmtlcicsIG51bV93b3JrZXJzKSkKKyAgICAgICAgc2VsZi5fbWVzc2FnZV9icm9rZXIgPSBt
ZXNzYWdlX2Jyb2tlci5nZXQoc2VsZi5fcG9ydCwgc2VsZi5fb3B0aW9ucykKKyAgICAgICAgYnJv
a2VyID0gc2VsZi5fbWVzc2FnZV9icm9rZXIKKyAgICAgICAgc2VsZi5fY3VycmVudF9maWxlbmFt
ZV9xdWV1ZSA9IGZpbGVuYW1lX3F1ZXVlCisgICAgICAgIHNlbGYuX2N1cnJlbnRfcmVzdWx0X3N1
bW1hcnkgPSByZXN1bHRfc3VtbWFyeQorCisgICAgICAgIGlmIG5vdCBzZWxmLl9vcHRpb25zLmRy
eV9ydW46CisgICAgICAgICAgICB0aHJlYWRzID0gYnJva2VyLnN0YXJ0X3dvcmtlcnMoc2VsZikK
KyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHRocmVhZHMgPSB7fQorCisgICAgICAgIHNlbGYu
X3ByaW50ZXIucHJpbnRfdXBkYXRlKCJTdGFydGluZyB0ZXN0aW5nIC4uLiIpCisgICAgICAgIGtl
eWJvYXJkX2ludGVycnVwdGVkID0gRmFsc2UKKyAgICAgICAgaWYgbm90IHNlbGYuX29wdGlvbnMu
ZHJ5X3J1bjoKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBicm9rZXIucnVuX21l
c3NhZ2VfbG9vcCgpCisgICAgICAgICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6CisgICAg
ICAgICAgICAgICAgX2xvZy5pbmZvKCJJbnRlcnJ1cHRlZCwgZXhpdGluZyIpCisgICAgICAgICAg
ICAgICAgYnJva2VyLmNhbmNlbF93b3JrZXJzKCkKKyAgICAgICAgICAgICAgICBrZXlib2FyZF9p
bnRlcnJ1cHRlZCA9IFRydWUKKyAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICAj
IFVuZXhwZWN0ZWQgZXhjZXB0aW9uOyBkb24ndCB0cnkgdG8gY2xlYW4gdXAgd29ya2Vycy4KKyAg
ICAgICAgICAgICAgICBfbG9nLmluZm8oIkV4Y2VwdGlvbiByYWlzZWQsIGV4aXRpbmciKQorICAg
ICAgICAgICAgICAgIHJhaXNlCisKKyAgICAgICAgdGhyZWFkX3RpbWluZ3MsIHRlc3RfdGltaW5n
cywgaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3MgPSBcCisgICAgICAgICAgICBzZWxmLl9jb2xsZWN0
X3RpbWluZ19pbmZvKHRocmVhZHMpCisKKyAgICAgICAgYnJva2VyLmNsZWFudXAoKQorICAgICAg
ICBzZWxmLl9tZXNzYWdlX2Jyb2tlciA9IE5vbmUKKyAgICAgICAgcmV0dXJuIChrZXlib2FyZF9p
bnRlcnJ1cHRlZCwgdGhyZWFkX3RpbWluZ3MsIHRlc3RfdGltaW5ncywKKyAgICAgICAgICAgICAg
ICBpbmRpdmlkdWFsX3Rlc3RfdGltaW5ncykKKworICAgIGRlZiB1cGRhdGUoc2VsZik6CisgICAg
ICAgIHNlbGYudXBkYXRlX3N1bW1hcnkoc2VsZi5fY3VycmVudF9yZXN1bHRfc3VtbWFyeSkKKwor
ICAgIGRlZiBfY29sbGVjdF90aW1pbmdfaW5mbyhzZWxmLCB0aHJlYWRzKToKKyAgICAgICAgdGVz
dF90aW1pbmdzID0ge30KKyAgICAgICAgaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3MgPSBbXQorICAg
ICAgICB0aHJlYWRfdGltaW5ncyA9IFtdCisKKyAgICAgICAgZm9yIHRocmVhZCBpbiB0aHJlYWRz
OgorICAgICAgICAgICAgdGhyZWFkX3RpbWluZ3MuYXBwZW5kKHsnbmFtZSc6IHRocmVhZC5nZXRO
YW1lKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdudW1fdGVzdHMnOiB0
aHJlYWQuZ2V0X251bV90ZXN0cygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAndG90YWxfdGltZSc6IHRocmVhZC5nZXRfdG90YWxfdGltZSgpfSkKKyAgICAgICAgICAgIHRl
c3RfdGltaW5ncy51cGRhdGUodGhyZWFkLmdldF90ZXN0X2dyb3VwX3RpbWluZ19zdGF0cygpKQor
ICAgICAgICAgICAgaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3MuZXh0ZW5kKHRocmVhZC5nZXRfdGVz
dF9yZXN1bHRzKCkpCisKKyAgICAgICAgcmV0dXJuICh0aHJlYWRfdGltaW5ncywgdGVzdF90aW1p
bmdzLCBpbmRpdmlkdWFsX3Rlc3RfdGltaW5ncykKKworICAgIGRlZiBuZWVkc19odHRwKHNlbGYp
OgorICAgICAgICAiIiJSZXR1cm5zIHdoZXRoZXIgdGhlIHRlc3QgcnVubmVyIG5lZWRzIGFuIEhU
VFAgc2VydmVyLiIiIgorICAgICAgICByZXR1cm4gc2VsZi5fY29udGFpbnNfdGVzdHMoc2VsZi5I
VFRQX1NVQkRJUikKKworICAgIGRlZiBuZWVkc193ZWJzb2NrZXQoc2VsZik6CisgICAgICAgICIi
IlJldHVybnMgd2hldGhlciB0aGUgdGVzdCBydW5uZXIgbmVlZHMgYSBXRUJTT0NLRVQgc2VydmVy
LiIiIgorICAgICAgICByZXR1cm4gc2VsZi5fY29udGFpbnNfdGVzdHMoc2VsZi5XRUJTT0NLRVRf
U1VCRElSKQorCisgICAgZGVmIHNldF91cF9ydW4oc2VsZik6CisgICAgICAgICIiIkNvbmZpZ3Vy
ZXMgdGhlIHN5c3RlbSB0byBiZSByZWFkeSB0byBydW4gdGVzdHMuCisKKyAgICAgICAgUmV0dXJu
cyBhIFJlc3VsdFN1bW1hcnkgb2JqZWN0IGlmIHdlIHNob3VsZCBjb250aW51ZSB0byBydW4gdGVz
dHMsCisgICAgICAgIG9yIE5vbmUgaWYgd2Ugc2hvdWxkIGFib3J0LgorCisgICAgICAgICIiIgor
ICAgICAgICAjIFRoaXMgbXVzdCBiZSBzdGFydGVkIGJlZm9yZSB3ZSBjaGVjayB0aGUgc3lzdGVt
IGRlcGVuZGVuY2llcywKKyAgICAgICAgIyBzaW5jZSB0aGUgaGVscGVyIG1heSBkbyB0aGluZ3Mg
dG8gbWFrZSB0aGUgc2V0dXAgY29ycmVjdC4KKyAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF91
cGRhdGUoIlN0YXJ0aW5nIGhlbHBlciAuLi4iKQorICAgICAgICBzZWxmLl9wb3J0LnN0YXJ0X2hl
bHBlcigpCisKKyAgICAgICAgIyBDaGVjayB0aGF0IHRoZSBzeXN0ZW0gZGVwZW5kZW5jaWVzICh0
aGVtZXMsIGZvbnRzLCAuLi4pIGFyZSBjb3JyZWN0LgorICAgICAgICBpZiBub3Qgc2VsZi5fb3B0
aW9ucy5ub2NoZWNrX3N5c19kZXBzOgorICAgICAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF91
cGRhdGUoIkNoZWNraW5nIHN5c3RlbSBkZXBlbmRlbmNpZXMgLi4uIikKKyAgICAgICAgICAgIGlm
IG5vdCBzZWxmLl9wb3J0LmNoZWNrX3N5c19kZXBzKHNlbGYubmVlZHNfaHR0cCgpKToKKyAgICAg
ICAgICAgICAgICBzZWxmLl9wb3J0LnN0b3BfaGVscGVyKCkKKyAgICAgICAgICAgICAgICByZXR1
cm4gTm9uZQorCisgICAgICAgIGlmIHNlbGYuX29wdGlvbnMuY2xvYmJlcl9vbGRfcmVzdWx0czoK
KyAgICAgICAgICAgIHNlbGYuX2Nsb2JiZXJfb2xkX3Jlc3VsdHMoKQorCisgICAgICAgICMgQ3Jl
YXRlIHRoZSBvdXRwdXQgZGlyZWN0b3J5IGlmIGl0IGRvZXNuJ3QgYWxyZWFkeSBleGlzdC4KKyAg
ICAgICAgc2VsZi5fcG9ydC5tYXliZV9tYWtlX2RpcmVjdG9yeShzZWxmLl9vcHRpb25zLnJlc3Vs
dHNfZGlyZWN0b3J5KQorCisgICAgICAgIHNlbGYuX3BvcnQuc2V0dXBfdGVzdF9ydW4oKQorCisg
ICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfdXBkYXRlKCJQcmVwYXJpbmcgdGVzdHMgLi4uIikK
KyAgICAgICAgcmVzdWx0X3N1bW1hcnkgPSBzZWxmLnByZXBhcmVfbGlzdHNfYW5kX3ByaW50X291
dHB1dCgpCisgICAgICAgIGlmIG5vdCByZXN1bHRfc3VtbWFyeToKKyAgICAgICAgICAgIHJldHVy
biBOb25lCisKKyAgICAgICAgcmV0dXJuIHJlc3VsdF9zdW1tYXJ5CisKKyAgICBkZWYgcnVuKHNl
bGYsIHJlc3VsdF9zdW1tYXJ5KToKKyAgICAgICAgIiIiUnVuIGFsbCBvdXIgdGVzdHMgb24gYWxs
IG91ciB0ZXN0IGZpbGVzLgorCisgICAgICAgIEZvciBlYWNoIHRlc3QgZmlsZSwgd2UgcnVuIGVh
Y2ggdGVzdCB0eXBlLiBJZiB0aGVyZSBhcmUgYW55IGZhaWx1cmVzLAorICAgICAgICB3ZSBjb2xs
ZWN0IHRoZW0gZm9yIHJlcG9ydGluZy4KKworICAgICAgICBBcmdzOgorICAgICAgICAgIHJlc3Vs
dF9zdW1tYXJ5OiBhIHN1bW1hcnkgb2JqZWN0IHRyYWNraW5nIHRoZSB0ZXN0IHJlc3VsdHMuCisK
KyAgICAgICAgUmV0dXJuOgorICAgICAgICAgIFRoZSBudW1iZXIgb2YgdW5leHBlY3RlZCByZXN1
bHRzICgwID09IHN1Y2Nlc3MpCisgICAgICAgICIiIgorICAgICAgICAjIGdhdGhlcl90ZXN0X2Zp
bGVzKCkgbXVzdCBoYXZlIGJlZW4gY2FsbGVkIGZpcnN0IHRvIGluaXRpYWxpemUgdXMuCisgICAg
ICAgICMgSWYgd2UgZGlkbid0IGZpbmQgYW55IGZpbGVzIHRvIHRlc3QsIHdlJ3ZlIGVycm9yZWQg
b3V0IGFscmVhZHkgaW4KKyAgICAgICAgIyBwcmVwYXJlX2xpc3RzX2FuZF9wcmludF9vdXRwdXQo
KS4KKyAgICAgICAgYXNzZXJ0KGxlbihzZWxmLl90ZXN0X2ZpbGVzKSkKKworICAgICAgICBzdGFy
dF90aW1lID0gdGltZS50aW1lKCkKKworICAgICAgICBrZXlib2FyZF9pbnRlcnJ1cHRlZCwgdGhy
ZWFkX3RpbWluZ3MsIHRlc3RfdGltaW5ncywgXAorICAgICAgICAgICAgaW5kaXZpZHVhbF90ZXN0
X3RpbWluZ3MgPSAoCisgICAgICAgICAgICBzZWxmLl9ydW5fdGVzdHMoc2VsZi5fdGVzdF9maWxl
c19saXN0LCByZXN1bHRfc3VtbWFyeSkpCisKKyAgICAgICAgIyBXZSBleGNsdWRlIHRoZSBjcmFz
aGVzIGZyb20gdGhlIGxpc3Qgb2YgcmVzdWx0cyB0byByZXRyeSwgYmVjYXVzZQorICAgICAgICAj
IHdlIHdhbnQgdG8gdHJlYXQgZXZlbiBhIHBvdGVudGlhbGx5IGZsYWt5IGNyYXNoIGFzIGFuIGVy
cm9yLgorICAgICAgICBmYWlsdXJlcyA9IHNlbGYuX2dldF9mYWlsdXJlcyhyZXN1bHRfc3VtbWFy
eSwgaW5jbHVkZV9jcmFzaGVzPUZhbHNlKQorICAgICAgICByZXRyeV9zdW1tYXJ5ID0gcmVzdWx0
X3N1bW1hcnkKKyAgICAgICAgd2hpbGUgKGxlbihmYWlsdXJlcykgYW5kIHNlbGYuX29wdGlvbnMu
cmV0cnlfZmFpbHVyZXMgYW5kCisgICAgICAgICAgICBub3Qgc2VsZi5fcmV0cnlpbmcgYW5kIG5v
dCBrZXlib2FyZF9pbnRlcnJ1cHRlZCk6CisgICAgICAgICAgICBfbG9nLmluZm8oJycpCisgICAg
ICAgICAgICBfbG9nLmluZm8oIlJldHJ5aW5nICVkIHVuZXhwZWN0ZWQgZmFpbHVyZShzKSAuLi4i
ICUgbGVuKGZhaWx1cmVzKSkKKyAgICAgICAgICAgIF9sb2cuaW5mbygnJykKKyAgICAgICAgICAg
IHNlbGYuX3JldHJ5aW5nID0gVHJ1ZQorICAgICAgICAgICAgcmV0cnlfc3VtbWFyeSA9IFJlc3Vs
dFN1bW1hcnkoc2VsZi5fZXhwZWN0YXRpb25zLCBmYWlsdXJlcy5rZXlzKCkpCisgICAgICAgICAg
ICAjIE5vdGUgdGhhdCB3ZSBpbnRlbnRpb25hbGx5IGlnbm9yZSB0aGUgcmV0dXJuIHZhbHVlIGhl
cmUuCisgICAgICAgICAgICBzZWxmLl9ydW5fdGVzdHMoZmFpbHVyZXMua2V5cygpLCByZXRyeV9z
dW1tYXJ5KQorICAgICAgICAgICAgZmFpbHVyZXMgPSBzZWxmLl9nZXRfZmFpbHVyZXMocmV0cnlf
c3VtbWFyeSwgaW5jbHVkZV9jcmFzaGVzPVRydWUpCisKKyAgICAgICAgZW5kX3RpbWUgPSB0aW1l
LnRpbWUoKQorCisgICAgICAgIHNlbGYuX3ByaW50X3RpbWluZ19zdGF0aXN0aWNzKGVuZF90aW1l
IC0gc3RhcnRfdGltZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhy
ZWFkX3RpbWluZ3MsIHRlc3RfdGltaW5ncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3MsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlc3VsdF9zdW1tYXJ5KQorCisgICAgICAgIHNlbGYuX3ByaW50X3Jl
c3VsdF9zdW1tYXJ5KHJlc3VsdF9zdW1tYXJ5KQorCisgICAgICAgIHN5cy5zdGRvdXQuZmx1c2go
KQorICAgICAgICBzeXMuc3RkZXJyLmZsdXNoKCkKKworICAgICAgICBzZWxmLl9wcmludGVyLnBy
aW50X29uZV9saW5lX3N1bW1hcnkocmVzdWx0X3N1bW1hcnkudG90YWwsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRfc3VtbWFyeS5leHBlY3RlZCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdF9zdW1t
YXJ5LnVuZXhwZWN0ZWQpCisKKyAgICAgICAgdW5leHBlY3RlZF9yZXN1bHRzID0gc3VtbWFyaXpl
X3VuZXhwZWN0ZWRfcmVzdWx0cyhzZWxmLl9wb3J0LAorICAgICAgICAgICAgc2VsZi5fZXhwZWN0
YXRpb25zLCByZXN1bHRfc3VtbWFyeSwgcmV0cnlfc3VtbWFyeSkKKyAgICAgICAgc2VsZi5fcHJp
bnRlci5wcmludF91bmV4cGVjdGVkX3Jlc3VsdHModW5leHBlY3RlZF9yZXN1bHRzKQorCisgICAg
ICAgIGlmIChzZWxmLl9vcHRpb25zLnJlY29yZF9yZXN1bHRzIGFuZCBub3Qgc2VsZi5fb3B0aW9u
cy5kcnlfcnVuIGFuZAorICAgICAgICAgICAgbm90IGtleWJvYXJkX2ludGVycnVwdGVkKToKKyAg
ICAgICAgICAgICMgV3JpdGUgdGhlIHNhbWUgZGF0YSB0byBsb2cgZmlsZXMgYW5kIHVwbG9hZCBn
ZW5lcmF0ZWQgSlNPTiBmaWxlcworICAgICAgICAgICAgIyB0byBhcHBlbmdpbmUgc2VydmVyLgor
ICAgICAgICAgICAgc2VsZi5fdXBsb2FkX2pzb25fZmlsZXModW5leHBlY3RlZF9yZXN1bHRzLCBy
ZXN1bHRfc3VtbWFyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGl2
aWR1YWxfdGVzdF90aW1pbmdzKQorCisgICAgICAgICMgV3JpdGUgdGhlIHN1bW1hcnkgdG8gZGlz
ayAocmVzdWx0cy5odG1sKSBhbmQgZGlzcGxheSBpdCBpZiByZXF1ZXN0ZWQuCisgICAgICAgIGlm
IG5vdCBzZWxmLl9vcHRpb25zLmRyeV9ydW46CisgICAgICAgICAgICB3cm90ZV9yZXN1bHRzID0g
c2VsZi5fd3JpdGVfcmVzdWx0c19odG1sX2ZpbGUocmVzdWx0X3N1bW1hcnkpCisgICAgICAgICAg
ICBpZiBzZWxmLl9vcHRpb25zLnNob3dfcmVzdWx0cyBhbmQgd3JvdGVfcmVzdWx0czoKKyAgICAg
ICAgICAgICAgICBzZWxmLl9zaG93X3Jlc3VsdHNfaHRtbF9maWxlKCkKKworICAgICAgICAjIE5v
dyB0aGF0IHdlJ3ZlIGNvbXBsZXRlZCBhbGwgdGhlIHByb2Nlc3Npbmcgd2UgY2FuLCB3ZSByZS1y
YWlzZQorICAgICAgICAjIGEgS2V5Ym9hcmRJbnRlcnJ1cHQgaWYgbmVjZXNzYXJ5IHNvIHRoZSBj
YWxsZXIgY2FuIGhhbmRsZSBpdC4KKyAgICAgICAgaWYga2V5Ym9hcmRfaW50ZXJydXB0ZWQ6Cisg
ICAgICAgICAgICByYWlzZSBLZXlib2FyZEludGVycnVwdAorCisgICAgICAgICMgSWdub3JlIGZs
YWt5IGZhaWx1cmVzIGFuZCB1bmV4cGVjdGVkIHBhc3NlcyBzbyB3ZSBkb24ndCB0dXJuIHRoZQor
ICAgICAgICAjIGJvdCByZWQgZm9yIHRob3NlLgorICAgICAgICByZXR1cm4gdW5leHBlY3RlZF9y
ZXN1bHRzWydudW1fcmVncmVzc2lvbnMnXQorCisgICAgZGVmIGNsZWFuX3VwX3J1bihzZWxmKToK
KyAgICAgICAgIiIiUmVzdG9yZXMgdGhlIHN5c3RlbSBhZnRlciB3ZSdyZSBkb25lIHJ1bm5pbmcg
dGVzdHMuIiIiCisKKyAgICAgICAgX2xvZy5kZWJ1ZygiZmx1c2hpbmcgc3Rkb3V0IikKKyAgICAg
ICAgc3lzLnN0ZG91dC5mbHVzaCgpCisgICAgICAgIF9sb2cuZGVidWcoImZsdXNoaW5nIHN0ZGVy
ciIpCisgICAgICAgIHN5cy5zdGRlcnIuZmx1c2goKQorICAgICAgICBfbG9nLmRlYnVnKCJzdG9w
cGluZyBoZWxwZXIiKQorICAgICAgICBzZWxmLl9wb3J0LnN0b3BfaGVscGVyKCkKKworICAgIGRl
ZiB1cGRhdGVfc3VtbWFyeShzZWxmLCByZXN1bHRfc3VtbWFyeSk6CisgICAgICAgICIiIlVwZGF0
ZSB0aGUgc3VtbWFyeSBhbmQgcHJpbnQgcmVzdWx0cyB3aXRoIGFueSBjb21wbGV0ZWQgdGVzdHMu
IiIiCisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAg
ICAgcmVzdWx0ID0gdGVzdF9yZXN1bHRzLlRlc3RSZXN1bHQubG9hZHMoc2VsZi5fcmVzdWx0X3F1
ZXVlLmdldF9ub3dhaXQoKSkKKyAgICAgICAgICAgIGV4Y2VwdCBRdWV1ZS5FbXB0eToKKyAgICAg
ICAgICAgICAgICByZXR1cm4KKworICAgICAgICAgICAgZXhwZWN0ZWQgPSBzZWxmLl9leHBlY3Rh
dGlvbnMubWF0Y2hlc19hbl9leHBlY3RlZF9yZXN1bHQoCisgICAgICAgICAgICAgICAgcmVzdWx0
LmZpbGVuYW1lLCByZXN1bHQudHlwZSwgc2VsZi5fb3B0aW9ucy5waXhlbF90ZXN0cykKKyAgICAg
ICAgICAgIHJlc3VsdF9zdW1tYXJ5LmFkZChyZXN1bHQsIGV4cGVjdGVkKQorICAgICAgICAgICAg
ZXhwX3N0ciA9IHNlbGYuX2V4cGVjdGF0aW9ucy5nZXRfZXhwZWN0YXRpb25zX3N0cmluZygKKyAg
ICAgICAgICAgICAgICByZXN1bHQuZmlsZW5hbWUpCisgICAgICAgICAgICBnb3Rfc3RyID0gc2Vs
Zi5fZXhwZWN0YXRpb25zLmV4cGVjdGF0aW9uX3RvX3N0cmluZyhyZXN1bHQudHlwZSkKKyAgICAg
ICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfdGVzdF9yZXN1bHQocmVzdWx0LCBleHBlY3RlZCwg
ZXhwX3N0ciwgZ290X3N0cikKKyAgICAgICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfcHJvZ3Jl
c3MocmVzdWx0X3N1bW1hcnksIHNlbGYuX3JldHJ5aW5nLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZWxmLl90ZXN0X2ZpbGVzX2xpc3QpCisKKyAgICBkZWYgX2Ns
b2JiZXJfb2xkX3Jlc3VsdHMoc2VsZik6CisgICAgICAgICMgSnVzdCBjbG9iYmVyIHRoZSBhY3R1
YWwgdGVzdCByZXN1bHRzIGRpcmVjdG9yaWVzIHNpbmNlIHRoZSBvdGhlcgorICAgICAgICAjIGZp
bGVzIGluIHRoZSByZXN1bHRzIGRpcmVjdG9yeSBhcmUgZXhwbGljaXRseSB1c2VkIGZvciBjcm9z
cy1ydW4KKyAgICAgICAgIyB0cmFja2luZy4KKyAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF91
cGRhdGUoIkNsb2JiZXJpbmcgb2xkIHJlc3VsdHMgaW4gJXMiICUKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5yZXN1bHRzX2RpcmVjdG9yeSkKKyAgICAg
ICAgbGF5b3V0X3Rlc3RzX2RpciA9IHNlbGYuX3BvcnQubGF5b3V0X3Rlc3RzX2RpcigpCisgICAg
ICAgIHBvc3NpYmxlX2RpcnMgPSBzZWxmLl9wb3J0LnRlc3RfZGlycygpCisgICAgICAgIGZvciBk
aXJuYW1lIGluIHBvc3NpYmxlX2RpcnM6CisgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKG9z
LnBhdGguam9pbihsYXlvdXRfdGVzdHNfZGlyLCBkaXJuYW1lKSk6CisgICAgICAgICAgICAgICAg
c2h1dGlsLnJtdHJlZShvcy5wYXRoLmpvaW4oc2VsZi5fb3B0aW9ucy5yZXN1bHRzX2RpcmVjdG9y
eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJuYW1lKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZV9lcnJvcnM9VHJ1ZSkKKworICAg
IGRlZiBfZ2V0X2ZhaWx1cmVzKHNlbGYsIHJlc3VsdF9zdW1tYXJ5LCBpbmNsdWRlX2NyYXNoZXMp
OgorICAgICAgICAiIiJGaWx0ZXJzIGEgZGljdCBvZiByZXN1bHRzIGFuZCByZXR1cm5zIG9ubHkg
dGhlIGZhaWx1cmVzLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgcmVzdWx0X3N1bW1hcnk6
IHRoZSByZXN1bHRzIG9mIHRoZSB0ZXN0IHJ1bgorICAgICAgICAgIGluY2x1ZGVfY3Jhc2hlczog
d2hldGhlciBjcmFzaGVzIGFyZSBpbmNsdWRlZCBpbiB0aGUgb3V0cHV0LgorICAgICAgICAgICAg
V2UgdXNlIEZhbHNlIHdoZW4gZmluZGluZyB0aGUgbGlzdCBvZiBmYWlsdXJlcyB0byByZXRyeQor
ICAgICAgICAgICAgdG8gc2VlIGlmIHRoZSByZXN1bHRzIHdlcmUgZmxha3kuIEFsdGhvdWdoIHRo
ZSBjcmFzaGVzIG1heSBhbHNvIGJlCisgICAgICAgICAgICBmbGFreSwgd2UgdHJlYXQgdGhlbSBh
cyBpZiB0aGV5IGFyZW4ndCBzbyB0aGF0IHRoZXkncmUgbm90IGlnbm9yZWQuCisgICAgICAgIFJl
dHVybnM6CisgICAgICAgICAgYSBkaWN0IG9mIGZpbGVzIC0+IHJlc3VsdHMKKyAgICAgICAgIiIi
CisgICAgICAgIGZhaWxlZF9yZXN1bHRzID0ge30KKyAgICAgICAgZm9yIHRlc3QsIHJlc3VsdCBp
biByZXN1bHRfc3VtbWFyeS51bmV4cGVjdGVkX3Jlc3VsdHMuaXRlcml0ZW1zKCk6CisgICAgICAg
ICAgICBpZiAocmVzdWx0ID09IHRlc3RfZXhwZWN0YXRpb25zLlBBU1Mgb3IKKyAgICAgICAgICAg
ICAgICByZXN1bHQgPT0gdGVzdF9leHBlY3RhdGlvbnMuQ1JBU0ggYW5kIG5vdCBpbmNsdWRlX2Ny
YXNoZXMpOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBmYWlsZWRfcmVz
dWx0c1t0ZXN0XSA9IHJlc3VsdAorCisgICAgICAgIHJldHVybiBmYWlsZWRfcmVzdWx0cworCisg
ICAgZGVmIF91cGxvYWRfanNvbl9maWxlcyhzZWxmLCB1bmV4cGVjdGVkX3Jlc3VsdHMsIHJlc3Vs
dF9zdW1tYXJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgaW5kaXZpZHVhbF90ZXN0X3RpbWlu
Z3MpOgorICAgICAgICAiIiJXcml0ZXMgdGhlIHJlc3VsdHMgb2YgdGhlIHRlc3QgcnVuIGFzIEpT
T04gZmlsZXMgaW50byB0aGUgcmVzdWx0cworICAgICAgICBkaXIgYW5kIHVwbG9hZCB0aGUgZmls
ZXMgdG8gdGhlIGFwcGVuZ2luZSBzZXJ2ZXIuCisKKyAgICAgICAgVGhlcmUgYXJlIHRocmVlIGRp
ZmZlcmVudCBmaWxlcyB3cml0dGVuIGludG8gdGhlIHJlc3VsdHMgZGlyOgorICAgICAgICAgIHVu
ZXhwZWN0ZWRfcmVzdWx0cy5qc29uOiBBIHNob3J0IGxpc3Qgb2YgYW55IHVuZXhwZWN0ZWQgcmVz
dWx0cy4KKyAgICAgICAgICAgIFRoaXMgaXMgdXNlZCBieSB0aGUgYnVpbGRib3RzIHRvIGRpc3Bs
YXkgcmVzdWx0cy4KKyAgICAgICAgICBleHBlY3RhdGlvbnMuanNvbjogVGhpcyBpcyB1c2VkIGJ5
IHRoZSBmbGFraW5lc3MgZGFzaGJvYXJkLgorICAgICAgICAgIHJlc3VsdHMuanNvbjogQSBmdWxs
IGxpc3Qgb2YgdGhlIHJlc3VsdHMgLSB1c2VkIGJ5IHRoZSBmbGFraW5lc3MKKyAgICAgICAgICAg
IGRhc2hib2FyZCBhbmQgdGhlIGFnZ3JlZ2F0ZSByZXN1bHRzIGRhc2hib2FyZC4KKworICAgICAg
ICBBcmdzOgorICAgICAgICAgIHVuZXhwZWN0ZWRfcmVzdWx0czogZGljdCBvZiB1bmV4cGVjdGVk
IHJlc3VsdHMKKyAgICAgICAgICByZXN1bHRfc3VtbWFyeTogZnVsbCBzdW1tYXJ5IG9iamVjdAor
ICAgICAgICAgIGluZGl2aWR1YWxfdGVzdF90aW1pbmdzOiBsaXN0IG9mIHRlc3QgdGltZXMgKHVz
ZWQgYnkgdGhlIGZsYWtpbmVzcworICAgICAgICAgICAgZGFzaGJvYXJkKS4KKyAgICAgICAgIiIi
CisgICAgICAgIHJlc3VsdHNfZGlyZWN0b3J5ID0gc2VsZi5fb3B0aW9ucy5yZXN1bHRzX2RpcmVj
dG9yeQorICAgICAgICBfbG9nLmRlYnVnKCJXcml0aW5nIEpTT04gZmlsZXMgaW4gJXMuIiAlIHJl
c3VsdHNfZGlyZWN0b3J5KQorICAgICAgICB1bmV4cGVjdGVkX2pzb25fcGF0aCA9IG9zLnBhdGgu
am9pbihyZXN1bHRzX2RpcmVjdG9yeSwgInVuZXhwZWN0ZWRfcmVzdWx0cy5qc29uIikKKyAgICAg
ICAgd2l0aCBjb2RlY3Mub3Blbih1bmV4cGVjdGVkX2pzb25fcGF0aCwgInciLCAidXRmLTgiKSBh
cyBmaWxlOgorICAgICAgICAgICAgc2ltcGxlanNvbi5kdW1wKHVuZXhwZWN0ZWRfcmVzdWx0cywg
ZmlsZSwgc29ydF9rZXlzPVRydWUsIGluZGVudD0yKQorCisgICAgICAgICMgV3JpdGUgYSBqc29u
IGZpbGUgb2YgdGhlIHRlc3RfZXhwZWN0YXRpb25zLnR4dCBmaWxlIGZvciB0aGUgbGF5b3V0Cisg
ICAgICAgICMgdGVzdHMgZGFzaGJvYXJkLgorICAgICAgICBleHBlY3RhdGlvbnNfcGF0aCA9IG9z
LnBhdGguam9pbihyZXN1bHRzX2RpcmVjdG9yeSwgImV4cGVjdGF0aW9ucy5qc29uIikKKyAgICAg
ICAgZXhwZWN0YXRpb25zX2pzb24gPSBcCisgICAgICAgICAgICBzZWxmLl9leHBlY3RhdGlvbnMu
Z2V0X2V4cGVjdGF0aW9uc19qc29uX2Zvcl9hbGxfcGxhdGZvcm1zKCkKKyAgICAgICAgd2l0aCBj
b2RlY3Mub3BlbihleHBlY3RhdGlvbnNfcGF0aCwgInciLCAidXRmLTgiKSBhcyBmaWxlOgorICAg
ICAgICAgICAgZmlsZS53cml0ZSh1IkFERF9FWFBFQ1RBVElPTlMoJXMpOyIgJSBleHBlY3RhdGlv
bnNfanNvbikKKworICAgICAgICBnZW5lcmF0b3IgPSBqc29uX2xheW91dF9yZXN1bHRzX2dlbmVy
YXRvci5KU09OTGF5b3V0UmVzdWx0c0dlbmVyYXRvcigKKyAgICAgICAgICAgIHNlbGYuX3BvcnQs
IHNlbGYuX29wdGlvbnMuYnVpbGRlcl9uYW1lLCBzZWxmLl9vcHRpb25zLmJ1aWxkX25hbWUsCisg
ICAgICAgICAgICBzZWxmLl9vcHRpb25zLmJ1aWxkX251bWJlciwgc2VsZi5fb3B0aW9ucy5yZXN1
bHRzX2RpcmVjdG9yeSwKKyAgICAgICAgICAgIEJVSUxERVJfQkFTRV9VUkwsIGluZGl2aWR1YWxf
dGVzdF90aW1pbmdzLAorICAgICAgICAgICAgc2VsZi5fZXhwZWN0YXRpb25zLCByZXN1bHRfc3Vt
bWFyeSwgc2VsZi5fdGVzdF9maWxlc19saXN0LAorICAgICAgICAgICAgbm90IHNlbGYuX29wdGlv
bnMudXBsb2FkX2Z1bGxfcmVzdWx0cywKKyAgICAgICAgICAgIHNlbGYuX29wdGlvbnMudGVzdF9y
ZXN1bHRzX3NlcnZlciwKKyAgICAgICAgICAgICJsYXlvdXQtdGVzdHMiLAorICAgICAgICAgICAg
c2VsZi5fb3B0aW9ucy5tYXN0ZXJfbmFtZSkKKworICAgICAgICBfbG9nLmRlYnVnKCJGaW5pc2hl
ZCB3cml0aW5nIEpTT04gZmlsZXMuIikKKworICAgICAgICBqc29uX2ZpbGVzID0gWyJleHBlY3Rh
dGlvbnMuanNvbiJdCisgICAgICAgIGlmIHNlbGYuX29wdGlvbnMudXBsb2FkX2Z1bGxfcmVzdWx0
czoKKyAgICAgICAgICAgIGpzb25fZmlsZXMuYXBwZW5kKCJyZXN1bHRzLmpzb24iKQorICAgICAg
ICBlbHNlOgorICAgICAgICAgICAganNvbl9maWxlcy5hcHBlbmQoImluY3JlbWVudGFsX3Jlc3Vs
dHMuanNvbiIpCisKKyAgICAgICAgZ2VuZXJhdG9yLnVwbG9hZF9qc29uX2ZpbGVzKGpzb25fZmls
ZXMpCisKKyAgICBkZWYgX3ByaW50X2NvbmZpZyhzZWxmKToKKyAgICAgICAgIiIiUHJpbnRzIHRo
ZSBjb25maWd1cmF0aW9uIGZvciB0aGUgdGVzdCBydW4uIiIiCisgICAgICAgIHAgPSBzZWxmLl9w
cmludGVyCisgICAgICAgIHAucHJpbnRfY29uZmlnKCJVc2luZyBwb3J0ICclcyciICUgc2VsZi5f
cG9ydC5uYW1lKCkpCisgICAgICAgIHAucHJpbnRfY29uZmlnKCJQbGFjaW5nIHRlc3QgcmVzdWx0
cyBpbiAlcyIgJQorICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLnJlc3VsdHNf
ZGlyZWN0b3J5KQorICAgICAgICBpZiBzZWxmLl9vcHRpb25zLm5ld19iYXNlbGluZToKKyAgICAg
ICAgICAgIHAucHJpbnRfY29uZmlnKCJQbGFjaW5nIG5ldyBiYXNlbGluZXMgaW4gJXMiICUKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3BvcnQuYmFzZWxpbmVfcGF0aCgpKQorICAg
ICAgICBwLnByaW50X2NvbmZpZygiVXNpbmcgJXMgYnVpbGQiICUgc2VsZi5fb3B0aW9ucy5jb25m
aWd1cmF0aW9uKQorICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnBpeGVsX3Rlc3RzOgorICAgICAg
ICAgICAgcC5wcmludF9jb25maWcoIlBpeGVsIHRlc3RzIGVuYWJsZWQiKQorICAgICAgICBlbHNl
OgorICAgICAgICAgICAgcC5wcmludF9jb25maWcoIlBpeGVsIHRlc3RzIGRpc2FibGVkIikKKwor
ICAgICAgICBwLnByaW50X2NvbmZpZygiUmVndWxhciB0aW1lb3V0OiAlcywgc2xvdyB0ZXN0IHRp
bWVvdXQ6ICVzIiAlCisgICAgICAgICAgICAgICAgICAgICAgIChzZWxmLl9vcHRpb25zLnRpbWVf
b3V0X21zLAorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5zbG93X3RpbWVf
b3V0X21zKSkKKworICAgICAgICBpZiBzZWxmLl9udW1fd29ya2VycygpID09IDE6CisgICAgICAg
ICAgICBwLnByaW50X2NvbmZpZygiUnVubmluZyBvbmUgJXMiICUgc2VsZi5fcG9ydC5kcml2ZXJf
bmFtZSgpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcC5wcmludF9jb25maWcoIlJ1bm5p
bmcgJXMgJXNzIGluIHBhcmFsbGVsIiAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2Vs
Zi5fb3B0aW9ucy5jaGlsZF9wcm9jZXNzZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2VsZi5fcG9ydC5kcml2ZXJfbmFtZSgpKSkKKyAgICAgICAgcC5wcmludF9jb25maWcoJ0NvbW1h
bmQgbGluZTogJyArCisgICAgICAgICAgICAgICAgICAgICAgICcgJy5qb2luKHNlbGYuX3BvcnQu
ZHJpdmVyX2NtZF9saW5lKCkpKQorICAgICAgICBwLnByaW50X2NvbmZpZygiV29ya2VyIG1vZGVs
OiAlcyIgJSBzZWxmLl9vcHRpb25zLndvcmtlcl9tb2RlbCkKKyAgICAgICAgcC5wcmludF9jb25m
aWcoIiIpCisKKyAgICBkZWYgX3ByaW50X2V4cGVjdGVkX3Jlc3VsdHNfb2ZfdHlwZShzZWxmLCBy
ZXN1bHRfc3VtbWFyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXN1bHRfdHlwZSwgcmVzdWx0X3R5cGVfc3RyKToKKyAgICAgICAgIiIiUHJpbnQgdGhlIG51bWJl
ciBvZiB0aGUgdGVzdHMgaW4gYSBnaXZlbiByZXN1bHQgY2xhc3MuCisKKyAgICAgICAgQXJnczoK
KyAgICAgICAgICByZXN1bHRfc3VtbWFyeSAtIHRoZSBvYmplY3QgY29udGFpbmluZyBhbGwgdGhl
IHJlc3VsdHMgdG8gcmVwb3J0IG9uCisgICAgICAgICAgcmVzdWx0X3R5cGUgLSB0aGUgcGFydGlj
dWxhciByZXN1bHQgdHlwZSB0byByZXBvcnQgaW4gdGhlIHN1bW1hcnkuCisgICAgICAgICAgcmVz
dWx0X3R5cGVfc3RyIC0gYSBzdHJpbmcgZGVzY3JpcHRpb24gb2YgdGhlIHJlc3VsdF90eXBlLgor
ICAgICAgICAiIiIKKyAgICAgICAgdGVzdHMgPSBzZWxmLl9leHBlY3RhdGlvbnMuZ2V0X3Rlc3Rz
X3dpdGhfcmVzdWx0X3R5cGUocmVzdWx0X3R5cGUpCisgICAgICAgIG5vdyA9IHJlc3VsdF9zdW1t
YXJ5LnRlc3RzX2J5X3RpbWVsaW5lW3Rlc3RfZXhwZWN0YXRpb25zLk5PV10KKyAgICAgICAgd29u
dGZpeCA9IHJlc3VsdF9zdW1tYXJ5LnRlc3RzX2J5X3RpbWVsaW5lW3Rlc3RfZXhwZWN0YXRpb25z
LldPTlRGSVhdCisKKyAgICAgICAgIyBXZSB1c2UgYSBmYW5jeSBmb3JtYXQgc3RyaW5nIGluIG9y
ZGVyIHRvIHByaW50IHRoZSBkYXRhIG91dCBpbiBhCisgICAgICAgICMgbmljZWx5LWFsaWduZWQg
dGFibGUuCisgICAgICAgIGZtdHN0ciA9ICgiRXhwZWN0OiAlJTVkICUlLThzICglJSVkZCBub3cs
ICUlJWRkIHdvbnRmaXgpIgorICAgICAgICAgICAgICAgICAgJSAoc2VsZi5fbnVtX2RpZ2l0cyhu
b3cpLCBzZWxmLl9udW1fZGlnaXRzKHdvbnRmaXgpKSkKKyAgICAgICAgc2VsZi5fcHJpbnRlci5w
cmludF9leHBlY3RlZChmbXRzdHIgJQorICAgICAgICAgICAgKGxlbih0ZXN0cyksIHJlc3VsdF90
eXBlX3N0ciwgbGVuKHRlc3RzICYgbm93KSwgbGVuKHRlc3RzICYgd29udGZpeCkpKQorCisgICAg
ZGVmIF9udW1fZGlnaXRzKHNlbGYsIG51bSk6CisgICAgICAgICIiIlJldHVybnMgdGhlIG51bWJl
ciBvZiBkaWdpdHMgbmVlZGVkIHRvIHJlcHJlc2VudCB0aGUgbGVuZ3RoIG9mIGEKKyAgICAgICAg
c2VxdWVuY2UuIiIiCisgICAgICAgIG5kaWdpdHMgPSAxCisgICAgICAgIGlmIGxlbihudW0pOgor
ICAgICAgICAgICAgbmRpZ2l0cyA9IGludChtYXRoLmxvZzEwKGxlbihudW0pKSkgKyAxCisgICAg
ICAgIHJldHVybiBuZGlnaXRzCisKKyAgICBkZWYgX3ByaW50X3RpbWluZ19zdGF0aXN0aWNzKHNl
bGYsIHRvdGFsX3RpbWUsIHRocmVhZF90aW1pbmdzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRpcmVjdG9yeV90ZXN0X3RpbWluZ3MsIGluZGl2aWR1YWxfdGVzdF90aW1pbmdzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdF9zdW1tYXJ5KToKKyAgICAgICAg
IiIiUmVjb3JkIHRpbWluZy1zcGVjaWZpYyBpbmZvcm1hdGlvbiBmb3IgdGhlIHRlc3QgcnVuLgor
CisgICAgICAgIEFyZ3M6CisgICAgICAgICAgdG90YWxfdGltZTogdG90YWwgZWxhcHNlZCB0aW1l
IChpbiBzZWNvbmRzKSBmb3IgdGhlIHRlc3QgcnVuCisgICAgICAgICAgdGhyZWFkX3RpbWluZ3M6
IHdhbGwgY2xvY2sgdGltZSBlYWNoIHRocmVhZCByYW4gZm9yCisgICAgICAgICAgZGlyZWN0b3J5
X3Rlc3RfdGltaW5nczogdGltaW5nIGJ5IGRpcmVjdG9yeQorICAgICAgICAgIGluZGl2aWR1YWxf
dGVzdF90aW1pbmdzOiB0aW1pbmcgYnkgZmlsZQorICAgICAgICAgIHJlc3VsdF9zdW1tYXJ5OiBz
dW1tYXJ5IG9iamVjdCBmb3IgdGhlIHRlc3QgcnVuCisgICAgICAgICIiIgorICAgICAgICBzZWxm
Ll9wcmludGVyLnByaW50X3RpbWluZygiVGVzdCB0aW1pbmc6IikKKyAgICAgICAgc2VsZi5fcHJp
bnRlci5wcmludF90aW1pbmcoIiAgJTYuMmYgdG90YWwgdGVzdGluZyB0aW1lIiAlIHRvdGFsX3Rp
bWUpCisgICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfdGltaW5nKCIiKQorICAgICAgICBzZWxm
Ll9wcmludGVyLnByaW50X3RpbWluZygiVGhyZWFkIHRpbWluZzoiKQorICAgICAgICBjdW1sX3Rp
bWUgPSAwCisgICAgICAgIGZvciB0IGluIHRocmVhZF90aW1pbmdzOgorICAgICAgICAgICAgc2Vs
Zi5fcHJpbnRlci5wcmludF90aW1pbmcoIiAgICAlMTBzOiAlNWQgdGVzdHMsICU2LjJmIHNlY3Mi
ICUKKyAgICAgICAgICAgICAgICAgICh0WyduYW1lJ10sIHRbJ251bV90ZXN0cyddLCB0Wyd0b3Rh
bF90aW1lJ10pKQorICAgICAgICAgICAgY3VtbF90aW1lICs9IHRbJ3RvdGFsX3RpbWUnXQorICAg
ICAgICBzZWxmLl9wcmludGVyLnByaW50X3RpbWluZygiICAgJTYuMmYgY3VtdWxhdGl2ZSwgJTYu
MmYgb3B0aW1hbCIgJQorICAgICAgICAgICAgICAoY3VtbF90aW1lLCBjdW1sX3RpbWUgLyBpbnQo
c2VsZi5fb3B0aW9ucy5jaGlsZF9wcm9jZXNzZXMpKSkKKyAgICAgICAgc2VsZi5fcHJpbnRlci5w
cmludF90aW1pbmcoIiIpCisKKyAgICAgICAgc2VsZi5fcHJpbnRfYWdncmVnYXRlX3Rlc3Rfc3Rh
dGlzdGljcyhpbmRpdmlkdWFsX3Rlc3RfdGltaW5ncykKKyAgICAgICAgc2VsZi5fcHJpbnRfaW5k
aXZpZHVhbF90ZXN0X3RpbWVzKGluZGl2aWR1YWxfdGVzdF90aW1pbmdzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0X3N1bW1hcnkpCisgICAgICAgIHNl
bGYuX3ByaW50X2RpcmVjdG9yeV90aW1pbmdzKGRpcmVjdG9yeV90ZXN0X3RpbWluZ3MpCisKKyAg
ICBkZWYgX3ByaW50X2FnZ3JlZ2F0ZV90ZXN0X3N0YXRpc3RpY3Moc2VsZiwgaW5kaXZpZHVhbF90
ZXN0X3RpbWluZ3MpOgorICAgICAgICAiIiJQcmludHMgYWdncmVnYXRlIHN0YXRpc3RpY3MgKGUu
Zy4gbWVkaWFuLCBtZWFuLCBldGMuKSBmb3IgYWxsIHRlc3RzLgorICAgICAgICBBcmdzOgorICAg
ICAgICAgIGluZGl2aWR1YWxfdGVzdF90aW1pbmdzOiBMaXN0IG9mIFRlc3RSZXN1bHRzIGZvciBh
bGwgdGVzdHMuCisgICAgICAgICIiIgorICAgICAgICB0ZXN0X3R5cGVzID0gW10gICMgVW5pdCB0
ZXN0cyBkb24ndCBhY3R1YWxseSBwcm9kdWNlIGFueSB0aW1pbmdzLgorICAgICAgICBpZiBpbmRp
dmlkdWFsX3Rlc3RfdGltaW5nczoKKyAgICAgICAgICAgIHRlc3RfdHlwZXMgPSBpbmRpdmlkdWFs
X3Rlc3RfdGltaW5nc1swXS50aW1lX2Zvcl9kaWZmcy5rZXlzKCkKKyAgICAgICAgdGltZXNfZm9y
X2R1bXBfcmVuZGVyX3RyZWUgPSBbXQorICAgICAgICB0aW1lc19mb3JfZGlmZl9wcm9jZXNzaW5n
ID0gW10KKyAgICAgICAgdGltZXNfcGVyX3Rlc3RfdHlwZSA9IHt9CisgICAgICAgIGZvciB0ZXN0
X3R5cGUgaW4gdGVzdF90eXBlczoKKyAgICAgICAgICAgIHRpbWVzX3Blcl90ZXN0X3R5cGVbdGVz
dF90eXBlXSA9IFtdCisKKyAgICAgICAgZm9yIHRlc3Rfc3RhdHMgaW4gaW5kaXZpZHVhbF90ZXN0
X3RpbWluZ3M6CisgICAgICAgICAgICB0aW1lc19mb3JfZHVtcF9yZW5kZXJfdHJlZS5hcHBlbmQo
dGVzdF9zdGF0cy50ZXN0X3J1bl90aW1lKQorICAgICAgICAgICAgdGltZXNfZm9yX2RpZmZfcHJv
Y2Vzc2luZy5hcHBlbmQoCisgICAgICAgICAgICAgICAgdGVzdF9zdGF0cy50b3RhbF90aW1lX2Zv
cl9hbGxfZGlmZnMpCisgICAgICAgICAgICB0aW1lX2Zvcl9kaWZmcyA9IHRlc3Rfc3RhdHMudGlt
ZV9mb3JfZGlmZnMKKyAgICAgICAgICAgIGZvciB0ZXN0X3R5cGUgaW4gdGVzdF90eXBlczoKKyAg
ICAgICAgICAgICAgICB0aW1lc19wZXJfdGVzdF90eXBlW3Rlc3RfdHlwZV0uYXBwZW5kKAorICAg
ICAgICAgICAgICAgICAgICB0aW1lX2Zvcl9kaWZmc1t0ZXN0X3R5cGVdKQorCisgICAgICAgIHNl
bGYuX3ByaW50X3N0YXRpc3RpY3NfZm9yX3Rlc3RfdGltaW5ncygKKyAgICAgICAgICAgICJQRVIg
VEVTVCBUSU1FIElOIFRFU1RTSEVMTCAoc2Vjb25kcyk6IiwKKyAgICAgICAgICAgIHRpbWVzX2Zv
cl9kdW1wX3JlbmRlcl90cmVlKQorICAgICAgICBzZWxmLl9wcmludF9zdGF0aXN0aWNzX2Zvcl90
ZXN0X3RpbWluZ3MoCisgICAgICAgICAgICAiUEVSIFRFU1QgRElGRiBQUk9DRVNTSU5HIFRJTUVT
IChzZWNvbmRzKToiLAorICAgICAgICAgICAgdGltZXNfZm9yX2RpZmZfcHJvY2Vzc2luZykKKyAg
ICAgICAgZm9yIHRlc3RfdHlwZSBpbiB0ZXN0X3R5cGVzOgorICAgICAgICAgICAgc2VsZi5fcHJp
bnRfc3RhdGlzdGljc19mb3JfdGVzdF90aW1pbmdzKAorICAgICAgICAgICAgICAgICJQRVIgVEVT
VCBUSU1FUyBCWSBURVNUIFRZUEU6ICVzIiAlIHRlc3RfdHlwZSwKKyAgICAgICAgICAgICAgICB0
aW1lc19wZXJfdGVzdF90eXBlW3Rlc3RfdHlwZV0pCisKKyAgICBkZWYgX3ByaW50X2luZGl2aWR1
YWxfdGVzdF90aW1lcyhzZWxmLCBpbmRpdmlkdWFsX3Rlc3RfdGltaW5ncywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRfc3VtbWFyeSk6CisgICAgICAgICIiIlByaW50
cyB0aGUgcnVuIHRpbWVzIGZvciBzbG93LCB0aW1lb3V0IGFuZCBjcmFzaCB0ZXN0cy4KKyAgICAg
ICAgQXJnczoKKyAgICAgICAgICBpbmRpdmlkdWFsX3Rlc3RfdGltaW5nczogTGlzdCBvZiBUZXN0
U3RhdHMgZm9yIGFsbCB0ZXN0cy4KKyAgICAgICAgICByZXN1bHRfc3VtbWFyeTogc3VtbWFyeSBv
YmplY3QgZm9yIHRlc3QgcnVuCisgICAgICAgICIiIgorICAgICAgICAjIFJldmVyc2Utc29ydCBi
eSB0aGUgdGltZSBzcGVudCBpbiBEdW1wUmVuZGVyVHJlZS4KKyAgICAgICAgaW5kaXZpZHVhbF90
ZXN0X3RpbWluZ3Muc29ydChsYW1iZGEgYSwgYjoKKyAgICAgICAgICAgIGNtcChiLnRlc3RfcnVu
X3RpbWUsIGEudGVzdF9ydW5fdGltZSkpCisKKyAgICAgICAgbnVtX3ByaW50ZWQgPSAwCisgICAg
ICAgIHNsb3dfdGVzdHMgPSBbXQorICAgICAgICB0aW1lb3V0X29yX2NyYXNoX3Rlc3RzID0gW10K
KyAgICAgICAgdW5leHBlY3RlZF9zbG93X3Rlc3RzID0gW10KKyAgICAgICAgZm9yIHRlc3RfdHVw
bGUgaW4gaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3M6CisgICAgICAgICAgICBmaWxlbmFtZSA9IHRl
c3RfdHVwbGUuZmlsZW5hbWUKKyAgICAgICAgICAgIGlzX3RpbWVvdXRfY3Jhc2hfb3Jfc2xvdyA9
IEZhbHNlCisgICAgICAgICAgICBpZiBzZWxmLl90ZXN0X2lzX3Nsb3coZmlsZW5hbWUpOgorICAg
ICAgICAgICAgICAgIGlzX3RpbWVvdXRfY3Jhc2hfb3Jfc2xvdyA9IFRydWUKKyAgICAgICAgICAg
ICAgICBzbG93X3Rlc3RzLmFwcGVuZCh0ZXN0X3R1cGxlKQorCisgICAgICAgICAgICBpZiBmaWxl
bmFtZSBpbiByZXN1bHRfc3VtbWFyeS5mYWlsdXJlczoKKyAgICAgICAgICAgICAgICByZXN1bHQg
PSByZXN1bHRfc3VtbWFyeS5yZXN1bHRzW2ZpbGVuYW1lXS50eXBlCisgICAgICAgICAgICAgICAg
aWYgKHJlc3VsdCA9PSB0ZXN0X2V4cGVjdGF0aW9ucy5USU1FT1VUIG9yCisgICAgICAgICAgICAg
ICAgICAgIHJlc3VsdCA9PSB0ZXN0X2V4cGVjdGF0aW9ucy5DUkFTSCk6CisgICAgICAgICAgICAg
ICAgICAgIGlzX3RpbWVvdXRfY3Jhc2hfb3Jfc2xvdyA9IFRydWUKKyAgICAgICAgICAgICAgICAg
ICAgdGltZW91dF9vcl9jcmFzaF90ZXN0cy5hcHBlbmQodGVzdF90dXBsZSkKKworICAgICAgICAg
ICAgaWYgKG5vdCBpc190aW1lb3V0X2NyYXNoX29yX3Nsb3cgYW5kCisgICAgICAgICAgICAgICAg
bnVtX3ByaW50ZWQgPCBwcmludGluZy5OVU1fU0xPV19URVNUU19UT19MT0cpOgorICAgICAgICAg
ICAgICAgIG51bV9wcmludGVkID0gbnVtX3ByaW50ZWQgKyAxCisgICAgICAgICAgICAgICAgdW5l
eHBlY3RlZF9zbG93X3Rlc3RzLmFwcGVuZCh0ZXN0X3R1cGxlKQorCisgICAgICAgIHNlbGYuX3By
aW50ZXIucHJpbnRfdGltaW5nKCIiKQorICAgICAgICBzZWxmLl9wcmludF90ZXN0X2xpc3RfdGlt
aW5nKCIlcyBzbG93ZXN0IHRlc3RzIHRoYXQgYXJlIG5vdCAiCisgICAgICAgICAgICAibWFya2Vk
IGFzIFNMT1cgYW5kIGRpZCBub3QgdGltZW91dC9jcmFzaDoiICUKKyAgICAgICAgICAgIHByaW50
aW5nLk5VTV9TTE9XX1RFU1RTX1RPX0xPRywgdW5leHBlY3RlZF9zbG93X3Rlc3RzKQorICAgICAg
ICBzZWxmLl9wcmludGVyLnByaW50X3RpbWluZygiIikKKyAgICAgICAgc2VsZi5fcHJpbnRfdGVz
dF9saXN0X3RpbWluZygiVGVzdHMgbWFya2VkIGFzIFNMT1c6Iiwgc2xvd190ZXN0cykKKyAgICAg
ICAgc2VsZi5fcHJpbnRlci5wcmludF90aW1pbmcoIiIpCisgICAgICAgIHNlbGYuX3ByaW50X3Rl
c3RfbGlzdF90aW1pbmcoIlRlc3RzIHRoYXQgdGltZWQgb3V0IG9yIGNyYXNoZWQ6IiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0X29yX2NyYXNoX3Rlc3RzKQor
ICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X3RpbWluZygiIikKKworICAgIGRlZiBfcHJpbnRf
dGVzdF9saXN0X3RpbWluZyhzZWxmLCB0aXRsZSwgdGVzdF9saXN0KToKKyAgICAgICAgIiIiUHJp
bnQgdGltaW5nIGluZm8gZm9yIGVhY2ggdGVzdC4KKworICAgICAgICBBcmdzOgorICAgICAgICAg
IHRpdGxlOiBzZWN0aW9uIGhlYWRpbmcKKyAgICAgICAgICB0ZXN0X2xpc3Q6IHRlc3RzIHRoYXQg
ZmFsbCBpbiB0aGlzIHNlY3Rpb24KKyAgICAgICAgIiIiCisgICAgICAgIGlmIHNlbGYuX3ByaW50
ZXIuZGlzYWJsZWQoJ3Nsb3dlc3QnKToKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIHNl
bGYuX3ByaW50ZXIucHJpbnRfdGltaW5nKHRpdGxlKQorICAgICAgICBmb3IgdGVzdF90dXBsZSBp
biB0ZXN0X2xpc3Q6CisgICAgICAgICAgICBmaWxlbmFtZSA9IHRlc3RfdHVwbGUuZmlsZW5hbWVb
bGVuKAorICAgICAgICAgICAgICAgIHNlbGYuX3BvcnQubGF5b3V0X3Rlc3RzX2RpcigpKSArIDE6
XQorICAgICAgICAgICAgZmlsZW5hbWUgPSBmaWxlbmFtZS5yZXBsYWNlKCdcXCcsICcvJykKKyAg
ICAgICAgICAgIHRlc3RfcnVuX3RpbWUgPSByb3VuZCh0ZXN0X3R1cGxlLnRlc3RfcnVuX3RpbWUs
IDEpCisgICAgICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X3RpbWluZygiICAlcyB0b29rICVz
IHNlY29uZHMiICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmaWxl
bmFtZSwgdGVzdF9ydW5fdGltZSkpCisKKyAgICBkZWYgX3ByaW50X2RpcmVjdG9yeV90aW1pbmdz
KHNlbGYsIGRpcmVjdG9yeV90ZXN0X3RpbWluZ3MpOgorICAgICAgICAiIiJQcmludCB0aW1pbmcg
aW5mbyBieSBkaXJlY3RvcnkgZm9yIGFueSBkaXJlY3RvcmllcyB0aGF0CisgICAgICAgIHRha2Ug
PiAxMCBzZWNvbmRzIHRvIHJ1bi4KKworICAgICAgICBBcmdzOgorICAgICAgICAgIGRpcmVjdG9y
eV90ZXN0X3RpbWluZzogdGltZSBpbmZvIGZvciBlYWNoIGRpcmVjdG9yeQorICAgICAgICAiIiIK
KyAgICAgICAgdGltaW5ncyA9IFtdCisgICAgICAgIGZvciBkaXJlY3RvcnkgaW4gZGlyZWN0b3J5
X3Rlc3RfdGltaW5nczoKKyAgICAgICAgICAgIG51bV90ZXN0cywgdGltZV9mb3JfZGlyZWN0b3J5
ID0gZGlyZWN0b3J5X3Rlc3RfdGltaW5nc1tkaXJlY3RvcnldCisgICAgICAgICAgICB0aW1pbmdz
LmFwcGVuZCgocm91bmQodGltZV9mb3JfZGlyZWN0b3J5LCAxKSwgZGlyZWN0b3J5LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG51bV90ZXN0cykpCisgICAgICAgIHRpbWluZ3Muc29ydCgp
CisKKyAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF90aW1pbmcoIlRpbWUgdG8gcHJvY2VzcyBz
bG93ZXN0IHN1YmRpcmVjdG9yaWVzOiIpCisgICAgICAgIG1pbl9zZWNvbmRzX3RvX3ByaW50ID0g
MTAKKyAgICAgICAgZm9yIHRpbWluZyBpbiB0aW1pbmdzOgorICAgICAgICAgICAgaWYgdGltaW5n
WzBdID4gbWluX3NlY29uZHNfdG9fcHJpbnQ6CisgICAgICAgICAgICAgICAgc2VsZi5fcHJpbnRl
ci5wcmludF90aW1pbmcoCisgICAgICAgICAgICAgICAgICAgICIgICVzIHRvb2sgJXMgc2Vjb25k
cyB0byBydW4gJXMgdGVzdHMuIiAlICh0aW1pbmdbMV0sCisgICAgICAgICAgICAgICAgICAgIHRp
bWluZ1swXSwgdGltaW5nWzJdKSkKKyAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF90aW1pbmco
IiIpCisKKyAgICBkZWYgX3ByaW50X3N0YXRpc3RpY3NfZm9yX3Rlc3RfdGltaW5ncyhzZWxmLCB0
aXRsZSwgdGltaW5ncyk6CisgICAgICAgICIiIlByaW50cyB0aGUgbWVkaWFuLCBtZWFuIGFuZCBz
dGFuZGFyZCBkZXZpYXRpb24gb2YgdGhlIHZhbHVlcyBpbgorICAgICAgICB0aW1pbmdzLgorCisg
ICAgICAgIEFyZ3M6CisgICAgICAgICAgdGl0bGU6IFRpdGxlIGZvciB0aGVzZSB0aW1pbmdzLgor
ICAgICAgICAgIHRpbWluZ3M6IEEgbGlzdCBvZiBmbG9hdHMgcmVwcmVzZW50aW5nIHRpbWVzLgor
ICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF90aW1pbmcodGl0bGUpCisg
ICAgICAgIHRpbWluZ3Muc29ydCgpCisKKyAgICAgICAgbnVtX3Rlc3RzID0gbGVuKHRpbWluZ3Mp
CisgICAgICAgIGlmIG5vdCBudW1fdGVzdHM6CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAg
cGVyY2VudGlsZTkwID0gdGltaW5nc1tpbnQoLjkgKiBudW1fdGVzdHMpXQorICAgICAgICBwZXJj
ZW50aWxlOTkgPSB0aW1pbmdzW2ludCguOTkgKiBudW1fdGVzdHMpXQorCisgICAgICAgIGlmIG51
bV90ZXN0cyAlIDIgPT0gMToKKyAgICAgICAgICAgIG1lZGlhbiA9IHRpbWluZ3NbKChudW1fdGVz
dHMgLSAxKSAvIDIpIC0gMV0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGxvd2VyID0gdGlt
aW5nc1tudW1fdGVzdHMgLyAyIC0gMV0KKyAgICAgICAgICAgIHVwcGVyID0gdGltaW5nc1tudW1f
dGVzdHMgLyAyXQorICAgICAgICAgICAgbWVkaWFuID0gKGZsb2F0KGxvd2VyICsgdXBwZXIpKSAv
IDIKKworICAgICAgICBtZWFuID0gc3VtKHRpbWluZ3MpIC8gbnVtX3Rlc3RzCisKKyAgICAgICAg
Zm9yIHRpbWUgaW4gdGltaW5nczoKKyAgICAgICAgICAgIHN1bV9vZl9kZXZpYXRpb25zID0gbWF0
aC5wb3codGltZSAtIG1lYW4sIDIpCisKKyAgICAgICAgc3RkX2RldmlhdGlvbiA9IG1hdGguc3Fy
dChzdW1fb2ZfZGV2aWF0aW9ucyAvIG51bV90ZXN0cykKKyAgICAgICAgc2VsZi5fcHJpbnRlci5w
cmludF90aW1pbmcoIiAgTWVkaWFuOiAgICAgICAgICAlNi4zZiIgJSBtZWRpYW4pCisgICAgICAg
IHNlbGYuX3ByaW50ZXIucHJpbnRfdGltaW5nKCIgIE1lYW46ICAgICAgICAgICAgJTYuM2YiICUg
bWVhbikKKyAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF90aW1pbmcoIiAgOTB0aCBwZXJjZW50
aWxlOiAlNi4zZiIgJSBwZXJjZW50aWxlOTApCisgICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRf
dGltaW5nKCIgIDk5dGggcGVyY2VudGlsZTogJTYuM2YiICUgcGVyY2VudGlsZTk5KQorICAgICAg
ICBzZWxmLl9wcmludGVyLnByaW50X3RpbWluZygiICBTdGFuZGFyZCBkZXY6ICAgICU2LjNmIiAl
IHN0ZF9kZXZpYXRpb24pCisgICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfdGltaW5nKCIiKQor
CisgICAgZGVmIF9wcmludF9yZXN1bHRfc3VtbWFyeShzZWxmLCByZXN1bHRfc3VtbWFyeSk6Cisg
ICAgICAgICIiIlByaW50IGEgc2hvcnQgc3VtbWFyeSBhYm91dCBob3cgbWFueSB0ZXN0cyBwYXNz
ZWQuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICByZXN1bHRfc3VtbWFyeTogaW5mb3JtYXRp
b24gdG8gbG9nCisgICAgICAgICIiIgorICAgICAgICBmYWlsZWQgPSBsZW4ocmVzdWx0X3N1bW1h
cnkuZmFpbHVyZXMpCisgICAgICAgIHNraXBwZWQgPSBsZW4oCisgICAgICAgICAgICByZXN1bHRf
c3VtbWFyeS50ZXN0c19ieV9leHBlY3RhdGlvblt0ZXN0X2V4cGVjdGF0aW9ucy5TS0lQXSkKKyAg
ICAgICAgdG90YWwgPSByZXN1bHRfc3VtbWFyeS50b3RhbAorICAgICAgICBwYXNzZWQgPSB0b3Rh
bCAtIGZhaWxlZCAtIHNraXBwZWQKKyAgICAgICAgcGN0X3Bhc3NlZCA9IDAuMAorICAgICAgICBp
ZiB0b3RhbCA+IDA6CisgICAgICAgICAgICBwY3RfcGFzc2VkID0gZmxvYXQocGFzc2VkKSAqIDEw
MCAvIHRvdGFsCisKKyAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF9hY3R1YWwoIiIpCisgICAg
ICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfYWN0dWFsKCI9PiBSZXN1bHRzOiAlZC8lZCB0ZXN0cyBw
YXNzZWQgKCUuMWYlJSkiICUKKyAgICAgICAgICAgICAgICAgICAgIChwYXNzZWQsIHRvdGFsLCBw
Y3RfcGFzc2VkKSkKKyAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF9hY3R1YWwoIiIpCisgICAg
ICAgIHNlbGYuX3ByaW50X3Jlc3VsdF9zdW1tYXJ5X2VudHJ5KHJlc3VsdF9zdW1tYXJ5LAorICAg
ICAgICAgICAgdGVzdF9leHBlY3RhdGlvbnMuTk9XLCAiVGVzdHMgdG8gYmUgZml4ZWQiKQorCisg
ICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfYWN0dWFsKCIiKQorICAgICAgICBzZWxmLl9wcmlu
dF9yZXN1bHRfc3VtbWFyeV9lbnRyeShyZXN1bHRfc3VtbWFyeSwKKyAgICAgICAgICAgIHRlc3Rf
ZXhwZWN0YXRpb25zLldPTlRGSVgsCisgICAgICAgICAgICAiVGVzdHMgdGhhdCB3aWxsIG9ubHkg
YmUgZml4ZWQgaWYgdGhleSBjcmFzaCAoV09OVEZJWCkiKQorICAgICAgICBzZWxmLl9wcmludGVy
LnByaW50X2FjdHVhbCgiIikKKworICAgIGRlZiBfcHJpbnRfcmVzdWx0X3N1bW1hcnlfZW50cnko
c2VsZiwgcmVzdWx0X3N1bW1hcnksIHRpbWVsaW5lLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaGVhZGluZyk6CisgICAgICAgICIiIlByaW50IGEgc3VtbWFyeSBibG9jayBv
ZiByZXN1bHRzIGZvciBhIHBhcnRpY3VsYXIgdGltZWxpbmUgb2YgdGVzdC4KKworICAgICAgICBB
cmdzOgorICAgICAgICAgIHJlc3VsdF9zdW1tYXJ5OiBzdW1tYXJ5IHRvIHByaW50IHJlc3VsdHMg
Zm9yCisgICAgICAgICAgdGltZWxpbmU6IHRoZSB0aW1lbGluZSB0byBwcmludCByZXN1bHRzIGZv
ciAoTk9ULCBXT05URklYLCBldGMuKQorICAgICAgICAgIGhlYWRpbmc6IGEgdGV4dHVhbCBkZXNj
cmlwdGlvbiBvZiB0aGUgdGltZWxpbmUKKyAgICAgICAgIiIiCisgICAgICAgIHRvdGFsID0gbGVu
KHJlc3VsdF9zdW1tYXJ5LnRlc3RzX2J5X3RpbWVsaW5lW3RpbWVsaW5lXSkKKyAgICAgICAgbm90
X3Bhc3NpbmcgPSAodG90YWwgLQorICAgICAgICAgICBsZW4ocmVzdWx0X3N1bW1hcnkudGVzdHNf
YnlfZXhwZWN0YXRpb25bdGVzdF9leHBlY3RhdGlvbnMuUEFTU10gJgorICAgICAgICAgICAgICAg
cmVzdWx0X3N1bW1hcnkudGVzdHNfYnlfdGltZWxpbmVbdGltZWxpbmVdKSkKKyAgICAgICAgc2Vs
Zi5fcHJpbnRlci5wcmludF9hY3R1YWwoIj0+ICVzICglZCk6IiAlIChoZWFkaW5nLCBub3RfcGFz
c2luZykpCisKKyAgICAgICAgZm9yIHJlc3VsdCBpbiBUZXN0RXhwZWN0YXRpb25zRmlsZS5FWFBF
Q1RBVElPTl9PUkRFUjoKKyAgICAgICAgICAgIGlmIHJlc3VsdCA9PSB0ZXN0X2V4cGVjdGF0aW9u
cy5QQVNTOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICByZXN1bHRzID0g
KHJlc3VsdF9zdW1tYXJ5LnRlc3RzX2J5X2V4cGVjdGF0aW9uW3Jlc3VsdF0gJgorICAgICAgICAg
ICAgICAgICAgICAgICByZXN1bHRfc3VtbWFyeS50ZXN0c19ieV90aW1lbGluZVt0aW1lbGluZV0p
CisgICAgICAgICAgICBkZXNjID0gVGVzdEV4cGVjdGF0aW9uc0ZpbGUuRVhQRUNUQVRJT05fREVT
Q1JJUFRJT05TW3Jlc3VsdF0KKyAgICAgICAgICAgIGlmIG5vdF9wYXNzaW5nIGFuZCBsZW4ocmVz
dWx0cyk6CisgICAgICAgICAgICAgICAgcGN0ID0gbGVuKHJlc3VsdHMpICogMTAwLjAgLyBub3Rf
cGFzc2luZworICAgICAgICAgICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfYWN0dWFsKCIgICU1
ZCAlLTI0cyAoJTQuMWYlJSkiICUKKyAgICAgICAgICAgICAgICAgICAgKGxlbihyZXN1bHRzKSwg
ZGVzY1tsZW4ocmVzdWx0cykgIT0gMV0sIHBjdCkpCisKKyAgICBkZWYgX3Jlc3VsdHNfaHRtbChz
ZWxmLCB0ZXN0X2ZpbGVzLCBmYWlsdXJlcywgdGl0bGU9IlRlc3QgRmFpbHVyZXMiLCBvdmVycmlk
ZV90aW1lPU5vbmUpOgorICAgICAgICAiIiIKKyAgICAgICAgdGVzdF9maWxlcyA9IGEgbGlzdCBv
ZiBmaWxlIHBhdGhzCisgICAgICAgIGZhaWx1cmVzID0gZGljdGlvbmFyeSBtYXBwaW5nIHRlc3Qg
cGF0aHMgdG8gZmFpbHVyZSBvYmplY3RzCisgICAgICAgIHRpdGxlID0gdGl0bGUgcHJpbnRlZCBh
dCB0b3Agb2YgdGVzdAorICAgICAgICBvdmVycmlkZV90aW1lID0gY3VycmVudCB0aW1lICh1c2Vk
IGJ5IHVuaXQgdGVzdHMpCisgICAgICAgICIiIgorICAgICAgICBwYWdlID0gIiIiPGh0bWw+Cisg
IDxoZWFkPgorICAgIDx0aXRsZT5MYXlvdXQgVGVzdCBSZXN1bHRzICglKHRpbWUpcyk8L3RpdGxl
PgorICA8L2hlYWQ+CisgIDxib2R5PgorICAgIDxoMj4lKHRpdGxlKXMgKCUodGltZSlzKTwvaDI+
CisgICAgICAgICIiIiAlIHsndGl0bGUnOiB0aXRsZSwgJ3RpbWUnOiBvdmVycmlkZV90aW1lIG9y
IHRpbWUuYXNjdGltZSgpfQorCisgICAgICAgIGZvciB0ZXN0X2ZpbGUgaW4gc29ydGVkKHRlc3Rf
ZmlsZXMpOgorICAgICAgICAgICAgdGVzdF9uYW1lID0gc2VsZi5fcG9ydC5yZWxhdGl2ZV90ZXN0
X2ZpbGVuYW1lKHRlc3RfZmlsZSkKKyAgICAgICAgICAgIHRlc3RfdXJsID0gc2VsZi5fcG9ydC5m
aWxlbmFtZV90b191cmkodGVzdF9maWxlKQorICAgICAgICAgICAgcGFnZSArPSB1IjxwPjxhIGhy
ZWY9JyVzJz4lczwvYT48YnIgLz5cbiIgJSAodGVzdF91cmwsIHRlc3RfbmFtZSkKKyAgICAgICAg
ICAgIHRlc3RfZmFpbHVyZXMgPSBmYWlsdXJlcy5nZXQodGVzdF9maWxlLCBbXSkKKyAgICAgICAg
ICAgIGZvciBmYWlsdXJlIGluIHRlc3RfZmFpbHVyZXM6CisgICAgICAgICAgICAgICAgcGFnZSAr
PSAodSImbmJzcDsmbmJzcDslczxici8+IiAlCisgICAgICAgICAgICAgICAgICAgICAgICAgZmFp
bHVyZS5yZXN1bHRfaHRtbF9vdXRwdXQodGVzdF9uYW1lKSkKKyAgICAgICAgICAgIHBhZ2UgKz0g
IjwvcD5cbiIKKyAgICAgICAgcGFnZSArPSAiPC9ib2R5PjwvaHRtbD5cbiIKKyAgICAgICAgcmV0
dXJuIHBhZ2UKKworICAgIGRlZiBfd3JpdGVfcmVzdWx0c19odG1sX2ZpbGUoc2VsZiwgcmVzdWx0
X3N1bW1hcnkpOgorICAgICAgICAiIiJXcml0ZSByZXN1bHRzLmh0bWwgd2hpY2ggaXMgYSBzdW1t
YXJ5IG9mIHRlc3RzIHRoYXQgZmFpbGVkLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgcmVz
dWx0X3N1bW1hcnk6IGEgc3VtbWFyeSBvZiB0aGUgcmVzdWx0cyA6KQorCisgICAgICAgIFJldHVy
bnM6CisgICAgICAgICAgVHJ1ZSBpZiBhbnkgcmVzdWx0cyB3ZXJlIHdyaXR0ZW4gKHNpbmNlIGV4
cGVjdGVkIGZhaWx1cmVzIG1heSBiZQorICAgICAgICAgIG9taXR0ZWQpCisgICAgICAgICIiIgor
ICAgICAgICAjIHRlc3QgZmFpbHVyZXMKKyAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5mdWxsX3Jl
c3VsdHNfaHRtbDoKKyAgICAgICAgICAgIHJlc3VsdHNfdGl0bGUgPSAiVGVzdCBGYWlsdXJlcyIK
KyAgICAgICAgICAgIHRlc3RfZmlsZXMgPSByZXN1bHRfc3VtbWFyeS5mYWlsdXJlcy5rZXlzKCkK
KyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJlc3VsdHNfdGl0bGUgPSAiVW5leHBlY3RlZCBU
ZXN0IEZhaWx1cmVzIgorICAgICAgICAgICAgdW5leHBlY3RlZF9mYWlsdXJlcyA9IHNlbGYuX2dl
dF9mYWlsdXJlcyhyZXN1bHRfc3VtbWFyeSwKKyAgICAgICAgICAgICAgICBpbmNsdWRlX2NyYXNo
ZXM9VHJ1ZSkKKyAgICAgICAgICAgIHRlc3RfZmlsZXMgPSB1bmV4cGVjdGVkX2ZhaWx1cmVzLmtl
eXMoKQorICAgICAgICBpZiBub3QgbGVuKHRlc3RfZmlsZXMpOgorICAgICAgICAgICAgcmV0dXJu
IEZhbHNlCisKKyAgICAgICAgb3V0X2ZpbGVuYW1lID0gb3MucGF0aC5qb2luKHNlbGYuX29wdGlv
bnMucmVzdWx0c19kaXJlY3RvcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAicmVzdWx0cy5odG1sIikKKyAgICAgICAgd2l0aCBjb2RlY3Mub3BlbihvdXRfZmlsZW5hbWUs
ICJ3IiwgInV0Zi04IikgYXMgcmVzdWx0c19maWxlOgorICAgICAgICAgICAgaHRtbCA9IHNlbGYu
X3Jlc3VsdHNfaHRtbCh0ZXN0X2ZpbGVzLCByZXN1bHRfc3VtbWFyeS5mYWlsdXJlcywgcmVzdWx0
c190aXRsZSkKKyAgICAgICAgICAgIHJlc3VsdHNfZmlsZS53cml0ZShodG1sKQorCisgICAgICAg
IHJldHVybiBUcnVlCisKKyAgICBkZWYgX3Nob3dfcmVzdWx0c19odG1sX2ZpbGUoc2VsZik6Cisg
ICAgICAgICIiIlNob3dzIHRoZSByZXN1bHRzLmh0bWwgcGFnZS4iIiIKKyAgICAgICAgcmVzdWx0
c19maWxlbmFtZSA9IG9zLnBhdGguam9pbihzZWxmLl9vcHRpb25zLnJlc3VsdHNfZGlyZWN0b3J5
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZXN1bHRzLmh0bWwi
KQorICAgICAgICBzZWxmLl9wb3J0LnNob3dfcmVzdWx0c19odG1sX2ZpbGUocmVzdWx0c19maWxl
bmFtZSkKKworCitkZWYgcmVhZF90ZXN0X2ZpbGVzKGZpbGVzKToKKyAgICB0ZXN0cyA9IFtdCisg
ICAgZm9yIGZpbGUgaW4gZmlsZXM6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdpdGggY29k
ZWNzLm9wZW4oZmlsZSwgJ3InLCAndXRmLTgnKSBhcyBmaWxlX2NvbnRlbnRzOgorICAgICAgICAg
ICAgICAgICMgRklYTUU6IFRoaXMgY291bGQgYmUgY2xlYW5lciB1c2luZyBhIGxpc3QgY29tcHJl
aGVuc2lvbi4KKyAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiBmaWxlX2NvbnRlbnRzOgorICAg
ICAgICAgICAgICAgICAgICBsaW5lID0gdGVzdF9leHBlY3RhdGlvbnMuc3RyaXBfY29tbWVudHMo
bGluZSkKKyAgICAgICAgICAgICAgICAgICAgaWYgbGluZToKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHRlc3RzLmFwcGVuZChsaW5lKQorICAgICAgICBleGNlcHQgSU9FcnJvciwgZToKKyAgICAg
ICAgICAgIGlmIGUuZXJybm8gPT0gZXJybm8uRU5PRU5UOgorICAgICAgICAgICAgICAgIF9sb2cu
Y3JpdGljYWwoJycpCisgICAgICAgICAgICAgICAgX2xvZy5jcml0aWNhbCgnLS10ZXN0LWxpc3Qg
ZmlsZSAiJXMiIG5vdCBmb3VuZCcgJSBmaWxlKQorICAgICAgICAgICAgcmFpc2UKKyAgICByZXR1
cm4gdGVzdHMKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfcnVubmVyX3VuaXR0ZXN0LnB5IGIvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9ydW5u
ZXJfdW5pdHRlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2M1NjRhZTVjNjg4MTMwMWVmZWQ2NWZhNGI5MWU3
ODdlMWU1ZDgzMQotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfcnVubmVyX3VuaXR0ZXN0LnB5CkBA
IC0wLDAgKzEsMTAyIEBACisjIS91c3IvYmluL3B5dGhvbgorIyBDb3B5cmlnaHQgKEMpIDIwMTAg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDEwIEdh
Ym9yIFJhcGNzYW55aSAocmdhYm9yQGluZi51LXN6ZWdlZC5odSksIFVuaXZlcnNpdHkgb2YgU3pl
Z2VkCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmli
dXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisiIiJVbml0IHRlc3RzIGZvciBUZXN0UnVubmVyKCku
IiIiCisKK2ltcG9ydCB1bml0dGVzdAorCitmcm9tIHdlYmtpdHB5LnRoaXJkcGFydHkubW9jayBp
bXBvcnQgTW9jaworCitpbXBvcnQgdGVzdF9ydW5uZXIKKworCitjbGFzcyBUZXN0UnVubmVyV3Jh
cHBlcih0ZXN0X3J1bm5lci5UZXN0UnVubmVyKToKKyAgICBkZWYgX2dldF90ZXN0X2lucHV0X2Zv
cl9maWxlKHNlbGYsIHRlc3RfZmlsZSk6CisgICAgICAgIHJldHVybiB0ZXN0X2ZpbGUKKworCitj
bGFzcyBUZXN0UnVubmVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfcmVz
dWx0c19odG1sKHNlbGYpOgorICAgICAgICBtb2NrX3BvcnQgPSBNb2NrKCkKKyAgICAgICAgbW9j
a19wb3J0LnJlbGF0aXZlX3Rlc3RfZmlsZW5hbWUgPSBsYW1iZGEgbmFtZTogbmFtZQorICAgICAg
ICBtb2NrX3BvcnQuZmlsZW5hbWVfdG9fdXJpID0gbGFtYmRhIG5hbWU6IG5hbWUKKworICAgICAg
ICBydW5uZXIgPSB0ZXN0X3J1bm5lci5UZXN0UnVubmVyKHBvcnQ9bW9ja19wb3J0LCBvcHRpb25z
PU1vY2soKSwKKyAgICAgICAgICAgIHByaW50ZXI9TW9jaygpKQorICAgICAgICBleHBlY3RlZF9o
dG1sID0gdSIiIjxodG1sPgorICA8aGVhZD4KKyAgICA8dGl0bGU+TGF5b3V0IFRlc3QgUmVzdWx0
cyAodGltZSk8L3RpdGxlPgorICA8L2hlYWQ+CisgIDxib2R5PgorICAgIDxoMj5UaXRsZSAodGlt
ZSk8L2gyPgorICAgICAgICA8cD48YSBocmVmPSd0ZXN0X3BhdGgnPnRlc3RfcGF0aDwvYT48YnIg
Lz4KKzwvcD4KKzwvYm9keT48L2h0bWw+CisiIiIKKyAgICAgICAgaHRtbCA9IHJ1bm5lci5fcmVz
dWx0c19odG1sKFsidGVzdF9wYXRoIl0sIHt9LCAiVGl0bGUiLCBvdmVycmlkZV90aW1lPSJ0aW1l
IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChodG1sLCBleHBlY3RlZF9odG1sKQorCisgICAg
ZGVmIHRlc3Rfc2hhcmRfdGVzdHMoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IF9zaGFyZF90
ZXN0cyBpbiB0ZXN0X3J1bm5lci5UZXN0UnVubmVyIHJlYWxseQorICAgICAgICAjIHB1dCB0aGUg
aHR0cCB0ZXN0cyBmaXJzdCBpbiB0aGUgcXVldWUuCisgICAgICAgIHJ1bm5lciA9IFRlc3RSdW5u
ZXJXcmFwcGVyKHBvcnQ9TW9jaygpLCBvcHRpb25zPU1vY2soKSwKKyAgICAgICAgICAgIHByaW50
ZXI9TW9jaygpKQorCisgICAgICAgIHRlc3RfbGlzdCA9IFsKKyAgICAgICAgICAiTGF5b3V0VGVz
dHMvd2Vic29ja2V0L3Rlc3RzL3VuaWNvZGUuaHRtIiwKKyAgICAgICAgICAiTGF5b3V0VGVzdHMv
YW5pbWF0aW9ucy9rZXlmcmFtZXMuaHRtbCIsCisgICAgICAgICAgIkxheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkvdmlldy1zb3VyY2Utbm8tcmVmcmVzaC5odG1sIiwKKyAgICAgICAgICAi
TGF5b3V0VGVzdHMvd2Vic29ja2V0L3Rlc3RzL3dlYnNvY2tldC1wcm90b2NvbC1pZ25vcmVkLmh0
bWwiLAorICAgICAgICAgICJMYXlvdXRUZXN0cy9mYXN0L2Nzcy9kaXNwbGF5LW5vbmUtaW5saW5l
LXN0eWxlLWNoYW5nZS1jcmFzaC5odG1sIiwKKyAgICAgICAgICAiTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy94bWxodHRwcmVxdWVzdC9zdXBwb3J0ZWQteG1sLWNvbnRlbnQtdHlwZXMuaHRtbCIsCisg
ICAgICAgICAgIkxheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMi9odG1sL0hUTUxBbmNob3JFbGVt
ZW50MDMuaHRtbCIsCisgICAgICAgICAgIkxheW91dFRlc3RzL2lldGVzdGNlbnRlci9KYXZhc2Ny
aXB0LzExLjEuNV80LTQtYy0xLmh0bWwiLAorICAgICAgICAgICJMYXlvdXRUZXN0cy9kb20vaHRt
bC9sZXZlbDIvaHRtbC9IVE1MQW5jaG9yRWxlbWVudDA2Lmh0bWwiLAorICAgICAgICBdCisKKyAg
ICAgICAgZXhwZWN0ZWRfdGVzdHNfdG9faHR0cF9sb2NrID0gc2V0KFsKKyAgICAgICAgICAnTGF5
b3V0VGVzdHMvd2Vic29ja2V0L3Rlc3RzL3VuaWNvZGUuaHRtJywKKyAgICAgICAgICAnTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS92aWV3LXNvdXJjZS1uby1yZWZyZXNoLmh0bWwnLAor
ICAgICAgICAgICdMYXlvdXRUZXN0cy93ZWJzb2NrZXQvdGVzdHMvd2Vic29ja2V0LXByb3RvY29s
LWlnbm9yZWQuaHRtbCcsCisgICAgICAgICAgJ0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0
cHJlcXVlc3Qvc3VwcG9ydGVkLXhtbC1jb250ZW50LXR5cGVzLmh0bWwnLAorICAgICAgICBdKQor
CisgICAgICAgICMgRklYTUU6IElkZWFsbHkgdGhlIEhUVFAgdGVzdHMgZG9uJ3QgaGF2ZSB0byBh
bGwgYmUgaW4gb25lIHNoYXJkLgorICAgICAgICBzaW5nbGVfdGhyZWFkX3Jlc3VsdHMgPSBydW5u
ZXIuX3NoYXJkX3Rlc3RzKHRlc3RfbGlzdCwgRmFsc2UpCisgICAgICAgIG11bHRpX3RocmVhZF9y
ZXN1bHRzID0gcnVubmVyLl9zaGFyZF90ZXN0cyh0ZXN0X2xpc3QsIFRydWUpCisKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgidGVzdHNfdG9faHR0cF9sb2NrIiwgc2luZ2xlX3RocmVhZF9yZXN1
bHRzWzBdWzBdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX3Rlc3RzX3RvX2h0
dHBfbG9jaywgc2V0KHNpbmdsZV90aHJlYWRfcmVzdWx0c1swXVsxXSkpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoInRlc3RzX3RvX2h0dHBfbG9jayIsIG11bHRpX3RocmVhZF9yZXN1bHRzWzBd
WzBdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX3Rlc3RzX3RvX2h0dHBfbG9j
aywgc2V0KG11bHRpX3RocmVhZF9yZXN1bHRzWzBdWzFdKSkKKworCitpZiBfX25hbWVfXyA9PSAn
X19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weSBiL1dlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkK
aW5kZXggZDU1NTI4NjM4YmVkZTQxZTk3YzY0OTgxMTllMTJkZjQyNTE0Yzc0MC4uOGRkMDI3NGIw
MjBmM2Q3YTVjNGQwZGEyMjJjOWM5YTBiOGZiNzI0ZCAxMDA3NTUKLS0tIGEvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weQorKysgYi9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3Rz
LnB5CkBAIC0yOCwxMjQ2ICsyOCwyNyBAQAogIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
IAotIiIiUnVuIGxheW91dCB0ZXN0cy4KLQotVGhpcyBpcyBhIHBvcnQgb2YgdGhlIGV4aXN0aW5n
IHdlYmtpdCB0ZXN0IHNjcmlwdCBydW4td2Via2l0LXRlc3RzLgotCi1UaGUgVGVzdFJ1bm5lciBj
bGFzcyBydW5zIGEgc2VyaWVzIG9mIHRlc3RzIChUZXN0VHlwZSBpbnRlcmZhY2UpIGFnYWluc3Qg
YSBzZXQKLW9mIHRlc3QgZmlsZXMuICBJZiBhIHRlc3QgZmlsZSBmYWlscyBhIFRlc3RUeXBlLCBp
dCByZXR1cm5zIGEgbGlzdCBUZXN0RmFpbHVyZQotb2JqZWN0cyB0byB0aGUgVGVzdFJ1bm5lci4g
IFRoZSBUZXN0UnVubmVyIHRoZW4gYWdncmVnYXRlcyB0aGUgVGVzdEZhaWx1cmVzIHRvCi1jcmVh
dGUgYSBmaW5hbCByZXBvcnQuCi0KLVRoaXMgc2NyaXB0IHJlYWRzIHNldmVyYWwgZmlsZXMsIGlm
IHRoZXkgZXhpc3QgaW4gdGhlIHRlc3RfbGlzdHMgc3ViZGlyZWN0b3J5Ci1uZXh0IHRvIHRoaXMg
c2NyaXB0IGl0c2VsZi4gIEVhY2ggc2hvdWxkIGNvbnRhaW4gYSBsaXN0IG9mIHBhdGhzIHRvIGlu
ZGl2aWR1YWwKLXRlc3RzIG9yIGVudGlyZSBzdWJkaXJlY3RvcmllcyBvZiB0ZXN0cywgcmVsYXRp
dmUgdG8gdGhlIG91dGVybW9zdCB0ZXN0Ci1kaXJlY3RvcnkuICBFbnRpcmUgbGluZXMgc3RhcnRp
bmcgd2l0aCAnLy8nIChjb21tZW50cykgd2lsbCBiZSBpZ25vcmVkLgotCi1Gb3IgZGV0YWlscyBv
ZiB0aGUgZmlsZXMnIGNvbnRlbnRzIGFuZCBwdXJwb3Nlcywgc2VlIHRlc3RfbGlzdHMvUkVBRE1F
LgotIiIiCisiIiJSdW4gbGF5b3V0IHRlc3RzLiIiIgogCiBmcm9tIF9fZnV0dXJlX18gaW1wb3J0
IHdpdGhfc3RhdGVtZW50CiAKIGltcG9ydCBjb2RlY3MKIGltcG9ydCBlcnJubwotaW1wb3J0IGds
b2IKIGltcG9ydCBsb2dnaW5nCi1pbXBvcnQgbWF0aAogaW1wb3J0IG9wdHBhcnNlCiBpbXBvcnQg
b3MKLWltcG9ydCBwbGF0Zm9ybQotaW1wb3J0IFF1ZXVlCi1pbXBvcnQgcmFuZG9tCi1pbXBvcnQg
cmUKLWltcG9ydCBzaHV0aWwKIGltcG9ydCBzaWduYWwKIGltcG9ydCBzeXMKLWltcG9ydCB0aW1l
Ci1pbXBvcnQgdHJhY2ViYWNrCiAKLWZyb20gbGF5b3V0X3BhY2thZ2UgaW1wb3J0IGR1bXBfcmVu
ZGVyX3RyZWVfdGhyZWFkCi1mcm9tIGxheW91dF9wYWNrYWdlIGltcG9ydCBqc29uX2xheW91dF9y
ZXN1bHRzX2dlbmVyYXRvcgotZnJvbSBsYXlvdXRfcGFja2FnZSBpbXBvcnQgbWVzc2FnZV9icm9r
ZXIKIGZyb20gbGF5b3V0X3BhY2thZ2UgaW1wb3J0IHByaW50aW5nCi1mcm9tIGxheW91dF9wYWNr
YWdlIGltcG9ydCB0ZXN0X2V4cGVjdGF0aW9ucwotZnJvbSBsYXlvdXRfcGFja2FnZSBpbXBvcnQg
dGVzdF9mYWlsdXJlcwotZnJvbSBsYXlvdXRfcGFja2FnZSBpbXBvcnQgdGVzdF9yZXN1bHRzCi1m
cm9tIGxheW91dF9wYWNrYWdlIGltcG9ydCB0ZXN0X3Jlc3VsdHNfdXBsb2FkZXIKK2Zyb20gbGF5
b3V0X3BhY2thZ2UgaW1wb3J0IHRlc3RfcnVubmVyCiAKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5
c3RlbSBpbXBvcnQgdXNlcgogZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5IGltcG9ydCBzaW1wbGVq
c29uCi1mcm9tIHdlYmtpdHB5LnRvb2wgaW1wb3J0IGdyYW1tYXIKIAogaW1wb3J0IHBvcnQKIAot
X2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJ3ZWJraXRweS5sYXlvdXRfdGVzdHMucnVuX3dlYmtp
dF90ZXN0cyIpCi0KLSMgQnVpbGRlciBiYXNlIFVSTCB3aGVyZSB3ZSBoYXZlIHRoZSBhcmNoaXZl
ZCB0ZXN0IHJlc3VsdHMuCi1CVUlMREVSX0JBU0VfVVJMID0gImh0dHA6Ly9idWlsZC5jaHJvbWl1
bS5vcmcvYnVpbGRib3QvbGF5b3V0X3Rlc3RfcmVzdWx0cy8iCi0KLUxBWU9VVF9URVNUU19ESVJF
Q1RPUlkgPSAiTGF5b3V0VGVzdHMiICsgb3Muc2VwCi0KLVRlc3RFeHBlY3RhdGlvbnNGaWxlID0g
dGVzdF9leHBlY3RhdGlvbnMuVGVzdEV4cGVjdGF0aW9uc0ZpbGUKLQotCi1jbGFzcyBUZXN0SW5w
dXQ6Ci0gICAgIiIiR3JvdXBzIGluZm9ybWF0aW9uIGFib3V0IGEgdGVzdCBmb3IgZWFzeSBwYXNz
aW5nIG9mIGRhdGEuIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZW5hbWUsIHRpbWVv
dXQpOgotICAgICAgICAiIiJIb2xkcyB0aGUgaW5wdXQgcGFyYW1ldGVycyBmb3IgYSB0ZXN0Lgot
ICAgICAgICBBcmdzOgotICAgICAgICAgIGZpbGVuYW1lOiBGdWxsIHBhdGggdG8gdGhlIHRlc3Qu
Ci0gICAgICAgICAgdGltZW91dDogVGltZW91dCBpbiBtc2VjcyB0aGUgZHJpdmVyIHNob3VsZCB1
c2Ugd2hpbGUgcnVubmluZyB0aGUgdGVzdAotICAgICAgICAgICIiIgotICAgICAgICAjIEZJWE1F
OiBmaWxlbmFtZSBzaG91bGQgcmVhbGx5IGJlIHRlc3RfbmFtZSBhcyBhIHJlbGF0aXZlIHBhdGgu
Ci0gICAgICAgIHNlbGYuZmlsZW5hbWUgPSBmaWxlbmFtZQotICAgICAgICBzZWxmLnRpbWVvdXQg
PSB0aW1lb3V0Ci0gICAgICAgICMgVGhlIGltYWdlX2hhc2ggaXMgdXNlZCB0byBhdm9pZCBkb2lu
ZyBhbiBpbWFnZSBkdW1wIGlmIHRoZQotICAgICAgICAjIGNoZWNrc3VtcyBtYXRjaC4gVGhlIGlt
YWdlX2hhc2ggaXMgc2V0IGxhdGVyLCBhbmQgb25seSBpZiBpdCBpcyBuZWVkZWQKLSAgICAgICAg
IyBmb3IgdGhlIHRlc3QuCi0gICAgICAgIHNlbGYuaW1hZ2VfaGFzaCA9IE5vbmUKLQotCi1jbGFz
cyBSZXN1bHRTdW1tYXJ5KG9iamVjdCk6Ci0gICAgIiIiQSBjbGFzcyBmb3IgcGFydGl0aW9uaW5n
IHRoZSB0ZXN0IHJlc3VsdHMgd2UgZ2V0IGludG8gYnVja2V0cy4KLQotICAgIFRoaXMgY2xhc3Mg
aXMgYmFzaWNhbGx5IGEgZ2xvcmlmaWVkIHN0cnVjdCBhbmQgaXQncyBwcml2YXRlIHRvIHRoaXMg
ZmlsZQotICAgIHNvIHdlIGRvbid0IGJvdGhlciB3aXRoIGFueSBpbmZvcm1hdGlvbiBoaWRpbmcu
IiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgZXhwZWN0YXRpb25zLCB0ZXN0X2ZpbGVzKToK
LSAgICAgICAgc2VsZi50b3RhbCA9IGxlbih0ZXN0X2ZpbGVzKQotICAgICAgICBzZWxmLnJlbWFp
bmluZyA9IHNlbGYudG90YWwKLSAgICAgICAgc2VsZi5leHBlY3RhdGlvbnMgPSBleHBlY3RhdGlv
bnMKLSAgICAgICAgc2VsZi5leHBlY3RlZCA9IDAKLSAgICAgICAgc2VsZi51bmV4cGVjdGVkID0g
MAotICAgICAgICBzZWxmLnRlc3RzX2J5X2V4cGVjdGF0aW9uID0ge30KLSAgICAgICAgc2VsZi50
ZXN0c19ieV90aW1lbGluZSA9IHt9Ci0gICAgICAgIHNlbGYucmVzdWx0cyA9IHt9Ci0gICAgICAg
IHNlbGYudW5leHBlY3RlZF9yZXN1bHRzID0ge30KLSAgICAgICAgc2VsZi5mYWlsdXJlcyA9IHt9
Ci0gICAgICAgIHNlbGYudGVzdHNfYnlfZXhwZWN0YXRpb25bdGVzdF9leHBlY3RhdGlvbnMuU0tJ
UF0gPSBzZXQoKQotICAgICAgICBmb3IgZXhwZWN0YXRpb24gaW4gVGVzdEV4cGVjdGF0aW9uc0Zp
bGUuRVhQRUNUQVRJT05TLnZhbHVlcygpOgotICAgICAgICAgICAgc2VsZi50ZXN0c19ieV9leHBl
Y3RhdGlvbltleHBlY3RhdGlvbl0gPSBzZXQoKQotICAgICAgICBmb3IgdGltZWxpbmUgaW4gVGVz
dEV4cGVjdGF0aW9uc0ZpbGUuVElNRUxJTkVTLnZhbHVlcygpOgotICAgICAgICAgICAgc2VsZi50
ZXN0c19ieV90aW1lbGluZVt0aW1lbGluZV0gPSAoCi0gICAgICAgICAgICAgICAgZXhwZWN0YXRp
b25zLmdldF90ZXN0c193aXRoX3RpbWVsaW5lKHRpbWVsaW5lKSkKLQotICAgIGRlZiBhZGQoc2Vs
ZiwgcmVzdWx0LCBleHBlY3RlZCk6Ci0gICAgICAgICIiIkFkZCBhIFRlc3RSZXN1bHQgaW50byB0
aGUgYXBwcm9wcmlhdGUgYmluLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgcmVzdWx0OiBU
ZXN0UmVzdWx0Ci0gICAgICAgICAgZXhwZWN0ZWQ6IHdoZXRoZXIgdGhlIHJlc3VsdCB3YXMgd2hh
dCB3ZSBleHBlY3RlZCBpdCB0byBiZS4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgc2VsZi50ZXN0
c19ieV9leHBlY3RhdGlvbltyZXN1bHQudHlwZV0uYWRkKHJlc3VsdC5maWxlbmFtZSkKLSAgICAg
ICAgc2VsZi5yZXN1bHRzW3Jlc3VsdC5maWxlbmFtZV0gPSByZXN1bHQKLSAgICAgICAgc2VsZi5y
ZW1haW5pbmcgLT0gMQotICAgICAgICBpZiBsZW4ocmVzdWx0LmZhaWx1cmVzKToKLSAgICAgICAg
ICAgIHNlbGYuZmFpbHVyZXNbcmVzdWx0LmZpbGVuYW1lXSA9IHJlc3VsdC5mYWlsdXJlcwotICAg
ICAgICBpZiBleHBlY3RlZDoKLSAgICAgICAgICAgIHNlbGYuZXhwZWN0ZWQgKz0gMQotICAgICAg
ICBlbHNlOgotICAgICAgICAgICAgc2VsZi51bmV4cGVjdGVkX3Jlc3VsdHNbcmVzdWx0LmZpbGVu
YW1lXSA9IHJlc3VsdC50eXBlCi0gICAgICAgICAgICBzZWxmLnVuZXhwZWN0ZWQgKz0gMQotCi0K
LWRlZiBzdW1tYXJpemVfdW5leHBlY3RlZF9yZXN1bHRzKHBvcnRfb2JqLCBleHBlY3RhdGlvbnMs
IHJlc3VsdF9zdW1tYXJ5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0cnlf
c3VtbWFyeSk6Ci0gICAgIiIiU3VtbWFyaXplIGFueSB1bmV4cGVjdGVkIHJlc3VsdHMgYXMgYSBk
aWN0LgotCi0gICAgRklYTUU6IHNwbGl0IHRoaXMgZGF0YSBzdHJ1Y3R1cmUgaW50byBhIHNlcGFy
YXRlIGNsYXNzPwotCi0gICAgQXJnczoKLSAgICAgICAgcG9ydF9vYmo6IGludGVyZmFjZSB0byBw
b3J0LXNwZWNpZmljIGhvb2tzCi0gICAgICAgIGV4cGVjdGF0aW9uczogdGVzdF9leHBlY3RhdGlv
bnMuVGVzdEV4cGVjdGF0aW9ucyBvYmplY3QKLSAgICAgICAgcmVzdWx0X3N1bW1hcnk6IHN1bW1h
cnkgb2JqZWN0IGZyb20gaW5pdGlhbCB0ZXN0IHJ1bnMKLSAgICAgICAgcmV0cnlfc3VtbWFyeTog
c3VtbWFyeSBvYmplY3QgZnJvbSBmaW5hbCB0ZXN0IHJ1biBvZiByZXRyaWVkIHRlc3RzCi0gICAg
UmV0dXJuczoKLSAgICAgICAgQSBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgYSBzdW1tYXJ5IG9mIHRo
ZSB1bmV4cGVjdGVkIHJlc3VsdHMgZnJvbSB0aGUKLSAgICAgICAgcnVuLCB3aXRoIHRoZSBmb2xs
b3dpbmcgZmllbGRzOgotICAgICAgICAndmVyc2lvbic6IGEgdmVyc2lvbiBpbmRpY2F0b3IgKDEg
aW4gdGhpcyB2ZXJzaW9uKQotICAgICAgICAnZml4YWJsZSc6ICMgb2YgZml4YWJsZSB0ZXN0cyAo
Tk9XIC0gUEFTUykKLSAgICAgICAgJ3NraXBwZWQnOiAjIG9mIHNraXBwZWQgdGVzdHMgKE5PVyAm
IFNLSVBQRUQpCi0gICAgICAgICdudW1fcmVncmVzc2lvbnMnOiAjIG9mIG5vbi1mbGFreSBmYWls
dXJlcwotICAgICAgICAnbnVtX2ZsYWt5JzogIyBvZiBmbGFreSBmYWlsdXJlcwotICAgICAgICAn
bnVtX3Bhc3Nlcyc6ICMgb2YgdW5leHBlY3RlZCBwYXNzZXMKLSAgICAgICAgJ3Rlc3RzJzogYSBk
aWN0IG9mIHRlc3RzIC0+IHsnZXhwZWN0ZWQnOiAnLi4uJywgJ2FjdHVhbCc6ICcuLi4nfQotICAg
ICIiIgotICAgIHJlc3VsdHMgPSB7fQotICAgIHJlc3VsdHNbJ3ZlcnNpb24nXSA9IDEKLQotICAg
IHRiZSA9IHJlc3VsdF9zdW1tYXJ5LnRlc3RzX2J5X2V4cGVjdGF0aW9uCi0gICAgdGJ0ID0gcmVz
dWx0X3N1bW1hcnkudGVzdHNfYnlfdGltZWxpbmUKLSAgICByZXN1bHRzWydmaXhhYmxlJ10gPSBs
ZW4odGJ0W3Rlc3RfZXhwZWN0YXRpb25zLk5PV10gLQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0YmVbdGVzdF9leHBlY3RhdGlvbnMuUEFTU10pCi0gICAgcmVzdWx0c1snc2tpcHBl
ZCddID0gbGVuKHRidFt0ZXN0X2V4cGVjdGF0aW9ucy5OT1ddICYKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdGJlW3Rlc3RfZXhwZWN0YXRpb25zLlNLSVBdKQotCi0gICAgbnVtX3Bh
c3NlcyA9IDAKLSAgICBudW1fZmxha3kgPSAwCi0gICAgbnVtX3JlZ3Jlc3Npb25zID0gMAotICAg
IGtleXdvcmRzID0ge30KLSAgICBmb3IgaywgdiBpbiBUZXN0RXhwZWN0YXRpb25zRmlsZS5FWFBF
Q1RBVElPTlMuaXRlcml0ZW1zKCk6Ci0gICAgICAgIGtleXdvcmRzW3ZdID0gay51cHBlcigpCi0K
LSAgICB0ZXN0cyA9IHt9Ci0gICAgZm9yIGZpbGVuYW1lLCByZXN1bHQgaW4gcmVzdWx0X3N1bW1h
cnkudW5leHBlY3RlZF9yZXN1bHRzLml0ZXJpdGVtcygpOgotICAgICAgICAjIE5vdGUgdGhhdCBp
ZiBhIHRlc3QgY3Jhc2hlZCBpbiB0aGUgb3JpZ2luYWwgcnVuLCB3ZSBpZ25vcmUKLSAgICAgICAg
IyB3aGV0aGVyIG9yIG5vdCBpdCBjcmFzaGVkIHdoZW4gd2UgcmV0cmllZCBpdCAoaWYgd2UgcmV0
cmllZCBpdCksCi0gICAgICAgICMgYW5kIGFsd2F5cyBjb25zaWRlciB0aGUgcmVzdWx0IG5vdCBm
bGFreS4KLSAgICAgICAgdGVzdCA9IHBvcnRfb2JqLnJlbGF0aXZlX3Rlc3RfZmlsZW5hbWUoZmls
ZW5hbWUpCi0gICAgICAgIGV4cGVjdGVkID0gZXhwZWN0YXRpb25zLmdldF9leHBlY3RhdGlvbnNf
c3RyaW5nKGZpbGVuYW1lKQotICAgICAgICBhY3R1YWwgPSBba2V5d29yZHNbcmVzdWx0XV0KLQot
ICAgICAgICBpZiByZXN1bHQgPT0gdGVzdF9leHBlY3RhdGlvbnMuUEFTUzoKLSAgICAgICAgICAg
IG51bV9wYXNzZXMgKz0gMQotICAgICAgICBlbGlmIHJlc3VsdCA9PSB0ZXN0X2V4cGVjdGF0aW9u
cy5DUkFTSDoKLSAgICAgICAgICAgIG51bV9yZWdyZXNzaW9ucyArPSAxCi0gICAgICAgIGVsc2U6
Ci0gICAgICAgICAgICBpZiBmaWxlbmFtZSBub3QgaW4gcmV0cnlfc3VtbWFyeS51bmV4cGVjdGVk
X3Jlc3VsdHM6Ci0gICAgICAgICAgICAgICAgYWN0dWFsLmV4dGVuZChleHBlY3RhdGlvbnMuZ2V0
X2V4cGVjdGF0aW9uc19zdHJpbmcoCi0gICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lKS5zcGxp
dCgiICIpKQotICAgICAgICAgICAgICAgIG51bV9mbGFreSArPSAxCi0gICAgICAgICAgICBlbHNl
OgotICAgICAgICAgICAgICAgIHJldHJ5X3Jlc3VsdCA9IHJldHJ5X3N1bW1hcnkudW5leHBlY3Rl
ZF9yZXN1bHRzW2ZpbGVuYW1lXQotICAgICAgICAgICAgICAgIGlmIHJlc3VsdCAhPSByZXRyeV9y
ZXN1bHQ6Ci0gICAgICAgICAgICAgICAgICAgIGFjdHVhbC5hcHBlbmQoa2V5d29yZHNbcmV0cnlf
cmVzdWx0XSkKLSAgICAgICAgICAgICAgICAgICAgbnVtX2ZsYWt5ICs9IDEKLSAgICAgICAgICAg
ICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBudW1fcmVncmVzc2lvbnMgKz0gMQotCi0g
ICAgICAgIHRlc3RzW3Rlc3RdID0ge30KLSAgICAgICAgdGVzdHNbdGVzdF1bJ2V4cGVjdGVkJ10g
PSBleHBlY3RlZAotICAgICAgICB0ZXN0c1t0ZXN0XVsnYWN0dWFsJ10gPSAiICIuam9pbihhY3R1
YWwpCi0KLSAgICByZXN1bHRzWyd0ZXN0cyddID0gdGVzdHMKLSAgICByZXN1bHRzWydudW1fcGFz
c2VzJ10gPSBudW1fcGFzc2VzCi0gICAgcmVzdWx0c1snbnVtX2ZsYWt5J10gPSBudW1fZmxha3kK
LSAgICByZXN1bHRzWydudW1fcmVncmVzc2lvbnMnXSA9IG51bV9yZWdyZXNzaW9ucwotCi0gICAg
cmV0dXJuIHJlc3VsdHMKLQotCi1jbGFzcyBUZXN0UnVubmVyOgotICAgICIiIkEgY2xhc3MgZm9y
IG1hbmFnaW5nIHJ1bm5pbmcgYSBzZXJpZXMgb2YgdGVzdHMgb24gYSBzZXJpZXMgb2YgbGF5b3V0
Ci0gICAgdGVzdCBmaWxlcy4iIiIKLQotICAgIEhUVFBfU1VCRElSID0gb3Muc2VwLmpvaW4oWycn
LCAnaHR0cCcsICcnXSkKLSAgICBXRUJTT0NLRVRfU1VCRElSID0gb3Muc2VwLmpvaW4oWycnLCAn
d2Vic29ja2V0JywgJyddKQotCi0gICAgIyBUaGUgcGVyLXRlc3QgdGltZW91dCBpbiBtaWxsaXNl
Y29uZHMsIGlmIG5vIC0tdGltZS1vdXQtbXMgb3B0aW9uIHdhcwotICAgICMgZ2l2ZW4gdG8gcnVu
X3dlYmtpdF90ZXN0cy4gVGhpcyBzaG91bGQgY29ycmVzcG9uZCB0byB0aGUgZGVmYXVsdCB0aW1l
b3V0Ci0gICAgIyBpbiBEdW1wUmVuZGVyVHJlZS4KLSAgICBERUZBVUxUX1RFU1RfVElNRU9VVF9N
UyA9IDYgKiAxMDAwCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgcG9ydCwgb3B0aW9ucywgcHJp
bnRlcik6Ci0gICAgICAgICIiIkluaXRpYWxpemUgdGVzdCBydW5uZXIgZGF0YSBzdHJ1Y3R1cmVz
LgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgcG9ydDogYW4gb2JqZWN0IGltcGxlbWVudGlu
ZyBwb3J0LXNwZWNpZmljCi0gICAgICAgICAgb3B0aW9uczogYSBkaWN0aW9uYXJ5IG9mIGNvbW1h
bmQgbGluZSBvcHRpb25zCi0gICAgICAgICAgcHJpbnRlcjogYSBQcmludGVyIG9iamVjdCB0byBy
ZWNvcmQgdXBkYXRlcyB0by4KLSAgICAgICAgIiIiCi0gICAgICAgIHNlbGYuX3BvcnQgPSBwb3J0
Ci0gICAgICAgIHNlbGYuX29wdGlvbnMgPSBvcHRpb25zCi0gICAgICAgIHNlbGYuX3ByaW50ZXIg
PSBwcmludGVyCi0gICAgICAgIHNlbGYuX21lc3NhZ2VfYnJva2VyID0gTm9uZQotCi0gICAgICAg
ICMgZGlzYWJsZSB3c3Mgc2VydmVyLiBuZWVkIHRvIGluc3RhbGwgcHlPcGVuU1NMIG9uIGJ1aWxk
Ym90cy4KLSAgICAgICAgIyBzZWxmLl93ZWJzb2NrZXRfc2VjdXJlX3NlcnZlciA9IHdlYnNvY2tl
dF9zZXJ2ZXIuUHlXZWJTb2NrZXQoCi0gICAgICAgICMgICAgICAgIG9wdGlvbnMucmVzdWx0c19k
aXJlY3RvcnksIHVzZV90bHM9VHJ1ZSwgcG9ydD05MzIzKQotCi0gICAgICAgICMgYSBzZXQgb2Yg
dGVzdCBmaWxlcywgYW5kIHRoZSBzYW1lIHRlc3RzIGFzIGEgbGlzdAotICAgICAgICBzZWxmLl90
ZXN0X2ZpbGVzID0gc2V0KCkKLSAgICAgICAgc2VsZi5fdGVzdF9maWxlc19saXN0ID0gTm9uZQot
ICAgICAgICBzZWxmLl9yZXN1bHRfcXVldWUgPSBRdWV1ZS5RdWV1ZSgpCi0gICAgICAgIHNlbGYu
X3JldHJ5aW5nID0gRmFsc2UKLQotICAgIGRlZiBjb2xsZWN0X3Rlc3RzKHNlbGYsIGFyZ3MsIGxh
c3RfdW5leHBlY3RlZF9yZXN1bHRzKToKLSAgICAgICAgIiIiRmluZCBhbGwgdGhlIGZpbGVzIHRv
IHRlc3QuCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICBhcmdzOiBsaXN0IG9mIHRlc3QgYXJn
dW1lbnRzIGZyb20gdGhlIGNvbW1hbmQgbGluZQotICAgICAgICAgIGxhc3RfdW5leHBlY3RlZF9y
ZXN1bHRzOiBsaXN0IG9mIHVuZXhwZWN0ZWQgcmVzdWx0cyB0byByZXRlc3QsIGlmIGFueQotCi0g
ICAgICAgICIiIgotICAgICAgICBwYXRocyA9IFtzZWxmLl9zdHJpcF90ZXN0X2Rpcl9wcmVmaXgo
YXJnKSBmb3IgYXJnIGluIGFyZ3MgaWYgYXJnIGFuZCBhcmcgIT0gJyddCi0gICAgICAgIHBhdGhz
ICs9IGxhc3RfdW5leHBlY3RlZF9yZXN1bHRzCi0gICAgICAgIGlmIHNlbGYuX29wdGlvbnMudGVz
dF9saXN0OgotICAgICAgICAgICAgcGF0aHMgKz0gcmVhZF90ZXN0X2ZpbGVzKHNlbGYuX29wdGlv
bnMudGVzdF9saXN0KQotICAgICAgICBzZWxmLl90ZXN0X2ZpbGVzID0gc2VsZi5fcG9ydC50ZXN0
cyhwYXRocykKLQotICAgIGRlZiBfc3RyaXBfdGVzdF9kaXJfcHJlZml4KHNlbGYsIHBhdGgpOgot
ICAgICAgICBpZiBwYXRoLnN0YXJ0c3dpdGgoTEFZT1VUX1RFU1RTX0RJUkVDVE9SWSk6Ci0gICAg
ICAgICAgICByZXR1cm4gcGF0aFtsZW4oTEFZT1VUX1RFU1RTX0RJUkVDVE9SWSk6XQotICAgICAg
ICByZXR1cm4gcGF0aAotCi0gICAgZGVmIGxpbnQoc2VsZik6Ci0gICAgICAgIGxpbnRfZmFpbGVk
ID0gRmFsc2UKLQotICAgICAgICAjIENyZWF0aW5nIHRoZSBleHBlY2F0aW9ucyBmb3IgZWFjaCBw
bGF0Zm9ybS9jb25maWd1cmF0aW9uIHBhaXIgZG9lcwotICAgICAgICAjIGFsbCB0aGUgdGVzdCBs
aXN0IHBhcnNpbmcgYW5kIGVuc3VyZXMgaXQncyBjb3JyZWN0IHN5bnRheCAoZS5nLiBubwotICAg
ICAgICAjIGR1cGVzKS4KLSAgICAgICAgZm9yIHBsYXRmb3JtX25hbWUgaW4gc2VsZi5fcG9ydC50
ZXN0X3BsYXRmb3JtX25hbWVzKCk6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAg
c2VsZi5wYXJzZV9leHBlY3RhdGlvbnMocGxhdGZvcm1fbmFtZSwgaXNfZGVidWdfbW9kZT1UcnVl
KQotICAgICAgICAgICAgZXhjZXB0IHRlc3RfZXhwZWN0YXRpb25zLlBhcnNlRXJyb3I6Ci0gICAg
ICAgICAgICAgICAgbGludF9mYWlsZWQgPSBUcnVlCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAg
ICAgICAgICAgc2VsZi5wYXJzZV9leHBlY3RhdGlvbnMocGxhdGZvcm1fbmFtZSwgaXNfZGVidWdf
bW9kZT1GYWxzZSkKLSAgICAgICAgICAgIGV4Y2VwdCB0ZXN0X2V4cGVjdGF0aW9ucy5QYXJzZUVy
cm9yOgotICAgICAgICAgICAgICAgIGxpbnRfZmFpbGVkID0gVHJ1ZQotCi0gICAgICAgIHNlbGYu
X3ByaW50ZXIud3JpdGUoIiIpCi0gICAgICAgIGlmIGxpbnRfZmFpbGVkOgotICAgICAgICAgICAg
X2xvZy5lcnJvcigiTGludCBmYWlsZWQuIikKLSAgICAgICAgICAgIHJldHVybiAtMQotCi0gICAg
ICAgIF9sb2cuaW5mbygiTGludCBzdWNjZWVkZWQuIikKLSAgICAgICAgcmV0dXJuIDAKLQotICAg
IGRlZiBwYXJzZV9leHBlY3RhdGlvbnMoc2VsZiwgdGVzdF9wbGF0Zm9ybV9uYW1lLCBpc19kZWJ1
Z19tb2RlKToKLSAgICAgICAgIiIiUGFyc2UgdGhlIGV4cGVjdGF0aW9ucyBmcm9tIHRoZSB0ZXN0
X2xpc3QgZmlsZXMgYW5kIHJldHVybiBhIGRhdGEKLSAgICAgICAgc3RydWN0dXJlIGhvbGRpbmcg
dGhlbS4gVGhyb3dzIGFuIGVycm9yIGlmIHRoZSB0ZXN0X2xpc3QgZmlsZXMgaGF2ZQotICAgICAg
ICBpbnZhbGlkIHN5bnRheC4iIiIKLSAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5saW50X3Rlc3Rf
ZmlsZXM6Ci0gICAgICAgICAgICB0ZXN0X2ZpbGVzID0gTm9uZQotICAgICAgICBlbHNlOgotICAg
ICAgICAgICAgdGVzdF9maWxlcyA9IHNlbGYuX3Rlc3RfZmlsZXMKLQotICAgICAgICBleHBlY3Rh
dGlvbnNfc3RyID0gc2VsZi5fcG9ydC50ZXN0X2V4cGVjdGF0aW9ucygpCi0gICAgICAgIG92ZXJy
aWRlc19zdHIgPSBzZWxmLl9wb3J0LnRlc3RfZXhwZWN0YXRpb25zX292ZXJyaWRlcygpCi0gICAg
ICAgIHNlbGYuX2V4cGVjdGF0aW9ucyA9IHRlc3RfZXhwZWN0YXRpb25zLlRlc3RFeHBlY3RhdGlv
bnMoCi0gICAgICAgICAgICBzZWxmLl9wb3J0LCB0ZXN0X2ZpbGVzLCBleHBlY3RhdGlvbnNfc3Ry
LCB0ZXN0X3BsYXRmb3JtX25hbWUsCi0gICAgICAgICAgICBpc19kZWJ1Z19tb2RlLCBzZWxmLl9v
cHRpb25zLmxpbnRfdGVzdF9maWxlcywKLSAgICAgICAgICAgIG92ZXJyaWRlcz1vdmVycmlkZXNf
c3RyKQotICAgICAgICByZXR1cm4gc2VsZi5fZXhwZWN0YXRpb25zCi0KLQotICAgIGRlZiBwcmVw
YXJlX2xpc3RzX2FuZF9wcmludF9vdXRwdXQoc2VsZik6Ci0gICAgICAgICIiIkNyZWF0ZSBhcHBy
b3ByaWF0ZSBzdWJzZXRzIG9mIHRlc3QgbGlzdHMgYW5kIHJldHVybnMgYQotICAgICAgICBSZXN1
bHRTdW1tYXJ5IG9iamVjdC4gQWxzbyBwcmludHMgZXhwZWN0ZWQgdGVzdCBjb3VudHMuCi0gICAg
ICAgICIiIgotCi0gICAgICAgICMgUmVtb3ZlIHNraXBwZWQgLSBib3RoIGZpeGFibGUgYW5kIGln
bm9yZWQgLSBmaWxlcyBmcm9tIHRoZQotICAgICAgICAjIHRvcC1sZXZlbCBsaXN0IG9mIGZpbGVz
IHRvIHRlc3QuCi0gICAgICAgIG51bV9hbGxfdGVzdF9maWxlcyA9IGxlbihzZWxmLl90ZXN0X2Zp
bGVzKQotICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X2V4cGVjdGVkKCJGb3VuZDogICVkIHRl
c3RzIiAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxlbihzZWxmLl90
ZXN0X2ZpbGVzKSkpCi0gICAgICAgIGlmIG5vdCBudW1fYWxsX3Rlc3RfZmlsZXM6Ci0gICAgICAg
ICAgICBfbG9nLmNyaXRpY2FsKCdObyB0ZXN0cyB0byBydW4uJykKLSAgICAgICAgICAgIHJldHVy
biBOb25lCi0KLSAgICAgICAgc2tpcHBlZCA9IHNldCgpCi0gICAgICAgIGlmIG51bV9hbGxfdGVz
dF9maWxlcyA+IDEgYW5kIG5vdCBzZWxmLl9vcHRpb25zLmZvcmNlOgotICAgICAgICAgICAgc2tp
cHBlZCA9IHNlbGYuX2V4cGVjdGF0aW9ucy5nZXRfdGVzdHNfd2l0aF9yZXN1bHRfdHlwZSgKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfZXhwZWN0YXRpb25zLlNLSVApCi0gICAgICAg
ICAgICBzZWxmLl90ZXN0X2ZpbGVzIC09IHNraXBwZWQKLQotICAgICAgICAjIENyZWF0ZSBhIHNv
cnRlZCBsaXN0IG9mIHRlc3QgZmlsZXMgc28gdGhlIHN1YnNldCBjaHVuaywKLSAgICAgICAgIyBp
ZiB1c2VkLCBjb250YWlucyBhbHBoYWJldGljYWxseSBjb25zZWN1dGl2ZSB0ZXN0cy4KLSAgICAg
ICAgc2VsZi5fdGVzdF9maWxlc19saXN0ID0gbGlzdChzZWxmLl90ZXN0X2ZpbGVzKQotICAgICAg
ICBpZiBzZWxmLl9vcHRpb25zLnJhbmRvbWl6ZV9vcmRlcjoKLSAgICAgICAgICAgIHJhbmRvbS5z
aHVmZmxlKHNlbGYuX3Rlc3RfZmlsZXNfbGlzdCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAg
IHNlbGYuX3Rlc3RfZmlsZXNfbGlzdC5zb3J0KCkKLQotICAgICAgICAjIElmIHRoZSB1c2VyIHNw
ZWNpZmllcyB0aGV5IGp1c3Qgd2FudCB0byBydW4gYSBzdWJzZXQgb2YgdGhlIHRlc3RzLAotICAg
ICAgICAjIGp1c3QgZ3JhYiBhIHN1YnNldCBvZiB0aGUgbm9uLXNraXBwZWQgdGVzdHMuCi0gICAg
ICAgIGlmIHNlbGYuX29wdGlvbnMucnVuX2NodW5rIG9yIHNlbGYuX29wdGlvbnMucnVuX3BhcnQ6
Ci0gICAgICAgICAgICBjaHVua192YWx1ZSA9IHNlbGYuX29wdGlvbnMucnVuX2NodW5rIG9yIHNl
bGYuX29wdGlvbnMucnVuX3BhcnQKLSAgICAgICAgICAgIHRlc3RfZmlsZXMgPSBzZWxmLl90ZXN0
X2ZpbGVzX2xpc3QKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAoY2h1bmtfbnVt
LCBjaHVua19sZW4pID0gY2h1bmtfdmFsdWUuc3BsaXQoIjoiKQotICAgICAgICAgICAgICAgIGNo
dW5rX251bSA9IGludChjaHVua19udW0pCi0gICAgICAgICAgICAgICAgYXNzZXJ0KGNodW5rX251
bSA+PSAwKQotICAgICAgICAgICAgICAgIHRlc3Rfc2l6ZSA9IGludChjaHVua19sZW4pCi0gICAg
ICAgICAgICAgICAgYXNzZXJ0KHRlc3Rfc2l6ZSA+IDApCi0gICAgICAgICAgICBleGNlcHQ6Ci0g
ICAgICAgICAgICAgICAgX2xvZy5jcml0aWNhbCgiaW52YWxpZCBjaHVuayAnJXMnIiAlIGNodW5r
X3ZhbHVlKQotICAgICAgICAgICAgICAgIHJldHVybiBOb25lCi0KLSAgICAgICAgICAgICMgR2V0
IHRoZSBudW1iZXIgb2YgdGVzdHMKLSAgICAgICAgICAgIG51bV90ZXN0cyA9IGxlbih0ZXN0X2Zp
bGVzKQotCi0gICAgICAgICAgICAjIEdldCB0aGUgc3RhcnQgb2Zmc2V0IG9mIHRoZSBzbGljZS4K
LSAgICAgICAgICAgIGlmIHNlbGYuX29wdGlvbnMucnVuX2NodW5rOgotICAgICAgICAgICAgICAg
IGNodW5rX2xlbiA9IHRlc3Rfc2l6ZQotICAgICAgICAgICAgICAgICMgSW4gdGhpcyBjYXNlIGNo
dW5rX251bSBjYW4gYmUgcmVhbGx5IGxhcmdlLiBXZSBuZWVkCi0gICAgICAgICAgICAgICAgIyB0
byBtYWtlIHRoZSBzbGF2ZSBmaXQgaW4gdGhlIGN1cnJlbnQgbnVtYmVyIG9mIHRlc3RzLgotICAg
ICAgICAgICAgICAgIHNsaWNlX3N0YXJ0ID0gKGNodW5rX251bSAqIGNodW5rX2xlbikgJSBudW1f
dGVzdHMKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgIyBWYWxpZGF0ZSB0aGUg
ZGF0YS4KLSAgICAgICAgICAgICAgICBhc3NlcnQodGVzdF9zaXplIDw9IG51bV90ZXN0cykKLSAg
ICAgICAgICAgICAgICBhc3NlcnQoY2h1bmtfbnVtIDw9IHRlc3Rfc2l6ZSkKLQotICAgICAgICAg
ICAgICAgICMgVG8gY291bnQgdGhlIGNodW5rX2xlbiwgYW5kIG1ha2Ugc3VyZSB3ZSBkb24ndCBz
a2lwCi0gICAgICAgICAgICAgICAgIyBzb21lIHRlc3RzLCB3ZSByb3VuZCB0byB0aGUgbmV4dCB2
YWx1ZSB0aGF0IGZpdHMgZXhhY3RseQotICAgICAgICAgICAgICAgICMgYWxsIHRoZSBwYXJ0cy4K
LSAgICAgICAgICAgICAgICByb3VuZGVkX3Rlc3RzID0gbnVtX3Rlc3RzCi0gICAgICAgICAgICAg
ICAgaWYgcm91bmRlZF90ZXN0cyAlIHRlc3Rfc2l6ZSAhPSAwOgotICAgICAgICAgICAgICAgICAg
ICByb3VuZGVkX3Rlc3RzID0gKG51bV90ZXN0cyArIHRlc3Rfc2l6ZSAtCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKG51bV90ZXN0cyAlIHRlc3Rfc2l6ZSkpCi0KLSAgICAg
ICAgICAgICAgICBjaHVua19sZW4gPSByb3VuZGVkX3Rlc3RzIC8gdGVzdF9zaXplCi0gICAgICAg
ICAgICAgICAgc2xpY2Vfc3RhcnQgPSBjaHVua19sZW4gKiAoY2h1bmtfbnVtIC0gMSkKLSAgICAg
ICAgICAgICAgICAjIEl0IGRvZXMgbm90IG1pbmQgaWYgd2UgZ28gb3ZlciB0ZXN0X3NpemUuCi0K
LSAgICAgICAgICAgICMgR2V0IHRoZSBlbmQgb2Zmc2V0IG9mIHRoZSBzbGljZS4KLSAgICAgICAg
ICAgIHNsaWNlX2VuZCA9IG1pbihudW1fdGVzdHMsIHNsaWNlX3N0YXJ0ICsgY2h1bmtfbGVuKQot
Ci0gICAgICAgICAgICBmaWxlcyA9IHRlc3RfZmlsZXNbc2xpY2Vfc3RhcnQ6c2xpY2VfZW5kXQot
Ci0gICAgICAgICAgICB0ZXN0c19ydW5fbXNnID0gJ1J1bm5pbmc6ICVkIHRlc3RzIChjaHVuayBz
bGljZSBbJWQ6JWRdIG9mICVkKScgJSAoCi0gICAgICAgICAgICAgICAgKHNsaWNlX2VuZCAtIHNs
aWNlX3N0YXJ0KSwgc2xpY2Vfc3RhcnQsIHNsaWNlX2VuZCwgbnVtX3Rlc3RzKQotICAgICAgICAg
ICAgc2VsZi5fcHJpbnRlci5wcmludF9leHBlY3RlZCh0ZXN0c19ydW5fbXNnKQotCi0gICAgICAg
ICAgICAjIElmIHdlIHJlYWNoZWQgdGhlIGVuZCBhbmQgd2UgZG9uJ3QgaGF2ZSBlbm91Z2ggdGVz
dHMsIHdlIHJ1biBzb21lCi0gICAgICAgICAgICAjIGZyb20gdGhlIGJlZ2lubmluZy4KLSAgICAg
ICAgICAgIGlmIHNsaWNlX2VuZCAtIHNsaWNlX3N0YXJ0IDwgY2h1bmtfbGVuOgotICAgICAgICAg
ICAgICAgIGV4dHJhID0gY2h1bmtfbGVuIC0gKHNsaWNlX2VuZCAtIHNsaWNlX3N0YXJ0KQotICAg
ICAgICAgICAgICAgIGV4dHJhX21zZyA9ICgnICAgbGFzdCBjaHVuayBpcyBwYXJ0aWFsLCBhcHBl
bmRpbmcgWzA6JWRdJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmEpCi0gICAg
ICAgICAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF9leHBlY3RlZChleHRyYV9tc2cpCi0gICAg
ICAgICAgICAgICAgdGVzdHNfcnVuX21zZyArPSAiXG4iICsgZXh0cmFfbXNnCi0gICAgICAgICAg
ICAgICAgZmlsZXMuZXh0ZW5kKHRlc3RfZmlsZXNbMDpleHRyYV0pCi0gICAgICAgICAgICB0ZXN0
c19ydW5fZmlsZW5hbWUgPSBvcy5wYXRoLmpvaW4oc2VsZi5fb3B0aW9ucy5yZXN1bHRzX2RpcmVj
dG9yeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGVz
dHNfcnVuLnR4dCIpCi0gICAgICAgICAgICB3aXRoIGNvZGVjcy5vcGVuKHRlc3RzX3J1bl9maWxl
bmFtZSwgInciLCAidXRmLTgiKSBhcyBmaWxlOgotICAgICAgICAgICAgICAgIGZpbGUud3JpdGUo
dGVzdHNfcnVuX21zZyArICJcbiIpCi0KLSAgICAgICAgICAgIGxlbl9za2lwX2NodW5rID0gaW50
KGxlbihmaWxlcykgKiBsZW4oc2tpcHBlZCkgLwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZmxvYXQobGVuKHNlbGYuX3Rlc3RfZmlsZXMpKSkKLSAgICAgICAgICAgIHNraXBfY2h1
bmtfbGlzdCA9IGxpc3Qoc2tpcHBlZClbMDpsZW5fc2tpcF9jaHVua10KLSAgICAgICAgICAgIHNr
aXBfY2h1bmsgPSBzZXQoc2tpcF9jaHVua19saXN0KQotCi0gICAgICAgICAgICAjIFVwZGF0ZSBl
eHBlY3RhdGlvbnMgc28gdGhhdCB0aGUgc3RhdHMgYXJlIGNhbGN1bGF0ZWQgY29ycmVjdGx5Lgot
ICAgICAgICAgICAgIyBXZSBuZWVkIHRvIHBhc3MgYSBsaXN0IHRoYXQgaW5jbHVkZXMgdGhlIHJp
Z2h0ICMgb2Ygc2tpcHBlZCBmaWxlcwotICAgICAgICAgICAgIyB0byBQYXJzZUV4cGVjdGF0aW9u
cyBzbyB0aGF0IFJlc3VsdFN1bW1hcnkoKSB3aWxsIGdldCB0aGUgY29ycmVjdAotICAgICAgICAg
ICAgIyBzdGF0cy4gU28sIHdlIGFkZCBpbiB0aGUgc3Vic2V0IG9mIHNraXBwZWQgZmlsZXMsIGFu
ZCB0aGVuCi0gICAgICAgICAgICAjIHN1YnRyYWN0IHRoZW0gYmFjayBvdXQuCi0gICAgICAgICAg
ICBzZWxmLl90ZXN0X2ZpbGVzX2xpc3QgPSBmaWxlcyArIHNraXBfY2h1bmtfbGlzdAotICAgICAg
ICAgICAgc2VsZi5fdGVzdF9maWxlcyA9IHNldChzZWxmLl90ZXN0X2ZpbGVzX2xpc3QpCi0KLSAg
ICAgICAgICAgIHNlbGYuX2V4cGVjdGF0aW9ucyA9IHNlbGYucGFyc2VfZXhwZWN0YXRpb25zKAot
ICAgICAgICAgICAgICAgIHNlbGYuX3BvcnQudGVzdF9wbGF0Zm9ybV9uYW1lKCksCi0gICAgICAg
ICAgICAgICAgc2VsZi5fb3B0aW9ucy5jb25maWd1cmF0aW9uID09ICdEZWJ1ZycpCi0KLSAgICAg
ICAgICAgIHNlbGYuX3Rlc3RfZmlsZXMgPSBzZXQoZmlsZXMpCi0gICAgICAgICAgICBzZWxmLl90
ZXN0X2ZpbGVzX2xpc3QgPSBmaWxlcwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2tpcF9j
aHVuayA9IHNraXBwZWQKLQotICAgICAgICByZXN1bHRfc3VtbWFyeSA9IFJlc3VsdFN1bW1hcnko
c2VsZi5fZXhwZWN0YXRpb25zLAotICAgICAgICAgICAgc2VsZi5fdGVzdF9maWxlcyB8IHNraXBf
Y2h1bmspCi0gICAgICAgIHNlbGYuX3ByaW50X2V4cGVjdGVkX3Jlc3VsdHNfb2ZfdHlwZShyZXN1
bHRfc3VtbWFyeSwKLSAgICAgICAgICAgIHRlc3RfZXhwZWN0YXRpb25zLlBBU1MsICJwYXNzZXMi
KQotICAgICAgICBzZWxmLl9wcmludF9leHBlY3RlZF9yZXN1bHRzX29mX3R5cGUocmVzdWx0X3N1
bW1hcnksCi0gICAgICAgICAgICB0ZXN0X2V4cGVjdGF0aW9ucy5GQUlMLCAiZmFpbHVyZXMiKQot
ICAgICAgICBzZWxmLl9wcmludF9leHBlY3RlZF9yZXN1bHRzX29mX3R5cGUocmVzdWx0X3N1bW1h
cnksCi0gICAgICAgICAgICB0ZXN0X2V4cGVjdGF0aW9ucy5GTEFLWSwgImZsYWt5IikKLSAgICAg
ICAgc2VsZi5fcHJpbnRfZXhwZWN0ZWRfcmVzdWx0c19vZl90eXBlKHJlc3VsdF9zdW1tYXJ5LAot
ICAgICAgICAgICAgdGVzdF9leHBlY3RhdGlvbnMuU0tJUCwgInNraXBwZWQiKQotCi0gICAgICAg
IGlmIHNlbGYuX29wdGlvbnMuZm9yY2U6Ci0gICAgICAgICAgICBzZWxmLl9wcmludGVyLnByaW50
X2V4cGVjdGVkKCdSdW5uaW5nIGFsbCB0ZXN0cywgaW5jbHVkaW5nICcKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NraXBzICgtLWZvcmNlKScpCi0gICAgICAgIGVs
c2U6Ci0gICAgICAgICAgICAjIE5vdGUgdGhhdCB3ZSBkb24ndCBhY3R1YWxseSBydW4gdGhlIHNr
aXBwZWQgdGVzdHMgKHRoZXkgd2VyZQotICAgICAgICAgICAgIyBzdWJ0cmFjdGVkIG91dCBvZiBz
ZWxmLl90ZXN0X2ZpbGVzLCBhYm92ZSksIGJ1dCB3ZSBzdHViIG91dCB0aGUKLSAgICAgICAgICAg
ICMgcmVzdWx0cyBoZXJlIHNvIHRoZSBzdGF0aXN0aWNzIGNhbiByZW1haW4gYWNjdXJhdGUuCi0g
ICAgICAgICAgICBmb3IgdGVzdCBpbiBza2lwX2NodW5rOgotICAgICAgICAgICAgICAgIHJlc3Vs
dCA9IHRlc3RfcmVzdWx0cy5UZXN0UmVzdWx0KHRlc3QsCi0gICAgICAgICAgICAgICAgICAgIGZh
aWx1cmVzPVtdLCB0ZXN0X3J1bl90aW1lPTAsIHRvdGFsX3RpbWVfZm9yX2FsbF9kaWZmcz0wLAot
ICAgICAgICAgICAgICAgICAgICB0aW1lX2Zvcl9kaWZmcz0wKQotICAgICAgICAgICAgICAgIHJl
c3VsdC50eXBlID0gdGVzdF9leHBlY3RhdGlvbnMuU0tJUAotICAgICAgICAgICAgICAgIHJlc3Vs
dF9zdW1tYXJ5LmFkZChyZXN1bHQsIGV4cGVjdGVkPVRydWUpCi0gICAgICAgIHNlbGYuX3ByaW50
ZXIucHJpbnRfZXhwZWN0ZWQoJycpCi0KLSAgICAgICAgcmV0dXJuIHJlc3VsdF9zdW1tYXJ5Ci0K
LSAgICBkZWYgX2dldF9kaXJfZm9yX3Rlc3RfZmlsZShzZWxmLCB0ZXN0X2ZpbGUpOgotICAgICAg
ICAiIiJSZXR1cm5zIHRoZSBoaWdoZXN0LWxldmVsIGRpcmVjdG9yeSBieSB3aGljaCB0byBzaGFy
ZCB0aGUgZ2l2ZW4KLSAgICAgICAgdGVzdCBmaWxlLiIiIgotICAgICAgICBpbmRleCA9IHRlc3Rf
ZmlsZS5yZmluZChvcy5zZXAgKyBMQVlPVVRfVEVTVFNfRElSRUNUT1JZKQotCi0gICAgICAgIHRl
c3RfZmlsZSA9IHRlc3RfZmlsZVtpbmRleCArIGxlbihMQVlPVVRfVEVTVFNfRElSRUNUT1JZKTpd
Ci0gICAgICAgIHRlc3RfZmlsZV9wYXJ0cyA9IHRlc3RfZmlsZS5zcGxpdChvcy5zZXAsIDEpCi0g
ICAgICAgIGRpcmVjdG9yeSA9IHRlc3RfZmlsZV9wYXJ0c1swXQotICAgICAgICB0ZXN0X2ZpbGUg
PSB0ZXN0X2ZpbGVfcGFydHNbMV0KLQotICAgICAgICAjIFRoZSBodHRwIHRlc3RzIGFyZSB2ZXJ5
IHN0YWJsZSBvbiBtYWMvbGludXguCi0gICAgICAgICMgVE9ETyhvamFuKTogTWFrZSB0aGUgaHR0
cCBzZXJ2ZXIgb24gV2luZG93cyBiZSBhcGFjaGUgc28gd2UgY2FuCi0gICAgICAgICMgdHVybiBz
aGFyZCB0aGUgaHR0cCB0ZXN0cyB0aGVyZSBhcyB3ZWxsLiBTd2l0Y2hpbmcgdG8gYXBhY2hlIGlz
Ci0gICAgICAgICMgd2hhdCBtYWRlIHRoZW0gc3RhYmxlIG9uIGxpbnV4L21hYy4KLSAgICAgICAg
cmV0dXJuX3ZhbHVlID0gZGlyZWN0b3J5Ci0gICAgICAgIHdoaWxlICgoZGlyZWN0b3J5ICE9ICdo
dHRwJyBvciBzeXMucGxhdGZvcm0gaW4gKCdkYXJ3aW4nLCAnbGludXgyJykpCi0gICAgICAgICAg
ICAgICAgYW5kIHRlc3RfZmlsZS5maW5kKG9zLnNlcCkgPj0gMCk6Ci0gICAgICAgICAgICB0ZXN0
X2ZpbGVfcGFydHMgPSB0ZXN0X2ZpbGUuc3BsaXQob3Muc2VwLCAxKQotICAgICAgICAgICAgZGly
ZWN0b3J5ID0gdGVzdF9maWxlX3BhcnRzWzBdCi0gICAgICAgICAgICByZXR1cm5fdmFsdWUgPSBv
cy5wYXRoLmpvaW4ocmV0dXJuX3ZhbHVlLCBkaXJlY3RvcnkpCi0gICAgICAgICAgICB0ZXN0X2Zp
bGUgPSB0ZXN0X2ZpbGVfcGFydHNbMV0KLQotICAgICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlCi0K
LSAgICBkZWYgX2dldF90ZXN0X2lucHV0X2Zvcl9maWxlKHNlbGYsIHRlc3RfZmlsZSk6Ci0gICAg
ICAgICIiIlJldHVybnMgdGhlIGFwcHJvcHJpYXRlIFRlc3RJbnB1dCBvYmplY3QgZm9yIHRoZSBm
aWxlLiBNb3N0bHkgdGhpcwotICAgICAgICBpcyB1c2VkIGZvciBsb29raW5nIHVwIHRoZSB0aW1l
b3V0IHZhbHVlIChpbiBtcykgdG8gdXNlIGZvciB0aGUgZ2l2ZW4KLSAgICAgICAgdGVzdC4iIiIK
LSAgICAgICAgaWYgc2VsZi5fdGVzdF9pc19zbG93KHRlc3RfZmlsZSk6Ci0gICAgICAgICAgICBy
ZXR1cm4gVGVzdElucHV0KHRlc3RfZmlsZSwgc2VsZi5fb3B0aW9ucy5zbG93X3RpbWVfb3V0X21z
KQotICAgICAgICByZXR1cm4gVGVzdElucHV0KHRlc3RfZmlsZSwgc2VsZi5fb3B0aW9ucy50aW1l
X291dF9tcykKLQotICAgIGRlZiBfdGVzdF9yZXF1aXJlc19sb2NrKHNlbGYsIHRlc3RfZmlsZSk6
Ci0gICAgICAgICIiIlJldHVybiBUcnVlIGlmIHRoZSB0ZXN0IG5lZWRzIHRvIGJlIGxvY2tlZCB3
aGVuCi0gICAgICAgIHJ1bm5pbmcgbXVsdGlwbGUgY29waWVzIG9mIE5SV1RzLiIiIgotICAgICAg
ICBzcGxpdF9wYXRoID0gdGVzdF9maWxlLnNwbGl0KG9zLnNlcCkKLSAgICAgICAgcmV0dXJuICdo
dHRwJyBpbiBzcGxpdF9wYXRoIG9yICd3ZWJzb2NrZXQnIGluIHNwbGl0X3BhdGgKLQotICAgIGRl
ZiBfdGVzdF9pc19zbG93KHNlbGYsIHRlc3RfZmlsZSk6Ci0gICAgICAgIHJldHVybiBzZWxmLl9l
eHBlY3RhdGlvbnMuaGFzX21vZGlmaWVyKHRlc3RfZmlsZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9leHBlY3RhdGlvbnMuU0xPVykKLQotICAg
IGRlZiBfc2hhcmRfdGVzdHMoc2VsZiwgdGVzdF9maWxlcywgdXNlX3JlYWxfc2hhcmRzKToKLSAg
ICAgICAgIiIiR3JvdXBzIHRlc3RzIGludG8gYmF0Y2hlcy4KLSAgICAgICAgVGhpcyBoZWxwcyBl
bnN1cmUgdGhhdCB0ZXN0cyB0aGF0IGRlcGVuZCBvbiBlYWNoIG90aGVyIChha2EgYmFkIHRlc3Rz
ISkKLSAgICAgICAgY29udGludWUgdG8gcnVuIHRvZ2V0aGVyIGFzIG1vc3QgY3Jvc3MtdGVzdHMg
ZGVwZW5kZW5jaWVzIHRlbmQgdG8KLSAgICAgICAgb2NjdXIgd2l0aGluIHRoZSBzYW1lIGRpcmVj
dG9yeS4gSWYgdXNlX3JlYWxfc2hhcmRzIGlzIEZhbHNlLCB3ZQotICAgICAgICBwdXQgZWFjaCAo
bm9uLUhUVFAvd2Vic29ja2V0KSB0ZXN0IGludG8gaXRzIG93biBzaGFyZCBmb3IgbWF4aW11bQot
ICAgICAgICBjb25jdXJyZW5jeSBpbnN0ZWFkIG9mIHRyeWluZyB0byBkbyBhbnkgc29ydCBvZiBy
ZWFsIHNoYXJkaW5nLgotCi0gICAgICAgIFJldHVybjoKLSAgICAgICAgICAgIEEgbGlzdCBvZiBs
aXN0cyBvZiBUZXN0SW5wdXQgb2JqZWN0cy4KLSAgICAgICAgIiIiCi0gICAgICAgICMgRklYTUU6
IHdoZW4gd2UgYWRkZWQgaHR0cCBsb2NraW5nLCB3ZSBjaGFuZ2VkIGhvdyB0aGlzIHdvcmtzIHN1
Y2gKLSAgICAgICAgIyB0aGF0IHdlIGFsd2F5cyBsdW1wIGFsbCBvZiB0aGUgSFRUUCB0aHJlYWRz
IGludG8gYSBzaW5nbGUgc2hhcmQuCi0gICAgICAgICMgVGhhdCB3aWxsIHNsb3cgZG93biBleHBl
cmltZW50YWwtZnVsbHktcGFyYWxsZWwsIGJ1dCBpdCdzIHVuY2xlYXIKLSAgICAgICAgIyB3aGF0
IHRoZSBiZXN0IGFsdGVybmF0aXZlIGlzIGNvbXBsZXRlbHkgcmV2YW1waW5nIGhvdyB3ZSB0cmFj
awotICAgICAgICAjIHdoZW4gdG8gZ3JhYiB0aGUgbG9jay4KLQotICAgICAgICB0ZXN0X2xpc3Rz
ID0gW10KLSAgICAgICAgdGVzdHNfdG9faHR0cF9sb2NrID0gW10KLSAgICAgICAgaWYgbm90IHVz
ZV9yZWFsX3NoYXJkczoKLSAgICAgICAgICAgIGZvciB0ZXN0X2ZpbGUgaW4gdGVzdF9maWxlczoK
LSAgICAgICAgICAgICAgICB0ZXN0X2lucHV0ID0gc2VsZi5fZ2V0X3Rlc3RfaW5wdXRfZm9yX2Zp
bGUodGVzdF9maWxlKQotICAgICAgICAgICAgICAgIGlmIHNlbGYuX3Rlc3RfcmVxdWlyZXNfbG9j
ayh0ZXN0X2ZpbGUpOgotICAgICAgICAgICAgICAgICAgICB0ZXN0c190b19odHRwX2xvY2suYXBw
ZW5kKHRlc3RfaW5wdXQpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAg
ICAgdGVzdF9saXN0cy5hcHBlbmQoKCIuIiwgW3Rlc3RfaW5wdXRdKSkKLSAgICAgICAgZWxzZToK
LSAgICAgICAgICAgIHRlc3RzX2J5X2RpciA9IHt9Ci0gICAgICAgICAgICBmb3IgdGVzdF9maWxl
IGluIHRlc3RfZmlsZXM6Ci0gICAgICAgICAgICAgICAgZGlyZWN0b3J5ID0gc2VsZi5fZ2V0X2Rp
cl9mb3JfdGVzdF9maWxlKHRlc3RfZmlsZSkKLSAgICAgICAgICAgICAgICB0ZXN0X2lucHV0ID0g
c2VsZi5fZ2V0X3Rlc3RfaW5wdXRfZm9yX2ZpbGUodGVzdF9maWxlKQotICAgICAgICAgICAgICAg
IGlmIHNlbGYuX3Rlc3RfcmVxdWlyZXNfbG9jayh0ZXN0X2ZpbGUpOgotICAgICAgICAgICAgICAg
ICAgICB0ZXN0c190b19odHRwX2xvY2suYXBwZW5kKHRlc3RfaW5wdXQpCi0gICAgICAgICAgICAg
ICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgdGVzdHNfYnlfZGlyLnNldGRlZmF1bHQoZGly
ZWN0b3J5LCBbXSkKLSAgICAgICAgICAgICAgICAgICAgdGVzdHNfYnlfZGlyW2RpcmVjdG9yeV0u
YXBwZW5kKHRlc3RfaW5wdXQpCi0gICAgICAgICAgICAjIFNvcnQgYnkgdGhlIG51bWJlciBvZiB0
ZXN0cyBpbiB0aGUgZGlyIHNvIHRoYXQgdGhlIG9uZXMgd2l0aCB0aGUKLSAgICAgICAgICAgICMg
bW9zdCB0ZXN0cyBnZXQgcnVuIGZpcnN0IGluIG9yZGVyIHRvIG1heGltaXplIHBhcmFsbGVsaXph
dGlvbi4KLSAgICAgICAgICAgICMgTnVtYmVyIG9mIHRlc3RzIGlzIGEgZ29vZCBlbm91Z2gsIGJ1
dCBub3QgcGVyZmVjdCwgYXBwcm94aW1hdGlvbgotICAgICAgICAgICAgIyBvZiBob3cgbG9uZyB0
aGF0IHNldCBvZiB0ZXN0cyB3aWxsIHRha2UgdG8gcnVuLiBXZSBjYW4ndCBqdXN0IHVzZQotICAg
ICAgICAgICAgIyBhIFByaW9yaXR5UXVldWUgdW50aWwgd2UgbW92ZSB0byBQeXRob24gMi42Lgot
ICAgICAgICAgICAgZm9yIGRpcmVjdG9yeSBpbiB0ZXN0c19ieV9kaXI6Ci0gICAgICAgICAgICAg
ICAgdGVzdF9saXN0ID0gdGVzdHNfYnlfZGlyW2RpcmVjdG9yeV0KLSAgICAgICAgICAgICAgICAj
IEtlZXAgdGhlIHRlc3RzIGluIGFscGhhYmV0aWNhbCBvcmRlci4KLSAgICAgICAgICAgICAgICAj
IEZJWE1FOiBSZW1vdmUgb25jZSB0ZXN0cyBhcmUgZml4ZWQgc28gdGhleSBjYW4gYmUgcnVuIGlu
IGFueQotICAgICAgICAgICAgICAgICMgb3JkZXIuCi0gICAgICAgICAgICAgICAgdGVzdF9saXN0
LnJldmVyc2UoKQotICAgICAgICAgICAgICAgIHRlc3RfbGlzdF90dXBsZSA9IChkaXJlY3Rvcnks
IHRlc3RfbGlzdCkKLSAgICAgICAgICAgICAgICB0ZXN0X2xpc3RzLmFwcGVuZCh0ZXN0X2xpc3Rf
dHVwbGUpCi0gICAgICAgICAgICB0ZXN0X2xpc3RzLnNvcnQobGFtYmRhIGEsIGI6IGNtcChsZW4o
YlsxXSksIGxlbihhWzFdKSkpCi0KLSAgICAgICAgIyBQdXQgdGhlIGh0dHAgdGVzdHMgZmlyc3Qu
IFRoZXJlIGFyZSBvbmx5IGEgY291cGxlIGh1bmRyZWQgb2YgdGhlbSwKLSAgICAgICAgIyBidXQg
ZWFjaCBodHRwIHRlc3QgdGFrZXMgYSB2ZXJ5IGxvbmcgdGltZSB0byBydW4sIHNvIHNvcnRpbmcg
YnkgdGhlCi0gICAgICAgICMgbnVtYmVyIG9mIHRlc3RzIGRvZXNuJ3QgYWNjdXJhdGVseSBjYXB0
dXJlIGhvdyBsb25nIHRoZXkgdGFrZSB0byBydW4uCi0gICAgICAgIGlmIHRlc3RzX3RvX2h0dHBf
bG9jazoKLSAgICAgICAgICAgIHRlc3RzX3RvX2h0dHBfbG9jay5yZXZlcnNlKCkKLSAgICAgICAg
ICAgIHRlc3RfbGlzdHMuaW5zZXJ0KDAsICgidGVzdHNfdG9faHR0cF9sb2NrIiwgdGVzdHNfdG9f
aHR0cF9sb2NrKSkKLQotICAgICAgICByZXR1cm4gdGVzdF9saXN0cwotCi0gICAgZGVmIF9jb250
YWluc190ZXN0cyhzZWxmLCBzdWJkaXIpOgotICAgICAgICBmb3IgdGVzdF9maWxlIGluIHNlbGYu
X3Rlc3RfZmlsZXM6Ci0gICAgICAgICAgICBpZiB0ZXN0X2ZpbGUuZmluZChzdWJkaXIpID49IDA6
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAg
ICBkZWYgX251bV93b3JrZXJzKHNlbGYpOgotICAgICAgICByZXR1cm4gaW50KHNlbGYuX29wdGlv
bnMuY2hpbGRfcHJvY2Vzc2VzKQotCi0gICAgZGVmIF9ydW5fdGVzdHMoc2VsZiwgZmlsZV9saXN0
LCByZXN1bHRfc3VtbWFyeSk6Ci0gICAgICAgICIiIlJ1bnMgdGhlIHRlc3RzIGluIHRoZSBmaWxl
X2xpc3QuCi0KLSAgICAgICAgUmV0dXJuOiBBIHR1cGxlIChrZXlib2FyZF9pbnRlcnJ1cHRlZCwg
dGhyZWFkX3RpbWluZ3MsIHRlc3RfdGltaW5ncywKLSAgICAgICAgICAgIGluZGl2aWR1YWxfdGVz
dF90aW1pbmdzKQotICAgICAgICAgICAga2V5Ym9hcmRfaW50ZXJydXB0ZWQgaXMgd2hldGhlciBz
b21lb25lIHR5cGVkIEN0cmxeQwotICAgICAgICAgICAgdGhyZWFkX3RpbWluZ3MgaXMgYSBsaXN0
IG9mIGRpY3RzIHdpdGggdGhlIHRvdGFsIHJ1bnRpbWUKLSAgICAgICAgICAgICAgb2YgZWFjaCB0
aHJlYWQgd2l0aCAnbmFtZScsICdudW1fdGVzdHMnLCAndG90YWxfdGltZScgcHJvcGVydGllcwot
ICAgICAgICAgICAgdGVzdF90aW1pbmdzIGlzIGEgbGlzdCBvZiB0aW1pbmdzIGZvciBlYWNoIHNo
YXJkZWQgc3ViZGlyZWN0b3J5Ci0gICAgICAgICAgICAgIG9mIHRoZSBmb3JtIFt0aW1lLCBkaXJl
Y3RvcnlfbmFtZSwgbnVtX3Rlc3RzXQotICAgICAgICAgICAgaW5kaXZpZHVhbF90ZXN0X3RpbWlu
Z3MgaXMgYSBsaXN0IG9mIHJ1biB0aW1lcyBmb3IgZWFjaCB0ZXN0Ci0gICAgICAgICAgICAgIGlu
IHRoZSBmb3JtIHtmaWxlbmFtZTpmaWxlbmFtZSwgdGVzdF9ydW5fdGltZTp0ZXN0X3J1bl90aW1l
fQotICAgICAgICAgICAgcmVzdWx0X3N1bW1hcnk6IHN1bW1hcnkgb2JqZWN0IHRvIHBvcHVsYXRl
IHdpdGggdGhlIHJlc3VsdHMKLSAgICAgICAgIiIiCi0KLSAgICAgICAgc2VsZi5fcHJpbnRlci5w
cmludF91cGRhdGUoJ1NoYXJkaW5nIHRlc3RzIC4uLicpCi0gICAgICAgIG51bV93b3JrZXJzID0g
c2VsZi5fbnVtX3dvcmtlcnMoKQotICAgICAgICB0ZXN0X2xpc3RzID0gc2VsZi5fc2hhcmRfdGVz
dHMoZmlsZV9saXN0LAotICAgICAgICAgICAgbnVtX3dvcmtlcnMgPiAxIGFuZCBub3Qgc2VsZi5f
b3B0aW9ucy5leHBlcmltZW50YWxfZnVsbHlfcGFyYWxsZWwpCi0gICAgICAgIGZpbGVuYW1lX3F1
ZXVlID0gUXVldWUuUXVldWUoKQotICAgICAgICBmb3IgaXRlbSBpbiB0ZXN0X2xpc3RzOgotICAg
ICAgICAgICAgZmlsZW5hbWVfcXVldWUucHV0KGl0ZW0pCi0KLSAgICAgICAgc2VsZi5fcHJpbnRl
ci5wcmludF91cGRhdGUoJ1N0YXJ0aW5nICVzIC4uLicgJQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBncmFtbWFyLnBsdXJhbGl6ZSgnd29ya2VyJywgbnVtX3dvcmtlcnMpKQot
ICAgICAgICBzZWxmLl9tZXNzYWdlX2Jyb2tlciA9IG1lc3NhZ2VfYnJva2VyLmdldChzZWxmLl9w
b3J0LCBzZWxmLl9vcHRpb25zKQotICAgICAgICBicm9rZXIgPSBzZWxmLl9tZXNzYWdlX2Jyb2tl
cgotICAgICAgICBzZWxmLl9jdXJyZW50X2ZpbGVuYW1lX3F1ZXVlID0gZmlsZW5hbWVfcXVldWUK
LSAgICAgICAgc2VsZi5fY3VycmVudF9yZXN1bHRfc3VtbWFyeSA9IHJlc3VsdF9zdW1tYXJ5Ci0K
LSAgICAgICAgaWYgbm90IHNlbGYuX29wdGlvbnMuZHJ5X3J1bjoKLSAgICAgICAgICAgIHRocmVh
ZHMgPSBicm9rZXIuc3RhcnRfd29ya2VycyhzZWxmKQotICAgICAgICBlbHNlOgotICAgICAgICAg
ICAgdGhyZWFkcyA9IHt9Ci0KLSAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF91cGRhdGUoIlN0
YXJ0aW5nIHRlc3RpbmcgLi4uIikKLSAgICAgICAga2V5Ym9hcmRfaW50ZXJydXB0ZWQgPSBGYWxz
ZQotICAgICAgICBpZiBub3Qgc2VsZi5fb3B0aW9ucy5kcnlfcnVuOgotICAgICAgICAgICAgdHJ5
OgotICAgICAgICAgICAgICAgIGJyb2tlci5ydW5fbWVzc2FnZV9sb29wKCkKLSAgICAgICAgICAg
IGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKLSAgICAgICAgICAgICAgICBfbG9nLmluZm8oIklu
dGVycnVwdGVkLCBleGl0aW5nIikKLSAgICAgICAgICAgICAgICBicm9rZXIuY2FuY2VsX3dvcmtl
cnMoKQotICAgICAgICAgICAgICAgIGtleWJvYXJkX2ludGVycnVwdGVkID0gVHJ1ZQotICAgICAg
ICAgICAgZXhjZXB0OgotICAgICAgICAgICAgICAgICMgVW5leHBlY3RlZCBleGNlcHRpb247IGRv
bid0IHRyeSB0byBjbGVhbiB1cCB3b3JrZXJzLgotICAgICAgICAgICAgICAgIF9sb2cuaW5mbygi
RXhjZXB0aW9uIHJhaXNlZCwgZXhpdGluZyIpCi0gICAgICAgICAgICAgICAgcmFpc2UKLQotICAg
ICAgICB0aHJlYWRfdGltaW5ncywgdGVzdF90aW1pbmdzLCBpbmRpdmlkdWFsX3Rlc3RfdGltaW5n
cyA9IFwKLSAgICAgICAgICAgIHNlbGYuX2NvbGxlY3RfdGltaW5nX2luZm8odGhyZWFkcykKLQot
ICAgICAgICBicm9rZXIuY2xlYW51cCgpCi0gICAgICAgIHNlbGYuX21lc3NhZ2VfYnJva2VyID0g
Tm9uZQotICAgICAgICByZXR1cm4gKGtleWJvYXJkX2ludGVycnVwdGVkLCB0aHJlYWRfdGltaW5n
cywgdGVzdF90aW1pbmdzLAotICAgICAgICAgICAgICAgIGluZGl2aWR1YWxfdGVzdF90aW1pbmdz
KQotCi0gICAgZGVmIHVwZGF0ZShzZWxmKToKLSAgICAgICAgc2VsZi51cGRhdGVfc3VtbWFyeShz
ZWxmLl9jdXJyZW50X3Jlc3VsdF9zdW1tYXJ5KQotCi0gICAgZGVmIF9jb2xsZWN0X3RpbWluZ19p
bmZvKHNlbGYsIHRocmVhZHMpOgotICAgICAgICB0ZXN0X3RpbWluZ3MgPSB7fQotICAgICAgICBp
bmRpdmlkdWFsX3Rlc3RfdGltaW5ncyA9IFtdCi0gICAgICAgIHRocmVhZF90aW1pbmdzID0gW10K
LQotICAgICAgICBmb3IgdGhyZWFkIGluIHRocmVhZHM6Ci0gICAgICAgICAgICB0aHJlYWRfdGlt
aW5ncy5hcHBlbmQoeyduYW1lJzogdGhyZWFkLmdldE5hbWUoKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ251bV90ZXN0cyc6IHRocmVhZC5nZXRfbnVtX3Rlc3RzKCksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0b3RhbF90aW1lJzogdGhyZWFkLmdl
dF90b3RhbF90aW1lKCl9KQotICAgICAgICAgICAgdGVzdF90aW1pbmdzLnVwZGF0ZSh0aHJlYWQu
Z2V0X3Rlc3RfZ3JvdXBfdGltaW5nX3N0YXRzKCkpCi0gICAgICAgICAgICBpbmRpdmlkdWFsX3Rl
c3RfdGltaW5ncy5leHRlbmQodGhyZWFkLmdldF90ZXN0X3Jlc3VsdHMoKSkKLQotICAgICAgICBy
ZXR1cm4gKHRocmVhZF90aW1pbmdzLCB0ZXN0X3RpbWluZ3MsIGluZGl2aWR1YWxfdGVzdF90aW1p
bmdzKQotCi0gICAgZGVmIG5lZWRzX2h0dHAoc2VsZik6Ci0gICAgICAgICIiIlJldHVybnMgd2hl
dGhlciB0aGUgdGVzdCBydW5uZXIgbmVlZHMgYW4gSFRUUCBzZXJ2ZXIuIiIiCi0gICAgICAgIHJl
dHVybiBzZWxmLl9jb250YWluc190ZXN0cyhzZWxmLkhUVFBfU1VCRElSKQotCi0gICAgZGVmIG5l
ZWRzX3dlYnNvY2tldChzZWxmKToKLSAgICAgICAgIiIiUmV0dXJucyB3aGV0aGVyIHRoZSB0ZXN0
IHJ1bm5lciBuZWVkcyBhIFdFQlNPQ0tFVCBzZXJ2ZXIuIiIiCi0gICAgICAgIHJldHVybiBzZWxm
Ll9jb250YWluc190ZXN0cyhzZWxmLldFQlNPQ0tFVF9TVUJESVIpCi0KLSAgICBkZWYgc2V0X3Vw
X3J1bihzZWxmKToKLSAgICAgICAgIiIiQ29uZmlndXJlcyB0aGUgc3lzdGVtIHRvIGJlIHJlYWR5
IHRvIHJ1biB0ZXN0cy4KLQotICAgICAgICBSZXR1cm5zIGEgUmVzdWx0U3VtbWFyeSBvYmplY3Qg
aWYgd2Ugc2hvdWxkIGNvbnRpbnVlIHRvIHJ1biB0ZXN0cywKLSAgICAgICAgb3IgTm9uZSBpZiB3
ZSBzaG91bGQgYWJvcnQuCi0KLSAgICAgICAgIiIiCi0gICAgICAgICMgVGhpcyBtdXN0IGJlIHN0
YXJ0ZWQgYmVmb3JlIHdlIGNoZWNrIHRoZSBzeXN0ZW0gZGVwZW5kZW5jaWVzLAotICAgICAgICAj
IHNpbmNlIHRoZSBoZWxwZXIgbWF5IGRvIHRoaW5ncyB0byBtYWtlIHRoZSBzZXR1cCBjb3JyZWN0
LgotICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X3VwZGF0ZSgiU3RhcnRpbmcgaGVscGVyIC4u
LiIpCi0gICAgICAgIHNlbGYuX3BvcnQuc3RhcnRfaGVscGVyKCkKLQotICAgICAgICAjIENoZWNr
IHRoYXQgdGhlIHN5c3RlbSBkZXBlbmRlbmNpZXMgKHRoZW1lcywgZm9udHMsIC4uLikgYXJlIGNv
cnJlY3QuCi0gICAgICAgIGlmIG5vdCBzZWxmLl9vcHRpb25zLm5vY2hlY2tfc3lzX2RlcHM6Ci0g
ICAgICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X3VwZGF0ZSgiQ2hlY2tpbmcgc3lzdGVtIGRl
cGVuZGVuY2llcyAuLi4iKQotICAgICAgICAgICAgaWYgbm90IHNlbGYuX3BvcnQuY2hlY2tfc3lz
X2RlcHMoc2VsZi5uZWVkc19odHRwKCkpOgotICAgICAgICAgICAgICAgIHNlbGYuX3BvcnQuc3Rv
cF9oZWxwZXIoKQotICAgICAgICAgICAgICAgIHJldHVybiBOb25lCi0KLSAgICAgICAgaWYgc2Vs
Zi5fb3B0aW9ucy5jbG9iYmVyX29sZF9yZXN1bHRzOgotICAgICAgICAgICAgc2VsZi5fY2xvYmJl
cl9vbGRfcmVzdWx0cygpCi0KLSAgICAgICAgIyBDcmVhdGUgdGhlIG91dHB1dCBkaXJlY3Rvcnkg
aWYgaXQgZG9lc24ndCBhbHJlYWR5IGV4aXN0LgotICAgICAgICBzZWxmLl9wb3J0Lm1heWJlX21h
a2VfZGlyZWN0b3J5KHNlbGYuX29wdGlvbnMucmVzdWx0c19kaXJlY3RvcnkpCi0KLSAgICAgICAg
c2VsZi5fcG9ydC5zZXR1cF90ZXN0X3J1bigpCi0KLSAgICAgICAgc2VsZi5fcHJpbnRlci5wcmlu
dF91cGRhdGUoIlByZXBhcmluZyB0ZXN0cyAuLi4iKQotICAgICAgICByZXN1bHRfc3VtbWFyeSA9
IHNlbGYucHJlcGFyZV9saXN0c19hbmRfcHJpbnRfb3V0cHV0KCkKLSAgICAgICAgaWYgbm90IHJl
c3VsdF9zdW1tYXJ5OgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgICAgICByZXR1cm4g
cmVzdWx0X3N1bW1hcnkKLQotICAgIGRlZiBydW4oc2VsZiwgcmVzdWx0X3N1bW1hcnkpOgotICAg
ICAgICAiIiJSdW4gYWxsIG91ciB0ZXN0cyBvbiBhbGwgb3VyIHRlc3QgZmlsZXMuCi0KLSAgICAg
ICAgRm9yIGVhY2ggdGVzdCBmaWxlLCB3ZSBydW4gZWFjaCB0ZXN0IHR5cGUuIElmIHRoZXJlIGFy
ZSBhbnkgZmFpbHVyZXMsCi0gICAgICAgIHdlIGNvbGxlY3QgdGhlbSBmb3IgcmVwb3J0aW5nLgot
Ci0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgcmVzdWx0X3N1bW1hcnk6IGEgc3VtbWFyeSBvYmpl
Y3QgdHJhY2tpbmcgdGhlIHRlc3QgcmVzdWx0cy4KLQotICAgICAgICBSZXR1cm46Ci0gICAgICAg
ICAgVGhlIG51bWJlciBvZiB1bmV4cGVjdGVkIHJlc3VsdHMgKDAgPT0gc3VjY2VzcykKLSAgICAg
ICAgIiIiCi0gICAgICAgICMgZ2F0aGVyX3Rlc3RfZmlsZXMoKSBtdXN0IGhhdmUgYmVlbiBjYWxs
ZWQgZmlyc3QgdG8gaW5pdGlhbGl6ZSB1cy4KLSAgICAgICAgIyBJZiB3ZSBkaWRuJ3QgZmluZCBh
bnkgZmlsZXMgdG8gdGVzdCwgd2UndmUgZXJyb3JlZCBvdXQgYWxyZWFkeSBpbgotICAgICAgICAj
IHByZXBhcmVfbGlzdHNfYW5kX3ByaW50X291dHB1dCgpLgotICAgICAgICBhc3NlcnQobGVuKHNl
bGYuX3Rlc3RfZmlsZXMpKQotCi0gICAgICAgIHN0YXJ0X3RpbWUgPSB0aW1lLnRpbWUoKQotCi0g
ICAgICAgIGtleWJvYXJkX2ludGVycnVwdGVkLCB0aHJlYWRfdGltaW5ncywgdGVzdF90aW1pbmdz
LCBcCi0gICAgICAgICAgICBpbmRpdmlkdWFsX3Rlc3RfdGltaW5ncyA9ICgKLSAgICAgICAgICAg
IHNlbGYuX3J1bl90ZXN0cyhzZWxmLl90ZXN0X2ZpbGVzX2xpc3QsIHJlc3VsdF9zdW1tYXJ5KSkK
LQotICAgICAgICAjIFdlIGV4Y2x1ZGUgdGhlIGNyYXNoZXMgZnJvbSB0aGUgbGlzdCBvZiByZXN1
bHRzIHRvIHJldHJ5LCBiZWNhdXNlCi0gICAgICAgICMgd2Ugd2FudCB0byB0cmVhdCBldmVuIGEg
cG90ZW50aWFsbHkgZmxha3kgY3Jhc2ggYXMgYW4gZXJyb3IuCi0gICAgICAgIGZhaWx1cmVzID0g
c2VsZi5fZ2V0X2ZhaWx1cmVzKHJlc3VsdF9zdW1tYXJ5LCBpbmNsdWRlX2NyYXNoZXM9RmFsc2Up
Ci0gICAgICAgIHJldHJ5X3N1bW1hcnkgPSByZXN1bHRfc3VtbWFyeQotICAgICAgICB3aGlsZSAo
bGVuKGZhaWx1cmVzKSBhbmQgc2VsZi5fb3B0aW9ucy5yZXRyeV9mYWlsdXJlcyBhbmQKLSAgICAg
ICAgICAgIG5vdCBzZWxmLl9yZXRyeWluZyBhbmQgbm90IGtleWJvYXJkX2ludGVycnVwdGVkKToK
LSAgICAgICAgICAgIF9sb2cuaW5mbygnJykKLSAgICAgICAgICAgIF9sb2cuaW5mbygiUmV0cnlp
bmcgJWQgdW5leHBlY3RlZCBmYWlsdXJlKHMpIC4uLiIgJSBsZW4oZmFpbHVyZXMpKQotICAgICAg
ICAgICAgX2xvZy5pbmZvKCcnKQotICAgICAgICAgICAgc2VsZi5fcmV0cnlpbmcgPSBUcnVlCi0g
ICAgICAgICAgICByZXRyeV9zdW1tYXJ5ID0gUmVzdWx0U3VtbWFyeShzZWxmLl9leHBlY3RhdGlv
bnMsIGZhaWx1cmVzLmtleXMoKSkKLSAgICAgICAgICAgICMgTm90ZSB0aGF0IHdlIGludGVudGlv
bmFsbHkgaWdub3JlIHRoZSByZXR1cm4gdmFsdWUgaGVyZS4KLSAgICAgICAgICAgIHNlbGYuX3J1
bl90ZXN0cyhmYWlsdXJlcy5rZXlzKCksIHJldHJ5X3N1bW1hcnkpCi0gICAgICAgICAgICBmYWls
dXJlcyA9IHNlbGYuX2dldF9mYWlsdXJlcyhyZXRyeV9zdW1tYXJ5LCBpbmNsdWRlX2NyYXNoZXM9
VHJ1ZSkKLQotICAgICAgICBlbmRfdGltZSA9IHRpbWUudGltZSgpCi0KLSAgICAgICAgc2VsZi5f
cHJpbnRfdGltaW5nX3N0YXRpc3RpY3MoZW5kX3RpbWUgLSBzdGFydF90aW1lLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJlYWRfdGltaW5ncywgdGVzdF90aW1pbmdz
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRpdmlkdWFsX3Rlc3Rf
dGltaW5ncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0X3N1
bW1hcnkpCi0KLSAgICAgICAgc2VsZi5fcHJpbnRfcmVzdWx0X3N1bW1hcnkocmVzdWx0X3N1bW1h
cnkpCi0KLSAgICAgICAgc3lzLnN0ZG91dC5mbHVzaCgpCi0gICAgICAgIHN5cy5zdGRlcnIuZmx1
c2goKQotCi0gICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfb25lX2xpbmVfc3VtbWFyeShyZXN1
bHRfc3VtbWFyeS50b3RhbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlc3VsdF9zdW1tYXJ5LmV4cGVjdGVkLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVzdWx0X3N1bW1hcnkudW5leHBlY3RlZCkKLQotICAgICAg
ICB1bmV4cGVjdGVkX3Jlc3VsdHMgPSBzdW1tYXJpemVfdW5leHBlY3RlZF9yZXN1bHRzKHNlbGYu
X3BvcnQsCi0gICAgICAgICAgICBzZWxmLl9leHBlY3RhdGlvbnMsIHJlc3VsdF9zdW1tYXJ5LCBy
ZXRyeV9zdW1tYXJ5KQotICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X3VuZXhwZWN0ZWRfcmVz
dWx0cyh1bmV4cGVjdGVkX3Jlc3VsdHMpCi0KLSAgICAgICAgaWYgKHNlbGYuX29wdGlvbnMucmVj
b3JkX3Jlc3VsdHMgYW5kIG5vdCBzZWxmLl9vcHRpb25zLmRyeV9ydW4gYW5kCi0gICAgICAgICAg
ICBub3Qga2V5Ym9hcmRfaW50ZXJydXB0ZWQpOgotICAgICAgICAgICAgIyBXcml0ZSB0aGUgc2Ft
ZSBkYXRhIHRvIGxvZyBmaWxlcyBhbmQgdXBsb2FkIGdlbmVyYXRlZCBKU09OIGZpbGVzCi0gICAg
ICAgICAgICAjIHRvIGFwcGVuZ2luZSBzZXJ2ZXIuCi0gICAgICAgICAgICBzZWxmLl91cGxvYWRf
anNvbl9maWxlcyh1bmV4cGVjdGVkX3Jlc3VsdHMsIHJlc3VsdF9zdW1tYXJ5LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3MpCi0KLSAg
ICAgICAgIyBXcml0ZSB0aGUgc3VtbWFyeSB0byBkaXNrIChyZXN1bHRzLmh0bWwpIGFuZCBkaXNw
bGF5IGl0IGlmIHJlcXVlc3RlZC4KLSAgICAgICAgaWYgbm90IHNlbGYuX29wdGlvbnMuZHJ5X3J1
bjoKLSAgICAgICAgICAgIHdyb3RlX3Jlc3VsdHMgPSBzZWxmLl93cml0ZV9yZXN1bHRzX2h0bWxf
ZmlsZShyZXN1bHRfc3VtbWFyeSkKLSAgICAgICAgICAgIGlmIHNlbGYuX29wdGlvbnMuc2hvd19y
ZXN1bHRzIGFuZCB3cm90ZV9yZXN1bHRzOgotICAgICAgICAgICAgICAgIHNlbGYuX3Nob3dfcmVz
dWx0c19odG1sX2ZpbGUoKQotCi0gICAgICAgICMgTm93IHRoYXQgd2UndmUgY29tcGxldGVkIGFs
bCB0aGUgcHJvY2Vzc2luZyB3ZSBjYW4sIHdlIHJlLXJhaXNlCi0gICAgICAgICMgYSBLZXlib2Fy
ZEludGVycnVwdCBpZiBuZWNlc3Nhcnkgc28gdGhlIGNhbGxlciBjYW4gaGFuZGxlIGl0LgotICAg
ICAgICBpZiBrZXlib2FyZF9pbnRlcnJ1cHRlZDoKLSAgICAgICAgICAgIHJhaXNlIEtleWJvYXJk
SW50ZXJydXB0Ci0KLSAgICAgICAgIyBJZ25vcmUgZmxha3kgZmFpbHVyZXMgYW5kIHVuZXhwZWN0
ZWQgcGFzc2VzIHNvIHdlIGRvbid0IHR1cm4gdGhlCi0gICAgICAgICMgYm90IHJlZCBmb3IgdGhv
c2UuCi0gICAgICAgIHJldHVybiB1bmV4cGVjdGVkX3Jlc3VsdHNbJ251bV9yZWdyZXNzaW9ucydd
Ci0KLSAgICBkZWYgY2xlYW5fdXBfcnVuKHNlbGYpOgotICAgICAgICAiIiJSZXN0b3JlcyB0aGUg
c3lzdGVtIGFmdGVyIHdlJ3JlIGRvbmUgcnVubmluZyB0ZXN0cy4iIiIKLQotICAgICAgICBfbG9n
LmRlYnVnKCJmbHVzaGluZyBzdGRvdXQiKQotICAgICAgICBzeXMuc3Rkb3V0LmZsdXNoKCkKLSAg
ICAgICAgX2xvZy5kZWJ1ZygiZmx1c2hpbmcgc3RkZXJyIikKLSAgICAgICAgc3lzLnN0ZGVyci5m
bHVzaCgpCi0gICAgICAgIF9sb2cuZGVidWcoInN0b3BwaW5nIGhlbHBlciIpCi0gICAgICAgIHNl
bGYuX3BvcnQuc3RvcF9oZWxwZXIoKQotCi0gICAgZGVmIHVwZGF0ZV9zdW1tYXJ5KHNlbGYsIHJl
c3VsdF9zdW1tYXJ5KToKLSAgICAgICAgIiIiVXBkYXRlIHRoZSBzdW1tYXJ5IGFuZCBwcmludCBy
ZXN1bHRzIHdpdGggYW55IGNvbXBsZXRlZCB0ZXN0cy4iIiIKLSAgICAgICAgd2hpbGUgVHJ1ZToK
LSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICByZXN1bHQgPSB0ZXN0X3Jlc3VsdHMu
VGVzdFJlc3VsdC5sb2FkcyhzZWxmLl9yZXN1bHRfcXVldWUuZ2V0X25vd2FpdCgpKQotICAgICAg
ICAgICAgZXhjZXB0IFF1ZXVlLkVtcHR5OgotICAgICAgICAgICAgICAgIHJldHVybgotCi0gICAg
ICAgICAgICBleHBlY3RlZCA9IHNlbGYuX2V4cGVjdGF0aW9ucy5tYXRjaGVzX2FuX2V4cGVjdGVk
X3Jlc3VsdCgKLSAgICAgICAgICAgICAgICByZXN1bHQuZmlsZW5hbWUsIHJlc3VsdC50eXBlLCBz
ZWxmLl9vcHRpb25zLnBpeGVsX3Rlc3RzKQotICAgICAgICAgICAgcmVzdWx0X3N1bW1hcnkuYWRk
KHJlc3VsdCwgZXhwZWN0ZWQpCi0gICAgICAgICAgICBleHBfc3RyID0gc2VsZi5fZXhwZWN0YXRp
b25zLmdldF9leHBlY3RhdGlvbnNfc3RyaW5nKAotICAgICAgICAgICAgICAgIHJlc3VsdC5maWxl
bmFtZSkKLSAgICAgICAgICAgIGdvdF9zdHIgPSBzZWxmLl9leHBlY3RhdGlvbnMuZXhwZWN0YXRp
b25fdG9fc3RyaW5nKHJlc3VsdC50eXBlKQotICAgICAgICAgICAgc2VsZi5fcHJpbnRlci5wcmlu
dF90ZXN0X3Jlc3VsdChyZXN1bHQsIGV4cGVjdGVkLCBleHBfc3RyLCBnb3Rfc3RyKQotICAgICAg
ICAgICAgc2VsZi5fcHJpbnRlci5wcmludF9wcm9ncmVzcyhyZXN1bHRfc3VtbWFyeSwgc2VsZi5f
cmV0cnlpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYu
X3Rlc3RfZmlsZXNfbGlzdCkKLQotICAgIGRlZiBfY2xvYmJlcl9vbGRfcmVzdWx0cyhzZWxmKToK
LSAgICAgICAgIyBKdXN0IGNsb2JiZXIgdGhlIGFjdHVhbCB0ZXN0IHJlc3VsdHMgZGlyZWN0b3Jp
ZXMgc2luY2UgdGhlIG90aGVyCi0gICAgICAgICMgZmlsZXMgaW4gdGhlIHJlc3VsdHMgZGlyZWN0
b3J5IGFyZSBleHBsaWNpdGx5IHVzZWQgZm9yIGNyb3NzLXJ1bgotICAgICAgICAjIHRyYWNraW5n
LgotICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X3VwZGF0ZSgiQ2xvYmJlcmluZyBvbGQgcmVz
dWx0cyBpbiAlcyIgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9v
cHRpb25zLnJlc3VsdHNfZGlyZWN0b3J5KQotICAgICAgICBsYXlvdXRfdGVzdHNfZGlyID0gc2Vs
Zi5fcG9ydC5sYXlvdXRfdGVzdHNfZGlyKCkKLSAgICAgICAgcG9zc2libGVfZGlycyA9IHNlbGYu
X3BvcnQudGVzdF9kaXJzKCkKLSAgICAgICAgZm9yIGRpcm5hbWUgaW4gcG9zc2libGVfZGlyczoK
LSAgICAgICAgICAgIGlmIG9zLnBhdGguaXNkaXIob3MucGF0aC5qb2luKGxheW91dF90ZXN0c19k
aXIsIGRpcm5hbWUpKToKLSAgICAgICAgICAgICAgICBzaHV0aWwucm10cmVlKG9zLnBhdGguam9p
bihzZWxmLl9vcHRpb25zLnJlc3VsdHNfZGlyZWN0b3J5LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRpcm5hbWUpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaWdub3JlX2Vycm9ycz1UcnVlKQotCi0gICAgZGVmIF9nZXRfZmFpbHVyZXMoc2VsZiwg
cmVzdWx0X3N1bW1hcnksIGluY2x1ZGVfY3Jhc2hlcyk6Ci0gICAgICAgICIiIkZpbHRlcnMgYSBk
aWN0IG9mIHJlc3VsdHMgYW5kIHJldHVybnMgb25seSB0aGUgZmFpbHVyZXMuCi0KLSAgICAgICAg
QXJnczoKLSAgICAgICAgICByZXN1bHRfc3VtbWFyeTogdGhlIHJlc3VsdHMgb2YgdGhlIHRlc3Qg
cnVuCi0gICAgICAgICAgaW5jbHVkZV9jcmFzaGVzOiB3aGV0aGVyIGNyYXNoZXMgYXJlIGluY2x1
ZGVkIGluIHRoZSBvdXRwdXQuCi0gICAgICAgICAgICBXZSB1c2UgRmFsc2Ugd2hlbiBmaW5kaW5n
IHRoZSBsaXN0IG9mIGZhaWx1cmVzIHRvIHJldHJ5Ci0gICAgICAgICAgICB0byBzZWUgaWYgdGhl
IHJlc3VsdHMgd2VyZSBmbGFreS4gQWx0aG91Z2ggdGhlIGNyYXNoZXMgbWF5IGFsc28gYmUKLSAg
ICAgICAgICAgIGZsYWt5LCB3ZSB0cmVhdCB0aGVtIGFzIGlmIHRoZXkgYXJlbid0IHNvIHRoYXQg
dGhleSdyZSBub3QgaWdub3JlZC4KLSAgICAgICAgUmV0dXJuczoKLSAgICAgICAgICBhIGRpY3Qg
b2YgZmlsZXMgLT4gcmVzdWx0cwotICAgICAgICAiIiIKLSAgICAgICAgZmFpbGVkX3Jlc3VsdHMg
PSB7fQotICAgICAgICBmb3IgdGVzdCwgcmVzdWx0IGluIHJlc3VsdF9zdW1tYXJ5LnVuZXhwZWN0
ZWRfcmVzdWx0cy5pdGVyaXRlbXMoKToKLSAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gdGVzdF9l
eHBlY3RhdGlvbnMuUEFTUyBvcgotICAgICAgICAgICAgICAgIHJlc3VsdCA9PSB0ZXN0X2V4cGVj
dGF0aW9ucy5DUkFTSCBhbmQgbm90IGluY2x1ZGVfY3Jhc2hlcyk6Ci0gICAgICAgICAgICAgICAg
Y29udGludWUKLSAgICAgICAgICAgIGZhaWxlZF9yZXN1bHRzW3Rlc3RdID0gcmVzdWx0Ci0KLSAg
ICAgICAgcmV0dXJuIGZhaWxlZF9yZXN1bHRzCi0KLSAgICBkZWYgX3VwbG9hZF9qc29uX2ZpbGVz
KHNlbGYsIHVuZXhwZWN0ZWRfcmVzdWx0cywgcmVzdWx0X3N1bW1hcnksCi0gICAgICAgICAgICAg
ICAgICAgICAgICBpbmRpdmlkdWFsX3Rlc3RfdGltaW5ncyk6Ci0gICAgICAgICIiIldyaXRlcyB0
aGUgcmVzdWx0cyBvZiB0aGUgdGVzdCBydW4gYXMgSlNPTiBmaWxlcyBpbnRvIHRoZSByZXN1bHRz
Ci0gICAgICAgIGRpciBhbmQgdXBsb2FkIHRoZSBmaWxlcyB0byB0aGUgYXBwZW5naW5lIHNlcnZl
ci4KLQotICAgICAgICBUaGVyZSBhcmUgdGhyZWUgZGlmZmVyZW50IGZpbGVzIHdyaXR0ZW4gaW50
byB0aGUgcmVzdWx0cyBkaXI6Ci0gICAgICAgICAgdW5leHBlY3RlZF9yZXN1bHRzLmpzb246IEEg
c2hvcnQgbGlzdCBvZiBhbnkgdW5leHBlY3RlZCByZXN1bHRzLgotICAgICAgICAgICAgVGhpcyBp
cyB1c2VkIGJ5IHRoZSBidWlsZGJvdHMgdG8gZGlzcGxheSByZXN1bHRzLgotICAgICAgICAgIGV4
cGVjdGF0aW9ucy5qc29uOiBUaGlzIGlzIHVzZWQgYnkgdGhlIGZsYWtpbmVzcyBkYXNoYm9hcmQu
Ci0gICAgICAgICAgcmVzdWx0cy5qc29uOiBBIGZ1bGwgbGlzdCBvZiB0aGUgcmVzdWx0cyAtIHVz
ZWQgYnkgdGhlIGZsYWtpbmVzcwotICAgICAgICAgICAgZGFzaGJvYXJkIGFuZCB0aGUgYWdncmVn
YXRlIHJlc3VsdHMgZGFzaGJvYXJkLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgdW5leHBl
Y3RlZF9yZXN1bHRzOiBkaWN0IG9mIHVuZXhwZWN0ZWQgcmVzdWx0cwotICAgICAgICAgIHJlc3Vs
dF9zdW1tYXJ5OiBmdWxsIHN1bW1hcnkgb2JqZWN0Ci0gICAgICAgICAgaW5kaXZpZHVhbF90ZXN0
X3RpbWluZ3M6IGxpc3Qgb2YgdGVzdCB0aW1lcyAodXNlZCBieSB0aGUgZmxha2luZXNzCi0gICAg
ICAgICAgICBkYXNoYm9hcmQpLgotICAgICAgICAiIiIKLSAgICAgICAgcmVzdWx0c19kaXJlY3Rv
cnkgPSBzZWxmLl9vcHRpb25zLnJlc3VsdHNfZGlyZWN0b3J5Ci0gICAgICAgIF9sb2cuZGVidWco
IldyaXRpbmcgSlNPTiBmaWxlcyBpbiAlcy4iICUgcmVzdWx0c19kaXJlY3RvcnkpCi0gICAgICAg
IHVuZXhwZWN0ZWRfanNvbl9wYXRoID0gb3MucGF0aC5qb2luKHJlc3VsdHNfZGlyZWN0b3J5LCAi
dW5leHBlY3RlZF9yZXN1bHRzLmpzb24iKQotICAgICAgICB3aXRoIGNvZGVjcy5vcGVuKHVuZXhw
ZWN0ZWRfanNvbl9wYXRoLCAidyIsICJ1dGYtOCIpIGFzIGZpbGU6Ci0gICAgICAgICAgICBzaW1w
bGVqc29uLmR1bXAodW5leHBlY3RlZF9yZXN1bHRzLCBmaWxlLCBzb3J0X2tleXM9VHJ1ZSwgaW5k
ZW50PTIpCi0KLSAgICAgICAgIyBXcml0ZSBhIGpzb24gZmlsZSBvZiB0aGUgdGVzdF9leHBlY3Rh
dGlvbnMudHh0IGZpbGUgZm9yIHRoZSBsYXlvdXQKLSAgICAgICAgIyB0ZXN0cyBkYXNoYm9hcmQu
Ci0gICAgICAgIGV4cGVjdGF0aW9uc19wYXRoID0gb3MucGF0aC5qb2luKHJlc3VsdHNfZGlyZWN0
b3J5LCAiZXhwZWN0YXRpb25zLmpzb24iKQotICAgICAgICBleHBlY3RhdGlvbnNfanNvbiA9IFwK
LSAgICAgICAgICAgIHNlbGYuX2V4cGVjdGF0aW9ucy5nZXRfZXhwZWN0YXRpb25zX2pzb25fZm9y
X2FsbF9wbGF0Zm9ybXMoKQotICAgICAgICB3aXRoIGNvZGVjcy5vcGVuKGV4cGVjdGF0aW9uc19w
YXRoLCAidyIsICJ1dGYtOCIpIGFzIGZpbGU6Ci0gICAgICAgICAgICBmaWxlLndyaXRlKHUiQURE
X0VYUEVDVEFUSU9OUyglcyk7IiAlIGV4cGVjdGF0aW9uc19qc29uKQotCi0gICAgICAgIGdlbmVy
YXRvciA9IGpzb25fbGF5b3V0X3Jlc3VsdHNfZ2VuZXJhdG9yLkpTT05MYXlvdXRSZXN1bHRzR2Vu
ZXJhdG9yKAotICAgICAgICAgICAgc2VsZi5fcG9ydCwgc2VsZi5fb3B0aW9ucy5idWlsZGVyX25h
bWUsIHNlbGYuX29wdGlvbnMuYnVpbGRfbmFtZSwKLSAgICAgICAgICAgIHNlbGYuX29wdGlvbnMu
YnVpbGRfbnVtYmVyLCBzZWxmLl9vcHRpb25zLnJlc3VsdHNfZGlyZWN0b3J5LAotICAgICAgICAg
ICAgQlVJTERFUl9CQVNFX1VSTCwgaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3MsCi0gICAgICAgICAg
ICBzZWxmLl9leHBlY3RhdGlvbnMsIHJlc3VsdF9zdW1tYXJ5LCBzZWxmLl90ZXN0X2ZpbGVzX2xp
c3QsCi0gICAgICAgICAgICBub3Qgc2VsZi5fb3B0aW9ucy51cGxvYWRfZnVsbF9yZXN1bHRzLAot
ICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy50ZXN0X3Jlc3VsdHNfc2VydmVyLAotICAgICAgICAg
ICAgImxheW91dC10ZXN0cyIsCi0gICAgICAgICAgICBzZWxmLl9vcHRpb25zLm1hc3Rlcl9uYW1l
KQotCi0gICAgICAgIF9sb2cuZGVidWcoIkZpbmlzaGVkIHdyaXRpbmcgSlNPTiBmaWxlcy4iKQot
Ci0gICAgICAgIGpzb25fZmlsZXMgPSBbImV4cGVjdGF0aW9ucy5qc29uIl0KLSAgICAgICAgaWYg
c2VsZi5fb3B0aW9ucy51cGxvYWRfZnVsbF9yZXN1bHRzOgotICAgICAgICAgICAganNvbl9maWxl
cy5hcHBlbmQoInJlc3VsdHMuanNvbiIpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBqc29u
X2ZpbGVzLmFwcGVuZCgiaW5jcmVtZW50YWxfcmVzdWx0cy5qc29uIikKLQotICAgICAgICBnZW5l
cmF0b3IudXBsb2FkX2pzb25fZmlsZXMoanNvbl9maWxlcykKLQotICAgIGRlZiBfcHJpbnRfY29u
ZmlnKHNlbGYpOgotICAgICAgICAiIiJQcmludHMgdGhlIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSB0
ZXN0IHJ1bi4iIiIKLSAgICAgICAgcCA9IHNlbGYuX3ByaW50ZXIKLSAgICAgICAgcC5wcmludF9j
b25maWcoIlVzaW5nIHBvcnQgJyVzJyIgJSBzZWxmLl9wb3J0Lm5hbWUoKSkKLSAgICAgICAgcC5w
cmludF9jb25maWcoIlBsYWNpbmcgdGVzdCByZXN1bHRzIGluICVzIiAlCi0gICAgICAgICAgICAg
ICAgICAgICAgIHNlbGYuX29wdGlvbnMucmVzdWx0c19kaXJlY3RvcnkpCi0gICAgICAgIGlmIHNl
bGYuX29wdGlvbnMubmV3X2Jhc2VsaW5lOgotICAgICAgICAgICAgcC5wcmludF9jb25maWcoIlBs
YWNpbmcgbmV3IGJhc2VsaW5lcyBpbiAlcyIgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2VsZi5fcG9ydC5iYXNlbGluZV9wYXRoKCkpCi0gICAgICAgIHAucHJpbnRfY29uZmlnKCJVc2lu
ZyAlcyBidWlsZCIgJSBzZWxmLl9vcHRpb25zLmNvbmZpZ3VyYXRpb24pCi0gICAgICAgIGlmIHNl
bGYuX29wdGlvbnMucGl4ZWxfdGVzdHM6Ci0gICAgICAgICAgICBwLnByaW50X2NvbmZpZygiUGl4
ZWwgdGVzdHMgZW5hYmxlZCIpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBwLnByaW50X2Nv
bmZpZygiUGl4ZWwgdGVzdHMgZGlzYWJsZWQiKQotCi0gICAgICAgIHAucHJpbnRfY29uZmlnKCJS
ZWd1bGFyIHRpbWVvdXQ6ICVzLCBzbG93IHRlc3QgdGltZW91dDogJXMiICUKLSAgICAgICAgICAg
ICAgICAgICAgICAgKHNlbGYuX29wdGlvbnMudGltZV9vdXRfbXMsCi0gICAgICAgICAgICAgICAg
ICAgICAgICBzZWxmLl9vcHRpb25zLnNsb3dfdGltZV9vdXRfbXMpKQotCi0gICAgICAgIGlmIHNl
bGYuX251bV93b3JrZXJzKCkgPT0gMToKLSAgICAgICAgICAgIHAucHJpbnRfY29uZmlnKCJSdW5u
aW5nIG9uZSAlcyIgJSBzZWxmLl9wb3J0LmRyaXZlcl9uYW1lKCkpCi0gICAgICAgIGVsc2U6Ci0g
ICAgICAgICAgICBwLnByaW50X2NvbmZpZygiUnVubmluZyAlcyAlc3MgaW4gcGFyYWxsZWwiICUK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxmLl9vcHRpb25zLmNoaWxkX3Byb2Nlc3Nl
cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9wb3J0LmRyaXZlcl9uYW1lKCkp
KQotICAgICAgICBwLnByaW50X2NvbmZpZygnQ29tbWFuZCBsaW5lOiAnICsKLSAgICAgICAgICAg
ICAgICAgICAgICAgJyAnLmpvaW4oc2VsZi5fcG9ydC5kcml2ZXJfY21kX2xpbmUoKSkpCi0gICAg
ICAgIHAucHJpbnRfY29uZmlnKCJXb3JrZXIgbW9kZWw6ICVzIiAlIHNlbGYuX29wdGlvbnMud29y
a2VyX21vZGVsKQotICAgICAgICBwLnByaW50X2NvbmZpZygiIikKLQotICAgIGRlZiBfcHJpbnRf
ZXhwZWN0ZWRfcmVzdWx0c19vZl90eXBlKHNlbGYsIHJlc3VsdF9zdW1tYXJ5LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdF90eXBlLCByZXN1bHRfdHlwZV9z
dHIpOgotICAgICAgICAiIiJQcmludCB0aGUgbnVtYmVyIG9mIHRoZSB0ZXN0cyBpbiBhIGdpdmVu
IHJlc3VsdCBjbGFzcy4KLQotICAgICAgICBBcmdzOgotICAgICAgICAgIHJlc3VsdF9zdW1tYXJ5
IC0gdGhlIG9iamVjdCBjb250YWluaW5nIGFsbCB0aGUgcmVzdWx0cyB0byByZXBvcnQgb24KLSAg
ICAgICAgICByZXN1bHRfdHlwZSAtIHRoZSBwYXJ0aWN1bGFyIHJlc3VsdCB0eXBlIHRvIHJlcG9y
dCBpbiB0aGUgc3VtbWFyeS4KLSAgICAgICAgICByZXN1bHRfdHlwZV9zdHIgLSBhIHN0cmluZyBk
ZXNjcmlwdGlvbiBvZiB0aGUgcmVzdWx0X3R5cGUuCi0gICAgICAgICIiIgotICAgICAgICB0ZXN0
cyA9IHNlbGYuX2V4cGVjdGF0aW9ucy5nZXRfdGVzdHNfd2l0aF9yZXN1bHRfdHlwZShyZXN1bHRf
dHlwZSkKLSAgICAgICAgbm93ID0gcmVzdWx0X3N1bW1hcnkudGVzdHNfYnlfdGltZWxpbmVbdGVz
dF9leHBlY3RhdGlvbnMuTk9XXQotICAgICAgICB3b250Zml4ID0gcmVzdWx0X3N1bW1hcnkudGVz
dHNfYnlfdGltZWxpbmVbdGVzdF9leHBlY3RhdGlvbnMuV09OVEZJWF0KLQotICAgICAgICAjIFdl
IHVzZSBhIGZhbmN5IGZvcm1hdCBzdHJpbmcgaW4gb3JkZXIgdG8gcHJpbnQgdGhlIGRhdGEgb3V0
IGluIGEKLSAgICAgICAgIyBuaWNlbHktYWxpZ25lZCB0YWJsZS4KLSAgICAgICAgZm10c3RyID0g
KCJFeHBlY3Q6ICUlNWQgJSUtOHMgKCUlJWRkIG5vdywgJSUlZGQgd29udGZpeCkiCi0gICAgICAg
ICAgICAgICAgICAlIChzZWxmLl9udW1fZGlnaXRzKG5vdyksIHNlbGYuX251bV9kaWdpdHMod29u
dGZpeCkpKQotICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X2V4cGVjdGVkKGZtdHN0ciAlCi0g
ICAgICAgICAgICAobGVuKHRlc3RzKSwgcmVzdWx0X3R5cGVfc3RyLCBsZW4odGVzdHMgJiBub3cp
LCBsZW4odGVzdHMgJiB3b250Zml4KSkpCi0KLSAgICBkZWYgX251bV9kaWdpdHMoc2VsZiwgbnVt
KToKLSAgICAgICAgIiIiUmV0dXJucyB0aGUgbnVtYmVyIG9mIGRpZ2l0cyBuZWVkZWQgdG8gcmVw
cmVzZW50IHRoZSBsZW5ndGggb2YgYQotICAgICAgICBzZXF1ZW5jZS4iIiIKLSAgICAgICAgbmRp
Z2l0cyA9IDEKLSAgICAgICAgaWYgbGVuKG51bSk6Ci0gICAgICAgICAgICBuZGlnaXRzID0gaW50
KG1hdGgubG9nMTAobGVuKG51bSkpKSArIDEKLSAgICAgICAgcmV0dXJuIG5kaWdpdHMKLQotICAg
IGRlZiBfcHJpbnRfdGltaW5nX3N0YXRpc3RpY3Moc2VsZiwgdG90YWxfdGltZSwgdGhyZWFkX3Rp
bWluZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5X3Rlc3RfdGlt
aW5ncywgaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmVzdWx0X3N1bW1hcnkpOgotICAgICAgICAiIiJSZWNvcmQgdGltaW5nLXNwZWNpZmlj
IGluZm9ybWF0aW9uIGZvciB0aGUgdGVzdCBydW4uCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAg
ICB0b3RhbF90aW1lOiB0b3RhbCBlbGFwc2VkIHRpbWUgKGluIHNlY29uZHMpIGZvciB0aGUgdGVz
dCBydW4KLSAgICAgICAgICB0aHJlYWRfdGltaW5nczogd2FsbCBjbG9jayB0aW1lIGVhY2ggdGhy
ZWFkIHJhbiBmb3IKLSAgICAgICAgICBkaXJlY3RvcnlfdGVzdF90aW1pbmdzOiB0aW1pbmcgYnkg
ZGlyZWN0b3J5Ci0gICAgICAgICAgaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3M6IHRpbWluZyBieSBm
aWxlCi0gICAgICAgICAgcmVzdWx0X3N1bW1hcnk6IHN1bW1hcnkgb2JqZWN0IGZvciB0aGUgdGVz
dCBydW4KLSAgICAgICAgIiIiCi0gICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfdGltaW5nKCJU
ZXN0IHRpbWluZzoiKQotICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X3RpbWluZygiICAlNi4y
ZiB0b3RhbCB0ZXN0aW5nIHRpbWUiICUgdG90YWxfdGltZSkKLSAgICAgICAgc2VsZi5fcHJpbnRl
ci5wcmludF90aW1pbmcoIiIpCi0gICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfdGltaW5nKCJU
aHJlYWQgdGltaW5nOiIpCi0gICAgICAgIGN1bWxfdGltZSA9IDAKLSAgICAgICAgZm9yIHQgaW4g
dGhyZWFkX3RpbWluZ3M6Ci0gICAgICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X3RpbWluZygi
ICAgICUxMHM6ICU1ZCB0ZXN0cywgJTYuMmYgc2VjcyIgJQotICAgICAgICAgICAgICAgICAgKHRb
J25hbWUnXSwgdFsnbnVtX3Rlc3RzJ10sIHRbJ3RvdGFsX3RpbWUnXSkpCi0gICAgICAgICAgICBj
dW1sX3RpbWUgKz0gdFsndG90YWxfdGltZSddCi0gICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRf
dGltaW5nKCIgICAlNi4yZiBjdW11bGF0aXZlLCAlNi4yZiBvcHRpbWFsIiAlCi0gICAgICAgICAg
ICAgIChjdW1sX3RpbWUsIGN1bWxfdGltZSAvIGludChzZWxmLl9vcHRpb25zLmNoaWxkX3Byb2Nl
c3NlcykpKQotICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X3RpbWluZygiIikKLQotICAgICAg
ICBzZWxmLl9wcmludF9hZ2dyZWdhdGVfdGVzdF9zdGF0aXN0aWNzKGluZGl2aWR1YWxfdGVzdF90
aW1pbmdzKQotICAgICAgICBzZWxmLl9wcmludF9pbmRpdmlkdWFsX3Rlc3RfdGltZXMoaW5kaXZp
ZHVhbF90ZXN0X3RpbWluZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXN1bHRfc3VtbWFyeSkKLSAgICAgICAgc2VsZi5fcHJpbnRfZGlyZWN0b3J5X3RpbWlu
Z3MoZGlyZWN0b3J5X3Rlc3RfdGltaW5ncykKLQotICAgIGRlZiBfcHJpbnRfYWdncmVnYXRlX3Rl
c3Rfc3RhdGlzdGljcyhzZWxmLCBpbmRpdmlkdWFsX3Rlc3RfdGltaW5ncyk6Ci0gICAgICAgICIi
IlByaW50cyBhZ2dyZWdhdGUgc3RhdGlzdGljcyAoZS5nLiBtZWRpYW4sIG1lYW4sIGV0Yy4pIGZv
ciBhbGwgdGVzdHMuCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgaW5kaXZpZHVhbF90ZXN0X3Rp
bWluZ3M6IExpc3Qgb2YgVGVzdFJlc3VsdHMgZm9yIGFsbCB0ZXN0cy4KLSAgICAgICAgIiIiCi0g
ICAgICAgIHRlc3RfdHlwZXMgPSBbXSAgIyBVbml0IHRlc3RzIGRvbid0IGFjdHVhbGx5IHByb2R1
Y2UgYW55IHRpbWluZ3MuCi0gICAgICAgIGlmIGluZGl2aWR1YWxfdGVzdF90aW1pbmdzOgotICAg
ICAgICAgICAgdGVzdF90eXBlcyA9IGluZGl2aWR1YWxfdGVzdF90aW1pbmdzWzBdLnRpbWVfZm9y
X2RpZmZzLmtleXMoKQotICAgICAgICB0aW1lc19mb3JfZHVtcF9yZW5kZXJfdHJlZSA9IFtdCi0g
ICAgICAgIHRpbWVzX2Zvcl9kaWZmX3Byb2Nlc3NpbmcgPSBbXQotICAgICAgICB0aW1lc19wZXJf
dGVzdF90eXBlID0ge30KLSAgICAgICAgZm9yIHRlc3RfdHlwZSBpbiB0ZXN0X3R5cGVzOgotICAg
ICAgICAgICAgdGltZXNfcGVyX3Rlc3RfdHlwZVt0ZXN0X3R5cGVdID0gW10KLQotICAgICAgICBm
b3IgdGVzdF9zdGF0cyBpbiBpbmRpdmlkdWFsX3Rlc3RfdGltaW5nczoKLSAgICAgICAgICAgIHRp
bWVzX2Zvcl9kdW1wX3JlbmRlcl90cmVlLmFwcGVuZCh0ZXN0X3N0YXRzLnRlc3RfcnVuX3RpbWUp
Ci0gICAgICAgICAgICB0aW1lc19mb3JfZGlmZl9wcm9jZXNzaW5nLmFwcGVuZCgKLSAgICAgICAg
ICAgICAgICB0ZXN0X3N0YXRzLnRvdGFsX3RpbWVfZm9yX2FsbF9kaWZmcykKLSAgICAgICAgICAg
IHRpbWVfZm9yX2RpZmZzID0gdGVzdF9zdGF0cy50aW1lX2Zvcl9kaWZmcwotICAgICAgICAgICAg
Zm9yIHRlc3RfdHlwZSBpbiB0ZXN0X3R5cGVzOgotICAgICAgICAgICAgICAgIHRpbWVzX3Blcl90
ZXN0X3R5cGVbdGVzdF90eXBlXS5hcHBlbmQoCi0gICAgICAgICAgICAgICAgICAgIHRpbWVfZm9y
X2RpZmZzW3Rlc3RfdHlwZV0pCi0KLSAgICAgICAgc2VsZi5fcHJpbnRfc3RhdGlzdGljc19mb3Jf
dGVzdF90aW1pbmdzKAotICAgICAgICAgICAgIlBFUiBURVNUIFRJTUUgSU4gVEVTVFNIRUxMIChz
ZWNvbmRzKToiLAotICAgICAgICAgICAgdGltZXNfZm9yX2R1bXBfcmVuZGVyX3RyZWUpCi0gICAg
ICAgIHNlbGYuX3ByaW50X3N0YXRpc3RpY3NfZm9yX3Rlc3RfdGltaW5ncygKLSAgICAgICAgICAg
ICJQRVIgVEVTVCBESUZGIFBST0NFU1NJTkcgVElNRVMgKHNlY29uZHMpOiIsCi0gICAgICAgICAg
ICB0aW1lc19mb3JfZGlmZl9wcm9jZXNzaW5nKQotICAgICAgICBmb3IgdGVzdF90eXBlIGluIHRl
c3RfdHlwZXM6Ci0gICAgICAgICAgICBzZWxmLl9wcmludF9zdGF0aXN0aWNzX2Zvcl90ZXN0X3Rp
bWluZ3MoCi0gICAgICAgICAgICAgICAgIlBFUiBURVNUIFRJTUVTIEJZIFRFU1QgVFlQRTogJXMi
ICUgdGVzdF90eXBlLAotICAgICAgICAgICAgICAgIHRpbWVzX3Blcl90ZXN0X3R5cGVbdGVzdF90
eXBlXSkKLQotICAgIGRlZiBfcHJpbnRfaW5kaXZpZHVhbF90ZXN0X3RpbWVzKHNlbGYsIGluZGl2
aWR1YWxfdGVzdF90aW1pbmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
c3VsdF9zdW1tYXJ5KToKLSAgICAgICAgIiIiUHJpbnRzIHRoZSBydW4gdGltZXMgZm9yIHNsb3cs
IHRpbWVvdXQgYW5kIGNyYXNoIHRlc3RzLgotICAgICAgICBBcmdzOgotICAgICAgICAgIGluZGl2
aWR1YWxfdGVzdF90aW1pbmdzOiBMaXN0IG9mIFRlc3RTdGF0cyBmb3IgYWxsIHRlc3RzLgotICAg
ICAgICAgIHJlc3VsdF9zdW1tYXJ5OiBzdW1tYXJ5IG9iamVjdCBmb3IgdGVzdCBydW4KLSAgICAg
ICAgIiIiCi0gICAgICAgICMgUmV2ZXJzZS1zb3J0IGJ5IHRoZSB0aW1lIHNwZW50IGluIER1bXBS
ZW5kZXJUcmVlLgotICAgICAgICBpbmRpdmlkdWFsX3Rlc3RfdGltaW5ncy5zb3J0KGxhbWJkYSBh
LCBiOgotICAgICAgICAgICAgY21wKGIudGVzdF9ydW5fdGltZSwgYS50ZXN0X3J1bl90aW1lKSkK
LQotICAgICAgICBudW1fcHJpbnRlZCA9IDAKLSAgICAgICAgc2xvd190ZXN0cyA9IFtdCi0gICAg
ICAgIHRpbWVvdXRfb3JfY3Jhc2hfdGVzdHMgPSBbXQotICAgICAgICB1bmV4cGVjdGVkX3Nsb3df
dGVzdHMgPSBbXQotICAgICAgICBmb3IgdGVzdF90dXBsZSBpbiBpbmRpdmlkdWFsX3Rlc3RfdGlt
aW5nczoKLSAgICAgICAgICAgIGZpbGVuYW1lID0gdGVzdF90dXBsZS5maWxlbmFtZQotICAgICAg
ICAgICAgaXNfdGltZW91dF9jcmFzaF9vcl9zbG93ID0gRmFsc2UKLSAgICAgICAgICAgIGlmIHNl
bGYuX3Rlc3RfaXNfc2xvdyhmaWxlbmFtZSk6Ci0gICAgICAgICAgICAgICAgaXNfdGltZW91dF9j
cmFzaF9vcl9zbG93ID0gVHJ1ZQotICAgICAgICAgICAgICAgIHNsb3dfdGVzdHMuYXBwZW5kKHRl
c3RfdHVwbGUpCi0KLSAgICAgICAgICAgIGlmIGZpbGVuYW1lIGluIHJlc3VsdF9zdW1tYXJ5LmZh
aWx1cmVzOgotICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdF9zdW1tYXJ5LnJlc3VsdHNb
ZmlsZW5hbWVdLnR5cGUKLSAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IHRlc3RfZXhwZWN0
YXRpb25zLlRJTUVPVVQgb3IKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID09IHRlc3RfZXhw
ZWN0YXRpb25zLkNSQVNIKToKLSAgICAgICAgICAgICAgICAgICAgaXNfdGltZW91dF9jcmFzaF9v
cl9zbG93ID0gVHJ1ZQotICAgICAgICAgICAgICAgICAgICB0aW1lb3V0X29yX2NyYXNoX3Rlc3Rz
LmFwcGVuZCh0ZXN0X3R1cGxlKQotCi0gICAgICAgICAgICBpZiAobm90IGlzX3RpbWVvdXRfY3Jh
c2hfb3Jfc2xvdyBhbmQKLSAgICAgICAgICAgICAgICBudW1fcHJpbnRlZCA8IHByaW50aW5nLk5V
TV9TTE9XX1RFU1RTX1RPX0xPRyk6Ci0gICAgICAgICAgICAgICAgbnVtX3ByaW50ZWQgPSBudW1f
cHJpbnRlZCArIDEKLSAgICAgICAgICAgICAgICB1bmV4cGVjdGVkX3Nsb3dfdGVzdHMuYXBwZW5k
KHRlc3RfdHVwbGUpCi0KLSAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF90aW1pbmcoIiIpCi0g
ICAgICAgIHNlbGYuX3ByaW50X3Rlc3RfbGlzdF90aW1pbmcoIiVzIHNsb3dlc3QgdGVzdHMgdGhh
dCBhcmUgbm90ICIKLSAgICAgICAgICAgICJtYXJrZWQgYXMgU0xPVyBhbmQgZGlkIG5vdCB0aW1l
b3V0L2NyYXNoOiIgJQotICAgICAgICAgICAgcHJpbnRpbmcuTlVNX1NMT1dfVEVTVFNfVE9fTE9H
LCB1bmV4cGVjdGVkX3Nsb3dfdGVzdHMpCi0gICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfdGlt
aW5nKCIiKQotICAgICAgICBzZWxmLl9wcmludF90ZXN0X2xpc3RfdGltaW5nKCJUZXN0cyBtYXJr
ZWQgYXMgU0xPVzoiLCBzbG93X3Rlc3RzKQotICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X3Rp
bWluZygiIikKLSAgICAgICAgc2VsZi5fcHJpbnRfdGVzdF9saXN0X3RpbWluZygiVGVzdHMgdGhh
dCB0aW1lZCBvdXQgb3IgY3Jhc2hlZDoiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRpbWVvdXRfb3JfY3Jhc2hfdGVzdHMpCi0gICAgICAgIHNlbGYuX3ByaW50ZXIucHJp
bnRfdGltaW5nKCIiKQotCi0gICAgZGVmIF9wcmludF90ZXN0X2xpc3RfdGltaW5nKHNlbGYsIHRp
dGxlLCB0ZXN0X2xpc3QpOgotICAgICAgICAiIiJQcmludCB0aW1pbmcgaW5mbyBmb3IgZWFjaCB0
ZXN0LgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgdGl0bGU6IHNlY3Rpb24gaGVhZGluZwot
ICAgICAgICAgIHRlc3RfbGlzdDogdGVzdHMgdGhhdCBmYWxsIGluIHRoaXMgc2VjdGlvbgotICAg
ICAgICAiIiIKLSAgICAgICAgaWYgc2VsZi5fcHJpbnRlci5kaXNhYmxlZCgnc2xvd2VzdCcpOgot
ICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF90aW1pbmco
dGl0bGUpCi0gICAgICAgIGZvciB0ZXN0X3R1cGxlIGluIHRlc3RfbGlzdDoKLSAgICAgICAgICAg
IGZpbGVuYW1lID0gdGVzdF90dXBsZS5maWxlbmFtZVtsZW4oCi0gICAgICAgICAgICAgICAgc2Vs
Zi5fcG9ydC5sYXlvdXRfdGVzdHNfZGlyKCkpICsgMTpdCi0gICAgICAgICAgICBmaWxlbmFtZSA9
IGZpbGVuYW1lLnJlcGxhY2UoJ1xcJywgJy8nKQotICAgICAgICAgICAgdGVzdF9ydW5fdGltZSA9
IHJvdW5kKHRlc3RfdHVwbGUudGVzdF9ydW5fdGltZSwgMSkKLSAgICAgICAgICAgIHNlbGYuX3By
aW50ZXIucHJpbnRfdGltaW5nKCIgICVzIHRvb2sgJXMgc2Vjb25kcyIgJQotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpbGVuYW1lLCB0ZXN0X3J1bl90aW1lKSkKLQot
ICAgIGRlZiBfcHJpbnRfZGlyZWN0b3J5X3RpbWluZ3Moc2VsZiwgZGlyZWN0b3J5X3Rlc3RfdGlt
aW5ncyk6Ci0gICAgICAgICIiIlByaW50IHRpbWluZyBpbmZvIGJ5IGRpcmVjdG9yeSBmb3IgYW55
IGRpcmVjdG9yaWVzIHRoYXQKLSAgICAgICAgdGFrZSA+IDEwIHNlY29uZHMgdG8gcnVuLgotCi0g
ICAgICAgIEFyZ3M6Ci0gICAgICAgICAgZGlyZWN0b3J5X3Rlc3RfdGltaW5nOiB0aW1lIGluZm8g
Zm9yIGVhY2ggZGlyZWN0b3J5Ci0gICAgICAgICIiIgotICAgICAgICB0aW1pbmdzID0gW10KLSAg
ICAgICAgZm9yIGRpcmVjdG9yeSBpbiBkaXJlY3RvcnlfdGVzdF90aW1pbmdzOgotICAgICAgICAg
ICAgbnVtX3Rlc3RzLCB0aW1lX2Zvcl9kaXJlY3RvcnkgPSBkaXJlY3RvcnlfdGVzdF90aW1pbmdz
W2RpcmVjdG9yeV0KLSAgICAgICAgICAgIHRpbWluZ3MuYXBwZW5kKChyb3VuZCh0aW1lX2Zvcl9k
aXJlY3RvcnksIDEpLCBkaXJlY3RvcnksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVt
X3Rlc3RzKSkKLSAgICAgICAgdGltaW5ncy5zb3J0KCkKLQotICAgICAgICBzZWxmLl9wcmludGVy
LnByaW50X3RpbWluZygiVGltZSB0byBwcm9jZXNzIHNsb3dlc3Qgc3ViZGlyZWN0b3JpZXM6IikK
LSAgICAgICAgbWluX3NlY29uZHNfdG9fcHJpbnQgPSAxMAotICAgICAgICBmb3IgdGltaW5nIGlu
IHRpbWluZ3M6Ci0gICAgICAgICAgICBpZiB0aW1pbmdbMF0gPiBtaW5fc2Vjb25kc190b19wcmlu
dDoKLSAgICAgICAgICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X3RpbWluZygKLSAgICAgICAg
ICAgICAgICAgICAgIiAgJXMgdG9vayAlcyBzZWNvbmRzIHRvIHJ1biAlcyB0ZXN0cy4iICUgKHRp
bWluZ1sxXSwKLSAgICAgICAgICAgICAgICAgICAgdGltaW5nWzBdLCB0aW1pbmdbMl0pKQotICAg
ICAgICBzZWxmLl9wcmludGVyLnByaW50X3RpbWluZygiIikKLQotICAgIGRlZiBfcHJpbnRfc3Rh
dGlzdGljc19mb3JfdGVzdF90aW1pbmdzKHNlbGYsIHRpdGxlLCB0aW1pbmdzKToKLSAgICAgICAg
IiIiUHJpbnRzIHRoZSBtZWRpYW4sIG1lYW4gYW5kIHN0YW5kYXJkIGRldmlhdGlvbiBvZiB0aGUg
dmFsdWVzIGluCi0gICAgICAgIHRpbWluZ3MuCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICB0
aXRsZTogVGl0bGUgZm9yIHRoZXNlIHRpbWluZ3MuCi0gICAgICAgICAgdGltaW5nczogQSBsaXN0
IG9mIGZsb2F0cyByZXByZXNlbnRpbmcgdGltZXMuCi0gICAgICAgICIiIgotICAgICAgICBzZWxm
Ll9wcmludGVyLnByaW50X3RpbWluZyh0aXRsZSkKLSAgICAgICAgdGltaW5ncy5zb3J0KCkKLQot
ICAgICAgICBudW1fdGVzdHMgPSBsZW4odGltaW5ncykKLSAgICAgICAgaWYgbm90IG51bV90ZXN0
czoKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICBwZXJjZW50aWxlOTAgPSB0aW1pbmdzW2lu
dCguOSAqIG51bV90ZXN0cyldCi0gICAgICAgIHBlcmNlbnRpbGU5OSA9IHRpbWluZ3NbaW50KC45
OSAqIG51bV90ZXN0cyldCi0KLSAgICAgICAgaWYgbnVtX3Rlc3RzICUgMiA9PSAxOgotICAgICAg
ICAgICAgbWVkaWFuID0gdGltaW5nc1soKG51bV90ZXN0cyAtIDEpIC8gMikgLSAxXQotICAgICAg
ICBlbHNlOgotICAgICAgICAgICAgbG93ZXIgPSB0aW1pbmdzW251bV90ZXN0cyAvIDIgLSAxXQot
ICAgICAgICAgICAgdXBwZXIgPSB0aW1pbmdzW251bV90ZXN0cyAvIDJdCi0gICAgICAgICAgICBt
ZWRpYW4gPSAoZmxvYXQobG93ZXIgKyB1cHBlcikpIC8gMgotCi0gICAgICAgIG1lYW4gPSBzdW0o
dGltaW5ncykgLyBudW1fdGVzdHMKLQotICAgICAgICBmb3IgdGltZSBpbiB0aW1pbmdzOgotICAg
ICAgICAgICAgc3VtX29mX2RldmlhdGlvbnMgPSBtYXRoLnBvdyh0aW1lIC0gbWVhbiwgMikKLQot
ICAgICAgICBzdGRfZGV2aWF0aW9uID0gbWF0aC5zcXJ0KHN1bV9vZl9kZXZpYXRpb25zIC8gbnVt
X3Rlc3RzKQotICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X3RpbWluZygiICBNZWRpYW46ICAg
ICAgICAgICU2LjNmIiAlIG1lZGlhbikKLSAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF90aW1p
bmcoIiAgTWVhbjogICAgICAgICAgICAlNi4zZiIgJSBtZWFuKQotICAgICAgICBzZWxmLl9wcmlu
dGVyLnByaW50X3RpbWluZygiICA5MHRoIHBlcmNlbnRpbGU6ICU2LjNmIiAlIHBlcmNlbnRpbGU5
MCkKLSAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF90aW1pbmcoIiAgOTl0aCBwZXJjZW50aWxl
OiAlNi4zZiIgJSBwZXJjZW50aWxlOTkpCi0gICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfdGlt
aW5nKCIgIFN0YW5kYXJkIGRldjogICAgJTYuM2YiICUgc3RkX2RldmlhdGlvbikKLSAgICAgICAg
c2VsZi5fcHJpbnRlci5wcmludF90aW1pbmcoIiIpCi0KLSAgICBkZWYgX3ByaW50X3Jlc3VsdF9z
dW1tYXJ5KHNlbGYsIHJlc3VsdF9zdW1tYXJ5KToKLSAgICAgICAgIiIiUHJpbnQgYSBzaG9ydCBz
dW1tYXJ5IGFib3V0IGhvdyBtYW55IHRlc3RzIHBhc3NlZC4KLQotICAgICAgICBBcmdzOgotICAg
ICAgICAgIHJlc3VsdF9zdW1tYXJ5OiBpbmZvcm1hdGlvbiB0byBsb2cKLSAgICAgICAgIiIiCi0g
ICAgICAgIGZhaWxlZCA9IGxlbihyZXN1bHRfc3VtbWFyeS5mYWlsdXJlcykKLSAgICAgICAgc2tp
cHBlZCA9IGxlbigKLSAgICAgICAgICAgIHJlc3VsdF9zdW1tYXJ5LnRlc3RzX2J5X2V4cGVjdGF0
aW9uW3Rlc3RfZXhwZWN0YXRpb25zLlNLSVBdKQotICAgICAgICB0b3RhbCA9IHJlc3VsdF9zdW1t
YXJ5LnRvdGFsCi0gICAgICAgIHBhc3NlZCA9IHRvdGFsIC0gZmFpbGVkIC0gc2tpcHBlZAotICAg
ICAgICBwY3RfcGFzc2VkID0gMC4wCi0gICAgICAgIGlmIHRvdGFsID4gMDoKLSAgICAgICAgICAg
IHBjdF9wYXNzZWQgPSBmbG9hdChwYXNzZWQpICogMTAwIC8gdG90YWwKLQotICAgICAgICBzZWxm
Ll9wcmludGVyLnByaW50X2FjdHVhbCgiIikKLSAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF9h
Y3R1YWwoIj0+IFJlc3VsdHM6ICVkLyVkIHRlc3RzIHBhc3NlZCAoJS4xZiUlKSIgJQotICAgICAg
ICAgICAgICAgICAgICAgKHBhc3NlZCwgdG90YWwsIHBjdF9wYXNzZWQpKQotICAgICAgICBzZWxm
Ll9wcmludGVyLnByaW50X2FjdHVhbCgiIikKLSAgICAgICAgc2VsZi5fcHJpbnRfcmVzdWx0X3N1
bW1hcnlfZW50cnkocmVzdWx0X3N1bW1hcnksCi0gICAgICAgICAgICB0ZXN0X2V4cGVjdGF0aW9u
cy5OT1csICJUZXN0cyB0byBiZSBmaXhlZCIpCi0KLSAgICAgICAgc2VsZi5fcHJpbnRlci5wcmlu
dF9hY3R1YWwoIiIpCi0gICAgICAgIHNlbGYuX3ByaW50X3Jlc3VsdF9zdW1tYXJ5X2VudHJ5KHJl
c3VsdF9zdW1tYXJ5LAotICAgICAgICAgICAgdGVzdF9leHBlY3RhdGlvbnMuV09OVEZJWCwKLSAg
ICAgICAgICAgICJUZXN0cyB0aGF0IHdpbGwgb25seSBiZSBmaXhlZCBpZiB0aGV5IGNyYXNoIChX
T05URklYKSIpCi0gICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfYWN0dWFsKCIiKQotCi0gICAg
ZGVmIF9wcmludF9yZXN1bHRfc3VtbWFyeV9lbnRyeShzZWxmLCByZXN1bHRfc3VtbWFyeSwgdGlt
ZWxpbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkaW5nKToKLSAg
ICAgICAgIiIiUHJpbnQgYSBzdW1tYXJ5IGJsb2NrIG9mIHJlc3VsdHMgZm9yIGEgcGFydGljdWxh
ciB0aW1lbGluZSBvZiB0ZXN0LgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgcmVzdWx0X3N1
bW1hcnk6IHN1bW1hcnkgdG8gcHJpbnQgcmVzdWx0cyBmb3IKLSAgICAgICAgICB0aW1lbGluZTog
dGhlIHRpbWVsaW5lIHRvIHByaW50IHJlc3VsdHMgZm9yIChOT1QsIFdPTlRGSVgsIGV0Yy4pCi0g
ICAgICAgICAgaGVhZGluZzogYSB0ZXh0dWFsIGRlc2NyaXB0aW9uIG9mIHRoZSB0aW1lbGluZQot
ICAgICAgICAiIiIKLSAgICAgICAgdG90YWwgPSBsZW4ocmVzdWx0X3N1bW1hcnkudGVzdHNfYnlf
dGltZWxpbmVbdGltZWxpbmVdKQotICAgICAgICBub3RfcGFzc2luZyA9ICh0b3RhbCAtCi0gICAg
ICAgICAgIGxlbihyZXN1bHRfc3VtbWFyeS50ZXN0c19ieV9leHBlY3RhdGlvblt0ZXN0X2V4cGVj
dGF0aW9ucy5QQVNTXSAmCi0gICAgICAgICAgICAgICByZXN1bHRfc3VtbWFyeS50ZXN0c19ieV90
aW1lbGluZVt0aW1lbGluZV0pKQotICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X2FjdHVhbCgi
PT4gJXMgKCVkKToiICUgKGhlYWRpbmcsIG5vdF9wYXNzaW5nKSkKLQotICAgICAgICBmb3IgcmVz
dWx0IGluIFRlc3RFeHBlY3RhdGlvbnNGaWxlLkVYUEVDVEFUSU9OX09SREVSOgotICAgICAgICAg
ICAgaWYgcmVzdWx0ID09IHRlc3RfZXhwZWN0YXRpb25zLlBBU1M6Ci0gICAgICAgICAgICAgICAg
Y29udGludWUKLSAgICAgICAgICAgIHJlc3VsdHMgPSAocmVzdWx0X3N1bW1hcnkudGVzdHNfYnlf
ZXhwZWN0YXRpb25bcmVzdWx0XSAmCi0gICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdF9zdW1t
YXJ5LnRlc3RzX2J5X3RpbWVsaW5lW3RpbWVsaW5lXSkKLSAgICAgICAgICAgIGRlc2MgPSBUZXN0
RXhwZWN0YXRpb25zRmlsZS5FWFBFQ1RBVElPTl9ERVNDUklQVElPTlNbcmVzdWx0XQotICAgICAg
ICAgICAgaWYgbm90X3Bhc3NpbmcgYW5kIGxlbihyZXN1bHRzKToKLSAgICAgICAgICAgICAgICBw
Y3QgPSBsZW4ocmVzdWx0cykgKiAxMDAuMCAvIG5vdF9wYXNzaW5nCi0gICAgICAgICAgICAgICAg
c2VsZi5fcHJpbnRlci5wcmludF9hY3R1YWwoIiAgJTVkICUtMjRzICglNC4xZiUlKSIgJQotICAg
ICAgICAgICAgICAgICAgICAobGVuKHJlc3VsdHMpLCBkZXNjW2xlbihyZXN1bHRzKSAhPSAxXSwg
cGN0KSkKLQotICAgIGRlZiBfcmVzdWx0c19odG1sKHNlbGYsIHRlc3RfZmlsZXMsIGZhaWx1cmVz
LCB0aXRsZT0iVGVzdCBGYWlsdXJlcyIsIG92ZXJyaWRlX3RpbWU9Tm9uZSk6Ci0gICAgICAgICIi
IgotICAgICAgICB0ZXN0X2ZpbGVzID0gYSBsaXN0IG9mIGZpbGUgcGF0aHMKLSAgICAgICAgZmFp
bHVyZXMgPSBkaWN0aW9uYXJ5IG1hcHBpbmcgdGVzdCBwYXRocyB0byBmYWlsdXJlIG9iamVjdHMK
LSAgICAgICAgdGl0bGUgPSB0aXRsZSBwcmludGVkIGF0IHRvcCBvZiB0ZXN0Ci0gICAgICAgIG92
ZXJyaWRlX3RpbWUgPSBjdXJyZW50IHRpbWUgKHVzZWQgYnkgdW5pdCB0ZXN0cykKLSAgICAgICAg
IiIiCi0gICAgICAgIHBhZ2UgPSAiIiI8aHRtbD4KLSAgPGhlYWQ+Ci0gICAgPHRpdGxlPkxheW91
dCBUZXN0IFJlc3VsdHMgKCUodGltZSlzKTwvdGl0bGU+Ci0gIDwvaGVhZD4KLSAgPGJvZHk+Ci0g
ICAgPGgyPiUodGl0bGUpcyAoJSh0aW1lKXMpPC9oMj4KLSAgICAgICAgIiIiICUgeyd0aXRsZSc6
IHRpdGxlLCAndGltZSc6IG92ZXJyaWRlX3RpbWUgb3IgdGltZS5hc2N0aW1lKCl9Ci0KLSAgICAg
ICAgZm9yIHRlc3RfZmlsZSBpbiBzb3J0ZWQodGVzdF9maWxlcyk6Ci0gICAgICAgICAgICB0ZXN0
X25hbWUgPSBzZWxmLl9wb3J0LnJlbGF0aXZlX3Rlc3RfZmlsZW5hbWUodGVzdF9maWxlKQotICAg
ICAgICAgICAgdGVzdF91cmwgPSBzZWxmLl9wb3J0LmZpbGVuYW1lX3RvX3VyaSh0ZXN0X2ZpbGUp
Ci0gICAgICAgICAgICBwYWdlICs9IHUiPHA+PGEgaHJlZj0nJXMnPiVzPC9hPjxiciAvPlxuIiAl
ICh0ZXN0X3VybCwgdGVzdF9uYW1lKQotICAgICAgICAgICAgdGVzdF9mYWlsdXJlcyA9IGZhaWx1
cmVzLmdldCh0ZXN0X2ZpbGUsIFtdKQotICAgICAgICAgICAgZm9yIGZhaWx1cmUgaW4gdGVzdF9m
YWlsdXJlczoKLSAgICAgICAgICAgICAgICBwYWdlICs9ICh1IiZuYnNwOyZuYnNwOyVzPGJyLz4i
ICUKLSAgICAgICAgICAgICAgICAgICAgICAgICBmYWlsdXJlLnJlc3VsdF9odG1sX291dHB1dCh0
ZXN0X25hbWUpKQotICAgICAgICAgICAgcGFnZSArPSAiPC9wPlxuIgotICAgICAgICBwYWdlICs9
ICI8L2JvZHk+PC9odG1sPlxuIgotICAgICAgICByZXR1cm4gcGFnZQotCi0gICAgZGVmIF93cml0
ZV9yZXN1bHRzX2h0bWxfZmlsZShzZWxmLCByZXN1bHRfc3VtbWFyeSk6Ci0gICAgICAgICIiIldy
aXRlIHJlc3VsdHMuaHRtbCB3aGljaCBpcyBhIHN1bW1hcnkgb2YgdGVzdHMgdGhhdCBmYWlsZWQu
Ci0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICByZXN1bHRfc3VtbWFyeTogYSBzdW1tYXJ5IG9m
IHRoZSByZXN1bHRzIDopCi0KLSAgICAgICAgUmV0dXJuczoKLSAgICAgICAgICBUcnVlIGlmIGFu
eSByZXN1bHRzIHdlcmUgd3JpdHRlbiAoc2luY2UgZXhwZWN0ZWQgZmFpbHVyZXMgbWF5IGJlCi0g
ICAgICAgICAgb21pdHRlZCkKLSAgICAgICAgIiIiCi0gICAgICAgICMgdGVzdCBmYWlsdXJlcwot
ICAgICAgICBpZiBzZWxmLl9vcHRpb25zLmZ1bGxfcmVzdWx0c19odG1sOgotICAgICAgICAgICAg
cmVzdWx0c190aXRsZSA9ICJUZXN0IEZhaWx1cmVzIgotICAgICAgICAgICAgdGVzdF9maWxlcyA9
IHJlc3VsdF9zdW1tYXJ5LmZhaWx1cmVzLmtleXMoKQotICAgICAgICBlbHNlOgotICAgICAgICAg
ICAgcmVzdWx0c190aXRsZSA9ICJVbmV4cGVjdGVkIFRlc3QgRmFpbHVyZXMiCi0gICAgICAgICAg
ICB1bmV4cGVjdGVkX2ZhaWx1cmVzID0gc2VsZi5fZ2V0X2ZhaWx1cmVzKHJlc3VsdF9zdW1tYXJ5
LAotICAgICAgICAgICAgICAgIGluY2x1ZGVfY3Jhc2hlcz1UcnVlKQotICAgICAgICAgICAgdGVz
dF9maWxlcyA9IHVuZXhwZWN0ZWRfZmFpbHVyZXMua2V5cygpCi0gICAgICAgIGlmIG5vdCBsZW4o
dGVzdF9maWxlcyk6Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgICAgICBvdXRfZmls
ZW5hbWUgPSBvcy5wYXRoLmpvaW4oc2VsZi5fb3B0aW9ucy5yZXN1bHRzX2RpcmVjdG9yeSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZXN1bHRzLmh0bWwiKQotICAgICAg
ICB3aXRoIGNvZGVjcy5vcGVuKG91dF9maWxlbmFtZSwgInciLCAidXRmLTgiKSBhcyByZXN1bHRz
X2ZpbGU6Ci0gICAgICAgICAgICBodG1sID0gc2VsZi5fcmVzdWx0c19odG1sKHRlc3RfZmlsZXMs
IHJlc3VsdF9zdW1tYXJ5LmZhaWx1cmVzLCByZXN1bHRzX3RpdGxlKQotICAgICAgICAgICAgcmVz
dWx0c19maWxlLndyaXRlKGh0bWwpCi0KLSAgICAgICAgcmV0dXJuIFRydWUKLQotICAgIGRlZiBf
c2hvd19yZXN1bHRzX2h0bWxfZmlsZShzZWxmKToKLSAgICAgICAgIiIiU2hvd3MgdGhlIHJlc3Vs
dHMuaHRtbCBwYWdlLiIiIgotICAgICAgICByZXN1bHRzX2ZpbGVuYW1lID0gb3MucGF0aC5qb2lu
KHNlbGYuX29wdGlvbnMucmVzdWx0c19kaXJlY3RvcnksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgInJlc3VsdHMuaHRtbCIpCi0gICAgICAgIHNlbGYuX3BvcnQuc2hv
d19yZXN1bHRzX2h0bWxfZmlsZShyZXN1bHRzX2ZpbGVuYW1lKQotCi0KLWRlZiByZWFkX3Rlc3Rf
ZmlsZXMoZmlsZXMpOgotICAgIHRlc3RzID0gW10KLSAgICBmb3IgZmlsZSBpbiBmaWxlczoKLSAg
ICAgICAgdHJ5OgotICAgICAgICAgICAgd2l0aCBjb2RlY3Mub3BlbihmaWxlLCAncicsICd1dGYt
OCcpIGFzIGZpbGVfY29udGVudHM6Ci0gICAgICAgICAgICAgICAgIyBGSVhNRTogVGhpcyBjb3Vs
ZCBiZSBjbGVhbmVyIHVzaW5nIGEgbGlzdCBjb21wcmVoZW5zaW9uLgotICAgICAgICAgICAgICAg
IGZvciBsaW5lIGluIGZpbGVfY29udGVudHM6Ci0gICAgICAgICAgICAgICAgICAgIGxpbmUgPSB0
ZXN0X2V4cGVjdGF0aW9ucy5zdHJpcF9jb21tZW50cyhsaW5lKQotICAgICAgICAgICAgICAgICAg
ICBpZiBsaW5lOgotICAgICAgICAgICAgICAgICAgICAgICAgdGVzdHMuYXBwZW5kKGxpbmUpCi0g
ICAgICAgIGV4Y2VwdCBJT0Vycm9yLCBlOgotICAgICAgICAgICAgaWYgZS5lcnJubyA9PSBlcnJu
by5FTk9FTlQ6Ci0gICAgICAgICAgICAgICAgX2xvZy5jcml0aWNhbCgnJykKLSAgICAgICAgICAg
ICAgICBfbG9nLmNyaXRpY2FsKCctLXRlc3QtbGlzdCBmaWxlICIlcyIgbm90IGZvdW5kJyAlIGZp
bGUpCi0gICAgICAgICAgICByYWlzZQotICAgIHJldHVybiB0ZXN0cworX2xvZyA9IGxvZ2dpbmcu
Z2V0TG9nZ2VyKF9fbmFtZV9fKQogCiAKIGRlZiBydW4ocG9ydCwgb3B0aW9ucywgYXJncywgcmVn
dWxhcl9vdXRwdXQ9c3lzLnN0ZGVyciwKQEAgLTEzMDksMTIgKzkwLDEyIEBAIGRlZiBydW4ocG9y
dCwgb3B0aW9ucywgYXJncywgcmVndWxhcl9vdXRwdXQ9c3lzLnN0ZGVyciwKICAgICAjIGluIGEg
dHJ5L2ZpbmFsbHkgdG8gZW5zdXJlIHRoYXQgd2UgY2xlYW4gdXAgdGhlIGxvZ2dpbmcgY29uZmln
dXJhdGlvbi4KICAgICBudW1fdW5leHBlY3RlZF9yZXN1bHRzID0gLTEKICAgICB0cnk6Ci0gICAg
ICAgIHRlc3RfcnVubmVyID0gVGVzdFJ1bm5lcihwb3J0LCBvcHRpb25zLCBwcmludGVyKQotICAg
ICAgICB0ZXN0X3J1bm5lci5fcHJpbnRfY29uZmlnKCkKKyAgICAgICAgcnVubmVyID0gdGVzdF9y
dW5uZXIuVGVzdFJ1bm5lcihwb3J0LCBvcHRpb25zLCBwcmludGVyKQorICAgICAgICBydW5uZXIu
X3ByaW50X2NvbmZpZygpCiAKICAgICAgICAgcHJpbnRlci5wcmludF91cGRhdGUoIkNvbGxlY3Rp
bmcgdGVzdHMgLi4uIikKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgdGVzdF9ydW5uZXIuY29s
bGVjdF90ZXN0cyhhcmdzLCBsYXN0X3VuZXhwZWN0ZWRfcmVzdWx0cykKKyAgICAgICAgICAgIHJ1
bm5lci5jb2xsZWN0X3Rlc3RzKGFyZ3MsIGxhc3RfdW5leHBlY3RlZF9yZXN1bHRzKQogICAgICAg
ICBleGNlcHQgSU9FcnJvciwgZToKICAgICAgICAgICAgIGlmIGUuZXJybm8gPT0gZXJybm8uRU5P
RU5UOgogICAgICAgICAgICAgICAgIHJldHVybiAtMQpAQCAtMTMyMiwxOSArMTAzLDE5IEBAIGRl
ZiBydW4ocG9ydCwgb3B0aW9ucywgYXJncywgcmVndWxhcl9vdXRwdXQ9c3lzLnN0ZGVyciwKIAog
ICAgICAgICBwcmludGVyLnByaW50X3VwZGF0ZSgiUGFyc2luZyBleHBlY3RhdGlvbnMgLi4uIikK
ICAgICAgICAgaWYgb3B0aW9ucy5saW50X3Rlc3RfZmlsZXM6Ci0gICAgICAgICAgICByZXR1cm4g
dGVzdF9ydW5uZXIubGludCgpCi0gICAgICAgIHRlc3RfcnVubmVyLnBhcnNlX2V4cGVjdGF0aW9u
cyhwb3J0LnRlc3RfcGxhdGZvcm1fbmFtZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgb3B0aW9ucy5jb25maWd1cmF0aW9uID09ICdEZWJ1ZycpCisgICAgICAgICAg
ICByZXR1cm4gcnVubmVyLmxpbnQoKQorICAgICAgICBydW5uZXIucGFyc2VfZXhwZWN0YXRpb25z
KHBvcnQudGVzdF9wbGF0Zm9ybV9uYW1lKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgb3B0aW9ucy5jb25maWd1cmF0aW9uID09ICdEZWJ1ZycpCiAKICAgICAgICAgcHJpbnRl
ci5wcmludF91cGRhdGUoIkNoZWNraW5nIGJ1aWxkIC4uLiIpCi0gICAgICAgIGlmIG5vdCBwb3J0
LmNoZWNrX2J1aWxkKHRlc3RfcnVubmVyLm5lZWRzX2h0dHAoKSk6CisgICAgICAgIGlmIG5vdCBw
b3J0LmNoZWNrX2J1aWxkKHJ1bm5lci5uZWVkc19odHRwKCkpOgogICAgICAgICAgICAgX2xvZy5l
cnJvcigiQnVpbGQgY2hlY2sgZmFpbGVkIikKICAgICAgICAgICAgIHJldHVybiAtMQogCi0gICAg
ICAgIHJlc3VsdF9zdW1tYXJ5ID0gdGVzdF9ydW5uZXIuc2V0X3VwX3J1bigpCisgICAgICAgIHJl
c3VsdF9zdW1tYXJ5ID0gcnVubmVyLnNldF91cF9ydW4oKQogICAgICAgICBpZiByZXN1bHRfc3Vt
bWFyeToKLSAgICAgICAgICAgIG51bV91bmV4cGVjdGVkX3Jlc3VsdHMgPSB0ZXN0X3J1bm5lci5y
dW4ocmVzdWx0X3N1bW1hcnkpCi0gICAgICAgICAgICB0ZXN0X3J1bm5lci5jbGVhbl91cF9ydW4o
KQorICAgICAgICAgICAgbnVtX3VuZXhwZWN0ZWRfcmVzdWx0cyA9IHJ1bm5lci5ydW4ocmVzdWx0
X3N1bW1hcnkpCisgICAgICAgICAgICBydW5uZXIuY2xlYW5fdXBfcnVuKCkKICAgICAgICAgICAg
IF9sb2cuZGVidWcoIlRlc3RpbmcgY29tcGxldGVkLCBFeGl0IHN0YXR1czogJWQiICUKICAgICAg
ICAgICAgICAgICAgICAgICAgbnVtX3VuZXhwZWN0ZWRfcmVzdWx0cykKICAgICBmaW5hbGx5OgpA
QCAtMTM3Myw5ICsxNTQsOSBAQCBkZWYgX3NldF91cF9kZXJpdmVkX29wdGlvbnMocG9ydF9vYmos
IG9wdGlvbnMpOgogCiAgICAgaWYgbm90IG9wdGlvbnMudGltZV9vdXRfbXM6CiAgICAgICAgIGlm
IG9wdGlvbnMuY29uZmlndXJhdGlvbiA9PSAiRGVidWciOgotICAgICAgICAgICAgb3B0aW9ucy50
aW1lX291dF9tcyA9IHN0cigyICogVGVzdFJ1bm5lci5ERUZBVUxUX1RFU1RfVElNRU9VVF9NUykK
KyAgICAgICAgICAgIG9wdGlvbnMudGltZV9vdXRfbXMgPSBzdHIoMiAqIHRlc3RfcnVubmVyLlRl
c3RSdW5uZXIuREVGQVVMVF9URVNUX1RJTUVPVVRfTVMpCiAgICAgICAgIGVsc2U6Ci0gICAgICAg
ICAgICBvcHRpb25zLnRpbWVfb3V0X21zID0gc3RyKFRlc3RSdW5uZXIuREVGQVVMVF9URVNUX1RJ
TUVPVVRfTVMpCisgICAgICAgICAgICBvcHRpb25zLnRpbWVfb3V0X21zID0gc3RyKHRlc3RfcnVu
bmVyLlRlc3RSdW5uZXIuREVGQVVMVF9URVNUX1RJTUVPVVRfTVMpCiAKICAgICBvcHRpb25zLnNs
b3dfdGltZV9vdXRfbXMgPSBzdHIoNSAqIGludChvcHRpb25zLnRpbWVfb3V0X21zKSkKICAgICBy
ZXR1cm4gd2FybmluZ3MKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfdW5pdHRlc3QucHkgYi9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX3VuaXR0ZXN0LnB5
CmluZGV4IDYzMTExMzgxYjk0ZWExY2UzMDMzODkwODE4MGUxMjRkNTA5NzQ1M2EuLmE3NzljYjI0
OGNiNDA5ZjQxYTIyZGQyYTVlOTQ2MmI1ZDFjMzU5ODkgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfdW5pdHRlc3Qu
cHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dl
YmtpdF90ZXN0c191bml0dGVzdC5weQpAQCAtNDY5LDY3ICs0NjksNiBAQCBjbGFzcyBSZWJhc2Vs
aW5lVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAgICBjb2RlY3Mub3BlbiA9IG9y
aWdpbmFsX29wZW4KIAogCi1jbGFzcyBUZXN0UnVubmVyV3JhcHBlcihydW5fd2Via2l0X3Rlc3Rz
LlRlc3RSdW5uZXIpOgotICAgIGRlZiBfZ2V0X3Rlc3RfaW5wdXRfZm9yX2ZpbGUoc2VsZiwgdGVz
dF9maWxlKToKLSAgICAgICAgcmV0dXJuIHRlc3RfZmlsZQotCi0KLWNsYXNzIFRlc3RSdW5uZXJU
ZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgdGVzdF9yZXN1bHRzX2h0bWwoc2VsZik6
Ci0gICAgICAgIG1vY2tfcG9ydCA9IE1vY2soKQotICAgICAgICBtb2NrX3BvcnQucmVsYXRpdmVf
dGVzdF9maWxlbmFtZSA9IGxhbWJkYSBuYW1lOiBuYW1lCi0gICAgICAgIG1vY2tfcG9ydC5maWxl
bmFtZV90b191cmkgPSBsYW1iZGEgbmFtZTogbmFtZQotCi0gICAgICAgIHJ1bm5lciA9IHJ1bl93
ZWJraXRfdGVzdHMuVGVzdFJ1bm5lcihwb3J0PW1vY2tfcG9ydCwgb3B0aW9ucz1Nb2NrKCksCi0g
ICAgICAgICAgICBwcmludGVyPU1vY2soKSkKLSAgICAgICAgZXhwZWN0ZWRfaHRtbCA9IHUiIiI8
aHRtbD4KLSAgPGhlYWQ+Ci0gICAgPHRpdGxlPkxheW91dCBUZXN0IFJlc3VsdHMgKHRpbWUpPC90
aXRsZT4KLSAgPC9oZWFkPgotICA8Ym9keT4KLSAgICA8aDI+VGl0bGUgKHRpbWUpPC9oMj4KLSAg
ICAgICAgPHA+PGEgaHJlZj0ndGVzdF9wYXRoJz50ZXN0X3BhdGg8L2E+PGJyIC8+Ci08L3A+Ci08
L2JvZHk+PC9odG1sPgotIiIiCi0gICAgICAgIGh0bWwgPSBydW5uZXIuX3Jlc3VsdHNfaHRtbChb
InRlc3RfcGF0aCJdLCB7fSwgIlRpdGxlIiwgb3ZlcnJpZGVfdGltZT0idGltZSIpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoaHRtbCwgZXhwZWN0ZWRfaHRtbCkKLQotICAgIGRlZiB0ZXN0X3No
YXJkX3Rlc3RzKHNlbGYpOgotICAgICAgICAjIFRlc3QgdGhhdCBfc2hhcmRfdGVzdHMgaW4gcnVu
X3dlYmtpdF90ZXN0cy5UZXN0UnVubmVyIHJlYWxseQotICAgICAgICAjIHB1dCB0aGUgaHR0cCB0
ZXN0cyBmaXJzdCBpbiB0aGUgcXVldWUuCi0gICAgICAgIHJ1bm5lciA9IFRlc3RSdW5uZXJXcmFw
cGVyKHBvcnQ9TW9jaygpLCBvcHRpb25zPU1vY2soKSwKLSAgICAgICAgICAgIHByaW50ZXI9TW9j
aygpKQotCi0gICAgICAgIHRlc3RfbGlzdCA9IFsKLSAgICAgICAgICAiTGF5b3V0VGVzdHMvd2Vi
c29ja2V0L3Rlc3RzL3VuaWNvZGUuaHRtIiwKLSAgICAgICAgICAiTGF5b3V0VGVzdHMvYW5pbWF0
aW9ucy9rZXlmcmFtZXMuaHRtbCIsCi0gICAgICAgICAgIkxheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkvdmlldy1zb3VyY2Utbm8tcmVmcmVzaC5odG1sIiwKLSAgICAgICAgICAiTGF5b3V0
VGVzdHMvd2Vic29ja2V0L3Rlc3RzL3dlYnNvY2tldC1wcm90b2NvbC1pZ25vcmVkLmh0bWwiLAot
ICAgICAgICAgICJMYXlvdXRUZXN0cy9mYXN0L2Nzcy9kaXNwbGF5LW5vbmUtaW5saW5lLXN0eWxl
LWNoYW5nZS1jcmFzaC5odG1sIiwKLSAgICAgICAgICAiTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94
bWxodHRwcmVxdWVzdC9zdXBwb3J0ZWQteG1sLWNvbnRlbnQtdHlwZXMuaHRtbCIsCi0gICAgICAg
ICAgIkxheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMi9odG1sL0hUTUxBbmNob3JFbGVtZW50MDMu
aHRtbCIsCi0gICAgICAgICAgIkxheW91dFRlc3RzL2lldGVzdGNlbnRlci9KYXZhc2NyaXB0LzEx
LjEuNV80LTQtYy0xLmh0bWwiLAotICAgICAgICAgICJMYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZl
bDIvaHRtbC9IVE1MQW5jaG9yRWxlbWVudDA2Lmh0bWwiLAotICAgICAgICBdCi0KLSAgICAgICAg
ZXhwZWN0ZWRfdGVzdHNfdG9faHR0cF9sb2NrID0gc2V0KFsKLSAgICAgICAgICAnTGF5b3V0VGVz
dHMvd2Vic29ja2V0L3Rlc3RzL3VuaWNvZGUuaHRtJywKLSAgICAgICAgICAnTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS92aWV3LXNvdXJjZS1uby1yZWZyZXNoLmh0bWwnLAotICAgICAg
ICAgICdMYXlvdXRUZXN0cy93ZWJzb2NrZXQvdGVzdHMvd2Vic29ja2V0LXByb3RvY29sLWlnbm9y
ZWQuaHRtbCcsCi0gICAgICAgICAgJ0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVl
c3Qvc3VwcG9ydGVkLXhtbC1jb250ZW50LXR5cGVzLmh0bWwnLAotICAgICAgICBdKQotCi0gICAg
ICAgICMgRklYTUU6IElkZWFsbHkgdGhlIEhUVFAgdGVzdHMgZG9uJ3QgaGF2ZSB0byBhbGwgYmUg
aW4gb25lIHNoYXJkLgotICAgICAgICBzaW5nbGVfdGhyZWFkX3Jlc3VsdHMgPSBydW5uZXIuX3No
YXJkX3Rlc3RzKHRlc3RfbGlzdCwgRmFsc2UpCi0gICAgICAgIG11bHRpX3RocmVhZF9yZXN1bHRz
ID0gcnVubmVyLl9zaGFyZF90ZXN0cyh0ZXN0X2xpc3QsIFRydWUpCi0KLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgidGVzdHNfdG9faHR0cF9sb2NrIiwgc2luZ2xlX3RocmVhZF9yZXN1bHRzWzBd
WzBdKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX3Rlc3RzX3RvX2h0dHBfbG9j
aywgc2V0KHNpbmdsZV90aHJlYWRfcmVzdWx0c1swXVsxXSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoInRlc3RzX3RvX2h0dHBfbG9jayIsIG11bHRpX3RocmVhZF9yZXN1bHRzWzBdWzBdKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX3Rlc3RzX3RvX2h0dHBfbG9jaywgc2V0
KG11bHRpX3RocmVhZF9yZXN1bHRzWzBdWzFdKSkKLQotCiBjbGFzcyBEcnlydW5UZXN0KHVuaXR0
ZXN0LlRlc3RDYXNlKToKICAgICAjIEZJWE1FOiBpdCdzIGhhcmQgdG8ga25vdyB3aGljaCBwbGF0
Zm9ybXMgYXJlIHNhZmUgdG8gdGVzdDsgdGhlCiAgICAgIyBjaHJvbWl1bSBwbGF0Zm9ybXMgcmVx
dWlyZSBhIGNocm9taXVtIGNoZWNrb3V0LCBhbmQgdGhlIG1hYyBwbGF0Zm9ybQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>77285</attachid>
            <date>2010-12-22 17:26:03 -0800</date>
            <delta_ts>2011-01-10 12:48:25 -0800</delta_ts>
            <desc>rebase after WebKitTools -&gt; Tools rename</desc>
            <filename>bug-51092-20101222172602.patch</filename>
            <type>text/plain</type>
            <size>129624</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA4OThh
MzAxZDEwYTUxZDEyMjljYTg1NTYzNGM3MGFhZTdmZmQzODdkLi42NWFhYTcwZjc4Mzg2ZTQwYjc3
NzBiZDYzMzllOWJmYzA3YjM3Y2I1IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0yLDYgKzIsMjggQEAKIAogICAgICAgICBSZXZpZXdlZCBieSBP
amFuIFZhZmFpLgogCisgICAgICAgIFRoaXMgY2hhbmdlIHNwbGl0cyBvdXQgdGhlIFRlc3RSdW5u
ZXIgY2xhc3MgaW50byBpdHMgb3duIGZpbGUuCisgICAgICAgIFdoZW4gd2UgZm9yayB0aGUgY29k
ZSBmb3IgbWVzc2FnZSBwYXNzaW5nLCB3ZSB3aWxsIGNyZWF0ZSBhIG5ldworICAgICAgICBUZXN0
UnVubmVyLCBhbmQgdGhpcyBjaGFuZ2Ugd2lsbCBhbGxvdyB0aGF0IHRvIGJlIG1vcmUgbW9kdWxh
ci4KKworICAgICAgICBXaGlsZSB3ZSdyZSBhdCBpdCwgc3BsaXQgb3V0IFRlc3RJbnB1dCBhbmQg
UmVzdWx0U3VtbWFyeSBpbnRvCisgICAgICAgIHRoZWlyIG93biBmaWxlcywgdG8gcmVkdWNlIHRo
ZSBzaXplIG9mIHJ1bl93ZWJraXRfdGVzdHMgdG8KKyAgICAgICAgc29tZXRoaW5nIG1vcmUgbWFu
YWdhYmxlLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD01MTA5MgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0
X3BhY2thZ2UvcHJpbnRpbmdfdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvcmVzdWx0X3N1bW1hcnkucHk6CisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9ydW5u
ZXIucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3Bh
Y2thZ2UvdGVzdF9ydW5uZXJfdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9pbnB1dC5weToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5OgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfdW5pdHRl
c3QucHk6CisKKyAyMDEwLTEyLTIyICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE9qYW4gVmFmYWkuCisKICAgICAgICAgbnJ3dCBtdWx0
aXByb2Nlc3NpbmcgLSBzdGFydCBvdmVyLCBwcmVwYXJlIHRvIGZvcmsgdGhlIGNvZGUKICAKICAg
ICAgICAgVGhpcyBjb2RlIGNsZWFucyB1cCB0aGUgc2lnbmF0dXJlcyBhbmQgaW1wbGVtZW50YXRp
b24gb2YgdGhlCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9sYXlvdXRfcGFja2FnZS9wcmludGluZ191bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3ByaW50aW5nX3VuaXR0ZXN0LnB5Cmlu
ZGV4IDI3YTZhMjliZTVjOWE3YTNmMDczZjAwZTYzMGM1YjA0NTI3NmRiYzAuLjBlNDc4YzhkYzQz
ZmRkYzRlYTU3ZWI3OWE1ZGY4NGJhOWI0NTQ5ODUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3ByaW50aW5nX3VuaXR0ZXN0LnB5
CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdl
L3ByaW50aW5nX3VuaXR0ZXN0LnB5CkBAIC0zOSwxMSArMzksMTMgQEAgaW1wb3J0IGxvZ2dpbmcK
IGZyb20gd2Via2l0cHkuY29tbW9uIGltcG9ydCBhcnJheV9zdHJlYW0KIGZyb20gd2Via2l0cHku
Y29tbW9uLnN5c3RlbSBpbXBvcnQgbG9ndGVzdGluZwogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVz
dHMgaW1wb3J0IHBvcnQKKwogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubGF5b3V0X3BhY2th
Z2UgaW1wb3J0IHByaW50aW5nCi1mcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFj
a2FnZSBpbXBvcnQgdGVzdF9yZXN1bHRzCitmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlv
dXRfcGFja2FnZSBpbXBvcnQgcmVzdWx0X3N1bW1hcnkKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rl
c3RzLmxheW91dF9wYWNrYWdlIGltcG9ydCB0ZXN0X2V4cGVjdGF0aW9ucwogZnJvbSB3ZWJraXRw
eS5sYXlvdXRfdGVzdHMubGF5b3V0X3BhY2thZ2UgaW1wb3J0IHRlc3RfZmFpbHVyZXMKLWZyb20g
d2Via2l0cHkubGF5b3V0X3Rlc3RzIGltcG9ydCBydW5fd2Via2l0X3Rlc3RzCitmcm9tIHdlYmtp
dHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZSBpbXBvcnQgdGVzdF9yZXN1bHRzCitmcm9t
IHdlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZSBpbXBvcnQgdGVzdF9ydW5uZXIK
IAogCiBkZWYgZ2V0X29wdGlvbnMoYXJncyk6CkBAIC0xNDksNyArMTUxLDcgQEAgY2xhc3MgIFRl
c3RwcmludGVyKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgICAgIHNlbGYuX3BvcnQudGVz
dF9wbGF0Zm9ybV9uYW1lKCksIGlzX2RlYnVnX21vZGU9RmFsc2UsCiAgICAgICAgICAgICBpc19s
aW50X21vZGU9RmFsc2UpCiAKLSAgICAgICAgcnMgPSBydW5fd2Via2l0X3Rlc3RzLlJlc3VsdFN1
bW1hcnkoZXhwZWN0YXRpb25zLCB0ZXN0X3BhdGhzKQorICAgICAgICBycyA9IHJlc3VsdF9zdW1t
YXJ5LlJlc3VsdFN1bW1hcnkoZXhwZWN0YXRpb25zLCB0ZXN0X3BhdGhzKQogICAgICAgICByZXR1
cm4gdGVzdF9wYXRocywgcnMsIGV4cGVjdGF0aW9ucwogCiAgICAgZGVmIHRlc3RfaGVscF9wcmlu
dGVyKHNlbGYpOgpAQCAtNTE1LDcgKzUxNyw3IEBAIGNsYXNzICBUZXN0cHJpbnRlcih1bml0dGVz
dC5UZXN0Q2FzZSk6CiAgICAgICAgICAgICAgICAgcmV0cnkuYWRkKHNlbGYuZ2V0X3Jlc3VsdCgn
cGFzc2VzL3RleHQuaHRtbCcpLCBUcnVlKQogICAgICAgICAgICAgICAgIHJldHJ5LmFkZChzZWxm
LmdldF9yZXN1bHQoJ2ZhaWx1cmVzL2V4cGVjdGVkL3RpbWVvdXQuaHRtbCcpLCBUcnVlKQogICAg
ICAgICAgICAgICAgIHJldHJ5LmFkZChzZWxmLmdldF9yZXN1bHQoJ2ZhaWx1cmVzL2V4cGVjdGVk
L2NyYXNoLmh0bWwnKSwgVHJ1ZSkKLSAgICAgICAgICAgIHVuZXhwZWN0ZWRfcmVzdWx0cyA9IHJ1
bl93ZWJraXRfdGVzdHMuc3VtbWFyaXplX3VuZXhwZWN0ZWRfcmVzdWx0cygKKyAgICAgICAgICAg
IHVuZXhwZWN0ZWRfcmVzdWx0cyA9IHRlc3RfcnVubmVyLnN1bW1hcml6ZV91bmV4cGVjdGVkX3Jl
c3VsdHMoCiAgICAgICAgICAgICAgICAgc2VsZi5fcG9ydCwgZXhwLCBycywgcmV0cnkpCiAgICAg
ICAgICAgICByZXR1cm4gdW5leHBlY3RlZF9yZXN1bHRzCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Jlc3VsdF9zdW1tYXJ5
LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2Uv
cmVzdWx0X3N1bW1hcnkucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODBmZDZhY2JmNWFmZDg3MGQ4NjAyNTVkODYy
MTk3NjA5ZTJlMGM2MAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Jlc3VsdF9zdW1tYXJ5LnB5CkBAIC0wLDAgKzEs
ODkgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIyBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDEwIEdhYm9yIFJh
cGNzYW55aSAocmdhYm9yQGluZi51LXN6ZWdlZC5odSksIFVuaXZlcnNpdHkgb2YgU3plZ2VkCisj
CisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24u
CisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorCisiIiJSdW4gbGF5b3V0IHRlc3RzLiIiIgorCitpbXBvcnQgbG9n
Z2luZworCitpbXBvcnQgdGVzdF9leHBlY3RhdGlvbnMKKworX2xvZyA9IGxvZ2dpbmcuZ2V0TG9n
Z2VyKCJ3ZWJraXRweS5sYXlvdXRfdGVzdHMucnVuX3dlYmtpdF90ZXN0cyIpCisKK1Rlc3RFeHBl
Y3RhdGlvbnNGaWxlID0gdGVzdF9leHBlY3RhdGlvbnMuVGVzdEV4cGVjdGF0aW9uc0ZpbGUKKwor
CitjbGFzcyBSZXN1bHRTdW1tYXJ5KG9iamVjdCk6CisgICAgIiIiQSBjbGFzcyBmb3IgcGFydGl0
aW9uaW5nIHRoZSB0ZXN0IHJlc3VsdHMgd2UgZ2V0IGludG8gYnVja2V0cy4KKworICAgIFRoaXMg
Y2xhc3MgaXMgYmFzaWNhbGx5IGEgZ2xvcmlmaWVkIHN0cnVjdCBhbmQgaXQncyBwcml2YXRlIHRv
IHRoaXMgZmlsZQorICAgIHNvIHdlIGRvbid0IGJvdGhlciB3aXRoIGFueSBpbmZvcm1hdGlvbiBo
aWRpbmcuIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZXhwZWN0YXRpb25zLCB0ZXN0X2Zp
bGVzKToKKyAgICAgICAgc2VsZi50b3RhbCA9IGxlbih0ZXN0X2ZpbGVzKQorICAgICAgICBzZWxm
LnJlbWFpbmluZyA9IHNlbGYudG90YWwKKyAgICAgICAgc2VsZi5leHBlY3RhdGlvbnMgPSBleHBl
Y3RhdGlvbnMKKyAgICAgICAgc2VsZi5leHBlY3RlZCA9IDAKKyAgICAgICAgc2VsZi51bmV4cGVj
dGVkID0gMAorICAgICAgICBzZWxmLnVuZXhwZWN0ZWRfZmFpbHVyZXMgPSAwCisgICAgICAgIHNl
bGYudW5leHBlY3RlZF9jcmFzaGVzX29yX3RpbWVvdXRzID0gMAorICAgICAgICBzZWxmLnRlc3Rz
X2J5X2V4cGVjdGF0aW9uID0ge30KKyAgICAgICAgc2VsZi50ZXN0c19ieV90aW1lbGluZSA9IHt9
CisgICAgICAgIHNlbGYucmVzdWx0cyA9IHt9CisgICAgICAgIHNlbGYudW5leHBlY3RlZF9yZXN1
bHRzID0ge30KKyAgICAgICAgc2VsZi5mYWlsdXJlcyA9IHt9CisgICAgICAgIHNlbGYudGVzdHNf
YnlfZXhwZWN0YXRpb25bdGVzdF9leHBlY3RhdGlvbnMuU0tJUF0gPSBzZXQoKQorICAgICAgICBm
b3IgZXhwZWN0YXRpb24gaW4gVGVzdEV4cGVjdGF0aW9uc0ZpbGUuRVhQRUNUQVRJT05TLnZhbHVl
cygpOgorICAgICAgICAgICAgc2VsZi50ZXN0c19ieV9leHBlY3RhdGlvbltleHBlY3RhdGlvbl0g
PSBzZXQoKQorICAgICAgICBmb3IgdGltZWxpbmUgaW4gVGVzdEV4cGVjdGF0aW9uc0ZpbGUuVElN
RUxJTkVTLnZhbHVlcygpOgorICAgICAgICAgICAgc2VsZi50ZXN0c19ieV90aW1lbGluZVt0aW1l
bGluZV0gPSAoCisgICAgICAgICAgICAgICAgZXhwZWN0YXRpb25zLmdldF90ZXN0c193aXRoX3Rp
bWVsaW5lKHRpbWVsaW5lKSkKKworICAgIGRlZiBhZGQoc2VsZiwgcmVzdWx0LCBleHBlY3RlZCk6
CisgICAgICAgICIiIkFkZCBhIFRlc3RSZXN1bHQgaW50byB0aGUgYXBwcm9wcmlhdGUgYmluLgor
CisgICAgICAgIEFyZ3M6CisgICAgICAgICAgcmVzdWx0OiBUZXN0UmVzdWx0CisgICAgICAgICAg
ZXhwZWN0ZWQ6IHdoZXRoZXIgdGhlIHJlc3VsdCB3YXMgd2hhdCB3ZSBleHBlY3RlZCBpdCB0byBi
ZS4KKyAgICAgICAgIiIiCisKKyAgICAgICAgc2VsZi50ZXN0c19ieV9leHBlY3RhdGlvbltyZXN1
bHQudHlwZV0uYWRkKHJlc3VsdC5maWxlbmFtZSkKKyAgICAgICAgc2VsZi5yZXN1bHRzW3Jlc3Vs
dC5maWxlbmFtZV0gPSByZXN1bHQKKyAgICAgICAgc2VsZi5yZW1haW5pbmcgLT0gMQorICAgICAg
ICBpZiBsZW4ocmVzdWx0LmZhaWx1cmVzKToKKyAgICAgICAgICAgIHNlbGYuZmFpbHVyZXNbcmVz
dWx0LmZpbGVuYW1lXSA9IHJlc3VsdC5mYWlsdXJlcworICAgICAgICBpZiBleHBlY3RlZDoKKyAg
ICAgICAgICAgIHNlbGYuZXhwZWN0ZWQgKz0gMQorICAgICAgICBlbHNlOgorICAgICAgICAgICAg
c2VsZi51bmV4cGVjdGVkX3Jlc3VsdHNbcmVzdWx0LmZpbGVuYW1lXSA9IHJlc3VsdC50eXBlCisg
ICAgICAgICAgICBzZWxmLnVuZXhwZWN0ZWQgKz0gMQorICAgICAgICAgICAgaWYgbGVuKHJlc3Vs
dC5mYWlsdXJlcyk6CisgICAgICAgICAgICAgICAgc2VsZi51bmV4cGVjdGVkX2ZhaWx1cmVzICs9
IDEKKyAgICAgICAgICAgIGlmIHJlc3VsdC50eXBlID09IHRlc3RfZXhwZWN0YXRpb25zLkNSQVNI
IG9yIHJlc3VsdC50eXBlID09IHRlc3RfZXhwZWN0YXRpb25zLlRJTUVPVVQ6CisgICAgICAgICAg
ICAgICAgc2VsZi51bmV4cGVjdGVkX2NyYXNoZXNfb3JfdGltZW91dHMgKz0gMQpkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVz
dF9pbnB1dC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9w
YWNrYWdlL3Rlc3RfaW5wdXQucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGIwMjdjMDRkMjIwZjVlYTk2NGY5OTNm
NGEyOGJkM2IwOTQwYzZjMQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfaW5wdXQucHkKQEAgLTAsMCArMSw0
NyBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTAgR2Fib3IgUmFw
Y3NhbnlpIChyZ2Fib3JAaW5mLnUtc3plZ2VkLmh1KSwgVW5pdmVyc2l0eSBvZiBTemVnZWQKKyMK
KyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
IyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4K
KyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisKKworY2xhc3MgVGVzdElucHV0OgorICAgICIiIkdyb3VwcyBpbmZv
cm1hdGlvbiBhYm91dCBhIHRlc3QgZm9yIGVhc3kgcGFzc2luZyBvZiBkYXRhLiIiIgorCisgICAg
ZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVuYW1lLCB0aW1lb3V0KToKKyAgICAgICAgIiIiSG9sZHMg
dGhlIGlucHV0IHBhcmFtZXRlcnMgZm9yIGEgdGVzdC4KKyAgICAgICAgQXJnczoKKyAgICAgICAg
ICBmaWxlbmFtZTogRnVsbCBwYXRoIHRvIHRoZSB0ZXN0LgorICAgICAgICAgIHRpbWVvdXQ6IFRp
bWVvdXQgaW4gbXNlY3MgdGhlIGRyaXZlciBzaG91bGQgdXNlIHdoaWxlIHJ1bm5pbmcgdGhlIHRl
c3QKKyAgICAgICAgICAiIiIKKyAgICAgICAgIyBGSVhNRTogZmlsZW5hbWUgc2hvdWxkIHJlYWxs
eSBiZSB0ZXN0X25hbWUgYXMgYSByZWxhdGl2ZSBwYXRoLgorICAgICAgICBzZWxmLmZpbGVuYW1l
ID0gZmlsZW5hbWUKKyAgICAgICAgc2VsZi50aW1lb3V0ID0gdGltZW91dAorICAgICAgICAjIFRo
ZSBpbWFnZV9oYXNoIGlzIHVzZWQgdG8gYXZvaWQgZG9pbmcgYW4gaW1hZ2UgZHVtcCBpZiB0aGUK
KyAgICAgICAgIyBjaGVja3N1bXMgbWF0Y2guIFRoZSBpbWFnZV9oYXNoIGlzIHNldCBsYXRlciwg
YW5kIG9ubHkgaWYgaXQgaXMgbmVlZGVkCisgICAgICAgICMgZm9yIHRoZSB0ZXN0LgorICAgICAg
ICBzZWxmLmltYWdlX2hhc2ggPSBOb25lCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X3J1bm5lci5weSBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfcnVubmVyLnB5
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjI0ZDA0Y2EwMWQxZjExYmExYWIwMzQxYWUxMTc0OTkzNWM4MmEwN2IKLS0t
IC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlv
dXRfcGFja2FnZS90ZXN0X3J1bm5lci5weQpAQCAtMCwwICsxLDEyMTggQEAKKyMhL3Vzci9iaW4v
ZW52IHB5dGhvbgorIyBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDEwIEdhYm9yIFJhcGNzYW55aSAocmdhYm9yQGlu
Zi51LXN6ZWdlZC5odSksIFVuaXZlcnNpdHkgb2YgU3plZ2VkCisjCisjIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisj
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
CisiIiIKK1RoZSBUZXN0UnVubmVyIGNsYXNzIHJ1bnMgYSBzZXJpZXMgb2YgdGVzdHMgKFRlc3RU
eXBlIGludGVyZmFjZSkgYWdhaW5zdCBhIHNldAorb2YgdGVzdCBmaWxlcy4gIElmIGEgdGVzdCBm
aWxlIGZhaWxzIGEgVGVzdFR5cGUsIGl0IHJldHVybnMgYSBsaXN0IFRlc3RGYWlsdXJlCitvYmpl
Y3RzIHRvIHRoZSBUZXN0UnVubmVyLiAgVGhlIFRlc3RSdW5uZXIgdGhlbiBhZ2dyZWdhdGVzIHRo
ZSBUZXN0RmFpbHVyZXMgdG8KK2NyZWF0ZSBhIGZpbmFsIHJlcG9ydC4KKyIiIgorCitmcm9tIF9f
ZnV0dXJlX18gaW1wb3J0IHdpdGhfc3RhdGVtZW50CisKK2ltcG9ydCBjb2RlY3MKK2ltcG9ydCBl
cnJubworaW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCBtYXRoCitpbXBvcnQgb3MKK2ltcG9ydCBRdWV1
ZQoraW1wb3J0IHJhbmRvbQoraW1wb3J0IHNodXRpbAoraW1wb3J0IHN5cworaW1wb3J0IHRpbWUK
KworZnJvbSByZXN1bHRfc3VtbWFyeSBpbXBvcnQgUmVzdWx0U3VtbWFyeQorZnJvbSB0ZXN0X2lu
cHV0IGltcG9ydCBUZXN0SW5wdXQKKworaW1wb3J0IGR1bXBfcmVuZGVyX3RyZWVfdGhyZWFkCitp
bXBvcnQganNvbl9sYXlvdXRfcmVzdWx0c19nZW5lcmF0b3IKK2ltcG9ydCBtZXNzYWdlX2Jyb2tl
cgoraW1wb3J0IHByaW50aW5nCitpbXBvcnQgdGVzdF9leHBlY3RhdGlvbnMKK2ltcG9ydCB0ZXN0
X2ZhaWx1cmVzCitpbXBvcnQgdGVzdF9yZXN1bHRzCitpbXBvcnQgdGVzdF9yZXN1bHRzX3VwbG9h
ZGVyCisKK2Zyb20gd2Via2l0cHkudGhpcmRwYXJ0eSBpbXBvcnQgc2ltcGxlanNvbgorZnJvbSB3
ZWJraXRweS50b29sIGltcG9ydCBncmFtbWFyCisKK19sb2cgPSBsb2dnaW5nLmdldExvZ2dlcigi
d2Via2l0cHkubGF5b3V0X3Rlc3RzLnJ1bl93ZWJraXRfdGVzdHMiKQorCisjIEJ1aWxkZXIgYmFz
ZSBVUkwgd2hlcmUgd2UgaGF2ZSB0aGUgYXJjaGl2ZWQgdGVzdCByZXN1bHRzLgorQlVJTERFUl9C
QVNFX1VSTCA9ICJodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL2J1aWxkYm90L2xheW91dF90ZXN0
X3Jlc3VsdHMvIgorCitMQVlPVVRfVEVTVFNfRElSRUNUT1JZID0gIkxheW91dFRlc3RzIiArIG9z
LnNlcAorCitUZXN0RXhwZWN0YXRpb25zRmlsZSA9IHRlc3RfZXhwZWN0YXRpb25zLlRlc3RFeHBl
Y3RhdGlvbnNGaWxlCisKKworZGVmIHN1bW1hcml6ZV91bmV4cGVjdGVkX3Jlc3VsdHMocG9ydF9v
YmosIGV4cGVjdGF0aW9ucywgcmVzdWx0X3N1bW1hcnksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXRyeV9zdW1tYXJ5KToKKyAgICAiIiJTdW1tYXJpemUgYW55IHVuZXhwZWN0
ZWQgcmVzdWx0cyBhcyBhIGRpY3QuCisKKyAgICBGSVhNRTogc3BsaXQgdGhpcyBkYXRhIHN0cnVj
dHVyZSBpbnRvIGEgc2VwYXJhdGUgY2xhc3M/CisKKyAgICBBcmdzOgorICAgICAgICBwb3J0X29i
ajogaW50ZXJmYWNlIHRvIHBvcnQtc3BlY2lmaWMgaG9va3MKKyAgICAgICAgZXhwZWN0YXRpb25z
OiB0ZXN0X2V4cGVjdGF0aW9ucy5UZXN0RXhwZWN0YXRpb25zIG9iamVjdAorICAgICAgICByZXN1
bHRfc3VtbWFyeTogc3VtbWFyeSBvYmplY3QgZnJvbSBpbml0aWFsIHRlc3QgcnVucworICAgICAg
ICByZXRyeV9zdW1tYXJ5OiBzdW1tYXJ5IG9iamVjdCBmcm9tIGZpbmFsIHRlc3QgcnVuIG9mIHJl
dHJpZWQgdGVzdHMKKyAgICBSZXR1cm5zOgorICAgICAgICBBIGRpY3Rpb25hcnkgY29udGFpbmlu
ZyBhIHN1bW1hcnkgb2YgdGhlIHVuZXhwZWN0ZWQgcmVzdWx0cyBmcm9tIHRoZQorICAgICAgICBy
dW4sIHdpdGggdGhlIGZvbGxvd2luZyBmaWVsZHM6CisgICAgICAgICd2ZXJzaW9uJzogYSB2ZXJz
aW9uIGluZGljYXRvciAoMSBpbiB0aGlzIHZlcnNpb24pCisgICAgICAgICdmaXhhYmxlJzogIyBv
ZiBmaXhhYmxlIHRlc3RzIChOT1cgLSBQQVNTKQorICAgICAgICAnc2tpcHBlZCc6ICMgb2Ygc2tp
cHBlZCB0ZXN0cyAoTk9XICYgU0tJUFBFRCkKKyAgICAgICAgJ251bV9yZWdyZXNzaW9ucyc6ICMg
b2Ygbm9uLWZsYWt5IGZhaWx1cmVzCisgICAgICAgICdudW1fZmxha3knOiAjIG9mIGZsYWt5IGZh
aWx1cmVzCisgICAgICAgICdudW1fcGFzc2VzJzogIyBvZiB1bmV4cGVjdGVkIHBhc3NlcworICAg
ICAgICAndGVzdHMnOiBhIGRpY3Qgb2YgdGVzdHMgLT4geydleHBlY3RlZCc6ICcuLi4nLCAnYWN0
dWFsJzogJy4uLid9CisgICAgIiIiCisgICAgcmVzdWx0cyA9IHt9CisgICAgcmVzdWx0c1sndmVy
c2lvbiddID0gMQorCisgICAgdGJlID0gcmVzdWx0X3N1bW1hcnkudGVzdHNfYnlfZXhwZWN0YXRp
b24KKyAgICB0YnQgPSByZXN1bHRfc3VtbWFyeS50ZXN0c19ieV90aW1lbGluZQorICAgIHJlc3Vs
dHNbJ2ZpeGFibGUnXSA9IGxlbih0YnRbdGVzdF9leHBlY3RhdGlvbnMuTk9XXSAtCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRiZVt0ZXN0X2V4cGVjdGF0aW9ucy5QQVNTXSkKKyAg
ICByZXN1bHRzWydza2lwcGVkJ10gPSBsZW4odGJ0W3Rlc3RfZXhwZWN0YXRpb25zLk5PV10gJgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YmVbdGVzdF9leHBlY3RhdGlvbnMuU0tJ
UF0pCisKKyAgICBudW1fcGFzc2VzID0gMAorICAgIG51bV9mbGFreSA9IDAKKyAgICBudW1fcmVn
cmVzc2lvbnMgPSAwCisgICAga2V5d29yZHMgPSB7fQorICAgIGZvciBrLCB2IGluIFRlc3RFeHBl
Y3RhdGlvbnNGaWxlLkVYUEVDVEFUSU9OUy5pdGVyaXRlbXMoKToKKyAgICAgICAga2V5d29yZHNb
dl0gPSBrLnVwcGVyKCkKKworICAgIHRlc3RzID0ge30KKyAgICBmb3IgZmlsZW5hbWUsIHJlc3Vs
dCBpbiByZXN1bHRfc3VtbWFyeS51bmV4cGVjdGVkX3Jlc3VsdHMuaXRlcml0ZW1zKCk6CisgICAg
ICAgICMgTm90ZSB0aGF0IGlmIGEgdGVzdCBjcmFzaGVkIGluIHRoZSBvcmlnaW5hbCBydW4sIHdl
IGlnbm9yZQorICAgICAgICAjIHdoZXRoZXIgb3Igbm90IGl0IGNyYXNoZWQgd2hlbiB3ZSByZXRy
aWVkIGl0IChpZiB3ZSByZXRyaWVkIGl0KSwKKyAgICAgICAgIyBhbmQgYWx3YXlzIGNvbnNpZGVy
IHRoZSByZXN1bHQgbm90IGZsYWt5LgorICAgICAgICB0ZXN0ID0gcG9ydF9vYmoucmVsYXRpdmVf
dGVzdF9maWxlbmFtZShmaWxlbmFtZSkKKyAgICAgICAgZXhwZWN0ZWQgPSBleHBlY3RhdGlvbnMu
Z2V0X2V4cGVjdGF0aW9uc19zdHJpbmcoZmlsZW5hbWUpCisgICAgICAgIGFjdHVhbCA9IFtrZXl3
b3Jkc1tyZXN1bHRdXQorCisgICAgICAgIGlmIHJlc3VsdCA9PSB0ZXN0X2V4cGVjdGF0aW9ucy5Q
QVNTOgorICAgICAgICAgICAgbnVtX3Bhc3NlcyArPSAxCisgICAgICAgIGVsaWYgcmVzdWx0ID09
IHRlc3RfZXhwZWN0YXRpb25zLkNSQVNIOgorICAgICAgICAgICAgbnVtX3JlZ3Jlc3Npb25zICs9
IDEKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGlmIGZpbGVuYW1lIG5vdCBpbiByZXRyeV9z
dW1tYXJ5LnVuZXhwZWN0ZWRfcmVzdWx0czoKKyAgICAgICAgICAgICAgICBhY3R1YWwuZXh0ZW5k
KGV4cGVjdGF0aW9ucy5nZXRfZXhwZWN0YXRpb25zX3N0cmluZygKKyAgICAgICAgICAgICAgICAg
ICAgZmlsZW5hbWUpLnNwbGl0KCIgIikpCisgICAgICAgICAgICAgICAgbnVtX2ZsYWt5ICs9IDEK
KyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmV0cnlfcmVzdWx0ID0gcmV0cnlf
c3VtbWFyeS51bmV4cGVjdGVkX3Jlc3VsdHNbZmlsZW5hbWVdCisgICAgICAgICAgICAgICAgaWYg
cmVzdWx0ICE9IHJldHJ5X3Jlc3VsdDoKKyAgICAgICAgICAgICAgICAgICAgYWN0dWFsLmFwcGVu
ZChrZXl3b3Jkc1tyZXRyeV9yZXN1bHRdKQorICAgICAgICAgICAgICAgICAgICBudW1fZmxha3kg
Kz0gMQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIG51bV9yZWdy
ZXNzaW9ucyArPSAxCisKKyAgICAgICAgdGVzdHNbdGVzdF0gPSB7fQorICAgICAgICB0ZXN0c1t0
ZXN0XVsnZXhwZWN0ZWQnXSA9IGV4cGVjdGVkCisgICAgICAgIHRlc3RzW3Rlc3RdWydhY3R1YWwn
XSA9ICIgIi5qb2luKGFjdHVhbCkKKworICAgIHJlc3VsdHNbJ3Rlc3RzJ10gPSB0ZXN0cworICAg
IHJlc3VsdHNbJ251bV9wYXNzZXMnXSA9IG51bV9wYXNzZXMKKyAgICByZXN1bHRzWydudW1fZmxh
a3knXSA9IG51bV9mbGFreQorICAgIHJlc3VsdHNbJ251bV9yZWdyZXNzaW9ucyddID0gbnVtX3Jl
Z3Jlc3Npb25zCisKKyAgICByZXR1cm4gcmVzdWx0cworCisKK2NsYXNzIFRlc3RSdW5JbnRlcnJ1
cHRlZEV4Y2VwdGlvbihFeGNlcHRpb24pOgorICAgICIiIlJhaXNlZCB3aGVuIGEgdGVzdCBydW4g
c2hvdWxkIGJlIHN0b3BwZWQgaW1tZWRpYXRlbHkuIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYs
IHJlYXNvbik6CisgICAgICAgIHNlbGYucmVhc29uID0gcmVhc29uCisKKworY2xhc3MgVGVzdFJ1
bm5lcjoKKyAgICAiIiJBIGNsYXNzIGZvciBtYW5hZ2luZyBydW5uaW5nIGEgc2VyaWVzIG9mIHRl
c3RzIG9uIGEgc2VyaWVzIG9mIGxheW91dAorICAgIHRlc3QgZmlsZXMuIiIiCisKKyAgICBIVFRQ
X1NVQkRJUiA9IG9zLnNlcC5qb2luKFsnJywgJ2h0dHAnLCAnJ10pCisgICAgV0VCU09DS0VUX1NV
QkRJUiA9IG9zLnNlcC5qb2luKFsnJywgJ3dlYnNvY2tldCcsICcnXSkKKworICAgICMgVGhlIHBl
ci10ZXN0IHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzLCBpZiBubyAtLXRpbWUtb3V0LW1zIG9wdGlv
biB3YXMKKyAgICAjIGdpdmVuIHRvIHJ1bl93ZWJraXRfdGVzdHMuIFRoaXMgc2hvdWxkIGNvcnJl
c3BvbmQgdG8gdGhlIGRlZmF1bHQgdGltZW91dAorICAgICMgaW4gRHVtcFJlbmRlclRyZWUuCisg
ICAgREVGQVVMVF9URVNUX1RJTUVPVVRfTVMgPSA2ICogMTAwMAorCisgICAgZGVmIF9faW5pdF9f
KHNlbGYsIHBvcnQsIG9wdGlvbnMsIHByaW50ZXIpOgorICAgICAgICAiIiJJbml0aWFsaXplIHRl
c3QgcnVubmVyIGRhdGEgc3RydWN0dXJlcy4KKworICAgICAgICBBcmdzOgorICAgICAgICAgIHBv
cnQ6IGFuIG9iamVjdCBpbXBsZW1lbnRpbmcgcG9ydC1zcGVjaWZpYworICAgICAgICAgIG9wdGlv
bnM6IGEgZGljdGlvbmFyeSBvZiBjb21tYW5kIGxpbmUgb3B0aW9ucworICAgICAgICAgIHByaW50
ZXI6IGEgUHJpbnRlciBvYmplY3QgdG8gcmVjb3JkIHVwZGF0ZXMgdG8uCisgICAgICAgICIiIgor
ICAgICAgICBzZWxmLl9wb3J0ID0gcG9ydAorICAgICAgICBzZWxmLl9vcHRpb25zID0gb3B0aW9u
cworICAgICAgICBzZWxmLl9wcmludGVyID0gcHJpbnRlcgorICAgICAgICBzZWxmLl9tZXNzYWdl
X2Jyb2tlciA9IE5vbmUKKworICAgICAgICAjIGRpc2FibGUgd3NzIHNlcnZlci4gbmVlZCB0byBp
bnN0YWxsIHB5T3BlblNTTCBvbiBidWlsZGJvdHMuCisgICAgICAgICMgc2VsZi5fd2Vic29ja2V0
X3NlY3VyZV9zZXJ2ZXIgPSB3ZWJzb2NrZXRfc2VydmVyLlB5V2ViU29ja2V0KAorICAgICAgICAj
ICAgICAgICBvcHRpb25zLnJlc3VsdHNfZGlyZWN0b3J5LCB1c2VfdGxzPVRydWUsIHBvcnQ9OTMy
MykKKworICAgICAgICAjIGEgc2V0IG9mIHRlc3QgZmlsZXMsIGFuZCB0aGUgc2FtZSB0ZXN0cyBh
cyBhIGxpc3QKKyAgICAgICAgc2VsZi5fdGVzdF9maWxlcyA9IHNldCgpCisgICAgICAgIHNlbGYu
X3Rlc3RfZmlsZXNfbGlzdCA9IE5vbmUKKyAgICAgICAgc2VsZi5fcmVzdWx0X3F1ZXVlID0gUXVl
dWUuUXVldWUoKQorICAgICAgICBzZWxmLl9yZXRyeWluZyA9IEZhbHNlCisKKyAgICBkZWYgY29s
bGVjdF90ZXN0cyhzZWxmLCBhcmdzLCBsYXN0X3VuZXhwZWN0ZWRfcmVzdWx0cyk6CisgICAgICAg
ICIiIkZpbmQgYWxsIHRoZSBmaWxlcyB0byB0ZXN0LgorCisgICAgICAgIEFyZ3M6CisgICAgICAg
ICAgYXJnczogbGlzdCBvZiB0ZXN0IGFyZ3VtZW50cyBmcm9tIHRoZSBjb21tYW5kIGxpbmUKKyAg
ICAgICAgICBsYXN0X3VuZXhwZWN0ZWRfcmVzdWx0czogbGlzdCBvZiB1bmV4cGVjdGVkIHJlc3Vs
dHMgdG8gcmV0ZXN0LCBpZiBhbnkKKworICAgICAgICAiIiIKKyAgICAgICAgcGF0aHMgPSBbc2Vs
Zi5fc3RyaXBfdGVzdF9kaXJfcHJlZml4KGFyZykgZm9yIGFyZyBpbiBhcmdzIGlmIGFyZyBhbmQg
YXJnICE9ICcnXQorICAgICAgICBwYXRocyArPSBsYXN0X3VuZXhwZWN0ZWRfcmVzdWx0cworICAg
ICAgICBpZiBzZWxmLl9vcHRpb25zLnRlc3RfbGlzdDoKKyAgICAgICAgICAgIHBhdGhzICs9IHJl
YWRfdGVzdF9maWxlcyhzZWxmLl9vcHRpb25zLnRlc3RfbGlzdCkKKyAgICAgICAgc2VsZi5fdGVz
dF9maWxlcyA9IHNlbGYuX3BvcnQudGVzdHMocGF0aHMpCisKKyAgICBkZWYgX3N0cmlwX3Rlc3Rf
ZGlyX3ByZWZpeChzZWxmLCBwYXRoKToKKyAgICAgICAgaWYgcGF0aC5zdGFydHN3aXRoKExBWU9V
VF9URVNUU19ESVJFQ1RPUlkpOgorICAgICAgICAgICAgcmV0dXJuIHBhdGhbbGVuKExBWU9VVF9U
RVNUU19ESVJFQ1RPUlkpOl0KKyAgICAgICAgcmV0dXJuIHBhdGgKKworICAgIGRlZiBsaW50KHNl
bGYpOgorICAgICAgICBsaW50X2ZhaWxlZCA9IEZhbHNlCisKKyAgICAgICAgIyBDcmVhdGluZyB0
aGUgZXhwZWNhdGlvbnMgZm9yIGVhY2ggcGxhdGZvcm0vY29uZmlndXJhdGlvbiBwYWlyIGRvZXMK
KyAgICAgICAgIyBhbGwgdGhlIHRlc3QgbGlzdCBwYXJzaW5nIGFuZCBlbnN1cmVzIGl0J3MgY29y
cmVjdCBzeW50YXggKGUuZy4gbm8KKyAgICAgICAgIyBkdXBlcykuCisgICAgICAgIGZvciBwbGF0
Zm9ybV9uYW1lIGluIHNlbGYuX3BvcnQudGVzdF9wbGF0Zm9ybV9uYW1lcygpOgorICAgICAgICAg
ICAgdHJ5OgorICAgICAgICAgICAgICAgIHNlbGYucGFyc2VfZXhwZWN0YXRpb25zKHBsYXRmb3Jt
X25hbWUsIGlzX2RlYnVnX21vZGU9VHJ1ZSkKKyAgICAgICAgICAgIGV4Y2VwdCB0ZXN0X2V4cGVj
dGF0aW9ucy5QYXJzZUVycm9yOgorICAgICAgICAgICAgICAgIGxpbnRfZmFpbGVkID0gVHJ1ZQor
ICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNlbGYucGFyc2VfZXhwZWN0YXRpb25z
KHBsYXRmb3JtX25hbWUsIGlzX2RlYnVnX21vZGU9RmFsc2UpCisgICAgICAgICAgICBleGNlcHQg
dGVzdF9leHBlY3RhdGlvbnMuUGFyc2VFcnJvcjoKKyAgICAgICAgICAgICAgICBsaW50X2ZhaWxl
ZCA9IFRydWUKKworICAgICAgICBzZWxmLl9wcmludGVyLndyaXRlKCIiKQorICAgICAgICBpZiBs
aW50X2ZhaWxlZDoKKyAgICAgICAgICAgIF9sb2cuZXJyb3IoIkxpbnQgZmFpbGVkLiIpCisgICAg
ICAgICAgICByZXR1cm4gLTEKKworICAgICAgICBfbG9nLmluZm8oIkxpbnQgc3VjY2VlZGVkLiIp
CisgICAgICAgIHJldHVybiAwCisKKyAgICBkZWYgcGFyc2VfZXhwZWN0YXRpb25zKHNlbGYsIHRl
c3RfcGxhdGZvcm1fbmFtZSwgaXNfZGVidWdfbW9kZSk6CisgICAgICAgICIiIlBhcnNlIHRoZSBl
eHBlY3RhdGlvbnMgZnJvbSB0aGUgdGVzdF9saXN0IGZpbGVzIGFuZCByZXR1cm4gYSBkYXRhCisg
ICAgICAgIHN0cnVjdHVyZSBob2xkaW5nIHRoZW0uIFRocm93cyBhbiBlcnJvciBpZiB0aGUgdGVz
dF9saXN0IGZpbGVzIGhhdmUKKyAgICAgICAgaW52YWxpZCBzeW50YXguIiIiCisgICAgICAgIGlm
IHNlbGYuX29wdGlvbnMubGludF90ZXN0X2ZpbGVzOgorICAgICAgICAgICAgdGVzdF9maWxlcyA9
IE5vbmUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHRlc3RfZmlsZXMgPSBzZWxmLl90ZXN0
X2ZpbGVzCisKKyAgICAgICAgZXhwZWN0YXRpb25zX3N0ciA9IHNlbGYuX3BvcnQudGVzdF9leHBl
Y3RhdGlvbnMoKQorICAgICAgICBvdmVycmlkZXNfc3RyID0gc2VsZi5fcG9ydC50ZXN0X2V4cGVj
dGF0aW9uc19vdmVycmlkZXMoKQorICAgICAgICBzZWxmLl9leHBlY3RhdGlvbnMgPSB0ZXN0X2V4
cGVjdGF0aW9ucy5UZXN0RXhwZWN0YXRpb25zKAorICAgICAgICAgICAgc2VsZi5fcG9ydCwgdGVz
dF9maWxlcywgZXhwZWN0YXRpb25zX3N0ciwgdGVzdF9wbGF0Zm9ybV9uYW1lLAorICAgICAgICAg
ICAgaXNfZGVidWdfbW9kZSwgc2VsZi5fb3B0aW9ucy5saW50X3Rlc3RfZmlsZXMsCisgICAgICAg
ICAgICBvdmVycmlkZXM9b3ZlcnJpZGVzX3N0cikKKyAgICAgICAgcmV0dXJuIHNlbGYuX2V4cGVj
dGF0aW9ucworCisgICAgZGVmIHByZXBhcmVfbGlzdHNfYW5kX3ByaW50X291dHB1dChzZWxmKToK
KyAgICAgICAgIiIiQ3JlYXRlIGFwcHJvcHJpYXRlIHN1YnNldHMgb2YgdGVzdCBsaXN0cyBhbmQg
cmV0dXJucyBhCisgICAgICAgIFJlc3VsdFN1bW1hcnkgb2JqZWN0LiBBbHNvIHByaW50cyBleHBl
Y3RlZCB0ZXN0IGNvdW50cy4KKyAgICAgICAgIiIiCisKKyAgICAgICAgIyBSZW1vdmUgc2tpcHBl
ZCAtIGJvdGggZml4YWJsZSBhbmQgaWdub3JlZCAtIGZpbGVzIGZyb20gdGhlCisgICAgICAgICMg
dG9wLWxldmVsIGxpc3Qgb2YgZmlsZXMgdG8gdGVzdC4KKyAgICAgICAgbnVtX2FsbF90ZXN0X2Zp
bGVzID0gbGVuKHNlbGYuX3Rlc3RfZmlsZXMpCisgICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRf
ZXhwZWN0ZWQoIkZvdW5kOiAgJWQgdGVzdHMiICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAobGVuKHNlbGYuX3Rlc3RfZmlsZXMpKSkKKyAgICAgICAgaWYgbm90IG51bV9h
bGxfdGVzdF9maWxlczoKKyAgICAgICAgICAgIF9sb2cuY3JpdGljYWwoJ05vIHRlc3RzIHRvIHJ1
bi4nKQorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgICAgICBza2lwcGVkID0gc2V0KCkK
KyAgICAgICAgaWYgbnVtX2FsbF90ZXN0X2ZpbGVzID4gMSBhbmQgbm90IHNlbGYuX29wdGlvbnMu
Zm9yY2U6CisgICAgICAgICAgICBza2lwcGVkID0gc2VsZi5fZXhwZWN0YXRpb25zLmdldF90ZXN0
c193aXRoX3Jlc3VsdF90eXBlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9leHBl
Y3RhdGlvbnMuU0tJUCkKKyAgICAgICAgICAgIHNlbGYuX3Rlc3RfZmlsZXMgLT0gc2tpcHBlZAor
CisgICAgICAgICMgQ3JlYXRlIGEgc29ydGVkIGxpc3Qgb2YgdGVzdCBmaWxlcyBzbyB0aGUgc3Vi
c2V0IGNodW5rLAorICAgICAgICAjIGlmIHVzZWQsIGNvbnRhaW5zIGFscGhhYmV0aWNhbGx5IGNv
bnNlY3V0aXZlIHRlc3RzLgorICAgICAgICBzZWxmLl90ZXN0X2ZpbGVzX2xpc3QgPSBsaXN0KHNl
bGYuX3Rlc3RfZmlsZXMpCisgICAgICAgIGlmIHNlbGYuX29wdGlvbnMucmFuZG9taXplX29yZGVy
OgorICAgICAgICAgICAgcmFuZG9tLnNodWZmbGUoc2VsZi5fdGVzdF9maWxlc19saXN0KQorICAg
ICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5fdGVzdF9maWxlc19saXN0LnNvcnQoKQorCisg
ICAgICAgICMgSWYgdGhlIHVzZXIgc3BlY2lmaWVzIHRoZXkganVzdCB3YW50IHRvIHJ1biBhIHN1
YnNldCBvZiB0aGUgdGVzdHMsCisgICAgICAgICMganVzdCBncmFiIGEgc3Vic2V0IG9mIHRoZSBu
b24tc2tpcHBlZCB0ZXN0cy4KKyAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5ydW5fY2h1bmsgb3Ig
c2VsZi5fb3B0aW9ucy5ydW5fcGFydDoKKyAgICAgICAgICAgIGNodW5rX3ZhbHVlID0gc2VsZi5f
b3B0aW9ucy5ydW5fY2h1bmsgb3Igc2VsZi5fb3B0aW9ucy5ydW5fcGFydAorICAgICAgICAgICAg
dGVzdF9maWxlcyA9IHNlbGYuX3Rlc3RfZmlsZXNfbGlzdAorICAgICAgICAgICAgdHJ5OgorICAg
ICAgICAgICAgICAgIChjaHVua19udW0sIGNodW5rX2xlbikgPSBjaHVua192YWx1ZS5zcGxpdCgi
OiIpCisgICAgICAgICAgICAgICAgY2h1bmtfbnVtID0gaW50KGNodW5rX251bSkKKyAgICAgICAg
ICAgICAgICBhc3NlcnQoY2h1bmtfbnVtID49IDApCisgICAgICAgICAgICAgICAgdGVzdF9zaXpl
ID0gaW50KGNodW5rX2xlbikKKyAgICAgICAgICAgICAgICBhc3NlcnQodGVzdF9zaXplID4gMCkK
KyAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICBfbG9nLmNyaXRpY2FsKCJpbnZh
bGlkIGNodW5rICclcyciICUgY2h1bmtfdmFsdWUpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5v
bmUKKworICAgICAgICAgICAgIyBHZXQgdGhlIG51bWJlciBvZiB0ZXN0cworICAgICAgICAgICAg
bnVtX3Rlc3RzID0gbGVuKHRlc3RfZmlsZXMpCisKKyAgICAgICAgICAgICMgR2V0IHRoZSBzdGFy
dCBvZmZzZXQgb2YgdGhlIHNsaWNlLgorICAgICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5ydW5f
Y2h1bms6CisgICAgICAgICAgICAgICAgY2h1bmtfbGVuID0gdGVzdF9zaXplCisgICAgICAgICAg
ICAgICAgIyBJbiB0aGlzIGNhc2UgY2h1bmtfbnVtIGNhbiBiZSByZWFsbHkgbGFyZ2UuIFdlIG5l
ZWQKKyAgICAgICAgICAgICAgICAjIHRvIG1ha2UgdGhlIHNsYXZlIGZpdCBpbiB0aGUgY3VycmVu
dCBudW1iZXIgb2YgdGVzdHMuCisgICAgICAgICAgICAgICAgc2xpY2Vfc3RhcnQgPSAoY2h1bmtf
bnVtICogY2h1bmtfbGVuKSAlIG51bV90ZXN0cworICAgICAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgICAgICAjIFZhbGlkYXRlIHRoZSBkYXRhLgorICAgICAgICAgICAgICAgIGFzc2VydCh0ZXN0
X3NpemUgPD0gbnVtX3Rlc3RzKQorICAgICAgICAgICAgICAgIGFzc2VydChjaHVua19udW0gPD0g
dGVzdF9zaXplKQorCisgICAgICAgICAgICAgICAgIyBUbyBjb3VudCB0aGUgY2h1bmtfbGVuLCBh
bmQgbWFrZSBzdXJlIHdlIGRvbid0IHNraXAKKyAgICAgICAgICAgICAgICAjIHNvbWUgdGVzdHMs
IHdlIHJvdW5kIHRvIHRoZSBuZXh0IHZhbHVlIHRoYXQgZml0cyBleGFjdGx5CisgICAgICAgICAg
ICAgICAgIyBhbGwgdGhlIHBhcnRzLgorICAgICAgICAgICAgICAgIHJvdW5kZWRfdGVzdHMgPSBu
dW1fdGVzdHMKKyAgICAgICAgICAgICAgICBpZiByb3VuZGVkX3Rlc3RzICUgdGVzdF9zaXplICE9
IDA6CisgICAgICAgICAgICAgICAgICAgIHJvdW5kZWRfdGVzdHMgPSAobnVtX3Rlc3RzICsgdGVz
dF9zaXplIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobnVtX3Rlc3Rz
ICUgdGVzdF9zaXplKSkKKworICAgICAgICAgICAgICAgIGNodW5rX2xlbiA9IHJvdW5kZWRfdGVz
dHMgLyB0ZXN0X3NpemUKKyAgICAgICAgICAgICAgICBzbGljZV9zdGFydCA9IGNodW5rX2xlbiAq
IChjaHVua19udW0gLSAxKQorICAgICAgICAgICAgICAgICMgSXQgZG9lcyBub3QgbWluZCBpZiB3
ZSBnbyBvdmVyIHRlc3Rfc2l6ZS4KKworICAgICAgICAgICAgIyBHZXQgdGhlIGVuZCBvZmZzZXQg
b2YgdGhlIHNsaWNlLgorICAgICAgICAgICAgc2xpY2VfZW5kID0gbWluKG51bV90ZXN0cywgc2xp
Y2Vfc3RhcnQgKyBjaHVua19sZW4pCisKKyAgICAgICAgICAgIGZpbGVzID0gdGVzdF9maWxlc1tz
bGljZV9zdGFydDpzbGljZV9lbmRdCisKKyAgICAgICAgICAgIHRlc3RzX3J1bl9tc2cgPSAnUnVu
bmluZzogJWQgdGVzdHMgKGNodW5rIHNsaWNlIFslZDolZF0gb2YgJWQpJyAlICgKKyAgICAgICAg
ICAgICAgICAoc2xpY2VfZW5kIC0gc2xpY2Vfc3RhcnQpLCBzbGljZV9zdGFydCwgc2xpY2VfZW5k
LCBudW1fdGVzdHMpCisgICAgICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X2V4cGVjdGVkKHRl
c3RzX3J1bl9tc2cpCisKKyAgICAgICAgICAgICMgSWYgd2UgcmVhY2hlZCB0aGUgZW5kIGFuZCB3
ZSBkb24ndCBoYXZlIGVub3VnaCB0ZXN0cywgd2UgcnVuIHNvbWUKKyAgICAgICAgICAgICMgZnJv
bSB0aGUgYmVnaW5uaW5nLgorICAgICAgICAgICAgaWYgc2xpY2VfZW5kIC0gc2xpY2Vfc3RhcnQg
PCBjaHVua19sZW46CisgICAgICAgICAgICAgICAgZXh0cmEgPSBjaHVua19sZW4gLSAoc2xpY2Vf
ZW5kIC0gc2xpY2Vfc3RhcnQpCisgICAgICAgICAgICAgICAgZXh0cmFfbXNnID0gKCcgICBsYXN0
IGNodW5rIGlzIHBhcnRpYWwsIGFwcGVuZGluZyBbMDolZF0nICUKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBleHRyYSkKKyAgICAgICAgICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X2V4
cGVjdGVkKGV4dHJhX21zZykKKyAgICAgICAgICAgICAgICB0ZXN0c19ydW5fbXNnICs9ICJcbiIg
KyBleHRyYV9tc2cKKyAgICAgICAgICAgICAgICBmaWxlcy5leHRlbmQodGVzdF9maWxlc1swOmV4
dHJhXSkKKyAgICAgICAgICAgIHRlc3RzX3J1bl9maWxlbmFtZSA9IG9zLnBhdGguam9pbihzZWxm
Ll9vcHRpb25zLnJlc3VsdHNfZGlyZWN0b3J5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJ0ZXN0c19ydW4udHh0IikKKyAgICAgICAgICAgIHdpdGggY29k
ZWNzLm9wZW4odGVzdHNfcnVuX2ZpbGVuYW1lLCAidyIsICJ1dGYtOCIpIGFzIGZpbGU6CisgICAg
ICAgICAgICAgICAgZmlsZS53cml0ZSh0ZXN0c19ydW5fbXNnICsgIlxuIikKKworICAgICAgICAg
ICAgbGVuX3NraXBfY2h1bmsgPSBpbnQobGVuKGZpbGVzKSAqIGxlbihza2lwcGVkKSAvCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdChsZW4oc2VsZi5fdGVzdF9maWxlcykp
KQorICAgICAgICAgICAgc2tpcF9jaHVua19saXN0ID0gbGlzdChza2lwcGVkKVswOmxlbl9za2lw
X2NodW5rXQorICAgICAgICAgICAgc2tpcF9jaHVuayA9IHNldChza2lwX2NodW5rX2xpc3QpCisK
KyAgICAgICAgICAgICMgVXBkYXRlIGV4cGVjdGF0aW9ucyBzbyB0aGF0IHRoZSBzdGF0cyBhcmUg
Y2FsY3VsYXRlZCBjb3JyZWN0bHkuCisgICAgICAgICAgICAjIFdlIG5lZWQgdG8gcGFzcyBhIGxp
c3QgdGhhdCBpbmNsdWRlcyB0aGUgcmlnaHQgIyBvZiBza2lwcGVkIGZpbGVzCisgICAgICAgICAg
ICAjIHRvIFBhcnNlRXhwZWN0YXRpb25zIHNvIHRoYXQgUmVzdWx0U3VtbWFyeSgpIHdpbGwgZ2V0
IHRoZSBjb3JyZWN0CisgICAgICAgICAgICAjIHN0YXRzLiBTbywgd2UgYWRkIGluIHRoZSBzdWJz
ZXQgb2Ygc2tpcHBlZCBmaWxlcywgYW5kIHRoZW4KKyAgICAgICAgICAgICMgc3VidHJhY3QgdGhl
bSBiYWNrIG91dC4KKyAgICAgICAgICAgIHNlbGYuX3Rlc3RfZmlsZXNfbGlzdCA9IGZpbGVzICsg
c2tpcF9jaHVua19saXN0CisgICAgICAgICAgICBzZWxmLl90ZXN0X2ZpbGVzID0gc2V0KHNlbGYu
X3Rlc3RfZmlsZXNfbGlzdCkKKworICAgICAgICAgICAgc2VsZi5fZXhwZWN0YXRpb25zID0gc2Vs
Zi5wYXJzZV9leHBlY3RhdGlvbnMoCisgICAgICAgICAgICAgICAgc2VsZi5fcG9ydC50ZXN0X3Bs
YXRmb3JtX25hbWUoKSwKKyAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLmNvbmZpZ3VyYXRp
b24gPT0gJ0RlYnVnJykKKworICAgICAgICAgICAgc2VsZi5fdGVzdF9maWxlcyA9IHNldChmaWxl
cykKKyAgICAgICAgICAgIHNlbGYuX3Rlc3RfZmlsZXNfbGlzdCA9IGZpbGVzCisgICAgICAgIGVs
c2U6CisgICAgICAgICAgICBza2lwX2NodW5rID0gc2tpcHBlZAorCisgICAgICAgIHJlc3VsdF9z
dW1tYXJ5ID0gUmVzdWx0U3VtbWFyeShzZWxmLl9leHBlY3RhdGlvbnMsCisgICAgICAgICAgICBz
ZWxmLl90ZXN0X2ZpbGVzIHwgc2tpcF9jaHVuaykKKyAgICAgICAgc2VsZi5fcHJpbnRfZXhwZWN0
ZWRfcmVzdWx0c19vZl90eXBlKHJlc3VsdF9zdW1tYXJ5LAorICAgICAgICAgICAgdGVzdF9leHBl
Y3RhdGlvbnMuUEFTUywgInBhc3NlcyIpCisgICAgICAgIHNlbGYuX3ByaW50X2V4cGVjdGVkX3Jl
c3VsdHNfb2ZfdHlwZShyZXN1bHRfc3VtbWFyeSwKKyAgICAgICAgICAgIHRlc3RfZXhwZWN0YXRp
b25zLkZBSUwsICJmYWlsdXJlcyIpCisgICAgICAgIHNlbGYuX3ByaW50X2V4cGVjdGVkX3Jlc3Vs
dHNfb2ZfdHlwZShyZXN1bHRfc3VtbWFyeSwKKyAgICAgICAgICAgIHRlc3RfZXhwZWN0YXRpb25z
LkZMQUtZLCAiZmxha3kiKQorICAgICAgICBzZWxmLl9wcmludF9leHBlY3RlZF9yZXN1bHRzX29m
X3R5cGUocmVzdWx0X3N1bW1hcnksCisgICAgICAgICAgICB0ZXN0X2V4cGVjdGF0aW9ucy5TS0lQ
LCAic2tpcHBlZCIpCisKKyAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5mb3JjZToKKyAgICAgICAg
ICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfZXhwZWN0ZWQoJ1J1bm5pbmcgYWxsIHRlc3RzLCBpbmNs
dWRpbmcgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2tpcHMg
KC0tZm9yY2UpJykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgTm90ZSB0aGF0IHdlIGRv
bid0IGFjdHVhbGx5IHJ1biB0aGUgc2tpcHBlZCB0ZXN0cyAodGhleSB3ZXJlCisgICAgICAgICAg
ICAjIHN1YnRyYWN0ZWQgb3V0IG9mIHNlbGYuX3Rlc3RfZmlsZXMsIGFib3ZlKSwgYnV0IHdlIHN0
dWIgb3V0IHRoZQorICAgICAgICAgICAgIyByZXN1bHRzIGhlcmUgc28gdGhlIHN0YXRpc3RpY3Mg
Y2FuIHJlbWFpbiBhY2N1cmF0ZS4KKyAgICAgICAgICAgIGZvciB0ZXN0IGluIHNraXBfY2h1bms6
CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gdGVzdF9yZXN1bHRzLlRlc3RSZXN1bHQodGVzdCwK
KyAgICAgICAgICAgICAgICAgICAgZmFpbHVyZXM9W10sIHRlc3RfcnVuX3RpbWU9MCwgdG90YWxf
dGltZV9mb3JfYWxsX2RpZmZzPTAsCisgICAgICAgICAgICAgICAgICAgIHRpbWVfZm9yX2RpZmZz
PTApCisgICAgICAgICAgICAgICAgcmVzdWx0LnR5cGUgPSB0ZXN0X2V4cGVjdGF0aW9ucy5TS0lQ
CisgICAgICAgICAgICAgICAgcmVzdWx0X3N1bW1hcnkuYWRkKHJlc3VsdCwgZXhwZWN0ZWQ9VHJ1
ZSkKKyAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF9leHBlY3RlZCgnJykKKworICAgICAgICBy
ZXR1cm4gcmVzdWx0X3N1bW1hcnkKKworICAgIGRlZiBfZ2V0X2Rpcl9mb3JfdGVzdF9maWxlKHNl
bGYsIHRlc3RfZmlsZSk6CisgICAgICAgICIiIlJldHVybnMgdGhlIGhpZ2hlc3QtbGV2ZWwgZGly
ZWN0b3J5IGJ5IHdoaWNoIHRvIHNoYXJkIHRoZSBnaXZlbgorICAgICAgICB0ZXN0IGZpbGUuIiIi
CisgICAgICAgIGluZGV4ID0gdGVzdF9maWxlLnJmaW5kKG9zLnNlcCArIExBWU9VVF9URVNUU19E
SVJFQ1RPUlkpCisKKyAgICAgICAgdGVzdF9maWxlID0gdGVzdF9maWxlW2luZGV4ICsgbGVuKExB
WU9VVF9URVNUU19ESVJFQ1RPUlkpOl0KKyAgICAgICAgdGVzdF9maWxlX3BhcnRzID0gdGVzdF9m
aWxlLnNwbGl0KG9zLnNlcCwgMSkKKyAgICAgICAgZGlyZWN0b3J5ID0gdGVzdF9maWxlX3BhcnRz
WzBdCisgICAgICAgIHRlc3RfZmlsZSA9IHRlc3RfZmlsZV9wYXJ0c1sxXQorCisgICAgICAgICMg
VGhlIGh0dHAgdGVzdHMgYXJlIHZlcnkgc3RhYmxlIG9uIG1hYy9saW51eC4KKyAgICAgICAgIyBU
T0RPKG9qYW4pOiBNYWtlIHRoZSBodHRwIHNlcnZlciBvbiBXaW5kb3dzIGJlIGFwYWNoZSBzbyB3
ZSBjYW4KKyAgICAgICAgIyB0dXJuIHNoYXJkIHRoZSBodHRwIHRlc3RzIHRoZXJlIGFzIHdlbGwu
IFN3aXRjaGluZyB0byBhcGFjaGUgaXMKKyAgICAgICAgIyB3aGF0IG1hZGUgdGhlbSBzdGFibGUg
b24gbGludXgvbWFjLgorICAgICAgICByZXR1cm5fdmFsdWUgPSBkaXJlY3RvcnkKKyAgICAgICAg
d2hpbGUgKChkaXJlY3RvcnkgIT0gJ2h0dHAnIG9yIHN5cy5wbGF0Zm9ybSBpbiAoJ2Rhcndpbics
ICdsaW51eDInKSkKKyAgICAgICAgICAgICAgICBhbmQgdGVzdF9maWxlLmZpbmQob3Muc2VwKSA+
PSAwKToKKyAgICAgICAgICAgIHRlc3RfZmlsZV9wYXJ0cyA9IHRlc3RfZmlsZS5zcGxpdChvcy5z
ZXAsIDEpCisgICAgICAgICAgICBkaXJlY3RvcnkgPSB0ZXN0X2ZpbGVfcGFydHNbMF0KKyAgICAg
ICAgICAgIHJldHVybl92YWx1ZSA9IG9zLnBhdGguam9pbihyZXR1cm5fdmFsdWUsIGRpcmVjdG9y
eSkKKyAgICAgICAgICAgIHRlc3RfZmlsZSA9IHRlc3RfZmlsZV9wYXJ0c1sxXQorCisgICAgICAg
IHJldHVybiByZXR1cm5fdmFsdWUKKworICAgIGRlZiBfZ2V0X3Rlc3RfaW5wdXRfZm9yX2ZpbGUo
c2VsZiwgdGVzdF9maWxlKToKKyAgICAgICAgIiIiUmV0dXJucyB0aGUgYXBwcm9wcmlhdGUgVGVz
dElucHV0IG9iamVjdCBmb3IgdGhlIGZpbGUuIE1vc3RseSB0aGlzCisgICAgICAgIGlzIHVzZWQg
Zm9yIGxvb2tpbmcgdXAgdGhlIHRpbWVvdXQgdmFsdWUgKGluIG1zKSB0byB1c2UgZm9yIHRoZSBn
aXZlbgorICAgICAgICB0ZXN0LiIiIgorICAgICAgICBpZiBzZWxmLl90ZXN0X2lzX3Nsb3codGVz
dF9maWxlKToKKyAgICAgICAgICAgIHJldHVybiBUZXN0SW5wdXQodGVzdF9maWxlLCBzZWxmLl9v
cHRpb25zLnNsb3dfdGltZV9vdXRfbXMpCisgICAgICAgIHJldHVybiBUZXN0SW5wdXQodGVzdF9m
aWxlLCBzZWxmLl9vcHRpb25zLnRpbWVfb3V0X21zKQorCisgICAgZGVmIF90ZXN0X3JlcXVpcmVz
X2xvY2soc2VsZiwgdGVzdF9maWxlKToKKyAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgdGhlIHRl
c3QgbmVlZHMgdG8gYmUgbG9ja2VkIHdoZW4KKyAgICAgICAgcnVubmluZyBtdWx0aXBsZSBjb3Bp
ZXMgb2YgTlJXVHMuIiIiCisgICAgICAgIHNwbGl0X3BhdGggPSB0ZXN0X2ZpbGUuc3BsaXQob3Mu
c2VwKQorICAgICAgICByZXR1cm4gJ2h0dHAnIGluIHNwbGl0X3BhdGggb3IgJ3dlYnNvY2tldCcg
aW4gc3BsaXRfcGF0aAorCisgICAgZGVmIF90ZXN0X2lzX3Nsb3coc2VsZiwgdGVzdF9maWxlKToK
KyAgICAgICAgcmV0dXJuIHNlbGYuX2V4cGVjdGF0aW9ucy5oYXNfbW9kaWZpZXIodGVzdF9maWxl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2V4
cGVjdGF0aW9ucy5TTE9XKQorCisgICAgZGVmIF9zaGFyZF90ZXN0cyhzZWxmLCB0ZXN0X2ZpbGVz
LCB1c2VfcmVhbF9zaGFyZHMpOgorICAgICAgICAiIiJHcm91cHMgdGVzdHMgaW50byBiYXRjaGVz
LgorICAgICAgICBUaGlzIGhlbHBzIGVuc3VyZSB0aGF0IHRlc3RzIHRoYXQgZGVwZW5kIG9uIGVh
Y2ggb3RoZXIgKGFrYSBiYWQgdGVzdHMhKQorICAgICAgICBjb250aW51ZSB0byBydW4gdG9nZXRo
ZXIgYXMgbW9zdCBjcm9zcy10ZXN0cyBkZXBlbmRlbmNpZXMgdGVuZCB0bworICAgICAgICBvY2N1
ciB3aXRoaW4gdGhlIHNhbWUgZGlyZWN0b3J5LiBJZiB1c2VfcmVhbF9zaGFyZHMgaXMgRmFsc2Us
IHdlCisgICAgICAgIHB1dCBlYWNoIChub24tSFRUUC93ZWJzb2NrZXQpIHRlc3QgaW50byBpdHMg
b3duIHNoYXJkIGZvciBtYXhpbXVtCisgICAgICAgIGNvbmN1cnJlbmN5IGluc3RlYWQgb2YgdHJ5
aW5nIHRvIGRvIGFueSBzb3J0IG9mIHJlYWwgc2hhcmRpbmcuCisKKyAgICAgICAgUmV0dXJuOgor
ICAgICAgICAgICAgQSBsaXN0IG9mIGxpc3RzIG9mIFRlc3RJbnB1dCBvYmplY3RzLgorICAgICAg
ICAiIiIKKyAgICAgICAgIyBGSVhNRTogd2hlbiB3ZSBhZGRlZCBodHRwIGxvY2tpbmcsIHdlIGNo
YW5nZWQgaG93IHRoaXMgd29ya3Mgc3VjaAorICAgICAgICAjIHRoYXQgd2UgYWx3YXlzIGx1bXAg
YWxsIG9mIHRoZSBIVFRQIHRocmVhZHMgaW50byBhIHNpbmdsZSBzaGFyZC4KKyAgICAgICAgIyBU
aGF0IHdpbGwgc2xvdyBkb3duIGV4cGVyaW1lbnRhbC1mdWxseS1wYXJhbGxlbCwgYnV0IGl0J3Mg
dW5jbGVhcgorICAgICAgICAjIHdoYXQgdGhlIGJlc3QgYWx0ZXJuYXRpdmUgaXMgY29tcGxldGVs
eSByZXZhbXBpbmcgaG93IHdlIHRyYWNrCisgICAgICAgICMgd2hlbiB0byBncmFiIHRoZSBsb2Nr
LgorCisgICAgICAgIHRlc3RfbGlzdHMgPSBbXQorICAgICAgICB0ZXN0c190b19odHRwX2xvY2sg
PSBbXQorICAgICAgICBpZiBub3QgdXNlX3JlYWxfc2hhcmRzOgorICAgICAgICAgICAgZm9yIHRl
c3RfZmlsZSBpbiB0ZXN0X2ZpbGVzOgorICAgICAgICAgICAgICAgIHRlc3RfaW5wdXQgPSBzZWxm
Ll9nZXRfdGVzdF9pbnB1dF9mb3JfZmlsZSh0ZXN0X2ZpbGUpCisgICAgICAgICAgICAgICAgaWYg
c2VsZi5fdGVzdF9yZXF1aXJlc19sb2NrKHRlc3RfZmlsZSk6CisgICAgICAgICAgICAgICAgICAg
IHRlc3RzX3RvX2h0dHBfbG9jay5hcHBlbmQodGVzdF9pbnB1dCkKKyAgICAgICAgICAgICAgICBl
bHNlOgorICAgICAgICAgICAgICAgICAgICB0ZXN0X2xpc3RzLmFwcGVuZCgoIi4iLCBbdGVzdF9p
bnB1dF0pKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgdGVzdHNfYnlfZGlyID0ge30KKyAg
ICAgICAgICAgIGZvciB0ZXN0X2ZpbGUgaW4gdGVzdF9maWxlczoKKyAgICAgICAgICAgICAgICBk
aXJlY3RvcnkgPSBzZWxmLl9nZXRfZGlyX2Zvcl90ZXN0X2ZpbGUodGVzdF9maWxlKQorICAgICAg
ICAgICAgICAgIHRlc3RfaW5wdXQgPSBzZWxmLl9nZXRfdGVzdF9pbnB1dF9mb3JfZmlsZSh0ZXN0
X2ZpbGUpCisgICAgICAgICAgICAgICAgaWYgc2VsZi5fdGVzdF9yZXF1aXJlc19sb2NrKHRlc3Rf
ZmlsZSk6CisgICAgICAgICAgICAgICAgICAgIHRlc3RzX3RvX2h0dHBfbG9jay5hcHBlbmQodGVz
dF9pbnB1dCkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICB0ZXN0
c19ieV9kaXIuc2V0ZGVmYXVsdChkaXJlY3RvcnksIFtdKQorICAgICAgICAgICAgICAgICAgICB0
ZXN0c19ieV9kaXJbZGlyZWN0b3J5XS5hcHBlbmQodGVzdF9pbnB1dCkKKyAgICAgICAgICAgICMg
U29ydCBieSB0aGUgbnVtYmVyIG9mIHRlc3RzIGluIHRoZSBkaXIgc28gdGhhdCB0aGUgb25lcyB3
aXRoIHRoZQorICAgICAgICAgICAgIyBtb3N0IHRlc3RzIGdldCBydW4gZmlyc3QgaW4gb3JkZXIg
dG8gbWF4aW1pemUgcGFyYWxsZWxpemF0aW9uLgorICAgICAgICAgICAgIyBOdW1iZXIgb2YgdGVz
dHMgaXMgYSBnb29kIGVub3VnaCwgYnV0IG5vdCBwZXJmZWN0LCBhcHByb3hpbWF0aW9uCisgICAg
ICAgICAgICAjIG9mIGhvdyBsb25nIHRoYXQgc2V0IG9mIHRlc3RzIHdpbGwgdGFrZSB0byBydW4u
IFdlIGNhbid0IGp1c3QgdXNlCisgICAgICAgICAgICAjIGEgUHJpb3JpdHlRdWV1ZSB1bnRpbCB3
ZSBtb3ZlIHRvIFB5dGhvbiAyLjYuCisgICAgICAgICAgICBmb3IgZGlyZWN0b3J5IGluIHRlc3Rz
X2J5X2RpcjoKKyAgICAgICAgICAgICAgICB0ZXN0X2xpc3QgPSB0ZXN0c19ieV9kaXJbZGlyZWN0
b3J5XQorICAgICAgICAgICAgICAgICMgS2VlcCB0aGUgdGVzdHMgaW4gYWxwaGFiZXRpY2FsIG9y
ZGVyLgorICAgICAgICAgICAgICAgICMgRklYTUU6IFJlbW92ZSBvbmNlIHRlc3RzIGFyZSBmaXhl
ZCBzbyB0aGV5IGNhbiBiZSBydW4gaW4gYW55CisgICAgICAgICAgICAgICAgIyBvcmRlci4KKyAg
ICAgICAgICAgICAgICB0ZXN0X2xpc3QucmV2ZXJzZSgpCisgICAgICAgICAgICAgICAgdGVzdF9s
aXN0X3R1cGxlID0gKGRpcmVjdG9yeSwgdGVzdF9saXN0KQorICAgICAgICAgICAgICAgIHRlc3Rf
bGlzdHMuYXBwZW5kKHRlc3RfbGlzdF90dXBsZSkKKyAgICAgICAgICAgIHRlc3RfbGlzdHMuc29y
dChsYW1iZGEgYSwgYjogY21wKGxlbihiWzFdKSwgbGVuKGFbMV0pKSkKKworICAgICAgICAjIFB1
dCB0aGUgaHR0cCB0ZXN0cyBmaXJzdC4gVGhlcmUgYXJlIG9ubHkgYSBjb3VwbGUgaHVuZHJlZCBv
ZiB0aGVtLAorICAgICAgICAjIGJ1dCBlYWNoIGh0dHAgdGVzdCB0YWtlcyBhIHZlcnkgbG9uZyB0
aW1lIHRvIHJ1biwgc28gc29ydGluZyBieSB0aGUKKyAgICAgICAgIyBudW1iZXIgb2YgdGVzdHMg
ZG9lc24ndCBhY2N1cmF0ZWx5IGNhcHR1cmUgaG93IGxvbmcgdGhleSB0YWtlIHRvIHJ1bi4KKyAg
ICAgICAgaWYgdGVzdHNfdG9faHR0cF9sb2NrOgorICAgICAgICAgICAgdGVzdHNfdG9faHR0cF9s
b2NrLnJldmVyc2UoKQorICAgICAgICAgICAgdGVzdF9saXN0cy5pbnNlcnQoMCwgKCJ0ZXN0c190
b19odHRwX2xvY2siLCB0ZXN0c190b19odHRwX2xvY2spKQorCisgICAgICAgIHJldHVybiB0ZXN0
X2xpc3RzCisKKyAgICBkZWYgX2NvbnRhaW5zX3Rlc3RzKHNlbGYsIHN1YmRpcik6CisgICAgICAg
IGZvciB0ZXN0X2ZpbGUgaW4gc2VsZi5fdGVzdF9maWxlczoKKyAgICAgICAgICAgIGlmIHRlc3Rf
ZmlsZS5maW5kKHN1YmRpcikgPj0gMDoKKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAg
ICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBfbnVtX3dvcmtlcnMoc2VsZik6CisgICAgICAg
IHJldHVybiBpbnQoc2VsZi5fb3B0aW9ucy5jaGlsZF9wcm9jZXNzZXMpCisKKyAgICBkZWYgX3J1
bl90ZXN0cyhzZWxmLCBmaWxlX2xpc3QsIHJlc3VsdF9zdW1tYXJ5KToKKyAgICAgICAgIiIiUnVu
cyB0aGUgdGVzdHMgaW4gdGhlIGZpbGVfbGlzdC4KKworICAgICAgICBSZXR1cm46IEEgdHVwbGUg
KGludGVycnVwdGVkLCBrZXlib2FyZF9pbnRlcnJ1cHRlZCwgdGhyZWFkX3RpbWluZ3MsCisgICAg
ICAgICAgICB0ZXN0X3RpbWluZ3MsIGluZGl2aWR1YWxfdGVzdF90aW1pbmdzKQorICAgICAgICAg
ICAgaW50ZXJydXB0ZWQgaXMgd2hldGhlciB0aGUgcnVuIHdhcyBpbnRlcnJ1cHRlZAorICAgICAg
ICAgICAga2V5Ym9hcmRfaW50ZXJydXB0ZWQgaXMgd2hldGhlciB0aGUgaW50ZXJydXB0aW9uIHdh
cyBiZWNhdXNlIHNvbWVvbmUKKyAgICAgICAgICAgICAgdHlwZWQgQ3RybF5DCisgICAgICAgICAg
ICB0aHJlYWRfdGltaW5ncyBpcyBhIGxpc3Qgb2YgZGljdHMgd2l0aCB0aGUgdG90YWwgcnVudGlt
ZQorICAgICAgICAgICAgICBvZiBlYWNoIHRocmVhZCB3aXRoICduYW1lJywgJ251bV90ZXN0cycs
ICd0b3RhbF90aW1lJyBwcm9wZXJ0aWVzCisgICAgICAgICAgICB0ZXN0X3RpbWluZ3MgaXMgYSBs
aXN0IG9mIHRpbWluZ3MgZm9yIGVhY2ggc2hhcmRlZCBzdWJkaXJlY3RvcnkKKyAgICAgICAgICAg
ICAgb2YgdGhlIGZvcm0gW3RpbWUsIGRpcmVjdG9yeV9uYW1lLCBudW1fdGVzdHNdCisgICAgICAg
ICAgICBpbmRpdmlkdWFsX3Rlc3RfdGltaW5ncyBpcyBhIGxpc3Qgb2YgcnVuIHRpbWVzIGZvciBl
YWNoIHRlc3QKKyAgICAgICAgICAgICAgaW4gdGhlIGZvcm0ge2ZpbGVuYW1lOmZpbGVuYW1lLCB0
ZXN0X3J1bl90aW1lOnRlc3RfcnVuX3RpbWV9CisgICAgICAgICAgICByZXN1bHRfc3VtbWFyeTog
c3VtbWFyeSBvYmplY3QgdG8gcG9wdWxhdGUgd2l0aCB0aGUgcmVzdWx0cworICAgICAgICAiIiIK
KworICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X3VwZGF0ZSgnU2hhcmRpbmcgdGVzdHMgLi4u
JykKKyAgICAgICAgbnVtX3dvcmtlcnMgPSBzZWxmLl9udW1fd29ya2VycygpCisgICAgICAgIHRl
c3RfbGlzdHMgPSBzZWxmLl9zaGFyZF90ZXN0cyhmaWxlX2xpc3QsCisgICAgICAgICAgICBudW1f
d29ya2VycyA+IDEgYW5kIG5vdCBzZWxmLl9vcHRpb25zLmV4cGVyaW1lbnRhbF9mdWxseV9wYXJh
bGxlbCkKKyAgICAgICAgZmlsZW5hbWVfcXVldWUgPSBRdWV1ZS5RdWV1ZSgpCisgICAgICAgIGZv
ciBpdGVtIGluIHRlc3RfbGlzdHM6CisgICAgICAgICAgICBmaWxlbmFtZV9xdWV1ZS5wdXQoaXRl
bSkKKworICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X3VwZGF0ZSgnU3RhcnRpbmcgJXMgLi4u
JyAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyYW1tYXIucGx1cmFsaXpl
KCd3b3JrZXInLCBudW1fd29ya2VycykpCisgICAgICAgIHNlbGYuX21lc3NhZ2VfYnJva2VyID0g
bWVzc2FnZV9icm9rZXIuZ2V0KHNlbGYuX3BvcnQsIHNlbGYuX29wdGlvbnMpCisgICAgICAgIGJy
b2tlciA9IHNlbGYuX21lc3NhZ2VfYnJva2VyCisgICAgICAgIHNlbGYuX2N1cnJlbnRfZmlsZW5h
bWVfcXVldWUgPSBmaWxlbmFtZV9xdWV1ZQorICAgICAgICBzZWxmLl9jdXJyZW50X3Jlc3VsdF9z
dW1tYXJ5ID0gcmVzdWx0X3N1bW1hcnkKKworICAgICAgICBpZiBub3Qgc2VsZi5fb3B0aW9ucy5k
cnlfcnVuOgorICAgICAgICAgICAgdGhyZWFkcyA9IGJyb2tlci5zdGFydF93b3JrZXJzKHNlbGYp
CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB0aHJlYWRzID0ge30KKworICAgICAgICBzZWxm
Ll9wcmludGVyLnByaW50X3VwZGF0ZSgiU3RhcnRpbmcgdGVzdGluZyAuLi4iKQorICAgICAgICBr
ZXlib2FyZF9pbnRlcnJ1cHRlZCA9IEZhbHNlCisgICAgICAgIGludGVycnVwdGVkID0gRmFsc2UK
KyAgICAgICAgaWYgbm90IHNlbGYuX29wdGlvbnMuZHJ5X3J1bjoKKyAgICAgICAgICAgIHRyeToK
KyAgICAgICAgICAgICAgICBicm9rZXIucnVuX21lc3NhZ2VfbG9vcCgpCisgICAgICAgICAgICBl
eGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6CisgICAgICAgICAgICAgICAgX2xvZy5pbmZvKCJJbnRl
cnJ1cHRlZCwgZXhpdGluZyIpCisgICAgICAgICAgICAgICAgYnJva2VyLmNhbmNlbF93b3JrZXJz
KCkKKyAgICAgICAgICAgICAgICBrZXlib2FyZF9pbnRlcnJ1cHRlZCA9IFRydWUKKyAgICAgICAg
ICAgICAgICBpbnRlcnJ1cHRlZCA9IFRydWUKKyAgICAgICAgICAgIGV4Y2VwdCBUZXN0UnVuSW50
ZXJydXB0ZWRFeGNlcHRpb24sIGU6CisgICAgICAgICAgICAgICAgX2xvZy5pbmZvKGUucmVhc29u
KQorICAgICAgICAgICAgICAgIGJyb2tlci5jYW5jZWxfd29ya2VycygpCisgICAgICAgICAgICAg
ICAgaW50ZXJydXB0ZWQgPSBUcnVlCisgICAgICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICAg
ICAgIyBVbmV4cGVjdGVkIGV4Y2VwdGlvbjsgZG9uJ3QgdHJ5IHRvIGNsZWFuIHVwIHdvcmtlcnMu
CisgICAgICAgICAgICAgICAgX2xvZy5pbmZvKCJFeGNlcHRpb24gcmFpc2VkLCBleGl0aW5nIikK
KyAgICAgICAgICAgICAgICByYWlzZQorCisgICAgICAgIHRocmVhZF90aW1pbmdzLCB0ZXN0X3Rp
bWluZ3MsIGluZGl2aWR1YWxfdGVzdF90aW1pbmdzID0gXAorICAgICAgICAgICAgc2VsZi5fY29s
bGVjdF90aW1pbmdfaW5mbyh0aHJlYWRzKQorCisgICAgICAgIGJyb2tlci5jbGVhbnVwKCkKKyAg
ICAgICAgc2VsZi5fbWVzc2FnZV9icm9rZXIgPSBOb25lCisgICAgICAgIHJldHVybiAoaW50ZXJy
dXB0ZWQsIGtleWJvYXJkX2ludGVycnVwdGVkLCB0aHJlYWRfdGltaW5ncywgdGVzdF90aW1pbmdz
LAorICAgICAgICAgICAgICAgIGluZGl2aWR1YWxfdGVzdF90aW1pbmdzKQorCisgICAgZGVmIHVw
ZGF0ZShzZWxmKToKKyAgICAgICAgc2VsZi51cGRhdGVfc3VtbWFyeShzZWxmLl9jdXJyZW50X3Jl
c3VsdF9zdW1tYXJ5KQorCisgICAgZGVmIF9jb2xsZWN0X3RpbWluZ19pbmZvKHNlbGYsIHRocmVh
ZHMpOgorICAgICAgICB0ZXN0X3RpbWluZ3MgPSB7fQorICAgICAgICBpbmRpdmlkdWFsX3Rlc3Rf
dGltaW5ncyA9IFtdCisgICAgICAgIHRocmVhZF90aW1pbmdzID0gW10KKworICAgICAgICBmb3Ig
dGhyZWFkIGluIHRocmVhZHM6CisgICAgICAgICAgICB0aHJlYWRfdGltaW5ncy5hcHBlbmQoeydu
YW1lJzogdGhyZWFkLmdldE5hbWUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ251bV90ZXN0cyc6IHRocmVhZC5nZXRfbnVtX3Rlc3RzKCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICd0b3RhbF90aW1lJzogdGhyZWFkLmdldF90b3RhbF90aW1lKCl9
KQorICAgICAgICAgICAgdGVzdF90aW1pbmdzLnVwZGF0ZSh0aHJlYWQuZ2V0X3Rlc3RfZ3JvdXBf
dGltaW5nX3N0YXRzKCkpCisgICAgICAgICAgICBpbmRpdmlkdWFsX3Rlc3RfdGltaW5ncy5leHRl
bmQodGhyZWFkLmdldF90ZXN0X3Jlc3VsdHMoKSkKKworICAgICAgICByZXR1cm4gKHRocmVhZF90
aW1pbmdzLCB0ZXN0X3RpbWluZ3MsIGluZGl2aWR1YWxfdGVzdF90aW1pbmdzKQorCisgICAgZGVm
IG5lZWRzX2h0dHAoc2VsZik6CisgICAgICAgICIiIlJldHVybnMgd2hldGhlciB0aGUgdGVzdCBy
dW5uZXIgbmVlZHMgYW4gSFRUUCBzZXJ2ZXIuIiIiCisgICAgICAgIHJldHVybiBzZWxmLl9jb250
YWluc190ZXN0cyhzZWxmLkhUVFBfU1VCRElSKQorCisgICAgZGVmIG5lZWRzX3dlYnNvY2tldChz
ZWxmKToKKyAgICAgICAgIiIiUmV0dXJucyB3aGV0aGVyIHRoZSB0ZXN0IHJ1bm5lciBuZWVkcyBh
IFdFQlNPQ0tFVCBzZXJ2ZXIuIiIiCisgICAgICAgIHJldHVybiBzZWxmLl9jb250YWluc190ZXN0
cyhzZWxmLldFQlNPQ0tFVF9TVUJESVIpCisKKyAgICBkZWYgc2V0X3VwX3J1bihzZWxmKToKKyAg
ICAgICAgIiIiQ29uZmlndXJlcyB0aGUgc3lzdGVtIHRvIGJlIHJlYWR5IHRvIHJ1biB0ZXN0cy4K
KworICAgICAgICBSZXR1cm5zIGEgUmVzdWx0U3VtbWFyeSBvYmplY3QgaWYgd2Ugc2hvdWxkIGNv
bnRpbnVlIHRvIHJ1biB0ZXN0cywKKyAgICAgICAgb3IgTm9uZSBpZiB3ZSBzaG91bGQgYWJvcnQu
CisKKyAgICAgICAgIiIiCisgICAgICAgICMgVGhpcyBtdXN0IGJlIHN0YXJ0ZWQgYmVmb3JlIHdl
IGNoZWNrIHRoZSBzeXN0ZW0gZGVwZW5kZW5jaWVzLAorICAgICAgICAjIHNpbmNlIHRoZSBoZWxw
ZXIgbWF5IGRvIHRoaW5ncyB0byBtYWtlIHRoZSBzZXR1cCBjb3JyZWN0LgorICAgICAgICBzZWxm
Ll9wcmludGVyLnByaW50X3VwZGF0ZSgiU3RhcnRpbmcgaGVscGVyIC4uLiIpCisgICAgICAgIHNl
bGYuX3BvcnQuc3RhcnRfaGVscGVyKCkKKworICAgICAgICAjIENoZWNrIHRoYXQgdGhlIHN5c3Rl
bSBkZXBlbmRlbmNpZXMgKHRoZW1lcywgZm9udHMsIC4uLikgYXJlIGNvcnJlY3QuCisgICAgICAg
IGlmIG5vdCBzZWxmLl9vcHRpb25zLm5vY2hlY2tfc3lzX2RlcHM6CisgICAgICAgICAgICBzZWxm
Ll9wcmludGVyLnByaW50X3VwZGF0ZSgiQ2hlY2tpbmcgc3lzdGVtIGRlcGVuZGVuY2llcyAuLi4i
KQorICAgICAgICAgICAgaWYgbm90IHNlbGYuX3BvcnQuY2hlY2tfc3lzX2RlcHMoc2VsZi5uZWVk
c19odHRwKCkpOgorICAgICAgICAgICAgICAgIHNlbGYuX3BvcnQuc3RvcF9oZWxwZXIoKQorICAg
ICAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5jbG9i
YmVyX29sZF9yZXN1bHRzOgorICAgICAgICAgICAgc2VsZi5fY2xvYmJlcl9vbGRfcmVzdWx0cygp
CisKKyAgICAgICAgIyBDcmVhdGUgdGhlIG91dHB1dCBkaXJlY3RvcnkgaWYgaXQgZG9lc24ndCBh
bHJlYWR5IGV4aXN0LgorICAgICAgICBzZWxmLl9wb3J0Lm1heWJlX21ha2VfZGlyZWN0b3J5KHNl
bGYuX29wdGlvbnMucmVzdWx0c19kaXJlY3RvcnkpCisKKyAgICAgICAgc2VsZi5fcG9ydC5zZXR1
cF90ZXN0X3J1bigpCisKKyAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF91cGRhdGUoIlByZXBh
cmluZyB0ZXN0cyAuLi4iKQorICAgICAgICByZXN1bHRfc3VtbWFyeSA9IHNlbGYucHJlcGFyZV9s
aXN0c19hbmRfcHJpbnRfb3V0cHV0KCkKKyAgICAgICAgaWYgbm90IHJlc3VsdF9zdW1tYXJ5Ogor
ICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgICAgICByZXR1cm4gcmVzdWx0X3N1bW1hcnkK
KworICAgIGRlZiBydW4oc2VsZiwgcmVzdWx0X3N1bW1hcnkpOgorICAgICAgICAiIiJSdW4gYWxs
IG91ciB0ZXN0cyBvbiBhbGwgb3VyIHRlc3QgZmlsZXMuCisKKyAgICAgICAgRm9yIGVhY2ggdGVz
dCBmaWxlLCB3ZSBydW4gZWFjaCB0ZXN0IHR5cGUuIElmIHRoZXJlIGFyZSBhbnkgZmFpbHVyZXMs
CisgICAgICAgIHdlIGNvbGxlY3QgdGhlbSBmb3IgcmVwb3J0aW5nLgorCisgICAgICAgIEFyZ3M6
CisgICAgICAgICAgcmVzdWx0X3N1bW1hcnk6IGEgc3VtbWFyeSBvYmplY3QgdHJhY2tpbmcgdGhl
IHRlc3QgcmVzdWx0cy4KKworICAgICAgICBSZXR1cm46CisgICAgICAgICAgVGhlIG51bWJlciBv
ZiB1bmV4cGVjdGVkIHJlc3VsdHMgKDAgPT0gc3VjY2VzcykKKyAgICAgICAgIiIiCisgICAgICAg
ICMgZ2F0aGVyX3Rlc3RfZmlsZXMoKSBtdXN0IGhhdmUgYmVlbiBjYWxsZWQgZmlyc3QgdG8gaW5p
dGlhbGl6ZSB1cy4KKyAgICAgICAgIyBJZiB3ZSBkaWRuJ3QgZmluZCBhbnkgZmlsZXMgdG8gdGVz
dCwgd2UndmUgZXJyb3JlZCBvdXQgYWxyZWFkeSBpbgorICAgICAgICAjIHByZXBhcmVfbGlzdHNf
YW5kX3ByaW50X291dHB1dCgpLgorICAgICAgICBhc3NlcnQobGVuKHNlbGYuX3Rlc3RfZmlsZXMp
KQorCisgICAgICAgIHN0YXJ0X3RpbWUgPSB0aW1lLnRpbWUoKQorCisgICAgICAgIGludGVycnVw
dGVkLCBrZXlib2FyZF9pbnRlcnJ1cHRlZCwgdGhyZWFkX3RpbWluZ3MsIHRlc3RfdGltaW5ncywg
XAorICAgICAgICAgICAgaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3MgPSAoCisgICAgICAgICAgICBz
ZWxmLl9ydW5fdGVzdHMoc2VsZi5fdGVzdF9maWxlc19saXN0LCByZXN1bHRfc3VtbWFyeSkpCisK
KyAgICAgICAgIyBXZSBleGNsdWRlIHRoZSBjcmFzaGVzIGZyb20gdGhlIGxpc3Qgb2YgcmVzdWx0
cyB0byByZXRyeSwgYmVjYXVzZQorICAgICAgICAjIHdlIHdhbnQgdG8gdHJlYXQgZXZlbiBhIHBv
dGVudGlhbGx5IGZsYWt5IGNyYXNoIGFzIGFuIGVycm9yLgorICAgICAgICBmYWlsdXJlcyA9IHNl
bGYuX2dldF9mYWlsdXJlcyhyZXN1bHRfc3VtbWFyeSwgaW5jbHVkZV9jcmFzaGVzPUZhbHNlKQor
ICAgICAgICByZXRyeV9zdW1tYXJ5ID0gcmVzdWx0X3N1bW1hcnkKKyAgICAgICAgd2hpbGUgKGxl
bihmYWlsdXJlcykgYW5kIHNlbGYuX29wdGlvbnMucmV0cnlfZmFpbHVyZXMgYW5kCisgICAgICAg
ICAgICBub3Qgc2VsZi5fcmV0cnlpbmcgYW5kIG5vdCBpbnRlcnJ1cHRlZCk6CisgICAgICAgICAg
ICBfbG9nLmluZm8oJycpCisgICAgICAgICAgICBfbG9nLmluZm8oIlJldHJ5aW5nICVkIHVuZXhw
ZWN0ZWQgZmFpbHVyZShzKSAuLi4iICUgbGVuKGZhaWx1cmVzKSkKKyAgICAgICAgICAgIF9sb2cu
aW5mbygnJykKKyAgICAgICAgICAgIHNlbGYuX3JldHJ5aW5nID0gVHJ1ZQorICAgICAgICAgICAg
cmV0cnlfc3VtbWFyeSA9IFJlc3VsdFN1bW1hcnkoc2VsZi5fZXhwZWN0YXRpb25zLCBmYWlsdXJl
cy5rZXlzKCkpCisgICAgICAgICAgICAjIE5vdGUgdGhhdCB3ZSBpbnRlbnRpb25hbGx5IGlnbm9y
ZSB0aGUgcmV0dXJuIHZhbHVlIGhlcmUuCisgICAgICAgICAgICBzZWxmLl9ydW5fdGVzdHMoZmFp
bHVyZXMua2V5cygpLCByZXRyeV9zdW1tYXJ5KQorICAgICAgICAgICAgZmFpbHVyZXMgPSBzZWxm
Ll9nZXRfZmFpbHVyZXMocmV0cnlfc3VtbWFyeSwgaW5jbHVkZV9jcmFzaGVzPVRydWUpCisKKyAg
ICAgICAgZW5kX3RpbWUgPSB0aW1lLnRpbWUoKQorCisgICAgICAgIHNlbGYuX3ByaW50X3RpbWlu
Z19zdGF0aXN0aWNzKGVuZF90aW1lIC0gc3RhcnRfdGltZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGhyZWFkX3RpbWluZ3MsIHRlc3RfdGltaW5ncywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3MsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdF9zdW1tYXJ5KQorCisg
ICAgICAgIHNlbGYuX3ByaW50X3Jlc3VsdF9zdW1tYXJ5KHJlc3VsdF9zdW1tYXJ5KQorCisgICAg
ICAgIHN5cy5zdGRvdXQuZmx1c2goKQorICAgICAgICBzeXMuc3RkZXJyLmZsdXNoKCkKKworICAg
ICAgICBzZWxmLl9wcmludGVyLnByaW50X29uZV9saW5lX3N1bW1hcnkocmVzdWx0X3N1bW1hcnku
dG90YWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1
bHRfc3VtbWFyeS5leHBlY3RlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJlc3VsdF9zdW1tYXJ5LnVuZXhwZWN0ZWQpCisKKyAgICAgICAgdW5leHBlY3Rl
ZF9yZXN1bHRzID0gc3VtbWFyaXplX3VuZXhwZWN0ZWRfcmVzdWx0cyhzZWxmLl9wb3J0LAorICAg
ICAgICAgICAgc2VsZi5fZXhwZWN0YXRpb25zLCByZXN1bHRfc3VtbWFyeSwgcmV0cnlfc3VtbWFy
eSkKKyAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF91bmV4cGVjdGVkX3Jlc3VsdHModW5leHBl
Y3RlZF9yZXN1bHRzKQorCisgICAgICAgIGlmIChzZWxmLl9vcHRpb25zLnJlY29yZF9yZXN1bHRz
IGFuZCBub3Qgc2VsZi5fb3B0aW9ucy5kcnlfcnVuIGFuZAorICAgICAgICAgICAgbm90IGludGVy
cnVwdGVkKToKKyAgICAgICAgICAgICMgV3JpdGUgdGhlIHNhbWUgZGF0YSB0byBsb2cgZmlsZXMg
YW5kIHVwbG9hZCBnZW5lcmF0ZWQgSlNPTiBmaWxlcworICAgICAgICAgICAgIyB0byBhcHBlbmdp
bmUgc2VydmVyLgorICAgICAgICAgICAgc2VsZi5fdXBsb2FkX2pzb25fZmlsZXModW5leHBlY3Rl
ZF9yZXN1bHRzLCByZXN1bHRfc3VtbWFyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGluZGl2aWR1YWxfdGVzdF90aW1pbmdzKQorCisgICAgICAgICMgV3JpdGUgdGhlIHN1
bW1hcnkgdG8gZGlzayAocmVzdWx0cy5odG1sKSBhbmQgZGlzcGxheSBpdCBpZiByZXF1ZXN0ZWQu
CisgICAgICAgIGlmIG5vdCBzZWxmLl9vcHRpb25zLmRyeV9ydW46CisgICAgICAgICAgICB3cm90
ZV9yZXN1bHRzID0gc2VsZi5fd3JpdGVfcmVzdWx0c19odG1sX2ZpbGUocmVzdWx0X3N1bW1hcnkp
CisgICAgICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnNob3dfcmVzdWx0cyBhbmQgd3JvdGVfcmVz
dWx0czoKKyAgICAgICAgICAgICAgICBzZWxmLl9zaG93X3Jlc3VsdHNfaHRtbF9maWxlKCkKKwor
ICAgICAgICAjIE5vdyB0aGF0IHdlJ3ZlIGNvbXBsZXRlZCBhbGwgdGhlIHByb2Nlc3Npbmcgd2Ug
Y2FuLCB3ZSByZS1yYWlzZQorICAgICAgICAjIGEgS2V5Ym9hcmRJbnRlcnJ1cHQgaWYgbmVjZXNz
YXJ5IHNvIHRoZSBjYWxsZXIgY2FuIGhhbmRsZSBpdC4KKyAgICAgICAgaWYga2V5Ym9hcmRfaW50
ZXJydXB0ZWQ6CisgICAgICAgICAgICByYWlzZSBLZXlib2FyZEludGVycnVwdAorCisgICAgICAg
ICMgSWdub3JlIGZsYWt5IGZhaWx1cmVzIGFuZCB1bmV4cGVjdGVkIHBhc3NlcyBzbyB3ZSBkb24n
dCB0dXJuIHRoZQorICAgICAgICAjIGJvdCByZWQgZm9yIHRob3NlLgorICAgICAgICByZXR1cm4g
dW5leHBlY3RlZF9yZXN1bHRzWydudW1fcmVncmVzc2lvbnMnXQorCisgICAgZGVmIGNsZWFuX3Vw
X3J1bihzZWxmKToKKyAgICAgICAgIiIiUmVzdG9yZXMgdGhlIHN5c3RlbSBhZnRlciB3ZSdyZSBk
b25lIHJ1bm5pbmcgdGVzdHMuIiIiCisKKyAgICAgICAgX2xvZy5kZWJ1ZygiZmx1c2hpbmcgc3Rk
b3V0IikKKyAgICAgICAgc3lzLnN0ZG91dC5mbHVzaCgpCisgICAgICAgIF9sb2cuZGVidWcoImZs
dXNoaW5nIHN0ZGVyciIpCisgICAgICAgIHN5cy5zdGRlcnIuZmx1c2goKQorICAgICAgICBfbG9n
LmRlYnVnKCJzdG9wcGluZyBoZWxwZXIiKQorICAgICAgICBzZWxmLl9wb3J0LnN0b3BfaGVscGVy
KCkKKworICAgIGRlZiB1cGRhdGVfc3VtbWFyeShzZWxmLCByZXN1bHRfc3VtbWFyeSk6CisgICAg
ICAgICIiIlVwZGF0ZSB0aGUgc3VtbWFyeSBhbmQgcHJpbnQgcmVzdWx0cyB3aXRoIGFueSBjb21w
bGV0ZWQgdGVzdHMuIiIiCisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICB0cnk6Cisg
ICAgICAgICAgICAgICAgcmVzdWx0ID0gdGVzdF9yZXN1bHRzLlRlc3RSZXN1bHQubG9hZHMoc2Vs
Zi5fcmVzdWx0X3F1ZXVlLmdldF9ub3dhaXQoKSkKKyAgICAgICAgICAgIGV4Y2VwdCBRdWV1ZS5F
bXB0eToKKyAgICAgICAgICAgICAgICByZXR1cm4KKworICAgICAgICAgICAgZXhwZWN0ZWQgPSBz
ZWxmLl9leHBlY3RhdGlvbnMubWF0Y2hlc19hbl9leHBlY3RlZF9yZXN1bHQoCisgICAgICAgICAg
ICAgICAgcmVzdWx0LmZpbGVuYW1lLCByZXN1bHQudHlwZSwgc2VsZi5fb3B0aW9ucy5waXhlbF90
ZXN0cykKKyAgICAgICAgICAgIHJlc3VsdF9zdW1tYXJ5LmFkZChyZXN1bHQsIGV4cGVjdGVkKQor
ICAgICAgICAgICAgZXhwX3N0ciA9IHNlbGYuX2V4cGVjdGF0aW9ucy5nZXRfZXhwZWN0YXRpb25z
X3N0cmluZygKKyAgICAgICAgICAgICAgICByZXN1bHQuZmlsZW5hbWUpCisgICAgICAgICAgICBn
b3Rfc3RyID0gc2VsZi5fZXhwZWN0YXRpb25zLmV4cGVjdGF0aW9uX3RvX3N0cmluZyhyZXN1bHQu
dHlwZSkKKyAgICAgICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfdGVzdF9yZXN1bHQocmVzdWx0
LCBleHBlY3RlZCwgZXhwX3N0ciwgZ290X3N0cikKKyAgICAgICAgICAgIHNlbGYuX3ByaW50ZXIu
cHJpbnRfcHJvZ3Jlc3MocmVzdWx0X3N1bW1hcnksIHNlbGYuX3JldHJ5aW5nLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl90ZXN0X2ZpbGVzX2xpc3QpCisK
KyAgICAgICAgICAgIGRlZiBpbnRlcnJ1cHRfaWZfYXRfZmFpbHVyZV9saW1pdChsaW1pdCwgY291
bnQsIG1lc3NhZ2UpOgorICAgICAgICAgICAgICAgIGlmIGxpbWl0IGFuZCBjb3VudCA+PSBsaW1p
dDoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgVGVzdFJ1bkludGVycnVwdGVkRXhjZXB0aW9u
KG1lc3NhZ2UgJSBjb3VudCkKKworICAgICAgICAgICAgaW50ZXJydXB0X2lmX2F0X2ZhaWx1cmVf
bGltaXQoCisgICAgICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5leGl0X2FmdGVyX25fZmFpbHVy
ZXMsCisgICAgICAgICAgICAgICAgcmVzdWx0X3N1bW1hcnkudW5leHBlY3RlZF9mYWlsdXJlcywK
KyAgICAgICAgICAgICAgICAiQWJvcnRpbmcgcnVuIHNpbmNlICVkIGZhaWx1cmVzIHdlcmUgcmVh
Y2hlZCIpCisgICAgICAgICAgICBpbnRlcnJ1cHRfaWZfYXRfZmFpbHVyZV9saW1pdCgKKyAgICAg
ICAgICAgICAgICBzZWxmLl9vcHRpb25zLmV4aXRfYWZ0ZXJfbl9jcmFzaGVzX29yX3RpbWVvdXRz
LAorICAgICAgICAgICAgICAgIHJlc3VsdF9zdW1tYXJ5LnVuZXhwZWN0ZWRfY3Jhc2hlc19vcl90
aW1lb3V0cywKKyAgICAgICAgICAgICAgICAiQWJvcnRpbmcgcnVuIHNpbmNlICVkIGNyYXNoZXMg
b3IgdGltZW91dHMgd2VyZSByZWFjaGVkIikKKworICAgIGRlZiBfY2xvYmJlcl9vbGRfcmVzdWx0
cyhzZWxmKToKKyAgICAgICAgIyBKdXN0IGNsb2JiZXIgdGhlIGFjdHVhbCB0ZXN0IHJlc3VsdHMg
ZGlyZWN0b3JpZXMgc2luY2UgdGhlIG90aGVyCisgICAgICAgICMgZmlsZXMgaW4gdGhlIHJlc3Vs
dHMgZGlyZWN0b3J5IGFyZSBleHBsaWNpdGx5IHVzZWQgZm9yIGNyb3NzLXJ1bgorICAgICAgICAj
IHRyYWNraW5nLgorICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X3VwZGF0ZSgiQ2xvYmJlcmlu
ZyBvbGQgcmVzdWx0cyBpbiAlcyIgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZWxmLl9vcHRpb25zLnJlc3VsdHNfZGlyZWN0b3J5KQorICAgICAgICBsYXlvdXRfdGVzdHNf
ZGlyID0gc2VsZi5fcG9ydC5sYXlvdXRfdGVzdHNfZGlyKCkKKyAgICAgICAgcG9zc2libGVfZGly
cyA9IHNlbGYuX3BvcnQudGVzdF9kaXJzKCkKKyAgICAgICAgZm9yIGRpcm5hbWUgaW4gcG9zc2li
bGVfZGlyczoKKyAgICAgICAgICAgIGlmIG9zLnBhdGguaXNkaXIob3MucGF0aC5qb2luKGxheW91
dF90ZXN0c19kaXIsIGRpcm5hbWUpKToKKyAgICAgICAgICAgICAgICBzaHV0aWwucm10cmVlKG9z
LnBhdGguam9pbihzZWxmLl9vcHRpb25zLnJlc3VsdHNfZGlyZWN0b3J5LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcm5hbWUpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWdub3JlX2Vycm9ycz1UcnVlKQorCisgICAgZGVmIF9nZXRfZmFpbHVy
ZXMoc2VsZiwgcmVzdWx0X3N1bW1hcnksIGluY2x1ZGVfY3Jhc2hlcyk6CisgICAgICAgICIiIkZp
bHRlcnMgYSBkaWN0IG9mIHJlc3VsdHMgYW5kIHJldHVybnMgb25seSB0aGUgZmFpbHVyZXMuCisK
KyAgICAgICAgQXJnczoKKyAgICAgICAgICByZXN1bHRfc3VtbWFyeTogdGhlIHJlc3VsdHMgb2Yg
dGhlIHRlc3QgcnVuCisgICAgICAgICAgaW5jbHVkZV9jcmFzaGVzOiB3aGV0aGVyIGNyYXNoZXMg
YXJlIGluY2x1ZGVkIGluIHRoZSBvdXRwdXQuCisgICAgICAgICAgICBXZSB1c2UgRmFsc2Ugd2hl
biBmaW5kaW5nIHRoZSBsaXN0IG9mIGZhaWx1cmVzIHRvIHJldHJ5CisgICAgICAgICAgICB0byBz
ZWUgaWYgdGhlIHJlc3VsdHMgd2VyZSBmbGFreS4gQWx0aG91Z2ggdGhlIGNyYXNoZXMgbWF5IGFs
c28gYmUKKyAgICAgICAgICAgIGZsYWt5LCB3ZSB0cmVhdCB0aGVtIGFzIGlmIHRoZXkgYXJlbid0
IHNvIHRoYXQgdGhleSdyZSBub3QgaWdub3JlZC4KKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAg
ICBhIGRpY3Qgb2YgZmlsZXMgLT4gcmVzdWx0cworICAgICAgICAiIiIKKyAgICAgICAgZmFpbGVk
X3Jlc3VsdHMgPSB7fQorICAgICAgICBmb3IgdGVzdCwgcmVzdWx0IGluIHJlc3VsdF9zdW1tYXJ5
LnVuZXhwZWN0ZWRfcmVzdWx0cy5pdGVyaXRlbXMoKToKKyAgICAgICAgICAgIGlmIChyZXN1bHQg
PT0gdGVzdF9leHBlY3RhdGlvbnMuUEFTUyBvcgorICAgICAgICAgICAgICAgIHJlc3VsdCA9PSB0
ZXN0X2V4cGVjdGF0aW9ucy5DUkFTSCBhbmQgbm90IGluY2x1ZGVfY3Jhc2hlcyk6CisgICAgICAg
ICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGZhaWxlZF9yZXN1bHRzW3Rlc3RdID0gcmVz
dWx0CisKKyAgICAgICAgcmV0dXJuIGZhaWxlZF9yZXN1bHRzCisKKyAgICBkZWYgX3VwbG9hZF9q
c29uX2ZpbGVzKHNlbGYsIHVuZXhwZWN0ZWRfcmVzdWx0cywgcmVzdWx0X3N1bW1hcnksCisgICAg
ICAgICAgICAgICAgICAgICAgICBpbmRpdmlkdWFsX3Rlc3RfdGltaW5ncyk6CisgICAgICAgICIi
IldyaXRlcyB0aGUgcmVzdWx0cyBvZiB0aGUgdGVzdCBydW4gYXMgSlNPTiBmaWxlcyBpbnRvIHRo
ZSByZXN1bHRzCisgICAgICAgIGRpciBhbmQgdXBsb2FkIHRoZSBmaWxlcyB0byB0aGUgYXBwZW5n
aW5lIHNlcnZlci4KKworICAgICAgICBUaGVyZSBhcmUgdGhyZWUgZGlmZmVyZW50IGZpbGVzIHdy
aXR0ZW4gaW50byB0aGUgcmVzdWx0cyBkaXI6CisgICAgICAgICAgdW5leHBlY3RlZF9yZXN1bHRz
Lmpzb246IEEgc2hvcnQgbGlzdCBvZiBhbnkgdW5leHBlY3RlZCByZXN1bHRzLgorICAgICAgICAg
ICAgVGhpcyBpcyB1c2VkIGJ5IHRoZSBidWlsZGJvdHMgdG8gZGlzcGxheSByZXN1bHRzLgorICAg
ICAgICAgIGV4cGVjdGF0aW9ucy5qc29uOiBUaGlzIGlzIHVzZWQgYnkgdGhlIGZsYWtpbmVzcyBk
YXNoYm9hcmQuCisgICAgICAgICAgcmVzdWx0cy5qc29uOiBBIGZ1bGwgbGlzdCBvZiB0aGUgcmVz
dWx0cyAtIHVzZWQgYnkgdGhlIGZsYWtpbmVzcworICAgICAgICAgICAgZGFzaGJvYXJkIGFuZCB0
aGUgYWdncmVnYXRlIHJlc3VsdHMgZGFzaGJvYXJkLgorCisgICAgICAgIEFyZ3M6CisgICAgICAg
ICAgdW5leHBlY3RlZF9yZXN1bHRzOiBkaWN0IG9mIHVuZXhwZWN0ZWQgcmVzdWx0cworICAgICAg
ICAgIHJlc3VsdF9zdW1tYXJ5OiBmdWxsIHN1bW1hcnkgb2JqZWN0CisgICAgICAgICAgaW5kaXZp
ZHVhbF90ZXN0X3RpbWluZ3M6IGxpc3Qgb2YgdGVzdCB0aW1lcyAodXNlZCBieSB0aGUgZmxha2lu
ZXNzCisgICAgICAgICAgICBkYXNoYm9hcmQpLgorICAgICAgICAiIiIKKyAgICAgICAgcmVzdWx0
c19kaXJlY3RvcnkgPSBzZWxmLl9vcHRpb25zLnJlc3VsdHNfZGlyZWN0b3J5CisgICAgICAgIF9s
b2cuZGVidWcoIldyaXRpbmcgSlNPTiBmaWxlcyBpbiAlcy4iICUgcmVzdWx0c19kaXJlY3Rvcnkp
CisgICAgICAgIHVuZXhwZWN0ZWRfanNvbl9wYXRoID0gb3MucGF0aC5qb2luKHJlc3VsdHNfZGly
ZWN0b3J5LCAidW5leHBlY3RlZF9yZXN1bHRzLmpzb24iKQorICAgICAgICB3aXRoIGNvZGVjcy5v
cGVuKHVuZXhwZWN0ZWRfanNvbl9wYXRoLCAidyIsICJ1dGYtOCIpIGFzIGZpbGU6CisgICAgICAg
ICAgICBzaW1wbGVqc29uLmR1bXAodW5leHBlY3RlZF9yZXN1bHRzLCBmaWxlLCBzb3J0X2tleXM9
VHJ1ZSwgaW5kZW50PTIpCisKKyAgICAgICAgIyBXcml0ZSBhIGpzb24gZmlsZSBvZiB0aGUgdGVz
dF9leHBlY3RhdGlvbnMudHh0IGZpbGUgZm9yIHRoZSBsYXlvdXQKKyAgICAgICAgIyB0ZXN0cyBk
YXNoYm9hcmQuCisgICAgICAgIGV4cGVjdGF0aW9uc19wYXRoID0gb3MucGF0aC5qb2luKHJlc3Vs
dHNfZGlyZWN0b3J5LCAiZXhwZWN0YXRpb25zLmpzb24iKQorICAgICAgICBleHBlY3RhdGlvbnNf
anNvbiA9IFwKKyAgICAgICAgICAgIHNlbGYuX2V4cGVjdGF0aW9ucy5nZXRfZXhwZWN0YXRpb25z
X2pzb25fZm9yX2FsbF9wbGF0Zm9ybXMoKQorICAgICAgICB3aXRoIGNvZGVjcy5vcGVuKGV4cGVj
dGF0aW9uc19wYXRoLCAidyIsICJ1dGYtOCIpIGFzIGZpbGU6CisgICAgICAgICAgICBmaWxlLndy
aXRlKHUiQUREX0VYUEVDVEFUSU9OUyglcyk7IiAlIGV4cGVjdGF0aW9uc19qc29uKQorCisgICAg
ICAgIGdlbmVyYXRvciA9IGpzb25fbGF5b3V0X3Jlc3VsdHNfZ2VuZXJhdG9yLkpTT05MYXlvdXRS
ZXN1bHRzR2VuZXJhdG9yKAorICAgICAgICAgICAgc2VsZi5fcG9ydCwgc2VsZi5fb3B0aW9ucy5i
dWlsZGVyX25hbWUsIHNlbGYuX29wdGlvbnMuYnVpbGRfbmFtZSwKKyAgICAgICAgICAgIHNlbGYu
X29wdGlvbnMuYnVpbGRfbnVtYmVyLCBzZWxmLl9vcHRpb25zLnJlc3VsdHNfZGlyZWN0b3J5LAor
ICAgICAgICAgICAgQlVJTERFUl9CQVNFX1VSTCwgaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3MsCisg
ICAgICAgICAgICBzZWxmLl9leHBlY3RhdGlvbnMsIHJlc3VsdF9zdW1tYXJ5LCBzZWxmLl90ZXN0
X2ZpbGVzX2xpc3QsCisgICAgICAgICAgICBub3Qgc2VsZi5fb3B0aW9ucy51cGxvYWRfZnVsbF9y
ZXN1bHRzLAorICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy50ZXN0X3Jlc3VsdHNfc2VydmVyLAor
ICAgICAgICAgICAgImxheW91dC10ZXN0cyIsCisgICAgICAgICAgICBzZWxmLl9vcHRpb25zLm1h
c3Rlcl9uYW1lKQorCisgICAgICAgIF9sb2cuZGVidWcoIkZpbmlzaGVkIHdyaXRpbmcgSlNPTiBm
aWxlcy4iKQorCisgICAgICAgIGpzb25fZmlsZXMgPSBbImV4cGVjdGF0aW9ucy5qc29uIl0KKyAg
ICAgICAgaWYgc2VsZi5fb3B0aW9ucy51cGxvYWRfZnVsbF9yZXN1bHRzOgorICAgICAgICAgICAg
anNvbl9maWxlcy5hcHBlbmQoInJlc3VsdHMuanNvbiIpCisgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICBqc29uX2ZpbGVzLmFwcGVuZCgiaW5jcmVtZW50YWxfcmVzdWx0cy5qc29uIikKKworICAg
ICAgICBnZW5lcmF0b3IudXBsb2FkX2pzb25fZmlsZXMoanNvbl9maWxlcykKKworICAgIGRlZiBf
cHJpbnRfY29uZmlnKHNlbGYpOgorICAgICAgICAiIiJQcmludHMgdGhlIGNvbmZpZ3VyYXRpb24g
Zm9yIHRoZSB0ZXN0IHJ1bi4iIiIKKyAgICAgICAgcCA9IHNlbGYuX3ByaW50ZXIKKyAgICAgICAg
cC5wcmludF9jb25maWcoIlVzaW5nIHBvcnQgJyVzJyIgJSBzZWxmLl9wb3J0Lm5hbWUoKSkKKyAg
ICAgICAgcC5wcmludF9jb25maWcoIlBsYWNpbmcgdGVzdCByZXN1bHRzIGluICVzIiAlCisgICAg
ICAgICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMucmVzdWx0c19kaXJlY3RvcnkpCisgICAg
ICAgIGlmIHNlbGYuX29wdGlvbnMubmV3X2Jhc2VsaW5lOgorICAgICAgICAgICAgcC5wcmludF9j
b25maWcoIlBsYWNpbmcgbmV3IGJhc2VsaW5lcyBpbiAlcyIgJQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2VsZi5fcG9ydC5iYXNlbGluZV9wYXRoKCkpCisgICAgICAgIHAucHJpbnRfY29u
ZmlnKCJVc2luZyAlcyBidWlsZCIgJSBzZWxmLl9vcHRpb25zLmNvbmZpZ3VyYXRpb24pCisgICAg
ICAgIGlmIHNlbGYuX29wdGlvbnMucGl4ZWxfdGVzdHM6CisgICAgICAgICAgICBwLnByaW50X2Nv
bmZpZygiUGl4ZWwgdGVzdHMgZW5hYmxlZCIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBw
LnByaW50X2NvbmZpZygiUGl4ZWwgdGVzdHMgZGlzYWJsZWQiKQorCisgICAgICAgIHAucHJpbnRf
Y29uZmlnKCJSZWd1bGFyIHRpbWVvdXQ6ICVzLCBzbG93IHRlc3QgdGltZW91dDogJXMiICUKKyAg
ICAgICAgICAgICAgICAgICAgICAgKHNlbGYuX29wdGlvbnMudGltZV9vdXRfbXMsCisgICAgICAg
ICAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLnNsb3dfdGltZV9vdXRfbXMpKQorCisgICAg
ICAgIGlmIHNlbGYuX251bV93b3JrZXJzKCkgPT0gMToKKyAgICAgICAgICAgIHAucHJpbnRfY29u
ZmlnKCJSdW5uaW5nIG9uZSAlcyIgJSBzZWxmLl9wb3J0LmRyaXZlcl9uYW1lKCkpCisgICAgICAg
IGVsc2U6CisgICAgICAgICAgICBwLnByaW50X2NvbmZpZygiUnVubmluZyAlcyAlc3MgaW4gcGFy
YWxsZWwiICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxmLl9vcHRpb25zLmNoaWxk
X3Byb2Nlc3NlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9wb3J0LmRyaXZl
cl9uYW1lKCkpKQorICAgICAgICBwLnByaW50X2NvbmZpZygnQ29tbWFuZCBsaW5lOiAnICsKKyAg
ICAgICAgICAgICAgICAgICAgICAgJyAnLmpvaW4oc2VsZi5fcG9ydC5kcml2ZXJfY21kX2xpbmUo
KSkpCisgICAgICAgIHAucHJpbnRfY29uZmlnKCJXb3JrZXIgbW9kZWw6ICVzIiAlIHNlbGYuX29w
dGlvbnMud29ya2VyX21vZGVsKQorICAgICAgICBwLnByaW50X2NvbmZpZygiIikKKworICAgIGRl
ZiBfcHJpbnRfZXhwZWN0ZWRfcmVzdWx0c19vZl90eXBlKHNlbGYsIHJlc3VsdF9zdW1tYXJ5LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdF90eXBlLCByZXN1
bHRfdHlwZV9zdHIpOgorICAgICAgICAiIiJQcmludCB0aGUgbnVtYmVyIG9mIHRoZSB0ZXN0cyBp
biBhIGdpdmVuIHJlc3VsdCBjbGFzcy4KKworICAgICAgICBBcmdzOgorICAgICAgICAgIHJlc3Vs
dF9zdW1tYXJ5IC0gdGhlIG9iamVjdCBjb250YWluaW5nIGFsbCB0aGUgcmVzdWx0cyB0byByZXBv
cnQgb24KKyAgICAgICAgICByZXN1bHRfdHlwZSAtIHRoZSBwYXJ0aWN1bGFyIHJlc3VsdCB0eXBl
IHRvIHJlcG9ydCBpbiB0aGUgc3VtbWFyeS4KKyAgICAgICAgICByZXN1bHRfdHlwZV9zdHIgLSBh
IHN0cmluZyBkZXNjcmlwdGlvbiBvZiB0aGUgcmVzdWx0X3R5cGUuCisgICAgICAgICIiIgorICAg
ICAgICB0ZXN0cyA9IHNlbGYuX2V4cGVjdGF0aW9ucy5nZXRfdGVzdHNfd2l0aF9yZXN1bHRfdHlw
ZShyZXN1bHRfdHlwZSkKKyAgICAgICAgbm93ID0gcmVzdWx0X3N1bW1hcnkudGVzdHNfYnlfdGlt
ZWxpbmVbdGVzdF9leHBlY3RhdGlvbnMuTk9XXQorICAgICAgICB3b250Zml4ID0gcmVzdWx0X3N1
bW1hcnkudGVzdHNfYnlfdGltZWxpbmVbdGVzdF9leHBlY3RhdGlvbnMuV09OVEZJWF0KKworICAg
ICAgICAjIFdlIHVzZSBhIGZhbmN5IGZvcm1hdCBzdHJpbmcgaW4gb3JkZXIgdG8gcHJpbnQgdGhl
IGRhdGEgb3V0IGluIGEKKyAgICAgICAgIyBuaWNlbHktYWxpZ25lZCB0YWJsZS4KKyAgICAgICAg
Zm10c3RyID0gKCJFeHBlY3Q6ICUlNWQgJSUtOHMgKCUlJWRkIG5vdywgJSUlZGQgd29udGZpeCki
CisgICAgICAgICAgICAgICAgICAlIChzZWxmLl9udW1fZGlnaXRzKG5vdyksIHNlbGYuX251bV9k
aWdpdHMod29udGZpeCkpKQorICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X2V4cGVjdGVkKGZt
dHN0ciAlCisgICAgICAgICAgICAobGVuKHRlc3RzKSwgcmVzdWx0X3R5cGVfc3RyLCBsZW4odGVz
dHMgJiBub3cpLCBsZW4odGVzdHMgJiB3b250Zml4KSkpCisKKyAgICBkZWYgX251bV9kaWdpdHMo
c2VsZiwgbnVtKToKKyAgICAgICAgIiIiUmV0dXJucyB0aGUgbnVtYmVyIG9mIGRpZ2l0cyBuZWVk
ZWQgdG8gcmVwcmVzZW50IHRoZSBsZW5ndGggb2YgYQorICAgICAgICBzZXF1ZW5jZS4iIiIKKyAg
ICAgICAgbmRpZ2l0cyA9IDEKKyAgICAgICAgaWYgbGVuKG51bSk6CisgICAgICAgICAgICBuZGln
aXRzID0gaW50KG1hdGgubG9nMTAobGVuKG51bSkpKSArIDEKKyAgICAgICAgcmV0dXJuIG5kaWdp
dHMKKworICAgIGRlZiBfcHJpbnRfdGltaW5nX3N0YXRpc3RpY3Moc2VsZiwgdG90YWxfdGltZSwg
dGhyZWFkX3RpbWluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5
X3Rlc3RfdGltaW5ncywgaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3MsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmVzdWx0X3N1bW1hcnkpOgorICAgICAgICAiIiJSZWNvcmQgdGltaW5n
LXNwZWNpZmljIGluZm9ybWF0aW9uIGZvciB0aGUgdGVzdCBydW4uCisKKyAgICAgICAgQXJnczoK
KyAgICAgICAgICB0b3RhbF90aW1lOiB0b3RhbCBlbGFwc2VkIHRpbWUgKGluIHNlY29uZHMpIGZv
ciB0aGUgdGVzdCBydW4KKyAgICAgICAgICB0aHJlYWRfdGltaW5nczogd2FsbCBjbG9jayB0aW1l
IGVhY2ggdGhyZWFkIHJhbiBmb3IKKyAgICAgICAgICBkaXJlY3RvcnlfdGVzdF90aW1pbmdzOiB0
aW1pbmcgYnkgZGlyZWN0b3J5CisgICAgICAgICAgaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3M6IHRp
bWluZyBieSBmaWxlCisgICAgICAgICAgcmVzdWx0X3N1bW1hcnk6IHN1bW1hcnkgb2JqZWN0IGZv
ciB0aGUgdGVzdCBydW4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRf
dGltaW5nKCJUZXN0IHRpbWluZzoiKQorICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X3RpbWlu
ZygiICAlNi4yZiB0b3RhbCB0ZXN0aW5nIHRpbWUiICUgdG90YWxfdGltZSkKKyAgICAgICAgc2Vs
Zi5fcHJpbnRlci5wcmludF90aW1pbmcoIiIpCisgICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRf
dGltaW5nKCJUaHJlYWQgdGltaW5nOiIpCisgICAgICAgIGN1bWxfdGltZSA9IDAKKyAgICAgICAg
Zm9yIHQgaW4gdGhyZWFkX3RpbWluZ3M6CisgICAgICAgICAgICBzZWxmLl9wcmludGVyLnByaW50
X3RpbWluZygiICAgICUxMHM6ICU1ZCB0ZXN0cywgJTYuMmYgc2VjcyIgJQorICAgICAgICAgICAg
ICAgICAgKHRbJ25hbWUnXSwgdFsnbnVtX3Rlc3RzJ10sIHRbJ3RvdGFsX3RpbWUnXSkpCisgICAg
ICAgICAgICBjdW1sX3RpbWUgKz0gdFsndG90YWxfdGltZSddCisgICAgICAgIHNlbGYuX3ByaW50
ZXIucHJpbnRfdGltaW5nKCIgICAlNi4yZiBjdW11bGF0aXZlLCAlNi4yZiBvcHRpbWFsIiAlCisg
ICAgICAgICAgICAgIChjdW1sX3RpbWUsIGN1bWxfdGltZSAvIGludChzZWxmLl9vcHRpb25zLmNo
aWxkX3Byb2Nlc3NlcykpKQorICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X3RpbWluZygiIikK
KworICAgICAgICBzZWxmLl9wcmludF9hZ2dyZWdhdGVfdGVzdF9zdGF0aXN0aWNzKGluZGl2aWR1
YWxfdGVzdF90aW1pbmdzKQorICAgICAgICBzZWxmLl9wcmludF9pbmRpdmlkdWFsX3Rlc3RfdGlt
ZXMoaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXN1bHRfc3VtbWFyeSkKKyAgICAgICAgc2VsZi5fcHJpbnRfZGlyZWN0
b3J5X3RpbWluZ3MoZGlyZWN0b3J5X3Rlc3RfdGltaW5ncykKKworICAgIGRlZiBfcHJpbnRfYWdn
cmVnYXRlX3Rlc3Rfc3RhdGlzdGljcyhzZWxmLCBpbmRpdmlkdWFsX3Rlc3RfdGltaW5ncyk6Cisg
ICAgICAgICIiIlByaW50cyBhZ2dyZWdhdGUgc3RhdGlzdGljcyAoZS5nLiBtZWRpYW4sIG1lYW4s
IGV0Yy4pIGZvciBhbGwgdGVzdHMuCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgaW5kaXZpZHVh
bF90ZXN0X3RpbWluZ3M6IExpc3Qgb2YgVGVzdFJlc3VsdHMgZm9yIGFsbCB0ZXN0cy4KKyAgICAg
ICAgIiIiCisgICAgICAgIHRlc3RfdHlwZXMgPSBbXSAgIyBVbml0IHRlc3RzIGRvbid0IGFjdHVh
bGx5IHByb2R1Y2UgYW55IHRpbWluZ3MuCisgICAgICAgIGlmIGluZGl2aWR1YWxfdGVzdF90aW1p
bmdzOgorICAgICAgICAgICAgdGVzdF90eXBlcyA9IGluZGl2aWR1YWxfdGVzdF90aW1pbmdzWzBd
LnRpbWVfZm9yX2RpZmZzLmtleXMoKQorICAgICAgICB0aW1lc19mb3JfZHVtcF9yZW5kZXJfdHJl
ZSA9IFtdCisgICAgICAgIHRpbWVzX2Zvcl9kaWZmX3Byb2Nlc3NpbmcgPSBbXQorICAgICAgICB0
aW1lc19wZXJfdGVzdF90eXBlID0ge30KKyAgICAgICAgZm9yIHRlc3RfdHlwZSBpbiB0ZXN0X3R5
cGVzOgorICAgICAgICAgICAgdGltZXNfcGVyX3Rlc3RfdHlwZVt0ZXN0X3R5cGVdID0gW10KKwor
ICAgICAgICBmb3IgdGVzdF9zdGF0cyBpbiBpbmRpdmlkdWFsX3Rlc3RfdGltaW5nczoKKyAgICAg
ICAgICAgIHRpbWVzX2Zvcl9kdW1wX3JlbmRlcl90cmVlLmFwcGVuZCh0ZXN0X3N0YXRzLnRlc3Rf
cnVuX3RpbWUpCisgICAgICAgICAgICB0aW1lc19mb3JfZGlmZl9wcm9jZXNzaW5nLmFwcGVuZCgK
KyAgICAgICAgICAgICAgICB0ZXN0X3N0YXRzLnRvdGFsX3RpbWVfZm9yX2FsbF9kaWZmcykKKyAg
ICAgICAgICAgIHRpbWVfZm9yX2RpZmZzID0gdGVzdF9zdGF0cy50aW1lX2Zvcl9kaWZmcworICAg
ICAgICAgICAgZm9yIHRlc3RfdHlwZSBpbiB0ZXN0X3R5cGVzOgorICAgICAgICAgICAgICAgIHRp
bWVzX3Blcl90ZXN0X3R5cGVbdGVzdF90eXBlXS5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAg
IHRpbWVfZm9yX2RpZmZzW3Rlc3RfdHlwZV0pCisKKyAgICAgICAgc2VsZi5fcHJpbnRfc3RhdGlz
dGljc19mb3JfdGVzdF90aW1pbmdzKAorICAgICAgICAgICAgIlBFUiBURVNUIFRJTUUgSU4gVEVT
VFNIRUxMIChzZWNvbmRzKToiLAorICAgICAgICAgICAgdGltZXNfZm9yX2R1bXBfcmVuZGVyX3Ry
ZWUpCisgICAgICAgIHNlbGYuX3ByaW50X3N0YXRpc3RpY3NfZm9yX3Rlc3RfdGltaW5ncygKKyAg
ICAgICAgICAgICJQRVIgVEVTVCBESUZGIFBST0NFU1NJTkcgVElNRVMgKHNlY29uZHMpOiIsCisg
ICAgICAgICAgICB0aW1lc19mb3JfZGlmZl9wcm9jZXNzaW5nKQorICAgICAgICBmb3IgdGVzdF90
eXBlIGluIHRlc3RfdHlwZXM6CisgICAgICAgICAgICBzZWxmLl9wcmludF9zdGF0aXN0aWNzX2Zv
cl90ZXN0X3RpbWluZ3MoCisgICAgICAgICAgICAgICAgIlBFUiBURVNUIFRJTUVTIEJZIFRFU1Qg
VFlQRTogJXMiICUgdGVzdF90eXBlLAorICAgICAgICAgICAgICAgIHRpbWVzX3Blcl90ZXN0X3R5
cGVbdGVzdF90eXBlXSkKKworICAgIGRlZiBfcHJpbnRfaW5kaXZpZHVhbF90ZXN0X3RpbWVzKHNl
bGYsIGluZGl2aWR1YWxfdGVzdF90aW1pbmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlc3VsdF9zdW1tYXJ5KToKKyAgICAgICAgIiIiUHJpbnRzIHRoZSBydW4gdGltZXMg
Zm9yIHNsb3csIHRpbWVvdXQgYW5kIGNyYXNoIHRlc3RzLgorICAgICAgICBBcmdzOgorICAgICAg
ICAgIGluZGl2aWR1YWxfdGVzdF90aW1pbmdzOiBMaXN0IG9mIFRlc3RTdGF0cyBmb3IgYWxsIHRl
c3RzLgorICAgICAgICAgIHJlc3VsdF9zdW1tYXJ5OiBzdW1tYXJ5IG9iamVjdCBmb3IgdGVzdCBy
dW4KKyAgICAgICAgIiIiCisgICAgICAgICMgUmV2ZXJzZS1zb3J0IGJ5IHRoZSB0aW1lIHNwZW50
IGluIER1bXBSZW5kZXJUcmVlLgorICAgICAgICBpbmRpdmlkdWFsX3Rlc3RfdGltaW5ncy5zb3J0
KGxhbWJkYSBhLCBiOgorICAgICAgICAgICAgY21wKGIudGVzdF9ydW5fdGltZSwgYS50ZXN0X3J1
bl90aW1lKSkKKworICAgICAgICBudW1fcHJpbnRlZCA9IDAKKyAgICAgICAgc2xvd190ZXN0cyA9
IFtdCisgICAgICAgIHRpbWVvdXRfb3JfY3Jhc2hfdGVzdHMgPSBbXQorICAgICAgICB1bmV4cGVj
dGVkX3Nsb3dfdGVzdHMgPSBbXQorICAgICAgICBmb3IgdGVzdF90dXBsZSBpbiBpbmRpdmlkdWFs
X3Rlc3RfdGltaW5nczoKKyAgICAgICAgICAgIGZpbGVuYW1lID0gdGVzdF90dXBsZS5maWxlbmFt
ZQorICAgICAgICAgICAgaXNfdGltZW91dF9jcmFzaF9vcl9zbG93ID0gRmFsc2UKKyAgICAgICAg
ICAgIGlmIHNlbGYuX3Rlc3RfaXNfc2xvdyhmaWxlbmFtZSk6CisgICAgICAgICAgICAgICAgaXNf
dGltZW91dF9jcmFzaF9vcl9zbG93ID0gVHJ1ZQorICAgICAgICAgICAgICAgIHNsb3dfdGVzdHMu
YXBwZW5kKHRlc3RfdHVwbGUpCisKKyAgICAgICAgICAgIGlmIGZpbGVuYW1lIGluIHJlc3VsdF9z
dW1tYXJ5LmZhaWx1cmVzOgorICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdF9zdW1tYXJ5
LnJlc3VsdHNbZmlsZW5hbWVdLnR5cGUKKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IHRl
c3RfZXhwZWN0YXRpb25zLlRJTUVPVVQgb3IKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID09
IHRlc3RfZXhwZWN0YXRpb25zLkNSQVNIKToKKyAgICAgICAgICAgICAgICAgICAgaXNfdGltZW91
dF9jcmFzaF9vcl9zbG93ID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICB0aW1lb3V0X29yX2Ny
YXNoX3Rlc3RzLmFwcGVuZCh0ZXN0X3R1cGxlKQorCisgICAgICAgICAgICBpZiAobm90IGlzX3Rp
bWVvdXRfY3Jhc2hfb3Jfc2xvdyBhbmQKKyAgICAgICAgICAgICAgICBudW1fcHJpbnRlZCA8IHBy
aW50aW5nLk5VTV9TTE9XX1RFU1RTX1RPX0xPRyk6CisgICAgICAgICAgICAgICAgbnVtX3ByaW50
ZWQgPSBudW1fcHJpbnRlZCArIDEKKyAgICAgICAgICAgICAgICB1bmV4cGVjdGVkX3Nsb3dfdGVz
dHMuYXBwZW5kKHRlc3RfdHVwbGUpCisKKyAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF90aW1p
bmcoIiIpCisgICAgICAgIHNlbGYuX3ByaW50X3Rlc3RfbGlzdF90aW1pbmcoIiVzIHNsb3dlc3Qg
dGVzdHMgdGhhdCBhcmUgbm90ICIKKyAgICAgICAgICAgICJtYXJrZWQgYXMgU0xPVyBhbmQgZGlk
IG5vdCB0aW1lb3V0L2NyYXNoOiIgJQorICAgICAgICAgICAgcHJpbnRpbmcuTlVNX1NMT1dfVEVT
VFNfVE9fTE9HLCB1bmV4cGVjdGVkX3Nsb3dfdGVzdHMpCisgICAgICAgIHNlbGYuX3ByaW50ZXIu
cHJpbnRfdGltaW5nKCIiKQorICAgICAgICBzZWxmLl9wcmludF90ZXN0X2xpc3RfdGltaW5nKCJU
ZXN0cyBtYXJrZWQgYXMgU0xPVzoiLCBzbG93X3Rlc3RzKQorICAgICAgICBzZWxmLl9wcmludGVy
LnByaW50X3RpbWluZygiIikKKyAgICAgICAgc2VsZi5fcHJpbnRfdGVzdF9saXN0X3RpbWluZygi
VGVzdHMgdGhhdCB0aW1lZCBvdXQgb3IgY3Jhc2hlZDoiLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRpbWVvdXRfb3JfY3Jhc2hfdGVzdHMpCisgICAgICAgIHNlbGYuX3By
aW50ZXIucHJpbnRfdGltaW5nKCIiKQorCisgICAgZGVmIF9wcmludF90ZXN0X2xpc3RfdGltaW5n
KHNlbGYsIHRpdGxlLCB0ZXN0X2xpc3QpOgorICAgICAgICAiIiJQcmludCB0aW1pbmcgaW5mbyBm
b3IgZWFjaCB0ZXN0LgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgdGl0bGU6IHNlY3Rpb24g
aGVhZGluZworICAgICAgICAgIHRlc3RfbGlzdDogdGVzdHMgdGhhdCBmYWxsIGluIHRoaXMgc2Vj
dGlvbgorICAgICAgICAiIiIKKyAgICAgICAgaWYgc2VsZi5fcHJpbnRlci5kaXNhYmxlZCgnc2xv
d2VzdCcpOgorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgc2VsZi5fcHJpbnRlci5wcmlu
dF90aW1pbmcodGl0bGUpCisgICAgICAgIGZvciB0ZXN0X3R1cGxlIGluIHRlc3RfbGlzdDoKKyAg
ICAgICAgICAgIGZpbGVuYW1lID0gdGVzdF90dXBsZS5maWxlbmFtZVtsZW4oCisgICAgICAgICAg
ICAgICAgc2VsZi5fcG9ydC5sYXlvdXRfdGVzdHNfZGlyKCkpICsgMTpdCisgICAgICAgICAgICBm
aWxlbmFtZSA9IGZpbGVuYW1lLnJlcGxhY2UoJ1xcJywgJy8nKQorICAgICAgICAgICAgdGVzdF9y
dW5fdGltZSA9IHJvdW5kKHRlc3RfdHVwbGUudGVzdF9ydW5fdGltZSwgMSkKKyAgICAgICAgICAg
IHNlbGYuX3ByaW50ZXIucHJpbnRfdGltaW5nKCIgICVzIHRvb2sgJXMgc2Vjb25kcyIgJQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpbGVuYW1lLCB0ZXN0X3J1bl90
aW1lKSkKKworICAgIGRlZiBfcHJpbnRfZGlyZWN0b3J5X3RpbWluZ3Moc2VsZiwgZGlyZWN0b3J5
X3Rlc3RfdGltaW5ncyk6CisgICAgICAgICIiIlByaW50IHRpbWluZyBpbmZvIGJ5IGRpcmVjdG9y
eSBmb3IgYW55IGRpcmVjdG9yaWVzIHRoYXQKKyAgICAgICAgdGFrZSA+IDEwIHNlY29uZHMgdG8g
cnVuLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgZGlyZWN0b3J5X3Rlc3RfdGltaW5nOiB0
aW1lIGluZm8gZm9yIGVhY2ggZGlyZWN0b3J5CisgICAgICAgICIiIgorICAgICAgICB0aW1pbmdz
ID0gW10KKyAgICAgICAgZm9yIGRpcmVjdG9yeSBpbiBkaXJlY3RvcnlfdGVzdF90aW1pbmdzOgor
ICAgICAgICAgICAgbnVtX3Rlc3RzLCB0aW1lX2Zvcl9kaXJlY3RvcnkgPSBkaXJlY3RvcnlfdGVz
dF90aW1pbmdzW2RpcmVjdG9yeV0KKyAgICAgICAgICAgIHRpbWluZ3MuYXBwZW5kKChyb3VuZCh0
aW1lX2Zvcl9kaXJlY3RvcnksIDEpLCBkaXJlY3RvcnksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbnVtX3Rlc3RzKSkKKyAgICAgICAgdGltaW5ncy5zb3J0KCkKKworICAgICAgICBzZWxm
Ll9wcmludGVyLnByaW50X3RpbWluZygiVGltZSB0byBwcm9jZXNzIHNsb3dlc3Qgc3ViZGlyZWN0
b3JpZXM6IikKKyAgICAgICAgbWluX3NlY29uZHNfdG9fcHJpbnQgPSAxMAorICAgICAgICBmb3Ig
dGltaW5nIGluIHRpbWluZ3M6CisgICAgICAgICAgICBpZiB0aW1pbmdbMF0gPiBtaW5fc2Vjb25k
c190b19wcmludDoKKyAgICAgICAgICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X3RpbWluZygK
KyAgICAgICAgICAgICAgICAgICAgIiAgJXMgdG9vayAlcyBzZWNvbmRzIHRvIHJ1biAlcyB0ZXN0
cy4iICUgKHRpbWluZ1sxXSwKKyAgICAgICAgICAgICAgICAgICAgdGltaW5nWzBdLCB0aW1pbmdb
Ml0pKQorICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X3RpbWluZygiIikKKworICAgIGRlZiBf
cHJpbnRfc3RhdGlzdGljc19mb3JfdGVzdF90aW1pbmdzKHNlbGYsIHRpdGxlLCB0aW1pbmdzKToK
KyAgICAgICAgIiIiUHJpbnRzIHRoZSBtZWRpYW4sIG1lYW4gYW5kIHN0YW5kYXJkIGRldmlhdGlv
biBvZiB0aGUgdmFsdWVzIGluCisgICAgICAgIHRpbWluZ3MuCisKKyAgICAgICAgQXJnczoKKyAg
ICAgICAgICB0aXRsZTogVGl0bGUgZm9yIHRoZXNlIHRpbWluZ3MuCisgICAgICAgICAgdGltaW5n
czogQSBsaXN0IG9mIGZsb2F0cyByZXByZXNlbnRpbmcgdGltZXMuCisgICAgICAgICIiIgorICAg
ICAgICBzZWxmLl9wcmludGVyLnByaW50X3RpbWluZyh0aXRsZSkKKyAgICAgICAgdGltaW5ncy5z
b3J0KCkKKworICAgICAgICBudW1fdGVzdHMgPSBsZW4odGltaW5ncykKKyAgICAgICAgaWYgbm90
IG51bV90ZXN0czoKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBwZXJjZW50aWxlOTAgPSB0
aW1pbmdzW2ludCguOSAqIG51bV90ZXN0cyldCisgICAgICAgIHBlcmNlbnRpbGU5OSA9IHRpbWlu
Z3NbaW50KC45OSAqIG51bV90ZXN0cyldCisKKyAgICAgICAgaWYgbnVtX3Rlc3RzICUgMiA9PSAx
OgorICAgICAgICAgICAgbWVkaWFuID0gdGltaW5nc1soKG51bV90ZXN0cyAtIDEpIC8gMikgLSAx
XQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbG93ZXIgPSB0aW1pbmdzW251bV90ZXN0cyAv
IDIgLSAxXQorICAgICAgICAgICAgdXBwZXIgPSB0aW1pbmdzW251bV90ZXN0cyAvIDJdCisgICAg
ICAgICAgICBtZWRpYW4gPSAoZmxvYXQobG93ZXIgKyB1cHBlcikpIC8gMgorCisgICAgICAgIG1l
YW4gPSBzdW0odGltaW5ncykgLyBudW1fdGVzdHMKKworICAgICAgICBmb3IgdGltZSBpbiB0aW1p
bmdzOgorICAgICAgICAgICAgc3VtX29mX2RldmlhdGlvbnMgPSBtYXRoLnBvdyh0aW1lIC0gbWVh
biwgMikKKworICAgICAgICBzdGRfZGV2aWF0aW9uID0gbWF0aC5zcXJ0KHN1bV9vZl9kZXZpYXRp
b25zIC8gbnVtX3Rlc3RzKQorICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X3RpbWluZygiICBN
ZWRpYW46ICAgICAgICAgICU2LjNmIiAlIG1lZGlhbikKKyAgICAgICAgc2VsZi5fcHJpbnRlci5w
cmludF90aW1pbmcoIiAgTWVhbjogICAgICAgICAgICAlNi4zZiIgJSBtZWFuKQorICAgICAgICBz
ZWxmLl9wcmludGVyLnByaW50X3RpbWluZygiICA5MHRoIHBlcmNlbnRpbGU6ICU2LjNmIiAlIHBl
cmNlbnRpbGU5MCkKKyAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF90aW1pbmcoIiAgOTl0aCBw
ZXJjZW50aWxlOiAlNi4zZiIgJSBwZXJjZW50aWxlOTkpCisgICAgICAgIHNlbGYuX3ByaW50ZXIu
cHJpbnRfdGltaW5nKCIgIFN0YW5kYXJkIGRldjogICAgJTYuM2YiICUgc3RkX2RldmlhdGlvbikK
KyAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF90aW1pbmcoIiIpCisKKyAgICBkZWYgX3ByaW50
X3Jlc3VsdF9zdW1tYXJ5KHNlbGYsIHJlc3VsdF9zdW1tYXJ5KToKKyAgICAgICAgIiIiUHJpbnQg
YSBzaG9ydCBzdW1tYXJ5IGFib3V0IGhvdyBtYW55IHRlc3RzIHBhc3NlZC4KKworICAgICAgICBB
cmdzOgorICAgICAgICAgIHJlc3VsdF9zdW1tYXJ5OiBpbmZvcm1hdGlvbiB0byBsb2cKKyAgICAg
ICAgIiIiCisgICAgICAgIGZhaWxlZCA9IGxlbihyZXN1bHRfc3VtbWFyeS5mYWlsdXJlcykKKyAg
ICAgICAgc2tpcHBlZCA9IGxlbigKKyAgICAgICAgICAgIHJlc3VsdF9zdW1tYXJ5LnRlc3RzX2J5
X2V4cGVjdGF0aW9uW3Rlc3RfZXhwZWN0YXRpb25zLlNLSVBdKQorICAgICAgICB0b3RhbCA9IHJl
c3VsdF9zdW1tYXJ5LnRvdGFsCisgICAgICAgIHBhc3NlZCA9IHRvdGFsIC0gZmFpbGVkIC0gc2tp
cHBlZAorICAgICAgICBwY3RfcGFzc2VkID0gMC4wCisgICAgICAgIGlmIHRvdGFsID4gMDoKKyAg
ICAgICAgICAgIHBjdF9wYXNzZWQgPSBmbG9hdChwYXNzZWQpICogMTAwIC8gdG90YWwKKworICAg
ICAgICBzZWxmLl9wcmludGVyLnByaW50X2FjdHVhbCgiIikKKyAgICAgICAgc2VsZi5fcHJpbnRl
ci5wcmludF9hY3R1YWwoIj0+IFJlc3VsdHM6ICVkLyVkIHRlc3RzIHBhc3NlZCAoJS4xZiUlKSIg
JQorICAgICAgICAgICAgICAgICAgICAgKHBhc3NlZCwgdG90YWwsIHBjdF9wYXNzZWQpKQorICAg
ICAgICBzZWxmLl9wcmludGVyLnByaW50X2FjdHVhbCgiIikKKyAgICAgICAgc2VsZi5fcHJpbnRf
cmVzdWx0X3N1bW1hcnlfZW50cnkocmVzdWx0X3N1bW1hcnksCisgICAgICAgICAgICB0ZXN0X2V4
cGVjdGF0aW9ucy5OT1csICJUZXN0cyB0byBiZSBmaXhlZCIpCisKKyAgICAgICAgc2VsZi5fcHJp
bnRlci5wcmludF9hY3R1YWwoIiIpCisgICAgICAgIHNlbGYuX3ByaW50X3Jlc3VsdF9zdW1tYXJ5
X2VudHJ5KHJlc3VsdF9zdW1tYXJ5LAorICAgICAgICAgICAgdGVzdF9leHBlY3RhdGlvbnMuV09O
VEZJWCwKKyAgICAgICAgICAgICJUZXN0cyB0aGF0IHdpbGwgb25seSBiZSBmaXhlZCBpZiB0aGV5
IGNyYXNoIChXT05URklYKSIpCisgICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfYWN0dWFsKCIi
KQorCisgICAgZGVmIF9wcmludF9yZXN1bHRfc3VtbWFyeV9lbnRyeShzZWxmLCByZXN1bHRfc3Vt
bWFyeSwgdGltZWxpbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFk
aW5nKToKKyAgICAgICAgIiIiUHJpbnQgYSBzdW1tYXJ5IGJsb2NrIG9mIHJlc3VsdHMgZm9yIGEg
cGFydGljdWxhciB0aW1lbGluZSBvZiB0ZXN0LgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAg
cmVzdWx0X3N1bW1hcnk6IHN1bW1hcnkgdG8gcHJpbnQgcmVzdWx0cyBmb3IKKyAgICAgICAgICB0
aW1lbGluZTogdGhlIHRpbWVsaW5lIHRvIHByaW50IHJlc3VsdHMgZm9yIChOT1QsIFdPTlRGSVgs
IGV0Yy4pCisgICAgICAgICAgaGVhZGluZzogYSB0ZXh0dWFsIGRlc2NyaXB0aW9uIG9mIHRoZSB0
aW1lbGluZQorICAgICAgICAiIiIKKyAgICAgICAgdG90YWwgPSBsZW4ocmVzdWx0X3N1bW1hcnku
dGVzdHNfYnlfdGltZWxpbmVbdGltZWxpbmVdKQorICAgICAgICBub3RfcGFzc2luZyA9ICh0b3Rh
bCAtCisgICAgICAgICAgIGxlbihyZXN1bHRfc3VtbWFyeS50ZXN0c19ieV9leHBlY3RhdGlvblt0
ZXN0X2V4cGVjdGF0aW9ucy5QQVNTXSAmCisgICAgICAgICAgICAgICByZXN1bHRfc3VtbWFyeS50
ZXN0c19ieV90aW1lbGluZVt0aW1lbGluZV0pKQorICAgICAgICBzZWxmLl9wcmludGVyLnByaW50
X2FjdHVhbCgiPT4gJXMgKCVkKToiICUgKGhlYWRpbmcsIG5vdF9wYXNzaW5nKSkKKworICAgICAg
ICBmb3IgcmVzdWx0IGluIFRlc3RFeHBlY3RhdGlvbnNGaWxlLkVYUEVDVEFUSU9OX09SREVSOgor
ICAgICAgICAgICAgaWYgcmVzdWx0ID09IHRlc3RfZXhwZWN0YXRpb25zLlBBU1M6CisgICAgICAg
ICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIHJlc3VsdHMgPSAocmVzdWx0X3N1bW1hcnku
dGVzdHNfYnlfZXhwZWN0YXRpb25bcmVzdWx0XSAmCisgICAgICAgICAgICAgICAgICAgICAgIHJl
c3VsdF9zdW1tYXJ5LnRlc3RzX2J5X3RpbWVsaW5lW3RpbWVsaW5lXSkKKyAgICAgICAgICAgIGRl
c2MgPSBUZXN0RXhwZWN0YXRpb25zRmlsZS5FWFBFQ1RBVElPTl9ERVNDUklQVElPTlNbcmVzdWx0
XQorICAgICAgICAgICAgaWYgbm90X3Bhc3NpbmcgYW5kIGxlbihyZXN1bHRzKToKKyAgICAgICAg
ICAgICAgICBwY3QgPSBsZW4ocmVzdWx0cykgKiAxMDAuMCAvIG5vdF9wYXNzaW5nCisgICAgICAg
ICAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF9hY3R1YWwoIiAgJTVkICUtMjRzICglNC4xZiUl
KSIgJQorICAgICAgICAgICAgICAgICAgICAobGVuKHJlc3VsdHMpLCBkZXNjW2xlbihyZXN1bHRz
KSAhPSAxXSwgcGN0KSkKKworICAgIGRlZiBfcmVzdWx0c19odG1sKHNlbGYsIHRlc3RfZmlsZXMs
IGZhaWx1cmVzLCB0aXRsZT0iVGVzdCBGYWlsdXJlcyIsIG92ZXJyaWRlX3RpbWU9Tm9uZSk6Cisg
ICAgICAgICIiIgorICAgICAgICB0ZXN0X2ZpbGVzID0gYSBsaXN0IG9mIGZpbGUgcGF0aHMKKyAg
ICAgICAgZmFpbHVyZXMgPSBkaWN0aW9uYXJ5IG1hcHBpbmcgdGVzdCBwYXRocyB0byBmYWlsdXJl
IG9iamVjdHMKKyAgICAgICAgdGl0bGUgPSB0aXRsZSBwcmludGVkIGF0IHRvcCBvZiB0ZXN0Cisg
ICAgICAgIG92ZXJyaWRlX3RpbWUgPSBjdXJyZW50IHRpbWUgKHVzZWQgYnkgdW5pdCB0ZXN0cykK
KyAgICAgICAgIiIiCisgICAgICAgIHBhZ2UgPSAiIiI8aHRtbD4KKyAgPGhlYWQ+CisgICAgPHRp
dGxlPkxheW91dCBUZXN0IFJlc3VsdHMgKCUodGltZSlzKTwvdGl0bGU+CisgIDwvaGVhZD4KKyAg
PGJvZHk+CisgICAgPGgyPiUodGl0bGUpcyAoJSh0aW1lKXMpPC9oMj4KKyAgICAgICAgIiIiICUg
eyd0aXRsZSc6IHRpdGxlLCAndGltZSc6IG92ZXJyaWRlX3RpbWUgb3IgdGltZS5hc2N0aW1lKCl9
CisKKyAgICAgICAgZm9yIHRlc3RfZmlsZSBpbiBzb3J0ZWQodGVzdF9maWxlcyk6CisgICAgICAg
ICAgICB0ZXN0X25hbWUgPSBzZWxmLl9wb3J0LnJlbGF0aXZlX3Rlc3RfZmlsZW5hbWUodGVzdF9m
aWxlKQorICAgICAgICAgICAgdGVzdF91cmwgPSBzZWxmLl9wb3J0LmZpbGVuYW1lX3RvX3VyaSh0
ZXN0X2ZpbGUpCisgICAgICAgICAgICBwYWdlICs9IHUiPHA+PGEgaHJlZj0nJXMnPiVzPC9hPjxi
ciAvPlxuIiAlICh0ZXN0X3VybCwgdGVzdF9uYW1lKQorICAgICAgICAgICAgdGVzdF9mYWlsdXJl
cyA9IGZhaWx1cmVzLmdldCh0ZXN0X2ZpbGUsIFtdKQorICAgICAgICAgICAgZm9yIGZhaWx1cmUg
aW4gdGVzdF9mYWlsdXJlczoKKyAgICAgICAgICAgICAgICBwYWdlICs9ICh1IiZuYnNwOyZuYnNw
OyVzPGJyLz4iICUKKyAgICAgICAgICAgICAgICAgICAgICAgICBmYWlsdXJlLnJlc3VsdF9odG1s
X291dHB1dCh0ZXN0X25hbWUpKQorICAgICAgICAgICAgcGFnZSArPSAiPC9wPlxuIgorICAgICAg
ICBwYWdlICs9ICI8L2JvZHk+PC9odG1sPlxuIgorICAgICAgICByZXR1cm4gcGFnZQorCisgICAg
ZGVmIF93cml0ZV9yZXN1bHRzX2h0bWxfZmlsZShzZWxmLCByZXN1bHRfc3VtbWFyeSk6CisgICAg
ICAgICIiIldyaXRlIHJlc3VsdHMuaHRtbCB3aGljaCBpcyBhIHN1bW1hcnkgb2YgdGVzdHMgdGhh
dCBmYWlsZWQuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICByZXN1bHRfc3VtbWFyeTogYSBz
dW1tYXJ5IG9mIHRoZSByZXN1bHRzIDopCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICBU
cnVlIGlmIGFueSByZXN1bHRzIHdlcmUgd3JpdHRlbiAoc2luY2UgZXhwZWN0ZWQgZmFpbHVyZXMg
bWF5IGJlCisgICAgICAgICAgb21pdHRlZCkKKyAgICAgICAgIiIiCisgICAgICAgICMgdGVzdCBm
YWlsdXJlcworICAgICAgICBpZiBzZWxmLl9vcHRpb25zLmZ1bGxfcmVzdWx0c19odG1sOgorICAg
ICAgICAgICAgcmVzdWx0c190aXRsZSA9ICJUZXN0IEZhaWx1cmVzIgorICAgICAgICAgICAgdGVz
dF9maWxlcyA9IHJlc3VsdF9zdW1tYXJ5LmZhaWx1cmVzLmtleXMoKQorICAgICAgICBlbHNlOgor
ICAgICAgICAgICAgcmVzdWx0c190aXRsZSA9ICJVbmV4cGVjdGVkIFRlc3QgRmFpbHVyZXMiCisg
ICAgICAgICAgICB1bmV4cGVjdGVkX2ZhaWx1cmVzID0gc2VsZi5fZ2V0X2ZhaWx1cmVzKHJlc3Vs
dF9zdW1tYXJ5LAorICAgICAgICAgICAgICAgIGluY2x1ZGVfY3Jhc2hlcz1UcnVlKQorICAgICAg
ICAgICAgdGVzdF9maWxlcyA9IHVuZXhwZWN0ZWRfZmFpbHVyZXMua2V5cygpCisgICAgICAgIGlm
IG5vdCBsZW4odGVzdF9maWxlcyk6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICAg
ICBvdXRfZmlsZW5hbWUgPSBvcy5wYXRoLmpvaW4oc2VsZi5fb3B0aW9ucy5yZXN1bHRzX2RpcmVj
dG9yeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZXN1bHRzLmh0bWwi
KQorICAgICAgICB3aXRoIGNvZGVjcy5vcGVuKG91dF9maWxlbmFtZSwgInciLCAidXRmLTgiKSBh
cyByZXN1bHRzX2ZpbGU6CisgICAgICAgICAgICBodG1sID0gc2VsZi5fcmVzdWx0c19odG1sKHRl
c3RfZmlsZXMsIHJlc3VsdF9zdW1tYXJ5LmZhaWx1cmVzLCByZXN1bHRzX3RpdGxlKQorICAgICAg
ICAgICAgcmVzdWx0c19maWxlLndyaXRlKGh0bWwpCisKKyAgICAgICAgcmV0dXJuIFRydWUKKwor
ICAgIGRlZiBfc2hvd19yZXN1bHRzX2h0bWxfZmlsZShzZWxmKToKKyAgICAgICAgIiIiU2hvd3Mg
dGhlIHJlc3VsdHMuaHRtbCBwYWdlLiIiIgorICAgICAgICByZXN1bHRzX2ZpbGVuYW1lID0gb3Mu
cGF0aC5qb2luKHNlbGYuX29wdGlvbnMucmVzdWx0c19kaXJlY3RvcnksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlc3VsdHMuaHRtbCIpCisgICAgICAgIHNlbGYu
X3BvcnQuc2hvd19yZXN1bHRzX2h0bWxfZmlsZShyZXN1bHRzX2ZpbGVuYW1lKQorCisKK2RlZiBy
ZWFkX3Rlc3RfZmlsZXMoZmlsZXMpOgorICAgIHRlc3RzID0gW10KKyAgICBmb3IgZmlsZSBpbiBm
aWxlczoKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2l0aCBjb2RlY3Mub3BlbihmaWxlLCAn
cicsICd1dGYtOCcpIGFzIGZpbGVfY29udGVudHM6CisgICAgICAgICAgICAgICAgIyBGSVhNRTog
VGhpcyBjb3VsZCBiZSBjbGVhbmVyIHVzaW5nIGEgbGlzdCBjb21wcmVoZW5zaW9uLgorICAgICAg
ICAgICAgICAgIGZvciBsaW5lIGluIGZpbGVfY29udGVudHM6CisgICAgICAgICAgICAgICAgICAg
IGxpbmUgPSB0ZXN0X2V4cGVjdGF0aW9ucy5zdHJpcF9jb21tZW50cyhsaW5lKQorICAgICAgICAg
ICAgICAgICAgICBpZiBsaW5lOgorICAgICAgICAgICAgICAgICAgICAgICAgdGVzdHMuYXBwZW5k
KGxpbmUpCisgICAgICAgIGV4Y2VwdCBJT0Vycm9yLCBlOgorICAgICAgICAgICAgaWYgZS5lcnJu
byA9PSBlcnJuby5FTk9FTlQ6CisgICAgICAgICAgICAgICAgX2xvZy5jcml0aWNhbCgnJykKKyAg
ICAgICAgICAgICAgICBfbG9nLmNyaXRpY2FsKCctLXRlc3QtbGlzdCBmaWxlICIlcyIgbm90IGZv
dW5kJyAlIGZpbGUpCisgICAgICAgICAgICByYWlzZQorICAgIHJldHVybiB0ZXN0cwpkaWZmIC0t
Z2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2Uv
dGVzdF9ydW5uZXJfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X3J1bm5lcl91bml0dGVzdC5weQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4z
YzU2NGFlNWM2ODgxMzAxZWZlZDY1ZmE0YjkxZTc4N2UxZTVkODMxCi0tLSAvZGV2L251bGwKKysr
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVz
dF9ydW5uZXJfdW5pdHRlc3QucHkKQEAgLTAsMCArMSwxMDIgQEAKKyMhL3Vzci9iaW4vcHl0aG9u
CisjIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
IyBDb3B5cmlnaHQgKEMpIDIwMTAgR2Fib3IgUmFwY3NhbnlpIChyZ2Fib3JAaW5mLnUtc3plZ2Vk
Lmh1KSwgVW5pdmVyc2l0eSBvZiBTemVnZWQKKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIwor
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
IyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyIiIlVuaXQg
dGVzdHMgZm9yIFRlc3RSdW5uZXIoKS4iIiIKKworaW1wb3J0IHVuaXR0ZXN0CisKK2Zyb20gd2Vi
a2l0cHkudGhpcmRwYXJ0eS5tb2NrIGltcG9ydCBNb2NrCisKK2ltcG9ydCB0ZXN0X3J1bm5lcgor
CisKK2NsYXNzIFRlc3RSdW5uZXJXcmFwcGVyKHRlc3RfcnVubmVyLlRlc3RSdW5uZXIpOgorICAg
IGRlZiBfZ2V0X3Rlc3RfaW5wdXRfZm9yX2ZpbGUoc2VsZiwgdGVzdF9maWxlKToKKyAgICAgICAg
cmV0dXJuIHRlc3RfZmlsZQorCisKK2NsYXNzIFRlc3RSdW5uZXJUZXN0KHVuaXR0ZXN0LlRlc3RD
YXNlKToKKyAgICBkZWYgdGVzdF9yZXN1bHRzX2h0bWwoc2VsZik6CisgICAgICAgIG1vY2tfcG9y
dCA9IE1vY2soKQorICAgICAgICBtb2NrX3BvcnQucmVsYXRpdmVfdGVzdF9maWxlbmFtZSA9IGxh
bWJkYSBuYW1lOiBuYW1lCisgICAgICAgIG1vY2tfcG9ydC5maWxlbmFtZV90b191cmkgPSBsYW1i
ZGEgbmFtZTogbmFtZQorCisgICAgICAgIHJ1bm5lciA9IHRlc3RfcnVubmVyLlRlc3RSdW5uZXIo
cG9ydD1tb2NrX3BvcnQsIG9wdGlvbnM9TW9jaygpLAorICAgICAgICAgICAgcHJpbnRlcj1Nb2Nr
KCkpCisgICAgICAgIGV4cGVjdGVkX2h0bWwgPSB1IiIiPGh0bWw+CisgIDxoZWFkPgorICAgIDx0
aXRsZT5MYXlvdXQgVGVzdCBSZXN1bHRzICh0aW1lKTwvdGl0bGU+CisgIDwvaGVhZD4KKyAgPGJv
ZHk+CisgICAgPGgyPlRpdGxlICh0aW1lKTwvaDI+CisgICAgICAgIDxwPjxhIGhyZWY9J3Rlc3Rf
cGF0aCc+dGVzdF9wYXRoPC9hPjxiciAvPgorPC9wPgorPC9ib2R5PjwvaHRtbD4KKyIiIgorICAg
ICAgICBodG1sID0gcnVubmVyLl9yZXN1bHRzX2h0bWwoWyJ0ZXN0X3BhdGgiXSwge30sICJUaXRs
ZSIsIG92ZXJyaWRlX3RpbWU9InRpbWUiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGh0bWws
IGV4cGVjdGVkX2h0bWwpCisKKyAgICBkZWYgdGVzdF9zaGFyZF90ZXN0cyhzZWxmKToKKyAgICAg
ICAgIyBUZXN0IHRoYXQgX3NoYXJkX3Rlc3RzIGluIHRlc3RfcnVubmVyLlRlc3RSdW5uZXIgcmVh
bGx5CisgICAgICAgICMgcHV0IHRoZSBodHRwIHRlc3RzIGZpcnN0IGluIHRoZSBxdWV1ZS4KKyAg
ICAgICAgcnVubmVyID0gVGVzdFJ1bm5lcldyYXBwZXIocG9ydD1Nb2NrKCksIG9wdGlvbnM9TW9j
aygpLAorICAgICAgICAgICAgcHJpbnRlcj1Nb2NrKCkpCisKKyAgICAgICAgdGVzdF9saXN0ID0g
WworICAgICAgICAgICJMYXlvdXRUZXN0cy93ZWJzb2NrZXQvdGVzdHMvdW5pY29kZS5odG0iLAor
ICAgICAgICAgICJMYXlvdXRUZXN0cy9hbmltYXRpb25zL2tleWZyYW1lcy5odG1sIiwKKyAgICAg
ICAgICAiTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS92aWV3LXNvdXJjZS1uby1yZWZy
ZXNoLmh0bWwiLAorICAgICAgICAgICJMYXlvdXRUZXN0cy93ZWJzb2NrZXQvdGVzdHMvd2Vic29j
a2V0LXByb3RvY29sLWlnbm9yZWQuaHRtbCIsCisgICAgICAgICAgIkxheW91dFRlc3RzL2Zhc3Qv
Y3NzL2Rpc3BsYXktbm9uZS1pbmxpbmUtc3R5bGUtY2hhbmdlLWNyYXNoLmh0bWwiLAorICAgICAg
ICAgICJMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3N1cHBvcnRlZC14bWwt
Y29udGVudC10eXBlcy5odG1sIiwKKyAgICAgICAgICAiTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2
ZWwyL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQwMy5odG1sIiwKKyAgICAgICAgICAiTGF5b3V0VGVz
dHMvaWV0ZXN0Y2VudGVyL0phdmFzY3JpcHQvMTEuMS41XzQtNC1jLTEuaHRtbCIsCisgICAgICAg
ICAgIkxheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMi9odG1sL0hUTUxBbmNob3JFbGVtZW50MDYu
aHRtbCIsCisgICAgICAgIF0KKworICAgICAgICBleHBlY3RlZF90ZXN0c190b19odHRwX2xvY2sg
PSBzZXQoWworICAgICAgICAgICdMYXlvdXRUZXN0cy93ZWJzb2NrZXQvdGVzdHMvdW5pY29kZS5o
dG0nLAorICAgICAgICAgICdMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3ZpZXctc291
cmNlLW5vLXJlZnJlc2guaHRtbCcsCisgICAgICAgICAgJ0xheW91dFRlc3RzL3dlYnNvY2tldC90
ZXN0cy93ZWJzb2NrZXQtcHJvdG9jb2wtaWdub3JlZC5odG1sJywKKyAgICAgICAgICAnTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9zdXBwb3J0ZWQteG1sLWNvbnRlbnQtdHlw
ZXMuaHRtbCcsCisgICAgICAgIF0pCisKKyAgICAgICAgIyBGSVhNRTogSWRlYWxseSB0aGUgSFRU
UCB0ZXN0cyBkb24ndCBoYXZlIHRvIGFsbCBiZSBpbiBvbmUgc2hhcmQuCisgICAgICAgIHNpbmds
ZV90aHJlYWRfcmVzdWx0cyA9IHJ1bm5lci5fc2hhcmRfdGVzdHModGVzdF9saXN0LCBGYWxzZSkK
KyAgICAgICAgbXVsdGlfdGhyZWFkX3Jlc3VsdHMgPSBydW5uZXIuX3NoYXJkX3Rlc3RzKHRlc3Rf
bGlzdCwgVHJ1ZSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJ0ZXN0c190b19odHRwX2xv
Y2siLCBzaW5nbGVfdGhyZWFkX3Jlc3VsdHNbMF1bMF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoZXhwZWN0ZWRfdGVzdHNfdG9faHR0cF9sb2NrLCBzZXQoc2luZ2xlX3RocmVhZF9yZXN1bHRz
WzBdWzFdKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgidGVzdHNfdG9faHR0cF9sb2NrIiwg
bXVsdGlfdGhyZWFkX3Jlc3VsdHNbMF1bMF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhw
ZWN0ZWRfdGVzdHNfdG9faHR0cF9sb2NrLCBzZXQobXVsdGlfdGhyZWFkX3Jlc3VsdHNbMF1bMV0p
KQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbigpCmRp
ZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0
X3Rlc3RzLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtp
dF90ZXN0cy5weQppbmRleCA0MjZkMzlkOWYzOTM2NDY1YmMxNDlmNzE5YTE2MDU1ZjE4MWZhNDI0
Li5mN2U1MzMwMzMwYzQ3YjMwYTdkNGJlYzRkMTE3Yjk1ODcwZmY1NmMwIDEwMDc1NQotLS0gYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5Cisr
KyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMu
cHkKQEAgLTI4LDEyODAgKzI4LDI3IEBACiAjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
Ci0iIiJSdW4gbGF5b3V0IHRlc3RzLgotCi1UaGlzIGlzIGEgcG9ydCBvZiB0aGUgZXhpc3Rpbmcg
d2Via2l0IHRlc3Qgc2NyaXB0IHJ1bi13ZWJraXQtdGVzdHMuCi0KLVRoZSBUZXN0UnVubmVyIGNs
YXNzIHJ1bnMgYSBzZXJpZXMgb2YgdGVzdHMgKFRlc3RUeXBlIGludGVyZmFjZSkgYWdhaW5zdCBh
IHNldAotb2YgdGVzdCBmaWxlcy4gIElmIGEgdGVzdCBmaWxlIGZhaWxzIGEgVGVzdFR5cGUsIGl0
IHJldHVybnMgYSBsaXN0IFRlc3RGYWlsdXJlCi1vYmplY3RzIHRvIHRoZSBUZXN0UnVubmVyLiAg
VGhlIFRlc3RSdW5uZXIgdGhlbiBhZ2dyZWdhdGVzIHRoZSBUZXN0RmFpbHVyZXMgdG8KLWNyZWF0
ZSBhIGZpbmFsIHJlcG9ydC4KLQotVGhpcyBzY3JpcHQgcmVhZHMgc2V2ZXJhbCBmaWxlcywgaWYg
dGhleSBleGlzdCBpbiB0aGUgdGVzdF9saXN0cyBzdWJkaXJlY3RvcnkKLW5leHQgdG8gdGhpcyBz
Y3JpcHQgaXRzZWxmLiAgRWFjaCBzaG91bGQgY29udGFpbiBhIGxpc3Qgb2YgcGF0aHMgdG8gaW5k
aXZpZHVhbAotdGVzdHMgb3IgZW50aXJlIHN1YmRpcmVjdG9yaWVzIG9mIHRlc3RzLCByZWxhdGl2
ZSB0byB0aGUgb3V0ZXJtb3N0IHRlc3QKLWRpcmVjdG9yeS4gIEVudGlyZSBsaW5lcyBzdGFydGlu
ZyB3aXRoICcvLycgKGNvbW1lbnRzKSB3aWxsIGJlIGlnbm9yZWQuCi0KLUZvciBkZXRhaWxzIG9m
IHRoZSBmaWxlcycgY29udGVudHMgYW5kIHB1cnBvc2VzLCBzZWUgdGVzdF9saXN0cy9SRUFETUUu
Ci0iIiIKKyIiIlJ1biBsYXlvdXQgdGVzdHMuIiIiCiAKIGZyb20gX19mdXR1cmVfXyBpbXBvcnQg
d2l0aF9zdGF0ZW1lbnQKIAogaW1wb3J0IGNvZGVjcwogaW1wb3J0IGVycm5vCi1pbXBvcnQgZ2xv
YgogaW1wb3J0IGxvZ2dpbmcKLWltcG9ydCBtYXRoCiBpbXBvcnQgb3B0cGFyc2UKIGltcG9ydCBv
cwotaW1wb3J0IHBsYXRmb3JtCi1pbXBvcnQgUXVldWUKLWltcG9ydCByYW5kb20KLWltcG9ydCBy
ZQotaW1wb3J0IHNodXRpbAogaW1wb3J0IHNpZ25hbAogaW1wb3J0IHN5cwotaW1wb3J0IHRpbWUK
LWltcG9ydCB0cmFjZWJhY2sKIAotZnJvbSBsYXlvdXRfcGFja2FnZSBpbXBvcnQgZHVtcF9yZW5k
ZXJfdHJlZV90aHJlYWQKLWZyb20gbGF5b3V0X3BhY2thZ2UgaW1wb3J0IGpzb25fbGF5b3V0X3Jl
c3VsdHNfZ2VuZXJhdG9yCi1mcm9tIGxheW91dF9wYWNrYWdlIGltcG9ydCBtZXNzYWdlX2Jyb2tl
cgogZnJvbSBsYXlvdXRfcGFja2FnZSBpbXBvcnQgcHJpbnRpbmcKLWZyb20gbGF5b3V0X3BhY2th
Z2UgaW1wb3J0IHRlc3RfZXhwZWN0YXRpb25zCi1mcm9tIGxheW91dF9wYWNrYWdlIGltcG9ydCB0
ZXN0X2ZhaWx1cmVzCi1mcm9tIGxheW91dF9wYWNrYWdlIGltcG9ydCB0ZXN0X3Jlc3VsdHMKLWZy
b20gbGF5b3V0X3BhY2thZ2UgaW1wb3J0IHRlc3RfcmVzdWx0c191cGxvYWRlcgorZnJvbSBsYXlv
dXRfcGFja2FnZSBpbXBvcnQgdGVzdF9ydW5uZXIKIAogZnJvbSB3ZWJraXRweS5jb21tb24uc3lz
dGVtIGltcG9ydCB1c2VyCiBmcm9tIHdlYmtpdHB5LnRoaXJkcGFydHkgaW1wb3J0IHNpbXBsZWpz
b24KLWZyb20gd2Via2l0cHkudG9vbCBpbXBvcnQgZ3JhbW1hcgogCiBpbXBvcnQgcG9ydAogCi1f
bG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoIndlYmtpdHB5LmxheW91dF90ZXN0cy5ydW5fd2Via2l0
X3Rlc3RzIikKLQotIyBCdWlsZGVyIGJhc2UgVVJMIHdoZXJlIHdlIGhhdmUgdGhlIGFyY2hpdmVk
IHRlc3QgcmVzdWx0cy4KLUJVSUxERVJfQkFTRV9VUkwgPSAiaHR0cDovL2J1aWxkLmNocm9taXVt
Lm9yZy9idWlsZGJvdC9sYXlvdXRfdGVzdF9yZXN1bHRzLyIKLQotTEFZT1VUX1RFU1RTX0RJUkVD
VE9SWSA9ICJMYXlvdXRUZXN0cyIgKyBvcy5zZXAKLQotVGVzdEV4cGVjdGF0aW9uc0ZpbGUgPSB0
ZXN0X2V4cGVjdGF0aW9ucy5UZXN0RXhwZWN0YXRpb25zRmlsZQotCi0KLWNsYXNzIFRlc3RJbnB1
dDoKLSAgICAiIiJHcm91cHMgaW5mb3JtYXRpb24gYWJvdXQgYSB0ZXN0IGZvciBlYXN5IHBhc3Np
bmcgb2YgZGF0YS4iIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlbmFtZSwgdGltZW91
dCk6Ci0gICAgICAgICIiIkhvbGRzIHRoZSBpbnB1dCBwYXJhbWV0ZXJzIGZvciBhIHRlc3QuCi0g
ICAgICAgIEFyZ3M6Ci0gICAgICAgICAgZmlsZW5hbWU6IEZ1bGwgcGF0aCB0byB0aGUgdGVzdC4K
LSAgICAgICAgICB0aW1lb3V0OiBUaW1lb3V0IGluIG1zZWNzIHRoZSBkcml2ZXIgc2hvdWxkIHVz
ZSB3aGlsZSBydW5uaW5nIHRoZSB0ZXN0Ci0gICAgICAgICAgIiIiCi0gICAgICAgICMgRklYTUU6
IGZpbGVuYW1lIHNob3VsZCByZWFsbHkgYmUgdGVzdF9uYW1lIGFzIGEgcmVsYXRpdmUgcGF0aC4K
LSAgICAgICAgc2VsZi5maWxlbmFtZSA9IGZpbGVuYW1lCi0gICAgICAgIHNlbGYudGltZW91dCA9
IHRpbWVvdXQKLSAgICAgICAgIyBUaGUgaW1hZ2VfaGFzaCBpcyB1c2VkIHRvIGF2b2lkIGRvaW5n
IGFuIGltYWdlIGR1bXAgaWYgdGhlCi0gICAgICAgICMgY2hlY2tzdW1zIG1hdGNoLiBUaGUgaW1h
Z2VfaGFzaCBpcyBzZXQgbGF0ZXIsIGFuZCBvbmx5IGlmIGl0IGlzIG5lZWRlZAotICAgICAgICAj
IGZvciB0aGUgdGVzdC4KLSAgICAgICAgc2VsZi5pbWFnZV9oYXNoID0gTm9uZQotCi0KLWNsYXNz
IFRlc3RSdW5JbnRlcnJ1cHRlZEV4Y2VwdGlvbihFeGNlcHRpb24pOgotICAgICIiIlJhaXNlZCB3
aGVuIGEgdGVzdCBydW4gc2hvdWxkIGJlIHN0b3BwZWQgaW1tZWRpYXRlbHkuIiIiCi0gICAgZGVm
IF9faW5pdF9fKHNlbGYsIHJlYXNvbik6Ci0gICAgICAgIHNlbGYucmVhc29uID0gcmVhc29uCi0K
LQotY2xhc3MgUmVzdWx0U3VtbWFyeShvYmplY3QpOgotICAgICIiIkEgY2xhc3MgZm9yIHBhcnRp
dGlvbmluZyB0aGUgdGVzdCByZXN1bHRzIHdlIGdldCBpbnRvIGJ1Y2tldHMuCi0KLSAgICBUaGlz
IGNsYXNzIGlzIGJhc2ljYWxseSBhIGdsb3JpZmllZCBzdHJ1Y3QgYW5kIGl0J3MgcHJpdmF0ZSB0
byB0aGlzIGZpbGUKLSAgICBzbyB3ZSBkb24ndCBib3RoZXIgd2l0aCBhbnkgaW5mb3JtYXRpb24g
aGlkaW5nLiIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGV4cGVjdGF0aW9ucywgdGVzdF9m
aWxlcyk6Ci0gICAgICAgIHNlbGYudG90YWwgPSBsZW4odGVzdF9maWxlcykKLSAgICAgICAgc2Vs
Zi5yZW1haW5pbmcgPSBzZWxmLnRvdGFsCi0gICAgICAgIHNlbGYuZXhwZWN0YXRpb25zID0gZXhw
ZWN0YXRpb25zCi0gICAgICAgIHNlbGYuZXhwZWN0ZWQgPSAwCi0gICAgICAgIHNlbGYudW5leHBl
Y3RlZCA9IDAKLSAgICAgICAgc2VsZi51bmV4cGVjdGVkX2ZhaWx1cmVzID0gMAotICAgICAgICBz
ZWxmLnVuZXhwZWN0ZWRfY3Jhc2hlc19vcl90aW1lb3V0cyA9IDAKLSAgICAgICAgc2VsZi50ZXN0
c19ieV9leHBlY3RhdGlvbiA9IHt9Ci0gICAgICAgIHNlbGYudGVzdHNfYnlfdGltZWxpbmUgPSB7
fQotICAgICAgICBzZWxmLnJlc3VsdHMgPSB7fQotICAgICAgICBzZWxmLnVuZXhwZWN0ZWRfcmVz
dWx0cyA9IHt9Ci0gICAgICAgIHNlbGYuZmFpbHVyZXMgPSB7fQotICAgICAgICBzZWxmLnRlc3Rz
X2J5X2V4cGVjdGF0aW9uW3Rlc3RfZXhwZWN0YXRpb25zLlNLSVBdID0gc2V0KCkKLSAgICAgICAg
Zm9yIGV4cGVjdGF0aW9uIGluIFRlc3RFeHBlY3RhdGlvbnNGaWxlLkVYUEVDVEFUSU9OUy52YWx1
ZXMoKToKLSAgICAgICAgICAgIHNlbGYudGVzdHNfYnlfZXhwZWN0YXRpb25bZXhwZWN0YXRpb25d
ID0gc2V0KCkKLSAgICAgICAgZm9yIHRpbWVsaW5lIGluIFRlc3RFeHBlY3RhdGlvbnNGaWxlLlRJ
TUVMSU5FUy52YWx1ZXMoKToKLSAgICAgICAgICAgIHNlbGYudGVzdHNfYnlfdGltZWxpbmVbdGlt
ZWxpbmVdID0gKAotICAgICAgICAgICAgICAgIGV4cGVjdGF0aW9ucy5nZXRfdGVzdHNfd2l0aF90
aW1lbGluZSh0aW1lbGluZSkpCi0KLSAgICBkZWYgYWRkKHNlbGYsIHJlc3VsdCwgZXhwZWN0ZWQp
OgotICAgICAgICAiIiJBZGQgYSBUZXN0UmVzdWx0IGludG8gdGhlIGFwcHJvcHJpYXRlIGJpbi4K
LQotICAgICAgICBBcmdzOgotICAgICAgICAgIHJlc3VsdDogVGVzdFJlc3VsdAotICAgICAgICAg
IGV4cGVjdGVkOiB3aGV0aGVyIHRoZSByZXN1bHQgd2FzIHdoYXQgd2UgZXhwZWN0ZWQgaXQgdG8g
YmUuCi0gICAgICAgICIiIgotCi0gICAgICAgIHNlbGYudGVzdHNfYnlfZXhwZWN0YXRpb25bcmVz
dWx0LnR5cGVdLmFkZChyZXN1bHQuZmlsZW5hbWUpCi0gICAgICAgIHNlbGYucmVzdWx0c1tyZXN1
bHQuZmlsZW5hbWVdID0gcmVzdWx0Ci0gICAgICAgIHNlbGYucmVtYWluaW5nIC09IDEKLSAgICAg
ICAgaWYgbGVuKHJlc3VsdC5mYWlsdXJlcyk6Ci0gICAgICAgICAgICBzZWxmLmZhaWx1cmVzW3Jl
c3VsdC5maWxlbmFtZV0gPSByZXN1bHQuZmFpbHVyZXMKLSAgICAgICAgaWYgZXhwZWN0ZWQ6Ci0g
ICAgICAgICAgICBzZWxmLmV4cGVjdGVkICs9IDEKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAg
IHNlbGYudW5leHBlY3RlZF9yZXN1bHRzW3Jlc3VsdC5maWxlbmFtZV0gPSByZXN1bHQudHlwZQot
ICAgICAgICAgICAgc2VsZi51bmV4cGVjdGVkICs9IDEKLSAgICAgICAgICAgIGlmIGxlbihyZXN1
bHQuZmFpbHVyZXMpOgotICAgICAgICAgICAgICAgIHNlbGYudW5leHBlY3RlZF9mYWlsdXJlcyAr
PSAxCi0gICAgICAgICAgICBpZiByZXN1bHQudHlwZSA9PSB0ZXN0X2V4cGVjdGF0aW9ucy5DUkFT
SCBvciByZXN1bHQudHlwZSA9PSB0ZXN0X2V4cGVjdGF0aW9ucy5USU1FT1VUOgotICAgICAgICAg
ICAgICAgIHNlbGYudW5leHBlY3RlZF9jcmFzaGVzX29yX3RpbWVvdXRzICs9IDEKLQotCi1kZWYg
c3VtbWFyaXplX3VuZXhwZWN0ZWRfcmVzdWx0cyhwb3J0X29iaiwgZXhwZWN0YXRpb25zLCByZXN1
bHRfc3VtbWFyeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHJ5X3N1bW1h
cnkpOgotICAgICIiIlN1bW1hcml6ZSBhbnkgdW5leHBlY3RlZCByZXN1bHRzIGFzIGEgZGljdC4K
LQotICAgIEZJWE1FOiBzcGxpdCB0aGlzIGRhdGEgc3RydWN0dXJlIGludG8gYSBzZXBhcmF0ZSBj
bGFzcz8KLQotICAgIEFyZ3M6Ci0gICAgICAgIHBvcnRfb2JqOiBpbnRlcmZhY2UgdG8gcG9ydC1z
cGVjaWZpYyBob29rcwotICAgICAgICBleHBlY3RhdGlvbnM6IHRlc3RfZXhwZWN0YXRpb25zLlRl
c3RFeHBlY3RhdGlvbnMgb2JqZWN0Ci0gICAgICAgIHJlc3VsdF9zdW1tYXJ5OiBzdW1tYXJ5IG9i
amVjdCBmcm9tIGluaXRpYWwgdGVzdCBydW5zCi0gICAgICAgIHJldHJ5X3N1bW1hcnk6IHN1bW1h
cnkgb2JqZWN0IGZyb20gZmluYWwgdGVzdCBydW4gb2YgcmV0cmllZCB0ZXN0cwotICAgIFJldHVy
bnM6Ci0gICAgICAgIEEgZGljdGlvbmFyeSBjb250YWluaW5nIGEgc3VtbWFyeSBvZiB0aGUgdW5l
eHBlY3RlZCByZXN1bHRzIGZyb20gdGhlCi0gICAgICAgIHJ1biwgd2l0aCB0aGUgZm9sbG93aW5n
IGZpZWxkczoKLSAgICAgICAgJ3ZlcnNpb24nOiBhIHZlcnNpb24gaW5kaWNhdG9yICgxIGluIHRo
aXMgdmVyc2lvbikKLSAgICAgICAgJ2ZpeGFibGUnOiAjIG9mIGZpeGFibGUgdGVzdHMgKE5PVyAt
IFBBU1MpCi0gICAgICAgICdza2lwcGVkJzogIyBvZiBza2lwcGVkIHRlc3RzIChOT1cgJiBTS0lQ
UEVEKQotICAgICAgICAnbnVtX3JlZ3Jlc3Npb25zJzogIyBvZiBub24tZmxha3kgZmFpbHVyZXMK
LSAgICAgICAgJ251bV9mbGFreSc6ICMgb2YgZmxha3kgZmFpbHVyZXMKLSAgICAgICAgJ251bV9w
YXNzZXMnOiAjIG9mIHVuZXhwZWN0ZWQgcGFzc2VzCi0gICAgICAgICd0ZXN0cyc6IGEgZGljdCBv
ZiB0ZXN0cyAtPiB7J2V4cGVjdGVkJzogJy4uLicsICdhY3R1YWwnOiAnLi4uJ30KLSAgICAiIiIK
LSAgICByZXN1bHRzID0ge30KLSAgICByZXN1bHRzWyd2ZXJzaW9uJ10gPSAxCi0KLSAgICB0YmUg
PSByZXN1bHRfc3VtbWFyeS50ZXN0c19ieV9leHBlY3RhdGlvbgotICAgIHRidCA9IHJlc3VsdF9z
dW1tYXJ5LnRlc3RzX2J5X3RpbWVsaW5lCi0gICAgcmVzdWx0c1snZml4YWJsZSddID0gbGVuKHRi
dFt0ZXN0X2V4cGVjdGF0aW9ucy5OT1ddIC0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdGJlW3Rlc3RfZXhwZWN0YXRpb25zLlBBU1NdKQotICAgIHJlc3VsdHNbJ3NraXBwZWQnXSA9
IGxlbih0YnRbdGVzdF9leHBlY3RhdGlvbnMuTk9XXSAmCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRiZVt0ZXN0X2V4cGVjdGF0aW9ucy5TS0lQXSkKLQotICAgIG51bV9wYXNzZXMg
PSAwCi0gICAgbnVtX2ZsYWt5ID0gMAotICAgIG51bV9yZWdyZXNzaW9ucyA9IDAKLSAgICBrZXl3
b3JkcyA9IHt9Ci0gICAgZm9yIGssIHYgaW4gVGVzdEV4cGVjdGF0aW9uc0ZpbGUuRVhQRUNUQVRJ
T05TLml0ZXJpdGVtcygpOgotICAgICAgICBrZXl3b3Jkc1t2XSA9IGsudXBwZXIoKQotCi0gICAg
dGVzdHMgPSB7fQotICAgIGZvciBmaWxlbmFtZSwgcmVzdWx0IGluIHJlc3VsdF9zdW1tYXJ5LnVu
ZXhwZWN0ZWRfcmVzdWx0cy5pdGVyaXRlbXMoKToKLSAgICAgICAgIyBOb3RlIHRoYXQgaWYgYSB0
ZXN0IGNyYXNoZWQgaW4gdGhlIG9yaWdpbmFsIHJ1biwgd2UgaWdub3JlCi0gICAgICAgICMgd2hl
dGhlciBvciBub3QgaXQgY3Jhc2hlZCB3aGVuIHdlIHJldHJpZWQgaXQgKGlmIHdlIHJldHJpZWQg
aXQpLAotICAgICAgICAjIGFuZCBhbHdheXMgY29uc2lkZXIgdGhlIHJlc3VsdCBub3QgZmxha3ku
Ci0gICAgICAgIHRlc3QgPSBwb3J0X29iai5yZWxhdGl2ZV90ZXN0X2ZpbGVuYW1lKGZpbGVuYW1l
KQotICAgICAgICBleHBlY3RlZCA9IGV4cGVjdGF0aW9ucy5nZXRfZXhwZWN0YXRpb25zX3N0cmlu
ZyhmaWxlbmFtZSkKLSAgICAgICAgYWN0dWFsID0gW2tleXdvcmRzW3Jlc3VsdF1dCi0KLSAgICAg
ICAgaWYgcmVzdWx0ID09IHRlc3RfZXhwZWN0YXRpb25zLlBBU1M6Ci0gICAgICAgICAgICBudW1f
cGFzc2VzICs9IDEKLSAgICAgICAgZWxpZiByZXN1bHQgPT0gdGVzdF9leHBlY3RhdGlvbnMuQ1JB
U0g6Ci0gICAgICAgICAgICBudW1fcmVncmVzc2lvbnMgKz0gMQotICAgICAgICBlbHNlOgotICAg
ICAgICAgICAgaWYgZmlsZW5hbWUgbm90IGluIHJldHJ5X3N1bW1hcnkudW5leHBlY3RlZF9yZXN1
bHRzOgotICAgICAgICAgICAgICAgIGFjdHVhbC5leHRlbmQoZXhwZWN0YXRpb25zLmdldF9leHBl
Y3RhdGlvbnNfc3RyaW5nKAotICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZSkuc3BsaXQoIiAi
KSkKLSAgICAgICAgICAgICAgICBudW1fZmxha3kgKz0gMQotICAgICAgICAgICAgZWxzZToKLSAg
ICAgICAgICAgICAgICByZXRyeV9yZXN1bHQgPSByZXRyeV9zdW1tYXJ5LnVuZXhwZWN0ZWRfcmVz
dWx0c1tmaWxlbmFtZV0KLSAgICAgICAgICAgICAgICBpZiByZXN1bHQgIT0gcmV0cnlfcmVzdWx0
OgotICAgICAgICAgICAgICAgICAgICBhY3R1YWwuYXBwZW5kKGtleXdvcmRzW3JldHJ5X3Jlc3Vs
dF0pCi0gICAgICAgICAgICAgICAgICAgIG51bV9mbGFreSArPSAxCi0gICAgICAgICAgICAgICAg
ZWxzZToKLSAgICAgICAgICAgICAgICAgICAgbnVtX3JlZ3Jlc3Npb25zICs9IDEKLQotICAgICAg
ICB0ZXN0c1t0ZXN0XSA9IHt9Ci0gICAgICAgIHRlc3RzW3Rlc3RdWydleHBlY3RlZCddID0gZXhw
ZWN0ZWQKLSAgICAgICAgdGVzdHNbdGVzdF1bJ2FjdHVhbCddID0gIiAiLmpvaW4oYWN0dWFsKQot
Ci0gICAgcmVzdWx0c1sndGVzdHMnXSA9IHRlc3RzCi0gICAgcmVzdWx0c1snbnVtX3Bhc3Nlcydd
ID0gbnVtX3Bhc3NlcwotICAgIHJlc3VsdHNbJ251bV9mbGFreSddID0gbnVtX2ZsYWt5Ci0gICAg
cmVzdWx0c1snbnVtX3JlZ3Jlc3Npb25zJ10gPSBudW1fcmVncmVzc2lvbnMKLQotICAgIHJldHVy
biByZXN1bHRzCi0KLQotY2xhc3MgVGVzdFJ1bm5lcjoKLSAgICAiIiJBIGNsYXNzIGZvciBtYW5h
Z2luZyBydW5uaW5nIGEgc2VyaWVzIG9mIHRlc3RzIG9uIGEgc2VyaWVzIG9mIGxheW91dAotICAg
IHRlc3QgZmlsZXMuIiIiCi0KLSAgICBIVFRQX1NVQkRJUiA9IG9zLnNlcC5qb2luKFsnJywgJ2h0
dHAnLCAnJ10pCi0gICAgV0VCU09DS0VUX1NVQkRJUiA9IG9zLnNlcC5qb2luKFsnJywgJ3dlYnNv
Y2tldCcsICcnXSkKLQotICAgICMgVGhlIHBlci10ZXN0IHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRz
LCBpZiBubyAtLXRpbWUtb3V0LW1zIG9wdGlvbiB3YXMKLSAgICAjIGdpdmVuIHRvIHJ1bl93ZWJr
aXRfdGVzdHMuIFRoaXMgc2hvdWxkIGNvcnJlc3BvbmQgdG8gdGhlIGRlZmF1bHQgdGltZW91dAot
ICAgICMgaW4gRHVtcFJlbmRlclRyZWUuCi0gICAgREVGQVVMVF9URVNUX1RJTUVPVVRfTVMgPSA2
ICogMTAwMAotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHBvcnQsIG9wdGlvbnMsIHByaW50ZXIp
OgotICAgICAgICAiIiJJbml0aWFsaXplIHRlc3QgcnVubmVyIGRhdGEgc3RydWN0dXJlcy4KLQot
ICAgICAgICBBcmdzOgotICAgICAgICAgIHBvcnQ6IGFuIG9iamVjdCBpbXBsZW1lbnRpbmcgcG9y
dC1zcGVjaWZpYwotICAgICAgICAgIG9wdGlvbnM6IGEgZGljdGlvbmFyeSBvZiBjb21tYW5kIGxp
bmUgb3B0aW9ucwotICAgICAgICAgIHByaW50ZXI6IGEgUHJpbnRlciBvYmplY3QgdG8gcmVjb3Jk
IHVwZGF0ZXMgdG8uCi0gICAgICAgICIiIgotICAgICAgICBzZWxmLl9wb3J0ID0gcG9ydAotICAg
ICAgICBzZWxmLl9vcHRpb25zID0gb3B0aW9ucwotICAgICAgICBzZWxmLl9wcmludGVyID0gcHJp
bnRlcgotICAgICAgICBzZWxmLl9tZXNzYWdlX2Jyb2tlciA9IE5vbmUKLQotICAgICAgICAjIGRp
c2FibGUgd3NzIHNlcnZlci4gbmVlZCB0byBpbnN0YWxsIHB5T3BlblNTTCBvbiBidWlsZGJvdHMu
Ci0gICAgICAgICMgc2VsZi5fd2Vic29ja2V0X3NlY3VyZV9zZXJ2ZXIgPSB3ZWJzb2NrZXRfc2Vy
dmVyLlB5V2ViU29ja2V0KAotICAgICAgICAjICAgICAgICBvcHRpb25zLnJlc3VsdHNfZGlyZWN0
b3J5LCB1c2VfdGxzPVRydWUsIHBvcnQ9OTMyMykKLQotICAgICAgICAjIGEgc2V0IG9mIHRlc3Qg
ZmlsZXMsIGFuZCB0aGUgc2FtZSB0ZXN0cyBhcyBhIGxpc3QKLSAgICAgICAgc2VsZi5fdGVzdF9m
aWxlcyA9IHNldCgpCi0gICAgICAgIHNlbGYuX3Rlc3RfZmlsZXNfbGlzdCA9IE5vbmUKLSAgICAg
ICAgc2VsZi5fcmVzdWx0X3F1ZXVlID0gUXVldWUuUXVldWUoKQotICAgICAgICBzZWxmLl9yZXRy
eWluZyA9IEZhbHNlCi0KLSAgICBkZWYgY29sbGVjdF90ZXN0cyhzZWxmLCBhcmdzLCBsYXN0X3Vu
ZXhwZWN0ZWRfcmVzdWx0cyk6Ci0gICAgICAgICIiIkZpbmQgYWxsIHRoZSBmaWxlcyB0byB0ZXN0
LgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgYXJnczogbGlzdCBvZiB0ZXN0IGFyZ3VtZW50
cyBmcm9tIHRoZSBjb21tYW5kIGxpbmUKLSAgICAgICAgICBsYXN0X3VuZXhwZWN0ZWRfcmVzdWx0
czogbGlzdCBvZiB1bmV4cGVjdGVkIHJlc3VsdHMgdG8gcmV0ZXN0LCBpZiBhbnkKLQotICAgICAg
ICAiIiIKLSAgICAgICAgcGF0aHMgPSBbc2VsZi5fc3RyaXBfdGVzdF9kaXJfcHJlZml4KGFyZykg
Zm9yIGFyZyBpbiBhcmdzIGlmIGFyZyBhbmQgYXJnICE9ICcnXQotICAgICAgICBwYXRocyArPSBs
YXN0X3VuZXhwZWN0ZWRfcmVzdWx0cwotICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnRlc3RfbGlz
dDoKLSAgICAgICAgICAgIHBhdGhzICs9IHJlYWRfdGVzdF9maWxlcyhzZWxmLl9vcHRpb25zLnRl
c3RfbGlzdCkKLSAgICAgICAgc2VsZi5fdGVzdF9maWxlcyA9IHNlbGYuX3BvcnQudGVzdHMocGF0
aHMpCi0KLSAgICBkZWYgX3N0cmlwX3Rlc3RfZGlyX3ByZWZpeChzZWxmLCBwYXRoKToKLSAgICAg
ICAgaWYgcGF0aC5zdGFydHN3aXRoKExBWU9VVF9URVNUU19ESVJFQ1RPUlkpOgotICAgICAgICAg
ICAgcmV0dXJuIHBhdGhbbGVuKExBWU9VVF9URVNUU19ESVJFQ1RPUlkpOl0KLSAgICAgICAgcmV0
dXJuIHBhdGgKLQotICAgIGRlZiBsaW50KHNlbGYpOgotICAgICAgICBsaW50X2ZhaWxlZCA9IEZh
bHNlCi0KLSAgICAgICAgIyBDcmVhdGluZyB0aGUgZXhwZWNhdGlvbnMgZm9yIGVhY2ggcGxhdGZv
cm0vY29uZmlndXJhdGlvbiBwYWlyIGRvZXMKLSAgICAgICAgIyBhbGwgdGhlIHRlc3QgbGlzdCBw
YXJzaW5nIGFuZCBlbnN1cmVzIGl0J3MgY29ycmVjdCBzeW50YXggKGUuZy4gbm8KLSAgICAgICAg
IyBkdXBlcykuCi0gICAgICAgIGZvciBwbGF0Zm9ybV9uYW1lIGluIHNlbGYuX3BvcnQudGVzdF9w
bGF0Zm9ybV9uYW1lcygpOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHNlbGYu
cGFyc2VfZXhwZWN0YXRpb25zKHBsYXRmb3JtX25hbWUsIGlzX2RlYnVnX21vZGU9VHJ1ZSkKLSAg
ICAgICAgICAgIGV4Y2VwdCB0ZXN0X2V4cGVjdGF0aW9ucy5QYXJzZUVycm9yOgotICAgICAgICAg
ICAgICAgIGxpbnRfZmFpbGVkID0gVHJ1ZQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAg
ICAgIHNlbGYucGFyc2VfZXhwZWN0YXRpb25zKHBsYXRmb3JtX25hbWUsIGlzX2RlYnVnX21vZGU9
RmFsc2UpCi0gICAgICAgICAgICBleGNlcHQgdGVzdF9leHBlY3RhdGlvbnMuUGFyc2VFcnJvcjoK
LSAgICAgICAgICAgICAgICBsaW50X2ZhaWxlZCA9IFRydWUKLQotICAgICAgICBzZWxmLl9wcmlu
dGVyLndyaXRlKCIiKQotICAgICAgICBpZiBsaW50X2ZhaWxlZDoKLSAgICAgICAgICAgIF9sb2cu
ZXJyb3IoIkxpbnQgZmFpbGVkLiIpCi0gICAgICAgICAgICByZXR1cm4gLTEKLQotICAgICAgICBf
bG9nLmluZm8oIkxpbnQgc3VjY2VlZGVkLiIpCi0gICAgICAgIHJldHVybiAwCi0KLSAgICBkZWYg
cGFyc2VfZXhwZWN0YXRpb25zKHNlbGYsIHRlc3RfcGxhdGZvcm1fbmFtZSwgaXNfZGVidWdfbW9k
ZSk6Ci0gICAgICAgICIiIlBhcnNlIHRoZSBleHBlY3RhdGlvbnMgZnJvbSB0aGUgdGVzdF9saXN0
IGZpbGVzIGFuZCByZXR1cm4gYSBkYXRhCi0gICAgICAgIHN0cnVjdHVyZSBob2xkaW5nIHRoZW0u
IFRocm93cyBhbiBlcnJvciBpZiB0aGUgdGVzdF9saXN0IGZpbGVzIGhhdmUKLSAgICAgICAgaW52
YWxpZCBzeW50YXguIiIiCi0gICAgICAgIGlmIHNlbGYuX29wdGlvbnMubGludF90ZXN0X2ZpbGVz
OgotICAgICAgICAgICAgdGVzdF9maWxlcyA9IE5vbmUKLSAgICAgICAgZWxzZToKLSAgICAgICAg
ICAgIHRlc3RfZmlsZXMgPSBzZWxmLl90ZXN0X2ZpbGVzCi0KLSAgICAgICAgZXhwZWN0YXRpb25z
X3N0ciA9IHNlbGYuX3BvcnQudGVzdF9leHBlY3RhdGlvbnMoKQotICAgICAgICBvdmVycmlkZXNf
c3RyID0gc2VsZi5fcG9ydC50ZXN0X2V4cGVjdGF0aW9uc19vdmVycmlkZXMoKQotICAgICAgICBz
ZWxmLl9leHBlY3RhdGlvbnMgPSB0ZXN0X2V4cGVjdGF0aW9ucy5UZXN0RXhwZWN0YXRpb25zKAot
ICAgICAgICAgICAgc2VsZi5fcG9ydCwgdGVzdF9maWxlcywgZXhwZWN0YXRpb25zX3N0ciwgdGVz
dF9wbGF0Zm9ybV9uYW1lLAotICAgICAgICAgICAgaXNfZGVidWdfbW9kZSwgc2VsZi5fb3B0aW9u
cy5saW50X3Rlc3RfZmlsZXMsCi0gICAgICAgICAgICBvdmVycmlkZXM9b3ZlcnJpZGVzX3N0cikK
LSAgICAgICAgcmV0dXJuIHNlbGYuX2V4cGVjdGF0aW9ucwotCi0KLSAgICBkZWYgcHJlcGFyZV9s
aXN0c19hbmRfcHJpbnRfb3V0cHV0KHNlbGYpOgotICAgICAgICAiIiJDcmVhdGUgYXBwcm9wcmlh
dGUgc3Vic2V0cyBvZiB0ZXN0IGxpc3RzIGFuZCByZXR1cm5zIGEKLSAgICAgICAgUmVzdWx0U3Vt
bWFyeSBvYmplY3QuIEFsc28gcHJpbnRzIGV4cGVjdGVkIHRlc3QgY291bnRzLgotICAgICAgICAi
IiIKLQotICAgICAgICAjIFJlbW92ZSBza2lwcGVkIC0gYm90aCBmaXhhYmxlIGFuZCBpZ25vcmVk
IC0gZmlsZXMgZnJvbSB0aGUKLSAgICAgICAgIyB0b3AtbGV2ZWwgbGlzdCBvZiBmaWxlcyB0byB0
ZXN0LgotICAgICAgICBudW1fYWxsX3Rlc3RfZmlsZXMgPSBsZW4oc2VsZi5fdGVzdF9maWxlcykK
LSAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF9leHBlY3RlZCgiRm91bmQ6ICAlZCB0ZXN0cyIg
JQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZW4oc2VsZi5fdGVzdF9m
aWxlcykpKQotICAgICAgICBpZiBub3QgbnVtX2FsbF90ZXN0X2ZpbGVzOgotICAgICAgICAgICAg
X2xvZy5jcml0aWNhbCgnTm8gdGVzdHMgdG8gcnVuLicpCi0gICAgICAgICAgICByZXR1cm4gTm9u
ZQotCi0gICAgICAgIHNraXBwZWQgPSBzZXQoKQotICAgICAgICBpZiBudW1fYWxsX3Rlc3RfZmls
ZXMgPiAxIGFuZCBub3Qgc2VsZi5fb3B0aW9ucy5mb3JjZToKLSAgICAgICAgICAgIHNraXBwZWQg
PSBzZWxmLl9leHBlY3RhdGlvbnMuZ2V0X3Rlc3RzX3dpdGhfcmVzdWx0X3R5cGUoCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICB0ZXN0X2V4cGVjdGF0aW9ucy5TS0lQKQotICAgICAgICAgICAg
c2VsZi5fdGVzdF9maWxlcyAtPSBza2lwcGVkCi0KLSAgICAgICAgIyBDcmVhdGUgYSBzb3J0ZWQg
bGlzdCBvZiB0ZXN0IGZpbGVzIHNvIHRoZSBzdWJzZXQgY2h1bmssCi0gICAgICAgICMgaWYgdXNl
ZCwgY29udGFpbnMgYWxwaGFiZXRpY2FsbHkgY29uc2VjdXRpdmUgdGVzdHMuCi0gICAgICAgIHNl
bGYuX3Rlc3RfZmlsZXNfbGlzdCA9IGxpc3Qoc2VsZi5fdGVzdF9maWxlcykKLSAgICAgICAgaWYg
c2VsZi5fb3B0aW9ucy5yYW5kb21pemVfb3JkZXI6Ci0gICAgICAgICAgICByYW5kb20uc2h1ZmZs
ZShzZWxmLl90ZXN0X2ZpbGVzX2xpc3QpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxm
Ll90ZXN0X2ZpbGVzX2xpc3Quc29ydCgpCi0KLSAgICAgICAgIyBJZiB0aGUgdXNlciBzcGVjaWZp
ZXMgdGhleSBqdXN0IHdhbnQgdG8gcnVuIGEgc3Vic2V0IG9mIHRoZSB0ZXN0cywKLSAgICAgICAg
IyBqdXN0IGdyYWIgYSBzdWJzZXQgb2YgdGhlIG5vbi1za2lwcGVkIHRlc3RzLgotICAgICAgICBp
ZiBzZWxmLl9vcHRpb25zLnJ1bl9jaHVuayBvciBzZWxmLl9vcHRpb25zLnJ1bl9wYXJ0OgotICAg
ICAgICAgICAgY2h1bmtfdmFsdWUgPSBzZWxmLl9vcHRpb25zLnJ1bl9jaHVuayBvciBzZWxmLl9v
cHRpb25zLnJ1bl9wYXJ0Ci0gICAgICAgICAgICB0ZXN0X2ZpbGVzID0gc2VsZi5fdGVzdF9maWxl
c19saXN0Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgKGNodW5rX251bSwgY2h1
bmtfbGVuKSA9IGNodW5rX3ZhbHVlLnNwbGl0KCI6IikKLSAgICAgICAgICAgICAgICBjaHVua19u
dW0gPSBpbnQoY2h1bmtfbnVtKQotICAgICAgICAgICAgICAgIGFzc2VydChjaHVua19udW0gPj0g
MCkKLSAgICAgICAgICAgICAgICB0ZXN0X3NpemUgPSBpbnQoY2h1bmtfbGVuKQotICAgICAgICAg
ICAgICAgIGFzc2VydCh0ZXN0X3NpemUgPiAwKQotICAgICAgICAgICAgZXhjZXB0OgotICAgICAg
ICAgICAgICAgIF9sb2cuY3JpdGljYWwoImludmFsaWQgY2h1bmsgJyVzJyIgJSBjaHVua192YWx1
ZSkKLSAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgICAgICAgICAjIEdldCB0aGUg
bnVtYmVyIG9mIHRlc3RzCi0gICAgICAgICAgICBudW1fdGVzdHMgPSBsZW4odGVzdF9maWxlcykK
LQotICAgICAgICAgICAgIyBHZXQgdGhlIHN0YXJ0IG9mZnNldCBvZiB0aGUgc2xpY2UuCi0gICAg
ICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnJ1bl9jaHVuazoKLSAgICAgICAgICAgICAgICBjaHVu
a19sZW4gPSB0ZXN0X3NpemUKLSAgICAgICAgICAgICAgICAjIEluIHRoaXMgY2FzZSBjaHVua19u
dW0gY2FuIGJlIHJlYWxseSBsYXJnZS4gV2UgbmVlZAotICAgICAgICAgICAgICAgICMgdG8gbWFr
ZSB0aGUgc2xhdmUgZml0IGluIHRoZSBjdXJyZW50IG51bWJlciBvZiB0ZXN0cy4KLSAgICAgICAg
ICAgICAgICBzbGljZV9zdGFydCA9IChjaHVua19udW0gKiBjaHVua19sZW4pICUgbnVtX3Rlc3Rz
Ci0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICMgVmFsaWRhdGUgdGhlIGRhdGEu
Ci0gICAgICAgICAgICAgICAgYXNzZXJ0KHRlc3Rfc2l6ZSA8PSBudW1fdGVzdHMpCi0gICAgICAg
ICAgICAgICAgYXNzZXJ0KGNodW5rX251bSA8PSB0ZXN0X3NpemUpCi0KLSAgICAgICAgICAgICAg
ICAjIFRvIGNvdW50IHRoZSBjaHVua19sZW4sIGFuZCBtYWtlIHN1cmUgd2UgZG9uJ3Qgc2tpcAot
ICAgICAgICAgICAgICAgICMgc29tZSB0ZXN0cywgd2Ugcm91bmQgdG8gdGhlIG5leHQgdmFsdWUg
dGhhdCBmaXRzIGV4YWN0bHkKLSAgICAgICAgICAgICAgICAjIGFsbCB0aGUgcGFydHMuCi0gICAg
ICAgICAgICAgICAgcm91bmRlZF90ZXN0cyA9IG51bV90ZXN0cwotICAgICAgICAgICAgICAgIGlm
IHJvdW5kZWRfdGVzdHMgJSB0ZXN0X3NpemUgIT0gMDoKLSAgICAgICAgICAgICAgICAgICAgcm91
bmRlZF90ZXN0cyA9IChudW1fdGVzdHMgKyB0ZXN0X3NpemUgLQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIChudW1fdGVzdHMgJSB0ZXN0X3NpemUpKQotCi0gICAgICAgICAg
ICAgICAgY2h1bmtfbGVuID0gcm91bmRlZF90ZXN0cyAvIHRlc3Rfc2l6ZQotICAgICAgICAgICAg
ICAgIHNsaWNlX3N0YXJ0ID0gY2h1bmtfbGVuICogKGNodW5rX251bSAtIDEpCi0gICAgICAgICAg
ICAgICAgIyBJdCBkb2VzIG5vdCBtaW5kIGlmIHdlIGdvIG92ZXIgdGVzdF9zaXplLgotCi0gICAg
ICAgICAgICAjIEdldCB0aGUgZW5kIG9mZnNldCBvZiB0aGUgc2xpY2UuCi0gICAgICAgICAgICBz
bGljZV9lbmQgPSBtaW4obnVtX3Rlc3RzLCBzbGljZV9zdGFydCArIGNodW5rX2xlbikKLQotICAg
ICAgICAgICAgZmlsZXMgPSB0ZXN0X2ZpbGVzW3NsaWNlX3N0YXJ0OnNsaWNlX2VuZF0KLQotICAg
ICAgICAgICAgdGVzdHNfcnVuX21zZyA9ICdSdW5uaW5nOiAlZCB0ZXN0cyAoY2h1bmsgc2xpY2Ug
WyVkOiVkXSBvZiAlZCknICUgKAotICAgICAgICAgICAgICAgIChzbGljZV9lbmQgLSBzbGljZV9z
dGFydCksIHNsaWNlX3N0YXJ0LCBzbGljZV9lbmQsIG51bV90ZXN0cykKLSAgICAgICAgICAgIHNl
bGYuX3ByaW50ZXIucHJpbnRfZXhwZWN0ZWQodGVzdHNfcnVuX21zZykKLQotICAgICAgICAgICAg
IyBJZiB3ZSByZWFjaGVkIHRoZSBlbmQgYW5kIHdlIGRvbid0IGhhdmUgZW5vdWdoIHRlc3RzLCB3
ZSBydW4gc29tZQotICAgICAgICAgICAgIyBmcm9tIHRoZSBiZWdpbm5pbmcuCi0gICAgICAgICAg
ICBpZiBzbGljZV9lbmQgLSBzbGljZV9zdGFydCA8IGNodW5rX2xlbjoKLSAgICAgICAgICAgICAg
ICBleHRyYSA9IGNodW5rX2xlbiAtIChzbGljZV9lbmQgLSBzbGljZV9zdGFydCkKLSAgICAgICAg
ICAgICAgICBleHRyYV9tc2cgPSAoJyAgIGxhc3QgY2h1bmsgaXMgcGFydGlhbCwgYXBwZW5kaW5n
IFswOiVkXScgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhKQotICAgICAgICAg
ICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfZXhwZWN0ZWQoZXh0cmFfbXNnKQotICAgICAgICAg
ICAgICAgIHRlc3RzX3J1bl9tc2cgKz0gIlxuIiArIGV4dHJhX21zZwotICAgICAgICAgICAgICAg
IGZpbGVzLmV4dGVuZCh0ZXN0X2ZpbGVzWzA6ZXh0cmFdKQotICAgICAgICAgICAgdGVzdHNfcnVu
X2ZpbGVuYW1lID0gb3MucGF0aC5qb2luKHNlbGYuX29wdGlvbnMucmVzdWx0c19kaXJlY3Rvcnks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRlc3RzX3J1
bi50eHQiKQotICAgICAgICAgICAgd2l0aCBjb2RlY3Mub3Blbih0ZXN0c19ydW5fZmlsZW5hbWUs
ICJ3IiwgInV0Zi04IikgYXMgZmlsZToKLSAgICAgICAgICAgICAgICBmaWxlLndyaXRlKHRlc3Rz
X3J1bl9tc2cgKyAiXG4iKQotCi0gICAgICAgICAgICBsZW5fc2tpcF9jaHVuayA9IGludChsZW4o
ZmlsZXMpICogbGVuKHNraXBwZWQpIC8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZsb2F0KGxlbihzZWxmLl90ZXN0X2ZpbGVzKSkpCi0gICAgICAgICAgICBza2lwX2NodW5rX2xp
c3QgPSBsaXN0KHNraXBwZWQpWzA6bGVuX3NraXBfY2h1bmtdCi0gICAgICAgICAgICBza2lwX2No
dW5rID0gc2V0KHNraXBfY2h1bmtfbGlzdCkKLQotICAgICAgICAgICAgIyBVcGRhdGUgZXhwZWN0
YXRpb25zIHNvIHRoYXQgdGhlIHN0YXRzIGFyZSBjYWxjdWxhdGVkIGNvcnJlY3RseS4KLSAgICAg
ICAgICAgICMgV2UgbmVlZCB0byBwYXNzIGEgbGlzdCB0aGF0IGluY2x1ZGVzIHRoZSByaWdodCAj
IG9mIHNraXBwZWQgZmlsZXMKLSAgICAgICAgICAgICMgdG8gUGFyc2VFeHBlY3RhdGlvbnMgc28g
dGhhdCBSZXN1bHRTdW1tYXJ5KCkgd2lsbCBnZXQgdGhlIGNvcnJlY3QKLSAgICAgICAgICAgICMg
c3RhdHMuIFNvLCB3ZSBhZGQgaW4gdGhlIHN1YnNldCBvZiBza2lwcGVkIGZpbGVzLCBhbmQgdGhl
bgotICAgICAgICAgICAgIyBzdWJ0cmFjdCB0aGVtIGJhY2sgb3V0LgotICAgICAgICAgICAgc2Vs
Zi5fdGVzdF9maWxlc19saXN0ID0gZmlsZXMgKyBza2lwX2NodW5rX2xpc3QKLSAgICAgICAgICAg
IHNlbGYuX3Rlc3RfZmlsZXMgPSBzZXQoc2VsZi5fdGVzdF9maWxlc19saXN0KQotCi0gICAgICAg
ICAgICBzZWxmLl9leHBlY3RhdGlvbnMgPSBzZWxmLnBhcnNlX2V4cGVjdGF0aW9ucygKLSAgICAg
ICAgICAgICAgICBzZWxmLl9wb3J0LnRlc3RfcGxhdGZvcm1fbmFtZSgpLAotICAgICAgICAgICAg
ICAgIHNlbGYuX29wdGlvbnMuY29uZmlndXJhdGlvbiA9PSAnRGVidWcnKQotCi0gICAgICAgICAg
ICBzZWxmLl90ZXN0X2ZpbGVzID0gc2V0KGZpbGVzKQotICAgICAgICAgICAgc2VsZi5fdGVzdF9m
aWxlc19saXN0ID0gZmlsZXMKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNraXBfY2h1bmsg
PSBza2lwcGVkCi0KLSAgICAgICAgcmVzdWx0X3N1bW1hcnkgPSBSZXN1bHRTdW1tYXJ5KHNlbGYu
X2V4cGVjdGF0aW9ucywKLSAgICAgICAgICAgIHNlbGYuX3Rlc3RfZmlsZXMgfCBza2lwX2NodW5r
KQotICAgICAgICBzZWxmLl9wcmludF9leHBlY3RlZF9yZXN1bHRzX29mX3R5cGUocmVzdWx0X3N1
bW1hcnksCi0gICAgICAgICAgICB0ZXN0X2V4cGVjdGF0aW9ucy5QQVNTLCAicGFzc2VzIikKLSAg
ICAgICAgc2VsZi5fcHJpbnRfZXhwZWN0ZWRfcmVzdWx0c19vZl90eXBlKHJlc3VsdF9zdW1tYXJ5
LAotICAgICAgICAgICAgdGVzdF9leHBlY3RhdGlvbnMuRkFJTCwgImZhaWx1cmVzIikKLSAgICAg
ICAgc2VsZi5fcHJpbnRfZXhwZWN0ZWRfcmVzdWx0c19vZl90eXBlKHJlc3VsdF9zdW1tYXJ5LAot
ICAgICAgICAgICAgdGVzdF9leHBlY3RhdGlvbnMuRkxBS1ksICJmbGFreSIpCi0gICAgICAgIHNl
bGYuX3ByaW50X2V4cGVjdGVkX3Jlc3VsdHNfb2ZfdHlwZShyZXN1bHRfc3VtbWFyeSwKLSAgICAg
ICAgICAgIHRlc3RfZXhwZWN0YXRpb25zLlNLSVAsICJza2lwcGVkIikKLQotICAgICAgICBpZiBz
ZWxmLl9vcHRpb25zLmZvcmNlOgotICAgICAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF9leHBl
Y3RlZCgnUnVubmluZyBhbGwgdGVzdHMsIGluY2x1ZGluZyAnCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICdza2lwcyAoLS1mb3JjZSknKQotICAgICAgICBlbHNlOgot
ICAgICAgICAgICAgIyBOb3RlIHRoYXQgd2UgZG9uJ3QgYWN0dWFsbHkgcnVuIHRoZSBza2lwcGVk
IHRlc3RzICh0aGV5IHdlcmUKLSAgICAgICAgICAgICMgc3VidHJhY3RlZCBvdXQgb2Ygc2VsZi5f
dGVzdF9maWxlcywgYWJvdmUpLCBidXQgd2Ugc3R1YiBvdXQgdGhlCi0gICAgICAgICAgICAjIHJl
c3VsdHMgaGVyZSBzbyB0aGUgc3RhdGlzdGljcyBjYW4gcmVtYWluIGFjY3VyYXRlLgotICAgICAg
ICAgICAgZm9yIHRlc3QgaW4gc2tpcF9jaHVuazoKLSAgICAgICAgICAgICAgICByZXN1bHQgPSB0
ZXN0X3Jlc3VsdHMuVGVzdFJlc3VsdCh0ZXN0LAotICAgICAgICAgICAgICAgICAgICBmYWlsdXJl
cz1bXSwgdGVzdF9ydW5fdGltZT0wLCB0b3RhbF90aW1lX2Zvcl9hbGxfZGlmZnM9MCwKLSAgICAg
ICAgICAgICAgICAgICAgdGltZV9mb3JfZGlmZnM9MCkKLSAgICAgICAgICAgICAgICByZXN1bHQu
dHlwZSA9IHRlc3RfZXhwZWN0YXRpb25zLlNLSVAKLSAgICAgICAgICAgICAgICByZXN1bHRfc3Vt
bWFyeS5hZGQocmVzdWx0LCBleHBlY3RlZD1UcnVlKQotICAgICAgICBzZWxmLl9wcmludGVyLnBy
aW50X2V4cGVjdGVkKCcnKQotCi0gICAgICAgIHJldHVybiByZXN1bHRfc3VtbWFyeQotCi0gICAg
ZGVmIF9nZXRfZGlyX2Zvcl90ZXN0X2ZpbGUoc2VsZiwgdGVzdF9maWxlKToKLSAgICAgICAgIiIi
UmV0dXJucyB0aGUgaGlnaGVzdC1sZXZlbCBkaXJlY3RvcnkgYnkgd2hpY2ggdG8gc2hhcmQgdGhl
IGdpdmVuCi0gICAgICAgIHRlc3QgZmlsZS4iIiIKLSAgICAgICAgaW5kZXggPSB0ZXN0X2ZpbGUu
cmZpbmQob3Muc2VwICsgTEFZT1VUX1RFU1RTX0RJUkVDVE9SWSkKLQotICAgICAgICB0ZXN0X2Zp
bGUgPSB0ZXN0X2ZpbGVbaW5kZXggKyBsZW4oTEFZT1VUX1RFU1RTX0RJUkVDVE9SWSk6XQotICAg
ICAgICB0ZXN0X2ZpbGVfcGFydHMgPSB0ZXN0X2ZpbGUuc3BsaXQob3Muc2VwLCAxKQotICAgICAg
ICBkaXJlY3RvcnkgPSB0ZXN0X2ZpbGVfcGFydHNbMF0KLSAgICAgICAgdGVzdF9maWxlID0gdGVz
dF9maWxlX3BhcnRzWzFdCi0KLSAgICAgICAgIyBUaGUgaHR0cCB0ZXN0cyBhcmUgdmVyeSBzdGFi
bGUgb24gbWFjL2xpbnV4LgotICAgICAgICAjIFRPRE8ob2phbik6IE1ha2UgdGhlIGh0dHAgc2Vy
dmVyIG9uIFdpbmRvd3MgYmUgYXBhY2hlIHNvIHdlIGNhbgotICAgICAgICAjIHR1cm4gc2hhcmQg
dGhlIGh0dHAgdGVzdHMgdGhlcmUgYXMgd2VsbC4gU3dpdGNoaW5nIHRvIGFwYWNoZSBpcwotICAg
ICAgICAjIHdoYXQgbWFkZSB0aGVtIHN0YWJsZSBvbiBsaW51eC9tYWMuCi0gICAgICAgIHJldHVy
bl92YWx1ZSA9IGRpcmVjdG9yeQotICAgICAgICB3aGlsZSAoKGRpcmVjdG9yeSAhPSAnaHR0cCcg
b3Igc3lzLnBsYXRmb3JtIGluICgnZGFyd2luJywgJ2xpbnV4MicpKQotICAgICAgICAgICAgICAg
IGFuZCB0ZXN0X2ZpbGUuZmluZChvcy5zZXApID49IDApOgotICAgICAgICAgICAgdGVzdF9maWxl
X3BhcnRzID0gdGVzdF9maWxlLnNwbGl0KG9zLnNlcCwgMSkKLSAgICAgICAgICAgIGRpcmVjdG9y
eSA9IHRlc3RfZmlsZV9wYXJ0c1swXQotICAgICAgICAgICAgcmV0dXJuX3ZhbHVlID0gb3MucGF0
aC5qb2luKHJldHVybl92YWx1ZSwgZGlyZWN0b3J5KQotICAgICAgICAgICAgdGVzdF9maWxlID0g
dGVzdF9maWxlX3BhcnRzWzFdCi0KLSAgICAgICAgcmV0dXJuIHJldHVybl92YWx1ZQotCi0gICAg
ZGVmIF9nZXRfdGVzdF9pbnB1dF9mb3JfZmlsZShzZWxmLCB0ZXN0X2ZpbGUpOgotICAgICAgICAi
IiJSZXR1cm5zIHRoZSBhcHByb3ByaWF0ZSBUZXN0SW5wdXQgb2JqZWN0IGZvciB0aGUgZmlsZS4g
TW9zdGx5IHRoaXMKLSAgICAgICAgaXMgdXNlZCBmb3IgbG9va2luZyB1cCB0aGUgdGltZW91dCB2
YWx1ZSAoaW4gbXMpIHRvIHVzZSBmb3IgdGhlIGdpdmVuCi0gICAgICAgIHRlc3QuIiIiCi0gICAg
ICAgIGlmIHNlbGYuX3Rlc3RfaXNfc2xvdyh0ZXN0X2ZpbGUpOgotICAgICAgICAgICAgcmV0dXJu
IFRlc3RJbnB1dCh0ZXN0X2ZpbGUsIHNlbGYuX29wdGlvbnMuc2xvd190aW1lX291dF9tcykKLSAg
ICAgICAgcmV0dXJuIFRlc3RJbnB1dCh0ZXN0X2ZpbGUsIHNlbGYuX29wdGlvbnMudGltZV9vdXRf
bXMpCi0KLSAgICBkZWYgX3Rlc3RfcmVxdWlyZXNfbG9jayhzZWxmLCB0ZXN0X2ZpbGUpOgotICAg
ICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiB0aGUgdGVzdCBuZWVkcyB0byBiZSBsb2NrZWQgd2hlbgot
ICAgICAgICBydW5uaW5nIG11bHRpcGxlIGNvcGllcyBvZiBOUldUcy4iIiIKLSAgICAgICAgc3Bs
aXRfcGF0aCA9IHRlc3RfZmlsZS5zcGxpdChvcy5zZXApCi0gICAgICAgIHJldHVybiAnaHR0cCcg
aW4gc3BsaXRfcGF0aCBvciAnd2Vic29ja2V0JyBpbiBzcGxpdF9wYXRoCi0KLSAgICBkZWYgX3Rl
c3RfaXNfc2xvdyhzZWxmLCB0ZXN0X2ZpbGUpOgotICAgICAgICByZXR1cm4gc2VsZi5fZXhwZWN0
YXRpb25zLmhhc19tb2RpZmllcih0ZXN0X2ZpbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRlc3RfZXhwZWN0YXRpb25zLlNMT1cpCi0KLSAgICBkZWYg
X3NoYXJkX3Rlc3RzKHNlbGYsIHRlc3RfZmlsZXMsIHVzZV9yZWFsX3NoYXJkcyk6Ci0gICAgICAg
ICIiIkdyb3VwcyB0ZXN0cyBpbnRvIGJhdGNoZXMuCi0gICAgICAgIFRoaXMgaGVscHMgZW5zdXJl
IHRoYXQgdGVzdHMgdGhhdCBkZXBlbmQgb24gZWFjaCBvdGhlciAoYWthIGJhZCB0ZXN0cyEpCi0g
ICAgICAgIGNvbnRpbnVlIHRvIHJ1biB0b2dldGhlciBhcyBtb3N0IGNyb3NzLXRlc3RzIGRlcGVu
ZGVuY2llcyB0ZW5kIHRvCi0gICAgICAgIG9jY3VyIHdpdGhpbiB0aGUgc2FtZSBkaXJlY3Rvcnku
IElmIHVzZV9yZWFsX3NoYXJkcyBpcyBGYWxzZSwgd2UKLSAgICAgICAgcHV0IGVhY2ggKG5vbi1I
VFRQL3dlYnNvY2tldCkgdGVzdCBpbnRvIGl0cyBvd24gc2hhcmQgZm9yIG1heGltdW0KLSAgICAg
ICAgY29uY3VycmVuY3kgaW5zdGVhZCBvZiB0cnlpbmcgdG8gZG8gYW55IHNvcnQgb2YgcmVhbCBz
aGFyZGluZy4KLQotICAgICAgICBSZXR1cm46Ci0gICAgICAgICAgICBBIGxpc3Qgb2YgbGlzdHMg
b2YgVGVzdElucHV0IG9iamVjdHMuCi0gICAgICAgICIiIgotICAgICAgICAjIEZJWE1FOiB3aGVu
IHdlIGFkZGVkIGh0dHAgbG9ja2luZywgd2UgY2hhbmdlZCBob3cgdGhpcyB3b3JrcyBzdWNoCi0g
ICAgICAgICMgdGhhdCB3ZSBhbHdheXMgbHVtcCBhbGwgb2YgdGhlIEhUVFAgdGhyZWFkcyBpbnRv
IGEgc2luZ2xlIHNoYXJkLgotICAgICAgICAjIFRoYXQgd2lsbCBzbG93IGRvd24gZXhwZXJpbWVu
dGFsLWZ1bGx5LXBhcmFsbGVsLCBidXQgaXQncyB1bmNsZWFyCi0gICAgICAgICMgd2hhdCB0aGUg
YmVzdCBhbHRlcm5hdGl2ZSBpcyBjb21wbGV0ZWx5IHJldmFtcGluZyBob3cgd2UgdHJhY2sKLSAg
ICAgICAgIyB3aGVuIHRvIGdyYWIgdGhlIGxvY2suCi0KLSAgICAgICAgdGVzdF9saXN0cyA9IFtd
Ci0gICAgICAgIHRlc3RzX3RvX2h0dHBfbG9jayA9IFtdCi0gICAgICAgIGlmIG5vdCB1c2VfcmVh
bF9zaGFyZHM6Ci0gICAgICAgICAgICBmb3IgdGVzdF9maWxlIGluIHRlc3RfZmlsZXM6Ci0gICAg
ICAgICAgICAgICAgdGVzdF9pbnB1dCA9IHNlbGYuX2dldF90ZXN0X2lucHV0X2Zvcl9maWxlKHRl
c3RfZmlsZSkKLSAgICAgICAgICAgICAgICBpZiBzZWxmLl90ZXN0X3JlcXVpcmVzX2xvY2sodGVz
dF9maWxlKToKLSAgICAgICAgICAgICAgICAgICAgdGVzdHNfdG9faHR0cF9sb2NrLmFwcGVuZCh0
ZXN0X2lucHV0KQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHRl
c3RfbGlzdHMuYXBwZW5kKCgiLiIsIFt0ZXN0X2lucHV0XSkpCi0gICAgICAgIGVsc2U6Ci0gICAg
ICAgICAgICB0ZXN0c19ieV9kaXIgPSB7fQotICAgICAgICAgICAgZm9yIHRlc3RfZmlsZSBpbiB0
ZXN0X2ZpbGVzOgotICAgICAgICAgICAgICAgIGRpcmVjdG9yeSA9IHNlbGYuX2dldF9kaXJfZm9y
X3Rlc3RfZmlsZSh0ZXN0X2ZpbGUpCi0gICAgICAgICAgICAgICAgdGVzdF9pbnB1dCA9IHNlbGYu
X2dldF90ZXN0X2lucHV0X2Zvcl9maWxlKHRlc3RfZmlsZSkKLSAgICAgICAgICAgICAgICBpZiBz
ZWxmLl90ZXN0X3JlcXVpcmVzX2xvY2sodGVzdF9maWxlKToKLSAgICAgICAgICAgICAgICAgICAg
dGVzdHNfdG9faHR0cF9sb2NrLmFwcGVuZCh0ZXN0X2lucHV0KQotICAgICAgICAgICAgICAgIGVs
c2U6Ci0gICAgICAgICAgICAgICAgICAgIHRlc3RzX2J5X2Rpci5zZXRkZWZhdWx0KGRpcmVjdG9y
eSwgW10pCi0gICAgICAgICAgICAgICAgICAgIHRlc3RzX2J5X2RpcltkaXJlY3RvcnldLmFwcGVu
ZCh0ZXN0X2lucHV0KQotICAgICAgICAgICAgIyBTb3J0IGJ5IHRoZSBudW1iZXIgb2YgdGVzdHMg
aW4gdGhlIGRpciBzbyB0aGF0IHRoZSBvbmVzIHdpdGggdGhlCi0gICAgICAgICAgICAjIG1vc3Qg
dGVzdHMgZ2V0IHJ1biBmaXJzdCBpbiBvcmRlciB0byBtYXhpbWl6ZSBwYXJhbGxlbGl6YXRpb24u
Ci0gICAgICAgICAgICAjIE51bWJlciBvZiB0ZXN0cyBpcyBhIGdvb2QgZW5vdWdoLCBidXQgbm90
IHBlcmZlY3QsIGFwcHJveGltYXRpb24KLSAgICAgICAgICAgICMgb2YgaG93IGxvbmcgdGhhdCBz
ZXQgb2YgdGVzdHMgd2lsbCB0YWtlIHRvIHJ1bi4gV2UgY2FuJ3QganVzdCB1c2UKLSAgICAgICAg
ICAgICMgYSBQcmlvcml0eVF1ZXVlIHVudGlsIHdlIG1vdmUgdG8gUHl0aG9uIDIuNi4KLSAgICAg
ICAgICAgIGZvciBkaXJlY3RvcnkgaW4gdGVzdHNfYnlfZGlyOgotICAgICAgICAgICAgICAgIHRl
c3RfbGlzdCA9IHRlc3RzX2J5X2RpcltkaXJlY3RvcnldCi0gICAgICAgICAgICAgICAgIyBLZWVw
IHRoZSB0ZXN0cyBpbiBhbHBoYWJldGljYWwgb3JkZXIuCi0gICAgICAgICAgICAgICAgIyBGSVhN
RTogUmVtb3ZlIG9uY2UgdGVzdHMgYXJlIGZpeGVkIHNvIHRoZXkgY2FuIGJlIHJ1biBpbiBhbnkK
LSAgICAgICAgICAgICAgICAjIG9yZGVyLgotICAgICAgICAgICAgICAgIHRlc3RfbGlzdC5yZXZl
cnNlKCkKLSAgICAgICAgICAgICAgICB0ZXN0X2xpc3RfdHVwbGUgPSAoZGlyZWN0b3J5LCB0ZXN0
X2xpc3QpCi0gICAgICAgICAgICAgICAgdGVzdF9saXN0cy5hcHBlbmQodGVzdF9saXN0X3R1cGxl
KQotICAgICAgICAgICAgdGVzdF9saXN0cy5zb3J0KGxhbWJkYSBhLCBiOiBjbXAobGVuKGJbMV0p
LCBsZW4oYVsxXSkpKQotCi0gICAgICAgICMgUHV0IHRoZSBodHRwIHRlc3RzIGZpcnN0LiBUaGVy
ZSBhcmUgb25seSBhIGNvdXBsZSBodW5kcmVkIG9mIHRoZW0sCi0gICAgICAgICMgYnV0IGVhY2gg
aHR0cCB0ZXN0IHRha2VzIGEgdmVyeSBsb25nIHRpbWUgdG8gcnVuLCBzbyBzb3J0aW5nIGJ5IHRo
ZQotICAgICAgICAjIG51bWJlciBvZiB0ZXN0cyBkb2Vzbid0IGFjY3VyYXRlbHkgY2FwdHVyZSBo
b3cgbG9uZyB0aGV5IHRha2UgdG8gcnVuLgotICAgICAgICBpZiB0ZXN0c190b19odHRwX2xvY2s6
Ci0gICAgICAgICAgICB0ZXN0c190b19odHRwX2xvY2sucmV2ZXJzZSgpCi0gICAgICAgICAgICB0
ZXN0X2xpc3RzLmluc2VydCgwLCAoInRlc3RzX3RvX2h0dHBfbG9jayIsIHRlc3RzX3RvX2h0dHBf
bG9jaykpCi0KLSAgICAgICAgcmV0dXJuIHRlc3RfbGlzdHMKLQotICAgIGRlZiBfY29udGFpbnNf
dGVzdHMoc2VsZiwgc3ViZGlyKToKLSAgICAgICAgZm9yIHRlc3RfZmlsZSBpbiBzZWxmLl90ZXN0
X2ZpbGVzOgotICAgICAgICAgICAgaWYgdGVzdF9maWxlLmZpbmQoc3ViZGlyKSA+PSAwOgotICAg
ICAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgZGVm
IF9udW1fd29ya2VycyhzZWxmKToKLSAgICAgICAgcmV0dXJuIGludChzZWxmLl9vcHRpb25zLmNo
aWxkX3Byb2Nlc3NlcykKLQotICAgIGRlZiBfcnVuX3Rlc3RzKHNlbGYsIGZpbGVfbGlzdCwgcmVz
dWx0X3N1bW1hcnkpOgotICAgICAgICAiIiJSdW5zIHRoZSB0ZXN0cyBpbiB0aGUgZmlsZV9saXN0
LgotCi0gICAgICAgIFJldHVybjogQSB0dXBsZSAoaW50ZXJydXB0ZWQsIGtleWJvYXJkX2ludGVy
cnVwdGVkLCB0aHJlYWRfdGltaW5ncywKLSAgICAgICAgICAgIHRlc3RfdGltaW5ncywgaW5kaXZp
ZHVhbF90ZXN0X3RpbWluZ3MpCi0gICAgICAgICAgICBpbnRlcnJ1cHRlZCBpcyB3aGV0aGVyIHRo
ZSBydW4gd2FzIGludGVycnVwdGVkCi0gICAgICAgICAgICBrZXlib2FyZF9pbnRlcnJ1cHRlZCBp
cyB3aGV0aGVyIHRoZSBpbnRlcnJ1cHRpb24gd2FzIGJlY2F1c2Ugc29tZW9uZQotICAgICAgICAg
ICAgICB0eXBlZCBDdHJsXkMKLSAgICAgICAgICAgIHRocmVhZF90aW1pbmdzIGlzIGEgbGlzdCBv
ZiBkaWN0cyB3aXRoIHRoZSB0b3RhbCBydW50aW1lCi0gICAgICAgICAgICAgIG9mIGVhY2ggdGhy
ZWFkIHdpdGggJ25hbWUnLCAnbnVtX3Rlc3RzJywgJ3RvdGFsX3RpbWUnIHByb3BlcnRpZXMKLSAg
ICAgICAgICAgIHRlc3RfdGltaW5ncyBpcyBhIGxpc3Qgb2YgdGltaW5ncyBmb3IgZWFjaCBzaGFy
ZGVkIHN1YmRpcmVjdG9yeQotICAgICAgICAgICAgICBvZiB0aGUgZm9ybSBbdGltZSwgZGlyZWN0
b3J5X25hbWUsIG51bV90ZXN0c10KLSAgICAgICAgICAgIGluZGl2aWR1YWxfdGVzdF90aW1pbmdz
IGlzIGEgbGlzdCBvZiBydW4gdGltZXMgZm9yIGVhY2ggdGVzdAotICAgICAgICAgICAgICBpbiB0
aGUgZm9ybSB7ZmlsZW5hbWU6ZmlsZW5hbWUsIHRlc3RfcnVuX3RpbWU6dGVzdF9ydW5fdGltZX0K
LSAgICAgICAgICAgIHJlc3VsdF9zdW1tYXJ5OiBzdW1tYXJ5IG9iamVjdCB0byBwb3B1bGF0ZSB3
aXRoIHRoZSByZXN1bHRzCi0gICAgICAgICIiIgotCi0gICAgICAgIHNlbGYuX3ByaW50ZXIucHJp
bnRfdXBkYXRlKCdTaGFyZGluZyB0ZXN0cyAuLi4nKQotICAgICAgICBudW1fd29ya2VycyA9IHNl
bGYuX251bV93b3JrZXJzKCkKLSAgICAgICAgdGVzdF9saXN0cyA9IHNlbGYuX3NoYXJkX3Rlc3Rz
KGZpbGVfbGlzdCwKLSAgICAgICAgICAgIG51bV93b3JrZXJzID4gMSBhbmQgbm90IHNlbGYuX29w
dGlvbnMuZXhwZXJpbWVudGFsX2Z1bGx5X3BhcmFsbGVsKQotICAgICAgICBmaWxlbmFtZV9xdWV1
ZSA9IFF1ZXVlLlF1ZXVlKCkKLSAgICAgICAgZm9yIGl0ZW0gaW4gdGVzdF9saXN0czoKLSAgICAg
ICAgICAgIGZpbGVuYW1lX3F1ZXVlLnB1dChpdGVtKQotCi0gICAgICAgIHNlbGYuX3ByaW50ZXIu
cHJpbnRfdXBkYXRlKCdTdGFydGluZyAlcyAuLi4nICUKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZ3JhbW1hci5wbHVyYWxpemUoJ3dvcmtlcicsIG51bV93b3JrZXJzKSkKLSAg
ICAgICAgc2VsZi5fbWVzc2FnZV9icm9rZXIgPSBtZXNzYWdlX2Jyb2tlci5nZXQoc2VsZi5fcG9y
dCwgc2VsZi5fb3B0aW9ucykKLSAgICAgICAgYnJva2VyID0gc2VsZi5fbWVzc2FnZV9icm9rZXIK
LSAgICAgICAgc2VsZi5fY3VycmVudF9maWxlbmFtZV9xdWV1ZSA9IGZpbGVuYW1lX3F1ZXVlCi0g
ICAgICAgIHNlbGYuX2N1cnJlbnRfcmVzdWx0X3N1bW1hcnkgPSByZXN1bHRfc3VtbWFyeQotCi0g
ICAgICAgIGlmIG5vdCBzZWxmLl9vcHRpb25zLmRyeV9ydW46Ci0gICAgICAgICAgICB0aHJlYWRz
ID0gYnJva2VyLnN0YXJ0X3dvcmtlcnMoc2VsZikKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAg
IHRocmVhZHMgPSB7fQotCi0gICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfdXBkYXRlKCJTdGFy
dGluZyB0ZXN0aW5nIC4uLiIpCi0gICAgICAgIGtleWJvYXJkX2ludGVycnVwdGVkID0gRmFsc2UK
LSAgICAgICAgaW50ZXJydXB0ZWQgPSBGYWxzZQotICAgICAgICBpZiBub3Qgc2VsZi5fb3B0aW9u
cy5kcnlfcnVuOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGJyb2tlci5ydW5f
bWVzc2FnZV9sb29wKCkKLSAgICAgICAgICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKLSAg
ICAgICAgICAgICAgICBfbG9nLmluZm8oIkludGVycnVwdGVkLCBleGl0aW5nIikKLSAgICAgICAg
ICAgICAgICBicm9rZXIuY2FuY2VsX3dvcmtlcnMoKQotICAgICAgICAgICAgICAgIGtleWJvYXJk
X2ludGVycnVwdGVkID0gVHJ1ZQotICAgICAgICAgICAgICAgIGludGVycnVwdGVkID0gVHJ1ZQot
ICAgICAgICAgICAgZXhjZXB0IFRlc3RSdW5JbnRlcnJ1cHRlZEV4Y2VwdGlvbiwgZToKLSAgICAg
ICAgICAgICAgICBfbG9nLmluZm8oZS5yZWFzb24pCi0gICAgICAgICAgICAgICAgYnJva2VyLmNh
bmNlbF93b3JrZXJzKCkKLSAgICAgICAgICAgICAgICBpbnRlcnJ1cHRlZCA9IFRydWUKLSAgICAg
ICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgICAgICAjIFVuZXhwZWN0ZWQgZXhjZXB0aW9uOyBk
b24ndCB0cnkgdG8gY2xlYW4gdXAgd29ya2Vycy4KLSAgICAgICAgICAgICAgICBfbG9nLmluZm8o
IkV4Y2VwdGlvbiByYWlzZWQsIGV4aXRpbmciKQotICAgICAgICAgICAgICAgIHJhaXNlCi0KLSAg
ICAgICAgdGhyZWFkX3RpbWluZ3MsIHRlc3RfdGltaW5ncywgaW5kaXZpZHVhbF90ZXN0X3RpbWlu
Z3MgPSBcCi0gICAgICAgICAgICBzZWxmLl9jb2xsZWN0X3RpbWluZ19pbmZvKHRocmVhZHMpCi0K
LSAgICAgICAgYnJva2VyLmNsZWFudXAoKQotICAgICAgICBzZWxmLl9tZXNzYWdlX2Jyb2tlciA9
IE5vbmUKLSAgICAgICAgcmV0dXJuIChpbnRlcnJ1cHRlZCwga2V5Ym9hcmRfaW50ZXJydXB0ZWQs
IHRocmVhZF90aW1pbmdzLCB0ZXN0X3RpbWluZ3MsCi0gICAgICAgICAgICAgICAgaW5kaXZpZHVh
bF90ZXN0X3RpbWluZ3MpCi0KLSAgICBkZWYgdXBkYXRlKHNlbGYpOgotICAgICAgICBzZWxmLnVw
ZGF0ZV9zdW1tYXJ5KHNlbGYuX2N1cnJlbnRfcmVzdWx0X3N1bW1hcnkpCi0KLSAgICBkZWYgX2Nv
bGxlY3RfdGltaW5nX2luZm8oc2VsZiwgdGhyZWFkcyk6Ci0gICAgICAgIHRlc3RfdGltaW5ncyA9
IHt9Ci0gICAgICAgIGluZGl2aWR1YWxfdGVzdF90aW1pbmdzID0gW10KLSAgICAgICAgdGhyZWFk
X3RpbWluZ3MgPSBbXQotCi0gICAgICAgIGZvciB0aHJlYWQgaW4gdGhyZWFkczoKLSAgICAgICAg
ICAgIHRocmVhZF90aW1pbmdzLmFwcGVuZCh7J25hbWUnOiB0aHJlYWQuZ2V0TmFtZSgpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbnVtX3Rlc3RzJzogdGhyZWFkLmdldF9u
dW1fdGVzdHMoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RvdGFsX3Rp
bWUnOiB0aHJlYWQuZ2V0X3RvdGFsX3RpbWUoKX0pCi0gICAgICAgICAgICB0ZXN0X3RpbWluZ3Mu
dXBkYXRlKHRocmVhZC5nZXRfdGVzdF9ncm91cF90aW1pbmdfc3RhdHMoKSkKLSAgICAgICAgICAg
IGluZGl2aWR1YWxfdGVzdF90aW1pbmdzLmV4dGVuZCh0aHJlYWQuZ2V0X3Rlc3RfcmVzdWx0cygp
KQotCi0gICAgICAgIHJldHVybiAodGhyZWFkX3RpbWluZ3MsIHRlc3RfdGltaW5ncywgaW5kaXZp
ZHVhbF90ZXN0X3RpbWluZ3MpCi0KLSAgICBkZWYgbmVlZHNfaHR0cChzZWxmKToKLSAgICAgICAg
IiIiUmV0dXJucyB3aGV0aGVyIHRoZSB0ZXN0IHJ1bm5lciBuZWVkcyBhbiBIVFRQIHNlcnZlci4i
IiIKLSAgICAgICAgcmV0dXJuIHNlbGYuX2NvbnRhaW5zX3Rlc3RzKHNlbGYuSFRUUF9TVUJESVIp
Ci0KLSAgICBkZWYgbmVlZHNfd2Vic29ja2V0KHNlbGYpOgotICAgICAgICAiIiJSZXR1cm5zIHdo
ZXRoZXIgdGhlIHRlc3QgcnVubmVyIG5lZWRzIGEgV0VCU09DS0VUIHNlcnZlci4iIiIKLSAgICAg
ICAgcmV0dXJuIHNlbGYuX2NvbnRhaW5zX3Rlc3RzKHNlbGYuV0VCU09DS0VUX1NVQkRJUikKLQot
ICAgIGRlZiBzZXRfdXBfcnVuKHNlbGYpOgotICAgICAgICAiIiJDb25maWd1cmVzIHRoZSBzeXN0
ZW0gdG8gYmUgcmVhZHkgdG8gcnVuIHRlc3RzLgotCi0gICAgICAgIFJldHVybnMgYSBSZXN1bHRT
dW1tYXJ5IG9iamVjdCBpZiB3ZSBzaG91bGQgY29udGludWUgdG8gcnVuIHRlc3RzLAotICAgICAg
ICBvciBOb25lIGlmIHdlIHNob3VsZCBhYm9ydC4KLQotICAgICAgICAiIiIKLSAgICAgICAgIyBU
aGlzIG11c3QgYmUgc3RhcnRlZCBiZWZvcmUgd2UgY2hlY2sgdGhlIHN5c3RlbSBkZXBlbmRlbmNp
ZXMsCi0gICAgICAgICMgc2luY2UgdGhlIGhlbHBlciBtYXkgZG8gdGhpbmdzIHRvIG1ha2UgdGhl
IHNldHVwIGNvcnJlY3QuCi0gICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfdXBkYXRlKCJTdGFy
dGluZyBoZWxwZXIgLi4uIikKLSAgICAgICAgc2VsZi5fcG9ydC5zdGFydF9oZWxwZXIoKQotCi0g
ICAgICAgICMgQ2hlY2sgdGhhdCB0aGUgc3lzdGVtIGRlcGVuZGVuY2llcyAodGhlbWVzLCBmb250
cywgLi4uKSBhcmUgY29ycmVjdC4KLSAgICAgICAgaWYgbm90IHNlbGYuX29wdGlvbnMubm9jaGVj
a19zeXNfZGVwczoKLSAgICAgICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfdXBkYXRlKCJDaGVj
a2luZyBzeXN0ZW0gZGVwZW5kZW5jaWVzIC4uLiIpCi0gICAgICAgICAgICBpZiBub3Qgc2VsZi5f
cG9ydC5jaGVja19zeXNfZGVwcyhzZWxmLm5lZWRzX2h0dHAoKSk6Ci0gICAgICAgICAgICAgICAg
c2VsZi5fcG9ydC5zdG9wX2hlbHBlcigpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKLQot
ICAgICAgICBpZiBzZWxmLl9vcHRpb25zLmNsb2JiZXJfb2xkX3Jlc3VsdHM6Ci0gICAgICAgICAg
ICBzZWxmLl9jbG9iYmVyX29sZF9yZXN1bHRzKCkKLQotICAgICAgICAjIENyZWF0ZSB0aGUgb3V0
cHV0IGRpcmVjdG9yeSBpZiBpdCBkb2Vzbid0IGFscmVhZHkgZXhpc3QuCi0gICAgICAgIHNlbGYu
X3BvcnQubWF5YmVfbWFrZV9kaXJlY3Rvcnkoc2VsZi5fb3B0aW9ucy5yZXN1bHRzX2RpcmVjdG9y
eSkKLQotICAgICAgICBzZWxmLl9wb3J0LnNldHVwX3Rlc3RfcnVuKCkKLQotICAgICAgICBzZWxm
Ll9wcmludGVyLnByaW50X3VwZGF0ZSgiUHJlcGFyaW5nIHRlc3RzIC4uLiIpCi0gICAgICAgIHJl
c3VsdF9zdW1tYXJ5ID0gc2VsZi5wcmVwYXJlX2xpc3RzX2FuZF9wcmludF9vdXRwdXQoKQotICAg
ICAgICBpZiBub3QgcmVzdWx0X3N1bW1hcnk6Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQotCi0g
ICAgICAgIHJldHVybiByZXN1bHRfc3VtbWFyeQotCi0gICAgZGVmIHJ1bihzZWxmLCByZXN1bHRf
c3VtbWFyeSk6Ci0gICAgICAgICIiIlJ1biBhbGwgb3VyIHRlc3RzIG9uIGFsbCBvdXIgdGVzdCBm
aWxlcy4KLQotICAgICAgICBGb3IgZWFjaCB0ZXN0IGZpbGUsIHdlIHJ1biBlYWNoIHRlc3QgdHlw
ZS4gSWYgdGhlcmUgYXJlIGFueSBmYWlsdXJlcywKLSAgICAgICAgd2UgY29sbGVjdCB0aGVtIGZv
ciByZXBvcnRpbmcuCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICByZXN1bHRfc3VtbWFyeTog
YSBzdW1tYXJ5IG9iamVjdCB0cmFja2luZyB0aGUgdGVzdCByZXN1bHRzLgotCi0gICAgICAgIFJl
dHVybjoKLSAgICAgICAgICBUaGUgbnVtYmVyIG9mIHVuZXhwZWN0ZWQgcmVzdWx0cyAoMCA9PSBz
dWNjZXNzKQotICAgICAgICAiIiIKLSAgICAgICAgIyBnYXRoZXJfdGVzdF9maWxlcygpIG11c3Qg
aGF2ZSBiZWVuIGNhbGxlZCBmaXJzdCB0byBpbml0aWFsaXplIHVzLgotICAgICAgICAjIElmIHdl
IGRpZG4ndCBmaW5kIGFueSBmaWxlcyB0byB0ZXN0LCB3ZSd2ZSBlcnJvcmVkIG91dCBhbHJlYWR5
IGluCi0gICAgICAgICMgcHJlcGFyZV9saXN0c19hbmRfcHJpbnRfb3V0cHV0KCkuCi0gICAgICAg
IGFzc2VydChsZW4oc2VsZi5fdGVzdF9maWxlcykpCi0KLSAgICAgICAgc3RhcnRfdGltZSA9IHRp
bWUudGltZSgpCi0KLSAgICAgICAgaW50ZXJydXB0ZWQsIGtleWJvYXJkX2ludGVycnVwdGVkLCB0
aHJlYWRfdGltaW5ncywgdGVzdF90aW1pbmdzLCBcCi0gICAgICAgICAgICBpbmRpdmlkdWFsX3Rl
c3RfdGltaW5ncyA9ICgKLSAgICAgICAgICAgIHNlbGYuX3J1bl90ZXN0cyhzZWxmLl90ZXN0X2Zp
bGVzX2xpc3QsIHJlc3VsdF9zdW1tYXJ5KSkKLQotICAgICAgICAjIFdlIGV4Y2x1ZGUgdGhlIGNy
YXNoZXMgZnJvbSB0aGUgbGlzdCBvZiByZXN1bHRzIHRvIHJldHJ5LCBiZWNhdXNlCi0gICAgICAg
ICMgd2Ugd2FudCB0byB0cmVhdCBldmVuIGEgcG90ZW50aWFsbHkgZmxha3kgY3Jhc2ggYXMgYW4g
ZXJyb3IuCi0gICAgICAgIGZhaWx1cmVzID0gc2VsZi5fZ2V0X2ZhaWx1cmVzKHJlc3VsdF9zdW1t
YXJ5LCBpbmNsdWRlX2NyYXNoZXM9RmFsc2UpCi0gICAgICAgIHJldHJ5X3N1bW1hcnkgPSByZXN1
bHRfc3VtbWFyeQotICAgICAgICB3aGlsZSAobGVuKGZhaWx1cmVzKSBhbmQgc2VsZi5fb3B0aW9u
cy5yZXRyeV9mYWlsdXJlcyBhbmQKLSAgICAgICAgICAgIG5vdCBzZWxmLl9yZXRyeWluZyBhbmQg
bm90IGludGVycnVwdGVkKToKLSAgICAgICAgICAgIF9sb2cuaW5mbygnJykKLSAgICAgICAgICAg
IF9sb2cuaW5mbygiUmV0cnlpbmcgJWQgdW5leHBlY3RlZCBmYWlsdXJlKHMpIC4uLiIgJSBsZW4o
ZmFpbHVyZXMpKQotICAgICAgICAgICAgX2xvZy5pbmZvKCcnKQotICAgICAgICAgICAgc2VsZi5f
cmV0cnlpbmcgPSBUcnVlCi0gICAgICAgICAgICByZXRyeV9zdW1tYXJ5ID0gUmVzdWx0U3VtbWFy
eShzZWxmLl9leHBlY3RhdGlvbnMsIGZhaWx1cmVzLmtleXMoKSkKLSAgICAgICAgICAgICMgTm90
ZSB0aGF0IHdlIGludGVudGlvbmFsbHkgaWdub3JlIHRoZSByZXR1cm4gdmFsdWUgaGVyZS4KLSAg
ICAgICAgICAgIHNlbGYuX3J1bl90ZXN0cyhmYWlsdXJlcy5rZXlzKCksIHJldHJ5X3N1bW1hcnkp
Ci0gICAgICAgICAgICBmYWlsdXJlcyA9IHNlbGYuX2dldF9mYWlsdXJlcyhyZXRyeV9zdW1tYXJ5
LCBpbmNsdWRlX2NyYXNoZXM9VHJ1ZSkKLQotICAgICAgICBlbmRfdGltZSA9IHRpbWUudGltZSgp
Ci0KLSAgICAgICAgc2VsZi5fcHJpbnRfdGltaW5nX3N0YXRpc3RpY3MoZW5kX3RpbWUgLSBzdGFy
dF90aW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJlYWRfdGlt
aW5ncywgdGVzdF90aW1pbmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbmRpdmlkdWFsX3Rlc3RfdGltaW5ncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVzdWx0X3N1bW1hcnkpCi0KLSAgICAgICAgc2VsZi5fcHJpbnRfcmVzdWx0X3N1
bW1hcnkocmVzdWx0X3N1bW1hcnkpCi0KLSAgICAgICAgc3lzLnN0ZG91dC5mbHVzaCgpCi0gICAg
ICAgIHN5cy5zdGRlcnIuZmx1c2goKQotCi0gICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfb25l
X2xpbmVfc3VtbWFyeShyZXN1bHRfc3VtbWFyeS50b3RhbCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdF9zdW1tYXJ5LmV4cGVjdGVkLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0X3N1bW1hcnkudW5l
eHBlY3RlZCkKLQotICAgICAgICB1bmV4cGVjdGVkX3Jlc3VsdHMgPSBzdW1tYXJpemVfdW5leHBl
Y3RlZF9yZXN1bHRzKHNlbGYuX3BvcnQsCi0gICAgICAgICAgICBzZWxmLl9leHBlY3RhdGlvbnMs
IHJlc3VsdF9zdW1tYXJ5LCByZXRyeV9zdW1tYXJ5KQotICAgICAgICBzZWxmLl9wcmludGVyLnBy
aW50X3VuZXhwZWN0ZWRfcmVzdWx0cyh1bmV4cGVjdGVkX3Jlc3VsdHMpCi0KLSAgICAgICAgaWYg
KHNlbGYuX29wdGlvbnMucmVjb3JkX3Jlc3VsdHMgYW5kIG5vdCBzZWxmLl9vcHRpb25zLmRyeV9y
dW4gYW5kCi0gICAgICAgICAgICBub3QgaW50ZXJydXB0ZWQpOgotICAgICAgICAgICAgIyBXcml0
ZSB0aGUgc2FtZSBkYXRhIHRvIGxvZyBmaWxlcyBhbmQgdXBsb2FkIGdlbmVyYXRlZCBKU09OIGZp
bGVzCi0gICAgICAgICAgICAjIHRvIGFwcGVuZ2luZSBzZXJ2ZXIuCi0gICAgICAgICAgICBzZWxm
Ll91cGxvYWRfanNvbl9maWxlcyh1bmV4cGVjdGVkX3Jlc3VsdHMsIHJlc3VsdF9zdW1tYXJ5LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kaXZpZHVhbF90ZXN0X3RpbWlu
Z3MpCi0KLSAgICAgICAgIyBXcml0ZSB0aGUgc3VtbWFyeSB0byBkaXNrIChyZXN1bHRzLmh0bWwp
IGFuZCBkaXNwbGF5IGl0IGlmIHJlcXVlc3RlZC4KLSAgICAgICAgaWYgbm90IHNlbGYuX29wdGlv
bnMuZHJ5X3J1bjoKLSAgICAgICAgICAgIHdyb3RlX3Jlc3VsdHMgPSBzZWxmLl93cml0ZV9yZXN1
bHRzX2h0bWxfZmlsZShyZXN1bHRfc3VtbWFyeSkKLSAgICAgICAgICAgIGlmIHNlbGYuX29wdGlv
bnMuc2hvd19yZXN1bHRzIGFuZCB3cm90ZV9yZXN1bHRzOgotICAgICAgICAgICAgICAgIHNlbGYu
X3Nob3dfcmVzdWx0c19odG1sX2ZpbGUoKQotCi0gICAgICAgICMgTm93IHRoYXQgd2UndmUgY29t
cGxldGVkIGFsbCB0aGUgcHJvY2Vzc2luZyB3ZSBjYW4sIHdlIHJlLXJhaXNlCi0gICAgICAgICMg
YSBLZXlib2FyZEludGVycnVwdCBpZiBuZWNlc3Nhcnkgc28gdGhlIGNhbGxlciBjYW4gaGFuZGxl
IGl0LgotICAgICAgICBpZiBrZXlib2FyZF9pbnRlcnJ1cHRlZDoKLSAgICAgICAgICAgIHJhaXNl
IEtleWJvYXJkSW50ZXJydXB0Ci0KLSAgICAgICAgIyBJZ25vcmUgZmxha3kgZmFpbHVyZXMgYW5k
IHVuZXhwZWN0ZWQgcGFzc2VzIHNvIHdlIGRvbid0IHR1cm4gdGhlCi0gICAgICAgICMgYm90IHJl
ZCBmb3IgdGhvc2UuCi0gICAgICAgIHJldHVybiB1bmV4cGVjdGVkX3Jlc3VsdHNbJ251bV9yZWdy
ZXNzaW9ucyddCi0KLSAgICBkZWYgY2xlYW5fdXBfcnVuKHNlbGYpOgotICAgICAgICAiIiJSZXN0
b3JlcyB0aGUgc3lzdGVtIGFmdGVyIHdlJ3JlIGRvbmUgcnVubmluZyB0ZXN0cy4iIiIKLQotICAg
ICAgICBfbG9nLmRlYnVnKCJmbHVzaGluZyBzdGRvdXQiKQotICAgICAgICBzeXMuc3Rkb3V0LmZs
dXNoKCkKLSAgICAgICAgX2xvZy5kZWJ1ZygiZmx1c2hpbmcgc3RkZXJyIikKLSAgICAgICAgc3lz
LnN0ZGVyci5mbHVzaCgpCi0gICAgICAgIF9sb2cuZGVidWcoInN0b3BwaW5nIGhlbHBlciIpCi0g
ICAgICAgIHNlbGYuX3BvcnQuc3RvcF9oZWxwZXIoKQotCi0gICAgZGVmIHVwZGF0ZV9zdW1tYXJ5
KHNlbGYsIHJlc3VsdF9zdW1tYXJ5KToKLSAgICAgICAgIiIiVXBkYXRlIHRoZSBzdW1tYXJ5IGFu
ZCBwcmludCByZXN1bHRzIHdpdGggYW55IGNvbXBsZXRlZCB0ZXN0cy4iIiIKLSAgICAgICAgd2hp
bGUgVHJ1ZToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICByZXN1bHQgPSB0ZXN0
X3Jlc3VsdHMuVGVzdFJlc3VsdC5sb2FkcyhzZWxmLl9yZXN1bHRfcXVldWUuZ2V0X25vd2FpdCgp
KQotICAgICAgICAgICAgZXhjZXB0IFF1ZXVlLkVtcHR5OgotICAgICAgICAgICAgICAgIHJldHVy
bgotCi0gICAgICAgICAgICBleHBlY3RlZCA9IHNlbGYuX2V4cGVjdGF0aW9ucy5tYXRjaGVzX2Fu
X2V4cGVjdGVkX3Jlc3VsdCgKLSAgICAgICAgICAgICAgICByZXN1bHQuZmlsZW5hbWUsIHJlc3Vs
dC50eXBlLCBzZWxmLl9vcHRpb25zLnBpeGVsX3Rlc3RzKQotICAgICAgICAgICAgcmVzdWx0X3N1
bW1hcnkuYWRkKHJlc3VsdCwgZXhwZWN0ZWQpCi0gICAgICAgICAgICBleHBfc3RyID0gc2VsZi5f
ZXhwZWN0YXRpb25zLmdldF9leHBlY3RhdGlvbnNfc3RyaW5nKAotICAgICAgICAgICAgICAgIHJl
c3VsdC5maWxlbmFtZSkKLSAgICAgICAgICAgIGdvdF9zdHIgPSBzZWxmLl9leHBlY3RhdGlvbnMu
ZXhwZWN0YXRpb25fdG9fc3RyaW5nKHJlc3VsdC50eXBlKQotICAgICAgICAgICAgc2VsZi5fcHJp
bnRlci5wcmludF90ZXN0X3Jlc3VsdChyZXN1bHQsIGV4cGVjdGVkLCBleHBfc3RyLCBnb3Rfc3Ry
KQotICAgICAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF9wcm9ncmVzcyhyZXN1bHRfc3VtbWFy
eSwgc2VsZi5fcmV0cnlpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNlbGYuX3Rlc3RfZmlsZXNfbGlzdCkKLQotICAgICAgICAgICAgZGVmIGludGVycnVwdF9p
Zl9hdF9mYWlsdXJlX2xpbWl0KGxpbWl0LCBjb3VudCwgbWVzc2FnZSk6Ci0gICAgICAgICAgICAg
ICAgaWYgbGltaXQgYW5kIGNvdW50ID49IGxpbWl0OgotICAgICAgICAgICAgICAgICAgICByYWlz
ZSBUZXN0UnVuSW50ZXJydXB0ZWRFeGNlcHRpb24obWVzc2FnZSAlIGNvdW50KQotCi0gICAgICAg
ICAgICBpbnRlcnJ1cHRfaWZfYXRfZmFpbHVyZV9saW1pdCgKLSAgICAgICAgICAgICAgICBzZWxm
Ll9vcHRpb25zLmV4aXRfYWZ0ZXJfbl9mYWlsdXJlcywKLSAgICAgICAgICAgICAgICByZXN1bHRf
c3VtbWFyeS51bmV4cGVjdGVkX2ZhaWx1cmVzLAotICAgICAgICAgICAgICAgICJBYm9ydGluZyBy
dW4gc2luY2UgJWQgZmFpbHVyZXMgd2VyZSByZWFjaGVkIikKLSAgICAgICAgICAgIGludGVycnVw
dF9pZl9hdF9mYWlsdXJlX2xpbWl0KAotICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMuZXhp
dF9hZnRlcl9uX2NyYXNoZXNfb3JfdGltZW91dHMsCi0gICAgICAgICAgICAgICAgcmVzdWx0X3N1
bW1hcnkudW5leHBlY3RlZF9jcmFzaGVzX29yX3RpbWVvdXRzLAotICAgICAgICAgICAgICAgICJB
Ym9ydGluZyBydW4gc2luY2UgJWQgY3Jhc2hlcyBvciB0aW1lb3V0cyB3ZXJlIHJlYWNoZWQiKQot
Ci0KLSAgICBkZWYgX2Nsb2JiZXJfb2xkX3Jlc3VsdHMoc2VsZik6Ci0gICAgICAgICMgSnVzdCBj
bG9iYmVyIHRoZSBhY3R1YWwgdGVzdCByZXN1bHRzIGRpcmVjdG9yaWVzIHNpbmNlIHRoZSBvdGhl
cgotICAgICAgICAjIGZpbGVzIGluIHRoZSByZXN1bHRzIGRpcmVjdG9yeSBhcmUgZXhwbGljaXRs
eSB1c2VkIGZvciBjcm9zcy1ydW4KLSAgICAgICAgIyB0cmFja2luZy4KLSAgICAgICAgc2VsZi5f
cHJpbnRlci5wcmludF91cGRhdGUoIkNsb2JiZXJpbmcgb2xkIHJlc3VsdHMgaW4gJXMiICUKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5yZXN1bHRzX2Rp
cmVjdG9yeSkKLSAgICAgICAgbGF5b3V0X3Rlc3RzX2RpciA9IHNlbGYuX3BvcnQubGF5b3V0X3Rl
c3RzX2RpcigpCi0gICAgICAgIHBvc3NpYmxlX2RpcnMgPSBzZWxmLl9wb3J0LnRlc3RfZGlycygp
Ci0gICAgICAgIGZvciBkaXJuYW1lIGluIHBvc3NpYmxlX2RpcnM6Ci0gICAgICAgICAgICBpZiBv
cy5wYXRoLmlzZGlyKG9zLnBhdGguam9pbihsYXlvdXRfdGVzdHNfZGlyLCBkaXJuYW1lKSk6Ci0g
ICAgICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShvcy5wYXRoLmpvaW4oc2VsZi5fb3B0aW9ucy5y
ZXN1bHRzX2RpcmVjdG9yeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkaXJuYW1lKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZV9lcnJv
cnM9VHJ1ZSkKLQotICAgIGRlZiBfZ2V0X2ZhaWx1cmVzKHNlbGYsIHJlc3VsdF9zdW1tYXJ5LCBp
bmNsdWRlX2NyYXNoZXMpOgotICAgICAgICAiIiJGaWx0ZXJzIGEgZGljdCBvZiByZXN1bHRzIGFu
ZCByZXR1cm5zIG9ubHkgdGhlIGZhaWx1cmVzLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAg
cmVzdWx0X3N1bW1hcnk6IHRoZSByZXN1bHRzIG9mIHRoZSB0ZXN0IHJ1bgotICAgICAgICAgIGlu
Y2x1ZGVfY3Jhc2hlczogd2hldGhlciBjcmFzaGVzIGFyZSBpbmNsdWRlZCBpbiB0aGUgb3V0cHV0
LgotICAgICAgICAgICAgV2UgdXNlIEZhbHNlIHdoZW4gZmluZGluZyB0aGUgbGlzdCBvZiBmYWls
dXJlcyB0byByZXRyeQotICAgICAgICAgICAgdG8gc2VlIGlmIHRoZSByZXN1bHRzIHdlcmUgZmxh
a3kuIEFsdGhvdWdoIHRoZSBjcmFzaGVzIG1heSBhbHNvIGJlCi0gICAgICAgICAgICBmbGFreSwg
d2UgdHJlYXQgdGhlbSBhcyBpZiB0aGV5IGFyZW4ndCBzbyB0aGF0IHRoZXkncmUgbm90IGlnbm9y
ZWQuCi0gICAgICAgIFJldHVybnM6Ci0gICAgICAgICAgYSBkaWN0IG9mIGZpbGVzIC0+IHJlc3Vs
dHMKLSAgICAgICAgIiIiCi0gICAgICAgIGZhaWxlZF9yZXN1bHRzID0ge30KLSAgICAgICAgZm9y
IHRlc3QsIHJlc3VsdCBpbiByZXN1bHRfc3VtbWFyeS51bmV4cGVjdGVkX3Jlc3VsdHMuaXRlcml0
ZW1zKCk6Ci0gICAgICAgICAgICBpZiAocmVzdWx0ID09IHRlc3RfZXhwZWN0YXRpb25zLlBBU1Mg
b3IKLSAgICAgICAgICAgICAgICByZXN1bHQgPT0gdGVzdF9leHBlY3RhdGlvbnMuQ1JBU0ggYW5k
IG5vdCBpbmNsdWRlX2NyYXNoZXMpOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAg
ICAgICBmYWlsZWRfcmVzdWx0c1t0ZXN0XSA9IHJlc3VsdAotCi0gICAgICAgIHJldHVybiBmYWls
ZWRfcmVzdWx0cwotCi0gICAgZGVmIF91cGxvYWRfanNvbl9maWxlcyhzZWxmLCB1bmV4cGVjdGVk
X3Jlc3VsdHMsIHJlc3VsdF9zdW1tYXJ5LAotICAgICAgICAgICAgICAgICAgICAgICAgaW5kaXZp
ZHVhbF90ZXN0X3RpbWluZ3MpOgotICAgICAgICAiIiJXcml0ZXMgdGhlIHJlc3VsdHMgb2YgdGhl
IHRlc3QgcnVuIGFzIEpTT04gZmlsZXMgaW50byB0aGUgcmVzdWx0cwotICAgICAgICBkaXIgYW5k
IHVwbG9hZCB0aGUgZmlsZXMgdG8gdGhlIGFwcGVuZ2luZSBzZXJ2ZXIuCi0KLSAgICAgICAgVGhl
cmUgYXJlIHRocmVlIGRpZmZlcmVudCBmaWxlcyB3cml0dGVuIGludG8gdGhlIHJlc3VsdHMgZGly
OgotICAgICAgICAgIHVuZXhwZWN0ZWRfcmVzdWx0cy5qc29uOiBBIHNob3J0IGxpc3Qgb2YgYW55
IHVuZXhwZWN0ZWQgcmVzdWx0cy4KLSAgICAgICAgICAgIFRoaXMgaXMgdXNlZCBieSB0aGUgYnVp
bGRib3RzIHRvIGRpc3BsYXkgcmVzdWx0cy4KLSAgICAgICAgICBleHBlY3RhdGlvbnMuanNvbjog
VGhpcyBpcyB1c2VkIGJ5IHRoZSBmbGFraW5lc3MgZGFzaGJvYXJkLgotICAgICAgICAgIHJlc3Vs
dHMuanNvbjogQSBmdWxsIGxpc3Qgb2YgdGhlIHJlc3VsdHMgLSB1c2VkIGJ5IHRoZSBmbGFraW5l
c3MKLSAgICAgICAgICAgIGRhc2hib2FyZCBhbmQgdGhlIGFnZ3JlZ2F0ZSByZXN1bHRzIGRhc2hi
b2FyZC4KLQotICAgICAgICBBcmdzOgotICAgICAgICAgIHVuZXhwZWN0ZWRfcmVzdWx0czogZGlj
dCBvZiB1bmV4cGVjdGVkIHJlc3VsdHMKLSAgICAgICAgICByZXN1bHRfc3VtbWFyeTogZnVsbCBz
dW1tYXJ5IG9iamVjdAotICAgICAgICAgIGluZGl2aWR1YWxfdGVzdF90aW1pbmdzOiBsaXN0IG9m
IHRlc3QgdGltZXMgKHVzZWQgYnkgdGhlIGZsYWtpbmVzcwotICAgICAgICAgICAgZGFzaGJvYXJk
KS4KLSAgICAgICAgIiIiCi0gICAgICAgIHJlc3VsdHNfZGlyZWN0b3J5ID0gc2VsZi5fb3B0aW9u
cy5yZXN1bHRzX2RpcmVjdG9yeQotICAgICAgICBfbG9nLmRlYnVnKCJXcml0aW5nIEpTT04gZmls
ZXMgaW4gJXMuIiAlIHJlc3VsdHNfZGlyZWN0b3J5KQotICAgICAgICB1bmV4cGVjdGVkX2pzb25f
cGF0aCA9IG9zLnBhdGguam9pbihyZXN1bHRzX2RpcmVjdG9yeSwgInVuZXhwZWN0ZWRfcmVzdWx0
cy5qc29uIikKLSAgICAgICAgd2l0aCBjb2RlY3Mub3Blbih1bmV4cGVjdGVkX2pzb25fcGF0aCwg
InciLCAidXRmLTgiKSBhcyBmaWxlOgotICAgICAgICAgICAgc2ltcGxlanNvbi5kdW1wKHVuZXhw
ZWN0ZWRfcmVzdWx0cywgZmlsZSwgc29ydF9rZXlzPVRydWUsIGluZGVudD0yKQotCi0gICAgICAg
ICMgV3JpdGUgYSBqc29uIGZpbGUgb2YgdGhlIHRlc3RfZXhwZWN0YXRpb25zLnR4dCBmaWxlIGZv
ciB0aGUgbGF5b3V0Ci0gICAgICAgICMgdGVzdHMgZGFzaGJvYXJkLgotICAgICAgICBleHBlY3Rh
dGlvbnNfcGF0aCA9IG9zLnBhdGguam9pbihyZXN1bHRzX2RpcmVjdG9yeSwgImV4cGVjdGF0aW9u
cy5qc29uIikKLSAgICAgICAgZXhwZWN0YXRpb25zX2pzb24gPSBcCi0gICAgICAgICAgICBzZWxm
Ll9leHBlY3RhdGlvbnMuZ2V0X2V4cGVjdGF0aW9uc19qc29uX2Zvcl9hbGxfcGxhdGZvcm1zKCkK
LSAgICAgICAgd2l0aCBjb2RlY3Mub3BlbihleHBlY3RhdGlvbnNfcGF0aCwgInciLCAidXRmLTgi
KSBhcyBmaWxlOgotICAgICAgICAgICAgZmlsZS53cml0ZSh1IkFERF9FWFBFQ1RBVElPTlMoJXMp
OyIgJSBleHBlY3RhdGlvbnNfanNvbikKLQotICAgICAgICBnZW5lcmF0b3IgPSBqc29uX2xheW91
dF9yZXN1bHRzX2dlbmVyYXRvci5KU09OTGF5b3V0UmVzdWx0c0dlbmVyYXRvcigKLSAgICAgICAg
ICAgIHNlbGYuX3BvcnQsIHNlbGYuX29wdGlvbnMuYnVpbGRlcl9uYW1lLCBzZWxmLl9vcHRpb25z
LmJ1aWxkX25hbWUsCi0gICAgICAgICAgICBzZWxmLl9vcHRpb25zLmJ1aWxkX251bWJlciwgc2Vs
Zi5fb3B0aW9ucy5yZXN1bHRzX2RpcmVjdG9yeSwKLSAgICAgICAgICAgIEJVSUxERVJfQkFTRV9V
UkwsIGluZGl2aWR1YWxfdGVzdF90aW1pbmdzLAotICAgICAgICAgICAgc2VsZi5fZXhwZWN0YXRp
b25zLCByZXN1bHRfc3VtbWFyeSwgc2VsZi5fdGVzdF9maWxlc19saXN0LAotICAgICAgICAgICAg
bm90IHNlbGYuX29wdGlvbnMudXBsb2FkX2Z1bGxfcmVzdWx0cywKLSAgICAgICAgICAgIHNlbGYu
X29wdGlvbnMudGVzdF9yZXN1bHRzX3NlcnZlciwKLSAgICAgICAgICAgICJsYXlvdXQtdGVzdHMi
LAotICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5tYXN0ZXJfbmFtZSkKLQotICAgICAgICBfbG9n
LmRlYnVnKCJGaW5pc2hlZCB3cml0aW5nIEpTT04gZmlsZXMuIikKLQotICAgICAgICBqc29uX2Zp
bGVzID0gWyJleHBlY3RhdGlvbnMuanNvbiJdCi0gICAgICAgIGlmIHNlbGYuX29wdGlvbnMudXBs
b2FkX2Z1bGxfcmVzdWx0czoKLSAgICAgICAgICAgIGpzb25fZmlsZXMuYXBwZW5kKCJyZXN1bHRz
Lmpzb24iKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAganNvbl9maWxlcy5hcHBlbmQoImlu
Y3JlbWVudGFsX3Jlc3VsdHMuanNvbiIpCi0KLSAgICAgICAgZ2VuZXJhdG9yLnVwbG9hZF9qc29u
X2ZpbGVzKGpzb25fZmlsZXMpCi0KLSAgICBkZWYgX3ByaW50X2NvbmZpZyhzZWxmKToKLSAgICAg
ICAgIiIiUHJpbnRzIHRoZSBjb25maWd1cmF0aW9uIGZvciB0aGUgdGVzdCBydW4uIiIiCi0gICAg
ICAgIHAgPSBzZWxmLl9wcmludGVyCi0gICAgICAgIHAucHJpbnRfY29uZmlnKCJVc2luZyBwb3J0
ICclcyciICUgc2VsZi5fcG9ydC5uYW1lKCkpCi0gICAgICAgIHAucHJpbnRfY29uZmlnKCJQbGFj
aW5nIHRlc3QgcmVzdWx0cyBpbiAlcyIgJQotICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9v
cHRpb25zLnJlc3VsdHNfZGlyZWN0b3J5KQotICAgICAgICBpZiBzZWxmLl9vcHRpb25zLm5ld19i
YXNlbGluZToKLSAgICAgICAgICAgIHAucHJpbnRfY29uZmlnKCJQbGFjaW5nIG5ldyBiYXNlbGlu
ZXMgaW4gJXMiICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3BvcnQuYmFzZWxp
bmVfcGF0aCgpKQotICAgICAgICBwLnByaW50X2NvbmZpZygiVXNpbmcgJXMgYnVpbGQiICUgc2Vs
Zi5fb3B0aW9ucy5jb25maWd1cmF0aW9uKQotICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnBpeGVs
X3Rlc3RzOgotICAgICAgICAgICAgcC5wcmludF9jb25maWcoIlBpeGVsIHRlc3RzIGVuYWJsZWQi
KQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcC5wcmludF9jb25maWcoIlBpeGVsIHRlc3Rz
IGRpc2FibGVkIikKLQotICAgICAgICBwLnByaW50X2NvbmZpZygiUmVndWxhciB0aW1lb3V0OiAl
cywgc2xvdyB0ZXN0IHRpbWVvdXQ6ICVzIiAlCi0gICAgICAgICAgICAgICAgICAgICAgIChzZWxm
Ll9vcHRpb25zLnRpbWVfb3V0X21zLAotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fb3B0
aW9ucy5zbG93X3RpbWVfb3V0X21zKSkKLQotICAgICAgICBpZiBzZWxmLl9udW1fd29ya2Vycygp
ID09IDE6Ci0gICAgICAgICAgICBwLnByaW50X2NvbmZpZygiUnVubmluZyBvbmUgJXMiICUgc2Vs
Zi5fcG9ydC5kcml2ZXJfbmFtZSgpKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcC5wcmlu
dF9jb25maWcoIlJ1bm5pbmcgJXMgJXNzIGluIHBhcmFsbGVsIiAlCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAoc2VsZi5fb3B0aW9ucy5jaGlsZF9wcm9jZXNzZXMsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2VsZi5fcG9ydC5kcml2ZXJfbmFtZSgpKSkKLSAgICAgICAgcC5wcmlu
dF9jb25maWcoJ0NvbW1hbmQgbGluZTogJyArCi0gICAgICAgICAgICAgICAgICAgICAgICcgJy5q
b2luKHNlbGYuX3BvcnQuZHJpdmVyX2NtZF9saW5lKCkpKQotICAgICAgICBwLnByaW50X2NvbmZp
ZygiV29ya2VyIG1vZGVsOiAlcyIgJSBzZWxmLl9vcHRpb25zLndvcmtlcl9tb2RlbCkKLSAgICAg
ICAgcC5wcmludF9jb25maWcoIiIpCi0KLSAgICBkZWYgX3ByaW50X2V4cGVjdGVkX3Jlc3VsdHNf
b2ZfdHlwZShzZWxmLCByZXN1bHRfc3VtbWFyeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXN1bHRfdHlwZSwgcmVzdWx0X3R5cGVfc3RyKToKLSAgICAgICAgIiIi
UHJpbnQgdGhlIG51bWJlciBvZiB0aGUgdGVzdHMgaW4gYSBnaXZlbiByZXN1bHQgY2xhc3MuCi0K
LSAgICAgICAgQXJnczoKLSAgICAgICAgICByZXN1bHRfc3VtbWFyeSAtIHRoZSBvYmplY3QgY29u
dGFpbmluZyBhbGwgdGhlIHJlc3VsdHMgdG8gcmVwb3J0IG9uCi0gICAgICAgICAgcmVzdWx0X3R5
cGUgLSB0aGUgcGFydGljdWxhciByZXN1bHQgdHlwZSB0byByZXBvcnQgaW4gdGhlIHN1bW1hcnku
Ci0gICAgICAgICAgcmVzdWx0X3R5cGVfc3RyIC0gYSBzdHJpbmcgZGVzY3JpcHRpb24gb2YgdGhl
IHJlc3VsdF90eXBlLgotICAgICAgICAiIiIKLSAgICAgICAgdGVzdHMgPSBzZWxmLl9leHBlY3Rh
dGlvbnMuZ2V0X3Rlc3RzX3dpdGhfcmVzdWx0X3R5cGUocmVzdWx0X3R5cGUpCi0gICAgICAgIG5v
dyA9IHJlc3VsdF9zdW1tYXJ5LnRlc3RzX2J5X3RpbWVsaW5lW3Rlc3RfZXhwZWN0YXRpb25zLk5P
V10KLSAgICAgICAgd29udGZpeCA9IHJlc3VsdF9zdW1tYXJ5LnRlc3RzX2J5X3RpbWVsaW5lW3Rl
c3RfZXhwZWN0YXRpb25zLldPTlRGSVhdCi0KLSAgICAgICAgIyBXZSB1c2UgYSBmYW5jeSBmb3Jt
YXQgc3RyaW5nIGluIG9yZGVyIHRvIHByaW50IHRoZSBkYXRhIG91dCBpbiBhCi0gICAgICAgICMg
bmljZWx5LWFsaWduZWQgdGFibGUuCi0gICAgICAgIGZtdHN0ciA9ICgiRXhwZWN0OiAlJTVkICUl
LThzICglJSVkZCBub3csICUlJWRkIHdvbnRmaXgpIgotICAgICAgICAgICAgICAgICAgJSAoc2Vs
Zi5fbnVtX2RpZ2l0cyhub3cpLCBzZWxmLl9udW1fZGlnaXRzKHdvbnRmaXgpKSkKLSAgICAgICAg
c2VsZi5fcHJpbnRlci5wcmludF9leHBlY3RlZChmbXRzdHIgJQotICAgICAgICAgICAgKGxlbih0
ZXN0cyksIHJlc3VsdF90eXBlX3N0ciwgbGVuKHRlc3RzICYgbm93KSwgbGVuKHRlc3RzICYgd29u
dGZpeCkpKQotCi0gICAgZGVmIF9udW1fZGlnaXRzKHNlbGYsIG51bSk6Ci0gICAgICAgICIiIlJl
dHVybnMgdGhlIG51bWJlciBvZiBkaWdpdHMgbmVlZGVkIHRvIHJlcHJlc2VudCB0aGUgbGVuZ3Ro
IG9mIGEKLSAgICAgICAgc2VxdWVuY2UuIiIiCi0gICAgICAgIG5kaWdpdHMgPSAxCi0gICAgICAg
IGlmIGxlbihudW0pOgotICAgICAgICAgICAgbmRpZ2l0cyA9IGludChtYXRoLmxvZzEwKGxlbihu
dW0pKSkgKyAxCi0gICAgICAgIHJldHVybiBuZGlnaXRzCi0KLSAgICBkZWYgX3ByaW50X3RpbWlu
Z19zdGF0aXN0aWNzKHNlbGYsIHRvdGFsX3RpbWUsIHRocmVhZF90aW1pbmdzLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeV90ZXN0X3RpbWluZ3MsIGluZGl2aWR1YWxf
dGVzdF90aW1pbmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdF9zdW1t
YXJ5KToKLSAgICAgICAgIiIiUmVjb3JkIHRpbWluZy1zcGVjaWZpYyBpbmZvcm1hdGlvbiBmb3Ig
dGhlIHRlc3QgcnVuLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgdG90YWxfdGltZTogdG90
YWwgZWxhcHNlZCB0aW1lIChpbiBzZWNvbmRzKSBmb3IgdGhlIHRlc3QgcnVuCi0gICAgICAgICAg
dGhyZWFkX3RpbWluZ3M6IHdhbGwgY2xvY2sgdGltZSBlYWNoIHRocmVhZCByYW4gZm9yCi0gICAg
ICAgICAgZGlyZWN0b3J5X3Rlc3RfdGltaW5nczogdGltaW5nIGJ5IGRpcmVjdG9yeQotICAgICAg
ICAgIGluZGl2aWR1YWxfdGVzdF90aW1pbmdzOiB0aW1pbmcgYnkgZmlsZQotICAgICAgICAgIHJl
c3VsdF9zdW1tYXJ5OiBzdW1tYXJ5IG9iamVjdCBmb3IgdGhlIHRlc3QgcnVuCi0gICAgICAgICIi
IgotICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X3RpbWluZygiVGVzdCB0aW1pbmc6IikKLSAg
ICAgICAgc2VsZi5fcHJpbnRlci5wcmludF90aW1pbmcoIiAgJTYuMmYgdG90YWwgdGVzdGluZyB0
aW1lIiAlIHRvdGFsX3RpbWUpCi0gICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfdGltaW5nKCIi
KQotICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X3RpbWluZygiVGhyZWFkIHRpbWluZzoiKQot
ICAgICAgICBjdW1sX3RpbWUgPSAwCi0gICAgICAgIGZvciB0IGluIHRocmVhZF90aW1pbmdzOgot
ICAgICAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF90aW1pbmcoIiAgICAlMTBzOiAlNWQgdGVz
dHMsICU2LjJmIHNlY3MiICUKLSAgICAgICAgICAgICAgICAgICh0WyduYW1lJ10sIHRbJ251bV90
ZXN0cyddLCB0Wyd0b3RhbF90aW1lJ10pKQotICAgICAgICAgICAgY3VtbF90aW1lICs9IHRbJ3Rv
dGFsX3RpbWUnXQotICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X3RpbWluZygiICAgJTYuMmYg
Y3VtdWxhdGl2ZSwgJTYuMmYgb3B0aW1hbCIgJQotICAgICAgICAgICAgICAoY3VtbF90aW1lLCBj
dW1sX3RpbWUgLyBpbnQoc2VsZi5fb3B0aW9ucy5jaGlsZF9wcm9jZXNzZXMpKSkKLSAgICAgICAg
c2VsZi5fcHJpbnRlci5wcmludF90aW1pbmcoIiIpCi0KLSAgICAgICAgc2VsZi5fcHJpbnRfYWdn
cmVnYXRlX3Rlc3Rfc3RhdGlzdGljcyhpbmRpdmlkdWFsX3Rlc3RfdGltaW5ncykKLSAgICAgICAg
c2VsZi5fcHJpbnRfaW5kaXZpZHVhbF90ZXN0X3RpbWVzKGluZGl2aWR1YWxfdGVzdF90aW1pbmdz
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0X3N1bW1h
cnkpCi0gICAgICAgIHNlbGYuX3ByaW50X2RpcmVjdG9yeV90aW1pbmdzKGRpcmVjdG9yeV90ZXN0
X3RpbWluZ3MpCi0KLSAgICBkZWYgX3ByaW50X2FnZ3JlZ2F0ZV90ZXN0X3N0YXRpc3RpY3Moc2Vs
ZiwgaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3MpOgotICAgICAgICAiIiJQcmludHMgYWdncmVnYXRl
IHN0YXRpc3RpY3MgKGUuZy4gbWVkaWFuLCBtZWFuLCBldGMuKSBmb3IgYWxsIHRlc3RzLgotICAg
ICAgICBBcmdzOgotICAgICAgICAgIGluZGl2aWR1YWxfdGVzdF90aW1pbmdzOiBMaXN0IG9mIFRl
c3RSZXN1bHRzIGZvciBhbGwgdGVzdHMuCi0gICAgICAgICIiIgotICAgICAgICB0ZXN0X3R5cGVz
ID0gW10gICMgVW5pdCB0ZXN0cyBkb24ndCBhY3R1YWxseSBwcm9kdWNlIGFueSB0aW1pbmdzLgot
ICAgICAgICBpZiBpbmRpdmlkdWFsX3Rlc3RfdGltaW5nczoKLSAgICAgICAgICAgIHRlc3RfdHlw
ZXMgPSBpbmRpdmlkdWFsX3Rlc3RfdGltaW5nc1swXS50aW1lX2Zvcl9kaWZmcy5rZXlzKCkKLSAg
ICAgICAgdGltZXNfZm9yX2R1bXBfcmVuZGVyX3RyZWUgPSBbXQotICAgICAgICB0aW1lc19mb3Jf
ZGlmZl9wcm9jZXNzaW5nID0gW10KLSAgICAgICAgdGltZXNfcGVyX3Rlc3RfdHlwZSA9IHt9Ci0g
ICAgICAgIGZvciB0ZXN0X3R5cGUgaW4gdGVzdF90eXBlczoKLSAgICAgICAgICAgIHRpbWVzX3Bl
cl90ZXN0X3R5cGVbdGVzdF90eXBlXSA9IFtdCi0KLSAgICAgICAgZm9yIHRlc3Rfc3RhdHMgaW4g
aW5kaXZpZHVhbF90ZXN0X3RpbWluZ3M6Ci0gICAgICAgICAgICB0aW1lc19mb3JfZHVtcF9yZW5k
ZXJfdHJlZS5hcHBlbmQodGVzdF9zdGF0cy50ZXN0X3J1bl90aW1lKQotICAgICAgICAgICAgdGlt
ZXNfZm9yX2RpZmZfcHJvY2Vzc2luZy5hcHBlbmQoCi0gICAgICAgICAgICAgICAgdGVzdF9zdGF0
cy50b3RhbF90aW1lX2Zvcl9hbGxfZGlmZnMpCi0gICAgICAgICAgICB0aW1lX2Zvcl9kaWZmcyA9
IHRlc3Rfc3RhdHMudGltZV9mb3JfZGlmZnMKLSAgICAgICAgICAgIGZvciB0ZXN0X3R5cGUgaW4g
dGVzdF90eXBlczoKLSAgICAgICAgICAgICAgICB0aW1lc19wZXJfdGVzdF90eXBlW3Rlc3RfdHlw
ZV0uYXBwZW5kKAotICAgICAgICAgICAgICAgICAgICB0aW1lX2Zvcl9kaWZmc1t0ZXN0X3R5cGVd
KQotCi0gICAgICAgIHNlbGYuX3ByaW50X3N0YXRpc3RpY3NfZm9yX3Rlc3RfdGltaW5ncygKLSAg
ICAgICAgICAgICJQRVIgVEVTVCBUSU1FIElOIFRFU1RTSEVMTCAoc2Vjb25kcyk6IiwKLSAgICAg
ICAgICAgIHRpbWVzX2Zvcl9kdW1wX3JlbmRlcl90cmVlKQotICAgICAgICBzZWxmLl9wcmludF9z
dGF0aXN0aWNzX2Zvcl90ZXN0X3RpbWluZ3MoCi0gICAgICAgICAgICAiUEVSIFRFU1QgRElGRiBQ
Uk9DRVNTSU5HIFRJTUVTIChzZWNvbmRzKToiLAotICAgICAgICAgICAgdGltZXNfZm9yX2RpZmZf
cHJvY2Vzc2luZykKLSAgICAgICAgZm9yIHRlc3RfdHlwZSBpbiB0ZXN0X3R5cGVzOgotICAgICAg
ICAgICAgc2VsZi5fcHJpbnRfc3RhdGlzdGljc19mb3JfdGVzdF90aW1pbmdzKAotICAgICAgICAg
ICAgICAgICJQRVIgVEVTVCBUSU1FUyBCWSBURVNUIFRZUEU6ICVzIiAlIHRlc3RfdHlwZSwKLSAg
ICAgICAgICAgICAgICB0aW1lc19wZXJfdGVzdF90eXBlW3Rlc3RfdHlwZV0pCi0KLSAgICBkZWYg
X3ByaW50X2luZGl2aWR1YWxfdGVzdF90aW1lcyhzZWxmLCBpbmRpdmlkdWFsX3Rlc3RfdGltaW5n
cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRfc3VtbWFyeSk6Ci0g
ICAgICAgICIiIlByaW50cyB0aGUgcnVuIHRpbWVzIGZvciBzbG93LCB0aW1lb3V0IGFuZCBjcmFz
aCB0ZXN0cy4KLSAgICAgICAgQXJnczoKLSAgICAgICAgICBpbmRpdmlkdWFsX3Rlc3RfdGltaW5n
czogTGlzdCBvZiBUZXN0U3RhdHMgZm9yIGFsbCB0ZXN0cy4KLSAgICAgICAgICByZXN1bHRfc3Vt
bWFyeTogc3VtbWFyeSBvYmplY3QgZm9yIHRlc3QgcnVuCi0gICAgICAgICIiIgotICAgICAgICAj
IFJldmVyc2Utc29ydCBieSB0aGUgdGltZSBzcGVudCBpbiBEdW1wUmVuZGVyVHJlZS4KLSAgICAg
ICAgaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3Muc29ydChsYW1iZGEgYSwgYjoKLSAgICAgICAgICAg
IGNtcChiLnRlc3RfcnVuX3RpbWUsIGEudGVzdF9ydW5fdGltZSkpCi0KLSAgICAgICAgbnVtX3By
aW50ZWQgPSAwCi0gICAgICAgIHNsb3dfdGVzdHMgPSBbXQotICAgICAgICB0aW1lb3V0X29yX2Ny
YXNoX3Rlc3RzID0gW10KLSAgICAgICAgdW5leHBlY3RlZF9zbG93X3Rlc3RzID0gW10KLSAgICAg
ICAgZm9yIHRlc3RfdHVwbGUgaW4gaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3M6Ci0gICAgICAgICAg
ICBmaWxlbmFtZSA9IHRlc3RfdHVwbGUuZmlsZW5hbWUKLSAgICAgICAgICAgIGlzX3RpbWVvdXRf
Y3Jhc2hfb3Jfc2xvdyA9IEZhbHNlCi0gICAgICAgICAgICBpZiBzZWxmLl90ZXN0X2lzX3Nsb3co
ZmlsZW5hbWUpOgotICAgICAgICAgICAgICAgIGlzX3RpbWVvdXRfY3Jhc2hfb3Jfc2xvdyA9IFRy
dWUKLSAgICAgICAgICAgICAgICBzbG93X3Rlc3RzLmFwcGVuZCh0ZXN0X3R1cGxlKQotCi0gICAg
ICAgICAgICBpZiBmaWxlbmFtZSBpbiByZXN1bHRfc3VtbWFyeS5mYWlsdXJlczoKLSAgICAgICAg
ICAgICAgICByZXN1bHQgPSByZXN1bHRfc3VtbWFyeS5yZXN1bHRzW2ZpbGVuYW1lXS50eXBlCi0g
ICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSB0ZXN0X2V4cGVjdGF0aW9ucy5USU1FT1VUIG9y
Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9PSB0ZXN0X2V4cGVjdGF0aW9ucy5DUkFTSCk6
Ci0gICAgICAgICAgICAgICAgICAgIGlzX3RpbWVvdXRfY3Jhc2hfb3Jfc2xvdyA9IFRydWUKLSAg
ICAgICAgICAgICAgICAgICAgdGltZW91dF9vcl9jcmFzaF90ZXN0cy5hcHBlbmQodGVzdF90dXBs
ZSkKLQotICAgICAgICAgICAgaWYgKG5vdCBpc190aW1lb3V0X2NyYXNoX29yX3Nsb3cgYW5kCi0g
ICAgICAgICAgICAgICAgbnVtX3ByaW50ZWQgPCBwcmludGluZy5OVU1fU0xPV19URVNUU19UT19M
T0cpOgotICAgICAgICAgICAgICAgIG51bV9wcmludGVkID0gbnVtX3ByaW50ZWQgKyAxCi0gICAg
ICAgICAgICAgICAgdW5leHBlY3RlZF9zbG93X3Rlc3RzLmFwcGVuZCh0ZXN0X3R1cGxlKQotCi0g
ICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfdGltaW5nKCIiKQotICAgICAgICBzZWxmLl9wcmlu
dF90ZXN0X2xpc3RfdGltaW5nKCIlcyBzbG93ZXN0IHRlc3RzIHRoYXQgYXJlIG5vdCAiCi0gICAg
ICAgICAgICAibWFya2VkIGFzIFNMT1cgYW5kIGRpZCBub3QgdGltZW91dC9jcmFzaDoiICUKLSAg
ICAgICAgICAgIHByaW50aW5nLk5VTV9TTE9XX1RFU1RTX1RPX0xPRywgdW5leHBlY3RlZF9zbG93
X3Rlc3RzKQotICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X3RpbWluZygiIikKLSAgICAgICAg
c2VsZi5fcHJpbnRfdGVzdF9saXN0X3RpbWluZygiVGVzdHMgbWFya2VkIGFzIFNMT1c6Iiwgc2xv
d190ZXN0cykKLSAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF90aW1pbmcoIiIpCi0gICAgICAg
IHNlbGYuX3ByaW50X3Rlc3RfbGlzdF90aW1pbmcoIlRlc3RzIHRoYXQgdGltZWQgb3V0IG9yIGNy
YXNoZWQ6IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0X29y
X2NyYXNoX3Rlc3RzKQotICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X3RpbWluZygiIikKLQot
ICAgIGRlZiBfcHJpbnRfdGVzdF9saXN0X3RpbWluZyhzZWxmLCB0aXRsZSwgdGVzdF9saXN0KToK
LSAgICAgICAgIiIiUHJpbnQgdGltaW5nIGluZm8gZm9yIGVhY2ggdGVzdC4KLQotICAgICAgICBB
cmdzOgotICAgICAgICAgIHRpdGxlOiBzZWN0aW9uIGhlYWRpbmcKLSAgICAgICAgICB0ZXN0X2xp
c3Q6IHRlc3RzIHRoYXQgZmFsbCBpbiB0aGlzIHNlY3Rpb24KLSAgICAgICAgIiIiCi0gICAgICAg
IGlmIHNlbGYuX3ByaW50ZXIuZGlzYWJsZWQoJ3Nsb3dlc3QnKToKLSAgICAgICAgICAgIHJldHVy
bgotCi0gICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfdGltaW5nKHRpdGxlKQotICAgICAgICBm
b3IgdGVzdF90dXBsZSBpbiB0ZXN0X2xpc3Q6Ci0gICAgICAgICAgICBmaWxlbmFtZSA9IHRlc3Rf
dHVwbGUuZmlsZW5hbWVbbGVuKAotICAgICAgICAgICAgICAgIHNlbGYuX3BvcnQubGF5b3V0X3Rl
c3RzX2RpcigpKSArIDE6XQotICAgICAgICAgICAgZmlsZW5hbWUgPSBmaWxlbmFtZS5yZXBsYWNl
KCdcXCcsICcvJykKLSAgICAgICAgICAgIHRlc3RfcnVuX3RpbWUgPSByb3VuZCh0ZXN0X3R1cGxl
LnRlc3RfcnVuX3RpbWUsIDEpCi0gICAgICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X3RpbWlu
ZygiICAlcyB0b29rICVzIHNlY29uZHMiICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIChmaWxlbmFtZSwgdGVzdF9ydW5fdGltZSkpCi0KLSAgICBkZWYgX3ByaW50X2Rp
cmVjdG9yeV90aW1pbmdzKHNlbGYsIGRpcmVjdG9yeV90ZXN0X3RpbWluZ3MpOgotICAgICAgICAi
IiJQcmludCB0aW1pbmcgaW5mbyBieSBkaXJlY3RvcnkgZm9yIGFueSBkaXJlY3RvcmllcyB0aGF0
Ci0gICAgICAgIHRha2UgPiAxMCBzZWNvbmRzIHRvIHJ1bi4KLQotICAgICAgICBBcmdzOgotICAg
ICAgICAgIGRpcmVjdG9yeV90ZXN0X3RpbWluZzogdGltZSBpbmZvIGZvciBlYWNoIGRpcmVjdG9y
eQotICAgICAgICAiIiIKLSAgICAgICAgdGltaW5ncyA9IFtdCi0gICAgICAgIGZvciBkaXJlY3Rv
cnkgaW4gZGlyZWN0b3J5X3Rlc3RfdGltaW5nczoKLSAgICAgICAgICAgIG51bV90ZXN0cywgdGlt
ZV9mb3JfZGlyZWN0b3J5ID0gZGlyZWN0b3J5X3Rlc3RfdGltaW5nc1tkaXJlY3RvcnldCi0gICAg
ICAgICAgICB0aW1pbmdzLmFwcGVuZCgocm91bmQodGltZV9mb3JfZGlyZWN0b3J5LCAxKSwgZGly
ZWN0b3J5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bV90ZXN0cykpCi0gICAgICAg
IHRpbWluZ3Muc29ydCgpCi0KLSAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF90aW1pbmcoIlRp
bWUgdG8gcHJvY2VzcyBzbG93ZXN0IHN1YmRpcmVjdG9yaWVzOiIpCi0gICAgICAgIG1pbl9zZWNv
bmRzX3RvX3ByaW50ID0gMTAKLSAgICAgICAgZm9yIHRpbWluZyBpbiB0aW1pbmdzOgotICAgICAg
ICAgICAgaWYgdGltaW5nWzBdID4gbWluX3NlY29uZHNfdG9fcHJpbnQ6Ci0gICAgICAgICAgICAg
ICAgc2VsZi5fcHJpbnRlci5wcmludF90aW1pbmcoCi0gICAgICAgICAgICAgICAgICAgICIgICVz
IHRvb2sgJXMgc2Vjb25kcyB0byBydW4gJXMgdGVzdHMuIiAlICh0aW1pbmdbMV0sCi0gICAgICAg
ICAgICAgICAgICAgIHRpbWluZ1swXSwgdGltaW5nWzJdKSkKLSAgICAgICAgc2VsZi5fcHJpbnRl
ci5wcmludF90aW1pbmcoIiIpCi0KLSAgICBkZWYgX3ByaW50X3N0YXRpc3RpY3NfZm9yX3Rlc3Rf
dGltaW5ncyhzZWxmLCB0aXRsZSwgdGltaW5ncyk6Ci0gICAgICAgICIiIlByaW50cyB0aGUgbWVk
aWFuLCBtZWFuIGFuZCBzdGFuZGFyZCBkZXZpYXRpb24gb2YgdGhlIHZhbHVlcyBpbgotICAgICAg
ICB0aW1pbmdzLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgdGl0bGU6IFRpdGxlIGZvciB0
aGVzZSB0aW1pbmdzLgotICAgICAgICAgIHRpbWluZ3M6IEEgbGlzdCBvZiBmbG9hdHMgcmVwcmVz
ZW50aW5nIHRpbWVzLgotICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF90
aW1pbmcodGl0bGUpCi0gICAgICAgIHRpbWluZ3Muc29ydCgpCi0KLSAgICAgICAgbnVtX3Rlc3Rz
ID0gbGVuKHRpbWluZ3MpCi0gICAgICAgIGlmIG5vdCBudW1fdGVzdHM6Ci0gICAgICAgICAgICBy
ZXR1cm4KLSAgICAgICAgcGVyY2VudGlsZTkwID0gdGltaW5nc1tpbnQoLjkgKiBudW1fdGVzdHMp
XQotICAgICAgICBwZXJjZW50aWxlOTkgPSB0aW1pbmdzW2ludCguOTkgKiBudW1fdGVzdHMpXQot
Ci0gICAgICAgIGlmIG51bV90ZXN0cyAlIDIgPT0gMToKLSAgICAgICAgICAgIG1lZGlhbiA9IHRp
bWluZ3NbKChudW1fdGVzdHMgLSAxKSAvIDIpIC0gMV0KLSAgICAgICAgZWxzZToKLSAgICAgICAg
ICAgIGxvd2VyID0gdGltaW5nc1tudW1fdGVzdHMgLyAyIC0gMV0KLSAgICAgICAgICAgIHVwcGVy
ID0gdGltaW5nc1tudW1fdGVzdHMgLyAyXQotICAgICAgICAgICAgbWVkaWFuID0gKGZsb2F0KGxv
d2VyICsgdXBwZXIpKSAvIDIKLQotICAgICAgICBtZWFuID0gc3VtKHRpbWluZ3MpIC8gbnVtX3Rl
c3RzCi0KLSAgICAgICAgZm9yIHRpbWUgaW4gdGltaW5nczoKLSAgICAgICAgICAgIHN1bV9vZl9k
ZXZpYXRpb25zID0gbWF0aC5wb3codGltZSAtIG1lYW4sIDIpCi0KLSAgICAgICAgc3RkX2Rldmlh
dGlvbiA9IG1hdGguc3FydChzdW1fb2ZfZGV2aWF0aW9ucyAvIG51bV90ZXN0cykKLSAgICAgICAg
c2VsZi5fcHJpbnRlci5wcmludF90aW1pbmcoIiAgTWVkaWFuOiAgICAgICAgICAlNi4zZiIgJSBt
ZWRpYW4pCi0gICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfdGltaW5nKCIgIE1lYW46ICAgICAg
ICAgICAgJTYuM2YiICUgbWVhbikKLSAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF90aW1pbmco
IiAgOTB0aCBwZXJjZW50aWxlOiAlNi4zZiIgJSBwZXJjZW50aWxlOTApCi0gICAgICAgIHNlbGYu
X3ByaW50ZXIucHJpbnRfdGltaW5nKCIgIDk5dGggcGVyY2VudGlsZTogJTYuM2YiICUgcGVyY2Vu
dGlsZTk5KQotICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X3RpbWluZygiICBTdGFuZGFyZCBk
ZXY6ICAgICU2LjNmIiAlIHN0ZF9kZXZpYXRpb24pCi0gICAgICAgIHNlbGYuX3ByaW50ZXIucHJp
bnRfdGltaW5nKCIiKQotCi0gICAgZGVmIF9wcmludF9yZXN1bHRfc3VtbWFyeShzZWxmLCByZXN1
bHRfc3VtbWFyeSk6Ci0gICAgICAgICIiIlByaW50IGEgc2hvcnQgc3VtbWFyeSBhYm91dCBob3cg
bWFueSB0ZXN0cyBwYXNzZWQuCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICByZXN1bHRfc3Vt
bWFyeTogaW5mb3JtYXRpb24gdG8gbG9nCi0gICAgICAgICIiIgotICAgICAgICBmYWlsZWQgPSBs
ZW4ocmVzdWx0X3N1bW1hcnkuZmFpbHVyZXMpCi0gICAgICAgIHNraXBwZWQgPSBsZW4oCi0gICAg
ICAgICAgICByZXN1bHRfc3VtbWFyeS50ZXN0c19ieV9leHBlY3RhdGlvblt0ZXN0X2V4cGVjdGF0
aW9ucy5TS0lQXSkKLSAgICAgICAgdG90YWwgPSByZXN1bHRfc3VtbWFyeS50b3RhbAotICAgICAg
ICBwYXNzZWQgPSB0b3RhbCAtIGZhaWxlZCAtIHNraXBwZWQKLSAgICAgICAgcGN0X3Bhc3NlZCA9
IDAuMAotICAgICAgICBpZiB0b3RhbCA+IDA6Ci0gICAgICAgICAgICBwY3RfcGFzc2VkID0gZmxv
YXQocGFzc2VkKSAqIDEwMCAvIHRvdGFsCi0KLSAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF9h
Y3R1YWwoIiIpCi0gICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfYWN0dWFsKCI9PiBSZXN1bHRz
OiAlZC8lZCB0ZXN0cyBwYXNzZWQgKCUuMWYlJSkiICUKLSAgICAgICAgICAgICAgICAgICAgIChw
YXNzZWQsIHRvdGFsLCBwY3RfcGFzc2VkKSkKLSAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF9h
Y3R1YWwoIiIpCi0gICAgICAgIHNlbGYuX3ByaW50X3Jlc3VsdF9zdW1tYXJ5X2VudHJ5KHJlc3Vs
dF9zdW1tYXJ5LAotICAgICAgICAgICAgdGVzdF9leHBlY3RhdGlvbnMuTk9XLCAiVGVzdHMgdG8g
YmUgZml4ZWQiKQotCi0gICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfYWN0dWFsKCIiKQotICAg
ICAgICBzZWxmLl9wcmludF9yZXN1bHRfc3VtbWFyeV9lbnRyeShyZXN1bHRfc3VtbWFyeSwKLSAg
ICAgICAgICAgIHRlc3RfZXhwZWN0YXRpb25zLldPTlRGSVgsCi0gICAgICAgICAgICAiVGVzdHMg
dGhhdCB3aWxsIG9ubHkgYmUgZml4ZWQgaWYgdGhleSBjcmFzaCAoV09OVEZJWCkiKQotICAgICAg
ICBzZWxmLl9wcmludGVyLnByaW50X2FjdHVhbCgiIikKLQotICAgIGRlZiBfcHJpbnRfcmVzdWx0
X3N1bW1hcnlfZW50cnkoc2VsZiwgcmVzdWx0X3N1bW1hcnksIHRpbWVsaW5lLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGluZyk6Ci0gICAgICAgICIiIlByaW50IGEg
c3VtbWFyeSBibG9jayBvZiByZXN1bHRzIGZvciBhIHBhcnRpY3VsYXIgdGltZWxpbmUgb2YgdGVz
dC4KLQotICAgICAgICBBcmdzOgotICAgICAgICAgIHJlc3VsdF9zdW1tYXJ5OiBzdW1tYXJ5IHRv
IHByaW50IHJlc3VsdHMgZm9yCi0gICAgICAgICAgdGltZWxpbmU6IHRoZSB0aW1lbGluZSB0byBw
cmludCByZXN1bHRzIGZvciAoTk9ULCBXT05URklYLCBldGMuKQotICAgICAgICAgIGhlYWRpbmc6
IGEgdGV4dHVhbCBkZXNjcmlwdGlvbiBvZiB0aGUgdGltZWxpbmUKLSAgICAgICAgIiIiCi0gICAg
ICAgIHRvdGFsID0gbGVuKHJlc3VsdF9zdW1tYXJ5LnRlc3RzX2J5X3RpbWVsaW5lW3RpbWVsaW5l
XSkKLSAgICAgICAgbm90X3Bhc3NpbmcgPSAodG90YWwgLQotICAgICAgICAgICBsZW4ocmVzdWx0
X3N1bW1hcnkudGVzdHNfYnlfZXhwZWN0YXRpb25bdGVzdF9leHBlY3RhdGlvbnMuUEFTU10gJgot
ICAgICAgICAgICAgICAgcmVzdWx0X3N1bW1hcnkudGVzdHNfYnlfdGltZWxpbmVbdGltZWxpbmVd
KSkKLSAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF9hY3R1YWwoIj0+ICVzICglZCk6IiAlICho
ZWFkaW5nLCBub3RfcGFzc2luZykpCi0KLSAgICAgICAgZm9yIHJlc3VsdCBpbiBUZXN0RXhwZWN0
YXRpb25zRmlsZS5FWFBFQ1RBVElPTl9PUkRFUjoKLSAgICAgICAgICAgIGlmIHJlc3VsdCA9PSB0
ZXN0X2V4cGVjdGF0aW9ucy5QQVNTOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAg
ICAgICByZXN1bHRzID0gKHJlc3VsdF9zdW1tYXJ5LnRlc3RzX2J5X2V4cGVjdGF0aW9uW3Jlc3Vs
dF0gJgotICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRfc3VtbWFyeS50ZXN0c19ieV90aW1l
bGluZVt0aW1lbGluZV0pCi0gICAgICAgICAgICBkZXNjID0gVGVzdEV4cGVjdGF0aW9uc0ZpbGUu
RVhQRUNUQVRJT05fREVTQ1JJUFRJT05TW3Jlc3VsdF0KLSAgICAgICAgICAgIGlmIG5vdF9wYXNz
aW5nIGFuZCBsZW4ocmVzdWx0cyk6Ci0gICAgICAgICAgICAgICAgcGN0ID0gbGVuKHJlc3VsdHMp
ICogMTAwLjAgLyBub3RfcGFzc2luZwotICAgICAgICAgICAgICAgIHNlbGYuX3ByaW50ZXIucHJp
bnRfYWN0dWFsKCIgICU1ZCAlLTI0cyAoJTQuMWYlJSkiICUKLSAgICAgICAgICAgICAgICAgICAg
KGxlbihyZXN1bHRzKSwgZGVzY1tsZW4ocmVzdWx0cykgIT0gMV0sIHBjdCkpCi0KLSAgICBkZWYg
X3Jlc3VsdHNfaHRtbChzZWxmLCB0ZXN0X2ZpbGVzLCBmYWlsdXJlcywgdGl0bGU9IlRlc3QgRmFp
bHVyZXMiLCBvdmVycmlkZV90aW1lPU5vbmUpOgotICAgICAgICAiIiIKLSAgICAgICAgdGVzdF9m
aWxlcyA9IGEgbGlzdCBvZiBmaWxlIHBhdGhzCi0gICAgICAgIGZhaWx1cmVzID0gZGljdGlvbmFy
eSBtYXBwaW5nIHRlc3QgcGF0aHMgdG8gZmFpbHVyZSBvYmplY3RzCi0gICAgICAgIHRpdGxlID0g
dGl0bGUgcHJpbnRlZCBhdCB0b3Agb2YgdGVzdAotICAgICAgICBvdmVycmlkZV90aW1lID0gY3Vy
cmVudCB0aW1lICh1c2VkIGJ5IHVuaXQgdGVzdHMpCi0gICAgICAgICIiIgotICAgICAgICBwYWdl
ID0gIiIiPGh0bWw+Ci0gIDxoZWFkPgotICAgIDx0aXRsZT5MYXlvdXQgVGVzdCBSZXN1bHRzICgl
KHRpbWUpcyk8L3RpdGxlPgotICA8L2hlYWQ+Ci0gIDxib2R5PgotICAgIDxoMj4lKHRpdGxlKXMg
KCUodGltZSlzKTwvaDI+Ci0gICAgICAgICIiIiAlIHsndGl0bGUnOiB0aXRsZSwgJ3RpbWUnOiBv
dmVycmlkZV90aW1lIG9yIHRpbWUuYXNjdGltZSgpfQotCi0gICAgICAgIGZvciB0ZXN0X2ZpbGUg
aW4gc29ydGVkKHRlc3RfZmlsZXMpOgotICAgICAgICAgICAgdGVzdF9uYW1lID0gc2VsZi5fcG9y
dC5yZWxhdGl2ZV90ZXN0X2ZpbGVuYW1lKHRlc3RfZmlsZSkKLSAgICAgICAgICAgIHRlc3RfdXJs
ID0gc2VsZi5fcG9ydC5maWxlbmFtZV90b191cmkodGVzdF9maWxlKQotICAgICAgICAgICAgcGFn
ZSArPSB1IjxwPjxhIGhyZWY9JyVzJz4lczwvYT48YnIgLz5cbiIgJSAodGVzdF91cmwsIHRlc3Rf
bmFtZSkKLSAgICAgICAgICAgIHRlc3RfZmFpbHVyZXMgPSBmYWlsdXJlcy5nZXQodGVzdF9maWxl
LCBbXSkKLSAgICAgICAgICAgIGZvciBmYWlsdXJlIGluIHRlc3RfZmFpbHVyZXM6Ci0gICAgICAg
ICAgICAgICAgcGFnZSArPSAodSImbmJzcDsmbmJzcDslczxici8+IiAlCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgZmFpbHVyZS5yZXN1bHRfaHRtbF9vdXRwdXQodGVzdF9uYW1lKSkKLSAgICAg
ICAgICAgIHBhZ2UgKz0gIjwvcD5cbiIKLSAgICAgICAgcGFnZSArPSAiPC9ib2R5PjwvaHRtbD5c
biIKLSAgICAgICAgcmV0dXJuIHBhZ2UKLQotICAgIGRlZiBfd3JpdGVfcmVzdWx0c19odG1sX2Zp
bGUoc2VsZiwgcmVzdWx0X3N1bW1hcnkpOgotICAgICAgICAiIiJXcml0ZSByZXN1bHRzLmh0bWwg
d2hpY2ggaXMgYSBzdW1tYXJ5IG9mIHRlc3RzIHRoYXQgZmFpbGVkLgotCi0gICAgICAgIEFyZ3M6
Ci0gICAgICAgICAgcmVzdWx0X3N1bW1hcnk6IGEgc3VtbWFyeSBvZiB0aGUgcmVzdWx0cyA6KQot
Ci0gICAgICAgIFJldHVybnM6Ci0gICAgICAgICAgVHJ1ZSBpZiBhbnkgcmVzdWx0cyB3ZXJlIHdy
aXR0ZW4gKHNpbmNlIGV4cGVjdGVkIGZhaWx1cmVzIG1heSBiZQotICAgICAgICAgIG9taXR0ZWQp
Ci0gICAgICAgICIiIgotICAgICAgICAjIHRlc3QgZmFpbHVyZXMKLSAgICAgICAgaWYgc2VsZi5f
b3B0aW9ucy5mdWxsX3Jlc3VsdHNfaHRtbDoKLSAgICAgICAgICAgIHJlc3VsdHNfdGl0bGUgPSAi
VGVzdCBGYWlsdXJlcyIKLSAgICAgICAgICAgIHRlc3RfZmlsZXMgPSByZXN1bHRfc3VtbWFyeS5m
YWlsdXJlcy5rZXlzKCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJlc3VsdHNfdGl0bGUg
PSAiVW5leHBlY3RlZCBUZXN0IEZhaWx1cmVzIgotICAgICAgICAgICAgdW5leHBlY3RlZF9mYWls
dXJlcyA9IHNlbGYuX2dldF9mYWlsdXJlcyhyZXN1bHRfc3VtbWFyeSwKLSAgICAgICAgICAgICAg
ICBpbmNsdWRlX2NyYXNoZXM9VHJ1ZSkKLSAgICAgICAgICAgIHRlc3RfZmlsZXMgPSB1bmV4cGVj
dGVkX2ZhaWx1cmVzLmtleXMoKQotICAgICAgICBpZiBub3QgbGVuKHRlc3RfZmlsZXMpOgotICAg
ICAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICAgICAgb3V0X2ZpbGVuYW1lID0gb3MucGF0aC5q
b2luKHNlbGYuX29wdGlvbnMucmVzdWx0c19kaXJlY3RvcnksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAicmVzdWx0cy5odG1sIikKLSAgICAgICAgd2l0aCBjb2RlY3Mub3Bl
bihvdXRfZmlsZW5hbWUsICJ3IiwgInV0Zi04IikgYXMgcmVzdWx0c19maWxlOgotICAgICAgICAg
ICAgaHRtbCA9IHNlbGYuX3Jlc3VsdHNfaHRtbCh0ZXN0X2ZpbGVzLCByZXN1bHRfc3VtbWFyeS5m
YWlsdXJlcywgcmVzdWx0c190aXRsZSkKLSAgICAgICAgICAgIHJlc3VsdHNfZmlsZS53cml0ZSho
dG1sKQotCi0gICAgICAgIHJldHVybiBUcnVlCi0KLSAgICBkZWYgX3Nob3dfcmVzdWx0c19odG1s
X2ZpbGUoc2VsZik6Ci0gICAgICAgICIiIlNob3dzIHRoZSByZXN1bHRzLmh0bWwgcGFnZS4iIiIK
LSAgICAgICAgcmVzdWx0c19maWxlbmFtZSA9IG9zLnBhdGguam9pbihzZWxmLl9vcHRpb25zLnJl
c3VsdHNfZGlyZWN0b3J5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJyZXN1bHRzLmh0bWwiKQotICAgICAgICBzZWxmLl9wb3J0LnNob3dfcmVzdWx0c19odG1sX2Zp
bGUocmVzdWx0c19maWxlbmFtZSkKLQotCi1kZWYgcmVhZF90ZXN0X2ZpbGVzKGZpbGVzKToKLSAg
ICB0ZXN0cyA9IFtdCi0gICAgZm9yIGZpbGUgaW4gZmlsZXM6Ci0gICAgICAgIHRyeToKLSAgICAg
ICAgICAgIHdpdGggY29kZWNzLm9wZW4oZmlsZSwgJ3InLCAndXRmLTgnKSBhcyBmaWxlX2NvbnRl
bnRzOgotICAgICAgICAgICAgICAgICMgRklYTUU6IFRoaXMgY291bGQgYmUgY2xlYW5lciB1c2lu
ZyBhIGxpc3QgY29tcHJlaGVuc2lvbi4KLSAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiBmaWxl
X2NvbnRlbnRzOgotICAgICAgICAgICAgICAgICAgICBsaW5lID0gdGVzdF9leHBlY3RhdGlvbnMu
c3RyaXBfY29tbWVudHMobGluZSkKLSAgICAgICAgICAgICAgICAgICAgaWYgbGluZToKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHRlc3RzLmFwcGVuZChsaW5lKQotICAgICAgICBleGNlcHQgSU9F
cnJvciwgZToKLSAgICAgICAgICAgIGlmIGUuZXJybm8gPT0gZXJybm8uRU5PRU5UOgotICAgICAg
ICAgICAgICAgIF9sb2cuY3JpdGljYWwoJycpCi0gICAgICAgICAgICAgICAgX2xvZy5jcml0aWNh
bCgnLS10ZXN0LWxpc3QgZmlsZSAiJXMiIG5vdCBmb3VuZCcgJSBmaWxlKQotICAgICAgICAgICAg
cmFpc2UKLSAgICByZXR1cm4gdGVzdHMKK19sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVf
XykKIAogCiBkZWYgcnVuKHBvcnQsIG9wdGlvbnMsIGFyZ3MsIHJlZ3VsYXJfb3V0cHV0PXN5cy5z
dGRlcnIsCkBAIC0xMzQzLDEyICs5MCwxMiBAQCBkZWYgcnVuKHBvcnQsIG9wdGlvbnMsIGFyZ3Ms
IHJlZ3VsYXJfb3V0cHV0PXN5cy5zdGRlcnIsCiAgICAgIyBpbiBhIHRyeS9maW5hbGx5IHRvIGVu
c3VyZSB0aGF0IHdlIGNsZWFuIHVwIHRoZSBsb2dnaW5nIGNvbmZpZ3VyYXRpb24uCiAgICAgbnVt
X3VuZXhwZWN0ZWRfcmVzdWx0cyA9IC0xCiAgICAgdHJ5OgotICAgICAgICB0ZXN0X3J1bm5lciA9
IFRlc3RSdW5uZXIocG9ydCwgb3B0aW9ucywgcHJpbnRlcikKLSAgICAgICAgdGVzdF9ydW5uZXIu
X3ByaW50X2NvbmZpZygpCisgICAgICAgIHJ1bm5lciA9IHRlc3RfcnVubmVyLlRlc3RSdW5uZXIo
cG9ydCwgb3B0aW9ucywgcHJpbnRlcikKKyAgICAgICAgcnVubmVyLl9wcmludF9jb25maWcoKQog
CiAgICAgICAgIHByaW50ZXIucHJpbnRfdXBkYXRlKCJDb2xsZWN0aW5nIHRlc3RzIC4uLiIpCiAg
ICAgICAgIHRyeToKLSAgICAgICAgICAgIHRlc3RfcnVubmVyLmNvbGxlY3RfdGVzdHMoYXJncywg
bGFzdF91bmV4cGVjdGVkX3Jlc3VsdHMpCisgICAgICAgICAgICBydW5uZXIuY29sbGVjdF90ZXN0
cyhhcmdzLCBsYXN0X3VuZXhwZWN0ZWRfcmVzdWx0cykKICAgICAgICAgZXhjZXB0IElPRXJyb3Is
IGU6CiAgICAgICAgICAgICBpZiBlLmVycm5vID09IGVycm5vLkVOT0VOVDoKICAgICAgICAgICAg
ICAgICByZXR1cm4gLTEKQEAgLTEzNTYsMTkgKzEwMywxOSBAQCBkZWYgcnVuKHBvcnQsIG9wdGlv
bnMsIGFyZ3MsIHJlZ3VsYXJfb3V0cHV0PXN5cy5zdGRlcnIsCiAKICAgICAgICAgcHJpbnRlci5w
cmludF91cGRhdGUoIlBhcnNpbmcgZXhwZWN0YXRpb25zIC4uLiIpCiAgICAgICAgIGlmIG9wdGlv
bnMubGludF90ZXN0X2ZpbGVzOgotICAgICAgICAgICAgcmV0dXJuIHRlc3RfcnVubmVyLmxpbnQo
KQotICAgICAgICB0ZXN0X3J1bm5lci5wYXJzZV9leHBlY3RhdGlvbnMocG9ydC50ZXN0X3BsYXRm
b3JtX25hbWUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlv
bnMuY29uZmlndXJhdGlvbiA9PSAnRGVidWcnKQorICAgICAgICAgICAgcmV0dXJuIHJ1bm5lci5s
aW50KCkKKyAgICAgICAgcnVubmVyLnBhcnNlX2V4cGVjdGF0aW9ucyhwb3J0LnRlc3RfcGxhdGZv
cm1fbmFtZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuY29u
ZmlndXJhdGlvbiA9PSAnRGVidWcnKQogCiAgICAgICAgIHByaW50ZXIucHJpbnRfdXBkYXRlKCJD
aGVja2luZyBidWlsZCAuLi4iKQotICAgICAgICBpZiBub3QgcG9ydC5jaGVja19idWlsZCh0ZXN0
X3J1bm5lci5uZWVkc19odHRwKCkpOgorICAgICAgICBpZiBub3QgcG9ydC5jaGVja19idWlsZChy
dW5uZXIubmVlZHNfaHR0cCgpKToKICAgICAgICAgICAgIF9sb2cuZXJyb3IoIkJ1aWxkIGNoZWNr
IGZhaWxlZCIpCiAgICAgICAgICAgICByZXR1cm4gLTEKIAotICAgICAgICByZXN1bHRfc3VtbWFy
eSA9IHRlc3RfcnVubmVyLnNldF91cF9ydW4oKQorICAgICAgICByZXN1bHRfc3VtbWFyeSA9IHJ1
bm5lci5zZXRfdXBfcnVuKCkKICAgICAgICAgaWYgcmVzdWx0X3N1bW1hcnk6Ci0gICAgICAgICAg
ICBudW1fdW5leHBlY3RlZF9yZXN1bHRzID0gdGVzdF9ydW5uZXIucnVuKHJlc3VsdF9zdW1tYXJ5
KQotICAgICAgICAgICAgdGVzdF9ydW5uZXIuY2xlYW5fdXBfcnVuKCkKKyAgICAgICAgICAgIG51
bV91bmV4cGVjdGVkX3Jlc3VsdHMgPSBydW5uZXIucnVuKHJlc3VsdF9zdW1tYXJ5KQorICAgICAg
ICAgICAgcnVubmVyLmNsZWFuX3VwX3J1bigpCiAgICAgICAgICAgICBfbG9nLmRlYnVnKCJUZXN0
aW5nIGNvbXBsZXRlZCwgRXhpdCBzdGF0dXM6ICVkIiAlCiAgICAgICAgICAgICAgICAgICAgICAg
IG51bV91bmV4cGVjdGVkX3Jlc3VsdHMpCiAgICAgZmluYWxseToKQEAgLTE0MDcsOSArMTU0LDkg
QEAgZGVmIF9zZXRfdXBfZGVyaXZlZF9vcHRpb25zKHBvcnRfb2JqLCBvcHRpb25zKToKIAogICAg
IGlmIG5vdCBvcHRpb25zLnRpbWVfb3V0X21zOgogICAgICAgICBpZiBvcHRpb25zLmNvbmZpZ3Vy
YXRpb24gPT0gIkRlYnVnIjoKLSAgICAgICAgICAgIG9wdGlvbnMudGltZV9vdXRfbXMgPSBzdHIo
MiAqIFRlc3RSdW5uZXIuREVGQVVMVF9URVNUX1RJTUVPVVRfTVMpCisgICAgICAgICAgICBvcHRp
b25zLnRpbWVfb3V0X21zID0gc3RyKDIgKiB0ZXN0X3J1bm5lci5UZXN0UnVubmVyLkRFRkFVTFRf
VEVTVF9USU1FT1VUX01TKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgb3B0aW9ucy50aW1l
X291dF9tcyA9IHN0cihUZXN0UnVubmVyLkRFRkFVTFRfVEVTVF9USU1FT1VUX01TKQorICAgICAg
ICAgICAgb3B0aW9ucy50aW1lX291dF9tcyA9IHN0cih0ZXN0X3J1bm5lci5UZXN0UnVubmVyLkRF
RkFVTFRfVEVTVF9USU1FT1VUX01TKQogCiAgICAgb3B0aW9ucy5zbG93X3RpbWVfb3V0X21zID0g
c3RyKDUgKiBpbnQob3B0aW9ucy50aW1lX291dF9tcykpCiAgICAgcmV0dXJuIHdhcm5pbmdzCmRp
ZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0
X3Rlc3RzX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cnVuX3dlYmtpdF90ZXN0c191bml0dGVzdC5weQppbmRleCBkMDdlOTI4N2JhMzkyMzI5NWI4Yjgy
ODQ0ZjI1ZWNiMDRkZmIwYzcxLi4yYmZhYzJmNGNmNjVkMTM5NTMyODE4MDQ3MTZhYWY4ZjA1YmQx
MzVkIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5f
d2Via2l0X3Rlc3RzX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfdW5pdHRlc3QucHkKQEAgLTUyMSw2NyArNTIxLDYg
QEAgY2xhc3MgUmViYXNlbGluZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICAgICAg
Y29kZWNzLm9wZW4gPSBvcmlnaW5hbF9vcGVuCiAKIAotY2xhc3MgVGVzdFJ1bm5lcldyYXBwZXIo
cnVuX3dlYmtpdF90ZXN0cy5UZXN0UnVubmVyKToKLSAgICBkZWYgX2dldF90ZXN0X2lucHV0X2Zv
cl9maWxlKHNlbGYsIHRlc3RfZmlsZSk6Ci0gICAgICAgIHJldHVybiB0ZXN0X2ZpbGUKLQotCi1j
bGFzcyBUZXN0UnVubmVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGVmIHRlc3RfcmVz
dWx0c19odG1sKHNlbGYpOgotICAgICAgICBtb2NrX3BvcnQgPSBNb2NrKCkKLSAgICAgICAgbW9j
a19wb3J0LnJlbGF0aXZlX3Rlc3RfZmlsZW5hbWUgPSBsYW1iZGEgbmFtZTogbmFtZQotICAgICAg
ICBtb2NrX3BvcnQuZmlsZW5hbWVfdG9fdXJpID0gbGFtYmRhIG5hbWU6IG5hbWUKLQotICAgICAg
ICBydW5uZXIgPSBydW5fd2Via2l0X3Rlc3RzLlRlc3RSdW5uZXIocG9ydD1tb2NrX3BvcnQsIG9w
dGlvbnM9TW9jaygpLAotICAgICAgICAgICAgcHJpbnRlcj1Nb2NrKCkpCi0gICAgICAgIGV4cGVj
dGVkX2h0bWwgPSB1IiIiPGh0bWw+Ci0gIDxoZWFkPgotICAgIDx0aXRsZT5MYXlvdXQgVGVzdCBS
ZXN1bHRzICh0aW1lKTwvdGl0bGU+Ci0gIDwvaGVhZD4KLSAgPGJvZHk+Ci0gICAgPGgyPlRpdGxl
ICh0aW1lKTwvaDI+Ci0gICAgICAgIDxwPjxhIGhyZWY9J3Rlc3RfcGF0aCc+dGVzdF9wYXRoPC9h
PjxiciAvPgotPC9wPgotPC9ib2R5PjwvaHRtbD4KLSIiIgotICAgICAgICBodG1sID0gcnVubmVy
Ll9yZXN1bHRzX2h0bWwoWyJ0ZXN0X3BhdGgiXSwge30sICJUaXRsZSIsIG92ZXJyaWRlX3RpbWU9
InRpbWUiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGh0bWwsIGV4cGVjdGVkX2h0bWwpCi0K
LSAgICBkZWYgdGVzdF9zaGFyZF90ZXN0cyhzZWxmKToKLSAgICAgICAgIyBUZXN0IHRoYXQgX3No
YXJkX3Rlc3RzIGluIHJ1bl93ZWJraXRfdGVzdHMuVGVzdFJ1bm5lciByZWFsbHkKLSAgICAgICAg
IyBwdXQgdGhlIGh0dHAgdGVzdHMgZmlyc3QgaW4gdGhlIHF1ZXVlLgotICAgICAgICBydW5uZXIg
PSBUZXN0UnVubmVyV3JhcHBlcihwb3J0PU1vY2soKSwgb3B0aW9ucz1Nb2NrKCksCi0gICAgICAg
ICAgICBwcmludGVyPU1vY2soKSkKLQotICAgICAgICB0ZXN0X2xpc3QgPSBbCi0gICAgICAgICAg
IkxheW91dFRlc3RzL3dlYnNvY2tldC90ZXN0cy91bmljb2RlLmh0bSIsCi0gICAgICAgICAgIkxh
eW91dFRlc3RzL2FuaW1hdGlvbnMva2V5ZnJhbWVzLmh0bWwiLAotICAgICAgICAgICJMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3ZpZXctc291cmNlLW5vLXJlZnJlc2guaHRtbCIsCi0g
ICAgICAgICAgIkxheW91dFRlc3RzL3dlYnNvY2tldC90ZXN0cy93ZWJzb2NrZXQtcHJvdG9jb2wt
aWdub3JlZC5odG1sIiwKLSAgICAgICAgICAiTGF5b3V0VGVzdHMvZmFzdC9jc3MvZGlzcGxheS1u
b25lLWlubGluZS1zdHlsZS1jaGFuZ2UtY3Jhc2guaHRtbCIsCi0gICAgICAgICAgIkxheW91dFRl
c3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvc3VwcG9ydGVkLXhtbC1jb250ZW50LXR5cGVz
Lmh0bWwiLAotICAgICAgICAgICJMYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDIvaHRtbC9IVE1M
QW5jaG9yRWxlbWVudDAzLmh0bWwiLAotICAgICAgICAgICJMYXlvdXRUZXN0cy9pZXRlc3RjZW50
ZXIvSmF2YXNjcmlwdC8xMS4xLjVfNC00LWMtMS5odG1sIiwKLSAgICAgICAgICAiTGF5b3V0VGVz
dHMvZG9tL2h0bWwvbGV2ZWwyL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQwNi5odG1sIiwKLSAgICAg
ICAgXQotCi0gICAgICAgIGV4cGVjdGVkX3Rlc3RzX3RvX2h0dHBfbG9jayA9IHNldChbCi0gICAg
ICAgICAgJ0xheW91dFRlc3RzL3dlYnNvY2tldC90ZXN0cy91bmljb2RlLmh0bScsCi0gICAgICAg
ICAgJ0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvdmlldy1zb3VyY2Utbm8tcmVmcmVz
aC5odG1sJywKLSAgICAgICAgICAnTGF5b3V0VGVzdHMvd2Vic29ja2V0L3Rlc3RzL3dlYnNvY2tl
dC1wcm90b2NvbC1pZ25vcmVkLmh0bWwnLAotICAgICAgICAgICdMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3htbGh0dHByZXF1ZXN0L3N1cHBvcnRlZC14bWwtY29udGVudC10eXBlcy5odG1sJywKLSAg
ICAgICAgXSkKLQotICAgICAgICAjIEZJWE1FOiBJZGVhbGx5IHRoZSBIVFRQIHRlc3RzIGRvbid0
IGhhdmUgdG8gYWxsIGJlIGluIG9uZSBzaGFyZC4KLSAgICAgICAgc2luZ2xlX3RocmVhZF9yZXN1
bHRzID0gcnVubmVyLl9zaGFyZF90ZXN0cyh0ZXN0X2xpc3QsIEZhbHNlKQotICAgICAgICBtdWx0
aV90aHJlYWRfcmVzdWx0cyA9IHJ1bm5lci5fc2hhcmRfdGVzdHModGVzdF9saXN0LCBUcnVlKQot
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInRlc3RzX3RvX2h0dHBfbG9jayIsIHNpbmdsZV90
aHJlYWRfcmVzdWx0c1swXVswXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF90
ZXN0c190b19odHRwX2xvY2ssIHNldChzaW5nbGVfdGhyZWFkX3Jlc3VsdHNbMF1bMV0pKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKCJ0ZXN0c190b19odHRwX2xvY2siLCBtdWx0aV90aHJlYWRf
cmVzdWx0c1swXVswXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF90ZXN0c190
b19odHRwX2xvY2ssIHNldChtdWx0aV90aHJlYWRfcmVzdWx0c1swXVsxXSkpCi0KLQogY2xhc3Mg
RHJ5cnVuVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgIyBGSVhNRTogaXQncyBoYXJkIHRv
IGtub3cgd2hpY2ggcGxhdGZvcm1zIGFyZSBzYWZlIHRvIHRlc3Q7IHRoZQogICAgICMgY2hyb21p
dW0gcGxhdGZvcm1zIHJlcXVpcmUgYSBjaHJvbWl1bSBjaGVja291dCwgYW5kIHRoZSBtYWMgcGxh
dGZvcm0K
</data>

          </attachment>
      

    </bug>

</bugzilla>