<?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>74566</bug_id>
          
          <creation_ts>2011-12-14 17:19:39 -0800</creation_ts>
          <short_desc>webkitpy: finish refactoring port classes to make a host mandatory</short_desc>
          <delta_ts>2011-12-19 12:31:37 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>74551</dependson>
    
    <dependson>74556</dependson>
    
    <dependson>74562</dependson>
          <blocked>74138</blocked>
    
    <blocked>74878</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Pranke">dpranke</reporter>
          <assigned_to name="Dirk Pranke">dpranke</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>ojan</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>521497</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-12-14 17:19:39 -0800</bug_when>
    <thetext>webkitpy: finish refactoring port classes to make a host mandatory</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521501</commentid>
    <comment_count>1</comment_count>
      <attachid>119344</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-12-14 17:22:03 -0800</bug_when>
    <thetext>Created attachment 119344
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521503</commentid>
    <comment_count>2</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-12-14 17:23:49 -0800</bug_when>
    <thetext>this is the last (4 of 4) of the patches ... this can&apos;t easily be broken up any smaller because of the heavy dependency of the integrationtests and rebaselining tests on how mock filesystems are created and populated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521563</commentid>
    <comment_count>3</comment_count>
      <attachid>119344</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-12-14 18:31:12 -0800</bug_when>
    <thetext>Comment on attachment 119344
Patch

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

LGTM.

&gt; Tools/Scripts/webkitpy/layout_tests/port/base.py:55
&gt; +from webkitpy.common.system.systemhost_mock import MockSystemHost

I don&apos;t think we want to import testing code into production code.  I suspect this import isn&apos;t even needed. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521596</commentid>
    <comment_count>4</comment_count>
      <attachid>119344</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-12-14 20:00:21 -0800</bug_when>
    <thetext>Comment on attachment 119344
Patch

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

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/port/base.py:55
&gt;&gt; +from webkitpy.common.system.systemhost_mock import MockSystemHost
&gt; 
&gt; I don&apos;t think we want to import testing code into production code.  I suspect this import isn&apos;t even needed. :)

I think you&apos;re right and this can be deleted now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522466</commentid>
    <comment_count>5</comment_count>
      <attachid>119547</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-12-15 19:52:28 -0800</bug_when>
    <thetext>Created attachment 119547
delete unneeded MockSystemHost import</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522488</commentid>
    <comment_count>6</comment_count>
      <attachid>119547</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-12-15 20:46:37 -0800</bug_when>
    <thetext>Comment on attachment 119547
delete unneeded MockSystemHost import

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

LGTM.

&gt; Tools/Scripts/webkitpy/layout_tests/port/base_unittest.py:54
&gt; +        if &apos;executive&apos; in kwargs:
&gt; +            host.executive = kwargs[&apos;executive&apos;]

I thought you were going with the executive=None route?  Port doesn&apos;t care about the executive parameter anymore.

&gt; Tools/Scripts/webkitpy/layout_tests/port/test.py:-306
&gt; -def unit_test_filesystem(files=None):
&gt; -    files = files or {}
&gt; -    fs = MockFileSystem(files, dirs=set([&apos;/mock-checkout&apos;]))  # Make sure at least the checkout_root exists as a directory.
&gt; -    add_unit_tests_to_mock_filesystem(fs)
&gt; -    return fs

Yay!

&gt; Tools/Scripts/webkitpy/layout_tests/port/test.py:315
&gt; +        self._expectations_path = LAYOUT_TEST_DIR + &apos;/platform/test/test_expectations.txt&apos;

Probably should be using fs.join, but really doesn&apos;t matter. :)

&gt; Tools/Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:404
&gt; +        host = MockHost()
&gt; +        self.assertTrue(passing_run(host=host))
&gt; +        self.assertEquals(host.filesystem.read_text_file(&apos;/tmp/layout-test-results/passes/error-stderr.txt&apos;),

I think passing_run() wants to be a method on some helper object which can be created with a Host.  But obviously that&apos;s a later change.  Free funtions aren&apos;t very pythonic IMO.

&gt; Tools/Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:411
&gt; +        tests_run = get_tests_run([&apos;--test-list=%s&apos; % filename], tests_included=True, flatten_batches=True, host=host)

likewise get_tests_run would be on the same object as passing_run.  It would just be run() and then you&apos;d assert on some sort of passed, tests_run, members, etc. :)  Again, not for this patch (and maybe not ever!), just musing.

&gt; Tools/Scripts/webkitpy/to_be_moved/rebaseline_chromium_webkit_tests_unittest.py:212
&gt; -        filesystem.maybe_make_directory(mock_scm.checkout_root)
&gt; +        filesystem.maybe_make_directory(host.scm().checkout_root)

I&apos;m pretty sure that the default filesystem already includes checkout_root. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522798</commentid>
    <comment_count>7</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-12-16 09:55:46 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/port/base_unittest.py:54
&gt; &gt; +        if &apos;executive&apos; in kwargs:
&gt; &gt; +            host.executive = kwargs[&apos;executive&apos;]
&gt; 
&gt; I thought you were going with the executive=None route?  Port doesn&apos;t care about the executive parameter anymore.
&gt; 

I fix this in the patch in bug 74562 (which will land before this), but I hadn&apos;t rebased this patch against the latest version of that patch; it looks like these lines are bad. Will fix.

&gt; &gt; Tools/Scripts/webkitpy/layout_tests/port/test.py:315
&gt; &gt; +        self._expectations_path = LAYOUT_TEST_DIR + &apos;/platform/test/test_expectations.txt&apos;
&gt; 
&gt; Probably should be using fs.join, but really doesn&apos;t matter. :)
&gt;

Perhaps; we pervasively assume string concatenations and os.sep == &apos;/&apos; in this file (which is safe when we have MockHosts); fixing it everywhere would probably be more trouble than it&apos;s worth.
 
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:404
&gt; &gt; +        host = MockHost()
&gt; &gt; +        self.assertTrue(passing_run(host=host))
&gt; &gt; +        self.assertEquals(host.filesystem.read_text_file(&apos;/tmp/layout-test-results/passes/error-stderr.txt&apos;),
&gt; 
&gt; I think passing_run() wants to be a method on some helper object which can be created with a Host.  But obviously that&apos;s a later change.  Free funtions aren&apos;t very pythonic IMO.

I think you and I disagree on the badness of free functions; I have nothing against them as long as they&apos;re pure (Port.factory.get() being my favorite example of you and I disagreeing). That said, you&apos;re right in this case a helper object for this set of functions might be cleaner.

&gt; &gt; Tools/Scripts/webkitpy/to_be_moved/rebaseline_chromium_webkit_tests_unittest.py:212
&gt; &gt; -        filesystem.maybe_make_directory(mock_scm.checkout_root)
&gt; &gt; +        filesystem.maybe_make_directory(host.scm().checkout_root)
&gt; 
&gt; I&apos;m pretty sure that the default filesystem already includes checkout_root. :)

You might be right; I&apos;ll double check.

Thanks for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524107</commentid>
    <comment_count>8</comment_count>
      <attachid>119900</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-12-19 12:21:24 -0800</bug_when>
    <thetext>Created attachment 119900
update w/ review feedback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524108</commentid>
    <comment_count>9</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-12-19 12:22:27 -0800</bug_when>
    <thetext>Committed r103254: &lt;http://trac.webkit.org/changeset/103254&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119344</attachid>
            <date>2011-12-14 17:22:03 -0800</date>
            <delta_ts>2011-12-15 19:52:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74566-20111214172202.patch</filename>
            <type>text/plain</type>
            <size>42589</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyNzI3CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggODJjYjRmYzQ2MmVhMWNkYWJjOGQ3OWU4MDkyNjg2MmFm
ZTU2ODU1Ny4uYWJhMDNmOTYxMDgzYTk5ZDY5NTY2N2E2MzE0NjNjOWEzYzMxNDQ1ZiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDYw
IEBACiAyMDExLTEyLTE0ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCisg
ICAgICAgIHdlYmtpdHB5OiBmaW5pc2ggcmVmYWN0b3JpbmcgcG9ydCBjbGFzc2VzIHRvIG1ha2Ug
YSBob3N0IG1hbmRhdG9yeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NzQ1NjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGlzIGNoYW5nZSBtYWtlcyBhbGwgUG9ydCBvYmplY3RzIHRha2UgYSByZXF1aXJl
ZCAoU3lzdGVtKUhvc3QKKyAgICAgICAgcGFyYW1ldGVyLCBhbmQgdXBkYXRlcyB0aGUgVGVzdFBv
cnQgb2JqZWN0IHRvIG5vIGxvbmdlciBjcmVhdGUgYQorICAgICAgICBtb2NrIGZpbGVzeXN0ZW0g
b3IgYWRkIGZpbGVzIHRvIHRoZSBleGlzdGluZyBmaWxlc3lzdGVtIGJ5CisgICAgICAgIGRlZmF1
bHQuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2Uu
cHk6CisgICAgICAgIChQb3J0Ll9faW5pdF9fKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L2ZhY3RvcnkucHk6CisgICAgICAgIChQb3J0RmFjdG9yeS5fX2lu
aXRfXyk6CisgICAgICAgIChQb3J0RmFjdG9yeS5fZ2V0X2t3YXJncyk6CisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0LnB5OgorICAgICAgICAoVGVzdElu
c3RhbmNlLl9faW5pdF9fKToKKyAgICAgICAgKFRlc3RQb3J0Ll9faW5pdF9fKToKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX2ludGVncmF0
aW9udGVzdC5weToKKyAgICAgICAgKHBhc3NpbmdfcnVuKToKKyAgICAgICAgKGxvZ2dpbmdfcnVu
KToKKyAgICAgICAgKGdldF90ZXN0c19ydW4pOgorICAgICAgICAoTWFpblRlc3QudGVzdF9zaW5n
bGVfZmlsZSk6CisgICAgICAgIChNYWluVGVzdC50ZXN0X3N0ZGVycl9pc19zYXZlZCk6CisgICAg
ICAgIChNYWluVGVzdC50ZXN0X3Rlc3RfbGlzdCk6CisgICAgICAgIChNYWluVGVzdC50ZXN0X3Rl
c3RfbGlzdF93aXRoX3ByZWZpeCk6CisgICAgICAgIChNYWluVGVzdC50ZXN0X21pc3NpbmdfYW5k
X3VuZXhwZWN0ZWRfcmVzdWx0cyk6CisgICAgICAgIChNYWluVGVzdC50ZXN0X21pc3NpbmdfYW5k
X3VuZXhwZWN0ZWRfcmVzdWx0c193aXRoX2N1c3RvbV9leGl0X2NvZGUpOgorICAgICAgICAoTWFp
blRlc3QudGVzdF9jcmFzaF93aXRoX3N0ZGVycik6CisgICAgICAgIChNYWluVGVzdC50ZXN0X25v
X2ltYWdlX2ZhaWx1cmVfd2l0aF9pbWFnZV9kaWZmKToKKyAgICAgICAgKE1haW5UZXN0LnRlc3Rf
Y3Jhc2hfbG9nKToKKyAgICAgICAgKE1haW5UZXN0LnRlc3Rfd2ViX3Byb2Nlc3NfY3Jhc2hfbG9n
KToKKyAgICAgICAgKE1haW5UZXN0LnRlc3RfZXhpdF9hZnRlcl9uX2ZhaWx1cmVzX3VwbG9hZCk6
CisgICAgICAgIChNYWluVGVzdC50ZXN0X3Jlc3VsdHNfZGlyZWN0b3J5X2Fic29sdXRlKToKKyAg
ICAgICAgKE1haW5UZXN0LnRlc3RfcmVzdWx0c19kaXJlY3RvcnlfcmVsYXRpdmUpOgorICAgICAg
ICAoTWFpblRlc3QudGVzdF9yZXRyaWVzX2RpcmVjdG9yeSk6CisgICAgICAgIChNYWluVGVzdC50
ZXN0X3RvbGVyYW5jZS5nZXRfcG9ydF9mb3JfcnVuKToKKyAgICAgICAgKE1haW5UZXN0LnRlc3Rf
cmVmdGVzdF9zaG91bGRfbm90X3VzZV9uYW1pbmdfY29udmVudGlvbl9pZl9ub3RfbGlzdGVkX2lu
X3JlZnRlc3RsaXN0KToKKyAgICAgICAgKEVuZFRvRW5kVGVzdC50ZXN0X2VuZF90b19lbmQpOgor
ICAgICAgICAoRW5kVG9FbmRUZXN0LnRlc3RfcmVmdGVzdF93aXRoX3R3b19ub3RyZWZzKToKKyAg
ICAgICAgKFJlYmFzZWxpbmVUZXN0LnRlc3RfcmVzZXRfcmVzdWx0cyk6CisgICAgICAgIChSZWJh
c2VsaW5lVGVzdC50ZXN0X21pc3NpbmdfcmVzdWx0cyk6CisgICAgICAgIChSZWJhc2VsaW5lVGVz
dC50ZXN0X25ld19iYXNlbGluZSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b19iZV9t
b3ZlZC9yZWJhc2VsaW5lX2Nocm9taXVtX3dlYmtpdF90ZXN0cy5weToKKyAgICAgICAgKFJlYmFz
ZWxpbmVyLl9faW5pdF9fKToKKyAgICAgICAgKG1haW4pOgorICAgICAgICAocmVhbF9tYWluKToK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3RvX2JlX21vdmVkL3JlYmFzZWxpbmVfY2hyb21p
dW1fd2Via2l0X3Rlc3RzX3VuaXR0ZXN0LnB5OgorICAgICAgICAodGVzdF9ob3N0X3BvcnRfYW5k
X2ZpbGVzeXN0ZW0pOgorICAgICAgICAoVGVzdFJlYmFzZWxpbmVyLm1ha2VfcmViYXNlbGluZXIp
OgorICAgICAgICAoVGVzdFJlYWxNYWluLnRlc3RfYWxsX3BsYXRmb3Jtcyk6CisgICAgICAgIChU
ZXN0SHRtbEdlbmVyYXRvci5tYWtlX2dlbmVyYXRvcik6CisKKzIwMTEtMTItMTQgIERpcmsgUHJh
bmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKICAgICAgICAgd2Via2l0cHk6IHVwZGF0ZSB1
bml0IHRlc3RzIGluIHByZXBhcmF0aW9uIGZvciBtYWtpbmcgaG9zdCBhIG1hbmRhdG9yeSBwYXJh
bWV0ZXIgdG8gUG9ydCBvYmplY3RzCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03NDU2MgogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L2Jhc2UucHkKaW5kZXggODUxMTQ0MDAyNTE5MDYyODRiZDEwYTNmNDljNzVj
ZjA5NWRiNzk2ZS4uMzAwMmU0MjI0YzliYjBjZjdjYTlmMmQ5OTUwNGY2MDgxNjgzOWJkMyAxMDA3
NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5
CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQpA
QCAtNTEsNiArNTEsOCBAQCBmcm9tIHdlYmtpdHB5LmNvbW1vbiBpbXBvcnQgZmluZF9maWxlcwog
ZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtIGltcG9ydCBsb2d1dGlscwogZnJvbSB3ZWJraXRw
eS5jb21tb24uc3lzdGVtIGltcG9ydCBwYXRoCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0u
ZXhlY3V0aXZlIGltcG9ydCBTY3JpcHRFcnJvcgorZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVt
LnN5c3RlbWhvc3QgaW1wb3J0IFN5c3RlbUhvc3QKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3Rl
bS5zeXN0ZW1ob3N0X21vY2sgaW1wb3J0IE1vY2tTeXN0ZW1Ib3N0CiBmcm9tIHdlYmtpdHB5Lmxh
eW91dF90ZXN0cyBpbXBvcnQgcmVhZF9jaGVja3N1bV9mcm9tX3BuZwogZnJvbSB3ZWJraXRweS5s
YXlvdXRfdGVzdHMubW9kZWxzLnRlc3RfY29uZmlndXJhdGlvbiBpbXBvcnQgVGVzdENvbmZpZ3Vy
YXRpb24KIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQgaW1wb3J0IGNvbmZpZyBhcyBw
b3J0X2NvbmZpZwpAQCAtMTEwLDkgKzExMiw5IEBAIGNsYXNzIFBvcnQob2JqZWN0KToKICAgICAg
ICAgc2VsZi5ob3N0ID0gaG9zdAogCiAgICAgICAgICMgRklYTUU6IFJlbW92ZSB0aGVzIGFjY2Vz
c29ycyBvbmNlIGFsbCBjYWxsZXJzIGhhdmUgbW92ZWQgdG8gdXNpbmcgc2VsZi5ob3N0LgotICAg
ICAgICBzZWxmLmV4ZWN1dGl2ZSA9IGV4ZWN1dGl2ZSBvciBzZWxmLmhvc3QuZXhlY3V0aXZlCi0g
ICAgICAgIHNlbGYudXNlciA9IHVzZXIgb3Igc2VsZi5ob3N0LnVzZXIKLSAgICAgICAgc2VsZi5m
aWxlc3lzdGVtID0gZmlsZXN5c3RlbSBvciBzZWxmLmhvc3QuZmlsZXN5c3RlbQorICAgICAgICBz
ZWxmLmV4ZWN1dGl2ZSA9IHNlbGYuaG9zdC5leGVjdXRpdmUKKyAgICAgICAgc2VsZi51c2VyID0g
c2VsZi5ob3N0LnVzZXIKKyAgICAgICAgc2VsZi5maWxlc3lzdGVtID0gc2VsZi5ob3N0LmZpbGVz
eXN0ZW0KICAgICAgICAgc2VsZi5jb25maWcgPSBjb25maWcgb3IgcG9ydF9jb25maWcuQ29uZmln
KHNlbGYuZXhlY3V0aXZlLCBzZWxmLmZpbGVzeXN0ZW0pCiAKICAgICAgICAgIyBGSVhNRTogUmVt
b3ZlIGFsbCBvZiB0aGUgb2xkICJwcm90ZWN0ZWQiIHZlcnNpb25zIHdoZW4gd2UgY2FuLgpkaWZm
IC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9mYWN0b3J5
LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9mYWN0b3J5LnB5
CmluZGV4IDlhNWVlNTZlMzA2MzE0YWQ4MWNkODljZjNlYTlkMWE5ZmU1ZDYzOTcuLjc2NzJkZTQ0
YzY3OGIyN2Y2YTZmM2E5ODRmMjYwNTM3ODg1ZTUzOGQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZmFjdG9yeS5weQorKysgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2ZhY3RvcnkucHkKQEAgLTQyLDcgKzQyLDcg
QEAgY2xhc3MgQnVpbGRlck9wdGlvbnMob2JqZWN0KToKIAogCiBjbGFzcyBQb3J0RmFjdG9yeShv
YmplY3QpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0PU5vbmUpOgorICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBob3N0KToKICAgICAgICAgc2VsZi5faG9zdCA9IGhvc3QKIAogICAgIGRlZiBf
cG9ydF9uYW1lX2Zyb21fYXJndW1lbnRzX2FuZF9vcHRpb25zKHNlbGYsICoqa3dhcmdzKToKQEAg
LTY3LDIzICs2NywxMiBAQCBjbGFzcyBQb3J0RmFjdG9yeShvYmplY3QpOgogICAgICAgICAgICAg
cmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigndW5rbm93biBwb3J0OyBzeXMucGxhdGZvcm0gPSAi
JXMiJyAlIHN5cy5wbGF0Zm9ybSkKICAgICAgICAgcmV0dXJuIHBvcnRfdG9fdXNlCiAKLSAgICBk
ZWYgX3NldF9kZWZhdWx0X292ZXJyaWRpbmdfbm9uZShzZWxmLCBkaWN0aW9uYXJ5LCBrZXksIGRl
ZmF1bHQpOgotICAgICAgICAjIGRpY3Quc2V0ZGVmYXVsdCBhbG1vc3Qgd29ya3MsIGJ1dCB3b24n
dCBhY3R1YWxseSBvdmVycmlkZSBOb25lIHZhbHVlcywgd2hpY2ggd2Ugd2FudC4KLSAgICAgICAg
aWYgbm90IGRpY3Rpb25hcnkuZ2V0KGtleSk6Ci0gICAgICAgICAgICBkaWN0aW9uYXJ5W2tleV0g
PSBkZWZhdWx0Ci0gICAgICAgIHJldHVybiBkaWN0aW9uYXJ5W2tleV0KLQotICAgIGRlZiBfZ2V0
X2t3YXJncyhzZWxmLCBob3N0PU5vbmUsICoqa3dhcmdzKToKKyAgICBkZWYgX2dldF9rd2FyZ3Mo
c2VsZiwgKiprd2FyZ3MpOgogICAgICAgICBwb3J0X3RvX3VzZSA9IHNlbGYuX3BvcnRfbmFtZV9m
cm9tX2FyZ3VtZW50c19hbmRfb3B0aW9ucygqKmt3YXJncykKIAogICAgICAgICBpZiBwb3J0X3Rv
X3VzZS5zdGFydHN3aXRoKCd0ZXN0Jyk6CiAgICAgICAgICAgICBpbXBvcnQgdGVzdAogICAgICAg
ICAgICAgbWFrZXIgPSB0ZXN0LlRlc3RQb3J0Ci0gICAgICAgICAgICAjIEZJWE1FOiBUaGlzIGlz
IGEgaGFjayB0byBvdmVycmlkZSB0aGUgImRlZmF1bHQiIGZpbGVzeXN0ZW0KLSAgICAgICAgICAg
ICMgcHJvdmlkZWQgdG8gdGhlIHBvcnQuICBUaGUgdW5pdF90ZXN0X2ZpbGVzeXN0ZW0gaGFzIGFu
IGV4dHJhCi0gICAgICAgICAgICAjIF90ZXN0cyBhdHRyaWJ1dGUgd2hpY2ggYSBidW5jaCBvZiB1
bml0dGVzdHMgZGVwZW5kIG9uLgotICAgICAgICAgICAgZnJvbSAudGVzdCBpbXBvcnQgdW5pdF90
ZXN0X2ZpbGVzeXN0ZW0KLSAgICAgICAgICAgIHNlbGYuX3NldF9kZWZhdWx0X292ZXJyaWRpbmdf
bm9uZShrd2FyZ3MsICdmaWxlc3lzdGVtJywgdW5pdF90ZXN0X2ZpbGVzeXN0ZW0oKSkKICAgICAg
ICAgZWxpZiBwb3J0X3RvX3VzZS5zdGFydHN3aXRoKCdkcnlydW4nKToKICAgICAgICAgICAgIGlt
cG9ydCBkcnlydW4KICAgICAgICAgICAgIG1ha2VyID0gZHJ5cnVuLkRyeVJ1blBvcnQKQEAgLTEy
Myw4ICsxMTIsNyBAQCBjbGFzcyBQb3J0RmFjdG9yeShvYmplY3QpOgogICAgICAgICBlbHNlOgog
ICAgICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigndW5zdXBwb3J0ZWQgcG9ydDog
JXMnICUgcG9ydF90b191c2UpCiAKLSAgICAgICAgaG9zdCA9IGhvc3Qgb3Igc2VsZi5faG9zdAot
ICAgICAgICByZXR1cm4gbWFrZXIoaG9zdCwgKiprd2FyZ3MpCisgICAgICAgIHJldHVybiBtYWtl
cihzZWxmLl9ob3N0LCAqKmt3YXJncykKIAogICAgIGRlZiBhbGxfcG9ydF9uYW1lcyhzZWxmKToK
ICAgICAgICAgIiIiUmV0dXJuIGEgbGlzdCBvZiBhbGwgdmFsaWQsIGZ1bGx5LXNwZWNpZmllZCwg
InJlYWwiIHBvcnQgbmFtZXMuCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L3Rlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L3Rlc3QucHkKaW5kZXggOGU0NzI4ZDE2ZTYxN2ZhNGY4YjcyMTUyNTVlNTg3MTVi
MWU3ZTExMS4uOTVjOTJiZTFmNjFmNWQ0OWMyODZmNjNhZGE2MDE5NTkzM2EyNmQ4YyAxMDA2NDQK
LS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0LnB5Cisr
KyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdC5weQpAQCAt
NTUsNyArNTUsNyBAQCBjbGFzcyBUZXN0SW5zdGFuY2Uob2JqZWN0KToKIAogICAgICAgICAjIFRo
ZSB2YWx1ZXMgb2YgZWFjaCBmaWVsZCBhcmUgdHJlYXRlZCBhcyByYXcgYnl0ZSBzdHJpbmdzLiBU
aGV5CiAgICAgICAgICMgd2lsbCBiZSBjb252ZXJ0ZWQgdG8gdW5pY29kZSBzdHJpbmdzIHdoZXJl
IGFwcHJvcHJpYXRlIHVzaW5nCi0gICAgICAgICMgTW9ja0ZpbGVTeXN0ZW0ucmVhZF90ZXh0X2Zp
bGUoKS4KKyAgICAgICAgIyBGaWxlU3lzdGVtLnJlYWRfdGV4dF9maWxlKCkuCiAgICAgICAgIHNl
bGYuYWN0dWFsX3RleHQgPSBzZWxmLmJhc2UgKyAnLXR4dCcKICAgICAgICAgc2VsZi5hY3R1YWxf
Y2hlY2tzdW0gPSBzZWxmLmJhc2UgKyAnLWNoZWNrc3VtJwogCkBAIC0yOTksMTMgKzI5OSw2IEBA
IFdPTlRGSVggU0tJUCA6IGZhaWx1cmVzL2V4cGVjdGVkL2V4Y2VwdGlvbi5odG1sID0gQ1JBU0gK
ICAgICBmaWxlc3lzdGVtLmNsZWFyX3dyaXR0ZW5fZmlsZXMoKQogCiAKLWRlZiB1bml0X3Rlc3Rf
ZmlsZXN5c3RlbShmaWxlcz1Ob25lKToKLSAgICBmaWxlcyA9IGZpbGVzIG9yIHt9Ci0gICAgZnMg
PSBNb2NrRmlsZVN5c3RlbShmaWxlcywgZGlycz1zZXQoWycvbW9jay1jaGVja291dCddKSkgICMg
TWFrZSBzdXJlIGF0IGxlYXN0IHRoZSBjaGVja291dF9yb290IGV4aXN0cyBhcyBhIGRpcmVjdG9y
eS4KLSAgICBhZGRfdW5pdF90ZXN0c190b19tb2NrX2ZpbGVzeXN0ZW0oZnMpCi0gICAgcmV0dXJu
IGZzCi0KLQogY2xhc3MgVGVzdFBvcnQoUG9ydCk6CiAgICAgIiIiVGVzdCBpbXBsZW1lbnRhdGlv
biBvZiB0aGUgUG9ydCBpbnRlcmZhY2UuIiIiCiAgICAgQUxMX0JBU0VMSU5FX1ZBUklBTlRTID0g
KApAQCAtMzE0LDI2ICszMDcsMTUgQEAgY2xhc3MgVGVzdFBvcnQoUG9ydCk6CiAgICAgICAgICd0
ZXN0LWxpbnV4LXg4Nl82NCcsCiAgICAgKQogCi0gICAgZGVmIF9zZXRfZGVmYXVsdF9vdmVycmlk
aW5nX25vbmUoc2VsZiwgZGljdGlvbmFyeSwga2V5LCBkZWZhdWx0KToKLSAgICAgICAgIyBkaWN0
LnNldGRlZmF1bHQgYWxtb3N0IHdvcmtzLCBidXQgd29uJ3QgYWN0dWFsbHkgb3ZlcnJpZGUgTm9u
ZSB2YWx1ZXMsIHdoaWNoIHdlIHdhbnQuCi0gICAgICAgIGlmIG5vdCBkaWN0aW9uYXJ5LmdldChr
ZXkpOgotICAgICAgICAgICAgZGljdGlvbmFyeVtrZXldID0gZGVmYXVsdAotICAgICAgICByZXR1
cm4gZGljdGlvbmFyeVtrZXldCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgaG9zdD1Ob25lLCBw
b3J0X25hbWU9Tm9uZSwgKiprd2FyZ3MpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0LCBw
b3J0X25hbWU9Tm9uZSwgKiprd2FyZ3MpOgogICAgICAgICBpZiBub3QgcG9ydF9uYW1lIG9yIHBv
cnRfbmFtZSA9PSAndGVzdCc6CiAgICAgICAgICAgICBwb3J0X25hbWUgPSAndGVzdC1tYWMtbGVv
cGFyZCcKIAotICAgICAgICAjIEZJWE1FOiB3ZSBpbXBvcnQgdGhpcyBoZXJlIGluc3RlYWQgb2Yg
YXQgdGhlIHRvcC1sZXZlbCBpbiBvcmRlciB0byBhdm9pZAotICAgICAgICAjIGEgY2lyY3VsYXIg
aW1wb3J0LiBUaGlzIHNob3VsZCBiZSByZW1vdmVkIHdoZW4gaG9zdCBiZWNvbWUgYSByZXF1aXJl
ZCBwYXJhbWV0ZXIuCi0gICAgICAgIGZyb20gd2Via2l0cHkuY29tbW9uLmhvc3RfbW9jayBpbXBv
cnQgTW9ja0hvc3QKLSAgICAgICAgaG9zdCA9IGhvc3Qgb3IgTW9ja0hvc3QoKQotICAgICAgICBm
aWxlc3lzdGVtID0gc2VsZi5fc2V0X2RlZmF1bHRfb3ZlcnJpZGluZ19ub25lKGt3YXJncywgJ2Zp
bGVzeXN0ZW0nLCB1bml0X3Rlc3RfZmlsZXN5c3RlbSgpKQotCi0gICAgICAgIFBvcnQuX19pbml0
X18oc2VsZiwgaG9zdCwgcG9ydF9uYW1lPXBvcnRfbmFtZSwgKiprd2FyZ3MpCisgICAgICAgIHNl
bGYuX3Rlc3RzID0gdW5pdF90ZXN0X2xpc3QoKQorICAgICAgICBzZWxmLl9leHBlY3RhdGlvbnNf
cGF0aCA9IExBWU9VVF9URVNUX0RJUiArICcvcGxhdGZvcm0vdGVzdC90ZXN0X2V4cGVjdGF0aW9u
cy50eHQnCiAgICAgICAgIHNlbGYuX3Jlc3VsdHNfZGlyZWN0b3J5ID0gTm9uZQogCi0gICAgICAg
IHNlbGYuX3Rlc3RzID0gdW5pdF90ZXN0X2xpc3QoKQorICAgICAgICBQb3J0Ll9faW5pdF9fKHNl
bGYsIGhvc3QsIHBvcnRfbmFtZT1wb3J0X25hbWUsICoqa3dhcmdzKQogCiAgICAgICAgIHNlbGYu
X29wZXJhdGluZ19zeXN0ZW0gPSAnbWFjJwogICAgICAgICBpZiBwb3J0X25hbWUuc3RhcnRzd2l0
aCgndGVzdC13aW4nKToKQEAgLTM1MSw3ICszMzMsNiBAQCBjbGFzcyBUZXN0UG9ydChQb3J0KToK
ICAgICAgICAgfQogICAgICAgICBzZWxmLl92ZXJzaW9uID0gdmVyc2lvbl9tYXBbcG9ydF9uYW1l
XQogCi0gICAgICAgIHNlbGYuX2V4cGVjdGF0aW9uc19wYXRoID0gTEFZT1VUX1RFU1RfRElSICsg
Jy9wbGF0Zm9ybS90ZXN0L3Rlc3RfZXhwZWN0YXRpb25zLnR4dCcKIAogICAgIGRlZiBfcGF0aF90
b19kcml2ZXIoc2VsZik6CiAgICAgICAgICMgVGhpcyByb3V0aW5lIHNob3VsZG4ndCBub3JtYWxs
eSBiZSBjYWxsZWQsIGJ1dCBpdCBpcyBjYWxsZWQgYnkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfaW50ZWdyYXRpb250ZXN0
LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0
c19pbnRlZ3JhdGlvbnRlc3QucHkKaW5kZXggZjNjOTM3NDZmNDhjZTI4MTUwNDc2ZGEyNjA1NDgw
ZjAwMDQyZGRhMS4uNmNjMzk5NDg0ZmFkNTdmMTAzOWQ1MjJiMGYyYmYwNGRlNDNjM2Q4OSAxMDA3
NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90
ZXN0c19pbnRlZ3JhdGlvbnRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c19pbnRlZ3JhdGlvbnRlc3QucHkKQEAgLTY3LDcgKzY3
LDcgQEAgZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdF9tb2NrIGltcG9ydCBNb2NrSG9zdAogZnJv
bSB3ZWJraXRweS5sYXlvdXRfdGVzdHMgaW1wb3J0IHBvcnQKIGZyb20gd2Via2l0cHkubGF5b3V0
X3Rlc3RzIGltcG9ydCBydW5fd2Via2l0X3Rlc3RzCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0
cy5wb3J0IGltcG9ydCBQb3J0Ci1mcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0LnRlc3Qg
aW1wb3J0IFRlc3RQb3J0LCBUZXN0RHJpdmVyLCB1bml0X3Rlc3RfZmlsZXN5c3RlbQorZnJvbSB3
ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC50ZXN0IGltcG9ydCBUZXN0UG9ydCwgVGVzdERyaXZl
cgogZnJvbSB3ZWJraXRweS5weXRob24yNC52ZXJzaW9uaW5nIGltcG9ydCBjb21wYXJlX3ZlcnNp
b24KIGZyb20gd2Via2l0cHkudGVzdC5za2lwIGltcG9ydCBza2lwX2lmCiAKQEAgLTk3LDI3ICs5
NywyNSBAQCBkZWYgcGFyc2VfYXJncyhleHRyYV9hcmdzPU5vbmUsIHJlY29yZF9yZXN1bHRzPUZh
bHNlLCB0ZXN0c19pbmNsdWRlZD1GYWxzZSwgbmV3XwogICAgIHJldHVybiBydW5fd2Via2l0X3Rl
c3RzLnBhcnNlX2FyZ3MoYXJncykKIAogCi1kZWYgcGFzc2luZ19ydW4oZXh0cmFfYXJncz1Ob25l
LCBwb3J0X29iaj1Ob25lLCByZWNvcmRfcmVzdWx0cz1GYWxzZSwgdGVzdHNfaW5jbHVkZWQ9RmFs
c2UsIGZpbGVzeXN0ZW09Tm9uZSk6CitkZWYgcGFzc2luZ19ydW4oZXh0cmFfYXJncz1Ob25lLCBw
b3J0X29iaj1Ob25lLCByZWNvcmRfcmVzdWx0cz1GYWxzZSwgdGVzdHNfaW5jbHVkZWQ9RmFsc2Us
IGhvc3Q9Tm9uZSk6CiAgICAgb3B0aW9ucywgcGFyc2VkX2FyZ3MgPSBwYXJzZV9hcmdzKGV4dHJh
X2FyZ3MsIHJlY29yZF9yZXN1bHRzLCB0ZXN0c19pbmNsdWRlZCkKLSAgICBmaWxlc3lzdGVtID0g
ZmlsZXN5c3RlbSBvciB1bml0X3Rlc3RfZmlsZXN5c3RlbSgpCiAgICAgaWYgbm90IHBvcnRfb2Jq
OgotICAgICAgICBob3N0ID0gTW9ja0hvc3QoKQotICAgICAgICBwb3J0X29iaiA9IGhvc3QucG9y
dF9mYWN0b3J5LmdldChwb3J0X25hbWU9b3B0aW9ucy5wbGF0Zm9ybSwgb3B0aW9ucz1vcHRpb25z
LCBmaWxlc3lzdGVtPWZpbGVzeXN0ZW0pCisgICAgICAgIGhvc3QgPSBob3N0IG9yIE1vY2tIb3N0
KCkKKyAgICAgICAgcG9ydF9vYmogPSBob3N0LnBvcnRfZmFjdG9yeS5nZXQocG9ydF9uYW1lPW9w
dGlvbnMucGxhdGZvcm0sIG9wdGlvbnM9b3B0aW9ucykKICAgICBidWlsZGJvdF9vdXRwdXQgPSBh
cnJheV9zdHJlYW0uQXJyYXlTdHJlYW0oKQogICAgIHJlZ3VsYXJfb3V0cHV0ID0gYXJyYXlfc3Ry
ZWFtLkFycmF5U3RyZWFtKCkKICAgICByZXMgPSBydW5fd2Via2l0X3Rlc3RzLnJ1bihwb3J0X29i
aiwgb3B0aW9ucywgcGFyc2VkX2FyZ3MsIGJ1aWxkYm90X291dHB1dD1idWlsZGJvdF9vdXRwdXQs
IHJlZ3VsYXJfb3V0cHV0PXJlZ3VsYXJfb3V0cHV0KQogICAgIHJldHVybiByZXMgPT0gMCBhbmQg
cmVndWxhcl9vdXRwdXQuZW1wdHkoKSBhbmQgYnVpbGRib3Rfb3V0cHV0LmVtcHR5KCkKIAogCi1k
ZWYgbG9nZ2luZ19ydW4oZXh0cmFfYXJncz1Ob25lLCBwb3J0X29iaj1Ob25lLCByZWNvcmRfcmVz
dWx0cz1GYWxzZSwgdGVzdHNfaW5jbHVkZWQ9RmFsc2UsIGZpbGVzeXN0ZW09Tm9uZSwgbmV3X3Jl
c3VsdHM9RmFsc2UpOgorZGVmIGxvZ2dpbmdfcnVuKGV4dHJhX2FyZ3M9Tm9uZSwgcG9ydF9vYmo9
Tm9uZSwgcmVjb3JkX3Jlc3VsdHM9RmFsc2UsIHRlc3RzX2luY2x1ZGVkPUZhbHNlLCBob3N0PU5v
bmUsIG5ld19yZXN1bHRzPUZhbHNlKToKICAgICBvcHRpb25zLCBwYXJzZWRfYXJncyA9IHBhcnNl
X2FyZ3MoZXh0cmFfYXJncz1leHRyYV9hcmdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZWNvcmRfcmVzdWx0cz1yZWNvcmRfcmVzdWx0cywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdGVzdHNfaW5jbHVkZWQ9dGVzdHNfaW5jbHVkZWQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50X25vdGhpbmc9RmFsc2Us
IG5ld19yZXN1bHRzPW5ld19yZXN1bHRzKQotICAgIGhvc3QgPSBNb2NrSG9zdCgpCi0gICAgZmls
ZXN5c3RlbSA9IGZpbGVzeXN0ZW0gb3IgdW5pdF90ZXN0X2ZpbGVzeXN0ZW0oKQorICAgIGhvc3Qg
PSBob3N0IG9yIE1vY2tIb3N0KCkKICAgICBpZiBub3QgcG9ydF9vYmo6Ci0gICAgICAgIHBvcnRf
b2JqID0gaG9zdC5wb3J0X2ZhY3RvcnkuZ2V0KHBvcnRfbmFtZT1vcHRpb25zLnBsYXRmb3JtLCBv
cHRpb25zPW9wdGlvbnMsIGZpbGVzeXN0ZW09ZmlsZXN5c3RlbSkKKyAgICAgICAgcG9ydF9vYmog
PSBob3N0LnBvcnRfZmFjdG9yeS5nZXQocG9ydF9uYW1lPW9wdGlvbnMucGxhdGZvcm0sIG9wdGlv
bnM9b3B0aW9ucykKIAogICAgIHJlcywgYnVpbGRib3Rfb3V0cHV0LCByZWd1bGFyX291dHB1dCA9
IHJ1bl9hbmRfY2FwdHVyZShwb3J0X29iaiwgb3B0aW9ucywgcGFyc2VkX2FyZ3MpCiAgICAgcmV0
dXJuIChyZXMsIGJ1aWxkYm90X291dHB1dCwgcmVndWxhcl9vdXRwdXQsIGhvc3QudXNlcikKQEAg
LTEzOCw3ICsxMzYsNyBAQCBkZWYgcnVuX2FuZF9jYXB0dXJlKHBvcnRfb2JqLCBvcHRpb25zLCBw
YXJzZWRfYXJncyk6CiAKIAogZGVmIGdldF90ZXN0c19ydW4oZXh0cmFfYXJncz1Ob25lLCB0ZXN0
c19pbmNsdWRlZD1GYWxzZSwgZmxhdHRlbl9iYXRjaGVzPUZhbHNlLAotICAgICAgICAgICAgICAg
ICAgZmlsZXN5c3RlbT1Ob25lLCBpbmNsdWRlX3JlZmVyZW5jZV9odG1sPUZhbHNlKToKKyAgICAg
ICAgICAgICAgICAgIGhvc3Q9Tm9uZSwgaW5jbHVkZV9yZWZlcmVuY2VfaHRtbD1GYWxzZSk6CiAg
ICAgZXh0cmFfYXJncyA9IGV4dHJhX2FyZ3Mgb3IgW10KICAgICBpZiBub3QgdGVzdHNfaW5jbHVk
ZWQ6CiAgICAgICAgICMgTm90IGluY2x1ZGluZyBodHRwIHRlc3RzIHNpbmNlIHRoZXkgZ2V0IHJ1
biBvdXQgb2Ygb3JkZXIgKHRoYXQKQEAgLTE0NiwxMSArMTQ0LDkgQEAgZGVmIGdldF90ZXN0c19y
dW4oZXh0cmFfYXJncz1Ob25lLCB0ZXN0c19pbmNsdWRlZD1GYWxzZSwgZmxhdHRlbl9iYXRjaGVz
PUZhbHNlLAogICAgICAgICBleHRyYV9hcmdzID0gWydwYXNzZXMnLCAnZmFpbHVyZXMnXSArIGV4
dHJhX2FyZ3MKICAgICBvcHRpb25zLCBwYXJzZWRfYXJncyA9IHBhcnNlX2FyZ3MoZXh0cmFfYXJn
cywgdGVzdHNfaW5jbHVkZWQ9VHJ1ZSkKIAotICAgIGhvc3QgPSBNb2NrSG9zdCgpCi0KKyAgICBo
b3N0ID0gaG9zdCBvciBNb2NrSG9zdCgpCiAgICAgdGVzdF9iYXRjaGVzID0gW10KIAotCiAgICAg
Y2xhc3MgUmVjb3JkaW5nVGVzdERyaXZlcihUZXN0RHJpdmVyKToKICAgICAgICAgZGVmIF9faW5p
dF9fKHNlbGYsIHBvcnQsIHdvcmtlcl9udW1iZXIpOgogICAgICAgICAgICAgVGVzdERyaXZlci5f
X2luaXRfXyhzZWxmLCBwb3J0LCB3b3JrZXJfbnVtYmVyLCBwaXhlbF90ZXN0cz1wb3J0LmdldF9v
cHRpb24oJ3BpeGVsX3Rlc3QnKSkKQEAgLTE3Nyw3ICsxNzMsNyBAQCBkZWYgZ2V0X3Rlc3RzX3J1
bihleHRyYV9hcmdzPU5vbmUsIHRlc3RzX2luY2x1ZGVkPUZhbHNlLCBmbGF0dGVuX2JhdGNoZXM9
RmFsc2UsCiAgICAgICAgIGRlZiBjcmVhdGVfZHJpdmVyKHNlbGYsIHdvcmtlcl9udW1iZXIpOgog
ICAgICAgICAgICAgcmV0dXJuIFJlY29yZGluZ1Rlc3REcml2ZXIoc2VsZiwgd29ya2VyX251bWJl
cikKIAotICAgIHJlY29yZGluZ19wb3J0ID0gUmVjb3JkaW5nVGVzdFBvcnQob3B0aW9ucz1vcHRp
b25zLCBob3N0PWhvc3QsIGZpbGVzeXN0ZW09ZmlsZXN5c3RlbSkKKyAgICByZWNvcmRpbmdfcG9y
dCA9IFJlY29yZGluZ1Rlc3RQb3J0KGhvc3QsIG9wdGlvbnM9b3B0aW9ucykKICAgICBydW5fYW5k
X2NhcHR1cmUocmVjb3JkaW5nX3BvcnQsIG9wdGlvbnMsIHBhcnNlZF9hcmdzKQogCiAgICAgaWYg
ZmxhdHRlbl9iYXRjaGVzOgpAQCAtMzg5LDkgKzM4NSw5IEBAIGNsYXNzIE1haW5UZXN0KHVuaXR0
ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9zaW5nbGVfZmlsZShzZWxmKToKICAgICAgICAg
IyBGSVhNRTogV2Ugc2hvdWxkIGNvbnNpZGVyIHJlcGxhY2luZyBtb3JlIG9mIHRoZSBnZXRfdGVz
dHNfcnVuKCktc3R5bGUgdGVzdHMKICAgICAgICAgIyB3aXRoIHRlc3RzIHRoYXQgcmVhZCB0aGUg
dGVzdHNfcnVuKiBmaWxlcywgbGlrZSB0aGlzIG9uZS4KLSAgICAgICAgZnMgPSB1bml0X3Rlc3Rf
ZmlsZXN5c3RlbSgpCi0gICAgICAgIHRlc3RzX3J1biA9IHBhc3NpbmdfcnVuKFsncGFzc2VzL3Rl
eHQuaHRtbCddLCB0ZXN0c19pbmNsdWRlZD1UcnVlLCBmaWxlc3lzdGVtPWZzKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFscyhmcy5yZWFkX3RleHRfZmlsZSgnL3RtcC9sYXlvdXQtdGVzdC1yZXN1
bHRzL3Rlc3RzX3J1bjAudHh0JyksCisgICAgICAgIGhvc3QgPSBNb2NrSG9zdCgpCisgICAgICAg
IHRlc3RzX3J1biA9IHBhc3NpbmdfcnVuKFsncGFzc2VzL3RleHQuaHRtbCddLCB0ZXN0c19pbmNs
dWRlZD1UcnVlLCBob3N0PWhvc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGhvc3QuZmls
ZXN5c3RlbS5yZWFkX3RleHRfZmlsZSgnL3RtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL3Rlc3RzX3J1
bjAudHh0JyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICdwYXNzZXMvdGV4dC5odG1sXG4n
KQogCiAgICAgZGVmIHRlc3Rfc2luZ2xlX2ZpbGVfd2l0aF9wcmVmaXgoc2VsZik6CkBAIC00MDMs
MjggKzM5OSwyOCBAQCBjbGFzcyBNYWluVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWxzKFtdLCB0ZXN0c19ydW4pCiAKICAgICBkZWYgdGVzdF9zdGRlcnJf
aXNfc2F2ZWQoc2VsZik6Ci0gICAgICAgIGZzID0gdW5pdF90ZXN0X2ZpbGVzeXN0ZW0oKQotICAg
ICAgICBzZWxmLmFzc2VydFRydWUocGFzc2luZ19ydW4oZmlsZXN5c3RlbT1mcykpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWxzKGZzLnJlYWRfdGV4dF9maWxlKCcvdG1wL2xheW91dC10ZXN0LXJl
c3VsdHMvcGFzc2VzL2Vycm9yLXN0ZGVyci50eHQnKSwKKyAgICAgICAgaG9zdCA9IE1vY2tIb3N0
KCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBhc3NpbmdfcnVuKGhvc3Q9aG9zdCkpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGhvc3QuZmlsZXN5c3RlbS5yZWFkX3RleHRfZmlsZSgnL3Rt
cC9sYXlvdXQtdGVzdC1yZXN1bHRzL3Bhc3Nlcy9lcnJvci1zdGRlcnIudHh0JyksCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICdzdHVmZiBnb2luZyB0byBzdGRlcnInKQogCiAgICAgZGVmIHRl
c3RfdGVzdF9saXN0KHNlbGYpOgotICAgICAgICBmcyA9IHVuaXRfdGVzdF9maWxlc3lzdGVtKCkK
KyAgICAgICAgaG9zdCA9IE1vY2tIb3N0KCkKICAgICAgICAgZmlsZW5hbWUgPSAnL3RtcC9mb28u
dHh0JwotICAgICAgICBmcy53cml0ZV90ZXh0X2ZpbGUoZmlsZW5hbWUsICdwYXNzZXMvdGV4dC5o
dG1sJykKLSAgICAgICAgdGVzdHNfcnVuID0gZ2V0X3Rlc3RzX3J1bihbJy0tdGVzdC1saXN0PSVz
JyAlIGZpbGVuYW1lXSwgdGVzdHNfaW5jbHVkZWQ9VHJ1ZSwgZmxhdHRlbl9iYXRjaGVzPVRydWUs
IGZpbGVzeXN0ZW09ZnMpCisgICAgICAgIGhvc3QuZmlsZXN5c3RlbS53cml0ZV90ZXh0X2ZpbGUo
ZmlsZW5hbWUsICdwYXNzZXMvdGV4dC5odG1sJykKKyAgICAgICAgdGVzdHNfcnVuID0gZ2V0X3Rl
c3RzX3J1bihbJy0tdGVzdC1saXN0PSVzJyAlIGZpbGVuYW1lXSwgdGVzdHNfaW5jbHVkZWQ9VHJ1
ZSwgZmxhdHRlbl9iYXRjaGVzPVRydWUsIGhvc3Q9aG9zdCkKICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbHMoWydwYXNzZXMvdGV4dC5odG1sJ10sIHRlc3RzX3J1bikKLSAgICAgICAgZnMucmVtb3Zl
KGZpbGVuYW1lKQorICAgICAgICBob3N0LmZpbGVzeXN0ZW0ucmVtb3ZlKGZpbGVuYW1lKQogICAg
ICAgICByZXMsIG91dCwgZXJyLCB1c2VyID0gbG9nZ2luZ19ydW4oWyctLXRlc3QtbGlzdD0lcycg
JSBmaWxlbmFtZV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
ZXN0c19pbmNsdWRlZD1UcnVlLCBmaWxlc3lzdGVtPWZzKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdGVzdHNfaW5jbHVkZWQ9VHJ1ZSwgaG9zdD1ob3N0KQogICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcywgLTEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uo
ZXJyLmVtcHR5KCkpCiAKICAgICBkZWYgdGVzdF90ZXN0X2xpc3Rfd2l0aF9wcmVmaXgoc2VsZik6
Ci0gICAgICAgIGZzID0gdW5pdF90ZXN0X2ZpbGVzeXN0ZW0oKQorICAgICAgICBob3N0ID0gTW9j
a0hvc3QoKQogICAgICAgICBmaWxlbmFtZSA9ICcvdG1wL2Zvby50eHQnCi0gICAgICAgIGZzLndy
aXRlX3RleHRfZmlsZShmaWxlbmFtZSwgJ0xheW91dFRlc3RzL3Bhc3Nlcy90ZXh0Lmh0bWwnKQot
ICAgICAgICB0ZXN0c19ydW4gPSBnZXRfdGVzdHNfcnVuKFsnLS10ZXN0LWxpc3Q9JXMnICUgZmls
ZW5hbWVdLCB0ZXN0c19pbmNsdWRlZD1UcnVlLCBmbGF0dGVuX2JhdGNoZXM9VHJ1ZSwgZmlsZXN5
c3RlbT1mcykKKyAgICAgICAgaG9zdC5maWxlc3lzdGVtLndyaXRlX3RleHRfZmlsZShmaWxlbmFt
ZSwgJ0xheW91dFRlc3RzL3Bhc3Nlcy90ZXh0Lmh0bWwnKQorICAgICAgICB0ZXN0c19ydW4gPSBn
ZXRfdGVzdHNfcnVuKFsnLS10ZXN0LWxpc3Q9JXMnICUgZmlsZW5hbWVdLCB0ZXN0c19pbmNsdWRl
ZD1UcnVlLCBmbGF0dGVuX2JhdGNoZXM9VHJ1ZSwgaG9zdD1ob3N0KQogICAgICAgICBzZWxmLmFz
c2VydEVxdWFscyhbJ3Bhc3Nlcy90ZXh0Lmh0bWwnXSwgdGVzdHNfcnVuKQogCiAgICAgZGVmIHRl
c3RfdW5leHBlY3RlZF9mYWlsdXJlcyhzZWxmKToKQEAgLTQ0MCwxNyArNDM2LDE3IEBAIGNsYXNz
IE1haW5UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9taXNzaW5nX2FuZF91
bmV4cGVjdGVkX3Jlc3VsdHMoc2VsZik6CiAgICAgICAgICMgVGVzdCB0aGF0IHdlIHVwZGF0ZSBl
eHBlY3RhdGlvbnMgaW4gcGxhY2UuIElmIHRoZSBleHBlY3RhdGlvbgogICAgICAgICAjIGlzIG1p
c3NpbmcsIHVwZGF0ZSB0aGUgZXhwZWN0ZWQgZ2VuZXJpYyBsb2NhdGlvbi4KLSAgICAgICAgZnMg
PSB1bml0X3Rlc3RfZmlsZXN5c3RlbSgpCisgICAgICAgIGhvc3QgPSBNb2NrSG9zdCgpCiAgICAg
ICAgIHJlcywgb3V0LCBlcnIsIF8gPSBsb2dnaW5nX3J1bihbJy0tbm8tc2hvdy1yZXN1bHRzJywK
ICAgICAgICAgICAgICdmYWlsdXJlcy9leHBlY3RlZC9taXNzaW5nX2ltYWdlLmh0bWwnLAogICAg
ICAgICAgICAgJ2ZhaWx1cmVzL3VuZXhwZWN0ZWQvbWlzc2luZ190ZXh0Lmh0bWwnLAogICAgICAg
ICAgICAgJ2ZhaWx1cmVzL3VuZXhwZWN0ZWQvdGV4dC1pbWFnZS1jaGVja3N1bS5odG1sJ10sCi0g
ICAgICAgICAgICB0ZXN0c19pbmNsdWRlZD1UcnVlLCBmaWxlc3lzdGVtPWZzLCByZWNvcmRfcmVz
dWx0cz1UcnVlKQotICAgICAgICBmaWxlX2xpc3QgPSBmcy53cml0dGVuX2ZpbGVzLmtleXMoKQor
ICAgICAgICAgICAgdGVzdHNfaW5jbHVkZWQ9VHJ1ZSwgaG9zdD1ob3N0LCByZWNvcmRfcmVzdWx0
cz1UcnVlKQorICAgICAgICBmaWxlX2xpc3QgPSBob3N0LmZpbGVzeXN0ZW0ud3JpdHRlbl9maWxl
cy5rZXlzKCkKICAgICAgICAgZmlsZV9saXN0LnJlbW92ZSgnL3RtcC9sYXlvdXQtdGVzdC1yZXN1
bHRzL3Rlc3RzX3J1bjAudHh0JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocmVzLCAxKQog
ICAgICAgICBleHBlY3RlZF90b2tlbiA9ICcidW5leHBlY3RlZCI6eyJ0ZXh0LWltYWdlLWNoZWNr
c3VtLmh0bWwiOnsiZXhwZWN0ZWQiOiJQQVNTIiwiYWN0dWFsIjoiVEVYVCJ9LCJtaXNzaW5nX3Rl
eHQuaHRtbCI6eyJleHBlY3RlZCI6IlBBU1MiLCJpc19taXNzaW5nX3RleHQiOnRydWUsImFjdHVh
bCI6Ik1JU1NJTkcifScKLSAgICAgICAganNvbl9zdHJpbmcgPSBmcy5yZWFkX3RleHRfZmlsZSgn
L3RtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2Z1bGxfcmVzdWx0cy5qc29uJykKKyAgICAgICAganNv
bl9zdHJpbmcgPSBob3N0LmZpbGVzeXN0ZW0ucmVhZF90ZXh0X2ZpbGUoJy90bXAvbGF5b3V0LXRl
c3QtcmVzdWx0cy9mdWxsX3Jlc3VsdHMuanNvbicpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShq
c29uX3N0cmluZy5maW5kKGV4cGVjdGVkX3Rva2VuKSAhPSAtMSkKICAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKGpzb25fc3RyaW5nLmZpbmQoJyJudW1fcmVncmVzc2lvbnMiOjEnKSAhPSAtMSkKICAg
ICAgICAgc2VsZi5hc3NlcnRUcnVlKGpzb25fc3RyaW5nLmZpbmQoJyJudW1fZmxha3kiOjAnKSAh
PSAtMSkKQEAgLTQ1OSw3NSArNDU1LDc0IEBAIGNsYXNzIE1haW5UZXN0KHVuaXR0ZXN0LlRlc3RD
YXNlKToKICAgICBkZWYgdGVzdF9taXNzaW5nX2FuZF91bmV4cGVjdGVkX3Jlc3VsdHNfd2l0aF9j
dXN0b21fZXhpdF9jb2RlKHNlbGYpOgogICAgICAgICAjIFRlc3QgdGhhdCB3ZSB1cGRhdGUgZXhw
ZWN0YXRpb25zIGluIHBsYWNlLiBJZiB0aGUgZXhwZWN0YXRpb24KICAgICAgICAgIyBpcyBtaXNz
aW5nLCB1cGRhdGUgdGhlIGV4cGVjdGVkIGdlbmVyaWMgbG9jYXRpb24uCi0gICAgICAgIGZzID0g
dW5pdF90ZXN0X2ZpbGVzeXN0ZW0oKQotCiAgICAgICAgIGNsYXNzIEN1c3RvbUV4aXRDb2RlUG9y
dChUZXN0UG9ydCk6CiAgICAgICAgICAgICBkZWYgZXhpdF9jb2RlX2Zyb21fc3VtbWFyaXplZF9y
ZXN1bHRzKHNlbGYsIHVuZXhwZWN0ZWRfcmVzdWx0cyk6CiAgICAgICAgICAgICAgICAgcmV0dXJu
IHVuZXhwZWN0ZWRfcmVzdWx0c1snbnVtX3JlZ3Jlc3Npb25zJ10gKyB1bmV4cGVjdGVkX3Jlc3Vs
dHNbJ251bV9taXNzaW5nJ10KIAorICAgICAgICBob3N0ID0gTW9ja0hvc3QoKQogICAgICAgICBv
cHRpb25zLCBwYXJzZWRfYXJncyA9IHJ1bl93ZWJraXRfdGVzdHMucGFyc2VfYXJncyhbJy0tcGl4
ZWwtdGVzdHMnLCAnLS1uby1uZXctdGVzdC1yZXN1bHRzJ10pCi0gICAgICAgIHRlc3RfcG9ydCA9
IEN1c3RvbUV4aXRDb2RlUG9ydChvcHRpb25zPW9wdGlvbnMpCisgICAgICAgIHRlc3RfcG9ydCA9
IEN1c3RvbUV4aXRDb2RlUG9ydChob3N0LCBvcHRpb25zPW9wdGlvbnMpCiAgICAgICAgIHJlcywg
b3V0LCBlcnIsIF8gPSBsb2dnaW5nX3J1bihbJy0tbm8tc2hvdy1yZXN1bHRzJywKICAgICAgICAg
ICAgICdmYWlsdXJlcy9leHBlY3RlZC9taXNzaW5nX2ltYWdlLmh0bWwnLAogICAgICAgICAgICAg
J2ZhaWx1cmVzL3VuZXhwZWN0ZWQvbWlzc2luZ190ZXh0Lmh0bWwnLAogICAgICAgICAgICAgJ2Zh
aWx1cmVzL3VuZXhwZWN0ZWQvdGV4dC1pbWFnZS1jaGVja3N1bS5odG1sJ10sCi0gICAgICAgICAg
ICB0ZXN0c19pbmNsdWRlZD1UcnVlLCBmaWxlc3lzdGVtPWZzLCByZWNvcmRfcmVzdWx0cz1UcnVl
LCBwb3J0X29iaj10ZXN0X3BvcnQpCisgICAgICAgICAgICB0ZXN0c19pbmNsdWRlZD1UcnVlLCBo
b3N0PWhvc3QsIHJlY29yZF9yZXN1bHRzPVRydWUsIHBvcnRfb2JqPXRlc3RfcG9ydCkKICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbHMocmVzLCAyKQogCiAgICAgZGVmIHRlc3RfY3Jhc2hfd2l0aF9z
dGRlcnIoc2VsZik6Ci0gICAgICAgIGZzID0gdW5pdF90ZXN0X2ZpbGVzeXN0ZW0oKQorICAgICAg
ICBob3N0ID0gTW9ja0hvc3QoKQogICAgICAgICByZXMsIGJ1aWxkYm90X291dHB1dCwgcmVndWxh
cl9vdXRwdXQsIHVzZXIgPSBsb2dnaW5nX3J1bihbCiAgICAgICAgICAgICAgICAgJ2ZhaWx1cmVz
L3VuZXhwZWN0ZWQvY3Jhc2gtd2l0aC1zdGRlcnIuaHRtbCcsCiAgICAgICAgICAgICBdLAogICAg
ICAgICAgICAgdGVzdHNfaW5jbHVkZWQ9VHJ1ZSwKICAgICAgICAgICAgIHJlY29yZF9yZXN1bHRz
PVRydWUsCi0gICAgICAgICAgICBmaWxlc3lzdGVtPWZzKQotICAgICAgICBzZWxmLmFzc2VydFRy
dWUoZnMucmVhZF90ZXh0X2ZpbGUoJy90bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9mdWxsX3Jlc3Vs
dHMuanNvbicpLmZpbmQoJ3siY3Jhc2gtd2l0aC1zdGRlcnIuaHRtbCI6eyJleHBlY3RlZCI6IlBB
U1MiLCJhY3R1YWwiOiJDUkFTSCIsImhhc19zdGRlcnIiOnRydWV9fScpICE9IC0xKQorICAgICAg
ICAgICAgaG9zdD1ob3N0KQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaG9zdC5maWxlc3lzdGVt
LnJlYWRfdGV4dF9maWxlKCcvdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvZnVsbF9yZXN1bHRzLmpz
b24nKS5maW5kKCd7ImNyYXNoLXdpdGgtc3RkZXJyLmh0bWwiOnsiZXhwZWN0ZWQiOiJQQVNTIiwi
YWN0dWFsIjoiQ1JBU0giLCJoYXNfc3RkZXJyIjp0cnVlfX0nKSAhPSAtMSkKIAogICAgIGRlZiB0
ZXN0X25vX2ltYWdlX2ZhaWx1cmVfd2l0aF9pbWFnZV9kaWZmKHNlbGYpOgotICAgICAgICBmcyA9
IHVuaXRfdGVzdF9maWxlc3lzdGVtKCkKKyAgICAgICAgaG9zdCA9IE1vY2tIb3N0KCkKICAgICAg
ICAgcmVzLCBidWlsZGJvdF9vdXRwdXQsIHJlZ3VsYXJfb3V0cHV0LCB1c2VyID0gbG9nZ2luZ19y
dW4oWwogICAgICAgICAgICAgICAgICdmYWlsdXJlcy91bmV4cGVjdGVkL2NoZWNrc3VtLXdpdGgt
bWF0Y2hpbmctaW1hZ2UuaHRtbCcsCiAgICAgICAgICAgICBdLAogICAgICAgICAgICAgdGVzdHNf
aW5jbHVkZWQ9VHJ1ZSwKICAgICAgICAgICAgIHJlY29yZF9yZXN1bHRzPVRydWUsCi0gICAgICAg
ICAgICBmaWxlc3lzdGVtPWZzKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoZnMucmVhZF90ZXh0
X2ZpbGUoJy90bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9mdWxsX3Jlc3VsdHMuanNvbicpLmZpbmQo
JyJudW1fcmVncmVzc2lvbnMiOjAnKSAhPSAtMSkKKyAgICAgICAgICAgIGhvc3Q9aG9zdCkKKyAg
ICAgICAgc2VsZi5hc3NlcnRUcnVlKGhvc3QuZmlsZXN5c3RlbS5yZWFkX3RleHRfZmlsZSgnL3Rt
cC9sYXlvdXQtdGVzdC1yZXN1bHRzL2Z1bGxfcmVzdWx0cy5qc29uJykuZmluZCgnIm51bV9yZWdy
ZXNzaW9ucyI6MCcpICE9IC0xKQogCiAgICAgZGVmIHRlc3RfY3Jhc2hfbG9nKHNlbGYpOgogICAg
ICAgICBtb2NrX2NyYXNoX3JlcG9ydCA9IG1ha2VfbW9ja19jcmFzaF9yZXBvcnRfZGFyd2luKCdE
dW1wUmVuZGVyVHJlZScsIDEyMzQ1KQotICAgICAgICBmcyA9IHVuaXRfdGVzdF9maWxlc3lzdGVt
KCkKLSAgICAgICAgZnMud3JpdGVfdGV4dF9maWxlKCcvVXNlcnMvbW9jay9MaWJyYXJ5L0xvZ3Mv
RGlhZ25vc3RpY1JlcG9ydHMvRHVtcFJlbmRlclRyZWVfMjAxMS0wNi0xMy0xNTA3MTlfcXVhZHpl
bi5jcmFzaCcsIG1vY2tfY3Jhc2hfcmVwb3J0KQorICAgICAgICBob3N0ID0gTW9ja0hvc3QoKQor
ICAgICAgICBob3N0LmZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9maWxlKCcvVXNlcnMvbW9jay9MaWJy
YXJ5L0xvZ3MvRGlhZ25vc3RpY1JlcG9ydHMvRHVtcFJlbmRlclRyZWVfMjAxMS0wNi0xMy0xNTA3
MTlfcXVhZHplbi5jcmFzaCcsIG1vY2tfY3Jhc2hfcmVwb3J0KQogICAgICAgICByZXMsIGJ1aWxk
Ym90X291dHB1dCwgcmVndWxhcl9vdXRwdXQsIHVzZXIgPSBsb2dnaW5nX3J1bihbCiAgICAgICAg
ICAgICAgICAgJ2ZhaWx1cmVzL3VuZXhwZWN0ZWQvY3Jhc2gtd2l0aC1zdGRlcnIuaHRtbCcsCiAg
ICAgICAgICAgICBdLAogICAgICAgICAgICAgdGVzdHNfaW5jbHVkZWQ9VHJ1ZSwKICAgICAgICAg
ICAgIHJlY29yZF9yZXN1bHRzPVRydWUsCi0gICAgICAgICAgICBmaWxlc3lzdGVtPWZzKQorICAg
ICAgICAgICAgaG9zdD1ob3N0KQogICAgICAgICBleHBlY3RlZF9jcmFzaF9sb2cgPSBtb2NrX2Ny
YXNoX3JlcG9ydAogICAgICAgICAjIEN1cnJlbnRseSBDcmFzaExvZyB1cGxvYWRpbmcgb25seSB3
b3JrcyBvbiBEYXJ3aW4uCiAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSAhPSAiZGFyd2luIjoKICAg
ICAgICAgICAgIGV4cGVjdGVkX2NyYXNoX2xvZyA9ICJtb2NrLXN0ZC1lcnJvci1vdXRwdXQiCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGZzLnJlYWRfdGV4dF9maWxlKCcvdG1wL2xheW91dC10
ZXN0LXJlc3VsdHMvZmFpbHVyZXMvdW5leHBlY3RlZC9jcmFzaC13aXRoLXN0ZGVyci1jcmFzaC1s
b2cudHh0JyksIGV4cGVjdGVkX2NyYXNoX2xvZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMo
aG9zdC5maWxlc3lzdGVtLnJlYWRfdGV4dF9maWxlKCcvdG1wL2xheW91dC10ZXN0LXJlc3VsdHMv
ZmFpbHVyZXMvdW5leHBlY3RlZC9jcmFzaC13aXRoLXN0ZGVyci1jcmFzaC1sb2cudHh0JyksIGV4
cGVjdGVkX2NyYXNoX2xvZykKIAogICAgIGRlZiB0ZXN0X3dlYl9wcm9jZXNzX2NyYXNoX2xvZyhz
ZWxmKToKICAgICAgICAgbW9ja19jcmFzaF9yZXBvcnQgPSBtYWtlX21vY2tfY3Jhc2hfcmVwb3J0
X2RhcndpbignV2ViUHJvY2VzcycsIDEyMzQ1KQotICAgICAgICBmcyA9IHVuaXRfdGVzdF9maWxl
c3lzdGVtKCkKLSAgICAgICAgZnMud3JpdGVfdGV4dF9maWxlKCcvVXNlcnMvbW9jay9MaWJyYXJ5
L0xvZ3MvRGlhZ25vc3RpY1JlcG9ydHMvV2ViUHJvY2Vzc18yMDExLTA2LTEzLTE1MDcxOV9xdWFk
emVuLmNyYXNoJywgbW9ja19jcmFzaF9yZXBvcnQpCisgICAgICAgIGhvc3QgPSBNb2NrSG9zdCgp
CisgICAgICAgIGhvc3QuZmlsZXN5c3RlbS53cml0ZV90ZXh0X2ZpbGUoJy9Vc2Vycy9tb2NrL0xp
YnJhcnkvTG9ncy9EaWFnbm9zdGljUmVwb3J0cy9XZWJQcm9jZXNzXzIwMTEtMDYtMTMtMTUwNzE5
X3F1YWR6ZW4uY3Jhc2gnLCBtb2NrX2NyYXNoX3JlcG9ydCkKICAgICAgICAgcmVzLCBidWlsZGJv
dF9vdXRwdXQsIHJlZ3VsYXJfb3V0cHV0LCB1c2VyID0gbG9nZ2luZ19ydW4oWwogICAgICAgICAg
ICAgICAgICdmYWlsdXJlcy91bmV4cGVjdGVkL3dlYi1wcm9jZXNzLWNyYXNoLXdpdGgtc3RkZXJy
Lmh0bWwnLAogICAgICAgICAgICAgXSwKICAgICAgICAgICAgIHRlc3RzX2luY2x1ZGVkPVRydWUs
CiAgICAgICAgICAgICByZWNvcmRfcmVzdWx0cz1UcnVlLAotICAgICAgICAgICAgZmlsZXN5c3Rl
bT1mcykKKyAgICAgICAgICAgIGhvc3Q9aG9zdCkKICAgICAgICAgZXhwZWN0ZWRfY3Jhc2hfbG9n
ID0gbW9ja19jcmFzaF9yZXBvcnQKICAgICAgICAgIyBDdXJyZW50bHkgQ3Jhc2hMb2cgdXBsb2Fk
aW5nIG9ubHkgd29ya3Mgb24gRGFyd2luLgogICAgICAgICBpZiBzeXMucGxhdGZvcm0gIT0gImRh
cndpbiI6CiAgICAgICAgICAgICBleHBlY3RlZF9jcmFzaF9sb2cgPSAibW9jay1zdGQtZXJyb3It
b3V0cHV0IgotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhmcy5yZWFkX3RleHRfZmlsZSgnL3Rt
cC9sYXlvdXQtdGVzdC1yZXN1bHRzL2ZhaWx1cmVzL3VuZXhwZWN0ZWQvd2ViLXByb2Nlc3MtY3Jh
c2gtd2l0aC1zdGRlcnItY3Jhc2gtbG9nLnR4dCcpLCBleHBlY3RlZF9jcmFzaF9sb2cpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGhvc3QuZmlsZXN5c3RlbS5yZWFkX3RleHRfZmlsZSgnL3Rt
cC9sYXlvdXQtdGVzdC1yZXN1bHRzL2ZhaWx1cmVzL3VuZXhwZWN0ZWQvd2ViLXByb2Nlc3MtY3Jh
c2gtd2l0aC1zdGRlcnItY3Jhc2gtbG9nLnR4dCcpLCBleHBlY3RlZF9jcmFzaF9sb2cpCiAKICAg
ICBkZWYgdGVzdF9leGl0X2FmdGVyX25fZmFpbHVyZXNfdXBsb2FkKHNlbGYpOgotICAgICAgICBm
cyA9IHVuaXRfdGVzdF9maWxlc3lzdGVtKCkKKyAgICAgICAgaG9zdCA9IE1vY2tIb3N0KCkKICAg
ICAgICAgcmVzLCBidWlsZGJvdF9vdXRwdXQsIHJlZ3VsYXJfb3V0cHV0LCB1c2VyID0gbG9nZ2lu
Z19ydW4oWwogICAgICAgICAgICAgICAgICdmYWlsdXJlcy91bmV4cGVjdGVkL3RleHQtaW1hZ2Ut
Y2hlY2tzdW0uaHRtbCcsCiAgICAgICAgICAgICAgICAgJ3Bhc3Nlcy90ZXh0Lmh0bWwnLApAQCAt
NTM1LDggKzUzMCw4IEBAIGNsYXNzIE1haW5UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAg
ICAgICAgIF0sCiAgICAgICAgICAgICB0ZXN0c19pbmNsdWRlZD1UcnVlLAogICAgICAgICAgICAg
cmVjb3JkX3Jlc3VsdHM9VHJ1ZSwKLSAgICAgICAgICAgIGZpbGVzeXN0ZW09ZnMpCi0gICAgICAg
IHNlbGYuYXNzZXJ0VHJ1ZSgnL3RtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2luY3JlbWVudGFsX3Jl
c3VsdHMuanNvbicgaW4gZnMuZmlsZXMpCisgICAgICAgICAgICBob3N0PWhvc3QpCisgICAgICAg
IHNlbGYuYXNzZXJ0VHJ1ZSgnL3RtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2luY3JlbWVudGFsX3Jl
c3VsdHMuanNvbicgaW4gaG9zdC5maWxlc3lzdGVtLmZpbGVzKQogCiAgICAgZGVmIHRlc3RfZXhp
dF9hZnRlcl9uX2ZhaWx1cmVzKHNlbGYpOgogICAgICAgICAjIFVuZXhwZWN0ZWQgZmFpbHVyZXMg
c2hvdWxkIHJlc3VsdCBpbiB0ZXN0cyBzdG9wcGluZy4KQEAgLTYwNSwxMSArNjAwLDExIEBAIGNs
YXNzIE1haW5UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgIyBXZSBydW4gYSBjb25m
aWd1cmF0aW9uIHRoYXQgc2hvdWxkIGZhaWwsIHRvIGdlbmVyYXRlIG91dHB1dCwgdGhlbgogICAg
ICAgICAjIGxvb2sgZm9yIHdoYXQgdGhlIG91dHB1dCByZXN1bHRzIHVybCB3YXMuCiAKLSAgICAg
ICAgZnMgPSB1bml0X3Rlc3RfZmlsZXN5c3RlbSgpCi0gICAgICAgIHdpdGggZnMubWtkdGVtcCgp
IGFzIHRtcGRpcjoKKyAgICAgICAgaG9zdCA9IE1vY2tIb3N0KCkKKyAgICAgICAgd2l0aCBob3N0
LmZpbGVzeXN0ZW0ubWtkdGVtcCgpIGFzIHRtcGRpcjoKICAgICAgICAgICAgIHJlcywgb3V0LCBl
cnIsIHVzZXIgPSBsb2dnaW5nX3J1bihbJy0tcmVzdWx0cy1kaXJlY3Rvcnk9JyArIHN0cih0bXBk
aXIpXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0
c19pbmNsdWRlZD1UcnVlLCBmaWxlc3lzdGVtPWZzKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCh1c2VyLm9wZW5lZF91cmxzLCBbZnMuam9pbih0bXBkaXIsICdyZXN1bHRzLmh0bWwnKV0p
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdHNfaW5j
bHVkZWQ9VHJ1ZSwgaG9zdD1ob3N0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1c2Vy
Lm9wZW5lZF91cmxzLCBbaG9zdC5maWxlc3lzdGVtLmpvaW4odG1wZGlyLCAncmVzdWx0cy5odG1s
JyldKQogCiAgICAgZGVmIHRlc3RfcmVzdWx0c19kaXJlY3RvcnlfZGVmYXVsdChzZWxmKToKICAg
ICAgICAgIyBXZSBydW4gYSBjb25maWd1cmF0aW9uIHRoYXQgc2hvdWxkIGZhaWwsIHRvIGdlbmVy
YXRlIG91dHB1dCwgdGhlbgpAQCAtNjIyLDE3ICs2MTcsMTcgQEAgY2xhc3MgTWFpblRlc3QodW5p
dHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X3Jlc3VsdHNfZGlyZWN0b3J5X3JlbGF0aXZl
KHNlbGYpOgogICAgICAgICAjIFdlIHJ1biBhIGNvbmZpZ3VyYXRpb24gdGhhdCBzaG91bGQgZmFp
bCwgdG8gZ2VuZXJhdGUgb3V0cHV0LCB0aGVuCiAgICAgICAgICMgbG9vayBmb3Igd2hhdCB0aGUg
b3V0cHV0IHJlc3VsdHMgdXJsIHdhcy4KLSAgICAgICAgZnMgPSB1bml0X3Rlc3RfZmlsZXN5c3Rl
bSgpCi0gICAgICAgIGZzLm1heWJlX21ha2VfZGlyZWN0b3J5KCcvdG1wL2N3ZCcpCi0gICAgICAg
IGZzLmNoZGlyKCcvdG1wL2N3ZCcpCisgICAgICAgIGhvc3QgPSBNb2NrSG9zdCgpCisgICAgICAg
IGhvc3QuZmlsZXN5c3RlbS5tYXliZV9tYWtlX2RpcmVjdG9yeSgnL3RtcC9jd2QnKQorICAgICAg
ICBob3N0LmZpbGVzeXN0ZW0uY2hkaXIoJy90bXAvY3dkJykKICAgICAgICAgcmVzLCBvdXQsIGVy
ciwgdXNlciA9IGxvZ2dpbmdfcnVuKFsnLS1yZXN1bHRzLWRpcmVjdG9yeT1mb28nXSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RzX2luY2x1ZGVkPVRydWUs
IGZpbGVzeXN0ZW09ZnMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0ZXN0c19pbmNsdWRlZD1UcnVlLCBob3N0PWhvc3QpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwodXNlci5vcGVuZWRfdXJscywgWycvdG1wL2N3ZC9mb28vcmVzdWx0cy5odG1sJ10pCiAKICAg
ICBkZWYgdGVzdF9yZXRyaWVzX2RpcmVjdG9yeShzZWxmKToKLSAgICAgICAgZnMgPSB1bml0X3Rl
c3RfZmlsZXN5c3RlbSgpCi0gICAgICAgIHJlcywgb3V0LCBlcnIsIHVzZXIgPSBsb2dnaW5nX3J1
bih0ZXN0c19pbmNsdWRlZD1UcnVlLCBmaWxlc3lzdGVtPWZzKQotICAgICAgICBzZWxmLmFzc2Vy
dFRydWUoJy90bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9yZXRyaWVzL3Rlc3RzX3J1bjAudHh0JyBp
biBmcy5maWxlcykKKyAgICAgICAgaG9zdCA9IE1vY2tIb3N0KCkKKyAgICAgICAgcmVzLCBvdXQs
IGVyciwgdXNlciA9IGxvZ2dpbmdfcnVuKHRlc3RzX2luY2x1ZGVkPVRydWUsIGhvc3Q9aG9zdCkK
KyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhvc3QuZmlsZXN5c3RlbS5leGlzdHMoJy90bXAvbGF5
b3V0LXRlc3QtcmVzdWx0cy9yZXRyaWVzL3Rlc3RzX3J1bjAudHh0JykpCiAKICAgICAjIFRoZXNl
IG5leHQgdGVzdHMgdGVzdCB0aGF0IHdlIHJ1biB0aGUgdGVzdHMgaW4gYXNjZW5kaW5nIGFscGhh
YmV0aWNhbAogICAgICMgb3JkZXIgcGVyIGRpcmVjdG9yeS4gSFRUUCB0ZXN0cyBhcmUgc2hhcmRl
ZCBzZXBhcmF0ZWx5IGZyb20gb3RoZXIgdGVzdHMsCkBAIC02NTksNyArNjU0LDggQEAgY2xhc3Mg
TWFpblRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgICAgIGRlZiBnZXRfcG9ydF9mb3Jf
cnVuKGFyZ3MpOgogICAgICAgICAgICAgb3B0aW9ucywgcGFyc2VkX2FyZ3MgPSBydW5fd2Via2l0
X3Rlc3RzLnBhcnNlX2FyZ3MoYXJncykKLSAgICAgICAgICAgIHRlc3RfcG9ydCA9IEltYWdlRGlm
ZlRlc3RQb3J0KG9wdGlvbnM9b3B0aW9ucykKKyAgICAgICAgICAgIGhvc3QgPSBNb2NrSG9zdCgp
CisgICAgICAgICAgICB0ZXN0X3BvcnQgPSBJbWFnZURpZmZUZXN0UG9ydChob3N0LCBvcHRpb25z
PW9wdGlvbnMpCiAgICAgICAgICAgICByZXMgPSBwYXNzaW5nX3J1bihhcmdzLCBwb3J0X29iaj10
ZXN0X3BvcnQsIHRlc3RzX2luY2x1ZGVkPVRydWUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRy
dWUocmVzKQogICAgICAgICAgICAgcmV0dXJuIHRlc3RfcG9ydApAQCAtNzI0LDExICs3MjAsOSBA
QCBjbGFzcyBNYWluVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWxzKFsncGFzc2VzL21pc21hdGNoLmh0bWwnLCAncGFzc2VzL21pc21hdGNoLWV4cGVjdGVk
LW1pc21hdGNoLmh0bWwnXSwgdGVzdHNfcnVuKQogCiAgICAgZGVmIHRlc3RfcmVmdGVzdF9zaG91
bGRfbm90X3VzZV9uYW1pbmdfY29udmVudGlvbl9pZl9ub3RfbGlzdGVkX2luX3JlZnRlc3RsaXN0
KHNlbGYpOgotICAgICAgICBmcyA9IHVuaXRfdGVzdF9maWxlc3lzdGVtKCkKLSAgICAgICAgcmVz
LCBvdXQsIGVyciwgXyA9IGxvZ2dpbmdfcnVuKFsnLS1uby1zaG93LXJlc3VsdHMnLCAncmVmdGVz
dHMvZm9vLyddLCB0ZXN0c19pbmNsdWRlZD1UcnVlLCBmaWxlc3lzdGVtPWZzLCByZWNvcmRfcmVz
dWx0cz1UcnVlKQotICAgICAgICBmaWxlX2xpc3QgPSBmcy53cml0dGVuX2ZpbGVzLmtleXMoKQot
ICAgICAgICBmaWxlX2xpc3QucmVtb3ZlKCcvdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvdGVzdHNf
cnVuMC50eHQnKQotICAgICAgICBqc29uX3N0cmluZyA9IGZzLnJlYWRfdGV4dF9maWxlKCcvdG1w
L2xheW91dC10ZXN0LXJlc3VsdHMvZnVsbF9yZXN1bHRzLmpzb24nKQorICAgICAgICBob3N0ID0g
TW9ja0hvc3QoKQorICAgICAgICByZXMsIG91dCwgZXJyLCBfID0gbG9nZ2luZ19ydW4oWyctLW5v
LXNob3ctcmVzdWx0cycsICdyZWZ0ZXN0cy9mb28vJ10sIHRlc3RzX2luY2x1ZGVkPVRydWUsIGhv
c3Q9aG9zdCwgcmVjb3JkX3Jlc3VsdHM9VHJ1ZSkKKyAgICAgICAganNvbl9zdHJpbmcgPSBob3N0
LmZpbGVzeXN0ZW0ucmVhZF90ZXh0X2ZpbGUoJy90bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9mdWxs
X3Jlc3VsdHMuanNvbicpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShqc29uX3N0cmluZy5maW5k
KCcidW5saXN0ZWR0ZXN0Lmh0bWwiOnsiZXhwZWN0ZWQiOiJQQVNTIiwiaXNfbWlzc2luZ190ZXh0
Ijp0cnVlLCJhY3R1YWwiOiJNSVNTSU5HIiwiaXNfbWlzc2luZ19pbWFnZSI6dHJ1ZX0nKSAhPSAt
MSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGpzb25fc3RyaW5nLmZpbmQoJyJudW1fcmVncmVz
c2lvbnMiOjQnKSAhPSAtMSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGpzb25fc3RyaW5nLmZp
bmQoJyJudW1fZmxha3kiOjAnKSAhPSAtMSkKQEAgLTc3NCwxMSArNzY4LDExIEBAIGNsYXNzIEVu
ZFRvRW5kVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHJldHVybiBjb21wcmVzc2Vk
X3Jlc3VsdHMKIAogICAgIGRlZiB0ZXN0X2VuZF90b19lbmQoc2VsZik6Ci0gICAgICAgIGZzID0g
dW5pdF90ZXN0X2ZpbGVzeXN0ZW0oKQotICAgICAgICByZXMsIG91dCwgZXJyLCB1c2VyID0gbG9n
Z2luZ19ydW4ocmVjb3JkX3Jlc3VsdHM9VHJ1ZSwgdGVzdHNfaW5jbHVkZWQ9VHJ1ZSwgZmlsZXN5
c3RlbT1mcykKKyAgICAgICAgaG9zdCA9IE1vY2tIb3N0KCkKKyAgICAgICAgcmVzLCBvdXQsIGVy
ciwgdXNlciA9IGxvZ2dpbmdfcnVuKHJlY29yZF9yZXN1bHRzPVRydWUsIHRlc3RzX2luY2x1ZGVk
PVRydWUsIGhvc3Q9aG9zdCkKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhyZXMsIHVuZXhw
ZWN0ZWRfdGVzdHNfY291bnQpCi0gICAgICAgIHJlc3VsdHMgPSBzZWxmLnBhcnNlX2Z1bGxfcmVz
dWx0cyhmcy5maWxlc1snL3RtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2Z1bGxfcmVzdWx0cy5qc29u
J10pCisgICAgICAgIHJlc3VsdHMgPSBzZWxmLnBhcnNlX2Z1bGxfcmVzdWx0cyhob3N0LmZpbGVz
eXN0ZW0ucmVhZF90ZXh0X2ZpbGUoJy90bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9mdWxsX3Jlc3Vs
dHMuanNvbicpKQogCiAgICAgICAgICMgQ2hlY2sgdG8gZW5zdXJlIHdlJ3JlIHBhc3NpbmcgYmFj
ayBpbWFnZSBkaWZmICVhZ2UgY29ycmVjdGx5LgogICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhy
ZXN1bHRzWyd0ZXN0cyddWydmYWlsdXJlcyddWydleHBlY3RlZCddWydpbWFnZS5odG1sJ11bJ2lt
YWdlX2RpZmZfcGVyY2VudCddLCAxKQpAQCAtNzg5LDExICs3ODMsMTEgQEAgY2xhc3MgRW5kVG9F
bmRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9yZWZ0ZXN0X3dpdGhfdHdv
X25vdHJlZnMoc2VsZik6CiAgICAgICAgICMgVGVzdCB0aGF0IHdlIHVwZGF0ZSBleHBlY3RhdGlv
bnMgaW4gcGxhY2UuIElmIHRoZSBleHBlY3RhdGlvbgogICAgICAgICAjIGlzIG1pc3NpbmcsIHVw
ZGF0ZSB0aGUgZXhwZWN0ZWQgZ2VuZXJpYyBsb2NhdGlvbi4KLSAgICAgICAgZnMgPSB1bml0X3Rl
c3RfZmlsZXN5c3RlbSgpCi0gICAgICAgIHJlcywgb3V0LCBlcnIsIF8gPSBsb2dnaW5nX3J1bihb
Jy0tbm8tc2hvdy1yZXN1bHRzJywgJ3JlZnRlc3RzL2Zvby8nXSwgdGVzdHNfaW5jbHVkZWQ9VHJ1
ZSwgZmlsZXN5c3RlbT1mcywgcmVjb3JkX3Jlc3VsdHM9VHJ1ZSkKLSAgICAgICAgZmlsZV9saXN0
ID0gZnMud3JpdHRlbl9maWxlcy5rZXlzKCkKKyAgICAgICAgaG9zdCA9IE1vY2tIb3N0KCkKKyAg
ICAgICAgcmVzLCBvdXQsIGVyciwgXyA9IGxvZ2dpbmdfcnVuKFsnLS1uby1zaG93LXJlc3VsdHMn
LCAncmVmdGVzdHMvZm9vLyddLCB0ZXN0c19pbmNsdWRlZD1UcnVlLCBob3N0PWhvc3QsIHJlY29y
ZF9yZXN1bHRzPVRydWUpCisgICAgICAgIGZpbGVfbGlzdCA9IGhvc3QuZmlsZXN5c3RlbS53cml0
dGVuX2ZpbGVzLmtleXMoKQogICAgICAgICBmaWxlX2xpc3QucmVtb3ZlKCcvdG1wL2xheW91dC10
ZXN0LXJlc3VsdHMvdGVzdHNfcnVuMC50eHQnKQotICAgICAgICBqc29uX3N0cmluZyA9IGZzLnJl
YWRfdGV4dF9maWxlKCcvdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvZnVsbF9yZXN1bHRzLmpzb24n
KQorICAgICAgICBqc29uX3N0cmluZyA9IGhvc3QuZmlsZXN5c3RlbS5yZWFkX3RleHRfZmlsZSgn
L3RtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2Z1bGxfcmVzdWx0cy5qc29uJykKICAgICAgICAganNv
biA9IHNlbGYucGFyc2VfZnVsbF9yZXN1bHRzKGpzb25fc3RyaW5nKQogICAgICAgICBzZWxmLmFz
c2VydFRydWUoIm11bHRpcGxlLW1hdGNoLXN1Y2Nlc3MuaHRtbCIgbm90IGluIGpzb25bInRlc3Rz
Il1bInJlZnRlc3RzIl1bImZvbyJdKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoIm11bHRpcGxl
LW1pc21hdGNoLXN1Y2Nlc3MuaHRtbCIgbm90IGluIGpzb25bInRlc3RzIl1bInJlZnRlc3RzIl1b
ImZvbyJdKQpAQCAtODIxLDEzICs4MTUsMTMgQEAgY2xhc3MgUmViYXNlbGluZVRlc3QodW5pdHRl
c3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X3Jlc2V0X3Jlc3VsdHMoc2VsZik6CiAgICAgICAg
ICMgVGVzdCB0aGF0IHdlIHVwZGF0ZSBleHBlY3RhdGlvbnMgaW4gcGxhY2UuIElmIHRoZSBleHBl
Y3RhdGlvbgogICAgICAgICAjIGlzIG1pc3NpbmcsIHVwZGF0ZSB0aGUgZXhwZWN0ZWQgZ2VuZXJp
YyBsb2NhdGlvbi4KLSAgICAgICAgZnMgPSB1bml0X3Rlc3RfZmlsZXN5c3RlbSgpCisgICAgICAg
IGhvc3QgPSBNb2NrSG9zdCgpCiAgICAgICAgIHJlcywgb3V0LCBlcnIsIF8gPSBsb2dnaW5nX3J1
bihbJy0tcGl4ZWwtdGVzdHMnLAogICAgICAgICAgICAgICAgICAgICAgICAgJy0tcmVzZXQtcmVz
dWx0cycsCiAgICAgICAgICAgICAgICAgICAgICAgICAncGFzc2VzL2ltYWdlLmh0bWwnLAogICAg
ICAgICAgICAgICAgICAgICAgICAgJ2ZhaWx1cmVzL2V4cGVjdGVkL21pc3NpbmdfaW1hZ2UuaHRt
bCddLAotICAgICAgICAgICAgICAgICAgICAgICAgdGVzdHNfaW5jbHVkZWQ9VHJ1ZSwgZmlsZXN5
c3RlbT1mcywgbmV3X3Jlc3VsdHM9VHJ1ZSkKLSAgICAgICAgZmlsZV9saXN0ID0gZnMud3JpdHRl
bl9maWxlcy5rZXlzKCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RzX2luY2x1ZGVkPVRy
dWUsIGhvc3Q9aG9zdCwgbmV3X3Jlc3VsdHM9VHJ1ZSkKKyAgICAgICAgZmlsZV9saXN0ID0gaG9z
dC5maWxlc3lzdGVtLndyaXR0ZW5fZmlsZXMua2V5cygpCiAgICAgICAgIGZpbGVfbGlzdC5yZW1v
dmUoJy90bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy90ZXN0c19ydW4wLnR4dCcpCiAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWxzKHJlcywgMCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG91dC5lbXB0
eSgpKQpAQCAtODM4LDE0ICs4MzIsMTQgQEAgY2xhc3MgUmViYXNlbGluZVRlc3QodW5pdHRlc3Qu
VGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X21pc3NpbmdfcmVzdWx0cyhzZWxmKToKICAgICAgICAg
IyBUZXN0IHRoYXQgd2UgdXBkYXRlIGV4cGVjdGF0aW9ucyBpbiBwbGFjZS4gSWYgdGhlIGV4cGVj
dGF0aW9uCiAgICAgICAgICMgaXMgbWlzc2luZywgdXBkYXRlIHRoZSBleHBlY3RlZCBnZW5lcmlj
IGxvY2F0aW9uLgotICAgICAgICBmcyA9IHVuaXRfdGVzdF9maWxlc3lzdGVtKCkKKyAgICAgICAg
aG9zdCA9IE1vY2tIb3N0KCkKICAgICAgICAgcmVzLCBvdXQsIGVyciwgXyA9IGxvZ2dpbmdfcnVu
KFsnLS1uby1zaG93LXJlc3VsdHMnLAogICAgICAgICAgICAgICAgICAgICAgJ2ZhaWx1cmVzL3Vu
ZXhwZWN0ZWQvbWlzc2luZ190ZXh0Lmh0bWwnLAogICAgICAgICAgICAgICAgICAgICAgJ2ZhaWx1
cmVzL3VuZXhwZWN0ZWQvbWlzc2luZ19pbWFnZS5odG1sJywKICAgICAgICAgICAgICAgICAgICAg
ICdmYWlsdXJlcy91bmV4cGVjdGVkL21pc3NpbmdfYXVkaW8uaHRtbCcsCiAgICAgICAgICAgICAg
ICAgICAgICAnZmFpbHVyZXMvdW5leHBlY3RlZC9taXNzaW5nX3JlbmRlcl90cmVlX2R1bXAuaHRt
bCddLAotICAgICAgICAgICAgICAgICAgICAgdGVzdHNfaW5jbHVkZWQ9VHJ1ZSwgZmlsZXN5c3Rl
bT1mcywgbmV3X3Jlc3VsdHM9VHJ1ZSkKLSAgICAgICAgZmlsZV9saXN0ID0gZnMud3JpdHRlbl9m
aWxlcy5rZXlzKCkKKyAgICAgICAgICAgICAgICAgICAgIHRlc3RzX2luY2x1ZGVkPVRydWUsIGhv
c3Q9aG9zdCwgbmV3X3Jlc3VsdHM9VHJ1ZSkKKyAgICAgICAgZmlsZV9saXN0ID0gaG9zdC5maWxl
c3lzdGVtLndyaXR0ZW5fZmlsZXMua2V5cygpCiAgICAgICAgIGZpbGVfbGlzdC5yZW1vdmUoJy90
bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy90ZXN0c19ydW4wLnR4dCcpCiAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWxzKHJlcywgMCkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvdXQuZW1wdHkoKSkK
QEAgLTg1NywxMyArODUxLDEzIEBAIGNsYXNzIFJlYmFzZWxpbmVUZXN0KHVuaXR0ZXN0LlRlc3RD
YXNlKToKICAgICBkZWYgdGVzdF9uZXdfYmFzZWxpbmUoc2VsZik6CiAgICAgICAgICMgVGVzdCB0
aGF0IHdlIHVwZGF0ZSB0aGUgcGxhdGZvcm0gZXhwZWN0YXRpb25zLiBJZiB0aGUgZXhwZWN0YXRp
b24KICAgICAgICAgIyBpcyBtc3NpbmcsIHRoZW4gY3JlYXRlIGEgbmV3IGV4cGVjdGF0aW9uIGlu
IHRoZSBwbGF0Zm9ybSBkaXIuCi0gICAgICAgIGZzID0gdW5pdF90ZXN0X2ZpbGVzeXN0ZW0oKQor
ICAgICAgICBob3N0ID0gTW9ja0hvc3QoKQogICAgICAgICByZXMsIG91dCwgZXJyLCBfID0gbG9n
Z2luZ19ydW4oWyctLXBpeGVsLXRlc3RzJywKICAgICAgICAgICAgICAgICAgICAgICAgICctLW5l
dy1iYXNlbGluZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAncGFzc2VzL2ltYWdlLmh0bWwn
LAogICAgICAgICAgICAgICAgICAgICAgICAgJ2ZhaWx1cmVzL2V4cGVjdGVkL21pc3NpbmdfaW1h
Z2UuaHRtbCddLAotICAgICAgICAgICAgICAgICAgICB0ZXN0c19pbmNsdWRlZD1UcnVlLCBmaWxl
c3lzdGVtPWZzLCBuZXdfcmVzdWx0cz1UcnVlKQotICAgICAgICBmaWxlX2xpc3QgPSBmcy53cml0
dGVuX2ZpbGVzLmtleXMoKQorICAgICAgICAgICAgICAgICAgICB0ZXN0c19pbmNsdWRlZD1UcnVl
LCBob3N0PWhvc3QsIG5ld19yZXN1bHRzPVRydWUpCisgICAgICAgIGZpbGVfbGlzdCA9IGhvc3Qu
ZmlsZXN5c3RlbS53cml0dGVuX2ZpbGVzLmtleXMoKQogICAgICAgICBmaWxlX2xpc3QucmVtb3Zl
KCcvdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvdGVzdHNfcnVuMC50eHQnKQogICAgICAgICBzZWxm
LmFzc2VydEVxdWFscyhyZXMsIDApCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvdXQuZW1wdHko
KSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9fYmVfbW92ZWQvcmViYXNl
bGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHMucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rv
X2JlX21vdmVkL3JlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzLnB5CmluZGV4IGMyYjEw
YzQzNTczNDllYjcwMmU4ZTczODAxYzllY2RiNzBkYmMwMTIuLjgyMjhkNDM4MWJhMTBjMzViYjk5
MzZkYWQ5NmVmODlmNDk4OGY0NTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dG9fYmVfbW92ZWQvcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHMucHkKKysrIGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS90b19iZV9tb3ZlZC9yZWJhc2VsaW5lX2Nocm9taXVtX3dlYmtp
dF90ZXN0cy5weQpAQCAtMTQ1LDcgKzE0NSw3IEBAIGNsYXNzIFJlYmFzZWxpbmVyKG9iamVjdCk6
CiAKICAgICBSRVZJU0lPTl9SRUdFWCA9IHInPGEgaHJlZj1cIihcZCspL1wiPicKIAotICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBydW5uaW5nX3BvcnQsIHRhcmdldF9wb3J0LCBwbGF0Zm9ybSwgb3B0
aW9ucywgdXJsX2ZldGNoZXIsIHppcF9mYWN0b3J5LCBzY20sIGxvZ2dlZF9iZWZvcmU9RmFsc2Up
OgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0LCBydW5uaW5nX3BvcnQsIHRhcmdldF9wb3J0
LCBwbGF0Zm9ybSwgb3B0aW9ucywgdXJsX2ZldGNoZXIsIHppcF9mYWN0b3J5LCBsb2dnZWRfYmVm
b3JlPUZhbHNlKToKICAgICAgICAgIiIiCiAgICAgICAgIEFyZ3M6CiAgICAgICAgICAgICBydW5u
aW5nX3BvcnQ6IHRoZSBQb3J0IHRoZSBzY3JpcHQgaXMgcnVubmluZyBvbi4KQEAgLTE2MiwxMiAr
MTYyLDEwIEBAIGNsYXNzIFJlYmFzZWxpbmVyKG9iamVjdCk6CiAgICAgICAgIHNlbGYuX3BsYXRm
b3JtID0gcGxhdGZvcm0KICAgICAgICAgc2VsZi5fb3B0aW9ucyA9IG9wdGlvbnMKICAgICAgICAg
c2VsZi5fcG9ydCA9IHJ1bm5pbmdfcG9ydAotICAgICAgICBzZWxmLl9maWxlc3lzdGVtID0gcnVu
bmluZ19wb3J0Ll9maWxlc3lzdGVtCisgICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0gPSBob3N0LmZp
bGVzeXN0ZW0KICAgICAgICAgc2VsZi5fdGFyZ2V0X3BvcnQgPSB0YXJnZXRfcG9ydAogCi0gICAg
ICAgICMgRklYTUU6IFRoaXMgc2hvdWxkIGdldCBpdHMgUG9ydEZhY3RvcnkgZnJvbSBhIEhvc3Qg
b2JqZWN0LgotICAgICAgICAjIE5vdGU6IHVzaW5nIHJ1bm5pbmdfcG9ydC5leGVjdXRpdmUsIHJ1
bm5pbmdfcG9ydC51c2VyIHNpbmNlIHdlIGNhbid0IGdldCB0aGVtIGZyb20gYSBob3N0LgotICAg
ICAgICBzZWxmLl9yZWJhc2VsaW5lX3BvcnQgPSBQb3J0RmFjdG9yeSgpLmdldChwbGF0Zm9ybSwg
b3B0aW9ucywgZmlsZXN5c3RlbT1zZWxmLl9maWxlc3lzdGVtLCBleGVjdXRpdmU9cnVubmluZ19w
b3J0LmV4ZWN1dGl2ZSwgdXNlcj1ydW5uaW5nX3BvcnQudXNlcikKKyAgICAgICAgc2VsZi5fcmVi
YXNlbGluZV9wb3J0ID0gaG9zdC5wb3J0X2ZhY3RvcnkuZ2V0KHBsYXRmb3JtLCBvcHRpb25zKQog
ICAgICAgICBzZWxmLl9yZWJhc2VsaW5pbmdfdGVzdHMgPSBzZXQoKQogICAgICAgICBzZWxmLl9y
ZWJhc2VsaW5lZF90ZXN0cyA9IFtdCiAgICAgICAgIHNlbGYuX2xvZ2dlZF9iZWZvcmUgPSBsb2dn
ZWRfYmVmb3JlCkBAIC0xODIsNyArMTgwLDcgQEAgY2xhc3MgUmViYXNlbGluZXIob2JqZWN0KToK
ICAgICAgICAgICAgIHNlbGYuX3JlYmFzZWxpbmVfcG9ydCwgTm9uZSwgZXhwZWN0YXRpb25zX3N0
ciwgc2VsZi5fcmViYXNlbGluZV9wb3J0LnRlc3RfY29uZmlndXJhdGlvbigpLCBGYWxzZSkKICAg
ICAgICAgc2VsZi5fdXJsX2ZldGNoZXIgPSB1cmxfZmV0Y2hlcgogICAgICAgICBzZWxmLl96aXBf
ZmFjdG9yeSA9IHppcF9mYWN0b3J5Ci0gICAgICAgIHNlbGYuX3NjbSA9IHNjbQorICAgICAgICBz
ZWxmLl9zY20gPSBob3N0LnNjbSgpCiAKICAgICBkZWYgcnVuKHNlbGYpOgogICAgICAgICAiIiJS
dW4gcmViYXNlbGluZSBwcm9jZXNzLiIiIgpAQCAtOTQ4LDcgKzk0Niw3IEBAIGRlZiBtYWluKGFy
Z3MpOgogICAgIGlmIG5vdCBob3N0X3BvcnRfb2JqIG9yIG5vdCB0YXJnZXRfcG9ydF9vYmo6CiAg
ICAgICAgIHJldHVybiAxCiAKLSAgICB1cmxfZmV0Y2hlciA9IHVybGZldGNoZXIuVXJsRmV0Y2hl
cihob3N0X3BvcnRfb2JqLl9maWxlc3lzdGVtKQorICAgIHVybF9mZXRjaGVyID0gdXJsZmV0Y2hl
ci5VcmxGZXRjaGVyKGhvc3QuZmlsZXN5c3RlbSkKIAogICAgICMgV2UgdXNlIHRoZSBkZWZhdWx0
IHppcCBmYWN0b3J5IG1ldGhvZC4KICAgICB6aXBfZmFjdG9yeSA9IE5vbmUKQEAgLTk1Niw3ICs5
NTQsNyBAQCBkZWYgbWFpbihhcmdzKToKICAgICAjIEZJWE1FOiBTQ00gbW9kdWxlIGRvZXNuJ3Qg
aGFuZGxlIHBhdGhzIHRoYXQgYXJlbid0IHJlbGF0aXZlIHRvIHRoZSBjaGVja291dF9yb290IGNv
bnNpc3RlbnRseS4KICAgICBob3N0X3BvcnRfb2JqLl9maWxlc3lzdGVtLmNoZGlyKGhvc3Quc2Nt
KCkuY2hlY2tvdXRfcm9vdCkKIAotICAgIHJldF9jb2RlID0gcmVhbF9tYWluKG9wdGlvbnMsIHRh
cmdldF9vcHRpb25zLCBob3N0X3BvcnRfb2JqLCB0YXJnZXRfcG9ydF9vYmosIHVybF9mZXRjaGVy
LCB6aXBfZmFjdG9yeSwgaG9zdC5zY20oKSkKKyAgICByZXRfY29kZSA9IHJlYWxfbWFpbihob3N0
LCBvcHRpb25zLCB0YXJnZXRfb3B0aW9ucywgaG9zdF9wb3J0X29iaiwgdGFyZ2V0X3BvcnRfb2Jq
LCB1cmxfZmV0Y2hlciwgemlwX2ZhY3RvcnkpCiAgICAgaWYgbm90IHJldF9jb2RlIGFuZCBsb2df
aGFuZGxlci5udW1fZmFpbHVyZXM6CiAgICAgICAgIHJldF9jb2RlID0gMQogICAgIHByaW50ICcn
CkBAIC05NjcsMTMgKzk2NSwxNCBAQCBkZWYgbWFpbihhcmdzKToKICAgICByZXR1cm4gcmV0X2Nv
ZGUKIAogCi1kZWYgcmVhbF9tYWluKG9wdGlvbnMsIHRhcmdldF9vcHRpb25zLCBob3N0X3BvcnRf
b2JqLCB0YXJnZXRfcG9ydF9vYmosIHVybF9mZXRjaGVyLCB6aXBfZmFjdG9yeSwgc2NtX29iaik6
CitkZWYgcmVhbF9tYWluKGhvc3QsIG9wdGlvbnMsIHRhcmdldF9vcHRpb25zLCBob3N0X3BvcnRf
b2JqLCB0YXJnZXRfcG9ydF9vYmosIHVybF9mZXRjaGVyLCB6aXBfZmFjdG9yeSk6CiAgICAgIiIi
TWFpbiBmdW5jdGlvbiB0byBwcm9kdWNlIG5ldyBiYXNlbGluZXMuIFRoZSBSZWJhc2VsaW5lciBv
YmplY3QgdXNlcyB0d28KICAgICBkaWZmZXJlbnQgUG9ydCBvYmplY3RzIC0gb25lIHRvIHJlcHJl
c2VudCB0aGUgbWFjaGluZSB0aGUgb2JqZWN0IGlzIHJ1bm5pbmcKICAgICBvbiwgYW5kIG9uZSB0
byByZXByZXNlbnQgdGhlIHBvcnQgd2hvc2UgZXhwZWN0YXRpb25zIGFyZSBiZWluZyB1cGRhdGVk
LgogICAgIEUuZy4sIHlvdSBjYW4gcnVuIHRoZSBzY3JpcHQgb24gYSBtYWMgYW5kIHJlYmFzZWxp
bmUgdGhlICd3aW4nIHBvcnQuCiAKICAgICBBcmdzOgorICAgICAgICBob3N0OiBIb3N0IG9iamVj
dAogICAgICAgICBvcHRpb25zOiBjb21tYW5kLWxpbmUgYXJndW1lbnQgdXNlZCBmb3IgdGhlIGhv
c3RfcG9ydF9vYmogKHNlZSBiZWxvdykKICAgICAgICAgdGFyZ2V0X29wdGlvbnM6IGNvbW1hbmRf
bGluZSBhcmd1bWVudCB1c2VkIGZvciB0aGUgdGFyZ2V0X3BvcnRfb2JqLgogICAgICAgICAgICAg
VGhpcyBvYmplY3QgbWF5IGhhdmUgc2xpZ2h0bHkgZGlmZmVyZW50IHZhbHVlcyB0aGFuIHxvcHRp
b25zfC4KQEAgLTk4Niw3ICs5ODUsNiBAQCBkZWYgcmVhbF9tYWluKG9wdGlvbnMsIHRhcmdldF9v
cHRpb25zLCBob3N0X3BvcnRfb2JqLCB0YXJnZXRfcG9ydF9vYmosIHVybF9mZXRjaAogICAgICAg
ICB1cmxfZmV0Y2hlcjogb2JqZWN0IHVzZWQgdG8gZG93bmxvYWQgdGhlIGJ1aWxkIGFyY2hpdmVz
IGZyb20gdGhlIGJvdHMKICAgICAgICAgemlwX2ZhY3Rvcnk6IGZhY3RvcnkgZnVuY3Rpb24gdXNl
ZCB0byBjcmVhdGUgemlwIGZpbGUgb2JqZWN0cyBmb3IKICAgICAgICAgICAgIHRoZSBhcmNoaXZl
cy4KLSAgICAgICAgc2NtX29iajogb2JqZWN0IHVzZWQgdG8gYWRkIG5ldyBiYXNlbGluZXMgdG8g
dGhlIHNvdXJjZSBjb250cm9sIHN5c3RlbS4KICAgICAiIiIKICAgICBvcHRpb25zLmh0bWxfZGly
ZWN0b3J5ID0gc2V0dXBfaHRtbF9kaXJlY3RvcnkoaG9zdF9wb3J0X29iai5fZmlsZXN5c3RlbSwg
b3B0aW9ucy5odG1sX2RpcmVjdG9yeSkKICAgICBhbGxfcGxhdGZvcm1zID0gdGFyZ2V0X3BvcnRf
b2JqLmFsbF9iYXNlbGluZV92YXJpYW50cygpCkBAIC0xMDEyLDkgKzEwMTAsOSBAQCBkZWYgcmVh
bF9tYWluKG9wdGlvbnMsIHRhcmdldF9vcHRpb25zLCBob3N0X3BvcnRfb2JqLCB0YXJnZXRfcG9y
dF9vYmosIHVybF9mZXRjaAogICAgIHJlYmFzZWxpbmVkX3Rlc3RzID0gc2V0KCkKICAgICBsb2dn
ZWRfYmVmb3JlID0gRmFsc2UKICAgICBmb3IgcGxhdGZvcm0gaW4gcmViYXNlbGluZV9wbGF0Zm9y
bXM6Ci0gICAgICAgIHJlYmFzZWxpbmVyID0gUmViYXNlbGluZXIoaG9zdF9wb3J0X29iaiwgdGFy
Z2V0X3BvcnRfb2JqLAorICAgICAgICByZWJhc2VsaW5lciA9IFJlYmFzZWxpbmVyKGhvc3QsIGhv
c3RfcG9ydF9vYmosIHRhcmdldF9wb3J0X29iaiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwbGF0Zm9ybSwgb3B0aW9ucywgdXJsX2ZldGNoZXIsIHppcF9mYWN0b3J5LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjbV9vYmosIGxvZ2dlZF9iZWZvcmUpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VkX2JlZm9yZSkKIAogICAgICAg
ICBfbG9nLmRlYnVnKCcnKQogICAgICAgICBsb2dfZGFzaGVkX3N0cmluZygnUmViYXNlbGluZSBz
dGFydGVkJywgcGxhdGZvcm0pCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rv
X2JlX21vdmVkL3JlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzX3VuaXR0ZXN0LnB5IGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b19iZV9tb3ZlZC9yZWJhc2VsaW5lX2Nocm9taXVtX3dl
YmtpdF90ZXN0c191bml0dGVzdC5weQppbmRleCBmM2Q5MzU0MDVhNmI3ZDNhN2JkMWMwMjFhMDRi
YjY0YmZlZWVmYzkwLi41NjRmZGRkZjFhODkxODY5OTM3OWY0NTg5ZDc2Yzk5MzRiY2M1ZTQ3IDEw
MDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3RvX2JlX21vdmVkL3JlYmFzZWxpbmVf
Y2hyb21pdW1fd2Via2l0X3Rlc3RzX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdG9fYmVfbW92ZWQvcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHNfdW5pdHRl
c3QucHkKQEAgLTM5LDEwICszOSw3IEBAIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBv
cnQgemlwZmlsZXNldF9tb2NrCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0IG91
dHB1dGNhcHR1cmUKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0
IEV4ZWN1dGl2ZSwgU2NyaXB0RXJyb3IKIAotZnJvbSB3ZWJraXRweS5jb21tb24uY2hlY2tvdXQu
c2NtLnNjbV9tb2NrIGltcG9ydCBNb2NrU0NNCi0KIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3Rz
IGltcG9ydCBwb3J0Ci1mcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0LnRlc3QgaW1wb3J0
IHVuaXRfdGVzdF9maWxlc3lzdGVtCiBmcm9tIHdlYmtpdHB5LnRvX2JlX21vdmVkIGltcG9ydCBy
ZWJhc2VsaW5lX2Nocm9taXVtX3dlYmtpdF90ZXN0cwogCiAKQEAgLTc5LDEwICs3Niw5IEBAIGRl
ZiB0ZXN0X29wdGlvbnMoKToKIGRlZiB0ZXN0X2hvc3RfcG9ydF9hbmRfZmlsZXN5c3RlbShvcHRp
b25zLCBleHBlY3RhdGlvbnMpOgogICAgIGhvc3QgPSBNb2NrSG9zdCgpCiAgICAgaG9zdF9wb3J0
X29iaiA9IGhvc3QucG9ydF9mYWN0b3J5LmdldCgndGVzdCcsIG9wdGlvbnMpCi0KICAgICBleHBl
Y3RhdGlvbnNfcGF0aCA9IGhvc3RfcG9ydF9vYmoucGF0aF90b190ZXN0X2V4cGVjdGF0aW9uc19m
aWxlKCkKLSAgICBob3N0X3BvcnRfb2JqLmZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9maWxlKGV4cGVj
dGF0aW9uc19wYXRoLCBleHBlY3RhdGlvbnMpCi0gICAgcmV0dXJuIChob3N0X3BvcnRfb2JqLCBo
b3N0X3BvcnRfb2JqLmZpbGVzeXN0ZW0pCisgICAgaG9zdC5maWxlc3lzdGVtLndyaXRlX3RleHRf
ZmlsZShleHBlY3RhdGlvbnNfcGF0aCwgZXhwZWN0YXRpb25zKQorICAgIHJldHVybiAoaG9zdCwg
aG9zdF9wb3J0X29iaiwgaG9zdC5maWxlc3lzdGVtKQogCiAKIGRlZiB0ZXN0X3VybF9mZXRjaGVy
KGZpbGVzeXN0ZW0pOgpAQCAtMjA1LDI0ICsyMDEsMjEgQEAgY2xhc3MgVGVzdFJlYmFzZWxpbmVy
KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiBtYWtlX3JlYmFzZWxpbmVyKHNlbGYsIGV4
cGVjdGF0aW9ucyk6CiAgICAgICAgIG9wdGlvbnMgPSB0ZXN0X29wdGlvbnMoKQotICAgICAgICBo
b3N0X3BvcnRfb2JqLCBmaWxlc3lzdGVtID0gdGVzdF9ob3N0X3BvcnRfYW5kX2ZpbGVzeXN0ZW0o
b3B0aW9ucywgZXhwZWN0YXRpb25zKQorICAgICAgICBob3N0LCBob3N0X3BvcnRfb2JqLCBmaWxl
c3lzdGVtID0gdGVzdF9ob3N0X3BvcnRfYW5kX2ZpbGVzeXN0ZW0ob3B0aW9ucywgZXhwZWN0YXRp
b25zKQogCiAgICAgICAgIHRhcmdldF9vcHRpb25zID0gb3B0aW9ucwotICAgICAgICBob3N0ID0g
TW9ja0hvc3QoKQotICAgICAgICB0YXJnZXRfcG9ydF9vYmogPSBob3N0LnBvcnRfZmFjdG9yeS5n
ZXQoJ3Rlc3QnLCB0YXJnZXRfb3B0aW9ucywgZmlsZXN5c3RlbT1maWxlc3lzdGVtKQotICAgICAg
ICB0YXJnZXRfcG9ydF9vYmouX2V4cGVjdGF0aW9ucyA9IGV4cGVjdGF0aW9ucworICAgICAgICB0
YXJnZXRfcG9ydF9vYmogPSBob3N0LnBvcnRfZmFjdG9yeS5nZXQoJ3Rlc3QnLCB0YXJnZXRfb3B0
aW9ucykKICAgICAgICAgcGxhdGZvcm0gPSB0YXJnZXRfcG9ydF9vYmoubmFtZSgpCiAKICAgICAg
ICAgdXJsX2ZldGNoZXIgPSB0ZXN0X3VybF9mZXRjaGVyKGZpbGVzeXN0ZW0pCiAgICAgICAgIHpp
cF9mYWN0b3J5ID0gdGVzdF96aXBfZmFjdG9yeSgpCi0gICAgICAgIG1vY2tfc2NtID0gTW9ja1ND
TShmaWxlc3lzdGVtKQotICAgICAgICBmaWxlc3lzdGVtLm1heWJlX21ha2VfZGlyZWN0b3J5KG1v
Y2tfc2NtLmNoZWNrb3V0X3Jvb3QpCisgICAgICAgIGZpbGVzeXN0ZW0ubWF5YmVfbWFrZV9kaXJl
Y3RvcnkoaG9zdC5zY20oKS5jaGVja291dF9yb290KQogCiAgICAgICAgICMgRklYTUU6IFNDTSBt
b2R1bGUgZG9lc24ndCBoYW5kbGUgcGF0aHMgdGhhdCBhcmVuJ3QgcmVsYXRpdmUgdG8gdGhlIGNo
ZWNrb3V0X3Jvb3QgY29uc2lzdGVudGx5LgogICAgICAgICBmaWxlc3lzdGVtLmNoZGlyKCIvdGVz
dC5jaGVja291dCIpCiAKLSAgICAgICAgcmViYXNlbGluZXIgPSByZWJhc2VsaW5lX2Nocm9taXVt
X3dlYmtpdF90ZXN0cy5SZWJhc2VsaW5lcihob3N0X3BvcnRfb2JqLAotICAgICAgICAgICAgdGFy
Z2V0X3BvcnRfb2JqLCBwbGF0Zm9ybSwgb3B0aW9ucywgdXJsX2ZldGNoZXIsIHppcF9mYWN0b3J5
LCBtb2NrX3NjbSkKKyAgICAgICAgcmViYXNlbGluZXIgPSByZWJhc2VsaW5lX2Nocm9taXVtX3dl
YmtpdF90ZXN0cy5SZWJhc2VsaW5lcihob3N0LCBob3N0X3BvcnRfb2JqLAorICAgICAgICAgICAg
dGFyZ2V0X3BvcnRfb2JqLCBwbGF0Zm9ybSwgb3B0aW9ucywgdXJsX2ZldGNoZXIsIHppcF9mYWN0
b3J5KQogICAgICAgICByZXR1cm4gcmViYXNlbGluZXIsIGZpbGVzeXN0ZW0KIAogICAgIGRlZiB0
ZXN0X25vb3Aoc2VsZik6CkBAIC0zNTAsMTkgKzM0MywxNyBAQCBjbGFzcyBUZXN0UmVhbE1haW4o
dW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBleHBlY3RhdGlvbnMgPSAiQlVHWCBSRUJBU0VM
SU5FIDogZmFpbHVyZXMvZXhwZWN0ZWQvaW1hZ2UuaHRtbCA9IElNQUdFIgogCiAgICAgICAgIG9w
dGlvbnMgPSB0ZXN0X29wdGlvbnMoKQotICAgICAgICBob3N0X3BvcnRfb2JqLCBmaWxlc3lzdGVt
ID0gdGVzdF9ob3N0X3BvcnRfYW5kX2ZpbGVzeXN0ZW0ob3B0aW9ucywgZXhwZWN0YXRpb25zKQor
ICAgICAgICBob3N0LCBob3N0X3BvcnRfb2JqLCBmaWxlc3lzdGVtID0gdGVzdF9ob3N0X3BvcnRf
YW5kX2ZpbGVzeXN0ZW0ob3B0aW9ucywgZXhwZWN0YXRpb25zKQogICAgICAgICB1cmxfZmV0Y2hl
ciA9IHRlc3RfdXJsX2ZldGNoZXIoZmlsZXN5c3RlbSkKICAgICAgICAgemlwX2ZhY3RvcnkgPSB0
ZXN0X3ppcF9mYWN0b3J5KCkKLSAgICAgICAgbW9ja19zY20gPSBNb2NrU0NNKCkKLSAgICAgICAg
ZmlsZXN5c3RlbS5tYXliZV9tYWtlX2RpcmVjdG9yeShtb2NrX3NjbS5jaGVja291dF9yb290KQog
CiAgICAgICAgICMgRklYTUU6IFNDTSBtb2R1bGUgZG9lc24ndCBoYW5kbGUgcGF0aHMgdGhhdCBh
cmVuJ3QgcmVsYXRpdmUgdG8gdGhlIGNoZWNrb3V0X3Jvb3QgY29uc2lzdGVudGx5LgogICAgICAg
ICBmaWxlc3lzdGVtLmNoZGlyKCIvdGVzdC5jaGVja291dCIpCiAKICAgICAgICAgb2MgPSBvdXRw
dXRjYXB0dXJlLk91dHB1dENhcHR1cmUoKQogICAgICAgICBvYy5jYXB0dXJlX291dHB1dCgpCi0g
ICAgICAgIHJlcyA9IHJlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzLnJlYWxfbWFpbihv
cHRpb25zLCBvcHRpb25zLAotICAgICAgICAgICAgaG9zdF9wb3J0X29iaiwgaG9zdF9wb3J0X29i
aiwgdXJsX2ZldGNoZXIsIHppcF9mYWN0b3J5LCBtb2NrX3NjbSkKKyAgICAgICAgcmVzID0gcmVi
YXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHMucmVhbF9tYWluKGhvc3QsIG9wdGlvbnMsIG9w
dGlvbnMsCisgICAgICAgICAgICBob3N0X3BvcnRfb2JqLCBob3N0X3BvcnRfb2JqLCB1cmxfZmV0
Y2hlciwgemlwX2ZhY3RvcnkpCiAgICAgICAgIG9jLnJlc3RvcmVfb3V0cHV0KCkKIAogICAgICAg
ICAjIFdlIGV4cGVjdCB0byBoYXZlIHdyaXR0ZW4gMzggZmlsZXMgb3ZlciB0aGUgY291cnNlIG9m
IHRoaXMgcmViYXNlbGluZToKQEAgLTM4Miw3ICszNzMsMTEgQEAgY2xhc3MgVGVzdEh0bWxHZW5l
cmF0b3IodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBtYWtlX2dlbmVyYXRvcihzZWxmLCBm
aWxlcywgdGVzdHMpOgogICAgICAgICBvcHRpb25zID0gTW9ja09wdGlvbnMoY29uZmlndXJhdGlv
bj1Ob25lLCBodG1sX2RpcmVjdG9yeT0nL3RtcCcpCiAgICAgICAgIGhvc3QgPSBNb2NrSG9zdCgp
Ci0gICAgICAgIGhvc3RfcG9ydCA9IGhvc3QucG9ydF9mYWN0b3J5LmdldCgndGVzdCcsIG9wdGlv
bnMsIGZpbGVzeXN0ZW09dW5pdF90ZXN0X2ZpbGVzeXN0ZW0oZmlsZXMpKQorICAgICAgICBmcyA9
IGhvc3QuZmlsZXN5c3RlbQorICAgICAgICBmb3IgZmlsZW5hbWUsIGNvbnRlbnRzIGluIGZpbGVz
Lml0ZXJpdGVtcygpOgorICAgICAgICAgICAgZnMubWF5YmVfbWFrZV9kaXJlY3RvcnkoZnMuZGly
bmFtZShmaWxlbmFtZSkpCisgICAgICAgICAgICBmcy53cml0ZV9iaW5hcnlfZmlsZShmaWxlbmFt
ZSwgY29udGVudHMpCisgICAgICAgIGhvc3RfcG9ydCA9IGhvc3QucG9ydF9mYWN0b3J5LmdldCgn
dGVzdCcsIG9wdGlvbnMpCiAgICAgICAgIGdlbmVyYXRvciA9IHJlYmFzZWxpbmVfY2hyb21pdW1f
d2Via2l0X3Rlc3RzLkh0bWxHZW5lcmF0b3IoaG9zdF9wb3J0LAogICAgICAgICAgICAgdGFyZ2V0
X3BvcnQ9Tm9uZSwgb3B0aW9ucz1vcHRpb25zLCBwbGF0Zm9ybXM9Wyd0ZXN0LW1hYy1sZW9wYXJk
J10sIHJlYmFzZWxpbmluZ190ZXN0cz10ZXN0cykKICAgICAgICAgcmV0dXJuIGdlbmVyYXRvciwg
aG9zdF9wb3J0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119547</attachid>
            <date>2011-12-15 19:52:28 -0800</date>
            <delta_ts>2011-12-19 12:21:19 -0800</delta_ts>
            <desc>delete unneeded MockSystemHost import</desc>
            <filename>bug-74566-20111215195227.patch</filename>
            <type>text/plain</type>
            <size>43793</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyNzI3CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggODJjYjRmYzQ2MmVhMWNkYWJjOGQ3OWU4MDkyNjg2MmFm
ZTU2ODU1Ny4uYWJhMDNmOTYxMDgzYTk5ZDY5NTY2N2E2MzE0NjNjOWEzYzMxNDQ1ZiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDYw
IEBACiAyMDExLTEyLTE0ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCisg
ICAgICAgIHdlYmtpdHB5OiBmaW5pc2ggcmVmYWN0b3JpbmcgcG9ydCBjbGFzc2VzIHRvIG1ha2Ug
YSBob3N0IG1hbmRhdG9yeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NzQ1NjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGlzIGNoYW5nZSBtYWtlcyBhbGwgUG9ydCBvYmplY3RzIHRha2UgYSByZXF1aXJl
ZCAoU3lzdGVtKUhvc3QKKyAgICAgICAgcGFyYW1ldGVyLCBhbmQgdXBkYXRlcyB0aGUgVGVzdFBv
cnQgb2JqZWN0IHRvIG5vIGxvbmdlciBjcmVhdGUgYQorICAgICAgICBtb2NrIGZpbGVzeXN0ZW0g
b3IgYWRkIGZpbGVzIHRvIHRoZSBleGlzdGluZyBmaWxlc3lzdGVtIGJ5CisgICAgICAgIGRlZmF1
bHQuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2Uu
cHk6CisgICAgICAgIChQb3J0Ll9faW5pdF9fKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L2ZhY3RvcnkucHk6CisgICAgICAgIChQb3J0RmFjdG9yeS5fX2lu
aXRfXyk6CisgICAgICAgIChQb3J0RmFjdG9yeS5fZ2V0X2t3YXJncyk6CisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0LnB5OgorICAgICAgICAoVGVzdElu
c3RhbmNlLl9faW5pdF9fKToKKyAgICAgICAgKFRlc3RQb3J0Ll9faW5pdF9fKToKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX2ludGVncmF0
aW9udGVzdC5weToKKyAgICAgICAgKHBhc3NpbmdfcnVuKToKKyAgICAgICAgKGxvZ2dpbmdfcnVu
KToKKyAgICAgICAgKGdldF90ZXN0c19ydW4pOgorICAgICAgICAoTWFpblRlc3QudGVzdF9zaW5n
bGVfZmlsZSk6CisgICAgICAgIChNYWluVGVzdC50ZXN0X3N0ZGVycl9pc19zYXZlZCk6CisgICAg
ICAgIChNYWluVGVzdC50ZXN0X3Rlc3RfbGlzdCk6CisgICAgICAgIChNYWluVGVzdC50ZXN0X3Rl
c3RfbGlzdF93aXRoX3ByZWZpeCk6CisgICAgICAgIChNYWluVGVzdC50ZXN0X21pc3NpbmdfYW5k
X3VuZXhwZWN0ZWRfcmVzdWx0cyk6CisgICAgICAgIChNYWluVGVzdC50ZXN0X21pc3NpbmdfYW5k
X3VuZXhwZWN0ZWRfcmVzdWx0c193aXRoX2N1c3RvbV9leGl0X2NvZGUpOgorICAgICAgICAoTWFp
blRlc3QudGVzdF9jcmFzaF93aXRoX3N0ZGVycik6CisgICAgICAgIChNYWluVGVzdC50ZXN0X25v
X2ltYWdlX2ZhaWx1cmVfd2l0aF9pbWFnZV9kaWZmKToKKyAgICAgICAgKE1haW5UZXN0LnRlc3Rf
Y3Jhc2hfbG9nKToKKyAgICAgICAgKE1haW5UZXN0LnRlc3Rfd2ViX3Byb2Nlc3NfY3Jhc2hfbG9n
KToKKyAgICAgICAgKE1haW5UZXN0LnRlc3RfZXhpdF9hZnRlcl9uX2ZhaWx1cmVzX3VwbG9hZCk6
CisgICAgICAgIChNYWluVGVzdC50ZXN0X3Jlc3VsdHNfZGlyZWN0b3J5X2Fic29sdXRlKToKKyAg
ICAgICAgKE1haW5UZXN0LnRlc3RfcmVzdWx0c19kaXJlY3RvcnlfcmVsYXRpdmUpOgorICAgICAg
ICAoTWFpblRlc3QudGVzdF9yZXRyaWVzX2RpcmVjdG9yeSk6CisgICAgICAgIChNYWluVGVzdC50
ZXN0X3RvbGVyYW5jZS5nZXRfcG9ydF9mb3JfcnVuKToKKyAgICAgICAgKE1haW5UZXN0LnRlc3Rf
cmVmdGVzdF9zaG91bGRfbm90X3VzZV9uYW1pbmdfY29udmVudGlvbl9pZl9ub3RfbGlzdGVkX2lu
X3JlZnRlc3RsaXN0KToKKyAgICAgICAgKEVuZFRvRW5kVGVzdC50ZXN0X2VuZF90b19lbmQpOgor
ICAgICAgICAoRW5kVG9FbmRUZXN0LnRlc3RfcmVmdGVzdF93aXRoX3R3b19ub3RyZWZzKToKKyAg
ICAgICAgKFJlYmFzZWxpbmVUZXN0LnRlc3RfcmVzZXRfcmVzdWx0cyk6CisgICAgICAgIChSZWJh
c2VsaW5lVGVzdC50ZXN0X21pc3NpbmdfcmVzdWx0cyk6CisgICAgICAgIChSZWJhc2VsaW5lVGVz
dC50ZXN0X25ld19iYXNlbGluZSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b19iZV9t
b3ZlZC9yZWJhc2VsaW5lX2Nocm9taXVtX3dlYmtpdF90ZXN0cy5weToKKyAgICAgICAgKFJlYmFz
ZWxpbmVyLl9faW5pdF9fKToKKyAgICAgICAgKG1haW4pOgorICAgICAgICAocmVhbF9tYWluKToK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3RvX2JlX21vdmVkL3JlYmFzZWxpbmVfY2hyb21p
dW1fd2Via2l0X3Rlc3RzX3VuaXR0ZXN0LnB5OgorICAgICAgICAodGVzdF9ob3N0X3BvcnRfYW5k
X2ZpbGVzeXN0ZW0pOgorICAgICAgICAoVGVzdFJlYmFzZWxpbmVyLm1ha2VfcmViYXNlbGluZXIp
OgorICAgICAgICAoVGVzdFJlYWxNYWluLnRlc3RfYWxsX3BsYXRmb3Jtcyk6CisgICAgICAgIChU
ZXN0SHRtbEdlbmVyYXRvci5tYWtlX2dlbmVyYXRvcik6CisKKzIwMTEtMTItMTQgIERpcmsgUHJh
bmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKICAgICAgICAgd2Via2l0cHk6IHVwZGF0ZSB1
bml0IHRlc3RzIGluIHByZXBhcmF0aW9uIGZvciBtYWtpbmcgaG9zdCBhIG1hbmRhdG9yeSBwYXJh
bWV0ZXIgdG8gUG9ydCBvYmplY3RzCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03NDU2MgogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L2Jhc2UucHkKaW5kZXggODUxMTQ0MDAyNTE5MDYyODRiZDEwYTNmNDljNzVj
ZjA5NWRiNzk2ZS4uYzI4ZmY3OTkwODZmNGQ0OTdhNjYwM2E5ODlkMDk3ZGY3Zjg1NDYwYiAxMDA3
NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5
CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQpA
QCAtNTEsNiArNTEsNyBAQCBmcm9tIHdlYmtpdHB5LmNvbW1vbiBpbXBvcnQgZmluZF9maWxlcwog
ZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtIGltcG9ydCBsb2d1dGlscwogZnJvbSB3ZWJraXRw
eS5jb21tb24uc3lzdGVtIGltcG9ydCBwYXRoCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0u
ZXhlY3V0aXZlIGltcG9ydCBTY3JpcHRFcnJvcgorZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVt
LnN5c3RlbWhvc3QgaW1wb3J0IFN5c3RlbUhvc3QKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3Rz
IGltcG9ydCByZWFkX2NoZWNrc3VtX2Zyb21fcG5nCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0
cy5tb2RlbHMudGVzdF9jb25maWd1cmF0aW9uIGltcG9ydCBUZXN0Q29uZmlndXJhdGlvbgogZnJv
bSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydCBpbXBvcnQgY29uZmlnIGFzIHBvcnRfY29uZmln
CkBAIC0xMTAsOSArMTExLDkgQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAgICAgICBzZWxmLmhv
c3QgPSBob3N0CiAKICAgICAgICAgIyBGSVhNRTogUmVtb3ZlIHRoZXMgYWNjZXNzb3JzIG9uY2Ug
YWxsIGNhbGxlcnMgaGF2ZSBtb3ZlZCB0byB1c2luZyBzZWxmLmhvc3QuCi0gICAgICAgIHNlbGYu
ZXhlY3V0aXZlID0gZXhlY3V0aXZlIG9yIHNlbGYuaG9zdC5leGVjdXRpdmUKLSAgICAgICAgc2Vs
Zi51c2VyID0gdXNlciBvciBzZWxmLmhvc3QudXNlcgotICAgICAgICBzZWxmLmZpbGVzeXN0ZW0g
PSBmaWxlc3lzdGVtIG9yIHNlbGYuaG9zdC5maWxlc3lzdGVtCisgICAgICAgIHNlbGYuZXhlY3V0
aXZlID0gc2VsZi5ob3N0LmV4ZWN1dGl2ZQorICAgICAgICBzZWxmLnVzZXIgPSBzZWxmLmhvc3Qu
dXNlcgorICAgICAgICBzZWxmLmZpbGVzeXN0ZW0gPSBzZWxmLmhvc3QuZmlsZXN5c3RlbQogICAg
ICAgICBzZWxmLmNvbmZpZyA9IGNvbmZpZyBvciBwb3J0X2NvbmZpZy5Db25maWcoc2VsZi5leGVj
dXRpdmUsIHNlbGYuZmlsZXN5c3RlbSkKIAogICAgICAgICAjIEZJWE1FOiBSZW1vdmUgYWxsIG9m
IHRoZSBvbGQgInByb3RlY3RlZCIgdmVyc2lvbnMgd2hlbiB3ZSBjYW4uCmRpZmYgLS1naXQgYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2VfdW5pdHRlc3QucHkg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2VfdW5pdHRlc3Qu
cHkKaW5kZXggODFkYmU5M2JmZWJjMDg1OGQ1N2JmMWFkYWY4YWQ2NWJjZmM0MjE2OS4uZDQyYzJm
MGI5ZmM5YTM1Nzk2ZjM4YzExOTJhZTE4YmZiMTFkNWE1ZCAxMDA2NDQKLS0tIGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlX3VuaXR0ZXN0LnB5CisrKyBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZV91bml0dGVzdC5weQpA
QCAtNDgsMTEgKzQ4LDExIEBAIGltcG9ydCBjb25maWcKIGltcG9ydCBjb25maWdfbW9jawogCiBj
bGFzcyBQb3J0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGVmIG1ha2VfcG9ydChzZWxm
LCBleGVjdXRpdmU9Tm9uZSwgKiprd2FyZ3MpOgorICAgIGRlZiBtYWtlX3BvcnQoc2VsZiwgKipr
d2FyZ3MpOgogICAgICAgICBob3N0ID0gTW9ja0hvc3QoKQotICAgICAgICBpZiBleGVjdXRpdmU6
Ci0gICAgICAgICAgICBob3N0LmV4ZWN1dGl2ZSA9IGV4ZWN1dGl2ZQotICAgICAgICByZXR1cm4g
UG9ydChob3N0LCBleGVjdXRpdmU9ZXhlY3V0aXZlLCAqKmt3YXJncykKKyAgICAgICAgaWYgJ2V4
ZWN1dGl2ZScgaW4ga3dhcmdzOgorICAgICAgICAgICAgaG9zdC5leGVjdXRpdmUgPSBrd2FyZ3Nb
J2V4ZWN1dGl2ZSddCisgICAgICAgIHJldHVybiBQb3J0KGhvc3QsICoqa3dhcmdzKQogCiAgICAg
ZGVmIHRlc3RfZGVmYXVsdF9jaGlsZF9wcm9jZXNzZXMoc2VsZik6CiAgICAgICAgIHBvcnQgPSBz
ZWxmLm1ha2VfcG9ydCgpCkBAIC0yMTksNyArMjE5LDYgQEAgY2xhc3MgUG9ydFRlc3QodW5pdHRl
c3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHRlc3RfdGVzdF9kaXJzKHNlbGYpOgogICAgICAgICBw
b3J0ID0gc2VsZi5tYWtlX3BvcnQoKQotICAgICAgICAjIEZJWE1FOiBDb25zaWRlciBhZGRpbmcg
YSBmaWxlc3lzdGVtLnRvdWNoKCk/CiAgICAgICAgIHBvcnQuX2ZpbGVzeXN0ZW0ud3JpdGVfdGV4
dF9maWxlKHBvcnQubGF5b3V0X3Rlc3RzX2RpcigpICsgJy9jYW52YXMvdGVzdCcsICcnKQogICAg
ICAgICBwb3J0Ll9maWxlc3lzdGVtLndyaXRlX3RleHRfZmlsZShwb3J0LmxheW91dF90ZXN0c19k
aXIoKSArICcvY3NzMi4xL3Rlc3QnLCAnJykKICAgICAgICAgZGlycyA9IHBvcnQudGVzdF9kaXJz
KCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
ZmFjdG9yeS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZmFj
dG9yeS5weQppbmRleCA5YTVlZTU2ZTMwNjMxNGFkODFjZDg5Y2YzZWE5ZDFhOWZlNWQ2Mzk3Li43
NjcyZGU0NGM2NzhiMjdmNmE2ZjNhOTg0ZjI2MDUzNzg4NWU1MzhkIDEwMDY0NAotLS0gYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2ZhY3RvcnkucHkKKysrIGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9mYWN0b3J5LnB5CkBAIC00Miw3
ICs0Miw3IEBAIGNsYXNzIEJ1aWxkZXJPcHRpb25zKG9iamVjdCk6CiAKIAogY2xhc3MgUG9ydEZh
Y3Rvcnkob2JqZWN0KToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgaG9zdD1Ob25lKToKKyAgICBk
ZWYgX19pbml0X18oc2VsZiwgaG9zdCk6CiAgICAgICAgIHNlbGYuX2hvc3QgPSBob3N0CiAKICAg
ICBkZWYgX3BvcnRfbmFtZV9mcm9tX2FyZ3VtZW50c19hbmRfb3B0aW9ucyhzZWxmLCAqKmt3YXJn
cyk6CkBAIC02NywyMyArNjcsMTIgQEAgY2xhc3MgUG9ydEZhY3Rvcnkob2JqZWN0KToKICAgICAg
ICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoJ3Vua25vd24gcG9ydDsgc3lzLnBsYXRm
b3JtID0gIiVzIicgJSBzeXMucGxhdGZvcm0pCiAgICAgICAgIHJldHVybiBwb3J0X3RvX3VzZQog
Ci0gICAgZGVmIF9zZXRfZGVmYXVsdF9vdmVycmlkaW5nX25vbmUoc2VsZiwgZGljdGlvbmFyeSwg
a2V5LCBkZWZhdWx0KToKLSAgICAgICAgIyBkaWN0LnNldGRlZmF1bHQgYWxtb3N0IHdvcmtzLCBi
dXQgd29uJ3QgYWN0dWFsbHkgb3ZlcnJpZGUgTm9uZSB2YWx1ZXMsIHdoaWNoIHdlIHdhbnQuCi0g
ICAgICAgIGlmIG5vdCBkaWN0aW9uYXJ5LmdldChrZXkpOgotICAgICAgICAgICAgZGljdGlvbmFy
eVtrZXldID0gZGVmYXVsdAotICAgICAgICByZXR1cm4gZGljdGlvbmFyeVtrZXldCi0KLSAgICBk
ZWYgX2dldF9rd2FyZ3Moc2VsZiwgaG9zdD1Ob25lLCAqKmt3YXJncyk6CisgICAgZGVmIF9nZXRf
a3dhcmdzKHNlbGYsICoqa3dhcmdzKToKICAgICAgICAgcG9ydF90b191c2UgPSBzZWxmLl9wb3J0
X25hbWVfZnJvbV9hcmd1bWVudHNfYW5kX29wdGlvbnMoKiprd2FyZ3MpCiAKICAgICAgICAgaWYg
cG9ydF90b191c2Uuc3RhcnRzd2l0aCgndGVzdCcpOgogICAgICAgICAgICAgaW1wb3J0IHRlc3QK
ICAgICAgICAgICAgIG1ha2VyID0gdGVzdC5UZXN0UG9ydAotICAgICAgICAgICAgIyBGSVhNRTog
VGhpcyBpcyBhIGhhY2sgdG8gb3ZlcnJpZGUgdGhlICJkZWZhdWx0IiBmaWxlc3lzdGVtCi0gICAg
ICAgICAgICAjIHByb3ZpZGVkIHRvIHRoZSBwb3J0LiAgVGhlIHVuaXRfdGVzdF9maWxlc3lzdGVt
IGhhcyBhbiBleHRyYQotICAgICAgICAgICAgIyBfdGVzdHMgYXR0cmlidXRlIHdoaWNoIGEgYnVu
Y2ggb2YgdW5pdHRlc3RzIGRlcGVuZCBvbi4KLSAgICAgICAgICAgIGZyb20gLnRlc3QgaW1wb3J0
IHVuaXRfdGVzdF9maWxlc3lzdGVtCi0gICAgICAgICAgICBzZWxmLl9zZXRfZGVmYXVsdF9vdmVy
cmlkaW5nX25vbmUoa3dhcmdzLCAnZmlsZXN5c3RlbScsIHVuaXRfdGVzdF9maWxlc3lzdGVtKCkp
CiAgICAgICAgIGVsaWYgcG9ydF90b191c2Uuc3RhcnRzd2l0aCgnZHJ5cnVuJyk6CiAgICAgICAg
ICAgICBpbXBvcnQgZHJ5cnVuCiAgICAgICAgICAgICBtYWtlciA9IGRyeXJ1bi5EcnlSdW5Qb3J0
CkBAIC0xMjMsOCArMTEyLDcgQEAgY2xhc3MgUG9ydEZhY3Rvcnkob2JqZWN0KToKICAgICAgICAg
ZWxzZToKICAgICAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoJ3Vuc3VwcG9ydGVk
IHBvcnQ6ICVzJyAlIHBvcnRfdG9fdXNlKQogCi0gICAgICAgIGhvc3QgPSBob3N0IG9yIHNlbGYu
X2hvc3QKLSAgICAgICAgcmV0dXJuIG1ha2VyKGhvc3QsICoqa3dhcmdzKQorICAgICAgICByZXR1
cm4gbWFrZXIoc2VsZi5faG9zdCwgKiprd2FyZ3MpCiAKICAgICBkZWYgYWxsX3BvcnRfbmFtZXMo
c2VsZik6CiAgICAgICAgICIiIlJldHVybiBhIGxpc3Qgb2YgYWxsIHZhbGlkLCBmdWxseS1zcGVj
aWZpZWQsICJyZWFsIiBwb3J0IG5hbWVzLgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC90ZXN0LnB5CmluZGV4IDhlNDcyOGQxNmU2MTdmYTRmOGI3MjE1MjU1
ZTU4NzE1YjFlN2UxMTEuLjk1YzkyYmUxZjYxZjVkNDljMjg2ZjYzYWRhNjAxOTU5MzNhMjZkOGMg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVz
dC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3Qu
cHkKQEAgLTU1LDcgKzU1LDcgQEAgY2xhc3MgVGVzdEluc3RhbmNlKG9iamVjdCk6CiAKICAgICAg
ICAgIyBUaGUgdmFsdWVzIG9mIGVhY2ggZmllbGQgYXJlIHRyZWF0ZWQgYXMgcmF3IGJ5dGUgc3Ry
aW5ncy4gVGhleQogICAgICAgICAjIHdpbGwgYmUgY29udmVydGVkIHRvIHVuaWNvZGUgc3RyaW5n
cyB3aGVyZSBhcHByb3ByaWF0ZSB1c2luZwotICAgICAgICAjIE1vY2tGaWxlU3lzdGVtLnJlYWRf
dGV4dF9maWxlKCkuCisgICAgICAgICMgRmlsZVN5c3RlbS5yZWFkX3RleHRfZmlsZSgpLgogICAg
ICAgICBzZWxmLmFjdHVhbF90ZXh0ID0gc2VsZi5iYXNlICsgJy10eHQnCiAgICAgICAgIHNlbGYu
YWN0dWFsX2NoZWNrc3VtID0gc2VsZi5iYXNlICsgJy1jaGVja3N1bScKIApAQCAtMjk5LDEzICsy
OTksNiBAQCBXT05URklYIFNLSVAgOiBmYWlsdXJlcy9leHBlY3RlZC9leGNlcHRpb24uaHRtbCA9
IENSQVNICiAgICAgZmlsZXN5c3RlbS5jbGVhcl93cml0dGVuX2ZpbGVzKCkKIAogCi1kZWYgdW5p
dF90ZXN0X2ZpbGVzeXN0ZW0oZmlsZXM9Tm9uZSk6Ci0gICAgZmlsZXMgPSBmaWxlcyBvciB7fQot
ICAgIGZzID0gTW9ja0ZpbGVTeXN0ZW0oZmlsZXMsIGRpcnM9c2V0KFsnL21vY2stY2hlY2tvdXQn
XSkpICAjIE1ha2Ugc3VyZSBhdCBsZWFzdCB0aGUgY2hlY2tvdXRfcm9vdCBleGlzdHMgYXMgYSBk
aXJlY3RvcnkuCi0gICAgYWRkX3VuaXRfdGVzdHNfdG9fbW9ja19maWxlc3lzdGVtKGZzKQotICAg
IHJldHVybiBmcwotCi0KIGNsYXNzIFRlc3RQb3J0KFBvcnQpOgogICAgICIiIlRlc3QgaW1wbGVt
ZW50YXRpb24gb2YgdGhlIFBvcnQgaW50ZXJmYWNlLiIiIgogICAgIEFMTF9CQVNFTElORV9WQVJJ
QU5UUyA9ICgKQEAgLTMxNCwyNiArMzA3LDE1IEBAIGNsYXNzIFRlc3RQb3J0KFBvcnQpOgogICAg
ICAgICAndGVzdC1saW51eC14ODZfNjQnLAogICAgICkKIAotICAgIGRlZiBfc2V0X2RlZmF1bHRf
b3ZlcnJpZGluZ19ub25lKHNlbGYsIGRpY3Rpb25hcnksIGtleSwgZGVmYXVsdCk6Ci0gICAgICAg
ICMgZGljdC5zZXRkZWZhdWx0IGFsbW9zdCB3b3JrcywgYnV0IHdvbid0IGFjdHVhbGx5IG92ZXJy
aWRlIE5vbmUgdmFsdWVzLCB3aGljaCB3ZSB3YW50LgotICAgICAgICBpZiBub3QgZGljdGlvbmFy
eS5nZXQoa2V5KToKLSAgICAgICAgICAgIGRpY3Rpb25hcnlba2V5XSA9IGRlZmF1bHQKLSAgICAg
ICAgcmV0dXJuIGRpY3Rpb25hcnlba2V5XQotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3Q9
Tm9uZSwgcG9ydF9uYW1lPU5vbmUsICoqa3dhcmdzKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwg
aG9zdCwgcG9ydF9uYW1lPU5vbmUsICoqa3dhcmdzKToKICAgICAgICAgaWYgbm90IHBvcnRfbmFt
ZSBvciBwb3J0X25hbWUgPT0gJ3Rlc3QnOgogICAgICAgICAgICAgcG9ydF9uYW1lID0gJ3Rlc3Qt
bWFjLWxlb3BhcmQnCiAKLSAgICAgICAgIyBGSVhNRTogd2UgaW1wb3J0IHRoaXMgaGVyZSBpbnN0
ZWFkIG9mIGF0IHRoZSB0b3AtbGV2ZWwgaW4gb3JkZXIgdG8gYXZvaWQKLSAgICAgICAgIyBhIGNp
cmN1bGFyIGltcG9ydC4gVGhpcyBzaG91bGQgYmUgcmVtb3ZlZCB3aGVuIGhvc3QgYmVjb21lIGEg
cmVxdWlyZWQgcGFyYW1ldGVyLgotICAgICAgICBmcm9tIHdlYmtpdHB5LmNvbW1vbi5ob3N0X21v
Y2sgaW1wb3J0IE1vY2tIb3N0Ci0gICAgICAgIGhvc3QgPSBob3N0IG9yIE1vY2tIb3N0KCkKLSAg
ICAgICAgZmlsZXN5c3RlbSA9IHNlbGYuX3NldF9kZWZhdWx0X292ZXJyaWRpbmdfbm9uZShrd2Fy
Z3MsICdmaWxlc3lzdGVtJywgdW5pdF90ZXN0X2ZpbGVzeXN0ZW0oKSkKLQotICAgICAgICBQb3J0
Ll9faW5pdF9fKHNlbGYsIGhvc3QsIHBvcnRfbmFtZT1wb3J0X25hbWUsICoqa3dhcmdzKQorICAg
ICAgICBzZWxmLl90ZXN0cyA9IHVuaXRfdGVzdF9saXN0KCkKKyAgICAgICAgc2VsZi5fZXhwZWN0
YXRpb25zX3BhdGggPSBMQVlPVVRfVEVTVF9ESVIgKyAnL3BsYXRmb3JtL3Rlc3QvdGVzdF9leHBl
Y3RhdGlvbnMudHh0JwogICAgICAgICBzZWxmLl9yZXN1bHRzX2RpcmVjdG9yeSA9IE5vbmUKIAot
ICAgICAgICBzZWxmLl90ZXN0cyA9IHVuaXRfdGVzdF9saXN0KCkKKyAgICAgICAgUG9ydC5fX2lu
aXRfXyhzZWxmLCBob3N0LCBwb3J0X25hbWU9cG9ydF9uYW1lLCAqKmt3YXJncykKIAogICAgICAg
ICBzZWxmLl9vcGVyYXRpbmdfc3lzdGVtID0gJ21hYycKICAgICAgICAgaWYgcG9ydF9uYW1lLnN0
YXJ0c3dpdGgoJ3Rlc3Qtd2luJyk6CkBAIC0zNTEsNyArMzMzLDYgQEAgY2xhc3MgVGVzdFBvcnQo
UG9ydCk6CiAgICAgICAgIH0KICAgICAgICAgc2VsZi5fdmVyc2lvbiA9IHZlcnNpb25fbWFwW3Bv
cnRfbmFtZV0KIAotICAgICAgICBzZWxmLl9leHBlY3RhdGlvbnNfcGF0aCA9IExBWU9VVF9URVNU
X0RJUiArICcvcGxhdGZvcm0vdGVzdC90ZXN0X2V4cGVjdGF0aW9ucy50eHQnCiAKICAgICBkZWYg
X3BhdGhfdG9fZHJpdmVyKHNlbGYpOgogICAgICAgICAjIFRoaXMgcm91dGluZSBzaG91bGRuJ3Qg
bm9ybWFsbHkgYmUgY2FsbGVkLCBidXQgaXQgaXMgY2FsbGVkIGJ5CmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX2ludGVncmF0
aW9udGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJr
aXRfdGVzdHNfaW50ZWdyYXRpb250ZXN0LnB5CmluZGV4IGYzYzkzNzQ2ZjQ4Y2UyODE1MDQ3NmRh
MjYwNTQ4MGYwMDA0MmRkYTEuLjZjYzM5OTQ4NGZhZDU3ZjEwMzlkNTIyYjBmMmJmMDRkZTQzYzNk
ODkgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93
ZWJraXRfdGVzdHNfaW50ZWdyYXRpb250ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfaW50ZWdyYXRpb250ZXN0LnB5CkBAIC02
Nyw3ICs2Nyw3IEBAIGZyb20gd2Via2l0cHkuY29tbW9uLmhvc3RfbW9jayBpbXBvcnQgTW9ja0hv
c3QKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzIGltcG9ydCBwb3J0CiBmcm9tIHdlYmtpdHB5
LmxheW91dF90ZXN0cyBpbXBvcnQgcnVuX3dlYmtpdF90ZXN0cwogZnJvbSB3ZWJraXRweS5sYXlv
dXRfdGVzdHMucG9ydCBpbXBvcnQgUG9ydAotZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9y
dC50ZXN0IGltcG9ydCBUZXN0UG9ydCwgVGVzdERyaXZlciwgdW5pdF90ZXN0X2ZpbGVzeXN0ZW0K
K2Zyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQudGVzdCBpbXBvcnQgVGVzdFBvcnQsIFRl
c3REcml2ZXIKIGZyb20gd2Via2l0cHkucHl0aG9uMjQudmVyc2lvbmluZyBpbXBvcnQgY29tcGFy
ZV92ZXJzaW9uCiBmcm9tIHdlYmtpdHB5LnRlc3Quc2tpcCBpbXBvcnQgc2tpcF9pZgogCkBAIC05
NywyNyArOTcsMjUgQEAgZGVmIHBhcnNlX2FyZ3MoZXh0cmFfYXJncz1Ob25lLCByZWNvcmRfcmVz
dWx0cz1GYWxzZSwgdGVzdHNfaW5jbHVkZWQ9RmFsc2UsIG5ld18KICAgICByZXR1cm4gcnVuX3dl
YmtpdF90ZXN0cy5wYXJzZV9hcmdzKGFyZ3MpCiAKIAotZGVmIHBhc3NpbmdfcnVuKGV4dHJhX2Fy
Z3M9Tm9uZSwgcG9ydF9vYmo9Tm9uZSwgcmVjb3JkX3Jlc3VsdHM9RmFsc2UsIHRlc3RzX2luY2x1
ZGVkPUZhbHNlLCBmaWxlc3lzdGVtPU5vbmUpOgorZGVmIHBhc3NpbmdfcnVuKGV4dHJhX2FyZ3M9
Tm9uZSwgcG9ydF9vYmo9Tm9uZSwgcmVjb3JkX3Jlc3VsdHM9RmFsc2UsIHRlc3RzX2luY2x1ZGVk
PUZhbHNlLCBob3N0PU5vbmUpOgogICAgIG9wdGlvbnMsIHBhcnNlZF9hcmdzID0gcGFyc2VfYXJn
cyhleHRyYV9hcmdzLCByZWNvcmRfcmVzdWx0cywgdGVzdHNfaW5jbHVkZWQpCi0gICAgZmlsZXN5
c3RlbSA9IGZpbGVzeXN0ZW0gb3IgdW5pdF90ZXN0X2ZpbGVzeXN0ZW0oKQogICAgIGlmIG5vdCBw
b3J0X29iajoKLSAgICAgICAgaG9zdCA9IE1vY2tIb3N0KCkKLSAgICAgICAgcG9ydF9vYmogPSBo
b3N0LnBvcnRfZmFjdG9yeS5nZXQocG9ydF9uYW1lPW9wdGlvbnMucGxhdGZvcm0sIG9wdGlvbnM9
b3B0aW9ucywgZmlsZXN5c3RlbT1maWxlc3lzdGVtKQorICAgICAgICBob3N0ID0gaG9zdCBvciBN
b2NrSG9zdCgpCisgICAgICAgIHBvcnRfb2JqID0gaG9zdC5wb3J0X2ZhY3RvcnkuZ2V0KHBvcnRf
bmFtZT1vcHRpb25zLnBsYXRmb3JtLCBvcHRpb25zPW9wdGlvbnMpCiAgICAgYnVpbGRib3Rfb3V0
cHV0ID0gYXJyYXlfc3RyZWFtLkFycmF5U3RyZWFtKCkKICAgICByZWd1bGFyX291dHB1dCA9IGFy
cmF5X3N0cmVhbS5BcnJheVN0cmVhbSgpCiAgICAgcmVzID0gcnVuX3dlYmtpdF90ZXN0cy5ydW4o
cG9ydF9vYmosIG9wdGlvbnMsIHBhcnNlZF9hcmdzLCBidWlsZGJvdF9vdXRwdXQ9YnVpbGRib3Rf
b3V0cHV0LCByZWd1bGFyX291dHB1dD1yZWd1bGFyX291dHB1dCkKICAgICByZXR1cm4gcmVzID09
IDAgYW5kIHJlZ3VsYXJfb3V0cHV0LmVtcHR5KCkgYW5kIGJ1aWxkYm90X291dHB1dC5lbXB0eSgp
CiAKIAotZGVmIGxvZ2dpbmdfcnVuKGV4dHJhX2FyZ3M9Tm9uZSwgcG9ydF9vYmo9Tm9uZSwgcmVj
b3JkX3Jlc3VsdHM9RmFsc2UsIHRlc3RzX2luY2x1ZGVkPUZhbHNlLCBmaWxlc3lzdGVtPU5vbmUs
IG5ld19yZXN1bHRzPUZhbHNlKToKK2RlZiBsb2dnaW5nX3J1bihleHRyYV9hcmdzPU5vbmUsIHBv
cnRfb2JqPU5vbmUsIHJlY29yZF9yZXN1bHRzPUZhbHNlLCB0ZXN0c19pbmNsdWRlZD1GYWxzZSwg
aG9zdD1Ob25lLCBuZXdfcmVzdWx0cz1GYWxzZSk6CiAgICAgb3B0aW9ucywgcGFyc2VkX2FyZ3Mg
PSBwYXJzZV9hcmdzKGV4dHJhX2FyZ3M9ZXh0cmFfYXJncywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVjb3JkX3Jlc3VsdHM9cmVjb3JkX3Jlc3VsdHMsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RzX2luY2x1ZGVkPXRlc3RzX2luY2x1
ZGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludF9ub3RoaW5n
PUZhbHNlLCBuZXdfcmVzdWx0cz1uZXdfcmVzdWx0cykKLSAgICBob3N0ID0gTW9ja0hvc3QoKQot
ICAgIGZpbGVzeXN0ZW0gPSBmaWxlc3lzdGVtIG9yIHVuaXRfdGVzdF9maWxlc3lzdGVtKCkKKyAg
ICBob3N0ID0gaG9zdCBvciBNb2NrSG9zdCgpCiAgICAgaWYgbm90IHBvcnRfb2JqOgotICAgICAg
ICBwb3J0X29iaiA9IGhvc3QucG9ydF9mYWN0b3J5LmdldChwb3J0X25hbWU9b3B0aW9ucy5wbGF0
Zm9ybSwgb3B0aW9ucz1vcHRpb25zLCBmaWxlc3lzdGVtPWZpbGVzeXN0ZW0pCisgICAgICAgIHBv
cnRfb2JqID0gaG9zdC5wb3J0X2ZhY3RvcnkuZ2V0KHBvcnRfbmFtZT1vcHRpb25zLnBsYXRmb3Jt
LCBvcHRpb25zPW9wdGlvbnMpCiAKICAgICByZXMsIGJ1aWxkYm90X291dHB1dCwgcmVndWxhcl9v
dXRwdXQgPSBydW5fYW5kX2NhcHR1cmUocG9ydF9vYmosIG9wdGlvbnMsIHBhcnNlZF9hcmdzKQog
ICAgIHJldHVybiAocmVzLCBidWlsZGJvdF9vdXRwdXQsIHJlZ3VsYXJfb3V0cHV0LCBob3N0LnVz
ZXIpCkBAIC0xMzgsNyArMTM2LDcgQEAgZGVmIHJ1bl9hbmRfY2FwdHVyZShwb3J0X29iaiwgb3B0
aW9ucywgcGFyc2VkX2FyZ3MpOgogCiAKIGRlZiBnZXRfdGVzdHNfcnVuKGV4dHJhX2FyZ3M9Tm9u
ZSwgdGVzdHNfaW5jbHVkZWQ9RmFsc2UsIGZsYXR0ZW5fYmF0Y2hlcz1GYWxzZSwKLSAgICAgICAg
ICAgICAgICAgIGZpbGVzeXN0ZW09Tm9uZSwgaW5jbHVkZV9yZWZlcmVuY2VfaHRtbD1GYWxzZSk6
CisgICAgICAgICAgICAgICAgICBob3N0PU5vbmUsIGluY2x1ZGVfcmVmZXJlbmNlX2h0bWw9RmFs
c2UpOgogICAgIGV4dHJhX2FyZ3MgPSBleHRyYV9hcmdzIG9yIFtdCiAgICAgaWYgbm90IHRlc3Rz
X2luY2x1ZGVkOgogICAgICAgICAjIE5vdCBpbmNsdWRpbmcgaHR0cCB0ZXN0cyBzaW5jZSB0aGV5
IGdldCBydW4gb3V0IG9mIG9yZGVyICh0aGF0CkBAIC0xNDYsMTEgKzE0NCw5IEBAIGRlZiBnZXRf
dGVzdHNfcnVuKGV4dHJhX2FyZ3M9Tm9uZSwgdGVzdHNfaW5jbHVkZWQ9RmFsc2UsIGZsYXR0ZW5f
YmF0Y2hlcz1GYWxzZSwKICAgICAgICAgZXh0cmFfYXJncyA9IFsncGFzc2VzJywgJ2ZhaWx1cmVz
J10gKyBleHRyYV9hcmdzCiAgICAgb3B0aW9ucywgcGFyc2VkX2FyZ3MgPSBwYXJzZV9hcmdzKGV4
dHJhX2FyZ3MsIHRlc3RzX2luY2x1ZGVkPVRydWUpCiAKLSAgICBob3N0ID0gTW9ja0hvc3QoKQot
CisgICAgaG9zdCA9IGhvc3Qgb3IgTW9ja0hvc3QoKQogICAgIHRlc3RfYmF0Y2hlcyA9IFtdCiAK
LQogICAgIGNsYXNzIFJlY29yZGluZ1Rlc3REcml2ZXIoVGVzdERyaXZlcik6CiAgICAgICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBwb3J0LCB3b3JrZXJfbnVtYmVyKToKICAgICAgICAgICAgIFRlc3RE
cml2ZXIuX19pbml0X18oc2VsZiwgcG9ydCwgd29ya2VyX251bWJlciwgcGl4ZWxfdGVzdHM9cG9y
dC5nZXRfb3B0aW9uKCdwaXhlbF90ZXN0JykpCkBAIC0xNzcsNyArMTczLDcgQEAgZGVmIGdldF90
ZXN0c19ydW4oZXh0cmFfYXJncz1Ob25lLCB0ZXN0c19pbmNsdWRlZD1GYWxzZSwgZmxhdHRlbl9i
YXRjaGVzPUZhbHNlLAogICAgICAgICBkZWYgY3JlYXRlX2RyaXZlcihzZWxmLCB3b3JrZXJfbnVt
YmVyKToKICAgICAgICAgICAgIHJldHVybiBSZWNvcmRpbmdUZXN0RHJpdmVyKHNlbGYsIHdvcmtl
cl9udW1iZXIpCiAKLSAgICByZWNvcmRpbmdfcG9ydCA9IFJlY29yZGluZ1Rlc3RQb3J0KG9wdGlv
bnM9b3B0aW9ucywgaG9zdD1ob3N0LCBmaWxlc3lzdGVtPWZpbGVzeXN0ZW0pCisgICAgcmVjb3Jk
aW5nX3BvcnQgPSBSZWNvcmRpbmdUZXN0UG9ydChob3N0LCBvcHRpb25zPW9wdGlvbnMpCiAgICAg
cnVuX2FuZF9jYXB0dXJlKHJlY29yZGluZ19wb3J0LCBvcHRpb25zLCBwYXJzZWRfYXJncykKIAog
ICAgIGlmIGZsYXR0ZW5fYmF0Y2hlczoKQEAgLTM4OSw5ICszODUsOSBAQCBjbGFzcyBNYWluVGVz
dCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3Rfc2luZ2xlX2ZpbGUoc2VsZik6CiAg
ICAgICAgICMgRklYTUU6IFdlIHNob3VsZCBjb25zaWRlciByZXBsYWNpbmcgbW9yZSBvZiB0aGUg
Z2V0X3Rlc3RzX3J1bigpLXN0eWxlIHRlc3RzCiAgICAgICAgICMgd2l0aCB0ZXN0cyB0aGF0IHJl
YWQgdGhlIHRlc3RzX3J1biogZmlsZXMsIGxpa2UgdGhpcyBvbmUuCi0gICAgICAgIGZzID0gdW5p
dF90ZXN0X2ZpbGVzeXN0ZW0oKQotICAgICAgICB0ZXN0c19ydW4gPSBwYXNzaW5nX3J1bihbJ3Bh
c3Nlcy90ZXh0Lmh0bWwnXSwgdGVzdHNfaW5jbHVkZWQ9VHJ1ZSwgZmlsZXN5c3RlbT1mcykKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZnMucmVhZF90ZXh0X2ZpbGUoJy90bXAvbGF5b3V0LXRl
c3QtcmVzdWx0cy90ZXN0c19ydW4wLnR4dCcpLAorICAgICAgICBob3N0ID0gTW9ja0hvc3QoKQor
ICAgICAgICB0ZXN0c19ydW4gPSBwYXNzaW5nX3J1bihbJ3Bhc3Nlcy90ZXh0Lmh0bWwnXSwgdGVz
dHNfaW5jbHVkZWQ9VHJ1ZSwgaG9zdD1ob3N0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyho
b3N0LmZpbGVzeXN0ZW0ucmVhZF90ZXh0X2ZpbGUoJy90bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy90
ZXN0c19ydW4wLnR4dCcpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAncGFzc2VzL3RleHQu
aHRtbFxuJykKIAogICAgIGRlZiB0ZXN0X3NpbmdsZV9maWxlX3dpdGhfcHJlZml4KHNlbGYpOgpA
QCAtNDAzLDI4ICszOTksMjggQEAgY2xhc3MgTWFpblRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgog
ICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhbXSwgdGVzdHNfcnVuKQogCiAgICAgZGVmIHRlc3Rf
c3RkZXJyX2lzX3NhdmVkKHNlbGYpOgotICAgICAgICBmcyA9IHVuaXRfdGVzdF9maWxlc3lzdGVt
KCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBhc3NpbmdfcnVuKGZpbGVzeXN0ZW09ZnMpKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhmcy5yZWFkX3RleHRfZmlsZSgnL3RtcC9sYXlvdXQt
dGVzdC1yZXN1bHRzL3Bhc3Nlcy9lcnJvci1zdGRlcnIudHh0JyksCisgICAgICAgIGhvc3QgPSBN
b2NrSG9zdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwYXNzaW5nX3J1bihob3N0PWhvc3Qp
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhob3N0LmZpbGVzeXN0ZW0ucmVhZF90ZXh0X2Zp
bGUoJy90bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9wYXNzZXMvZXJyb3Itc3RkZXJyLnR4dCcpLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAnc3R1ZmYgZ29pbmcgdG8gc3RkZXJyJykKIAogICAg
IGRlZiB0ZXN0X3Rlc3RfbGlzdChzZWxmKToKLSAgICAgICAgZnMgPSB1bml0X3Rlc3RfZmlsZXN5
c3RlbSgpCisgICAgICAgIGhvc3QgPSBNb2NrSG9zdCgpCiAgICAgICAgIGZpbGVuYW1lID0gJy90
bXAvZm9vLnR4dCcKLSAgICAgICAgZnMud3JpdGVfdGV4dF9maWxlKGZpbGVuYW1lLCAncGFzc2Vz
L3RleHQuaHRtbCcpCi0gICAgICAgIHRlc3RzX3J1biA9IGdldF90ZXN0c19ydW4oWyctLXRlc3Qt
bGlzdD0lcycgJSBmaWxlbmFtZV0sIHRlc3RzX2luY2x1ZGVkPVRydWUsIGZsYXR0ZW5fYmF0Y2hl
cz1UcnVlLCBmaWxlc3lzdGVtPWZzKQorICAgICAgICBob3N0LmZpbGVzeXN0ZW0ud3JpdGVfdGV4
dF9maWxlKGZpbGVuYW1lLCAncGFzc2VzL3RleHQuaHRtbCcpCisgICAgICAgIHRlc3RzX3J1biA9
IGdldF90ZXN0c19ydW4oWyctLXRlc3QtbGlzdD0lcycgJSBmaWxlbmFtZV0sIHRlc3RzX2luY2x1
ZGVkPVRydWUsIGZsYXR0ZW5fYmF0Y2hlcz1UcnVlLCBob3N0PWhvc3QpCiAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWxzKFsncGFzc2VzL3RleHQuaHRtbCddLCB0ZXN0c19ydW4pCi0gICAgICAgIGZz
LnJlbW92ZShmaWxlbmFtZSkKKyAgICAgICAgaG9zdC5maWxlc3lzdGVtLnJlbW92ZShmaWxlbmFt
ZSkKICAgICAgICAgcmVzLCBvdXQsIGVyciwgdXNlciA9IGxvZ2dpbmdfcnVuKFsnLS10ZXN0LWxp
c3Q9JXMnICUgZmlsZW5hbWVdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdGVzdHNfaW5jbHVkZWQ9VHJ1ZSwgZmlsZXN5c3RlbT1mcykKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RzX2luY2x1ZGVkPVRydWUsIGhvc3Q9aG9z
dCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMsIC0xKQogICAgICAgICBzZWxmLmFzc2Vy
dEZhbHNlKGVyci5lbXB0eSgpKQogCiAgICAgZGVmIHRlc3RfdGVzdF9saXN0X3dpdGhfcHJlZml4
KHNlbGYpOgotICAgICAgICBmcyA9IHVuaXRfdGVzdF9maWxlc3lzdGVtKCkKKyAgICAgICAgaG9z
dCA9IE1vY2tIb3N0KCkKICAgICAgICAgZmlsZW5hbWUgPSAnL3RtcC9mb28udHh0JwotICAgICAg
ICBmcy53cml0ZV90ZXh0X2ZpbGUoZmlsZW5hbWUsICdMYXlvdXRUZXN0cy9wYXNzZXMvdGV4dC5o
dG1sJykKLSAgICAgICAgdGVzdHNfcnVuID0gZ2V0X3Rlc3RzX3J1bihbJy0tdGVzdC1saXN0PSVz
JyAlIGZpbGVuYW1lXSwgdGVzdHNfaW5jbHVkZWQ9VHJ1ZSwgZmxhdHRlbl9iYXRjaGVzPVRydWUs
IGZpbGVzeXN0ZW09ZnMpCisgICAgICAgIGhvc3QuZmlsZXN5c3RlbS53cml0ZV90ZXh0X2ZpbGUo
ZmlsZW5hbWUsICdMYXlvdXRUZXN0cy9wYXNzZXMvdGV4dC5odG1sJykKKyAgICAgICAgdGVzdHNf
cnVuID0gZ2V0X3Rlc3RzX3J1bihbJy0tdGVzdC1saXN0PSVzJyAlIGZpbGVuYW1lXSwgdGVzdHNf
aW5jbHVkZWQ9VHJ1ZSwgZmxhdHRlbl9iYXRjaGVzPVRydWUsIGhvc3Q9aG9zdCkKICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbHMoWydwYXNzZXMvdGV4dC5odG1sJ10sIHRlc3RzX3J1bikKIAogICAg
IGRlZiB0ZXN0X3VuZXhwZWN0ZWRfZmFpbHVyZXMoc2VsZik6CkBAIC00NDAsMTcgKzQzNiwxNyBA
QCBjbGFzcyBNYWluVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfbWlzc2lu
Z19hbmRfdW5leHBlY3RlZF9yZXN1bHRzKHNlbGYpOgogICAgICAgICAjIFRlc3QgdGhhdCB3ZSB1
cGRhdGUgZXhwZWN0YXRpb25zIGluIHBsYWNlLiBJZiB0aGUgZXhwZWN0YXRpb24KICAgICAgICAg
IyBpcyBtaXNzaW5nLCB1cGRhdGUgdGhlIGV4cGVjdGVkIGdlbmVyaWMgbG9jYXRpb24uCi0gICAg
ICAgIGZzID0gdW5pdF90ZXN0X2ZpbGVzeXN0ZW0oKQorICAgICAgICBob3N0ID0gTW9ja0hvc3Qo
KQogICAgICAgICByZXMsIG91dCwgZXJyLCBfID0gbG9nZ2luZ19ydW4oWyctLW5vLXNob3ctcmVz
dWx0cycsCiAgICAgICAgICAgICAnZmFpbHVyZXMvZXhwZWN0ZWQvbWlzc2luZ19pbWFnZS5odG1s
JywKICAgICAgICAgICAgICdmYWlsdXJlcy91bmV4cGVjdGVkL21pc3NpbmdfdGV4dC5odG1sJywK
ICAgICAgICAgICAgICdmYWlsdXJlcy91bmV4cGVjdGVkL3RleHQtaW1hZ2UtY2hlY2tzdW0uaHRt
bCddLAotICAgICAgICAgICAgdGVzdHNfaW5jbHVkZWQ9VHJ1ZSwgZmlsZXN5c3RlbT1mcywgcmVj
b3JkX3Jlc3VsdHM9VHJ1ZSkKLSAgICAgICAgZmlsZV9saXN0ID0gZnMud3JpdHRlbl9maWxlcy5r
ZXlzKCkKKyAgICAgICAgICAgIHRlc3RzX2luY2x1ZGVkPVRydWUsIGhvc3Q9aG9zdCwgcmVjb3Jk
X3Jlc3VsdHM9VHJ1ZSkKKyAgICAgICAgZmlsZV9saXN0ID0gaG9zdC5maWxlc3lzdGVtLndyaXR0
ZW5fZmlsZXMua2V5cygpCiAgICAgICAgIGZpbGVfbGlzdC5yZW1vdmUoJy90bXAvbGF5b3V0LXRl
c3QtcmVzdWx0cy90ZXN0c19ydW4wLnR4dCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHJl
cywgMSkKICAgICAgICAgZXhwZWN0ZWRfdG9rZW4gPSAnInVuZXhwZWN0ZWQiOnsidGV4dC1pbWFn
ZS1jaGVja3N1bS5odG1sIjp7ImV4cGVjdGVkIjoiUEFTUyIsImFjdHVhbCI6IlRFWFQifSwibWlz
c2luZ190ZXh0Lmh0bWwiOnsiZXhwZWN0ZWQiOiJQQVNTIiwiaXNfbWlzc2luZ190ZXh0Ijp0cnVl
LCJhY3R1YWwiOiJNSVNTSU5HIn0nCi0gICAgICAgIGpzb25fc3RyaW5nID0gZnMucmVhZF90ZXh0
X2ZpbGUoJy90bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9mdWxsX3Jlc3VsdHMuanNvbicpCisgICAg
ICAgIGpzb25fc3RyaW5nID0gaG9zdC5maWxlc3lzdGVtLnJlYWRfdGV4dF9maWxlKCcvdG1wL2xh
eW91dC10ZXN0LXJlc3VsdHMvZnVsbF9yZXN1bHRzLmpzb24nKQogICAgICAgICBzZWxmLmFzc2Vy
dFRydWUoanNvbl9zdHJpbmcuZmluZChleHBlY3RlZF90b2tlbikgIT0gLTEpCiAgICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZShqc29uX3N0cmluZy5maW5kKCcibnVtX3JlZ3Jlc3Npb25zIjoxJykgIT0g
LTEpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShqc29uX3N0cmluZy5maW5kKCcibnVtX2ZsYWt5
IjowJykgIT0gLTEpCkBAIC00NTksNzUgKzQ1NSw3NCBAQCBjbGFzcyBNYWluVGVzdCh1bml0dGVz
dC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfbWlzc2luZ19hbmRfdW5leHBlY3RlZF9yZXN1bHRz
X3dpdGhfY3VzdG9tX2V4aXRfY29kZShzZWxmKToKICAgICAgICAgIyBUZXN0IHRoYXQgd2UgdXBk
YXRlIGV4cGVjdGF0aW9ucyBpbiBwbGFjZS4gSWYgdGhlIGV4cGVjdGF0aW9uCiAgICAgICAgICMg
aXMgbWlzc2luZywgdXBkYXRlIHRoZSBleHBlY3RlZCBnZW5lcmljIGxvY2F0aW9uLgotICAgICAg
ICBmcyA9IHVuaXRfdGVzdF9maWxlc3lzdGVtKCkKLQogICAgICAgICBjbGFzcyBDdXN0b21FeGl0
Q29kZVBvcnQoVGVzdFBvcnQpOgogICAgICAgICAgICAgZGVmIGV4aXRfY29kZV9mcm9tX3N1bW1h
cml6ZWRfcmVzdWx0cyhzZWxmLCB1bmV4cGVjdGVkX3Jlc3VsdHMpOgogICAgICAgICAgICAgICAg
IHJldHVybiB1bmV4cGVjdGVkX3Jlc3VsdHNbJ251bV9yZWdyZXNzaW9ucyddICsgdW5leHBlY3Rl
ZF9yZXN1bHRzWydudW1fbWlzc2luZyddCiAKKyAgICAgICAgaG9zdCA9IE1vY2tIb3N0KCkKICAg
ICAgICAgb3B0aW9ucywgcGFyc2VkX2FyZ3MgPSBydW5fd2Via2l0X3Rlc3RzLnBhcnNlX2FyZ3Mo
WyctLXBpeGVsLXRlc3RzJywgJy0tbm8tbmV3LXRlc3QtcmVzdWx0cyddKQotICAgICAgICB0ZXN0
X3BvcnQgPSBDdXN0b21FeGl0Q29kZVBvcnQob3B0aW9ucz1vcHRpb25zKQorICAgICAgICB0ZXN0
X3BvcnQgPSBDdXN0b21FeGl0Q29kZVBvcnQoaG9zdCwgb3B0aW9ucz1vcHRpb25zKQogICAgICAg
ICByZXMsIG91dCwgZXJyLCBfID0gbG9nZ2luZ19ydW4oWyctLW5vLXNob3ctcmVzdWx0cycsCiAg
ICAgICAgICAgICAnZmFpbHVyZXMvZXhwZWN0ZWQvbWlzc2luZ19pbWFnZS5odG1sJywKICAgICAg
ICAgICAgICdmYWlsdXJlcy91bmV4cGVjdGVkL21pc3NpbmdfdGV4dC5odG1sJywKICAgICAgICAg
ICAgICdmYWlsdXJlcy91bmV4cGVjdGVkL3RleHQtaW1hZ2UtY2hlY2tzdW0uaHRtbCddLAotICAg
ICAgICAgICAgdGVzdHNfaW5jbHVkZWQ9VHJ1ZSwgZmlsZXN5c3RlbT1mcywgcmVjb3JkX3Jlc3Vs
dHM9VHJ1ZSwgcG9ydF9vYmo9dGVzdF9wb3J0KQorICAgICAgICAgICAgdGVzdHNfaW5jbHVkZWQ9
VHJ1ZSwgaG9zdD1ob3N0LCByZWNvcmRfcmVzdWx0cz1UcnVlLCBwb3J0X29iaj10ZXN0X3BvcnQp
CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHJlcywgMikKIAogICAgIGRlZiB0ZXN0X2NyYXNo
X3dpdGhfc3RkZXJyKHNlbGYpOgotICAgICAgICBmcyA9IHVuaXRfdGVzdF9maWxlc3lzdGVtKCkK
KyAgICAgICAgaG9zdCA9IE1vY2tIb3N0KCkKICAgICAgICAgcmVzLCBidWlsZGJvdF9vdXRwdXQs
IHJlZ3VsYXJfb3V0cHV0LCB1c2VyID0gbG9nZ2luZ19ydW4oWwogICAgICAgICAgICAgICAgICdm
YWlsdXJlcy91bmV4cGVjdGVkL2NyYXNoLXdpdGgtc3RkZXJyLmh0bWwnLAogICAgICAgICAgICAg
XSwKICAgICAgICAgICAgIHRlc3RzX2luY2x1ZGVkPVRydWUsCiAgICAgICAgICAgICByZWNvcmRf
cmVzdWx0cz1UcnVlLAotICAgICAgICAgICAgZmlsZXN5c3RlbT1mcykKLSAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKGZzLnJlYWRfdGV4dF9maWxlKCcvdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvZnVs
bF9yZXN1bHRzLmpzb24nKS5maW5kKCd7ImNyYXNoLXdpdGgtc3RkZXJyLmh0bWwiOnsiZXhwZWN0
ZWQiOiJQQVNTIiwiYWN0dWFsIjoiQ1JBU0giLCJoYXNfc3RkZXJyIjp0cnVlfX0nKSAhPSAtMSkK
KyAgICAgICAgICAgIGhvc3Q9aG9zdCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhvc3QuZmls
ZXN5c3RlbS5yZWFkX3RleHRfZmlsZSgnL3RtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2Z1bGxfcmVz
dWx0cy5qc29uJykuZmluZCgneyJjcmFzaC13aXRoLXN0ZGVyci5odG1sIjp7ImV4cGVjdGVkIjoi
UEFTUyIsImFjdHVhbCI6IkNSQVNIIiwiaGFzX3N0ZGVyciI6dHJ1ZX19JykgIT0gLTEpCiAKICAg
ICBkZWYgdGVzdF9ub19pbWFnZV9mYWlsdXJlX3dpdGhfaW1hZ2VfZGlmZihzZWxmKToKLSAgICAg
ICAgZnMgPSB1bml0X3Rlc3RfZmlsZXN5c3RlbSgpCisgICAgICAgIGhvc3QgPSBNb2NrSG9zdCgp
CiAgICAgICAgIHJlcywgYnVpbGRib3Rfb3V0cHV0LCByZWd1bGFyX291dHB1dCwgdXNlciA9IGxv
Z2dpbmdfcnVuKFsKICAgICAgICAgICAgICAgICAnZmFpbHVyZXMvdW5leHBlY3RlZC9jaGVja3N1
bS13aXRoLW1hdGNoaW5nLWltYWdlLmh0bWwnLAogICAgICAgICAgICAgXSwKICAgICAgICAgICAg
IHRlc3RzX2luY2x1ZGVkPVRydWUsCiAgICAgICAgICAgICByZWNvcmRfcmVzdWx0cz1UcnVlLAot
ICAgICAgICAgICAgZmlsZXN5c3RlbT1mcykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZzLnJl
YWRfdGV4dF9maWxlKCcvdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvZnVsbF9yZXN1bHRzLmpzb24n
KS5maW5kKCcibnVtX3JlZ3Jlc3Npb25zIjowJykgIT0gLTEpCisgICAgICAgICAgICBob3N0PWhv
c3QpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShob3N0LmZpbGVzeXN0ZW0ucmVhZF90ZXh0X2Zp
bGUoJy90bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9mdWxsX3Jlc3VsdHMuanNvbicpLmZpbmQoJyJu
dW1fcmVncmVzc2lvbnMiOjAnKSAhPSAtMSkKIAogICAgIGRlZiB0ZXN0X2NyYXNoX2xvZyhzZWxm
KToKICAgICAgICAgbW9ja19jcmFzaF9yZXBvcnQgPSBtYWtlX21vY2tfY3Jhc2hfcmVwb3J0X2Rh
cndpbignRHVtcFJlbmRlclRyZWUnLCAxMjM0NSkKLSAgICAgICAgZnMgPSB1bml0X3Rlc3RfZmls
ZXN5c3RlbSgpCi0gICAgICAgIGZzLndyaXRlX3RleHRfZmlsZSgnL1VzZXJzL21vY2svTGlicmFy
eS9Mb2dzL0RpYWdub3N0aWNSZXBvcnRzL0R1bXBSZW5kZXJUcmVlXzIwMTEtMDYtMTMtMTUwNzE5
X3F1YWR6ZW4uY3Jhc2gnLCBtb2NrX2NyYXNoX3JlcG9ydCkKKyAgICAgICAgaG9zdCA9IE1vY2tI
b3N0KCkKKyAgICAgICAgaG9zdC5maWxlc3lzdGVtLndyaXRlX3RleHRfZmlsZSgnL1VzZXJzL21v
Y2svTGlicmFyeS9Mb2dzL0RpYWdub3N0aWNSZXBvcnRzL0R1bXBSZW5kZXJUcmVlXzIwMTEtMDYt
MTMtMTUwNzE5X3F1YWR6ZW4uY3Jhc2gnLCBtb2NrX2NyYXNoX3JlcG9ydCkKICAgICAgICAgcmVz
LCBidWlsZGJvdF9vdXRwdXQsIHJlZ3VsYXJfb3V0cHV0LCB1c2VyID0gbG9nZ2luZ19ydW4oWwog
ICAgICAgICAgICAgICAgICdmYWlsdXJlcy91bmV4cGVjdGVkL2NyYXNoLXdpdGgtc3RkZXJyLmh0
bWwnLAogICAgICAgICAgICAgXSwKICAgICAgICAgICAgIHRlc3RzX2luY2x1ZGVkPVRydWUsCiAg
ICAgICAgICAgICByZWNvcmRfcmVzdWx0cz1UcnVlLAotICAgICAgICAgICAgZmlsZXN5c3RlbT1m
cykKKyAgICAgICAgICAgIGhvc3Q9aG9zdCkKICAgICAgICAgZXhwZWN0ZWRfY3Jhc2hfbG9nID0g
bW9ja19jcmFzaF9yZXBvcnQKICAgICAgICAgIyBDdXJyZW50bHkgQ3Jhc2hMb2cgdXBsb2FkaW5n
IG9ubHkgd29ya3Mgb24gRGFyd2luLgogICAgICAgICBpZiBzeXMucGxhdGZvcm0gIT0gImRhcndp
biI6CiAgICAgICAgICAgICBleHBlY3RlZF9jcmFzaF9sb2cgPSAibW9jay1zdGQtZXJyb3Itb3V0
cHV0IgotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhmcy5yZWFkX3RleHRfZmlsZSgnL3RtcC9s
YXlvdXQtdGVzdC1yZXN1bHRzL2ZhaWx1cmVzL3VuZXhwZWN0ZWQvY3Jhc2gtd2l0aC1zdGRlcnIt
Y3Jhc2gtbG9nLnR4dCcpLCBleHBlY3RlZF9jcmFzaF9sb2cpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWxzKGhvc3QuZmlsZXN5c3RlbS5yZWFkX3RleHRfZmlsZSgnL3RtcC9sYXlvdXQtdGVzdC1y
ZXN1bHRzL2ZhaWx1cmVzL3VuZXhwZWN0ZWQvY3Jhc2gtd2l0aC1zdGRlcnItY3Jhc2gtbG9nLnR4
dCcpLCBleHBlY3RlZF9jcmFzaF9sb2cpCiAKICAgICBkZWYgdGVzdF93ZWJfcHJvY2Vzc19jcmFz
aF9sb2coc2VsZik6CiAgICAgICAgIG1vY2tfY3Jhc2hfcmVwb3J0ID0gbWFrZV9tb2NrX2NyYXNo
X3JlcG9ydF9kYXJ3aW4oJ1dlYlByb2Nlc3MnLCAxMjM0NSkKLSAgICAgICAgZnMgPSB1bml0X3Rl
c3RfZmlsZXN5c3RlbSgpCi0gICAgICAgIGZzLndyaXRlX3RleHRfZmlsZSgnL1VzZXJzL21vY2sv
TGlicmFyeS9Mb2dzL0RpYWdub3N0aWNSZXBvcnRzL1dlYlByb2Nlc3NfMjAxMS0wNi0xMy0xNTA3
MTlfcXVhZHplbi5jcmFzaCcsIG1vY2tfY3Jhc2hfcmVwb3J0KQorICAgICAgICBob3N0ID0gTW9j
a0hvc3QoKQorICAgICAgICBob3N0LmZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9maWxlKCcvVXNlcnMv
bW9jay9MaWJyYXJ5L0xvZ3MvRGlhZ25vc3RpY1JlcG9ydHMvV2ViUHJvY2Vzc18yMDExLTA2LTEz
LTE1MDcxOV9xdWFkemVuLmNyYXNoJywgbW9ja19jcmFzaF9yZXBvcnQpCiAgICAgICAgIHJlcywg
YnVpbGRib3Rfb3V0cHV0LCByZWd1bGFyX291dHB1dCwgdXNlciA9IGxvZ2dpbmdfcnVuKFsKICAg
ICAgICAgICAgICAgICAnZmFpbHVyZXMvdW5leHBlY3RlZC93ZWItcHJvY2Vzcy1jcmFzaC13aXRo
LXN0ZGVyci5odG1sJywKICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICB0ZXN0c19pbmNsdWRl
ZD1UcnVlLAogICAgICAgICAgICAgcmVjb3JkX3Jlc3VsdHM9VHJ1ZSwKLSAgICAgICAgICAgIGZp
bGVzeXN0ZW09ZnMpCisgICAgICAgICAgICBob3N0PWhvc3QpCiAgICAgICAgIGV4cGVjdGVkX2Ny
YXNoX2xvZyA9IG1vY2tfY3Jhc2hfcmVwb3J0CiAgICAgICAgICMgQ3VycmVudGx5IENyYXNoTG9n
IHVwbG9hZGluZyBvbmx5IHdvcmtzIG9uIERhcndpbi4KICAgICAgICAgaWYgc3lzLnBsYXRmb3Jt
ICE9ICJkYXJ3aW4iOgogICAgICAgICAgICAgZXhwZWN0ZWRfY3Jhc2hfbG9nID0gIm1vY2stc3Rk
LWVycm9yLW91dHB1dCIKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZnMucmVhZF90ZXh0X2Zp
bGUoJy90bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9mYWlsdXJlcy91bmV4cGVjdGVkL3dlYi1wcm9j
ZXNzLWNyYXNoLXdpdGgtc3RkZXJyLWNyYXNoLWxvZy50eHQnKSwgZXhwZWN0ZWRfY3Jhc2hfbG9n
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhob3N0LmZpbGVzeXN0ZW0ucmVhZF90ZXh0X2Zp
bGUoJy90bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9mYWlsdXJlcy91bmV4cGVjdGVkL3dlYi1wcm9j
ZXNzLWNyYXNoLXdpdGgtc3RkZXJyLWNyYXNoLWxvZy50eHQnKSwgZXhwZWN0ZWRfY3Jhc2hfbG9n
KQogCiAgICAgZGVmIHRlc3RfZXhpdF9hZnRlcl9uX2ZhaWx1cmVzX3VwbG9hZChzZWxmKToKLSAg
ICAgICAgZnMgPSB1bml0X3Rlc3RfZmlsZXN5c3RlbSgpCisgICAgICAgIGhvc3QgPSBNb2NrSG9z
dCgpCiAgICAgICAgIHJlcywgYnVpbGRib3Rfb3V0cHV0LCByZWd1bGFyX291dHB1dCwgdXNlciA9
IGxvZ2dpbmdfcnVuKFsKICAgICAgICAgICAgICAgICAnZmFpbHVyZXMvdW5leHBlY3RlZC90ZXh0
LWltYWdlLWNoZWNrc3VtLmh0bWwnLAogICAgICAgICAgICAgICAgICdwYXNzZXMvdGV4dC5odG1s
JywKQEAgLTUzNSw4ICs1MzAsOCBAQCBjbGFzcyBNYWluVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6
CiAgICAgICAgICAgICBdLAogICAgICAgICAgICAgdGVzdHNfaW5jbHVkZWQ9VHJ1ZSwKICAgICAg
ICAgICAgIHJlY29yZF9yZXN1bHRzPVRydWUsCi0gICAgICAgICAgICBmaWxlc3lzdGVtPWZzKQot
ICAgICAgICBzZWxmLmFzc2VydFRydWUoJy90bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9pbmNyZW1l
bnRhbF9yZXN1bHRzLmpzb24nIGluIGZzLmZpbGVzKQorICAgICAgICAgICAgaG9zdD1ob3N0KQor
ICAgICAgICBzZWxmLmFzc2VydFRydWUoJy90bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9pbmNyZW1l
bnRhbF9yZXN1bHRzLmpzb24nIGluIGhvc3QuZmlsZXN5c3RlbS5maWxlcykKIAogICAgIGRlZiB0
ZXN0X2V4aXRfYWZ0ZXJfbl9mYWlsdXJlcyhzZWxmKToKICAgICAgICAgIyBVbmV4cGVjdGVkIGZh
aWx1cmVzIHNob3VsZCByZXN1bHQgaW4gdGVzdHMgc3RvcHBpbmcuCkBAIC02MDUsMTEgKzYwMCwx
MSBAQCBjbGFzcyBNYWluVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICMgV2UgcnVu
IGEgY29uZmlndXJhdGlvbiB0aGF0IHNob3VsZCBmYWlsLCB0byBnZW5lcmF0ZSBvdXRwdXQsIHRo
ZW4KICAgICAgICAgIyBsb29rIGZvciB3aGF0IHRoZSBvdXRwdXQgcmVzdWx0cyB1cmwgd2FzLgog
Ci0gICAgICAgIGZzID0gdW5pdF90ZXN0X2ZpbGVzeXN0ZW0oKQotICAgICAgICB3aXRoIGZzLm1r
ZHRlbXAoKSBhcyB0bXBkaXI6CisgICAgICAgIGhvc3QgPSBNb2NrSG9zdCgpCisgICAgICAgIHdp
dGggaG9zdC5maWxlc3lzdGVtLm1rZHRlbXAoKSBhcyB0bXBkaXI6CiAgICAgICAgICAgICByZXMs
IG91dCwgZXJyLCB1c2VyID0gbG9nZ2luZ19ydW4oWyctLXJlc3VsdHMtZGlyZWN0b3J5PScgKyBz
dHIodG1wZGlyKV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdGVzdHNfaW5jbHVkZWQ9VHJ1ZSwgZmlsZXN5c3RlbT1mcykKLSAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwodXNlci5vcGVuZWRfdXJscywgW2ZzLmpvaW4odG1wZGlyLCAncmVzdWx0cy5o
dG1sJyldKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRl
c3RzX2luY2x1ZGVkPVRydWUsIGhvc3Q9aG9zdCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwodXNlci5vcGVuZWRfdXJscywgW2hvc3QuZmlsZXN5c3RlbS5qb2luKHRtcGRpciwgJ3Jlc3Vs
dHMuaHRtbCcpXSkKIAogICAgIGRlZiB0ZXN0X3Jlc3VsdHNfZGlyZWN0b3J5X2RlZmF1bHQoc2Vs
Zik6CiAgICAgICAgICMgV2UgcnVuIGEgY29uZmlndXJhdGlvbiB0aGF0IHNob3VsZCBmYWlsLCB0
byBnZW5lcmF0ZSBvdXRwdXQsIHRoZW4KQEAgLTYyMiwxNyArNjE3LDE3IEBAIGNsYXNzIE1haW5U
ZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9yZXN1bHRzX2RpcmVjdG9yeV9y
ZWxhdGl2ZShzZWxmKToKICAgICAgICAgIyBXZSBydW4gYSBjb25maWd1cmF0aW9uIHRoYXQgc2hv
dWxkIGZhaWwsIHRvIGdlbmVyYXRlIG91dHB1dCwgdGhlbgogICAgICAgICAjIGxvb2sgZm9yIHdo
YXQgdGhlIG91dHB1dCByZXN1bHRzIHVybCB3YXMuCi0gICAgICAgIGZzID0gdW5pdF90ZXN0X2Zp
bGVzeXN0ZW0oKQotICAgICAgICBmcy5tYXliZV9tYWtlX2RpcmVjdG9yeSgnL3RtcC9jd2QnKQot
ICAgICAgICBmcy5jaGRpcignL3RtcC9jd2QnKQorICAgICAgICBob3N0ID0gTW9ja0hvc3QoKQor
ICAgICAgICBob3N0LmZpbGVzeXN0ZW0ubWF5YmVfbWFrZV9kaXJlY3RvcnkoJy90bXAvY3dkJykK
KyAgICAgICAgaG9zdC5maWxlc3lzdGVtLmNoZGlyKCcvdG1wL2N3ZCcpCiAgICAgICAgIHJlcywg
b3V0LCBlcnIsIHVzZXIgPSBsb2dnaW5nX3J1bihbJy0tcmVzdWx0cy1kaXJlY3Rvcnk9Zm9vJ10s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0c19pbmNsdWRl
ZD1UcnVlLCBmaWxlc3lzdGVtPWZzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdGVzdHNfaW5jbHVkZWQ9VHJ1ZSwgaG9zdD1ob3N0KQogICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHVzZXIub3BlbmVkX3VybHMsIFsnL3RtcC9jd2QvZm9vL3Jlc3VsdHMuaHRtbCdd
KQogCiAgICAgZGVmIHRlc3RfcmV0cmllc19kaXJlY3Rvcnkoc2VsZik6Ci0gICAgICAgIGZzID0g
dW5pdF90ZXN0X2ZpbGVzeXN0ZW0oKQotICAgICAgICByZXMsIG91dCwgZXJyLCB1c2VyID0gbG9n
Z2luZ19ydW4odGVzdHNfaW5jbHVkZWQ9VHJ1ZSwgZmlsZXN5c3RlbT1mcykKLSAgICAgICAgc2Vs
Zi5hc3NlcnRUcnVlKCcvdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvcmV0cmllcy90ZXN0c19ydW4w
LnR4dCcgaW4gZnMuZmlsZXMpCisgICAgICAgIGhvc3QgPSBNb2NrSG9zdCgpCisgICAgICAgIHJl
cywgb3V0LCBlcnIsIHVzZXIgPSBsb2dnaW5nX3J1bih0ZXN0c19pbmNsdWRlZD1UcnVlLCBob3N0
PWhvc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShob3N0LmZpbGVzeXN0ZW0uZXhpc3RzKCcv
dG1wL2xheW91dC10ZXN0LXJlc3VsdHMvcmV0cmllcy90ZXN0c19ydW4wLnR4dCcpKQogCiAgICAg
IyBUaGVzZSBuZXh0IHRlc3RzIHRlc3QgdGhhdCB3ZSBydW4gdGhlIHRlc3RzIGluIGFzY2VuZGlu
ZyBhbHBoYWJldGljYWwKICAgICAjIG9yZGVyIHBlciBkaXJlY3RvcnkuIEhUVFAgdGVzdHMgYXJl
IHNoYXJkZWQgc2VwYXJhdGVseSBmcm9tIG90aGVyIHRlc3RzLApAQCAtNjU5LDcgKzY1NCw4IEBA
IGNsYXNzIE1haW5UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgICAgICBkZWYgZ2V0X3Bv
cnRfZm9yX3J1bihhcmdzKToKICAgICAgICAgICAgIG9wdGlvbnMsIHBhcnNlZF9hcmdzID0gcnVu
X3dlYmtpdF90ZXN0cy5wYXJzZV9hcmdzKGFyZ3MpCi0gICAgICAgICAgICB0ZXN0X3BvcnQgPSBJ
bWFnZURpZmZUZXN0UG9ydChvcHRpb25zPW9wdGlvbnMpCisgICAgICAgICAgICBob3N0ID0gTW9j
a0hvc3QoKQorICAgICAgICAgICAgdGVzdF9wb3J0ID0gSW1hZ2VEaWZmVGVzdFBvcnQoaG9zdCwg
b3B0aW9ucz1vcHRpb25zKQogICAgICAgICAgICAgcmVzID0gcGFzc2luZ19ydW4oYXJncywgcG9y
dF9vYmo9dGVzdF9wb3J0LCB0ZXN0c19pbmNsdWRlZD1UcnVlKQogICAgICAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKHJlcykKICAgICAgICAgICAgIHJldHVybiB0ZXN0X3BvcnQKQEAgLTcyNCwxMSAr
NzIwLDkgQEAgY2xhc3MgTWFpblRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBzZWxm
LmFzc2VydEVxdWFscyhbJ3Bhc3Nlcy9taXNtYXRjaC5odG1sJywgJ3Bhc3Nlcy9taXNtYXRjaC1l
eHBlY3RlZC1taXNtYXRjaC5odG1sJ10sIHRlc3RzX3J1bikKIAogICAgIGRlZiB0ZXN0X3JlZnRl
c3Rfc2hvdWxkX25vdF91c2VfbmFtaW5nX2NvbnZlbnRpb25faWZfbm90X2xpc3RlZF9pbl9yZWZ0
ZXN0bGlzdChzZWxmKToKLSAgICAgICAgZnMgPSB1bml0X3Rlc3RfZmlsZXN5c3RlbSgpCi0gICAg
ICAgIHJlcywgb3V0LCBlcnIsIF8gPSBsb2dnaW5nX3J1bihbJy0tbm8tc2hvdy1yZXN1bHRzJywg
J3JlZnRlc3RzL2Zvby8nXSwgdGVzdHNfaW5jbHVkZWQ9VHJ1ZSwgZmlsZXN5c3RlbT1mcywgcmVj
b3JkX3Jlc3VsdHM9VHJ1ZSkKLSAgICAgICAgZmlsZV9saXN0ID0gZnMud3JpdHRlbl9maWxlcy5r
ZXlzKCkKLSAgICAgICAgZmlsZV9saXN0LnJlbW92ZSgnL3RtcC9sYXlvdXQtdGVzdC1yZXN1bHRz
L3Rlc3RzX3J1bjAudHh0JykKLSAgICAgICAganNvbl9zdHJpbmcgPSBmcy5yZWFkX3RleHRfZmls
ZSgnL3RtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2Z1bGxfcmVzdWx0cy5qc29uJykKKyAgICAgICAg
aG9zdCA9IE1vY2tIb3N0KCkKKyAgICAgICAgcmVzLCBvdXQsIGVyciwgXyA9IGxvZ2dpbmdfcnVu
KFsnLS1uby1zaG93LXJlc3VsdHMnLCAncmVmdGVzdHMvZm9vLyddLCB0ZXN0c19pbmNsdWRlZD1U
cnVlLCBob3N0PWhvc3QsIHJlY29yZF9yZXN1bHRzPVRydWUpCisgICAgICAgIGpzb25fc3RyaW5n
ID0gaG9zdC5maWxlc3lzdGVtLnJlYWRfdGV4dF9maWxlKCcvdG1wL2xheW91dC10ZXN0LXJlc3Vs
dHMvZnVsbF9yZXN1bHRzLmpzb24nKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoanNvbl9zdHJp
bmcuZmluZCgnInVubGlzdGVkdGVzdC5odG1sIjp7ImV4cGVjdGVkIjoiUEFTUyIsImlzX21pc3Np
bmdfdGV4dCI6dHJ1ZSwiYWN0dWFsIjoiTUlTU0lORyIsImlzX21pc3NpbmdfaW1hZ2UiOnRydWV9
JykgIT0gLTEpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShqc29uX3N0cmluZy5maW5kKCcibnVt
X3JlZ3Jlc3Npb25zIjo0JykgIT0gLTEpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShqc29uX3N0
cmluZy5maW5kKCcibnVtX2ZsYWt5IjowJykgIT0gLTEpCkBAIC03NzQsMTEgKzc2OCwxMSBAQCBj
bGFzcyBFbmRUb0VuZFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICByZXR1cm4gY29t
cHJlc3NlZF9yZXN1bHRzCiAKICAgICBkZWYgdGVzdF9lbmRfdG9fZW5kKHNlbGYpOgotICAgICAg
ICBmcyA9IHVuaXRfdGVzdF9maWxlc3lzdGVtKCkKLSAgICAgICAgcmVzLCBvdXQsIGVyciwgdXNl
ciA9IGxvZ2dpbmdfcnVuKHJlY29yZF9yZXN1bHRzPVRydWUsIHRlc3RzX2luY2x1ZGVkPVRydWUs
IGZpbGVzeXN0ZW09ZnMpCisgICAgICAgIGhvc3QgPSBNb2NrSG9zdCgpCisgICAgICAgIHJlcywg
b3V0LCBlcnIsIHVzZXIgPSBsb2dnaW5nX3J1bihyZWNvcmRfcmVzdWx0cz1UcnVlLCB0ZXN0c19p
bmNsdWRlZD1UcnVlLCBob3N0PWhvc3QpCiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocmVz
LCB1bmV4cGVjdGVkX3Rlc3RzX2NvdW50KQotICAgICAgICByZXN1bHRzID0gc2VsZi5wYXJzZV9m
dWxsX3Jlc3VsdHMoZnMuZmlsZXNbJy90bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9mdWxsX3Jlc3Vs
dHMuanNvbiddKQorICAgICAgICByZXN1bHRzID0gc2VsZi5wYXJzZV9mdWxsX3Jlc3VsdHMoaG9z
dC5maWxlc3lzdGVtLnJlYWRfdGV4dF9maWxlKCcvdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvZnVs
bF9yZXN1bHRzLmpzb24nKSkKIAogICAgICAgICAjIENoZWNrIHRvIGVuc3VyZSB3ZSdyZSBwYXNz
aW5nIGJhY2sgaW1hZ2UgZGlmZiAlYWdlIGNvcnJlY3RseS4KICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbHMocmVzdWx0c1sndGVzdHMnXVsnZmFpbHVyZXMnXVsnZXhwZWN0ZWQnXVsnaW1hZ2UuaHRt
bCddWydpbWFnZV9kaWZmX3BlcmNlbnQnXSwgMSkKQEAgLTc4OSwxMSArNzgzLDExIEBAIGNsYXNz
IEVuZFRvRW5kVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfcmVmdGVzdF93
aXRoX3R3b19ub3RyZWZzKHNlbGYpOgogICAgICAgICAjIFRlc3QgdGhhdCB3ZSB1cGRhdGUgZXhw
ZWN0YXRpb25zIGluIHBsYWNlLiBJZiB0aGUgZXhwZWN0YXRpb24KICAgICAgICAgIyBpcyBtaXNz
aW5nLCB1cGRhdGUgdGhlIGV4cGVjdGVkIGdlbmVyaWMgbG9jYXRpb24uCi0gICAgICAgIGZzID0g
dW5pdF90ZXN0X2ZpbGVzeXN0ZW0oKQotICAgICAgICByZXMsIG91dCwgZXJyLCBfID0gbG9nZ2lu
Z19ydW4oWyctLW5vLXNob3ctcmVzdWx0cycsICdyZWZ0ZXN0cy9mb28vJ10sIHRlc3RzX2luY2x1
ZGVkPVRydWUsIGZpbGVzeXN0ZW09ZnMsIHJlY29yZF9yZXN1bHRzPVRydWUpCi0gICAgICAgIGZp
bGVfbGlzdCA9IGZzLndyaXR0ZW5fZmlsZXMua2V5cygpCisgICAgICAgIGhvc3QgPSBNb2NrSG9z
dCgpCisgICAgICAgIHJlcywgb3V0LCBlcnIsIF8gPSBsb2dnaW5nX3J1bihbJy0tbm8tc2hvdy1y
ZXN1bHRzJywgJ3JlZnRlc3RzL2Zvby8nXSwgdGVzdHNfaW5jbHVkZWQ9VHJ1ZSwgaG9zdD1ob3N0
LCByZWNvcmRfcmVzdWx0cz1UcnVlKQorICAgICAgICBmaWxlX2xpc3QgPSBob3N0LmZpbGVzeXN0
ZW0ud3JpdHRlbl9maWxlcy5rZXlzKCkKICAgICAgICAgZmlsZV9saXN0LnJlbW92ZSgnL3RtcC9s
YXlvdXQtdGVzdC1yZXN1bHRzL3Rlc3RzX3J1bjAudHh0JykKLSAgICAgICAganNvbl9zdHJpbmcg
PSBmcy5yZWFkX3RleHRfZmlsZSgnL3RtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2Z1bGxfcmVzdWx0
cy5qc29uJykKKyAgICAgICAganNvbl9zdHJpbmcgPSBob3N0LmZpbGVzeXN0ZW0ucmVhZF90ZXh0
X2ZpbGUoJy90bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9mdWxsX3Jlc3VsdHMuanNvbicpCiAgICAg
ICAgIGpzb24gPSBzZWxmLnBhcnNlX2Z1bGxfcmVzdWx0cyhqc29uX3N0cmluZykKICAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKCJtdWx0aXBsZS1tYXRjaC1zdWNjZXNzLmh0bWwiIG5vdCBpbiBqc29u
WyJ0ZXN0cyJdWyJyZWZ0ZXN0cyJdWyJmb28iXSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCJt
dWx0aXBsZS1taXNtYXRjaC1zdWNjZXNzLmh0bWwiIG5vdCBpbiBqc29uWyJ0ZXN0cyJdWyJyZWZ0
ZXN0cyJdWyJmb28iXSkKQEAgLTgyMSwxMyArODE1LDEzIEBAIGNsYXNzIFJlYmFzZWxpbmVUZXN0
KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9yZXNldF9yZXN1bHRzKHNlbGYpOgog
ICAgICAgICAjIFRlc3QgdGhhdCB3ZSB1cGRhdGUgZXhwZWN0YXRpb25zIGluIHBsYWNlLiBJZiB0
aGUgZXhwZWN0YXRpb24KICAgICAgICAgIyBpcyBtaXNzaW5nLCB1cGRhdGUgdGhlIGV4cGVjdGVk
IGdlbmVyaWMgbG9jYXRpb24uCi0gICAgICAgIGZzID0gdW5pdF90ZXN0X2ZpbGVzeXN0ZW0oKQor
ICAgICAgICBob3N0ID0gTW9ja0hvc3QoKQogICAgICAgICByZXMsIG91dCwgZXJyLCBfID0gbG9n
Z2luZ19ydW4oWyctLXBpeGVsLXRlc3RzJywKICAgICAgICAgICAgICAgICAgICAgICAgICctLXJl
c2V0LXJlc3VsdHMnLAogICAgICAgICAgICAgICAgICAgICAgICAgJ3Bhc3Nlcy9pbWFnZS5odG1s
JywKICAgICAgICAgICAgICAgICAgICAgICAgICdmYWlsdXJlcy9leHBlY3RlZC9taXNzaW5nX2lt
YWdlLmh0bWwnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RzX2luY2x1ZGVkPVRydWUs
IGZpbGVzeXN0ZW09ZnMsIG5ld19yZXN1bHRzPVRydWUpCi0gICAgICAgIGZpbGVfbGlzdCA9IGZz
LndyaXR0ZW5fZmlsZXMua2V5cygpCisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0c19pbmNs
dWRlZD1UcnVlLCBob3N0PWhvc3QsIG5ld19yZXN1bHRzPVRydWUpCisgICAgICAgIGZpbGVfbGlz
dCA9IGhvc3QuZmlsZXN5c3RlbS53cml0dGVuX2ZpbGVzLmtleXMoKQogICAgICAgICBmaWxlX2xp
c3QucmVtb3ZlKCcvdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvdGVzdHNfcnVuMC50eHQnKQogICAg
ICAgICBzZWxmLmFzc2VydEVxdWFscyhyZXMsIDApCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShv
dXQuZW1wdHkoKSkKQEAgLTgzOCwxNCArODMyLDE0IEBAIGNsYXNzIFJlYmFzZWxpbmVUZXN0KHVu
aXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9taXNzaW5nX3Jlc3VsdHMoc2VsZik6CiAg
ICAgICAgICMgVGVzdCB0aGF0IHdlIHVwZGF0ZSBleHBlY3RhdGlvbnMgaW4gcGxhY2UuIElmIHRo
ZSBleHBlY3RhdGlvbgogICAgICAgICAjIGlzIG1pc3NpbmcsIHVwZGF0ZSB0aGUgZXhwZWN0ZWQg
Z2VuZXJpYyBsb2NhdGlvbi4KLSAgICAgICAgZnMgPSB1bml0X3Rlc3RfZmlsZXN5c3RlbSgpCisg
ICAgICAgIGhvc3QgPSBNb2NrSG9zdCgpCiAgICAgICAgIHJlcywgb3V0LCBlcnIsIF8gPSBsb2dn
aW5nX3J1bihbJy0tbm8tc2hvdy1yZXN1bHRzJywKICAgICAgICAgICAgICAgICAgICAgICdmYWls
dXJlcy91bmV4cGVjdGVkL21pc3NpbmdfdGV4dC5odG1sJywKICAgICAgICAgICAgICAgICAgICAg
ICdmYWlsdXJlcy91bmV4cGVjdGVkL21pc3NpbmdfaW1hZ2UuaHRtbCcsCiAgICAgICAgICAgICAg
ICAgICAgICAnZmFpbHVyZXMvdW5leHBlY3RlZC9taXNzaW5nX2F1ZGlvLmh0bWwnLAogICAgICAg
ICAgICAgICAgICAgICAgJ2ZhaWx1cmVzL3VuZXhwZWN0ZWQvbWlzc2luZ19yZW5kZXJfdHJlZV9k
dW1wLmh0bWwnXSwKLSAgICAgICAgICAgICAgICAgICAgIHRlc3RzX2luY2x1ZGVkPVRydWUsIGZp
bGVzeXN0ZW09ZnMsIG5ld19yZXN1bHRzPVRydWUpCi0gICAgICAgIGZpbGVfbGlzdCA9IGZzLndy
aXR0ZW5fZmlsZXMua2V5cygpCisgICAgICAgICAgICAgICAgICAgICB0ZXN0c19pbmNsdWRlZD1U
cnVlLCBob3N0PWhvc3QsIG5ld19yZXN1bHRzPVRydWUpCisgICAgICAgIGZpbGVfbGlzdCA9IGhv
c3QuZmlsZXN5c3RlbS53cml0dGVuX2ZpbGVzLmtleXMoKQogICAgICAgICBmaWxlX2xpc3QucmVt
b3ZlKCcvdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvdGVzdHNfcnVuMC50eHQnKQogICAgICAgICBz
ZWxmLmFzc2VydEVxdWFscyhyZXMsIDApCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3V0LmVt
cHR5KCkpCkBAIC04NTcsMTMgKzg1MSwxMyBAQCBjbGFzcyBSZWJhc2VsaW5lVGVzdCh1bml0dGVz
dC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfbmV3X2Jhc2VsaW5lKHNlbGYpOgogICAgICAgICAj
IFRlc3QgdGhhdCB3ZSB1cGRhdGUgdGhlIHBsYXRmb3JtIGV4cGVjdGF0aW9ucy4gSWYgdGhlIGV4
cGVjdGF0aW9uCiAgICAgICAgICMgaXMgbXNzaW5nLCB0aGVuIGNyZWF0ZSBhIG5ldyBleHBlY3Rh
dGlvbiBpbiB0aGUgcGxhdGZvcm0gZGlyLgotICAgICAgICBmcyA9IHVuaXRfdGVzdF9maWxlc3lz
dGVtKCkKKyAgICAgICAgaG9zdCA9IE1vY2tIb3N0KCkKICAgICAgICAgcmVzLCBvdXQsIGVyciwg
XyA9IGxvZ2dpbmdfcnVuKFsnLS1waXhlbC10ZXN0cycsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAnLS1uZXctYmFzZWxpbmUnLAogICAgICAgICAgICAgICAgICAgICAgICAgJ3Bhc3Nlcy9pbWFn
ZS5odG1sJywKICAgICAgICAgICAgICAgICAgICAgICAgICdmYWlsdXJlcy9leHBlY3RlZC9taXNz
aW5nX2ltYWdlLmh0bWwnXSwKLSAgICAgICAgICAgICAgICAgICAgdGVzdHNfaW5jbHVkZWQ9VHJ1
ZSwgZmlsZXN5c3RlbT1mcywgbmV3X3Jlc3VsdHM9VHJ1ZSkKLSAgICAgICAgZmlsZV9saXN0ID0g
ZnMud3JpdHRlbl9maWxlcy5rZXlzKCkKKyAgICAgICAgICAgICAgICAgICAgdGVzdHNfaW5jbHVk
ZWQ9VHJ1ZSwgaG9zdD1ob3N0LCBuZXdfcmVzdWx0cz1UcnVlKQorICAgICAgICBmaWxlX2xpc3Qg
PSBob3N0LmZpbGVzeXN0ZW0ud3JpdHRlbl9maWxlcy5rZXlzKCkKICAgICAgICAgZmlsZV9saXN0
LnJlbW92ZSgnL3RtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL3Rlc3RzX3J1bjAudHh0JykKICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbHMocmVzLCAwKQogICAgICAgICBzZWxmLmFzc2VydFRydWUob3V0
LmVtcHR5KCkpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3RvX2JlX21vdmVk
L3JlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS90b19iZV9tb3ZlZC9yZWJhc2VsaW5lX2Nocm9taXVtX3dlYmtpdF90ZXN0cy5weQppbmRl
eCBjMmIxMGM0MzU3MzQ5ZWI3MDJlOGU3MzgwMWM5ZWNkYjcwZGJjMDEyLi44MjI4ZDQzODFiYTEw
YzM1YmI5OTM2ZGFkOTZlZjg5ZjQ5ODhmNDU3IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L3RvX2JlX21vdmVkL3JlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzLnB5Cisr
KyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9fYmVfbW92ZWQvcmViYXNlbGluZV9jaHJvbWl1
bV93ZWJraXRfdGVzdHMucHkKQEAgLTE0NSw3ICsxNDUsNyBAQCBjbGFzcyBSZWJhc2VsaW5lcihv
YmplY3QpOgogCiAgICAgUkVWSVNJT05fUkVHRVggPSByJzxhIGhyZWY9XCIoXGQrKS9cIj4nCiAK
LSAgICBkZWYgX19pbml0X18oc2VsZiwgcnVubmluZ19wb3J0LCB0YXJnZXRfcG9ydCwgcGxhdGZv
cm0sIG9wdGlvbnMsIHVybF9mZXRjaGVyLCB6aXBfZmFjdG9yeSwgc2NtLCBsb2dnZWRfYmVmb3Jl
PUZhbHNlKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgaG9zdCwgcnVubmluZ19wb3J0LCB0YXJn
ZXRfcG9ydCwgcGxhdGZvcm0sIG9wdGlvbnMsIHVybF9mZXRjaGVyLCB6aXBfZmFjdG9yeSwgbG9n
Z2VkX2JlZm9yZT1GYWxzZSk6CiAgICAgICAgICIiIgogICAgICAgICBBcmdzOgogICAgICAgICAg
ICAgcnVubmluZ19wb3J0OiB0aGUgUG9ydCB0aGUgc2NyaXB0IGlzIHJ1bm5pbmcgb24uCkBAIC0x
NjIsMTIgKzE2MiwxMCBAQCBjbGFzcyBSZWJhc2VsaW5lcihvYmplY3QpOgogICAgICAgICBzZWxm
Ll9wbGF0Zm9ybSA9IHBsYXRmb3JtCiAgICAgICAgIHNlbGYuX29wdGlvbnMgPSBvcHRpb25zCiAg
ICAgICAgIHNlbGYuX3BvcnQgPSBydW5uaW5nX3BvcnQKLSAgICAgICAgc2VsZi5fZmlsZXN5c3Rl
bSA9IHJ1bm5pbmdfcG9ydC5fZmlsZXN5c3RlbQorICAgICAgICBzZWxmLl9maWxlc3lzdGVtID0g
aG9zdC5maWxlc3lzdGVtCiAgICAgICAgIHNlbGYuX3RhcmdldF9wb3J0ID0gdGFyZ2V0X3BvcnQK
IAotICAgICAgICAjIEZJWE1FOiBUaGlzIHNob3VsZCBnZXQgaXRzIFBvcnRGYWN0b3J5IGZyb20g
YSBIb3N0IG9iamVjdC4KLSAgICAgICAgIyBOb3RlOiB1c2luZyBydW5uaW5nX3BvcnQuZXhlY3V0
aXZlLCBydW5uaW5nX3BvcnQudXNlciBzaW5jZSB3ZSBjYW4ndCBnZXQgdGhlbSBmcm9tIGEgaG9z
dC4KLSAgICAgICAgc2VsZi5fcmViYXNlbGluZV9wb3J0ID0gUG9ydEZhY3RvcnkoKS5nZXQocGxh
dGZvcm0sIG9wdGlvbnMsIGZpbGVzeXN0ZW09c2VsZi5fZmlsZXN5c3RlbSwgZXhlY3V0aXZlPXJ1
bm5pbmdfcG9ydC5leGVjdXRpdmUsIHVzZXI9cnVubmluZ19wb3J0LnVzZXIpCisgICAgICAgIHNl
bGYuX3JlYmFzZWxpbmVfcG9ydCA9IGhvc3QucG9ydF9mYWN0b3J5LmdldChwbGF0Zm9ybSwgb3B0
aW9ucykKICAgICAgICAgc2VsZi5fcmViYXNlbGluaW5nX3Rlc3RzID0gc2V0KCkKICAgICAgICAg
c2VsZi5fcmViYXNlbGluZWRfdGVzdHMgPSBbXQogICAgICAgICBzZWxmLl9sb2dnZWRfYmVmb3Jl
ID0gbG9nZ2VkX2JlZm9yZQpAQCAtMTgyLDcgKzE4MCw3IEBAIGNsYXNzIFJlYmFzZWxpbmVyKG9i
amVjdCk6CiAgICAgICAgICAgICBzZWxmLl9yZWJhc2VsaW5lX3BvcnQsIE5vbmUsIGV4cGVjdGF0
aW9uc19zdHIsIHNlbGYuX3JlYmFzZWxpbmVfcG9ydC50ZXN0X2NvbmZpZ3VyYXRpb24oKSwgRmFs
c2UpCiAgICAgICAgIHNlbGYuX3VybF9mZXRjaGVyID0gdXJsX2ZldGNoZXIKICAgICAgICAgc2Vs
Zi5femlwX2ZhY3RvcnkgPSB6aXBfZmFjdG9yeQotICAgICAgICBzZWxmLl9zY20gPSBzY20KKyAg
ICAgICAgc2VsZi5fc2NtID0gaG9zdC5zY20oKQogCiAgICAgZGVmIHJ1bihzZWxmKToKICAgICAg
ICAgIiIiUnVuIHJlYmFzZWxpbmUgcHJvY2Vzcy4iIiIKQEAgLTk0OCw3ICs5NDYsNyBAQCBkZWYg
bWFpbihhcmdzKToKICAgICBpZiBub3QgaG9zdF9wb3J0X29iaiBvciBub3QgdGFyZ2V0X3BvcnRf
b2JqOgogICAgICAgICByZXR1cm4gMQogCi0gICAgdXJsX2ZldGNoZXIgPSB1cmxmZXRjaGVyLlVy
bEZldGNoZXIoaG9zdF9wb3J0X29iai5fZmlsZXN5c3RlbSkKKyAgICB1cmxfZmV0Y2hlciA9IHVy
bGZldGNoZXIuVXJsRmV0Y2hlcihob3N0LmZpbGVzeXN0ZW0pCiAKICAgICAjIFdlIHVzZSB0aGUg
ZGVmYXVsdCB6aXAgZmFjdG9yeSBtZXRob2QuCiAgICAgemlwX2ZhY3RvcnkgPSBOb25lCkBAIC05
NTYsNyArOTU0LDcgQEAgZGVmIG1haW4oYXJncyk6CiAgICAgIyBGSVhNRTogU0NNIG1vZHVsZSBk
b2Vzbid0IGhhbmRsZSBwYXRocyB0aGF0IGFyZW4ndCByZWxhdGl2ZSB0byB0aGUgY2hlY2tvdXRf
cm9vdCBjb25zaXN0ZW50bHkuCiAgICAgaG9zdF9wb3J0X29iai5fZmlsZXN5c3RlbS5jaGRpciho
b3N0LnNjbSgpLmNoZWNrb3V0X3Jvb3QpCiAKLSAgICByZXRfY29kZSA9IHJlYWxfbWFpbihvcHRp
b25zLCB0YXJnZXRfb3B0aW9ucywgaG9zdF9wb3J0X29iaiwgdGFyZ2V0X3BvcnRfb2JqLCB1cmxf
ZmV0Y2hlciwgemlwX2ZhY3RvcnksIGhvc3Quc2NtKCkpCisgICAgcmV0X2NvZGUgPSByZWFsX21h
aW4oaG9zdCwgb3B0aW9ucywgdGFyZ2V0X29wdGlvbnMsIGhvc3RfcG9ydF9vYmosIHRhcmdldF9w
b3J0X29iaiwgdXJsX2ZldGNoZXIsIHppcF9mYWN0b3J5KQogICAgIGlmIG5vdCByZXRfY29kZSBh
bmQgbG9nX2hhbmRsZXIubnVtX2ZhaWx1cmVzOgogICAgICAgICByZXRfY29kZSA9IDEKICAgICBw
cmludCAnJwpAQCAtOTY3LDEzICs5NjUsMTQgQEAgZGVmIG1haW4oYXJncyk6CiAgICAgcmV0dXJu
IHJldF9jb2RlCiAKIAotZGVmIHJlYWxfbWFpbihvcHRpb25zLCB0YXJnZXRfb3B0aW9ucywgaG9z
dF9wb3J0X29iaiwgdGFyZ2V0X3BvcnRfb2JqLCB1cmxfZmV0Y2hlciwgemlwX2ZhY3RvcnksIHNj
bV9vYmopOgorZGVmIHJlYWxfbWFpbihob3N0LCBvcHRpb25zLCB0YXJnZXRfb3B0aW9ucywgaG9z
dF9wb3J0X29iaiwgdGFyZ2V0X3BvcnRfb2JqLCB1cmxfZmV0Y2hlciwgemlwX2ZhY3RvcnkpOgog
ICAgICIiIk1haW4gZnVuY3Rpb24gdG8gcHJvZHVjZSBuZXcgYmFzZWxpbmVzLiBUaGUgUmViYXNl
bGluZXIgb2JqZWN0IHVzZXMgdHdvCiAgICAgZGlmZmVyZW50IFBvcnQgb2JqZWN0cyAtIG9uZSB0
byByZXByZXNlbnQgdGhlIG1hY2hpbmUgdGhlIG9iamVjdCBpcyBydW5uaW5nCiAgICAgb24sIGFu
ZCBvbmUgdG8gcmVwcmVzZW50IHRoZSBwb3J0IHdob3NlIGV4cGVjdGF0aW9ucyBhcmUgYmVpbmcg
dXBkYXRlZC4KICAgICBFLmcuLCB5b3UgY2FuIHJ1biB0aGUgc2NyaXB0IG9uIGEgbWFjIGFuZCBy
ZWJhc2VsaW5lIHRoZSAnd2luJyBwb3J0LgogCiAgICAgQXJnczoKKyAgICAgICAgaG9zdDogSG9z
dCBvYmplY3QKICAgICAgICAgb3B0aW9uczogY29tbWFuZC1saW5lIGFyZ3VtZW50IHVzZWQgZm9y
IHRoZSBob3N0X3BvcnRfb2JqIChzZWUgYmVsb3cpCiAgICAgICAgIHRhcmdldF9vcHRpb25zOiBj
b21tYW5kX2xpbmUgYXJndW1lbnQgdXNlZCBmb3IgdGhlIHRhcmdldF9wb3J0X29iai4KICAgICAg
ICAgICAgIFRoaXMgb2JqZWN0IG1heSBoYXZlIHNsaWdodGx5IGRpZmZlcmVudCB2YWx1ZXMgdGhh
biB8b3B0aW9uc3wuCkBAIC05ODYsNyArOTg1LDYgQEAgZGVmIHJlYWxfbWFpbihvcHRpb25zLCB0
YXJnZXRfb3B0aW9ucywgaG9zdF9wb3J0X29iaiwgdGFyZ2V0X3BvcnRfb2JqLCB1cmxfZmV0Y2gK
ICAgICAgICAgdXJsX2ZldGNoZXI6IG9iamVjdCB1c2VkIHRvIGRvd25sb2FkIHRoZSBidWlsZCBh
cmNoaXZlcyBmcm9tIHRoZSBib3RzCiAgICAgICAgIHppcF9mYWN0b3J5OiBmYWN0b3J5IGZ1bmN0
aW9uIHVzZWQgdG8gY3JlYXRlIHppcCBmaWxlIG9iamVjdHMgZm9yCiAgICAgICAgICAgICB0aGUg
YXJjaGl2ZXMuCi0gICAgICAgIHNjbV9vYmo6IG9iamVjdCB1c2VkIHRvIGFkZCBuZXcgYmFzZWxp
bmVzIHRvIHRoZSBzb3VyY2UgY29udHJvbCBzeXN0ZW0uCiAgICAgIiIiCiAgICAgb3B0aW9ucy5o
dG1sX2RpcmVjdG9yeSA9IHNldHVwX2h0bWxfZGlyZWN0b3J5KGhvc3RfcG9ydF9vYmouX2ZpbGVz
eXN0ZW0sIG9wdGlvbnMuaHRtbF9kaXJlY3RvcnkpCiAgICAgYWxsX3BsYXRmb3JtcyA9IHRhcmdl
dF9wb3J0X29iai5hbGxfYmFzZWxpbmVfdmFyaWFudHMoKQpAQCAtMTAxMiw5ICsxMDEwLDkgQEAg
ZGVmIHJlYWxfbWFpbihvcHRpb25zLCB0YXJnZXRfb3B0aW9ucywgaG9zdF9wb3J0X29iaiwgdGFy
Z2V0X3BvcnRfb2JqLCB1cmxfZmV0Y2gKICAgICByZWJhc2VsaW5lZF90ZXN0cyA9IHNldCgpCiAg
ICAgbG9nZ2VkX2JlZm9yZSA9IEZhbHNlCiAgICAgZm9yIHBsYXRmb3JtIGluIHJlYmFzZWxpbmVf
cGxhdGZvcm1zOgotICAgICAgICByZWJhc2VsaW5lciA9IFJlYmFzZWxpbmVyKGhvc3RfcG9ydF9v
YmosIHRhcmdldF9wb3J0X29iaiwKKyAgICAgICAgcmViYXNlbGluZXIgPSBSZWJhc2VsaW5lciho
b3N0LCBob3N0X3BvcnRfb2JqLCB0YXJnZXRfcG9ydF9vYmosCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcGxhdGZvcm0sIG9wdGlvbnMsIHVybF9mZXRjaGVyLCB6aXBfZmFjdG9y
eSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY21fb2JqLCBsb2dnZWRfYmVm
b3JlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlZF9iZWZvcmUpCiAK
ICAgICAgICAgX2xvZy5kZWJ1ZygnJykKICAgICAgICAgbG9nX2Rhc2hlZF9zdHJpbmcoJ1JlYmFz
ZWxpbmUgc3RhcnRlZCcsIHBsYXRmb3JtKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS90b19iZV9tb3ZlZC9yZWJhc2VsaW5lX2Nocm9taXVtX3dlYmtpdF90ZXN0c191bml0dGVz
dC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9fYmVfbW92ZWQvcmViYXNlbGluZV9jaHJv
bWl1bV93ZWJraXRfdGVzdHNfdW5pdHRlc3QucHkKaW5kZXggZjNkOTM1NDA1YTZiN2QzYTdiZDFj
MDIxYTA0YmI2NGJmZWVlZmM5MC4uNTY0ZmRkZGYxYTg5MTg2OTkzNzlmNDU4OWQ3NmM5OTM0YmNj
NWU0NyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b19iZV9tb3ZlZC9yZWJh
c2VsaW5lX2Nocm9taXVtX3dlYmtpdF90ZXN0c191bml0dGVzdC5weQorKysgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3RvX2JlX21vdmVkL3JlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3Rz
X3VuaXR0ZXN0LnB5CkBAIC0zOSwxMCArMzksNyBAQCBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0
ZW0gaW1wb3J0IHppcGZpbGVzZXRfbW9jawogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtIGlt
cG9ydCBvdXRwdXRjYXB0dXJlCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZl
IGltcG9ydCBFeGVjdXRpdmUsIFNjcmlwdEVycm9yCiAKLWZyb20gd2Via2l0cHkuY29tbW9uLmNo
ZWNrb3V0LnNjbS5zY21fbW9jayBpbXBvcnQgTW9ja1NDTQotCiBmcm9tIHdlYmtpdHB5LmxheW91
dF90ZXN0cyBpbXBvcnQgcG9ydAotZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC50ZXN0
IGltcG9ydCB1bml0X3Rlc3RfZmlsZXN5c3RlbQogZnJvbSB3ZWJraXRweS50b19iZV9tb3ZlZCBp
bXBvcnQgcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHMKIAogCkBAIC03OSwxMCArNzYs
OSBAQCBkZWYgdGVzdF9vcHRpb25zKCk6CiBkZWYgdGVzdF9ob3N0X3BvcnRfYW5kX2ZpbGVzeXN0
ZW0ob3B0aW9ucywgZXhwZWN0YXRpb25zKToKICAgICBob3N0ID0gTW9ja0hvc3QoKQogICAgIGhv
c3RfcG9ydF9vYmogPSBob3N0LnBvcnRfZmFjdG9yeS5nZXQoJ3Rlc3QnLCBvcHRpb25zKQotCiAg
ICAgZXhwZWN0YXRpb25zX3BhdGggPSBob3N0X3BvcnRfb2JqLnBhdGhfdG9fdGVzdF9leHBlY3Rh
dGlvbnNfZmlsZSgpCi0gICAgaG9zdF9wb3J0X29iai5maWxlc3lzdGVtLndyaXRlX3RleHRfZmls
ZShleHBlY3RhdGlvbnNfcGF0aCwgZXhwZWN0YXRpb25zKQotICAgIHJldHVybiAoaG9zdF9wb3J0
X29iaiwgaG9zdF9wb3J0X29iai5maWxlc3lzdGVtKQorICAgIGhvc3QuZmlsZXN5c3RlbS53cml0
ZV90ZXh0X2ZpbGUoZXhwZWN0YXRpb25zX3BhdGgsIGV4cGVjdGF0aW9ucykKKyAgICByZXR1cm4g
KGhvc3QsIGhvc3RfcG9ydF9vYmosIGhvc3QuZmlsZXN5c3RlbSkKIAogCiBkZWYgdGVzdF91cmxf
ZmV0Y2hlcihmaWxlc3lzdGVtKToKQEAgLTIwNSwyNCArMjAxLDIxIEBAIGNsYXNzIFRlc3RSZWJh
c2VsaW5lcih1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgbWFrZV9yZWJhc2VsaW5lcihz
ZWxmLCBleHBlY3RhdGlvbnMpOgogICAgICAgICBvcHRpb25zID0gdGVzdF9vcHRpb25zKCkKLSAg
ICAgICAgaG9zdF9wb3J0X29iaiwgZmlsZXN5c3RlbSA9IHRlc3RfaG9zdF9wb3J0X2FuZF9maWxl
c3lzdGVtKG9wdGlvbnMsIGV4cGVjdGF0aW9ucykKKyAgICAgICAgaG9zdCwgaG9zdF9wb3J0X29i
aiwgZmlsZXN5c3RlbSA9IHRlc3RfaG9zdF9wb3J0X2FuZF9maWxlc3lzdGVtKG9wdGlvbnMsIGV4
cGVjdGF0aW9ucykKIAogICAgICAgICB0YXJnZXRfb3B0aW9ucyA9IG9wdGlvbnMKLSAgICAgICAg
aG9zdCA9IE1vY2tIb3N0KCkKLSAgICAgICAgdGFyZ2V0X3BvcnRfb2JqID0gaG9zdC5wb3J0X2Zh
Y3RvcnkuZ2V0KCd0ZXN0JywgdGFyZ2V0X29wdGlvbnMsIGZpbGVzeXN0ZW09ZmlsZXN5c3RlbSkK
LSAgICAgICAgdGFyZ2V0X3BvcnRfb2JqLl9leHBlY3RhdGlvbnMgPSBleHBlY3RhdGlvbnMKKyAg
ICAgICAgdGFyZ2V0X3BvcnRfb2JqID0gaG9zdC5wb3J0X2ZhY3RvcnkuZ2V0KCd0ZXN0JywgdGFy
Z2V0X29wdGlvbnMpCiAgICAgICAgIHBsYXRmb3JtID0gdGFyZ2V0X3BvcnRfb2JqLm5hbWUoKQog
CiAgICAgICAgIHVybF9mZXRjaGVyID0gdGVzdF91cmxfZmV0Y2hlcihmaWxlc3lzdGVtKQogICAg
ICAgICB6aXBfZmFjdG9yeSA9IHRlc3RfemlwX2ZhY3RvcnkoKQotICAgICAgICBtb2NrX3NjbSA9
IE1vY2tTQ00oZmlsZXN5c3RlbSkKLSAgICAgICAgZmlsZXN5c3RlbS5tYXliZV9tYWtlX2RpcmVj
dG9yeShtb2NrX3NjbS5jaGVja291dF9yb290KQorICAgICAgICBmaWxlc3lzdGVtLm1heWJlX21h
a2VfZGlyZWN0b3J5KGhvc3Quc2NtKCkuY2hlY2tvdXRfcm9vdCkKIAogICAgICAgICAjIEZJWE1F
OiBTQ00gbW9kdWxlIGRvZXNuJ3QgaGFuZGxlIHBhdGhzIHRoYXQgYXJlbid0IHJlbGF0aXZlIHRv
IHRoZSBjaGVja291dF9yb290IGNvbnNpc3RlbnRseS4KICAgICAgICAgZmlsZXN5c3RlbS5jaGRp
cigiL3Rlc3QuY2hlY2tvdXQiKQogCi0gICAgICAgIHJlYmFzZWxpbmVyID0gcmViYXNlbGluZV9j
aHJvbWl1bV93ZWJraXRfdGVzdHMuUmViYXNlbGluZXIoaG9zdF9wb3J0X29iaiwKLSAgICAgICAg
ICAgIHRhcmdldF9wb3J0X29iaiwgcGxhdGZvcm0sIG9wdGlvbnMsIHVybF9mZXRjaGVyLCB6aXBf
ZmFjdG9yeSwgbW9ja19zY20pCisgICAgICAgIHJlYmFzZWxpbmVyID0gcmViYXNlbGluZV9jaHJv
bWl1bV93ZWJraXRfdGVzdHMuUmViYXNlbGluZXIoaG9zdCwgaG9zdF9wb3J0X29iaiwKKyAgICAg
ICAgICAgIHRhcmdldF9wb3J0X29iaiwgcGxhdGZvcm0sIG9wdGlvbnMsIHVybF9mZXRjaGVyLCB6
aXBfZmFjdG9yeSkKICAgICAgICAgcmV0dXJuIHJlYmFzZWxpbmVyLCBmaWxlc3lzdGVtCiAKICAg
ICBkZWYgdGVzdF9ub29wKHNlbGYpOgpAQCAtMzUwLDE5ICszNDMsMTcgQEAgY2xhc3MgVGVzdFJl
YWxNYWluKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgZXhwZWN0YXRpb25zID0gIkJVR1gg
UkVCQVNFTElORSA6IGZhaWx1cmVzL2V4cGVjdGVkL2ltYWdlLmh0bWwgPSBJTUFHRSIKIAogICAg
ICAgICBvcHRpb25zID0gdGVzdF9vcHRpb25zKCkKLSAgICAgICAgaG9zdF9wb3J0X29iaiwgZmls
ZXN5c3RlbSA9IHRlc3RfaG9zdF9wb3J0X2FuZF9maWxlc3lzdGVtKG9wdGlvbnMsIGV4cGVjdGF0
aW9ucykKKyAgICAgICAgaG9zdCwgaG9zdF9wb3J0X29iaiwgZmlsZXN5c3RlbSA9IHRlc3RfaG9z
dF9wb3J0X2FuZF9maWxlc3lzdGVtKG9wdGlvbnMsIGV4cGVjdGF0aW9ucykKICAgICAgICAgdXJs
X2ZldGNoZXIgPSB0ZXN0X3VybF9mZXRjaGVyKGZpbGVzeXN0ZW0pCiAgICAgICAgIHppcF9mYWN0
b3J5ID0gdGVzdF96aXBfZmFjdG9yeSgpCi0gICAgICAgIG1vY2tfc2NtID0gTW9ja1NDTSgpCi0g
ICAgICAgIGZpbGVzeXN0ZW0ubWF5YmVfbWFrZV9kaXJlY3RvcnkobW9ja19zY20uY2hlY2tvdXRf
cm9vdCkKIAogICAgICAgICAjIEZJWE1FOiBTQ00gbW9kdWxlIGRvZXNuJ3QgaGFuZGxlIHBhdGhz
IHRoYXQgYXJlbid0IHJlbGF0aXZlIHRvIHRoZSBjaGVja291dF9yb290IGNvbnNpc3RlbnRseS4K
ICAgICAgICAgZmlsZXN5c3RlbS5jaGRpcigiL3Rlc3QuY2hlY2tvdXQiKQogCiAgICAgICAgIG9j
ID0gb3V0cHV0Y2FwdHVyZS5PdXRwdXRDYXB0dXJlKCkKICAgICAgICAgb2MuY2FwdHVyZV9vdXRw
dXQoKQotICAgICAgICByZXMgPSByZWJhc2VsaW5lX2Nocm9taXVtX3dlYmtpdF90ZXN0cy5yZWFs
X21haW4ob3B0aW9ucywgb3B0aW9ucywKLSAgICAgICAgICAgIGhvc3RfcG9ydF9vYmosIGhvc3Rf
cG9ydF9vYmosIHVybF9mZXRjaGVyLCB6aXBfZmFjdG9yeSwgbW9ja19zY20pCisgICAgICAgIHJl
cyA9IHJlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzLnJlYWxfbWFpbihob3N0LCBvcHRp
b25zLCBvcHRpb25zLAorICAgICAgICAgICAgaG9zdF9wb3J0X29iaiwgaG9zdF9wb3J0X29iaiwg
dXJsX2ZldGNoZXIsIHppcF9mYWN0b3J5KQogICAgICAgICBvYy5yZXN0b3JlX291dHB1dCgpCiAK
ICAgICAgICAgIyBXZSBleHBlY3QgdG8gaGF2ZSB3cml0dGVuIDM4IGZpbGVzIG92ZXIgdGhlIGNv
dXJzZSBvZiB0aGlzIHJlYmFzZWxpbmU6CkBAIC0zODIsNyArMzczLDExIEBAIGNsYXNzIFRlc3RI
dG1sR2VuZXJhdG9yKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgbWFrZV9nZW5lcmF0b3Io
c2VsZiwgZmlsZXMsIHRlc3RzKToKICAgICAgICAgb3B0aW9ucyA9IE1vY2tPcHRpb25zKGNvbmZp
Z3VyYXRpb249Tm9uZSwgaHRtbF9kaXJlY3Rvcnk9Jy90bXAnKQogICAgICAgICBob3N0ID0gTW9j
a0hvc3QoKQotICAgICAgICBob3N0X3BvcnQgPSBob3N0LnBvcnRfZmFjdG9yeS5nZXQoJ3Rlc3Qn
LCBvcHRpb25zLCBmaWxlc3lzdGVtPXVuaXRfdGVzdF9maWxlc3lzdGVtKGZpbGVzKSkKKyAgICAg
ICAgZnMgPSBob3N0LmZpbGVzeXN0ZW0KKyAgICAgICAgZm9yIGZpbGVuYW1lLCBjb250ZW50cyBp
biBmaWxlcy5pdGVyaXRlbXMoKToKKyAgICAgICAgICAgIGZzLm1heWJlX21ha2VfZGlyZWN0b3J5
KGZzLmRpcm5hbWUoZmlsZW5hbWUpKQorICAgICAgICAgICAgZnMud3JpdGVfYmluYXJ5X2ZpbGUo
ZmlsZW5hbWUsIGNvbnRlbnRzKQorICAgICAgICBob3N0X3BvcnQgPSBob3N0LnBvcnRfZmFjdG9y
eS5nZXQoJ3Rlc3QnLCBvcHRpb25zKQogICAgICAgICBnZW5lcmF0b3IgPSByZWJhc2VsaW5lX2No
cm9taXVtX3dlYmtpdF90ZXN0cy5IdG1sR2VuZXJhdG9yKGhvc3RfcG9ydCwKICAgICAgICAgICAg
IHRhcmdldF9wb3J0PU5vbmUsIG9wdGlvbnM9b3B0aW9ucywgcGxhdGZvcm1zPVsndGVzdC1tYWMt
bGVvcGFyZCddLCByZWJhc2VsaW5pbmdfdGVzdHM9dGVzdHMpCiAgICAgICAgIHJldHVybiBnZW5l
cmF0b3IsIGhvc3RfcG9ydAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119900</attachid>
            <date>2011-12-19 12:21:24 -0800</date>
            <delta_ts>2011-12-19 12:21:24 -0800</delta_ts>
            <desc>update w/ review feedback</desc>
            <filename>bug-74566-20111219122122.patch</filename>
            <type>text/plain</type>
            <size>44889</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAzMjUzCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYmM5MDJhYTg1YWJhMDk1NDI0NmQ1NzIzNWY4NTNiODU1
OThlZWM4Ni4uMDg2MTliOTNjNWE3NWZkYzhkYjg3MWJlOWFjZjYyMDcwZTgzNWM5MiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDYw
IEBACiAyMDExLTEyLTE5ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCisg
ICAgICAgIHdlYmtpdHB5OiBmaW5pc2ggcmVmYWN0b3JpbmcgcG9ydCBjbGFzc2VzIHRvIG1ha2Ug
YSBob3N0IG1hbmRhdG9yeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NzQ1NjYKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KKworICAg
ICAgICBUaGlzIGNoYW5nZSBtYWtlcyBhbGwgUG9ydCBvYmplY3RzIHRha2UgYSByZXF1aXJlZCAo
U3lzdGVtKUhvc3QKKyAgICAgICAgcGFyYW1ldGVyLCBhbmQgdXBkYXRlcyB0aGUgVGVzdFBvcnQg
b2JqZWN0IHRvIG5vIGxvbmdlciBjcmVhdGUgYQorICAgICAgICBtb2NrIGZpbGVzeXN0ZW0gb3Ig
YWRkIGZpbGVzIHRvIHRoZSBleGlzdGluZyBmaWxlc3lzdGVtIGJ5CisgICAgICAgIGRlZmF1bHQu
CisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHk6
CisgICAgICAgIChQb3J0Ll9faW5pdF9fKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L2ZhY3RvcnkucHk6CisgICAgICAgIChQb3J0RmFjdG9yeS5fX2luaXRf
Xyk6CisgICAgICAgIChQb3J0RmFjdG9yeS5fZ2V0X2t3YXJncyk6CisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0LnB5OgorICAgICAgICAoVGVzdEluc3Rh
bmNlLl9faW5pdF9fKToKKyAgICAgICAgKFRlc3RQb3J0Ll9faW5pdF9fKToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX2ludGVncmF0aW9u
dGVzdC5weToKKyAgICAgICAgKHBhc3NpbmdfcnVuKToKKyAgICAgICAgKGxvZ2dpbmdfcnVuKToK
KyAgICAgICAgKGdldF90ZXN0c19ydW4pOgorICAgICAgICAoTWFpblRlc3QudGVzdF9zaW5nbGVf
ZmlsZSk6CisgICAgICAgIChNYWluVGVzdC50ZXN0X3N0ZGVycl9pc19zYXZlZCk6CisgICAgICAg
IChNYWluVGVzdC50ZXN0X3Rlc3RfbGlzdCk6CisgICAgICAgIChNYWluVGVzdC50ZXN0X3Rlc3Rf
bGlzdF93aXRoX3ByZWZpeCk6CisgICAgICAgIChNYWluVGVzdC50ZXN0X21pc3NpbmdfYW5kX3Vu
ZXhwZWN0ZWRfcmVzdWx0cyk6CisgICAgICAgIChNYWluVGVzdC50ZXN0X21pc3NpbmdfYW5kX3Vu
ZXhwZWN0ZWRfcmVzdWx0c193aXRoX2N1c3RvbV9leGl0X2NvZGUpOgorICAgICAgICAoTWFpblRl
c3QudGVzdF9jcmFzaF93aXRoX3N0ZGVycik6CisgICAgICAgIChNYWluVGVzdC50ZXN0X25vX2lt
YWdlX2ZhaWx1cmVfd2l0aF9pbWFnZV9kaWZmKToKKyAgICAgICAgKE1haW5UZXN0LnRlc3RfY3Jh
c2hfbG9nKToKKyAgICAgICAgKE1haW5UZXN0LnRlc3Rfd2ViX3Byb2Nlc3NfY3Jhc2hfbG9nKToK
KyAgICAgICAgKE1haW5UZXN0LnRlc3RfZXhpdF9hZnRlcl9uX2ZhaWx1cmVzX3VwbG9hZCk6Cisg
ICAgICAgIChNYWluVGVzdC50ZXN0X3Jlc3VsdHNfZGlyZWN0b3J5X2Fic29sdXRlKToKKyAgICAg
ICAgKE1haW5UZXN0LnRlc3RfcmVzdWx0c19kaXJlY3RvcnlfcmVsYXRpdmUpOgorICAgICAgICAo
TWFpblRlc3QudGVzdF9yZXRyaWVzX2RpcmVjdG9yeSk6CisgICAgICAgIChNYWluVGVzdC50ZXN0
X3RvbGVyYW5jZS5nZXRfcG9ydF9mb3JfcnVuKToKKyAgICAgICAgKE1haW5UZXN0LnRlc3RfcmVm
dGVzdF9zaG91bGRfbm90X3VzZV9uYW1pbmdfY29udmVudGlvbl9pZl9ub3RfbGlzdGVkX2luX3Jl
ZnRlc3RsaXN0KToKKyAgICAgICAgKEVuZFRvRW5kVGVzdC50ZXN0X2VuZF90b19lbmQpOgorICAg
ICAgICAoRW5kVG9FbmRUZXN0LnRlc3RfcmVmdGVzdF93aXRoX3R3b19ub3RyZWZzKToKKyAgICAg
ICAgKFJlYmFzZWxpbmVUZXN0LnRlc3RfcmVzZXRfcmVzdWx0cyk6CisgICAgICAgIChSZWJhc2Vs
aW5lVGVzdC50ZXN0X21pc3NpbmdfcmVzdWx0cyk6CisgICAgICAgIChSZWJhc2VsaW5lVGVzdC50
ZXN0X25ld19iYXNlbGluZSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b19iZV9tb3Zl
ZC9yZWJhc2VsaW5lX2Nocm9taXVtX3dlYmtpdF90ZXN0cy5weToKKyAgICAgICAgKFJlYmFzZWxp
bmVyLl9faW5pdF9fKToKKyAgICAgICAgKG1haW4pOgorICAgICAgICAocmVhbF9tYWluKToKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3RvX2JlX21vdmVkL3JlYmFzZWxpbmVfY2hyb21pdW1f
d2Via2l0X3Rlc3RzX3VuaXR0ZXN0LnB5OgorICAgICAgICAodGVzdF9ob3N0X3BvcnRfYW5kX2Zp
bGVzeXN0ZW0pOgorICAgICAgICAoVGVzdFJlYmFzZWxpbmVyLm1ha2VfcmViYXNlbGluZXIpOgor
ICAgICAgICAoVGVzdFJlYWxNYWluLnRlc3RfYWxsX3BsYXRmb3Jtcyk6CisgICAgICAgIChUZXN0
SHRtbEdlbmVyYXRvci5tYWtlX2dlbmVyYXRvcik6CisKKzIwMTEtMTItMTkgIERpcmsgUHJhbmtl
ICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKICAgICAgICAgd2Via2l0cHk6IHVwZGF0ZSB1bml0
IHRlc3RzIGluIHByZXBhcmF0aW9uIGZvciBtYWtpbmcgaG9zdCBhIG1hbmRhdG9yeSBwYXJhbWV0
ZXIgdG8gUG9ydCBvYmplY3RzCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD03NDU2MgogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyX3dvcmtlcl9icm9rZXIucHkgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyX3dvcmtlcl9i
cm9rZXIucHkKaW5kZXggMGE0ZjJkMzEzNzU5M2FiZmI0YmQ2ZmRkOGFhZTJkMTBmMzdjNGM3Zi4u
OGM1Njk1YTJkZGIwMmRlYWM2NGNhYTNiYjJlYjhiNjEyMGU4MDM2ZCAxMDA3NTUKLS0tIGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlcl93b3Jr
ZXJfYnJva2VyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2Nv
bnRyb2xsZXJzL21hbmFnZXJfd29ya2VyX2Jyb2tlci5weQpAQCAtNDYsNiArNDYsNyBAQCBpbXBv
cnQgb3B0cGFyc2UKIGltcG9ydCBRdWV1ZQogaW1wb3J0IHN5cwogCisKICMgSGFuZGxlIFB5dGhv
biA8IDIuNiB3aGVyZSBtdWx0aXByb2Nlc3NpbmcgaXNuJ3QgYXZhaWxhYmxlLgogdHJ5OgogICAg
IGltcG9ydCBtdWx0aXByb2Nlc3NpbmcKQEAgLTU0LDYgKzU1LDcgQEAgZXhjZXB0IEltcG9ydEVy
cm9yOgogCiAjIFRoZXNlIGFyZSBuZWVkZWQgd2hlbiB3b3JrZXJzIGFyZSBsYXVuY2hlZCBpbiBu
ZXcgY2hpbGQgcHJvY2Vzc2VzLgogZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdCBpbXBvcnQgSG9z
dAorZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdF9tb2NrIGltcG9ydCBNb2NrSG9zdAogCiBmcm9t
IHdlYmtpdHB5LmxheW91dF90ZXN0cy5jb250cm9sbGVycyBpbXBvcnQgbWVzc2FnZV9icm9rZXIK
IGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnZpZXdzIGltcG9ydCBwcmludGluZwpAQCAtMjU3
LDcgKzI1OSwxMCBAQCBpZiBtdWx0aXByb2Nlc3Npbmc6CiAgICAgICAgICAgICAjIFdlIG5lZWQg
dG8gY3JlYXRlIGEgbmV3IEhvc3Qgb2JqZWN0IGhlcmUgYmVjYXVzZSB0aGlzIGlzCiAgICAgICAg
ICAgICAjIHJ1bm5pbmcgaW4gYSBuZXcgcHJvY2VzcyBhbmQgd2UgY2FuJ3QgcmVxdWlyZSB0aGUg
cGFyZW50J3MKICAgICAgICAgICAgICMgSG9zdCB0byBiZSBwaWNrbGVhYmxlIGFuZCBwYXNzZWQg
dG8gdGhlIGNoaWxkLgotICAgICAgICAgICAgaG9zdCA9IEhvc3QoKQorICAgICAgICAgICAgaWYg
c2VsZi5fcGxhdGZvcm1fbmFtZS5zdGFydHN3aXRoKCd0ZXN0Jyk6CisgICAgICAgICAgICAgICAg
aG9zdCA9IE1vY2tIb3N0KCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgaG9z
dCA9IEhvc3QoKQogICAgICAgICAgICAgaG9zdC5faW5pdGlhbGl6ZV9zY20oKQogCiAgICAgICAg
ICAgICBvcHRpb25zID0gc2VsZi5fb3B0aW9ucwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5CmluZGV4IDNkMTdiOTQ0MDUxOWJhZDBmZjdlOWQx
MzE3NjQzZTE1MWJhYTE0MDQuLmI5MmEwY2JlODIxZDg5Y2Y0ODYxNGM3MjU5ZDNhN2ViMzc4ZDVl
ODcgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
YmFzZS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jh
c2UucHkKQEAgLTUxLDYgKzUxLDcgQEAgZnJvbSB3ZWJraXRweS5jb21tb24gaW1wb3J0IGZpbmRf
ZmlsZXMKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQgbG9ndXRpbHMKIGZyb20g
d2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQgcGF0aAogZnJvbSB3ZWJraXRweS5jb21tb24u
c3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgU2NyaXB0RXJyb3IKK2Zyb20gd2Via2l0cHkuY29tbW9u
LnN5c3RlbS5zeXN0ZW1ob3N0IGltcG9ydCBTeXN0ZW1Ib3N0CiBmcm9tIHdlYmtpdHB5LmxheW91
dF90ZXN0cyBpbXBvcnQgcmVhZF9jaGVja3N1bV9mcm9tX3BuZwogZnJvbSB3ZWJraXRweS5sYXlv
dXRfdGVzdHMubW9kZWxzLnRlc3RfY29uZmlndXJhdGlvbiBpbXBvcnQgVGVzdENvbmZpZ3VyYXRp
b24KIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQgaW1wb3J0IGNvbmZpZyBhcyBwb3J0
X2NvbmZpZwpAQCAtMTEwLDkgKzExMSw5IEBAIGNsYXNzIFBvcnQob2JqZWN0KToKICAgICAgICAg
c2VsZi5ob3N0ID0gaG9zdAogCiAgICAgICAgICMgRklYTUU6IFJlbW92ZSB0aGVzIGFjY2Vzc29y
cyBvbmNlIGFsbCBjYWxsZXJzIGhhdmUgbW92ZWQgdG8gdXNpbmcgc2VsZi5ob3N0LgotICAgICAg
ICBzZWxmLmV4ZWN1dGl2ZSA9IGV4ZWN1dGl2ZSBvciBzZWxmLmhvc3QuZXhlY3V0aXZlCi0gICAg
ICAgIHNlbGYudXNlciA9IHVzZXIgb3Igc2VsZi5ob3N0LnVzZXIKLSAgICAgICAgc2VsZi5maWxl
c3lzdGVtID0gZmlsZXN5c3RlbSBvciBzZWxmLmhvc3QuZmlsZXN5c3RlbQorICAgICAgICBzZWxm
LmV4ZWN1dGl2ZSA9IHNlbGYuaG9zdC5leGVjdXRpdmUKKyAgICAgICAgc2VsZi51c2VyID0gc2Vs
Zi5ob3N0LnVzZXIKKyAgICAgICAgc2VsZi5maWxlc3lzdGVtID0gc2VsZi5ob3N0LmZpbGVzeXN0
ZW0KICAgICAgICAgc2VsZi5jb25maWcgPSBjb25maWcgb3IgcG9ydF9jb25maWcuQ29uZmlnKHNl
bGYuZXhlY3V0aXZlLCBzZWxmLmZpbGVzeXN0ZW0pCiAKICAgICAgICAgIyBGSVhNRTogUmVtb3Zl
IGFsbCBvZiB0aGUgb2xkICJwcm90ZWN0ZWQiIHZlcnNpb25zIHdoZW4gd2UgY2FuLgpkaWZmIC0t
Z2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlX3VuaXR0
ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlX3Vu
aXR0ZXN0LnB5CmluZGV4IDBlYTY0MjVmZGQ0NTJlYjIwYmZmYThjNTQ4MmJiMzQ4MmFlYjhkNDcu
LjAxOWM2M2FlY2M0NzcxNGFmZGI0NDM1OGYyN2JmNDZmMDZmZGYzOTIgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZV91bml0dGVzdC5weQor
KysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2VfdW5pdHRl
c3QucHkKQEAgLTUyLDcgKzUyLDcgQEAgY2xhc3MgUG9ydFRlc3QodW5pdHRlc3QuVGVzdENhc2Up
OgogICAgICAgICBob3N0ID0gTW9ja0hvc3QoKQogICAgICAgICBpZiBleGVjdXRpdmU6CiAgICAg
ICAgICAgICBob3N0LmV4ZWN1dGl2ZSA9IGV4ZWN1dGl2ZQotICAgICAgICByZXR1cm4gUG9ydCho
b3N0LCBleGVjdXRpdmU9ZXhlY3V0aXZlLCAqKmt3YXJncykKKyAgICAgICAgcmV0dXJuIFBvcnQo
aG9zdCwgKiprd2FyZ3MpCiAKICAgICBkZWYgdGVzdF9kZWZhdWx0X2NoaWxkX3Byb2Nlc3Nlcyhz
ZWxmKToKICAgICAgICAgcG9ydCA9IHNlbGYubWFrZV9wb3J0KCkKQEAgLTIyMCw3ICsyMjAsNiBA
QCBjbGFzcyBQb3J0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF90ZXN0
X2RpcnMoc2VsZik6CiAgICAgICAgIHBvcnQgPSBzZWxmLm1ha2VfcG9ydCgpCi0gICAgICAgICMg
RklYTUU6IENvbnNpZGVyIGFkZGluZyBhIGZpbGVzeXN0ZW0udG91Y2goKT8KICAgICAgICAgcG9y
dC5fZmlsZXN5c3RlbS53cml0ZV90ZXh0X2ZpbGUocG9ydC5sYXlvdXRfdGVzdHNfZGlyKCkgKyAn
L2NhbnZhcy90ZXN0JywgJycpCiAgICAgICAgIHBvcnQuX2ZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9m
aWxlKHBvcnQubGF5b3V0X3Rlc3RzX2RpcigpICsgJy9jc3MyLjEvdGVzdCcsICcnKQogICAgICAg
ICBkaXJzID0gcG9ydC50ZXN0X2RpcnMoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcG9ydC9mYWN0b3J5LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9mYWN0b3J5LnB5CmluZGV4IDlhNWVlNTZlMzA2MzE0YWQ4MWNk
ODljZjNlYTlkMWE5ZmU1ZDYzOTcuLjc2NzJkZTQ0YzY3OGIyN2Y2YTZmM2E5ODRmMjYwNTM3ODg1
ZTUzOGQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvZmFjdG9yeS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L2ZhY3RvcnkucHkKQEAgLTQyLDcgKzQyLDcgQEAgY2xhc3MgQnVpbGRlck9wdGlvbnMob2Jq
ZWN0KToKIAogCiBjbGFzcyBQb3J0RmFjdG9yeShvYmplY3QpOgotICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCBob3N0PU5vbmUpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0KToKICAgICAgICAg
c2VsZi5faG9zdCA9IGhvc3QKIAogICAgIGRlZiBfcG9ydF9uYW1lX2Zyb21fYXJndW1lbnRzX2Fu
ZF9vcHRpb25zKHNlbGYsICoqa3dhcmdzKToKQEAgLTY3LDIzICs2NywxMiBAQCBjbGFzcyBQb3J0
RmFjdG9yeShvYmplY3QpOgogICAgICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcign
dW5rbm93biBwb3J0OyBzeXMucGxhdGZvcm0gPSAiJXMiJyAlIHN5cy5wbGF0Zm9ybSkKICAgICAg
ICAgcmV0dXJuIHBvcnRfdG9fdXNlCiAKLSAgICBkZWYgX3NldF9kZWZhdWx0X292ZXJyaWRpbmdf
bm9uZShzZWxmLCBkaWN0aW9uYXJ5LCBrZXksIGRlZmF1bHQpOgotICAgICAgICAjIGRpY3Quc2V0
ZGVmYXVsdCBhbG1vc3Qgd29ya3MsIGJ1dCB3b24ndCBhY3R1YWxseSBvdmVycmlkZSBOb25lIHZh
bHVlcywgd2hpY2ggd2Ugd2FudC4KLSAgICAgICAgaWYgbm90IGRpY3Rpb25hcnkuZ2V0KGtleSk6
Ci0gICAgICAgICAgICBkaWN0aW9uYXJ5W2tleV0gPSBkZWZhdWx0Ci0gICAgICAgIHJldHVybiBk
aWN0aW9uYXJ5W2tleV0KLQotICAgIGRlZiBfZ2V0X2t3YXJncyhzZWxmLCBob3N0PU5vbmUsICoq
a3dhcmdzKToKKyAgICBkZWYgX2dldF9rd2FyZ3Moc2VsZiwgKiprd2FyZ3MpOgogICAgICAgICBw
b3J0X3RvX3VzZSA9IHNlbGYuX3BvcnRfbmFtZV9mcm9tX2FyZ3VtZW50c19hbmRfb3B0aW9ucygq
Kmt3YXJncykKIAogICAgICAgICBpZiBwb3J0X3RvX3VzZS5zdGFydHN3aXRoKCd0ZXN0Jyk6CiAg
ICAgICAgICAgICBpbXBvcnQgdGVzdAogICAgICAgICAgICAgbWFrZXIgPSB0ZXN0LlRlc3RQb3J0
Ci0gICAgICAgICAgICAjIEZJWE1FOiBUaGlzIGlzIGEgaGFjayB0byBvdmVycmlkZSB0aGUgImRl
ZmF1bHQiIGZpbGVzeXN0ZW0KLSAgICAgICAgICAgICMgcHJvdmlkZWQgdG8gdGhlIHBvcnQuICBU
aGUgdW5pdF90ZXN0X2ZpbGVzeXN0ZW0gaGFzIGFuIGV4dHJhCi0gICAgICAgICAgICAjIF90ZXN0
cyBhdHRyaWJ1dGUgd2hpY2ggYSBidW5jaCBvZiB1bml0dGVzdHMgZGVwZW5kIG9uLgotICAgICAg
ICAgICAgZnJvbSAudGVzdCBpbXBvcnQgdW5pdF90ZXN0X2ZpbGVzeXN0ZW0KLSAgICAgICAgICAg
IHNlbGYuX3NldF9kZWZhdWx0X292ZXJyaWRpbmdfbm9uZShrd2FyZ3MsICdmaWxlc3lzdGVtJywg
dW5pdF90ZXN0X2ZpbGVzeXN0ZW0oKSkKICAgICAgICAgZWxpZiBwb3J0X3RvX3VzZS5zdGFydHN3
aXRoKCdkcnlydW4nKToKICAgICAgICAgICAgIGltcG9ydCBkcnlydW4KICAgICAgICAgICAgIG1h
a2VyID0gZHJ5cnVuLkRyeVJ1blBvcnQKQEAgLTEyMyw4ICsxMTIsNyBAQCBjbGFzcyBQb3J0RmFj
dG9yeShvYmplY3QpOgogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmFpc2UgTm90SW1wbGVt
ZW50ZWRFcnJvcigndW5zdXBwb3J0ZWQgcG9ydDogJXMnICUgcG9ydF90b191c2UpCiAKLSAgICAg
ICAgaG9zdCA9IGhvc3Qgb3Igc2VsZi5faG9zdAotICAgICAgICByZXR1cm4gbWFrZXIoaG9zdCwg
Kiprd2FyZ3MpCisgICAgICAgIHJldHVybiBtYWtlcihzZWxmLl9ob3N0LCAqKmt3YXJncykKIAog
ICAgIGRlZiBhbGxfcG9ydF9uYW1lcyhzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIGEgbGlzdCBv
ZiBhbGwgdmFsaWQsIGZ1bGx5LXNwZWNpZmllZCwgInJlYWwiIHBvcnQgbmFtZXMuCmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3QucHkgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3QucHkKaW5kZXggOGU0
NzI4ZDE2ZTYxN2ZhNGY4YjcyMTUyNTVlNTg3MTViMWU3ZTExMS4uOTVjOTJiZTFmNjFmNWQ0OWMy
ODZmNjNhZGE2MDE5NTkzM2EyNmQ4YyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvdGVzdC5weQpAQCAtNTUsNyArNTUsNyBAQCBjbGFzcyBUZXN0SW5z
dGFuY2Uob2JqZWN0KToKIAogICAgICAgICAjIFRoZSB2YWx1ZXMgb2YgZWFjaCBmaWVsZCBhcmUg
dHJlYXRlZCBhcyByYXcgYnl0ZSBzdHJpbmdzLiBUaGV5CiAgICAgICAgICMgd2lsbCBiZSBjb252
ZXJ0ZWQgdG8gdW5pY29kZSBzdHJpbmdzIHdoZXJlIGFwcHJvcHJpYXRlIHVzaW5nCi0gICAgICAg
ICMgTW9ja0ZpbGVTeXN0ZW0ucmVhZF90ZXh0X2ZpbGUoKS4KKyAgICAgICAgIyBGaWxlU3lzdGVt
LnJlYWRfdGV4dF9maWxlKCkuCiAgICAgICAgIHNlbGYuYWN0dWFsX3RleHQgPSBzZWxmLmJhc2Ug
KyAnLXR4dCcKICAgICAgICAgc2VsZi5hY3R1YWxfY2hlY2tzdW0gPSBzZWxmLmJhc2UgKyAnLWNo
ZWNrc3VtJwogCkBAIC0yOTksMTMgKzI5OSw2IEBAIFdPTlRGSVggU0tJUCA6IGZhaWx1cmVzL2V4
cGVjdGVkL2V4Y2VwdGlvbi5odG1sID0gQ1JBU0gKICAgICBmaWxlc3lzdGVtLmNsZWFyX3dyaXR0
ZW5fZmlsZXMoKQogCiAKLWRlZiB1bml0X3Rlc3RfZmlsZXN5c3RlbShmaWxlcz1Ob25lKToKLSAg
ICBmaWxlcyA9IGZpbGVzIG9yIHt9Ci0gICAgZnMgPSBNb2NrRmlsZVN5c3RlbShmaWxlcywgZGly
cz1zZXQoWycvbW9jay1jaGVja291dCddKSkgICMgTWFrZSBzdXJlIGF0IGxlYXN0IHRoZSBjaGVj
a291dF9yb290IGV4aXN0cyBhcyBhIGRpcmVjdG9yeS4KLSAgICBhZGRfdW5pdF90ZXN0c190b19t
b2NrX2ZpbGVzeXN0ZW0oZnMpCi0gICAgcmV0dXJuIGZzCi0KLQogY2xhc3MgVGVzdFBvcnQoUG9y
dCk6CiAgICAgIiIiVGVzdCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUG9ydCBpbnRlcmZhY2UuIiIi
CiAgICAgQUxMX0JBU0VMSU5FX1ZBUklBTlRTID0gKApAQCAtMzE0LDI2ICszMDcsMTUgQEAgY2xh
c3MgVGVzdFBvcnQoUG9ydCk6CiAgICAgICAgICd0ZXN0LWxpbnV4LXg4Nl82NCcsCiAgICAgKQog
Ci0gICAgZGVmIF9zZXRfZGVmYXVsdF9vdmVycmlkaW5nX25vbmUoc2VsZiwgZGljdGlvbmFyeSwg
a2V5LCBkZWZhdWx0KToKLSAgICAgICAgIyBkaWN0LnNldGRlZmF1bHQgYWxtb3N0IHdvcmtzLCBi
dXQgd29uJ3QgYWN0dWFsbHkgb3ZlcnJpZGUgTm9uZSB2YWx1ZXMsIHdoaWNoIHdlIHdhbnQuCi0g
ICAgICAgIGlmIG5vdCBkaWN0aW9uYXJ5LmdldChrZXkpOgotICAgICAgICAgICAgZGljdGlvbmFy
eVtrZXldID0gZGVmYXVsdAotICAgICAgICByZXR1cm4gZGljdGlvbmFyeVtrZXldCi0KLSAgICBk
ZWYgX19pbml0X18oc2VsZiwgaG9zdD1Ob25lLCBwb3J0X25hbWU9Tm9uZSwgKiprd2FyZ3MpOgor
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0LCBwb3J0X25hbWU9Tm9uZSwgKiprd2FyZ3MpOgog
ICAgICAgICBpZiBub3QgcG9ydF9uYW1lIG9yIHBvcnRfbmFtZSA9PSAndGVzdCc6CiAgICAgICAg
ICAgICBwb3J0X25hbWUgPSAndGVzdC1tYWMtbGVvcGFyZCcKIAotICAgICAgICAjIEZJWE1FOiB3
ZSBpbXBvcnQgdGhpcyBoZXJlIGluc3RlYWQgb2YgYXQgdGhlIHRvcC1sZXZlbCBpbiBvcmRlciB0
byBhdm9pZAotICAgICAgICAjIGEgY2lyY3VsYXIgaW1wb3J0LiBUaGlzIHNob3VsZCBiZSByZW1v
dmVkIHdoZW4gaG9zdCBiZWNvbWUgYSByZXF1aXJlZCBwYXJhbWV0ZXIuCi0gICAgICAgIGZyb20g
d2Via2l0cHkuY29tbW9uLmhvc3RfbW9jayBpbXBvcnQgTW9ja0hvc3QKLSAgICAgICAgaG9zdCA9
IGhvc3Qgb3IgTW9ja0hvc3QoKQotICAgICAgICBmaWxlc3lzdGVtID0gc2VsZi5fc2V0X2RlZmF1
bHRfb3ZlcnJpZGluZ19ub25lKGt3YXJncywgJ2ZpbGVzeXN0ZW0nLCB1bml0X3Rlc3RfZmlsZXN5
c3RlbSgpKQotCi0gICAgICAgIFBvcnQuX19pbml0X18oc2VsZiwgaG9zdCwgcG9ydF9uYW1lPXBv
cnRfbmFtZSwgKiprd2FyZ3MpCisgICAgICAgIHNlbGYuX3Rlc3RzID0gdW5pdF90ZXN0X2xpc3Qo
KQorICAgICAgICBzZWxmLl9leHBlY3RhdGlvbnNfcGF0aCA9IExBWU9VVF9URVNUX0RJUiArICcv
cGxhdGZvcm0vdGVzdC90ZXN0X2V4cGVjdGF0aW9ucy50eHQnCiAgICAgICAgIHNlbGYuX3Jlc3Vs
dHNfZGlyZWN0b3J5ID0gTm9uZQogCi0gICAgICAgIHNlbGYuX3Rlc3RzID0gdW5pdF90ZXN0X2xp
c3QoKQorICAgICAgICBQb3J0Ll9faW5pdF9fKHNlbGYsIGhvc3QsIHBvcnRfbmFtZT1wb3J0X25h
bWUsICoqa3dhcmdzKQogCiAgICAgICAgIHNlbGYuX29wZXJhdGluZ19zeXN0ZW0gPSAnbWFjJwog
ICAgICAgICBpZiBwb3J0X25hbWUuc3RhcnRzd2l0aCgndGVzdC13aW4nKToKQEAgLTM1MSw3ICsz
MzMsNiBAQCBjbGFzcyBUZXN0UG9ydChQb3J0KToKICAgICAgICAgfQogICAgICAgICBzZWxmLl92
ZXJzaW9uID0gdmVyc2lvbl9tYXBbcG9ydF9uYW1lXQogCi0gICAgICAgIHNlbGYuX2V4cGVjdGF0
aW9uc19wYXRoID0gTEFZT1VUX1RFU1RfRElSICsgJy9wbGF0Zm9ybS90ZXN0L3Rlc3RfZXhwZWN0
YXRpb25zLnR4dCcKIAogICAgIGRlZiBfcGF0aF90b19kcml2ZXIoc2VsZik6CiAgICAgICAgICMg
VGhpcyByb3V0aW5lIHNob3VsZG4ndCBub3JtYWxseSBiZSBjYWxsZWQsIGJ1dCBpdCBpcyBjYWxs
ZWQgYnkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1
bl93ZWJraXRfdGVzdHNfaW50ZWdyYXRpb250ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c19pbnRlZ3JhdGlvbnRlc3QucHkKaW5kZXgg
ZjNjOTM3NDZmNDhjZTI4MTUwNDc2ZGEyNjA1NDgwZjAwMDQyZGRhMS4uNmNjMzk5NDg0ZmFkNTdm
MTAzOWQ1MjJiMGYyYmYwNGRlNDNjM2Q4OSAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c19pbnRlZ3JhdGlvbnRlc3QucHkKKysr
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c19p
bnRlZ3JhdGlvbnRlc3QucHkKQEAgLTY3LDcgKzY3LDcgQEAgZnJvbSB3ZWJraXRweS5jb21tb24u
aG9zdF9tb2NrIGltcG9ydCBNb2NrSG9zdAogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMgaW1w
b3J0IHBvcnQKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzIGltcG9ydCBydW5fd2Via2l0X3Rl
c3RzCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0IGltcG9ydCBQb3J0Ci1mcm9tIHdl
YmtpdHB5LmxheW91dF90ZXN0cy5wb3J0LnRlc3QgaW1wb3J0IFRlc3RQb3J0LCBUZXN0RHJpdmVy
LCB1bml0X3Rlc3RfZmlsZXN5c3RlbQorZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC50
ZXN0IGltcG9ydCBUZXN0UG9ydCwgVGVzdERyaXZlcgogZnJvbSB3ZWJraXRweS5weXRob24yNC52
ZXJzaW9uaW5nIGltcG9ydCBjb21wYXJlX3ZlcnNpb24KIGZyb20gd2Via2l0cHkudGVzdC5za2lw
IGltcG9ydCBza2lwX2lmCiAKQEAgLTk3LDI3ICs5NywyNSBAQCBkZWYgcGFyc2VfYXJncyhleHRy
YV9hcmdzPU5vbmUsIHJlY29yZF9yZXN1bHRzPUZhbHNlLCB0ZXN0c19pbmNsdWRlZD1GYWxzZSwg
bmV3XwogICAgIHJldHVybiBydW5fd2Via2l0X3Rlc3RzLnBhcnNlX2FyZ3MoYXJncykKIAogCi1k
ZWYgcGFzc2luZ19ydW4oZXh0cmFfYXJncz1Ob25lLCBwb3J0X29iaj1Ob25lLCByZWNvcmRfcmVz
dWx0cz1GYWxzZSwgdGVzdHNfaW5jbHVkZWQ9RmFsc2UsIGZpbGVzeXN0ZW09Tm9uZSk6CitkZWYg
cGFzc2luZ19ydW4oZXh0cmFfYXJncz1Ob25lLCBwb3J0X29iaj1Ob25lLCByZWNvcmRfcmVzdWx0
cz1GYWxzZSwgdGVzdHNfaW5jbHVkZWQ9RmFsc2UsIGhvc3Q9Tm9uZSk6CiAgICAgb3B0aW9ucywg
cGFyc2VkX2FyZ3MgPSBwYXJzZV9hcmdzKGV4dHJhX2FyZ3MsIHJlY29yZF9yZXN1bHRzLCB0ZXN0
c19pbmNsdWRlZCkKLSAgICBmaWxlc3lzdGVtID0gZmlsZXN5c3RlbSBvciB1bml0X3Rlc3RfZmls
ZXN5c3RlbSgpCiAgICAgaWYgbm90IHBvcnRfb2JqOgotICAgICAgICBob3N0ID0gTW9ja0hvc3Qo
KQotICAgICAgICBwb3J0X29iaiA9IGhvc3QucG9ydF9mYWN0b3J5LmdldChwb3J0X25hbWU9b3B0
aW9ucy5wbGF0Zm9ybSwgb3B0aW9ucz1vcHRpb25zLCBmaWxlc3lzdGVtPWZpbGVzeXN0ZW0pCisg
ICAgICAgIGhvc3QgPSBob3N0IG9yIE1vY2tIb3N0KCkKKyAgICAgICAgcG9ydF9vYmogPSBob3N0
LnBvcnRfZmFjdG9yeS5nZXQocG9ydF9uYW1lPW9wdGlvbnMucGxhdGZvcm0sIG9wdGlvbnM9b3B0
aW9ucykKICAgICBidWlsZGJvdF9vdXRwdXQgPSBhcnJheV9zdHJlYW0uQXJyYXlTdHJlYW0oKQog
ICAgIHJlZ3VsYXJfb3V0cHV0ID0gYXJyYXlfc3RyZWFtLkFycmF5U3RyZWFtKCkKICAgICByZXMg
PSBydW5fd2Via2l0X3Rlc3RzLnJ1bihwb3J0X29iaiwgb3B0aW9ucywgcGFyc2VkX2FyZ3MsIGJ1
aWxkYm90X291dHB1dD1idWlsZGJvdF9vdXRwdXQsIHJlZ3VsYXJfb3V0cHV0PXJlZ3VsYXJfb3V0
cHV0KQogICAgIHJldHVybiByZXMgPT0gMCBhbmQgcmVndWxhcl9vdXRwdXQuZW1wdHkoKSBhbmQg
YnVpbGRib3Rfb3V0cHV0LmVtcHR5KCkKIAogCi1kZWYgbG9nZ2luZ19ydW4oZXh0cmFfYXJncz1O
b25lLCBwb3J0X29iaj1Ob25lLCByZWNvcmRfcmVzdWx0cz1GYWxzZSwgdGVzdHNfaW5jbHVkZWQ9
RmFsc2UsIGZpbGVzeXN0ZW09Tm9uZSwgbmV3X3Jlc3VsdHM9RmFsc2UpOgorZGVmIGxvZ2dpbmdf
cnVuKGV4dHJhX2FyZ3M9Tm9uZSwgcG9ydF9vYmo9Tm9uZSwgcmVjb3JkX3Jlc3VsdHM9RmFsc2Us
IHRlc3RzX2luY2x1ZGVkPUZhbHNlLCBob3N0PU5vbmUsIG5ld19yZXN1bHRzPUZhbHNlKToKICAg
ICBvcHRpb25zLCBwYXJzZWRfYXJncyA9IHBhcnNlX2FyZ3MoZXh0cmFfYXJncz1leHRyYV9hcmdz
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvcmRfcmVzdWx0cz1y
ZWNvcmRfcmVzdWx0cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVz
dHNfaW5jbHVkZWQ9dGVzdHNfaW5jbHVkZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHByaW50X25vdGhpbmc9RmFsc2UsIG5ld19yZXN1bHRzPW5ld19yZXN1bHRzKQot
ICAgIGhvc3QgPSBNb2NrSG9zdCgpCi0gICAgZmlsZXN5c3RlbSA9IGZpbGVzeXN0ZW0gb3IgdW5p
dF90ZXN0X2ZpbGVzeXN0ZW0oKQorICAgIGhvc3QgPSBob3N0IG9yIE1vY2tIb3N0KCkKICAgICBp
ZiBub3QgcG9ydF9vYmo6Ci0gICAgICAgIHBvcnRfb2JqID0gaG9zdC5wb3J0X2ZhY3RvcnkuZ2V0
KHBvcnRfbmFtZT1vcHRpb25zLnBsYXRmb3JtLCBvcHRpb25zPW9wdGlvbnMsIGZpbGVzeXN0ZW09
ZmlsZXN5c3RlbSkKKyAgICAgICAgcG9ydF9vYmogPSBob3N0LnBvcnRfZmFjdG9yeS5nZXQocG9y
dF9uYW1lPW9wdGlvbnMucGxhdGZvcm0sIG9wdGlvbnM9b3B0aW9ucykKIAogICAgIHJlcywgYnVp
bGRib3Rfb3V0cHV0LCByZWd1bGFyX291dHB1dCA9IHJ1bl9hbmRfY2FwdHVyZShwb3J0X29iaiwg
b3B0aW9ucywgcGFyc2VkX2FyZ3MpCiAgICAgcmV0dXJuIChyZXMsIGJ1aWxkYm90X291dHB1dCwg
cmVndWxhcl9vdXRwdXQsIGhvc3QudXNlcikKQEAgLTEzOCw3ICsxMzYsNyBAQCBkZWYgcnVuX2Fu
ZF9jYXB0dXJlKHBvcnRfb2JqLCBvcHRpb25zLCBwYXJzZWRfYXJncyk6CiAKIAogZGVmIGdldF90
ZXN0c19ydW4oZXh0cmFfYXJncz1Ob25lLCB0ZXN0c19pbmNsdWRlZD1GYWxzZSwgZmxhdHRlbl9i
YXRjaGVzPUZhbHNlLAotICAgICAgICAgICAgICAgICAgZmlsZXN5c3RlbT1Ob25lLCBpbmNsdWRl
X3JlZmVyZW5jZV9odG1sPUZhbHNlKToKKyAgICAgICAgICAgICAgICAgIGhvc3Q9Tm9uZSwgaW5j
bHVkZV9yZWZlcmVuY2VfaHRtbD1GYWxzZSk6CiAgICAgZXh0cmFfYXJncyA9IGV4dHJhX2FyZ3Mg
b3IgW10KICAgICBpZiBub3QgdGVzdHNfaW5jbHVkZWQ6CiAgICAgICAgICMgTm90IGluY2x1ZGlu
ZyBodHRwIHRlc3RzIHNpbmNlIHRoZXkgZ2V0IHJ1biBvdXQgb2Ygb3JkZXIgKHRoYXQKQEAgLTE0
NiwxMSArMTQ0LDkgQEAgZGVmIGdldF90ZXN0c19ydW4oZXh0cmFfYXJncz1Ob25lLCB0ZXN0c19p
bmNsdWRlZD1GYWxzZSwgZmxhdHRlbl9iYXRjaGVzPUZhbHNlLAogICAgICAgICBleHRyYV9hcmdz
ID0gWydwYXNzZXMnLCAnZmFpbHVyZXMnXSArIGV4dHJhX2FyZ3MKICAgICBvcHRpb25zLCBwYXJz
ZWRfYXJncyA9IHBhcnNlX2FyZ3MoZXh0cmFfYXJncywgdGVzdHNfaW5jbHVkZWQ9VHJ1ZSkKIAot
ICAgIGhvc3QgPSBNb2NrSG9zdCgpCi0KKyAgICBob3N0ID0gaG9zdCBvciBNb2NrSG9zdCgpCiAg
ICAgdGVzdF9iYXRjaGVzID0gW10KIAotCiAgICAgY2xhc3MgUmVjb3JkaW5nVGVzdERyaXZlcihU
ZXN0RHJpdmVyKToKICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBvcnQsIHdvcmtlcl9udW1i
ZXIpOgogICAgICAgICAgICAgVGVzdERyaXZlci5fX2luaXRfXyhzZWxmLCBwb3J0LCB3b3JrZXJf
bnVtYmVyLCBwaXhlbF90ZXN0cz1wb3J0LmdldF9vcHRpb24oJ3BpeGVsX3Rlc3QnKSkKQEAgLTE3
Nyw3ICsxNzMsNyBAQCBkZWYgZ2V0X3Rlc3RzX3J1bihleHRyYV9hcmdzPU5vbmUsIHRlc3RzX2lu
Y2x1ZGVkPUZhbHNlLCBmbGF0dGVuX2JhdGNoZXM9RmFsc2UsCiAgICAgICAgIGRlZiBjcmVhdGVf
ZHJpdmVyKHNlbGYsIHdvcmtlcl9udW1iZXIpOgogICAgICAgICAgICAgcmV0dXJuIFJlY29yZGlu
Z1Rlc3REcml2ZXIoc2VsZiwgd29ya2VyX251bWJlcikKIAotICAgIHJlY29yZGluZ19wb3J0ID0g
UmVjb3JkaW5nVGVzdFBvcnQob3B0aW9ucz1vcHRpb25zLCBob3N0PWhvc3QsIGZpbGVzeXN0ZW09
ZmlsZXN5c3RlbSkKKyAgICByZWNvcmRpbmdfcG9ydCA9IFJlY29yZGluZ1Rlc3RQb3J0KGhvc3Qs
IG9wdGlvbnM9b3B0aW9ucykKICAgICBydW5fYW5kX2NhcHR1cmUocmVjb3JkaW5nX3BvcnQsIG9w
dGlvbnMsIHBhcnNlZF9hcmdzKQogCiAgICAgaWYgZmxhdHRlbl9iYXRjaGVzOgpAQCAtMzg5LDkg
KzM4NSw5IEBAIGNsYXNzIE1haW5UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVz
dF9zaW5nbGVfZmlsZShzZWxmKToKICAgICAgICAgIyBGSVhNRTogV2Ugc2hvdWxkIGNvbnNpZGVy
IHJlcGxhY2luZyBtb3JlIG9mIHRoZSBnZXRfdGVzdHNfcnVuKCktc3R5bGUgdGVzdHMKICAgICAg
ICAgIyB3aXRoIHRlc3RzIHRoYXQgcmVhZCB0aGUgdGVzdHNfcnVuKiBmaWxlcywgbGlrZSB0aGlz
IG9uZS4KLSAgICAgICAgZnMgPSB1bml0X3Rlc3RfZmlsZXN5c3RlbSgpCi0gICAgICAgIHRlc3Rz
X3J1biA9IHBhc3NpbmdfcnVuKFsncGFzc2VzL3RleHQuaHRtbCddLCB0ZXN0c19pbmNsdWRlZD1U
cnVlLCBmaWxlc3lzdGVtPWZzKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhmcy5yZWFkX3Rl
eHRfZmlsZSgnL3RtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL3Rlc3RzX3J1bjAudHh0JyksCisgICAg
ICAgIGhvc3QgPSBNb2NrSG9zdCgpCisgICAgICAgIHRlc3RzX3J1biA9IHBhc3NpbmdfcnVuKFsn
cGFzc2VzL3RleHQuaHRtbCddLCB0ZXN0c19pbmNsdWRlZD1UcnVlLCBob3N0PWhvc3QpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGhvc3QuZmlsZXN5c3RlbS5yZWFkX3RleHRfZmlsZSgnL3Rt
cC9sYXlvdXQtdGVzdC1yZXN1bHRzL3Rlc3RzX3J1bjAudHh0JyksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICdwYXNzZXMvdGV4dC5odG1sXG4nKQogCiAgICAgZGVmIHRlc3Rfc2luZ2xlX2Zp
bGVfd2l0aF9wcmVmaXgoc2VsZik6CkBAIC00MDMsMjggKzM5OSwyOCBAQCBjbGFzcyBNYWluVGVz
dCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKFtdLCB0ZXN0
c19ydW4pCiAKICAgICBkZWYgdGVzdF9zdGRlcnJfaXNfc2F2ZWQoc2VsZik6Ci0gICAgICAgIGZz
ID0gdW5pdF90ZXN0X2ZpbGVzeXN0ZW0oKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocGFzc2lu
Z19ydW4oZmlsZXN5c3RlbT1mcykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGZzLnJlYWRf
dGV4dF9maWxlKCcvdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvcGFzc2VzL2Vycm9yLXN0ZGVyci50
eHQnKSwKKyAgICAgICAgaG9zdCA9IE1vY2tIb3N0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KHBhc3NpbmdfcnVuKGhvc3Q9aG9zdCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGhvc3Qu
ZmlsZXN5c3RlbS5yZWFkX3RleHRfZmlsZSgnL3RtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL3Bhc3Nl
cy9lcnJvci1zdGRlcnIudHh0JyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICdzdHVmZiBn
b2luZyB0byBzdGRlcnInKQogCiAgICAgZGVmIHRlc3RfdGVzdF9saXN0KHNlbGYpOgotICAgICAg
ICBmcyA9IHVuaXRfdGVzdF9maWxlc3lzdGVtKCkKKyAgICAgICAgaG9zdCA9IE1vY2tIb3N0KCkK
ICAgICAgICAgZmlsZW5hbWUgPSAnL3RtcC9mb28udHh0JwotICAgICAgICBmcy53cml0ZV90ZXh0
X2ZpbGUoZmlsZW5hbWUsICdwYXNzZXMvdGV4dC5odG1sJykKLSAgICAgICAgdGVzdHNfcnVuID0g
Z2V0X3Rlc3RzX3J1bihbJy0tdGVzdC1saXN0PSVzJyAlIGZpbGVuYW1lXSwgdGVzdHNfaW5jbHVk
ZWQ9VHJ1ZSwgZmxhdHRlbl9iYXRjaGVzPVRydWUsIGZpbGVzeXN0ZW09ZnMpCisgICAgICAgIGhv
c3QuZmlsZXN5c3RlbS53cml0ZV90ZXh0X2ZpbGUoZmlsZW5hbWUsICdwYXNzZXMvdGV4dC5odG1s
JykKKyAgICAgICAgdGVzdHNfcnVuID0gZ2V0X3Rlc3RzX3J1bihbJy0tdGVzdC1saXN0PSVzJyAl
IGZpbGVuYW1lXSwgdGVzdHNfaW5jbHVkZWQ9VHJ1ZSwgZmxhdHRlbl9iYXRjaGVzPVRydWUsIGhv
c3Q9aG9zdCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoWydwYXNzZXMvdGV4dC5odG1sJ10s
IHRlc3RzX3J1bikKLSAgICAgICAgZnMucmVtb3ZlKGZpbGVuYW1lKQorICAgICAgICBob3N0LmZp
bGVzeXN0ZW0ucmVtb3ZlKGZpbGVuYW1lKQogICAgICAgICByZXMsIG91dCwgZXJyLCB1c2VyID0g
bG9nZ2luZ19ydW4oWyctLXRlc3QtbGlzdD0lcycgJSBmaWxlbmFtZV0sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0c19pbmNsdWRlZD1UcnVlLCBmaWxlc3lz
dGVtPWZzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdHNf
aW5jbHVkZWQ9VHJ1ZSwgaG9zdD1ob3N0KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcywg
LTEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZXJyLmVtcHR5KCkpCiAKICAgICBkZWYgdGVz
dF90ZXN0X2xpc3Rfd2l0aF9wcmVmaXgoc2VsZik6Ci0gICAgICAgIGZzID0gdW5pdF90ZXN0X2Zp
bGVzeXN0ZW0oKQorICAgICAgICBob3N0ID0gTW9ja0hvc3QoKQogICAgICAgICBmaWxlbmFtZSA9
ICcvdG1wL2Zvby50eHQnCi0gICAgICAgIGZzLndyaXRlX3RleHRfZmlsZShmaWxlbmFtZSwgJ0xh
eW91dFRlc3RzL3Bhc3Nlcy90ZXh0Lmh0bWwnKQotICAgICAgICB0ZXN0c19ydW4gPSBnZXRfdGVz
dHNfcnVuKFsnLS10ZXN0LWxpc3Q9JXMnICUgZmlsZW5hbWVdLCB0ZXN0c19pbmNsdWRlZD1UcnVl
LCBmbGF0dGVuX2JhdGNoZXM9VHJ1ZSwgZmlsZXN5c3RlbT1mcykKKyAgICAgICAgaG9zdC5maWxl
c3lzdGVtLndyaXRlX3RleHRfZmlsZShmaWxlbmFtZSwgJ0xheW91dFRlc3RzL3Bhc3Nlcy90ZXh0
Lmh0bWwnKQorICAgICAgICB0ZXN0c19ydW4gPSBnZXRfdGVzdHNfcnVuKFsnLS10ZXN0LWxpc3Q9
JXMnICUgZmlsZW5hbWVdLCB0ZXN0c19pbmNsdWRlZD1UcnVlLCBmbGF0dGVuX2JhdGNoZXM9VHJ1
ZSwgaG9zdD1ob3N0KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhbJ3Bhc3Nlcy90ZXh0Lmh0
bWwnXSwgdGVzdHNfcnVuKQogCiAgICAgZGVmIHRlc3RfdW5leHBlY3RlZF9mYWlsdXJlcyhzZWxm
KToKQEAgLTQ0MCwxNyArNDM2LDE3IEBAIGNsYXNzIE1haW5UZXN0KHVuaXR0ZXN0LlRlc3RDYXNl
KToKICAgICBkZWYgdGVzdF9taXNzaW5nX2FuZF91bmV4cGVjdGVkX3Jlc3VsdHMoc2VsZik6CiAg
ICAgICAgICMgVGVzdCB0aGF0IHdlIHVwZGF0ZSBleHBlY3RhdGlvbnMgaW4gcGxhY2UuIElmIHRo
ZSBleHBlY3RhdGlvbgogICAgICAgICAjIGlzIG1pc3NpbmcsIHVwZGF0ZSB0aGUgZXhwZWN0ZWQg
Z2VuZXJpYyBsb2NhdGlvbi4KLSAgICAgICAgZnMgPSB1bml0X3Rlc3RfZmlsZXN5c3RlbSgpCisg
ICAgICAgIGhvc3QgPSBNb2NrSG9zdCgpCiAgICAgICAgIHJlcywgb3V0LCBlcnIsIF8gPSBsb2dn
aW5nX3J1bihbJy0tbm8tc2hvdy1yZXN1bHRzJywKICAgICAgICAgICAgICdmYWlsdXJlcy9leHBl
Y3RlZC9taXNzaW5nX2ltYWdlLmh0bWwnLAogICAgICAgICAgICAgJ2ZhaWx1cmVzL3VuZXhwZWN0
ZWQvbWlzc2luZ190ZXh0Lmh0bWwnLAogICAgICAgICAgICAgJ2ZhaWx1cmVzL3VuZXhwZWN0ZWQv
dGV4dC1pbWFnZS1jaGVja3N1bS5odG1sJ10sCi0gICAgICAgICAgICB0ZXN0c19pbmNsdWRlZD1U
cnVlLCBmaWxlc3lzdGVtPWZzLCByZWNvcmRfcmVzdWx0cz1UcnVlKQotICAgICAgICBmaWxlX2xp
c3QgPSBmcy53cml0dGVuX2ZpbGVzLmtleXMoKQorICAgICAgICAgICAgdGVzdHNfaW5jbHVkZWQ9
VHJ1ZSwgaG9zdD1ob3N0LCByZWNvcmRfcmVzdWx0cz1UcnVlKQorICAgICAgICBmaWxlX2xpc3Qg
PSBob3N0LmZpbGVzeXN0ZW0ud3JpdHRlbl9maWxlcy5rZXlzKCkKICAgICAgICAgZmlsZV9saXN0
LnJlbW92ZSgnL3RtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL3Rlc3RzX3J1bjAudHh0JykKICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbHMocmVzLCAxKQogICAgICAgICBleHBlY3RlZF90b2tlbiA9ICci
dW5leHBlY3RlZCI6eyJ0ZXh0LWltYWdlLWNoZWNrc3VtLmh0bWwiOnsiZXhwZWN0ZWQiOiJQQVNT
IiwiYWN0dWFsIjoiVEVYVCJ9LCJtaXNzaW5nX3RleHQuaHRtbCI6eyJleHBlY3RlZCI6IlBBU1Mi
LCJpc19taXNzaW5nX3RleHQiOnRydWUsImFjdHVhbCI6Ik1JU1NJTkcifScKLSAgICAgICAganNv
bl9zdHJpbmcgPSBmcy5yZWFkX3RleHRfZmlsZSgnL3RtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2Z1
bGxfcmVzdWx0cy5qc29uJykKKyAgICAgICAganNvbl9zdHJpbmcgPSBob3N0LmZpbGVzeXN0ZW0u
cmVhZF90ZXh0X2ZpbGUoJy90bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9mdWxsX3Jlc3VsdHMuanNv
bicpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShqc29uX3N0cmluZy5maW5kKGV4cGVjdGVkX3Rv
a2VuKSAhPSAtMSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGpzb25fc3RyaW5nLmZpbmQoJyJu
dW1fcmVncmVzc2lvbnMiOjEnKSAhPSAtMSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGpzb25f
c3RyaW5nLmZpbmQoJyJudW1fZmxha3kiOjAnKSAhPSAtMSkKQEAgLTQ1OSw3NSArNDU1LDc0IEBA
IGNsYXNzIE1haW5UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9taXNzaW5n
X2FuZF91bmV4cGVjdGVkX3Jlc3VsdHNfd2l0aF9jdXN0b21fZXhpdF9jb2RlKHNlbGYpOgogICAg
ICAgICAjIFRlc3QgdGhhdCB3ZSB1cGRhdGUgZXhwZWN0YXRpb25zIGluIHBsYWNlLiBJZiB0aGUg
ZXhwZWN0YXRpb24KICAgICAgICAgIyBpcyBtaXNzaW5nLCB1cGRhdGUgdGhlIGV4cGVjdGVkIGdl
bmVyaWMgbG9jYXRpb24uCi0gICAgICAgIGZzID0gdW5pdF90ZXN0X2ZpbGVzeXN0ZW0oKQotCiAg
ICAgICAgIGNsYXNzIEN1c3RvbUV4aXRDb2RlUG9ydChUZXN0UG9ydCk6CiAgICAgICAgICAgICBk
ZWYgZXhpdF9jb2RlX2Zyb21fc3VtbWFyaXplZF9yZXN1bHRzKHNlbGYsIHVuZXhwZWN0ZWRfcmVz
dWx0cyk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZXhwZWN0ZWRfcmVzdWx0c1snbnVtX3Jl
Z3Jlc3Npb25zJ10gKyB1bmV4cGVjdGVkX3Jlc3VsdHNbJ251bV9taXNzaW5nJ10KIAorICAgICAg
ICBob3N0ID0gTW9ja0hvc3QoKQogICAgICAgICBvcHRpb25zLCBwYXJzZWRfYXJncyA9IHJ1bl93
ZWJraXRfdGVzdHMucGFyc2VfYXJncyhbJy0tcGl4ZWwtdGVzdHMnLCAnLS1uby1uZXctdGVzdC1y
ZXN1bHRzJ10pCi0gICAgICAgIHRlc3RfcG9ydCA9IEN1c3RvbUV4aXRDb2RlUG9ydChvcHRpb25z
PW9wdGlvbnMpCisgICAgICAgIHRlc3RfcG9ydCA9IEN1c3RvbUV4aXRDb2RlUG9ydChob3N0LCBv
cHRpb25zPW9wdGlvbnMpCiAgICAgICAgIHJlcywgb3V0LCBlcnIsIF8gPSBsb2dnaW5nX3J1bihb
Jy0tbm8tc2hvdy1yZXN1bHRzJywKICAgICAgICAgICAgICdmYWlsdXJlcy9leHBlY3RlZC9taXNz
aW5nX2ltYWdlLmh0bWwnLAogICAgICAgICAgICAgJ2ZhaWx1cmVzL3VuZXhwZWN0ZWQvbWlzc2lu
Z190ZXh0Lmh0bWwnLAogICAgICAgICAgICAgJ2ZhaWx1cmVzL3VuZXhwZWN0ZWQvdGV4dC1pbWFn
ZS1jaGVja3N1bS5odG1sJ10sCi0gICAgICAgICAgICB0ZXN0c19pbmNsdWRlZD1UcnVlLCBmaWxl
c3lzdGVtPWZzLCByZWNvcmRfcmVzdWx0cz1UcnVlLCBwb3J0X29iaj10ZXN0X3BvcnQpCisgICAg
ICAgICAgICB0ZXN0c19pbmNsdWRlZD1UcnVlLCBob3N0PWhvc3QsIHJlY29yZF9yZXN1bHRzPVRy
dWUsIHBvcnRfb2JqPXRlc3RfcG9ydCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocmVzLCAy
KQogCiAgICAgZGVmIHRlc3RfY3Jhc2hfd2l0aF9zdGRlcnIoc2VsZik6Ci0gICAgICAgIGZzID0g
dW5pdF90ZXN0X2ZpbGVzeXN0ZW0oKQorICAgICAgICBob3N0ID0gTW9ja0hvc3QoKQogICAgICAg
ICByZXMsIGJ1aWxkYm90X291dHB1dCwgcmVndWxhcl9vdXRwdXQsIHVzZXIgPSBsb2dnaW5nX3J1
bihbCiAgICAgICAgICAgICAgICAgJ2ZhaWx1cmVzL3VuZXhwZWN0ZWQvY3Jhc2gtd2l0aC1zdGRl
cnIuaHRtbCcsCiAgICAgICAgICAgICBdLAogICAgICAgICAgICAgdGVzdHNfaW5jbHVkZWQ9VHJ1
ZSwKICAgICAgICAgICAgIHJlY29yZF9yZXN1bHRzPVRydWUsCi0gICAgICAgICAgICBmaWxlc3lz
dGVtPWZzKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoZnMucmVhZF90ZXh0X2ZpbGUoJy90bXAv
bGF5b3V0LXRlc3QtcmVzdWx0cy9mdWxsX3Jlc3VsdHMuanNvbicpLmZpbmQoJ3siY3Jhc2gtd2l0
aC1zdGRlcnIuaHRtbCI6eyJleHBlY3RlZCI6IlBBU1MiLCJhY3R1YWwiOiJDUkFTSCIsImhhc19z
dGRlcnIiOnRydWV9fScpICE9IC0xKQorICAgICAgICAgICAgaG9zdD1ob3N0KQorICAgICAgICBz
ZWxmLmFzc2VydFRydWUoaG9zdC5maWxlc3lzdGVtLnJlYWRfdGV4dF9maWxlKCcvdG1wL2xheW91
dC10ZXN0LXJlc3VsdHMvZnVsbF9yZXN1bHRzLmpzb24nKS5maW5kKCd7ImNyYXNoLXdpdGgtc3Rk
ZXJyLmh0bWwiOnsiZXhwZWN0ZWQiOiJQQVNTIiwiYWN0dWFsIjoiQ1JBU0giLCJoYXNfc3RkZXJy
Ijp0cnVlfX0nKSAhPSAtMSkKIAogICAgIGRlZiB0ZXN0X25vX2ltYWdlX2ZhaWx1cmVfd2l0aF9p
bWFnZV9kaWZmKHNlbGYpOgotICAgICAgICBmcyA9IHVuaXRfdGVzdF9maWxlc3lzdGVtKCkKKyAg
ICAgICAgaG9zdCA9IE1vY2tIb3N0KCkKICAgICAgICAgcmVzLCBidWlsZGJvdF9vdXRwdXQsIHJl
Z3VsYXJfb3V0cHV0LCB1c2VyID0gbG9nZ2luZ19ydW4oWwogICAgICAgICAgICAgICAgICdmYWls
dXJlcy91bmV4cGVjdGVkL2NoZWNrc3VtLXdpdGgtbWF0Y2hpbmctaW1hZ2UuaHRtbCcsCiAgICAg
ICAgICAgICBdLAogICAgICAgICAgICAgdGVzdHNfaW5jbHVkZWQ9VHJ1ZSwKICAgICAgICAgICAg
IHJlY29yZF9yZXN1bHRzPVRydWUsCi0gICAgICAgICAgICBmaWxlc3lzdGVtPWZzKQotICAgICAg
ICBzZWxmLmFzc2VydFRydWUoZnMucmVhZF90ZXh0X2ZpbGUoJy90bXAvbGF5b3V0LXRlc3QtcmVz
dWx0cy9mdWxsX3Jlc3VsdHMuanNvbicpLmZpbmQoJyJudW1fcmVncmVzc2lvbnMiOjAnKSAhPSAt
MSkKKyAgICAgICAgICAgIGhvc3Q9aG9zdCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhvc3Qu
ZmlsZXN5c3RlbS5yZWFkX3RleHRfZmlsZSgnL3RtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2Z1bGxf
cmVzdWx0cy5qc29uJykuZmluZCgnIm51bV9yZWdyZXNzaW9ucyI6MCcpICE9IC0xKQogCiAgICAg
ZGVmIHRlc3RfY3Jhc2hfbG9nKHNlbGYpOgogICAgICAgICBtb2NrX2NyYXNoX3JlcG9ydCA9IG1h
a2VfbW9ja19jcmFzaF9yZXBvcnRfZGFyd2luKCdEdW1wUmVuZGVyVHJlZScsIDEyMzQ1KQotICAg
ICAgICBmcyA9IHVuaXRfdGVzdF9maWxlc3lzdGVtKCkKLSAgICAgICAgZnMud3JpdGVfdGV4dF9m
aWxlKCcvVXNlcnMvbW9jay9MaWJyYXJ5L0xvZ3MvRGlhZ25vc3RpY1JlcG9ydHMvRHVtcFJlbmRl
clRyZWVfMjAxMS0wNi0xMy0xNTA3MTlfcXVhZHplbi5jcmFzaCcsIG1vY2tfY3Jhc2hfcmVwb3J0
KQorICAgICAgICBob3N0ID0gTW9ja0hvc3QoKQorICAgICAgICBob3N0LmZpbGVzeXN0ZW0ud3Jp
dGVfdGV4dF9maWxlKCcvVXNlcnMvbW9jay9MaWJyYXJ5L0xvZ3MvRGlhZ25vc3RpY1JlcG9ydHMv
RHVtcFJlbmRlclRyZWVfMjAxMS0wNi0xMy0xNTA3MTlfcXVhZHplbi5jcmFzaCcsIG1vY2tfY3Jh
c2hfcmVwb3J0KQogICAgICAgICByZXMsIGJ1aWxkYm90X291dHB1dCwgcmVndWxhcl9vdXRwdXQs
IHVzZXIgPSBsb2dnaW5nX3J1bihbCiAgICAgICAgICAgICAgICAgJ2ZhaWx1cmVzL3VuZXhwZWN0
ZWQvY3Jhc2gtd2l0aC1zdGRlcnIuaHRtbCcsCiAgICAgICAgICAgICBdLAogICAgICAgICAgICAg
dGVzdHNfaW5jbHVkZWQ9VHJ1ZSwKICAgICAgICAgICAgIHJlY29yZF9yZXN1bHRzPVRydWUsCi0g
ICAgICAgICAgICBmaWxlc3lzdGVtPWZzKQorICAgICAgICAgICAgaG9zdD1ob3N0KQogICAgICAg
ICBleHBlY3RlZF9jcmFzaF9sb2cgPSBtb2NrX2NyYXNoX3JlcG9ydAogICAgICAgICAjIEN1cnJl
bnRseSBDcmFzaExvZyB1cGxvYWRpbmcgb25seSB3b3JrcyBvbiBEYXJ3aW4uCiAgICAgICAgIGlm
IHN5cy5wbGF0Zm9ybSAhPSAiZGFyd2luIjoKICAgICAgICAgICAgIGV4cGVjdGVkX2NyYXNoX2xv
ZyA9ICJtb2NrLXN0ZC1lcnJvci1vdXRwdXQiCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGZz
LnJlYWRfdGV4dF9maWxlKCcvdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvZmFpbHVyZXMvdW5leHBl
Y3RlZC9jcmFzaC13aXRoLXN0ZGVyci1jcmFzaC1sb2cudHh0JyksIGV4cGVjdGVkX2NyYXNoX2xv
ZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoaG9zdC5maWxlc3lzdGVtLnJlYWRfdGV4dF9m
aWxlKCcvdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvZmFpbHVyZXMvdW5leHBlY3RlZC9jcmFzaC13
aXRoLXN0ZGVyci1jcmFzaC1sb2cudHh0JyksIGV4cGVjdGVkX2NyYXNoX2xvZykKIAogICAgIGRl
ZiB0ZXN0X3dlYl9wcm9jZXNzX2NyYXNoX2xvZyhzZWxmKToKICAgICAgICAgbW9ja19jcmFzaF9y
ZXBvcnQgPSBtYWtlX21vY2tfY3Jhc2hfcmVwb3J0X2RhcndpbignV2ViUHJvY2VzcycsIDEyMzQ1
KQotICAgICAgICBmcyA9IHVuaXRfdGVzdF9maWxlc3lzdGVtKCkKLSAgICAgICAgZnMud3JpdGVf
dGV4dF9maWxlKCcvVXNlcnMvbW9jay9MaWJyYXJ5L0xvZ3MvRGlhZ25vc3RpY1JlcG9ydHMvV2Vi
UHJvY2Vzc18yMDExLTA2LTEzLTE1MDcxOV9xdWFkemVuLmNyYXNoJywgbW9ja19jcmFzaF9yZXBv
cnQpCisgICAgICAgIGhvc3QgPSBNb2NrSG9zdCgpCisgICAgICAgIGhvc3QuZmlsZXN5c3RlbS53
cml0ZV90ZXh0X2ZpbGUoJy9Vc2Vycy9tb2NrL0xpYnJhcnkvTG9ncy9EaWFnbm9zdGljUmVwb3J0
cy9XZWJQcm9jZXNzXzIwMTEtMDYtMTMtMTUwNzE5X3F1YWR6ZW4uY3Jhc2gnLCBtb2NrX2NyYXNo
X3JlcG9ydCkKICAgICAgICAgcmVzLCBidWlsZGJvdF9vdXRwdXQsIHJlZ3VsYXJfb3V0cHV0LCB1
c2VyID0gbG9nZ2luZ19ydW4oWwogICAgICAgICAgICAgICAgICdmYWlsdXJlcy91bmV4cGVjdGVk
L3dlYi1wcm9jZXNzLWNyYXNoLXdpdGgtc3RkZXJyLmh0bWwnLAogICAgICAgICAgICAgXSwKICAg
ICAgICAgICAgIHRlc3RzX2luY2x1ZGVkPVRydWUsCiAgICAgICAgICAgICByZWNvcmRfcmVzdWx0
cz1UcnVlLAotICAgICAgICAgICAgZmlsZXN5c3RlbT1mcykKKyAgICAgICAgICAgIGhvc3Q9aG9z
dCkKICAgICAgICAgZXhwZWN0ZWRfY3Jhc2hfbG9nID0gbW9ja19jcmFzaF9yZXBvcnQKICAgICAg
ICAgIyBDdXJyZW50bHkgQ3Jhc2hMb2cgdXBsb2FkaW5nIG9ubHkgd29ya3Mgb24gRGFyd2luLgog
ICAgICAgICBpZiBzeXMucGxhdGZvcm0gIT0gImRhcndpbiI6CiAgICAgICAgICAgICBleHBlY3Rl
ZF9jcmFzaF9sb2cgPSAibW9jay1zdGQtZXJyb3Itb3V0cHV0IgotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFscyhmcy5yZWFkX3RleHRfZmlsZSgnL3RtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2ZhaWx1
cmVzL3VuZXhwZWN0ZWQvd2ViLXByb2Nlc3MtY3Jhc2gtd2l0aC1zdGRlcnItY3Jhc2gtbG9nLnR4
dCcpLCBleHBlY3RlZF9jcmFzaF9sb2cpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGhvc3Qu
ZmlsZXN5c3RlbS5yZWFkX3RleHRfZmlsZSgnL3RtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2ZhaWx1
cmVzL3VuZXhwZWN0ZWQvd2ViLXByb2Nlc3MtY3Jhc2gtd2l0aC1zdGRlcnItY3Jhc2gtbG9nLnR4
dCcpLCBleHBlY3RlZF9jcmFzaF9sb2cpCiAKICAgICBkZWYgdGVzdF9leGl0X2FmdGVyX25fZmFp
bHVyZXNfdXBsb2FkKHNlbGYpOgotICAgICAgICBmcyA9IHVuaXRfdGVzdF9maWxlc3lzdGVtKCkK
KyAgICAgICAgaG9zdCA9IE1vY2tIb3N0KCkKICAgICAgICAgcmVzLCBidWlsZGJvdF9vdXRwdXQs
IHJlZ3VsYXJfb3V0cHV0LCB1c2VyID0gbG9nZ2luZ19ydW4oWwogICAgICAgICAgICAgICAgICdm
YWlsdXJlcy91bmV4cGVjdGVkL3RleHQtaW1hZ2UtY2hlY2tzdW0uaHRtbCcsCiAgICAgICAgICAg
ICAgICAgJ3Bhc3Nlcy90ZXh0Lmh0bWwnLApAQCAtNTM1LDggKzUzMCw4IEBAIGNsYXNzIE1haW5U
ZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICB0ZXN0
c19pbmNsdWRlZD1UcnVlLAogICAgICAgICAgICAgcmVjb3JkX3Jlc3VsdHM9VHJ1ZSwKLSAgICAg
ICAgICAgIGZpbGVzeXN0ZW09ZnMpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnL3RtcC9sYXlv
dXQtdGVzdC1yZXN1bHRzL2luY3JlbWVudGFsX3Jlc3VsdHMuanNvbicgaW4gZnMuZmlsZXMpCisg
ICAgICAgICAgICBob3N0PWhvc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnL3RtcC9sYXlv
dXQtdGVzdC1yZXN1bHRzL2luY3JlbWVudGFsX3Jlc3VsdHMuanNvbicgaW4gaG9zdC5maWxlc3lz
dGVtLmZpbGVzKQogCiAgICAgZGVmIHRlc3RfZXhpdF9hZnRlcl9uX2ZhaWx1cmVzKHNlbGYpOgog
ICAgICAgICAjIFVuZXhwZWN0ZWQgZmFpbHVyZXMgc2hvdWxkIHJlc3VsdCBpbiB0ZXN0cyBzdG9w
cGluZy4KQEAgLTYwNSwxMSArNjAwLDExIEBAIGNsYXNzIE1haW5UZXN0KHVuaXR0ZXN0LlRlc3RD
YXNlKToKICAgICAgICAgIyBXZSBydW4gYSBjb25maWd1cmF0aW9uIHRoYXQgc2hvdWxkIGZhaWws
IHRvIGdlbmVyYXRlIG91dHB1dCwgdGhlbgogICAgICAgICAjIGxvb2sgZm9yIHdoYXQgdGhlIG91
dHB1dCByZXN1bHRzIHVybCB3YXMuCiAKLSAgICAgICAgZnMgPSB1bml0X3Rlc3RfZmlsZXN5c3Rl
bSgpCi0gICAgICAgIHdpdGggZnMubWtkdGVtcCgpIGFzIHRtcGRpcjoKKyAgICAgICAgaG9zdCA9
IE1vY2tIb3N0KCkKKyAgICAgICAgd2l0aCBob3N0LmZpbGVzeXN0ZW0ubWtkdGVtcCgpIGFzIHRt
cGRpcjoKICAgICAgICAgICAgIHJlcywgb3V0LCBlcnIsIHVzZXIgPSBsb2dnaW5nX3J1bihbJy0t
cmVzdWx0cy1kaXJlY3Rvcnk9JyArIHN0cih0bXBkaXIpXSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0c19pbmNsdWRlZD1UcnVlLCBmaWxlc3lzdGVt
PWZzKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1c2VyLm9wZW5lZF91cmxzLCBbZnMu
am9pbih0bXBkaXIsICdyZXN1bHRzLmh0bWwnKV0pCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdGVzdHNfaW5jbHVkZWQ9VHJ1ZSwgaG9zdD1ob3N0KQorICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1c2VyLm9wZW5lZF91cmxzLCBbaG9zdC5maWxlc3lz
dGVtLmpvaW4odG1wZGlyLCAncmVzdWx0cy5odG1sJyldKQogCiAgICAgZGVmIHRlc3RfcmVzdWx0
c19kaXJlY3RvcnlfZGVmYXVsdChzZWxmKToKICAgICAgICAgIyBXZSBydW4gYSBjb25maWd1cmF0
aW9uIHRoYXQgc2hvdWxkIGZhaWwsIHRvIGdlbmVyYXRlIG91dHB1dCwgdGhlbgpAQCAtNjIyLDE3
ICs2MTcsMTcgQEAgY2xhc3MgTWFpblRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0
ZXN0X3Jlc3VsdHNfZGlyZWN0b3J5X3JlbGF0aXZlKHNlbGYpOgogICAgICAgICAjIFdlIHJ1biBh
IGNvbmZpZ3VyYXRpb24gdGhhdCBzaG91bGQgZmFpbCwgdG8gZ2VuZXJhdGUgb3V0cHV0LCB0aGVu
CiAgICAgICAgICMgbG9vayBmb3Igd2hhdCB0aGUgb3V0cHV0IHJlc3VsdHMgdXJsIHdhcy4KLSAg
ICAgICAgZnMgPSB1bml0X3Rlc3RfZmlsZXN5c3RlbSgpCi0gICAgICAgIGZzLm1heWJlX21ha2Vf
ZGlyZWN0b3J5KCcvdG1wL2N3ZCcpCi0gICAgICAgIGZzLmNoZGlyKCcvdG1wL2N3ZCcpCisgICAg
ICAgIGhvc3QgPSBNb2NrSG9zdCgpCisgICAgICAgIGhvc3QuZmlsZXN5c3RlbS5tYXliZV9tYWtl
X2RpcmVjdG9yeSgnL3RtcC9jd2QnKQorICAgICAgICBob3N0LmZpbGVzeXN0ZW0uY2hkaXIoJy90
bXAvY3dkJykKICAgICAgICAgcmVzLCBvdXQsIGVyciwgdXNlciA9IGxvZ2dpbmdfcnVuKFsnLS1y
ZXN1bHRzLWRpcmVjdG9yeT1mb28nXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRlc3RzX2luY2x1ZGVkPVRydWUsIGZpbGVzeXN0ZW09ZnMpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0c19pbmNsdWRlZD1UcnVlLCBob3N0
PWhvc3QpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodXNlci5vcGVuZWRfdXJscywgWycvdG1w
L2N3ZC9mb28vcmVzdWx0cy5odG1sJ10pCiAKICAgICBkZWYgdGVzdF9yZXRyaWVzX2RpcmVjdG9y
eShzZWxmKToKLSAgICAgICAgZnMgPSB1bml0X3Rlc3RfZmlsZXN5c3RlbSgpCi0gICAgICAgIHJl
cywgb3V0LCBlcnIsIHVzZXIgPSBsb2dnaW5nX3J1bih0ZXN0c19pbmNsdWRlZD1UcnVlLCBmaWxl
c3lzdGVtPWZzKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoJy90bXAvbGF5b3V0LXRlc3QtcmVz
dWx0cy9yZXRyaWVzL3Rlc3RzX3J1bjAudHh0JyBpbiBmcy5maWxlcykKKyAgICAgICAgaG9zdCA9
IE1vY2tIb3N0KCkKKyAgICAgICAgcmVzLCBvdXQsIGVyciwgdXNlciA9IGxvZ2dpbmdfcnVuKHRl
c3RzX2luY2x1ZGVkPVRydWUsIGhvc3Q9aG9zdCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhv
c3QuZmlsZXN5c3RlbS5leGlzdHMoJy90bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9yZXRyaWVzL3Rl
c3RzX3J1bjAudHh0JykpCiAKICAgICAjIFRoZXNlIG5leHQgdGVzdHMgdGVzdCB0aGF0IHdlIHJ1
biB0aGUgdGVzdHMgaW4gYXNjZW5kaW5nIGFscGhhYmV0aWNhbAogICAgICMgb3JkZXIgcGVyIGRp
cmVjdG9yeS4gSFRUUCB0ZXN0cyBhcmUgc2hhcmRlZCBzZXBhcmF0ZWx5IGZyb20gb3RoZXIgdGVz
dHMsCkBAIC02NTksNyArNjU0LDggQEAgY2xhc3MgTWFpblRlc3QodW5pdHRlc3QuVGVzdENhc2Up
OgogCiAgICAgICAgIGRlZiBnZXRfcG9ydF9mb3JfcnVuKGFyZ3MpOgogICAgICAgICAgICAgb3B0
aW9ucywgcGFyc2VkX2FyZ3MgPSBydW5fd2Via2l0X3Rlc3RzLnBhcnNlX2FyZ3MoYXJncykKLSAg
ICAgICAgICAgIHRlc3RfcG9ydCA9IEltYWdlRGlmZlRlc3RQb3J0KG9wdGlvbnM9b3B0aW9ucykK
KyAgICAgICAgICAgIGhvc3QgPSBNb2NrSG9zdCgpCisgICAgICAgICAgICB0ZXN0X3BvcnQgPSBJ
bWFnZURpZmZUZXN0UG9ydChob3N0LCBvcHRpb25zPW9wdGlvbnMpCiAgICAgICAgICAgICByZXMg
PSBwYXNzaW5nX3J1bihhcmdzLCBwb3J0X29iaj10ZXN0X3BvcnQsIHRlc3RzX2luY2x1ZGVkPVRy
dWUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocmVzKQogICAgICAgICAgICAgcmV0dXJu
IHRlc3RfcG9ydApAQCAtNzI0LDExICs3MjAsOSBAQCBjbGFzcyBNYWluVGVzdCh1bml0dGVzdC5U
ZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKFsncGFzc2VzL21pc21hdGNoLmh0
bWwnLCAncGFzc2VzL21pc21hdGNoLWV4cGVjdGVkLW1pc21hdGNoLmh0bWwnXSwgdGVzdHNfcnVu
KQogCiAgICAgZGVmIHRlc3RfcmVmdGVzdF9zaG91bGRfbm90X3VzZV9uYW1pbmdfY29udmVudGlv
bl9pZl9ub3RfbGlzdGVkX2luX3JlZnRlc3RsaXN0KHNlbGYpOgotICAgICAgICBmcyA9IHVuaXRf
dGVzdF9maWxlc3lzdGVtKCkKLSAgICAgICAgcmVzLCBvdXQsIGVyciwgXyA9IGxvZ2dpbmdfcnVu
KFsnLS1uby1zaG93LXJlc3VsdHMnLCAncmVmdGVzdHMvZm9vLyddLCB0ZXN0c19pbmNsdWRlZD1U
cnVlLCBmaWxlc3lzdGVtPWZzLCByZWNvcmRfcmVzdWx0cz1UcnVlKQotICAgICAgICBmaWxlX2xp
c3QgPSBmcy53cml0dGVuX2ZpbGVzLmtleXMoKQotICAgICAgICBmaWxlX2xpc3QucmVtb3ZlKCcv
dG1wL2xheW91dC10ZXN0LXJlc3VsdHMvdGVzdHNfcnVuMC50eHQnKQotICAgICAgICBqc29uX3N0
cmluZyA9IGZzLnJlYWRfdGV4dF9maWxlKCcvdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvZnVsbF9y
ZXN1bHRzLmpzb24nKQorICAgICAgICBob3N0ID0gTW9ja0hvc3QoKQorICAgICAgICByZXMsIG91
dCwgZXJyLCBfID0gbG9nZ2luZ19ydW4oWyctLW5vLXNob3ctcmVzdWx0cycsICdyZWZ0ZXN0cy9m
b28vJ10sIHRlc3RzX2luY2x1ZGVkPVRydWUsIGhvc3Q9aG9zdCwgcmVjb3JkX3Jlc3VsdHM9VHJ1
ZSkKKyAgICAgICAganNvbl9zdHJpbmcgPSBob3N0LmZpbGVzeXN0ZW0ucmVhZF90ZXh0X2ZpbGUo
Jy90bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9mdWxsX3Jlc3VsdHMuanNvbicpCiAgICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZShqc29uX3N0cmluZy5maW5kKCcidW5saXN0ZWR0ZXN0Lmh0bWwiOnsiZXhw
ZWN0ZWQiOiJQQVNTIiwiaXNfbWlzc2luZ190ZXh0Ijp0cnVlLCJhY3R1YWwiOiJNSVNTSU5HIiwi
aXNfbWlzc2luZ19pbWFnZSI6dHJ1ZX0nKSAhPSAtMSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KGpzb25fc3RyaW5nLmZpbmQoJyJudW1fcmVncmVzc2lvbnMiOjQnKSAhPSAtMSkKICAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKGpzb25fc3RyaW5nLmZpbmQoJyJudW1fZmxha3kiOjAnKSAhPSAtMSkK
QEAgLTc3NCwxMSArNzY4LDExIEBAIGNsYXNzIEVuZFRvRW5kVGVzdCh1bml0dGVzdC5UZXN0Q2Fz
ZSk6CiAgICAgICAgIHJldHVybiBjb21wcmVzc2VkX3Jlc3VsdHMKIAogICAgIGRlZiB0ZXN0X2Vu
ZF90b19lbmQoc2VsZik6Ci0gICAgICAgIGZzID0gdW5pdF90ZXN0X2ZpbGVzeXN0ZW0oKQotICAg
ICAgICByZXMsIG91dCwgZXJyLCB1c2VyID0gbG9nZ2luZ19ydW4ocmVjb3JkX3Jlc3VsdHM9VHJ1
ZSwgdGVzdHNfaW5jbHVkZWQ9VHJ1ZSwgZmlsZXN5c3RlbT1mcykKKyAgICAgICAgaG9zdCA9IE1v
Y2tIb3N0KCkKKyAgICAgICAgcmVzLCBvdXQsIGVyciwgdXNlciA9IGxvZ2dpbmdfcnVuKHJlY29y
ZF9yZXN1bHRzPVRydWUsIHRlc3RzX2luY2x1ZGVkPVRydWUsIGhvc3Q9aG9zdCkKIAogICAgICAg
ICBzZWxmLmFzc2VydEVxdWFscyhyZXMsIHVuZXhwZWN0ZWRfdGVzdHNfY291bnQpCi0gICAgICAg
IHJlc3VsdHMgPSBzZWxmLnBhcnNlX2Z1bGxfcmVzdWx0cyhmcy5maWxlc1snL3RtcC9sYXlvdXQt
dGVzdC1yZXN1bHRzL2Z1bGxfcmVzdWx0cy5qc29uJ10pCisgICAgICAgIHJlc3VsdHMgPSBzZWxm
LnBhcnNlX2Z1bGxfcmVzdWx0cyhob3N0LmZpbGVzeXN0ZW0ucmVhZF90ZXh0X2ZpbGUoJy90bXAv
bGF5b3V0LXRlc3QtcmVzdWx0cy9mdWxsX3Jlc3VsdHMuanNvbicpKQogCiAgICAgICAgICMgQ2hl
Y2sgdG8gZW5zdXJlIHdlJ3JlIHBhc3NpbmcgYmFjayBpbWFnZSBkaWZmICVhZ2UgY29ycmVjdGx5
LgogICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhyZXN1bHRzWyd0ZXN0cyddWydmYWlsdXJlcydd
WydleHBlY3RlZCddWydpbWFnZS5odG1sJ11bJ2ltYWdlX2RpZmZfcGVyY2VudCddLCAxKQpAQCAt
Nzg5LDExICs3ODMsMTEgQEAgY2xhc3MgRW5kVG9FbmRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToK
ICAgICBkZWYgdGVzdF9yZWZ0ZXN0X3dpdGhfdHdvX25vdHJlZnMoc2VsZik6CiAgICAgICAgICMg
VGVzdCB0aGF0IHdlIHVwZGF0ZSBleHBlY3RhdGlvbnMgaW4gcGxhY2UuIElmIHRoZSBleHBlY3Rh
dGlvbgogICAgICAgICAjIGlzIG1pc3NpbmcsIHVwZGF0ZSB0aGUgZXhwZWN0ZWQgZ2VuZXJpYyBs
b2NhdGlvbi4KLSAgICAgICAgZnMgPSB1bml0X3Rlc3RfZmlsZXN5c3RlbSgpCi0gICAgICAgIHJl
cywgb3V0LCBlcnIsIF8gPSBsb2dnaW5nX3J1bihbJy0tbm8tc2hvdy1yZXN1bHRzJywgJ3JlZnRl
c3RzL2Zvby8nXSwgdGVzdHNfaW5jbHVkZWQ9VHJ1ZSwgZmlsZXN5c3RlbT1mcywgcmVjb3JkX3Jl
c3VsdHM9VHJ1ZSkKLSAgICAgICAgZmlsZV9saXN0ID0gZnMud3JpdHRlbl9maWxlcy5rZXlzKCkK
KyAgICAgICAgaG9zdCA9IE1vY2tIb3N0KCkKKyAgICAgICAgcmVzLCBvdXQsIGVyciwgXyA9IGxv
Z2dpbmdfcnVuKFsnLS1uby1zaG93LXJlc3VsdHMnLCAncmVmdGVzdHMvZm9vLyddLCB0ZXN0c19p
bmNsdWRlZD1UcnVlLCBob3N0PWhvc3QsIHJlY29yZF9yZXN1bHRzPVRydWUpCisgICAgICAgIGZp
bGVfbGlzdCA9IGhvc3QuZmlsZXN5c3RlbS53cml0dGVuX2ZpbGVzLmtleXMoKQogICAgICAgICBm
aWxlX2xpc3QucmVtb3ZlKCcvdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvdGVzdHNfcnVuMC50eHQn
KQotICAgICAgICBqc29uX3N0cmluZyA9IGZzLnJlYWRfdGV4dF9maWxlKCcvdG1wL2xheW91dC10
ZXN0LXJlc3VsdHMvZnVsbF9yZXN1bHRzLmpzb24nKQorICAgICAgICBqc29uX3N0cmluZyA9IGhv
c3QuZmlsZXN5c3RlbS5yZWFkX3RleHRfZmlsZSgnL3RtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2Z1
bGxfcmVzdWx0cy5qc29uJykKICAgICAgICAganNvbiA9IHNlbGYucGFyc2VfZnVsbF9yZXN1bHRz
KGpzb25fc3RyaW5nKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoIm11bHRpcGxlLW1hdGNoLXN1
Y2Nlc3MuaHRtbCIgbm90IGluIGpzb25bInRlc3RzIl1bInJlZnRlc3RzIl1bImZvbyJdKQogICAg
ICAgICBzZWxmLmFzc2VydFRydWUoIm11bHRpcGxlLW1pc21hdGNoLXN1Y2Nlc3MuaHRtbCIgbm90
IGluIGpzb25bInRlc3RzIl1bInJlZnRlc3RzIl1bImZvbyJdKQpAQCAtODIxLDEzICs4MTUsMTMg
QEAgY2xhc3MgUmViYXNlbGluZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0
X3Jlc2V0X3Jlc3VsdHMoc2VsZik6CiAgICAgICAgICMgVGVzdCB0aGF0IHdlIHVwZGF0ZSBleHBl
Y3RhdGlvbnMgaW4gcGxhY2UuIElmIHRoZSBleHBlY3RhdGlvbgogICAgICAgICAjIGlzIG1pc3Np
bmcsIHVwZGF0ZSB0aGUgZXhwZWN0ZWQgZ2VuZXJpYyBsb2NhdGlvbi4KLSAgICAgICAgZnMgPSB1
bml0X3Rlc3RfZmlsZXN5c3RlbSgpCisgICAgICAgIGhvc3QgPSBNb2NrSG9zdCgpCiAgICAgICAg
IHJlcywgb3V0LCBlcnIsIF8gPSBsb2dnaW5nX3J1bihbJy0tcGl4ZWwtdGVzdHMnLAogICAgICAg
ICAgICAgICAgICAgICAgICAgJy0tcmVzZXQtcmVzdWx0cycsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAncGFzc2VzL2ltYWdlLmh0bWwnLAogICAgICAgICAgICAgICAgICAgICAgICAgJ2ZhaWx1
cmVzL2V4cGVjdGVkL21pc3NpbmdfaW1hZ2UuaHRtbCddLAotICAgICAgICAgICAgICAgICAgICAg
ICAgdGVzdHNfaW5jbHVkZWQ9VHJ1ZSwgZmlsZXN5c3RlbT1mcywgbmV3X3Jlc3VsdHM9VHJ1ZSkK
LSAgICAgICAgZmlsZV9saXN0ID0gZnMud3JpdHRlbl9maWxlcy5rZXlzKCkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHRlc3RzX2luY2x1ZGVkPVRydWUsIGhvc3Q9aG9zdCwgbmV3X3Jlc3VsdHM9
VHJ1ZSkKKyAgICAgICAgZmlsZV9saXN0ID0gaG9zdC5maWxlc3lzdGVtLndyaXR0ZW5fZmlsZXMu
a2V5cygpCiAgICAgICAgIGZpbGVfbGlzdC5yZW1vdmUoJy90bXAvbGF5b3V0LXRlc3QtcmVzdWx0
cy90ZXN0c19ydW4wLnR4dCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHJlcywgMCkKICAg
ICAgICAgc2VsZi5hc3NlcnRUcnVlKG91dC5lbXB0eSgpKQpAQCAtODM4LDE0ICs4MzIsMTQgQEAg
Y2xhc3MgUmViYXNlbGluZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X21p
c3NpbmdfcmVzdWx0cyhzZWxmKToKICAgICAgICAgIyBUZXN0IHRoYXQgd2UgdXBkYXRlIGV4cGVj
dGF0aW9ucyBpbiBwbGFjZS4gSWYgdGhlIGV4cGVjdGF0aW9uCiAgICAgICAgICMgaXMgbWlzc2lu
ZywgdXBkYXRlIHRoZSBleHBlY3RlZCBnZW5lcmljIGxvY2F0aW9uLgotICAgICAgICBmcyA9IHVu
aXRfdGVzdF9maWxlc3lzdGVtKCkKKyAgICAgICAgaG9zdCA9IE1vY2tIb3N0KCkKICAgICAgICAg
cmVzLCBvdXQsIGVyciwgXyA9IGxvZ2dpbmdfcnVuKFsnLS1uby1zaG93LXJlc3VsdHMnLAogICAg
ICAgICAgICAgICAgICAgICAgJ2ZhaWx1cmVzL3VuZXhwZWN0ZWQvbWlzc2luZ190ZXh0Lmh0bWwn
LAogICAgICAgICAgICAgICAgICAgICAgJ2ZhaWx1cmVzL3VuZXhwZWN0ZWQvbWlzc2luZ19pbWFn
ZS5odG1sJywKICAgICAgICAgICAgICAgICAgICAgICdmYWlsdXJlcy91bmV4cGVjdGVkL21pc3Np
bmdfYXVkaW8uaHRtbCcsCiAgICAgICAgICAgICAgICAgICAgICAnZmFpbHVyZXMvdW5leHBlY3Rl
ZC9taXNzaW5nX3JlbmRlcl90cmVlX2R1bXAuaHRtbCddLAotICAgICAgICAgICAgICAgICAgICAg
dGVzdHNfaW5jbHVkZWQ9VHJ1ZSwgZmlsZXN5c3RlbT1mcywgbmV3X3Jlc3VsdHM9VHJ1ZSkKLSAg
ICAgICAgZmlsZV9saXN0ID0gZnMud3JpdHRlbl9maWxlcy5rZXlzKCkKKyAgICAgICAgICAgICAg
ICAgICAgIHRlc3RzX2luY2x1ZGVkPVRydWUsIGhvc3Q9aG9zdCwgbmV3X3Jlc3VsdHM9VHJ1ZSkK
KyAgICAgICAgZmlsZV9saXN0ID0gaG9zdC5maWxlc3lzdGVtLndyaXR0ZW5fZmlsZXMua2V5cygp
CiAgICAgICAgIGZpbGVfbGlzdC5yZW1vdmUoJy90bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy90ZXN0
c19ydW4wLnR4dCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHJlcywgMCkKICAgICAgICAg
c2VsZi5hc3NlcnRGYWxzZShvdXQuZW1wdHkoKSkKQEAgLTg1NywxMyArODUxLDEzIEBAIGNsYXNz
IFJlYmFzZWxpbmVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9uZXdfYmFz
ZWxpbmUoc2VsZik6CiAgICAgICAgICMgVGVzdCB0aGF0IHdlIHVwZGF0ZSB0aGUgcGxhdGZvcm0g
ZXhwZWN0YXRpb25zLiBJZiB0aGUgZXhwZWN0YXRpb24KICAgICAgICAgIyBpcyBtc3NpbmcsIHRo
ZW4gY3JlYXRlIGEgbmV3IGV4cGVjdGF0aW9uIGluIHRoZSBwbGF0Zm9ybSBkaXIuCi0gICAgICAg
IGZzID0gdW5pdF90ZXN0X2ZpbGVzeXN0ZW0oKQorICAgICAgICBob3N0ID0gTW9ja0hvc3QoKQog
ICAgICAgICByZXMsIG91dCwgZXJyLCBfID0gbG9nZ2luZ19ydW4oWyctLXBpeGVsLXRlc3RzJywK
ICAgICAgICAgICAgICAgICAgICAgICAgICctLW5ldy1iYXNlbGluZScsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAncGFzc2VzL2ltYWdlLmh0bWwnLAogICAgICAgICAgICAgICAgICAgICAgICAg
J2ZhaWx1cmVzL2V4cGVjdGVkL21pc3NpbmdfaW1hZ2UuaHRtbCddLAotICAgICAgICAgICAgICAg
ICAgICB0ZXN0c19pbmNsdWRlZD1UcnVlLCBmaWxlc3lzdGVtPWZzLCBuZXdfcmVzdWx0cz1UcnVl
KQotICAgICAgICBmaWxlX2xpc3QgPSBmcy53cml0dGVuX2ZpbGVzLmtleXMoKQorICAgICAgICAg
ICAgICAgICAgICB0ZXN0c19pbmNsdWRlZD1UcnVlLCBob3N0PWhvc3QsIG5ld19yZXN1bHRzPVRy
dWUpCisgICAgICAgIGZpbGVfbGlzdCA9IGhvc3QuZmlsZXN5c3RlbS53cml0dGVuX2ZpbGVzLmtl
eXMoKQogICAgICAgICBmaWxlX2xpc3QucmVtb3ZlKCcvdG1wL2xheW91dC10ZXN0LXJlc3VsdHMv
dGVzdHNfcnVuMC50eHQnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhyZXMsIDApCiAgICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZShvdXQuZW1wdHkoKSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdG9fYmVfbW92ZWQvcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHMu
cHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3RvX2JlX21vdmVkL3JlYmFzZWxpbmVfY2hyb21p
dW1fd2Via2l0X3Rlc3RzLnB5CmluZGV4IGMyYjEwYzQzNTczNDllYjcwMmU4ZTczODAxYzllY2Ri
NzBkYmMwMTIuLjgyMjhkNDM4MWJhMTBjMzViYjk5MzZkYWQ5NmVmODlmNDk4OGY0NTcgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9fYmVfbW92ZWQvcmViYXNlbGluZV9jaHJv
bWl1bV93ZWJraXRfdGVzdHMucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b19iZV9t
b3ZlZC9yZWJhc2VsaW5lX2Nocm9taXVtX3dlYmtpdF90ZXN0cy5weQpAQCAtMTQ1LDcgKzE0NSw3
IEBAIGNsYXNzIFJlYmFzZWxpbmVyKG9iamVjdCk6CiAKICAgICBSRVZJU0lPTl9SRUdFWCA9IHIn
PGEgaHJlZj1cIihcZCspL1wiPicKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBydW5uaW5nX3Bv
cnQsIHRhcmdldF9wb3J0LCBwbGF0Zm9ybSwgb3B0aW9ucywgdXJsX2ZldGNoZXIsIHppcF9mYWN0
b3J5LCBzY20sIGxvZ2dlZF9iZWZvcmU9RmFsc2UpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBo
b3N0LCBydW5uaW5nX3BvcnQsIHRhcmdldF9wb3J0LCBwbGF0Zm9ybSwgb3B0aW9ucywgdXJsX2Zl
dGNoZXIsIHppcF9mYWN0b3J5LCBsb2dnZWRfYmVmb3JlPUZhbHNlKToKICAgICAgICAgIiIiCiAg
ICAgICAgIEFyZ3M6CiAgICAgICAgICAgICBydW5uaW5nX3BvcnQ6IHRoZSBQb3J0IHRoZSBzY3Jp
cHQgaXMgcnVubmluZyBvbi4KQEAgLTE2MiwxMiArMTYyLDEwIEBAIGNsYXNzIFJlYmFzZWxpbmVy
KG9iamVjdCk6CiAgICAgICAgIHNlbGYuX3BsYXRmb3JtID0gcGxhdGZvcm0KICAgICAgICAgc2Vs
Zi5fb3B0aW9ucyA9IG9wdGlvbnMKICAgICAgICAgc2VsZi5fcG9ydCA9IHJ1bm5pbmdfcG9ydAot
ICAgICAgICBzZWxmLl9maWxlc3lzdGVtID0gcnVubmluZ19wb3J0Ll9maWxlc3lzdGVtCisgICAg
ICAgIHNlbGYuX2ZpbGVzeXN0ZW0gPSBob3N0LmZpbGVzeXN0ZW0KICAgICAgICAgc2VsZi5fdGFy
Z2V0X3BvcnQgPSB0YXJnZXRfcG9ydAogCi0gICAgICAgICMgRklYTUU6IFRoaXMgc2hvdWxkIGdl
dCBpdHMgUG9ydEZhY3RvcnkgZnJvbSBhIEhvc3Qgb2JqZWN0LgotICAgICAgICAjIE5vdGU6IHVz
aW5nIHJ1bm5pbmdfcG9ydC5leGVjdXRpdmUsIHJ1bm5pbmdfcG9ydC51c2VyIHNpbmNlIHdlIGNh
bid0IGdldCB0aGVtIGZyb20gYSBob3N0LgotICAgICAgICBzZWxmLl9yZWJhc2VsaW5lX3BvcnQg
PSBQb3J0RmFjdG9yeSgpLmdldChwbGF0Zm9ybSwgb3B0aW9ucywgZmlsZXN5c3RlbT1zZWxmLl9m
aWxlc3lzdGVtLCBleGVjdXRpdmU9cnVubmluZ19wb3J0LmV4ZWN1dGl2ZSwgdXNlcj1ydW5uaW5n
X3BvcnQudXNlcikKKyAgICAgICAgc2VsZi5fcmViYXNlbGluZV9wb3J0ID0gaG9zdC5wb3J0X2Zh
Y3RvcnkuZ2V0KHBsYXRmb3JtLCBvcHRpb25zKQogICAgICAgICBzZWxmLl9yZWJhc2VsaW5pbmdf
dGVzdHMgPSBzZXQoKQogICAgICAgICBzZWxmLl9yZWJhc2VsaW5lZF90ZXN0cyA9IFtdCiAgICAg
ICAgIHNlbGYuX2xvZ2dlZF9iZWZvcmUgPSBsb2dnZWRfYmVmb3JlCkBAIC0xODIsNyArMTgwLDcg
QEAgY2xhc3MgUmViYXNlbGluZXIob2JqZWN0KToKICAgICAgICAgICAgIHNlbGYuX3JlYmFzZWxp
bmVfcG9ydCwgTm9uZSwgZXhwZWN0YXRpb25zX3N0ciwgc2VsZi5fcmViYXNlbGluZV9wb3J0LnRl
c3RfY29uZmlndXJhdGlvbigpLCBGYWxzZSkKICAgICAgICAgc2VsZi5fdXJsX2ZldGNoZXIgPSB1
cmxfZmV0Y2hlcgogICAgICAgICBzZWxmLl96aXBfZmFjdG9yeSA9IHppcF9mYWN0b3J5Ci0gICAg
ICAgIHNlbGYuX3NjbSA9IHNjbQorICAgICAgICBzZWxmLl9zY20gPSBob3N0LnNjbSgpCiAKICAg
ICBkZWYgcnVuKHNlbGYpOgogICAgICAgICAiIiJSdW4gcmViYXNlbGluZSBwcm9jZXNzLiIiIgpA
QCAtOTQ4LDcgKzk0Niw3IEBAIGRlZiBtYWluKGFyZ3MpOgogICAgIGlmIG5vdCBob3N0X3BvcnRf
b2JqIG9yIG5vdCB0YXJnZXRfcG9ydF9vYmo6CiAgICAgICAgIHJldHVybiAxCiAKLSAgICB1cmxf
ZmV0Y2hlciA9IHVybGZldGNoZXIuVXJsRmV0Y2hlcihob3N0X3BvcnRfb2JqLl9maWxlc3lzdGVt
KQorICAgIHVybF9mZXRjaGVyID0gdXJsZmV0Y2hlci5VcmxGZXRjaGVyKGhvc3QuZmlsZXN5c3Rl
bSkKIAogICAgICMgV2UgdXNlIHRoZSBkZWZhdWx0IHppcCBmYWN0b3J5IG1ldGhvZC4KICAgICB6
aXBfZmFjdG9yeSA9IE5vbmUKQEAgLTk1Niw3ICs5NTQsNyBAQCBkZWYgbWFpbihhcmdzKToKICAg
ICAjIEZJWE1FOiBTQ00gbW9kdWxlIGRvZXNuJ3QgaGFuZGxlIHBhdGhzIHRoYXQgYXJlbid0IHJl
bGF0aXZlIHRvIHRoZSBjaGVja291dF9yb290IGNvbnNpc3RlbnRseS4KICAgICBob3N0X3BvcnRf
b2JqLl9maWxlc3lzdGVtLmNoZGlyKGhvc3Quc2NtKCkuY2hlY2tvdXRfcm9vdCkKIAotICAgIHJl
dF9jb2RlID0gcmVhbF9tYWluKG9wdGlvbnMsIHRhcmdldF9vcHRpb25zLCBob3N0X3BvcnRfb2Jq
LCB0YXJnZXRfcG9ydF9vYmosIHVybF9mZXRjaGVyLCB6aXBfZmFjdG9yeSwgaG9zdC5zY20oKSkK
KyAgICByZXRfY29kZSA9IHJlYWxfbWFpbihob3N0LCBvcHRpb25zLCB0YXJnZXRfb3B0aW9ucywg
aG9zdF9wb3J0X29iaiwgdGFyZ2V0X3BvcnRfb2JqLCB1cmxfZmV0Y2hlciwgemlwX2ZhY3Rvcnkp
CiAgICAgaWYgbm90IHJldF9jb2RlIGFuZCBsb2dfaGFuZGxlci5udW1fZmFpbHVyZXM6CiAgICAg
ICAgIHJldF9jb2RlID0gMQogICAgIHByaW50ICcnCkBAIC05NjcsMTMgKzk2NSwxNCBAQCBkZWYg
bWFpbihhcmdzKToKICAgICByZXR1cm4gcmV0X2NvZGUKIAogCi1kZWYgcmVhbF9tYWluKG9wdGlv
bnMsIHRhcmdldF9vcHRpb25zLCBob3N0X3BvcnRfb2JqLCB0YXJnZXRfcG9ydF9vYmosIHVybF9m
ZXRjaGVyLCB6aXBfZmFjdG9yeSwgc2NtX29iaik6CitkZWYgcmVhbF9tYWluKGhvc3QsIG9wdGlv
bnMsIHRhcmdldF9vcHRpb25zLCBob3N0X3BvcnRfb2JqLCB0YXJnZXRfcG9ydF9vYmosIHVybF9m
ZXRjaGVyLCB6aXBfZmFjdG9yeSk6CiAgICAgIiIiTWFpbiBmdW5jdGlvbiB0byBwcm9kdWNlIG5l
dyBiYXNlbGluZXMuIFRoZSBSZWJhc2VsaW5lciBvYmplY3QgdXNlcyB0d28KICAgICBkaWZmZXJl
bnQgUG9ydCBvYmplY3RzIC0gb25lIHRvIHJlcHJlc2VudCB0aGUgbWFjaGluZSB0aGUgb2JqZWN0
IGlzIHJ1bm5pbmcKICAgICBvbiwgYW5kIG9uZSB0byByZXByZXNlbnQgdGhlIHBvcnQgd2hvc2Ug
ZXhwZWN0YXRpb25zIGFyZSBiZWluZyB1cGRhdGVkLgogICAgIEUuZy4sIHlvdSBjYW4gcnVuIHRo
ZSBzY3JpcHQgb24gYSBtYWMgYW5kIHJlYmFzZWxpbmUgdGhlICd3aW4nIHBvcnQuCiAKICAgICBB
cmdzOgorICAgICAgICBob3N0OiBIb3N0IG9iamVjdAogICAgICAgICBvcHRpb25zOiBjb21tYW5k
LWxpbmUgYXJndW1lbnQgdXNlZCBmb3IgdGhlIGhvc3RfcG9ydF9vYmogKHNlZSBiZWxvdykKICAg
ICAgICAgdGFyZ2V0X29wdGlvbnM6IGNvbW1hbmRfbGluZSBhcmd1bWVudCB1c2VkIGZvciB0aGUg
dGFyZ2V0X3BvcnRfb2JqLgogICAgICAgICAgICAgVGhpcyBvYmplY3QgbWF5IGhhdmUgc2xpZ2h0
bHkgZGlmZmVyZW50IHZhbHVlcyB0aGFuIHxvcHRpb25zfC4KQEAgLTk4Niw3ICs5ODUsNiBAQCBk
ZWYgcmVhbF9tYWluKG9wdGlvbnMsIHRhcmdldF9vcHRpb25zLCBob3N0X3BvcnRfb2JqLCB0YXJn
ZXRfcG9ydF9vYmosIHVybF9mZXRjaAogICAgICAgICB1cmxfZmV0Y2hlcjogb2JqZWN0IHVzZWQg
dG8gZG93bmxvYWQgdGhlIGJ1aWxkIGFyY2hpdmVzIGZyb20gdGhlIGJvdHMKICAgICAgICAgemlw
X2ZhY3Rvcnk6IGZhY3RvcnkgZnVuY3Rpb24gdXNlZCB0byBjcmVhdGUgemlwIGZpbGUgb2JqZWN0
cyBmb3IKICAgICAgICAgICAgIHRoZSBhcmNoaXZlcy4KLSAgICAgICAgc2NtX29iajogb2JqZWN0
IHVzZWQgdG8gYWRkIG5ldyBiYXNlbGluZXMgdG8gdGhlIHNvdXJjZSBjb250cm9sIHN5c3RlbS4K
ICAgICAiIiIKICAgICBvcHRpb25zLmh0bWxfZGlyZWN0b3J5ID0gc2V0dXBfaHRtbF9kaXJlY3Rv
cnkoaG9zdF9wb3J0X29iai5fZmlsZXN5c3RlbSwgb3B0aW9ucy5odG1sX2RpcmVjdG9yeSkKICAg
ICBhbGxfcGxhdGZvcm1zID0gdGFyZ2V0X3BvcnRfb2JqLmFsbF9iYXNlbGluZV92YXJpYW50cygp
CkBAIC0xMDEyLDkgKzEwMTAsOSBAQCBkZWYgcmVhbF9tYWluKG9wdGlvbnMsIHRhcmdldF9vcHRp
b25zLCBob3N0X3BvcnRfb2JqLCB0YXJnZXRfcG9ydF9vYmosIHVybF9mZXRjaAogICAgIHJlYmFz
ZWxpbmVkX3Rlc3RzID0gc2V0KCkKICAgICBsb2dnZWRfYmVmb3JlID0gRmFsc2UKICAgICBmb3Ig
cGxhdGZvcm0gaW4gcmViYXNlbGluZV9wbGF0Zm9ybXM6Ci0gICAgICAgIHJlYmFzZWxpbmVyID0g
UmViYXNlbGluZXIoaG9zdF9wb3J0X29iaiwgdGFyZ2V0X3BvcnRfb2JqLAorICAgICAgICByZWJh
c2VsaW5lciA9IFJlYmFzZWxpbmVyKGhvc3QsIGhvc3RfcG9ydF9vYmosIHRhcmdldF9wb3J0X29i
aiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGF0Zm9ybSwgb3B0aW9ucywg
dXJsX2ZldGNoZXIsIHppcF9mYWN0b3J5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNjbV9vYmosIGxvZ2dlZF9iZWZvcmUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbG9nZ2VkX2JlZm9yZSkKIAogICAgICAgICBfbG9nLmRlYnVnKCcnKQogICAgICAgICBs
b2dfZGFzaGVkX3N0cmluZygnUmViYXNlbGluZSBzdGFydGVkJywgcGxhdGZvcm0pCmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3RvX2JlX21vdmVkL3JlYmFzZWxpbmVfY2hyb21p
dW1fd2Via2l0X3Rlc3RzX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b19i
ZV9tb3ZlZC9yZWJhc2VsaW5lX2Nocm9taXVtX3dlYmtpdF90ZXN0c191bml0dGVzdC5weQppbmRl
eCBmM2Q5MzU0MDVhNmI3ZDNhN2JkMWMwMjFhMDRiYjY0YmZlZWVmYzkwLi5mOTUzMzAzYzdkMTQ1
MzAxNDkxMzAyNTFkZTQ1YTJhMGIxZDAyZGJhIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L3RvX2JlX21vdmVkL3JlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzX3VuaXR0
ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9fYmVfbW92ZWQvcmViYXNlbGlu
ZV9jaHJvbWl1bV93ZWJraXRfdGVzdHNfdW5pdHRlc3QucHkKQEAgLTM5LDEwICszOSw3IEBAIGZy
b20gd2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQgemlwZmlsZXNldF9tb2NrCiBmcm9tIHdl
YmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0IG91dHB1dGNhcHR1cmUKIGZyb20gd2Via2l0cHku
Y29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IEV4ZWN1dGl2ZSwgU2NyaXB0RXJyb3IKIAot
ZnJvbSB3ZWJraXRweS5jb21tb24uY2hlY2tvdXQuc2NtLnNjbV9tb2NrIGltcG9ydCBNb2NrU0NN
Ci0KIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzIGltcG9ydCBwb3J0Ci1mcm9tIHdlYmtpdHB5
LmxheW91dF90ZXN0cy5wb3J0LnRlc3QgaW1wb3J0IHVuaXRfdGVzdF9maWxlc3lzdGVtCiBmcm9t
IHdlYmtpdHB5LnRvX2JlX21vdmVkIGltcG9ydCByZWJhc2VsaW5lX2Nocm9taXVtX3dlYmtpdF90
ZXN0cwogCiAKQEAgLTc5LDEwICs3Niw5IEBAIGRlZiB0ZXN0X29wdGlvbnMoKToKIGRlZiB0ZXN0
X2hvc3RfcG9ydF9hbmRfZmlsZXN5c3RlbShvcHRpb25zLCBleHBlY3RhdGlvbnMpOgogICAgIGhv
c3QgPSBNb2NrSG9zdCgpCiAgICAgaG9zdF9wb3J0X29iaiA9IGhvc3QucG9ydF9mYWN0b3J5Lmdl
dCgndGVzdCcsIG9wdGlvbnMpCi0KICAgICBleHBlY3RhdGlvbnNfcGF0aCA9IGhvc3RfcG9ydF9v
YmoucGF0aF90b190ZXN0X2V4cGVjdGF0aW9uc19maWxlKCkKLSAgICBob3N0X3BvcnRfb2JqLmZp
bGVzeXN0ZW0ud3JpdGVfdGV4dF9maWxlKGV4cGVjdGF0aW9uc19wYXRoLCBleHBlY3RhdGlvbnMp
Ci0gICAgcmV0dXJuIChob3N0X3BvcnRfb2JqLCBob3N0X3BvcnRfb2JqLmZpbGVzeXN0ZW0pCisg
ICAgaG9zdC5maWxlc3lzdGVtLndyaXRlX3RleHRfZmlsZShleHBlY3RhdGlvbnNfcGF0aCwgZXhw
ZWN0YXRpb25zKQorICAgIHJldHVybiAoaG9zdCwgaG9zdF9wb3J0X29iaiwgaG9zdC5maWxlc3lz
dGVtKQogCiAKIGRlZiB0ZXN0X3VybF9mZXRjaGVyKGZpbGVzeXN0ZW0pOgpAQCAtMjA1LDI0ICsy
MDEsMjAgQEAgY2xhc3MgVGVzdFJlYmFzZWxpbmVyKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAg
IGRlZiBtYWtlX3JlYmFzZWxpbmVyKHNlbGYsIGV4cGVjdGF0aW9ucyk6CiAgICAgICAgIG9wdGlv
bnMgPSB0ZXN0X29wdGlvbnMoKQotICAgICAgICBob3N0X3BvcnRfb2JqLCBmaWxlc3lzdGVtID0g
dGVzdF9ob3N0X3BvcnRfYW5kX2ZpbGVzeXN0ZW0ob3B0aW9ucywgZXhwZWN0YXRpb25zKQorICAg
ICAgICBob3N0LCBob3N0X3BvcnRfb2JqLCBmaWxlc3lzdGVtID0gdGVzdF9ob3N0X3BvcnRfYW5k
X2ZpbGVzeXN0ZW0ob3B0aW9ucywgZXhwZWN0YXRpb25zKQogCiAgICAgICAgIHRhcmdldF9vcHRp
b25zID0gb3B0aW9ucwotICAgICAgICBob3N0ID0gTW9ja0hvc3QoKQotICAgICAgICB0YXJnZXRf
cG9ydF9vYmogPSBob3N0LnBvcnRfZmFjdG9yeS5nZXQoJ3Rlc3QnLCB0YXJnZXRfb3B0aW9ucywg
ZmlsZXN5c3RlbT1maWxlc3lzdGVtKQotICAgICAgICB0YXJnZXRfcG9ydF9vYmouX2V4cGVjdGF0
aW9ucyA9IGV4cGVjdGF0aW9ucworICAgICAgICB0YXJnZXRfcG9ydF9vYmogPSBob3N0LnBvcnRf
ZmFjdG9yeS5nZXQoJ3Rlc3QnLCB0YXJnZXRfb3B0aW9ucykKICAgICAgICAgcGxhdGZvcm0gPSB0
YXJnZXRfcG9ydF9vYmoubmFtZSgpCiAKICAgICAgICAgdXJsX2ZldGNoZXIgPSB0ZXN0X3VybF9m
ZXRjaGVyKGZpbGVzeXN0ZW0pCiAgICAgICAgIHppcF9mYWN0b3J5ID0gdGVzdF96aXBfZmFjdG9y
eSgpCi0gICAgICAgIG1vY2tfc2NtID0gTW9ja1NDTShmaWxlc3lzdGVtKQotICAgICAgICBmaWxl
c3lzdGVtLm1heWJlX21ha2VfZGlyZWN0b3J5KG1vY2tfc2NtLmNoZWNrb3V0X3Jvb3QpCiAKICAg
ICAgICAgIyBGSVhNRTogU0NNIG1vZHVsZSBkb2Vzbid0IGhhbmRsZSBwYXRocyB0aGF0IGFyZW4n
dCByZWxhdGl2ZSB0byB0aGUgY2hlY2tvdXRfcm9vdCBjb25zaXN0ZW50bHkuCiAgICAgICAgIGZp
bGVzeXN0ZW0uY2hkaXIoIi90ZXN0LmNoZWNrb3V0IikKIAotICAgICAgICByZWJhc2VsaW5lciA9
IHJlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzLlJlYmFzZWxpbmVyKGhvc3RfcG9ydF9v
YmosCi0gICAgICAgICAgICB0YXJnZXRfcG9ydF9vYmosIHBsYXRmb3JtLCBvcHRpb25zLCB1cmxf
ZmV0Y2hlciwgemlwX2ZhY3RvcnksIG1vY2tfc2NtKQorICAgICAgICByZWJhc2VsaW5lciA9IHJl
YmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzLlJlYmFzZWxpbmVyKGhvc3QsIGhvc3RfcG9y
dF9vYmosCisgICAgICAgICAgICB0YXJnZXRfcG9ydF9vYmosIHBsYXRmb3JtLCBvcHRpb25zLCB1
cmxfZmV0Y2hlciwgemlwX2ZhY3RvcnkpCiAgICAgICAgIHJldHVybiByZWJhc2VsaW5lciwgZmls
ZXN5c3RlbQogCiAgICAgZGVmIHRlc3Rfbm9vcChzZWxmKToKQEAgLTM1MCwxOSArMzQyLDE3IEBA
IGNsYXNzIFRlc3RSZWFsTWFpbih1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIGV4cGVjdGF0
aW9ucyA9ICJCVUdYIFJFQkFTRUxJTkUgOiBmYWlsdXJlcy9leHBlY3RlZC9pbWFnZS5odG1sID0g
SU1BR0UiCiAKICAgICAgICAgb3B0aW9ucyA9IHRlc3Rfb3B0aW9ucygpCi0gICAgICAgIGhvc3Rf
cG9ydF9vYmosIGZpbGVzeXN0ZW0gPSB0ZXN0X2hvc3RfcG9ydF9hbmRfZmlsZXN5c3RlbShvcHRp
b25zLCBleHBlY3RhdGlvbnMpCisgICAgICAgIGhvc3QsIGhvc3RfcG9ydF9vYmosIGZpbGVzeXN0
ZW0gPSB0ZXN0X2hvc3RfcG9ydF9hbmRfZmlsZXN5c3RlbShvcHRpb25zLCBleHBlY3RhdGlvbnMp
CiAgICAgICAgIHVybF9mZXRjaGVyID0gdGVzdF91cmxfZmV0Y2hlcihmaWxlc3lzdGVtKQogICAg
ICAgICB6aXBfZmFjdG9yeSA9IHRlc3RfemlwX2ZhY3RvcnkoKQotICAgICAgICBtb2NrX3NjbSA9
IE1vY2tTQ00oKQotICAgICAgICBmaWxlc3lzdGVtLm1heWJlX21ha2VfZGlyZWN0b3J5KG1vY2tf
c2NtLmNoZWNrb3V0X3Jvb3QpCiAKICAgICAgICAgIyBGSVhNRTogU0NNIG1vZHVsZSBkb2Vzbid0
IGhhbmRsZSBwYXRocyB0aGF0IGFyZW4ndCByZWxhdGl2ZSB0byB0aGUgY2hlY2tvdXRfcm9vdCBj
b25zaXN0ZW50bHkuCiAgICAgICAgIGZpbGVzeXN0ZW0uY2hkaXIoIi90ZXN0LmNoZWNrb3V0IikK
IAogICAgICAgICBvYyA9IG91dHB1dGNhcHR1cmUuT3V0cHV0Q2FwdHVyZSgpCiAgICAgICAgIG9j
LmNhcHR1cmVfb3V0cHV0KCkKLSAgICAgICAgcmVzID0gcmViYXNlbGluZV9jaHJvbWl1bV93ZWJr
aXRfdGVzdHMucmVhbF9tYWluKG9wdGlvbnMsIG9wdGlvbnMsCi0gICAgICAgICAgICBob3N0X3Bv
cnRfb2JqLCBob3N0X3BvcnRfb2JqLCB1cmxfZmV0Y2hlciwgemlwX2ZhY3RvcnksIG1vY2tfc2Nt
KQorICAgICAgICByZXMgPSByZWJhc2VsaW5lX2Nocm9taXVtX3dlYmtpdF90ZXN0cy5yZWFsX21h
aW4oaG9zdCwgb3B0aW9ucywgb3B0aW9ucywKKyAgICAgICAgICAgIGhvc3RfcG9ydF9vYmosIGhv
c3RfcG9ydF9vYmosIHVybF9mZXRjaGVyLCB6aXBfZmFjdG9yeSkKICAgICAgICAgb2MucmVzdG9y
ZV9vdXRwdXQoKQogCiAgICAgICAgICMgV2UgZXhwZWN0IHRvIGhhdmUgd3JpdHRlbiAzOCBmaWxl
cyBvdmVyIHRoZSBjb3Vyc2Ugb2YgdGhpcyByZWJhc2VsaW5lOgpAQCAtMzgyLDcgKzM3MiwxMSBA
QCBjbGFzcyBUZXN0SHRtbEdlbmVyYXRvcih1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIG1h
a2VfZ2VuZXJhdG9yKHNlbGYsIGZpbGVzLCB0ZXN0cyk6CiAgICAgICAgIG9wdGlvbnMgPSBNb2Nr
T3B0aW9ucyhjb25maWd1cmF0aW9uPU5vbmUsIGh0bWxfZGlyZWN0b3J5PScvdG1wJykKICAgICAg
ICAgaG9zdCA9IE1vY2tIb3N0KCkKLSAgICAgICAgaG9zdF9wb3J0ID0gaG9zdC5wb3J0X2ZhY3Rv
cnkuZ2V0KCd0ZXN0Jywgb3B0aW9ucywgZmlsZXN5c3RlbT11bml0X3Rlc3RfZmlsZXN5c3RlbShm
aWxlcykpCisgICAgICAgIGZzID0gaG9zdC5maWxlc3lzdGVtCisgICAgICAgIGZvciBmaWxlbmFt
ZSwgY29udGVudHMgaW4gZmlsZXMuaXRlcml0ZW1zKCk6CisgICAgICAgICAgICBmcy5tYXliZV9t
YWtlX2RpcmVjdG9yeShmcy5kaXJuYW1lKGZpbGVuYW1lKSkKKyAgICAgICAgICAgIGZzLndyaXRl
X2JpbmFyeV9maWxlKGZpbGVuYW1lLCBjb250ZW50cykKKyAgICAgICAgaG9zdF9wb3J0ID0gaG9z
dC5wb3J0X2ZhY3RvcnkuZ2V0KCd0ZXN0Jywgb3B0aW9ucykKICAgICAgICAgZ2VuZXJhdG9yID0g
cmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHMuSHRtbEdlbmVyYXRvcihob3N0X3BvcnQs
CiAgICAgICAgICAgICB0YXJnZXRfcG9ydD1Ob25lLCBvcHRpb25zPW9wdGlvbnMsIHBsYXRmb3Jt
cz1bJ3Rlc3QtbWFjLWxlb3BhcmQnXSwgcmViYXNlbGluaW5nX3Rlc3RzPXRlc3RzKQogICAgICAg
ICByZXR1cm4gZ2VuZXJhdG9yLCBob3N0X3BvcnQK
</data>

          </attachment>
      

    </bug>

</bugzilla>