<?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>48072</bug_id>
          
          <creation_ts>2010-10-21 09:17:57 -0700</creation_ts>
          <short_desc>test_darwin reads from my disk and logs</short_desc>
          <delta_ts>2011-01-24 17:50: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>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>52863</dependson>
          <blocked>48728</blocked>
    
    <blocked>47527</blocked>
    
    <blocked>47879</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Dirk Pranke">dpranke</assigned_to>
          <cc>abarth</cc>
    
    <cc>aroben</cc>
    
    <cc>dpranke</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>297458</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-10-21 09:17:57 -0700</bug_when>
    <thetext>test_darwin reads from my disk and logs

test_darwin (webkitpy.layout_tests.run_webkit_tests_unittest.DryrunTest) ... 
FAILURES FOR PLATFORM: MAC-SNOWLEOPARD, BUILD_TYPE: RELEASE
Line:256 Path does not exist. LayoutTests/plugins/pass-different-npp-struct.html


FAILURES FOR PLATFORM: MAC-SNOWLEOPARD, BUILD_TYPE: RELEASE
Line:222 Path does not exist. LayoutTests/plugins/pass-different-npp-struct.html

ok

I assume it&apos;s reading from /tmp/layout-test-results?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297527</commentid>
    <comment_count>1</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-10-21 11:40:52 -0700</bug_when>
    <thetext>Proposal: Disable or remove all tests that touch the disk and/or network.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297550</commentid>
    <comment_count>2</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-10-21 12:11:21 -0700</bug_when>
    <thetext>test_darwin is supposed to read from your disk. It&apos;s testing that the darwin port of NRWT actually works. It&apos;s odd that you&apos;re getting errors; was there something wrong/changed in your checkout?

This is a variant of the http server starting up bug ... this actually intended to be an integration test, so I don&apos;t want to remove it completely. However it&apos;s fair that we should change when we want it to run.

I wouldn&apos;t expect it to be reading from /tmp/layout-test-results, though. Writing, yes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297564</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-10-21 12:27:56 -0700</bug_when>
    <thetext>I think we need a separate integration test suite.  test-webkitpy is not intended to be for integration tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297728</commentid>
    <comment_count>4</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-10-21 16:58:32 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; I think we need a separate integration test suite.  test-webkitpy is not intended to be for integration tests.

The tests under webkitpy/layout_tests are there intentionally, and I want them to be run regularly, at least in conjunction with running new-run-webkit-tests as part of a test cycle (e.g., on bots that run new-webkit-tests). The rationale for this is that I don&apos;t want a bot to fail b/c of a bug in the code that is exposed by new-run-webkit-tests actually running the layout tests, and to not also see that it fails the regression suite for the code first.

It may be that they shouldn&apos;t be called *_unittest.py, and we need a separate script or bot step to run them.

What is your intent w/ test-webkitpy? When do you want it to be able to run, etc.? It seems like you want it to not fail on things that would actually cause NRWT (with some combination of parameters) to fail ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297755</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-10-21 17:46:09 -0700</bug_when>
    <thetext>&gt; What is your intent w/ test-webkitpy?

Maybe we should add run-webkitpy-unittests which is the subset of test-webkpy that are unit tests (e.g., no external dependencies).

&gt; When do you want it to be able to run, etc.?

I&apos;d like it to be fast and not make assumptions about the configuration / state of my system.

&gt; It seems like you want it to not fail on things that would actually cause NRWT (with some combination of parameters) to fail ?

I&apos;d love to be able to test enough of NRWT with unit tests to make that true.  However, there&apos;s a trade-off between some things and the external dependencies they introduce.  We&apos;ve managed to test webkit-patch, commit-queue, the EWS, SheriffBot, and the style bot all with unit tests.  Now, we missing things from time to time, but the unit tests are hugely helpful.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297765</commentid>
    <comment_count>6</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-10-21 18:07:01 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; &gt; What is your intent w/ test-webkitpy?
&gt; 
&gt; Maybe we should add run-webkitpy-unittests which is the subset of test-webkpy that are unit tests (e.g., no external dependencies).
&gt;

Sure, this is an option.
 
&gt; &gt; When do you want it to be able to run, etc.?
&gt; 
&gt; I&apos;d like it to be fast and not make assumptions about the configuration / state of my system.
&gt;

And it is certainly possible to find a subset of the the layout_tests/* unittests that will meet this criteria (esp. after I land the filesystem changes), but not all of them will.
 
&gt; &gt; It seems like you want it to not fail on things that would actually cause NRWT (with some combination of parameters) to fail ?
&gt; 
&gt; I&apos;d love to be able to test enough of NRWT with unit tests to make that true.  However, there&apos;s a trade-off between some things and the external dependencies they introduce.  We&apos;ve managed to test webkit-patch, commit-queue, the EWS, SheriffBot, and the style bot all with unit tests.  Now, we missing things from time to time, but the unit tests are hugely helpful.

There will always be some amount of failures that NRWT will trip over that unit tests that don&apos;t ever look at the real files won&apos;t. Which isn&apos;t to say that unit tests for NRWT can&apos;t catch the bulk of the mistakes. 

I think we&apos;re in violent agreement over all of this, we just don&apos;t necessarily agree on where to draw the lines in a particular environment.

Do you imagine different levels of testing happening (a) manually, (b) at presubmit time, (c) on the EWS bots, and (d) on the regular bots? If so, what happens where? 

At the very least, I would like (c) == (d) so that if something passes (c) it should pass (d). I would also like (d) to contain some amount of integration tests, although it doesn&apos;t necessarily have to include every test that could be run manually.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297821</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-10-21 21:57:32 -0700</bug_when>
    <thetext>test-webkitpy used to finish in a few seconds.  Now it takes minutes.  I&apos;d like get it back to seconds.  Also, I&apos;d like to be able to run test-webkitpy in parallel with the commit-queue running on my machine, which also runs test-webkitpy, writes to temp folder, and spins up an HTTP server.  Finally, I&apos;d like test-webkitpy not to dump files in my working copy.  AFACT, all these problem are caused by running tests that have external dependencies, such as test_darwin.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>308422</commentid>
    <comment_count>8</comment_count>
      <attachid>73709</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-11-12 00:18:23 -0800</bug_when>
    <thetext>Created attachment 73709
patch too big, needs to be broken up</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>308427</commentid>
    <comment_count>9</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-11-12 00:34:45 -0800</bug_when>
    <thetext>I&apos;m going to use this as a meta-bug for tracking all of the remaining cleanup to get all of the webkitpy.layout_tests.* classes using the proper fake filesystems etc.

The patch I&apos;ve just uploaded covers it all (test-webkitpy now takes &lt; 4 seconds!) but it needs to be cleaned up a bit and probably broken into chunks to be easier to review. 

I had to add a bunch more entrypoints to common.system.filesystem, and I renamed filesystem_mock to common.in_memory_filesystem, since it really wasn&apos;t a mock object any more (if it ever was).

There&apos;s still a few places in the code using os.sep, which need to be replaced by a filesystem.sep property. 

I think this should get most of the layout_tests/* tests running under win32 once that happens as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>309482</commentid>
    <comment_count>10</comment_count>
      <attachid>73940</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-11-15 15:45:51 -0800</bug_when>
    <thetext>Created attachment 73940
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320575</commentid>
    <comment_count>11</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-12-10 21:29:09 -0800</bug_when>
    <thetext>This test also depends on having a build of WebKIt, which is wrong:

test_darwin (webkitpy.layout_tests.run_webkit_tests_unittest.DryrunTest) ... sh: line 1: 66217 Trace/BPT trap          /Projects/WebKit/WebKitBuild/Debug/DumpRenderTree --print-supported-features 2&gt;&amp;1
sh: line 1: 66290 Trace/BPT trap          /Projects/WebKit/WebKitBuild/Debug/DumpRenderTree --print-supported-features 2&gt;&amp;1
ok

We should just remove the test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320752</commentid>
    <comment_count>12</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-12-11 20:04:08 -0800</bug_when>
    <thetext>No, we shouldn&apos;t remove the test. It&apos;s an integration test, we just need to figure out how to run it only when it&apos;s appropriate to do so, and disable it otherwise.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>337832</commentid>
    <comment_count>13</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-01-20 20:06:14 -0800</bug_when>
    <thetext>Okay, the patches attached to this bug are now officially irrelevant. With the exception of bug 52683, which disables test_darwin and a test in port_testcase that attempts to spawn ImageDiff if it exists, all of the other unit tests no longer rely on anything in the filesystem and no longer attempt to grab exclusive resources (by default).

We still need a way to do integration tests, but I want to track that as a separate issue so that we can close these bugs and start fresh.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>337838</commentid>
    <comment_count>14</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-01-20 20:13:41 -0800</bug_when>
    <thetext>Why does this depend on bug 52683?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>337864</commentid>
    <comment_count>15</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-01-20 21:30:44 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; Why does this depend on bug 52683?

Whoops. Wrong bug. I meant bug 52863.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>73709</attachid>
            <date>2010-11-12 00:18:23 -0800</date>
            <delta_ts>2010-11-15 15:45:40 -0800</delta_ts>
            <desc>patch too big, needs to be broken up</desc>
            <filename>bug-48072-20101112001822.patch</filename>
            <type>text/plain</type>
            <size>67700</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCAzNTkzYzAwNWJmYjYyOTg5OTBlMDY4NjQ1YjdkYWMxYzQ2OWVkMTMzLi5jOGFjYjlj
NDM1YTJhMTZhNDU4MDFiN2FkMjQ0ZWJhOTU4NTg2YzI3IDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAK
KzIwMTAtMTEtMTIgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUm91dGUgYWxsIGZpbGVz
eXN0ZW0gaS9vIHVuZGVyIHdlYmtpdHB5LmxheW91dF90ZXN0cyB0aHJvdWdoIHRoZQorICAgICAg
ICBGaWxlU3lzdGVtIGFic3RyYWN0aW9uLCB1c2UgaW4gbWVtb3J5IGZpbGVzeXN0ZW1zIGZvciB0
ZXN0aW5nLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD00ODA3MgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2ZpbGVz
eXN0ZW0ucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2ZpbGVz
eXN0ZW1fbW9jay5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9s
YXlvdXRfcGFja2FnZS9kdW1wX3JlbmRlcl90cmVlX3RocmVhZC5weToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9wcmludGluZ191bml0dGVz
dC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFj
a2FnZS90ZXN0X2V4cGVjdGF0aW9ucy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2V4cGVjdGF0aW9uc191bml0dGVzdC5weToK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHk6Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jb25maWdfc3RhbmRh
bG9uZS5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nv
bmZpZ191bml0dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L2RyeXJ1bi5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L3BvcnRfdGVzdGNhc2UucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC90ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvdGVzdF9maWxlcy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfdW5pdHRlc3QucHk6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdGVzdF90eXBlcy9pbWFnZV9kaWZmLnB5Ogor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Rlc3RfdHlwZXMvdGVzdF90
eXBlX2Jhc2UucHk6CisKIDIwMTAtMTEtMTEgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgYnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2ZpbGVzeXN0ZW0ucHkgYi9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3RlbS5weQpp
bmRleCBjN2VmZGUzYTQyNGNhNDI2OGUxNjBhZTNkNWEzMjYxOGM2NGZjMjNiLi44NGFhZGQyM2M4
ZjhmZGMyOTBmN2Y0OGM4MmYzYzVlOGJmYjllODU4IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3RlbS5weQorKysgYi9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3RlbS5weQpAQCAtMzIs
NyArMzIsOSBAQCBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHdpdGhfc3RhdGVtZW50CiAKIGltcG9y
dCBjb2RlY3MKIGltcG9ydCBlcnJubworaW1wb3J0IGdsb2IKIGltcG9ydCBvcworaW1wb3J0IHNo
dXRpbAogaW1wb3J0IHRlbXBmaWxlCiAKIApAQCAtNDIsMTIgKzQ0LDM2IEBAIGNsYXNzIEZpbGVT
eXN0ZW0ob2JqZWN0KToKICAgICBVbmxlc3Mgb3RoZXJ3aXNlIG5vdGVkLCBhbGwgcGF0aHMgYXJl
IGFsbG93ZWQgdG8gYmUgZWl0aGVyIGFic29sdXRlCiAgICAgb3IgcmVsYXRpdmUuIiIiCiAKKyAg
ICBkZWYgYWJzcGF0aChzZWxmLCBwYXRoKToKKyAgICAgICAgcmV0dXJuIG9zLnBhdGguYWJzcGF0
aChwYXRoKQorCisgICAgZGVmIGJhc2VuYW1lKHNlbGYsIHBhdGgpOgorICAgICAgICAiIiJXcmFw
cyBvcy5wYXRoLmJhc2VuYW1lKCkuIiIiCisgICAgICAgIHJldHVybiBvcy5wYXRoLmJhc2VuYW1l
KHBhdGgpCisKKyAgICBkZWYgY29weWZpbGUoc2VsZiwgc291cmNlLCBkZXN0KToKKyAgICAgICAg
cmV0dXJuIHNodXRpbC5jb3B5ZmlsZShzb3VyY2UsIGRlc3QpCisKKyAgICBkZWYgZGlybmFtZShz
ZWxmLCBwYXRoKToKKyAgICAgICAgcmV0dXJuIG9zLnBhdGguZGlybmFtZShwYXRoKQorCiAgICAg
ZGVmIGV4aXN0cyhzZWxmLCBwYXRoKToKICAgICAgICAgIiIiUmV0dXJuIHdoZXRoZXIgdGhlIHBh
dGggZXhpc3RzIGluIHRoZSBmaWxlc3lzdGVtLiIiIgogICAgICAgICByZXR1cm4gb3MucGF0aC5l
eGlzdHMocGF0aCkKIAorICAgIGRlZiBnbG9iKHNlbGYsIHBhdGgpOgorICAgICAgICAiIiJXcmFw
cyBnbG9iLmdsb2IoKS4iIiIKKyAgICAgICAgcmV0dXJuIGdsb2IuZ2xvYihwYXRoKQorCisgICAg
ZGVmIGlzYWJzKHNlbGYsIHBhdGgpOgorICAgICAgICByZXR1cm4gb3MucGF0aC5pc2FicyhwYXRo
KQorCisgICAgZGVmIGlzZmlsZShzZWxmLCBwYXRoKToKKyAgICAgICAgIiIiUmV0dXJuIFRydWUg
aWYgdGhlIHBhdGggZXhpc3RzIGFuZCBwb2ludHMgdG8gYSBmaWxlLiIiIgorICAgICAgICByZXR1
cm4gb3MucGF0aC5pc2ZpbGUocGF0aCkKKwogICAgIGRlZiBpc2RpcihzZWxmLCBwYXRoKToKLSAg
ICAgICAgIiIiUmV0dXJuIHdoZXRoZXIgdGhlIHBhdGggcmVmZXJzIHRvIGEgZGlyZWN0b3J5LiIi
IgorICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiB0aGUgcGF0aCBleGlzdHMgYW5kIHBvaW50cyB0
byBhIGRpcmVjdG9yeS4iIiIKICAgICAgICAgcmV0dXJuIG9zLnBhdGguaXNkaXIocGF0aCkKIAog
ICAgIGRlZiBqb2luKHNlbGYsICpjb21wcyk6CkBAIC05Miw2ICsxMTgsMTIgQEAgY2xhc3MgRmls
ZVN5c3RlbShvYmplY3QpOgogICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FRVhJU1Q6
CiAgICAgICAgICAgICAgICAgcmFpc2UKIAorICAgIGRlZiBub3JtcGF0aChzZWxmLCBwYXRoKToK
KyAgICAgICAgcmV0dXJuIG9zLnBhdGgubm9ybXBhdGgocGF0aCkKKworICAgIGRlZiBvcGVuX3Rl
eHRfZmlsZV9mb3JfYXBwZW5kaW5nKHNlbGYsIHBhdGgpOgorICAgICAgICByZXR1cm4gY29kZWNz
Lm9wZW4ocGF0aCwgJ3dhJywgJ3V0ZjgnKQorCiAgICAgZGVmIHJlYWRfYmluYXJ5X2ZpbGUoc2Vs
ZiwgcGF0aCk6CiAgICAgICAgICIiIlJldHVybiB0aGUgY29udGVudHMgb2YgdGhlIGZpbGUgYXQg
dGhlIGdpdmVuIHBhdGggYXMgYSBieXRlIHN0cmluZy4iIiIKICAgICAgICAgd2l0aCBmaWxlKHBh
dGgsICdyYicpIGFzIGY6CkBAIC0xMDQsNiArMTM2LDI2IEBAIGNsYXNzIEZpbGVTeXN0ZW0ob2Jq
ZWN0KToKICAgICAgICAgd2l0aCBjb2RlY3Mub3BlbihwYXRoLCAncicsICd1dGY4JykgYXMgZjoK
ICAgICAgICAgICAgIHJldHVybiBmLnJlYWQoKQogCisgICAgZGVmIHJlbW92ZShzZWxmLCBwYXRo
KToKKyAgICAgICAgIiIiRGVsZXRlIHRoZSBmaWxlIHBvaW50ZWQgdG8gYnkgcGF0aC4iIiIKKyAg
ICAgICAgb3MucmVtb3ZlKHBhdGgpCisKKyAgICBkZWYgcm10cmVlKHNlbGYsIHBhdGgpOgorICAg
ICAgICAiIiJEZWxldGUgdGhlIGRpcmVjdG9yeSByb290ZWQgYXQgcGF0aCwgZW1wdHkgb3Igbm8u
IiIiCisgICAgICAgIHNodXRpbC5ybXRyZWUocGF0aCwgaWdub3JlX2Vycm9ycz1UcnVlKQorCisg
ICAgZGVmIHNwbGl0KHNlbGYsIHBhdGgpOgorICAgICAgICAiIiJSZXR1cm4gKGRpcm5hbWUsIGJh
c2VuYW1lICsgZXh0KS4iIiIKKyAgICAgICAgcmV0dXJuIG9zLnBhdGguc3BsaXQocGF0aCkKKwor
ICAgIGRlZiBzcGxpdGV4dChzZWxmLCBwYXRoKToKKyAgICAgICAgIiIiUmV0dXJuIChkaXJuYW1l
ICsgb3Muc2VwICsgYmFzZW5hbWUsICcuJyArIGV4dCkiIiIKKyAgICAgICAgcmV0dXJuIG9zLnBh
dGguc3BsaXRleHQocGF0aCkKKworICAgIGRlZiB3YWxrKHNlbGYsIHBhdGgpOgorICAgICAgICAi
IiJXcmFwcGVyIGFyb3VuZCBvcy53YWxrKCkuIiIiCisgICAgICAgIHJldHVybiBvcy53YWxrKHBh
dGgpCisKICAgICBkZWYgd3JpdGVfYmluYXJ5X2ZpbGUoc2VsZiwgcGF0aCwgY29udGVudHMpOgog
ICAgICAgICAiIiJXcml0ZSB0aGUgY29udGVudHMgdG8gdGhlIGZpbGUgYXQgdGhlIGdpdmVuIGxv
Y2F0aW9uLiIiIgogICAgICAgICB3aXRoIGZpbGUocGF0aCwgJ3diJykgYXMgZjoKZGlmZiAtLWdp
dCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9maWxlc3lzdGVt
X21vY2sucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmls
ZXN5c3RlbV9tb2NrLnB5CmluZGV4IGQyY2RlNGY1MmViYjNlMzY0OWQ5OTJlNjJlNzk4NjEwMDE4
OTFhMTEuLjVkODg5OTcwN2E5ZmZlMDNjYjM2ZTFiYjcyMTg0OTQ2ZDMxMmZjMWQgMTAwNjQ0Ci0t
LSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9maWxlc3lzdGVt
X21vY2sucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVt
L2ZpbGVzeXN0ZW1fbW9jay5weQpAQCAtMzEsMzYgKzMxLDgwIEBAIGltcG9ydCBvcwogaW1wb3J0
IHBhdGgKIAogCi1jbGFzcyBNb2NrRmlsZVN5c3RlbShvYmplY3QpOgorY2xhc3MgSW5NZW1vcnlG
aWxlU3lzdGVtKG9iamVjdCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVzPXt9KToKLSAg
ICAgICAgIiIiSW5pdGlhbGl6ZXMgYSAibW9jayIgZmlsZXN5c3RlbSB0aGF0IGNhbiBiZSB1c2Vk
IHRvIGNvbXBsZXRlbHkKLSAgICAgICAgc3R1YiBvdXQgYSBmaWxlc3lzdGVtLgorICAgICAgICAi
IiJJbi1tZW1vcnkgaW1wbG1lbnRhdGlvbiBvZiB0aGUgRmlsZVN5c3RlbSBpbnRlcmZhY2UuCiAK
ICAgICAgICAgQXJnczoKLSAgICAgICAgICAgIGZpbGVzOiBhIGRpY3Qgb2YgZmlsZW5hbWVzIC0+
IGZpbGUgY29udGVudHMuIEEgZmlsZSBjb250ZW50cwotICAgICAgICAgICAgICAgIHZhbHVlIG9m
IE5vbmUgaXMgdXNlZCB0byBpbmRpY2F0ZSB0aGF0IHRoZSBmaWxlIHNob3VsZAotICAgICAgICAg
ICAgICAgIG5vdCBleGlzdCAoZXZlbiBpZiBzdGFuZGFsb25lIGlzIEZhbHNlKS4KLSAgICAgICAg
ICAgIHN0YW5kYWxvbmU6IElmIFRydWUsIG9ubHkgdGhlIGZpbGVzIGxpc3RlZCBpbiBfZmlsZXNf
IGV4aXN0LgotICAgICAgICAgICAgICAgIElmIEZhbHNlLCB0aGUgb2JqZWN0IHdpbGwgcGFzcyB0
aHJvdWdoIHJlYWQgY2FsbHMgdG8gdGhlCi0gICAgICAgICAgICAgICAgdW5kZXJseWluZyBmaWxl
c3lzdGVtLiBXcml0ZXMgYXJlIG5ldmVyIHBhc3NlZCB0aHJvdWdoLgotCi0gICAgICAgICIiIgor
ICAgICAgICAgICAgZmlsZXM6IGEgZGljdCBvZiBmaWxlbmFtZXMgLT4gZmlsZSBjb250ZW50cy4g
QSB2YWx1ZSBvZiBOb25lCisgICAgICAgICAgICBpcyB1c2VkIHRvIGluZGljYXRlIHRoYXQgdGhl
IGZpbGVuYW1lIGRvZXMgbm90IGV4aXN0LiBJdCBpcworICAgICAgICAgICAgYW4gZXJyb3IgdG8g
dHJ5IGFuZCByZWFkIGZyb20gYSBrZXkgdGhhdCBkb2VzIG5vdCBleGlzdC4KKworICAgICAgICBU
aGUgY29udGVudHMgb2YgdGhlIGZpbGVzeXN0ZW0gYXJlIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSAn
ZmlsZXMnCisgICAgICAgIHByb3BlcnR5LiBBIGRpY3Qgb2YgZXZlcnkgZmlsZSB0aGF0IGhhcyBi
ZWVuIHdyaXR0ZW4gcG9zdC1jb25zdHJ1Y3RvcgorICAgICAgICBpcyBhdmFpbGFibGUgdGhyb3Vn
aCB0aGUgJ3dyaXR0ZW5fZmlsZXMnIHByb3BlcnR5LiIiIgogICAgICAgICBzZWxmLmZpbGVzID0g
ZmlsZXMKKyAgICAgICAgc2VsZi53cml0dGVuX2ZpbGVzID0ge30KKworICAgIGRlZiBiYXNlbmFt
ZShzZWxmLCBwYXRoKToKKyAgICAgICAgaWR4ID0gcGF0aC5yZmluZCgnLycpCisgICAgICAgIGlm
IGlkeCA9PSAtMToKKyAgICAgICAgICAgIGlkeCA9IDAKKyAgICAgICAgcmV0dXJuIHBhdGhbaWR4
Ol0KIAogICAgIGRlZiBleGlzdHMoc2VsZiwgcGF0aCk6CiAgICAgICAgIGlmIHBhdGggaW4gc2Vs
Zi5maWxlczoKICAgICAgICAgICAgIHJldHVybiBzZWxmLmZpbGVzW3BhdGhdIGlzIG5vdCBOb25l
Ci0gICAgICAgIHJldHVybiBGYWxzZQorCisgICAgICAgICMgQ2hlY2sgdG8gc2VlIGlmIHBhdGgg
cmVmZXJzIHRvIGEgImRpcmVjdG9yeSIgaW4gc2VsZi5maWxlcy4KKyAgICAgICAgaWYgbm90IHBh
dGguZW5kc3dpdGgoJy8nKToKKyAgICAgICAgICAgIHBhdGggPSBwYXRoICsgJy8nCisgICAgICAg
IHJldHVybiBhbnkoW2Yuc3RhcnRzd2l0aChwYXRoKSBmb3IgZiBpbiBzZWxmLmZpbGVzXSkKKwor
ICAgIGRlZiBnbG9iKHNlbGYsIHBhdGgpOgorICAgICAgICBpZiBwYXRoWy0xXSA9PSAnKic6Cisg
ICAgICAgICAgICByZXR1cm4gW2YgZm9yIGYgaW4gc2VsZi5maWxlcyBpZiBmLnN0YXJ0c3dpdGgo
cGF0aFs6LTFdKV0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBbZiBmb3IgZiBp
biBzZWxmLmZpbGVzIGlmIGYgPT0gcGF0aF0KKworICAgIGRlZiBpc2ZpbGUoc2VsZiwgcGF0aCk6
CisgICAgICAgIHJldHVybiBwYXRoIGluIHNlbGYuZmlsZXMgYW5kIHNlbGYuZmlsZXNbcGF0aF0g
aXMgbm90IE5vbmUKKworICAgIGRlZiBpc2RpcihzZWxmLCBwYXRoKToKKyAgICAgICAgcmV0dXJu
IHNlbGYuZXhpc3RzKHBhdGgpIGFuZCBub3Qgc2VsZi5pc2ZpbGUocGF0aCkKIAogICAgIGRlZiBq
b2luKHNlbGYsICpjb21wcyk6CiAgICAgICAgIHJldHVybiAnLycuam9pbihjb21wcykKIAorICAg
IGRlZiBsaXN0ZGlyKHNlbGYsIHBhdGgpOgorICAgICAgICBpZiBub3Qgc2VsZi5pc2RpcihwYXRo
KToKKyAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoIiVzIGlzIG5vdCBhIGRpcmVjdG9yeSIgJSBw
YXRoKQorCisgICAgICAgIGlmIG5vdCBwYXRoLmVuZHN3aXRoKCcvJyk6CisgICAgICAgICAgICBw
YXRoICs9ICcvJworCisgICAgICAgIGRpcnMgPSBbXQorICAgICAgICBmaWxlcyA9IFtdCisgICAg
ICAgIGZvciBmIGluIHNlbGYuZmlsZXM6CisgICAgICAgICAgICBpZiBzZWxmLmV4aXN0cyhmKSBh
bmQgZi5zdGFydHN3aXRoKHBhdGgpOgorICAgICAgICAgICAgICAgIHJlbWFpbmluZyA9IGZbbGVu
KHBhdGgpOl0KKyAgICAgICAgICAgICAgICBpZiAnLycgaW4gcmVtYWluaW5nOgorICAgICAgICAg
ICAgICAgICAgICBkaXIgPSByZW1haW5pbmdbOnJlbWFpbmluZy5pbmRleCgnLycpXQorICAgICAg
ICAgICAgICAgICAgICBpZiBub3QgZGlyIGluIGRpcnM6CisgICAgICAgICAgICAgICAgICAgICAg
ICBkaXJzLmFwcGVuZChkaXIpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAg
ICAgICAgZmlsZXMuYXBwZW5kKHJlbWFpbmluZykKKyAgICAgICAgcmV0dXJuIGRpcnMgKyBmaWxl
cworCiAgICAgZGVmIG1heWJlX21ha2VfZGlyZWN0b3J5KHNlbGYsICpwYXRoKToKICAgICAgICAg
IyBGSVhNRTogSW1wbGVtZW50IHN1Y2ggdGhhdCBzdWJzZXF1ZW50IGNhbGxzIHRvIGlzZGlyKCkg
d29yaz8KICAgICAgICAgcGFzcwogCi0gICAgZGVmIHJlYWRfdGV4dF9maWxlKHNlbGYsIHBhdGgp
OgotICAgICAgICByZXR1cm4gc2VsZi5yZWFkX2JpbmFyeV9maWxlKHBhdGgpCisgICAgZGVmIG5v
cm1wYXRoKHNlbGYsIHBhdGgpOgorICAgICAgICByZXR1cm4gcGF0aAorCisgICAgZGVmIG9wZW5f
dGV4dF9maWxlX2Zvcl9hcHBlbmRpbmcoc2VsZiwgcGF0aCk6CisgICAgICAgIHJldHVybiBGaWxl
T2JqZWN0KHNlbGYsIHBhdGgpCiAKICAgICBkZWYgcmVhZF9iaW5hcnlfZmlsZShzZWxmLCBwYXRo
KToKICAgICAgICAgaWYgcGF0aCBpbiBzZWxmLmZpbGVzOgpAQCAtNjgsOCArMTEyLDU1IEBAIGNs
YXNzIE1vY2tGaWxlU3lzdGVtKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgcmFpc2UgSU9FcnJv
cihlcnJuby5FTk9FTlQsIHBhdGgsIG9zLnN0cmVycm9yKGVycm5vLkVOT0VOVCkpCiAgICAgICAg
ICAgICByZXR1cm4gc2VsZi5maWxlc1twYXRoXQogCi0gICAgZGVmIHdyaXRlX3RleHRfZmlsZShz
ZWxmLCBwYXRoLCBjb250ZW50cyk6Ci0gICAgICAgIHJldHVybiBzZWxmLndyaXRlX2JpbmFyeV9m
aWxlKHBhdGgsIGNvbnRlbnRzKQorICAgIGRlZiByZWFkX3RleHRfZmlsZShzZWxmLCBwYXRoKToK
KyAgICAgICAgcmV0dXJuIHNlbGYucmVhZF9iaW5hcnlfZmlsZShwYXRoKQorCisgICAgZGVmIHNw
bGl0ZXh0KHNlbGYsIHBhdGgpOgorICAgICAgICBpZHggPSBwYXRoLnJmaW5kKCcuJykKKyAgICAg
ICAgaWYgaWR4ID09IC0xOgorICAgICAgICAgICAgaWR4ID0gMAorICAgICAgICByZXR1cm4gKHBh
dGhbMDppZHhdLCBwYXRoW2lkeDpdKQorCisgICAgZGVmIHdhbGsoc2VsZiwgdG9wKToKKyAgICAg
ICAgIyBSaXBwZWQgZnJvbSBQeXRob24gMi42J3Mgb3Mud2Fsay4KKyAgICAgICAgIyBlcXVpdmFs
ZW50IHRvIHdhbGsodG9wLCB0b3Bkb3duPVRydWUsIGZvbGxvd2xpbmtzPUZhbHNlKS4KKyAgICAg
ICAgbmFtZXMgPSBzZWxmLmxpc3RkaXIodG9wKQorICAgICAgICBkaXJzLCBub25kaXJzID0gW10s
IFtdCisgICAgICAgIGZvciBuYW1lIGluIG5hbWVzOgorICAgICAgICAgICAgaWYgc2VsZi5pc2Rp
cihzZWxmLmpvaW4odG9wLCBuYW1lKSk6CisgICAgICAgICAgICAgICAgZGlycy5hcHBlbmQobmFt
ZSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbm9uZGlycy5hcHBlbmQobmFt
ZSkKKworICAgICAgICB5aWVsZCB0b3AsIGRpcnMsIG5vbmRpcnMKKyAgICAgICAgZm9yIG5hbWUg
aW4gZGlyczoKKyAgICAgICAgICAgIHBhdGggPSBzZWxmLmpvaW4odG9wLCBuYW1lKQorICAgICAg
ICAgICAgZm9yIHggaW4gc2VsZi53YWxrKHBhdGgpOgorICAgICAgICAgICAgICAgIHlpZWxkIHgK
IAogICAgIGRlZiB3cml0ZV9iaW5hcnlfZmlsZShzZWxmLCBwYXRoLCBjb250ZW50cyk6CiAgICAg
ICAgIHNlbGYuZmlsZXNbcGF0aF0gPSBjb250ZW50cworICAgICAgICBzZWxmLndyaXR0ZW5fZmls
ZXNbcGF0aF0gPSBjb250ZW50cworCisgICAgZGVmIHdyaXRlX3RleHRfZmlsZShzZWxmLCBwYXRo
LCBjb250ZW50cyk6CisgICAgICAgIHJldHVybiBzZWxmLndyaXRlX2JpbmFyeV9maWxlKHBhdGgs
IGNvbnRlbnRzKQorCisKK2NsYXNzIEZpbGVPYmplY3Qob2JqZWN0KToKKyAgICBkZWYgX19pbml0
X18oc2VsZiwgZnMsIHBhdGgpOgorICAgICAgICBzZWxmLmZzID0gZnMKKyAgICAgICAgc2VsZi5w
YXRoID0gcGF0aAorICAgICAgICBpZiBwYXRoIG5vdCBpbiBzZWxmLmZzOgorICAgICAgICAgICAg
c2VsZi5mc1twYXRoXSA9ICIiCisKKyAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgorICAgICAgICBw
YXNzCisKKyAgICBkZWYgX19leGl0X18oc2VsZik6CisgICAgICAgIHBhc3MKKworICAgIGRlZiBj
bG9zZShzZWxmKToKKyAgICAgICAgcGFzcworCisgICAgZGVmIHdyaXRlKHNlbGYsIHN0cik6Cisg
ICAgICAgIHNlbGYuZnNbcGF0aF0gKz0gc3RyCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9kdW1wX3JlbmRlcl90cmVl
X3RocmVhZC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xh
eW91dF9wYWNrYWdlL2R1bXBfcmVuZGVyX3RyZWVfdGhyZWFkLnB5CmluZGV4IDlmMmRlN2U0NzZi
N2I1YzBiN2YxMWVkYzQ2ZTg4MjU0NzRmM2Y4NWYuLjQ4ZTA3NWNjZTBiOWExNTk0ZWY1MDFkYTM1
NDJkZjdhMmRjNzM2MTIgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2R1bXBfcmVuZGVyX3RyZWVfdGhyZWFkLnB5Cisr
KyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNr
YWdlL2R1bXBfcmVuZGVyX3RyZWVfdGhyZWFkLnB5CkBAIC0zNiwxMiArMzYsOCBAQCB0aGUgb3V0
cHV0LiAgV2hlbiB0aGVyZSBhcmUgbm8gbW9yZSBVUkxzIHRvIHByb2Nlc3MgaW4gdGhlIHNoYXJl
ZCBxdWV1ZSwgdGhlCiB0aHJlYWQgZXhpdHMuCiAiIiIKIAotZnJvbSBfX2Z1dHVyZV9fIGltcG9y
dCB3aXRoX3N0YXRlbWVudAotCi1pbXBvcnQgY29kZWNzCiBpbXBvcnQgY29weQogaW1wb3J0IGxv
Z2dpbmcKLWltcG9ydCBvcwogaW1wb3J0IFF1ZXVlCiBpbXBvcnQgc2lnbmFsCiBpbXBvcnQgc3lz
CkBAIC0xMDcsMTMgKzEwMywxMyBAQCBkZWYgX3Byb2Nlc3Nfb3V0cHV0KHBvcnQsIG9wdGlvbnMs
IHRlc3RfaW5mbywgdGVzdF90eXBlcywgdGVzdF9hcmdzLAogICAgICAgICBfbG9nLmRlYnVnKCJT
dGFja3RyYWNlIGZvciAlczpcbiVzIiAlICh0ZXN0X2luZm8uZmlsZW5hbWUsIGVycm9yKSkKICAg
ICAgICAgIyBTdHJpcCBvZmYgImZpbGU6Ly8iIHNpbmNlIFJlbGF0aXZlVGVzdEZpbGVuYW1lIGV4
cGVjdHMKICAgICAgICAgIyBmaWxlc3lzdGVtIHBhdGhzLgotICAgICAgICBmaWxlbmFtZSA9IG9z
LnBhdGguam9pbihvcHRpb25zLnJlc3VsdHNfZGlyZWN0b3J5LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwb3J0LnJlbGF0aXZlX3Rlc3RfZmlsZW5hbWUoCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRlc3RfaW5mby5maWxlbmFtZSkpCi0gICAgICAgIGZpbGVuYW1l
ID0gb3MucGF0aC5zcGxpdGV4dChmaWxlbmFtZSlbMF0gKyAiLXN0YWNrLnR4dCIKLSAgICAgICAg
cG9ydC5tYXliZV9tYWtlX2RpcmVjdG9yeShvcy5wYXRoLnNwbGl0KGZpbGVuYW1lKVswXSkKLSAg
ICAgICAgd2l0aCBjb2RlY3Mub3BlbihmaWxlbmFtZSwgIndiIiwgInV0Zi04IikgYXMgZmlsZToK
LSAgICAgICAgICAgIGZpbGUud3JpdGUoZXJyb3IpCisgICAgICAgIGZzID0gcG9ydC5fZmlsZXN5
c3RlbQorICAgICAgICBmaWxlbmFtZSA9IGZzLmpvaW4ob3B0aW9ucy5yZXN1bHRzX2RpcmVjdG9y
eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcnQucmVsYXRpdmVfdGVzdF9maWxlbmFt
ZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfaW5mby5maWxlbmFtZSkpCisgICAg
ICAgIGZpbGVuYW1lID0gZnMuc3BsaXRleHQoZmlsZW5hbWUpWzBdICsgIi1zdGFjay50eHQiCisg
ICAgICAgIGZzLm1heWJlX21ha2VfZGlyZWN0b3J5KGZzLnNwbGl0KGZpbGVuYW1lKVswXSkKKyAg
ICAgICAgZnMud3JpdGVfdGV4dF9maWxlKGZpbGVuYW1lLCBlcnJvcikKICAgICBlbGlmIGVycm9y
OgogICAgICAgICBfbG9nLmRlYnVnKCJQcmV2aW91cyB0ZXN0IG91dHB1dCBzdGRlcnIgbGluZXM6
XG4lcyIgJSBlcnJvcikKIApAQCAtMzY5LDkgKzM2NSwxMyBAQCBjbGFzcyBUZXN0U2hlbGxUaHJl
YWQoV2F0Y2hhYmxlVGhyZWFkKToKIAogICAgICAgICAjIEFwcGVuZCB0ZXN0cyB3ZSdyZSBydW5u
aW5nIHRvIHRoZSBleGlzdGluZyB0ZXN0c19ydW4udHh0IGZpbGUuCiAgICAgICAgICMgVGhpcyBp
cyBjcmVhdGVkIGluIHJ1bl93ZWJraXRfdGVzdHMucHk6X1ByZXBhcmVMaXN0c0FuZFByaW50T3V0
cHV0LgotICAgICAgICB0ZXN0c19ydW5fZmlsZW5hbWUgPSBvcy5wYXRoLmpvaW4oc2VsZi5fb3B0
aW9ucy5yZXN1bHRzX2RpcmVjdG9yeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJ0ZXN0c19ydW4udHh0IikKLSAgICAgICAgdGVzdHNfcnVuX2ZpbGUgPSBjb2Rl
Y3Mub3Blbih0ZXN0c19ydW5fZmlsZW5hbWUsICJhIiwgInV0Zi04IikKKyAgICAgICAgZnMgPSBz
ZWxmLl9wb3J0Ll9maWxlc3lzdGVtCisgICAgICAgIHRlc3RzX3J1bl9maWxlbmFtZSA9IGZzLmpv
aW4oc2VsZi5fb3B0aW9ucy5yZXN1bHRzX2RpcmVjdG9yeSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAidGVzdHNfcnVuLnR4dCIpCisgICAgICAgIHRlc3RzX3J1bl9maWxl
ID0gZnMub3Blbl90ZXh0X2ZpbGVfZm9yX2FwcGVuZGluZyh0ZXN0c19ydW5fZmlsZW5hbWUpCisK
KyAgICAgICAgIyBGSVhNRTogaW1wbGVtZW50IG9wZW4oKSBpbiBzeXN0ZW0uZmlsZXN5c3RlbSBz
byB0aGF0IHdlIGNhbgorICAgICAgICAjIHdyaXRlKCkgcmVwZWF0ZWRseSB0byBmaWxlcy4KIAog
ICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICAgaWYgc2VsZi5fY2FuY2VsZWQ6CmRpZmYg
LS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRf
cGFja2FnZS9wcmludGluZ191bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3ByaW50aW5nX3VuaXR0ZXN0LnB5CmluZGV4
IDlhMGY0ZWVhMjA4ZDIxY2Y4OGVmOGQ1ZWVhZjE0ODNhNTExNjE4ZTMuLjllYTM3OWYwYmUzZTUy
Y2U5ODNiNTg1ZGY2MGUwNDdiNjBiZjdkNjggMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3ByaW50aW5nX3VuaXR0ZXN0
LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91
dF9wYWNrYWdlL3ByaW50aW5nX3VuaXR0ZXN0LnB5CkBAIC0xNjAsNyArMTYwLDcgQEAgY2xhc3Mg
IFRlc3RwcmludGVyKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgIyBIZXJlIGFuZCBiZWxv
dyB3ZSdsbCBjYWxsIHRoZSAicmVndWxhciIgcHJpbnRlciBlcnIgYW5kIHRoZQogICAgICAgICAj
IGJ1aWxkYm90IHByaW50ZXIgb3V0OyB0aGlzIGNvcnJlc3BvbmRzIHRvIGhvdyB0aGluZ3MgcnVu
IG9uIHRoZQogICAgICAgICAjIGJvdHMgd2l0aCBzdGRlcnIgYW5kIHN0ZG91dC4KLSAgICAgICAg
cHJpbnRlciwgZXJyLCBvdXQgPSBzZWxmLmdldF9wcmludGVyKCkKKyAgICAgICAgcHJpbnRlciwg
ZXJyLCBvdXQgPSBzZWxmLmdldF9wcmludGVyKFtdKQogCiAgICAgICAgICMgVGhpcyByb3V0aW5l
IHNob3VsZCBwcmludCBzb21ldGhpbmcgdG8gc3Rkb3V0LiB0ZXN0aW5nIHdoYXQgaXQgaXMKICAg
ICAgICAgIyBpcyBraW5kIG9mIHBvaW50bGVzcy4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZXhwZWN0YXRp
b25zLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0
X3BhY2thZ2UvdGVzdF9leHBlY3RhdGlvbnMucHkKaW5kZXggNjc4NzNhOGNjMGFiMzE3OWM3ZGUz
NWQ1Yzk4MTZjZTM0MGQzNGNiOS4uM2JkYmQwODQ2NmNhMWQ2NDNhYjA3ZDAxYmQyZTMwMTQzZDZh
NjM5MiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9leHBlY3RhdGlvbnMucHkKKysrIGIvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9leHBlY3Rh
dGlvbnMucHkKQEAgLTY3NSw5ICs2NzUsOSBAQCBjbGFzcyBUZXN0RXhwZWN0YXRpb25zRmlsZToK
ICAgICAgICAgICAgICAgICAgICAgJ2luZGVmaW5pdGVseSwgdGhlbiBpdCBzaG91bGQgYmUganVz
dCB0aW1lb3V0LicsCiAgICAgICAgICAgICAgICAgICAgIHRlc3RfbGlzdF9wYXRoKQogCi0gICAg
ICAgICAgICBmdWxsX3BhdGggPSBvcy5wYXRoLmpvaW4oc2VsZi5fcG9ydC5sYXlvdXRfdGVzdHNf
ZGlyKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9saXN0X3Bh
dGgpCi0gICAgICAgICAgICBmdWxsX3BhdGggPSBvcy5wYXRoLm5vcm1wYXRoKGZ1bGxfcGF0aCkK
KyAgICAgICAgICAgIGZ1bGxfcGF0aCA9IHNlbGYuX3BvcnQuX2ZpbGVzeXN0ZW0uam9pbihzZWxm
Ll9wb3J0LmxheW91dF90ZXN0c19kaXIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2xpc3RfcGF0aCkKKyAgICAgICAgICAgIGZ1bGxf
cGF0aCA9IHNlbGYuX3BvcnQuX2ZpbGVzeXN0ZW0ubm9ybXBhdGgoZnVsbF9wYXRoKQogICAgICAg
ICAgICAgIyBXZWJLaXQncyB3YXkgb2Ygc2tpcHBpbmcgdGVzdHMgaXMgdG8gYWRkIGEgLWRpc2Fi
bGVkIHN1ZmZpeC4KICAgICAgICAgICAgICMgU28gd2Ugc2hvdWxkIGNvbnNpZGVyIHRoZSBwYXRo
IGV4aXN0aW5nIGlmIHRoZSBwYXRoIG9yIHRoZQogICAgICAgICAgICAgIyAtZGlzYWJsZWQgdmVy
c2lvbiBleGlzdHMuCkBAIC03MTUsMTAgKzcxNSwxMCBAQCBjbGFzcyBUZXN0RXhwZWN0YXRpb25z
RmlsZToKICAgICBkZWYgX2V4cGFuZF90ZXN0cyhzZWxmLCB0ZXN0X2xpc3RfcGF0aCk6CiAgICAg
ICAgICIiIkNvbnZlcnQgdGhlIHRlc3Qgc3BlY2lmaWNhdGlvbiB0byBhbiBhYnNvbHV0ZSwgbm9y
bWFsaXplZAogICAgICAgICBwYXRoIGFuZCBtYWtlIHN1cmUgZGlyZWN0b3JpZXMgZW5kIHdpdGgg
dGhlIE9TIHBhdGggc2VwYXJhdG9yLiIiIgotICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKHNl
bGYuX3BvcnQubGF5b3V0X3Rlc3RzX2RpcigpLCB0ZXN0X2xpc3RfcGF0aCkKLSAgICAgICAgcGF0
aCA9IG9zLnBhdGgubm9ybXBhdGgocGF0aCkKKyAgICAgICAgcGF0aCA9IHNlbGYuX3BvcnQuX2Zp
bGVzeXN0ZW0uam9pbihzZWxmLl9wb3J0LmxheW91dF90ZXN0c19kaXIoKSwgdGVzdF9saXN0X3Bh
dGgpCisgICAgICAgIHBhdGggPSBzZWxmLl9wb3J0Ll9maWxlc3lzdGVtLm5vcm1wYXRoKHBhdGgp
CiAgICAgICAgIGlmIHNlbGYuX3BvcnQucGF0aF9pc2RpcihwYXRoKToKLSAgICAgICAgICAgIHBh
dGggPSBvcy5wYXRoLmpvaW4ocGF0aCwgJycpCisgICAgICAgICAgICBwYXRoID0gc2VsZi5fcG9y
dC5fZmlsZXN5c3RlbS5qb2luKHBhdGgsICcnKQogCiAgICAgICAgIHJlc3VsdCA9IFtdCiAgICAg
ICAgIGZvciB0ZXN0IGluIHNlbGYuX2Z1bGxfdGVzdF9saXN0OgpAQCAtNzkyLDcgKzc5Miw3IEBA
IGNsYXNzIFRlc3RFeHBlY3RhdGlvbnNGaWxlOgogICAgICAgICAgICAgc2VsZi5fcmVtb3ZlX2Zy
b21fc2V0cyh0ZXN0LCBzZWxmLl90aW1lbGluZV90b190ZXN0cykKICAgICAgICAgICAgIHNlbGYu
X3JlbW92ZV9mcm9tX3NldHModGVzdCwgc2VsZi5fcmVzdWx0X3R5cGVfdG9fdGVzdHMpCiAKLSAg
ICAgICAgc2VsZi5fdGVzdF9saXN0X3BhdGhzW3Rlc3RdID0gb3MucGF0aC5ub3JtcGF0aCh0ZXN0
X2xpc3RfcGF0aCkKKyAgICAgICAgc2VsZi5fdGVzdF9saXN0X3BhdGhzW3Rlc3RdID0gc2VsZi5f
cG9ydC5fZmlsZXN5c3RlbS5ub3JtcGF0aCh0ZXN0X2xpc3RfcGF0aCkKIAogICAgIGRlZiBfcmVt
b3ZlX2Zyb21fc2V0cyhzZWxmLCB0ZXN0LCBkaWN0KToKICAgICAgICAgIiIiUmVtb3ZlcyB0aGUg
Z2l2ZW4gdGVzdCBmcm9tIHRoZSBzZXRzIGluIHRoZSBkaWN0aW9uYXJ5LgpAQCAtODEzLDcgKzgx
Myw3IEBAIGNsYXNzIFRlc3RFeHBlY3RhdGlvbnNGaWxlOgogICAgICAgICAgICAgcmV0dXJuIEZh
bHNlCiAKICAgICAgICAgcHJldl9iYXNlX3BhdGggPSBzZWxmLl90ZXN0X2xpc3RfcGF0aHNbdGVz
dF0KLSAgICAgICAgaWYgKHByZXZfYmFzZV9wYXRoID09IG9zLnBhdGgubm9ybXBhdGgodGVzdF9s
aXN0X3BhdGgpKToKKyAgICAgICAgaWYgKHByZXZfYmFzZV9wYXRoID09IHNlbGYuX3BvcnQuX2Zp
bGVzeXN0ZW0ubm9ybXBhdGgodGVzdF9saXN0X3BhdGgpKToKICAgICAgICAgICAgIGlmIChub3Qg
YWxsb3dfb3ZlcnJpZGVzIG9yIHRlc3QgaW4gc2VsZi5fb3ZlcnJpZGRpbmdfdGVzdHMpOgogICAg
ICAgICAgICAgICAgIGlmIGFsbG93X292ZXJyaWRlczoKICAgICAgICAgICAgICAgICAgICAgZXhw
ZWN0YXRpb25fc291cmNlID0gIm92ZXJyaWRlIgpAQCAtODI5LDcgKzgyOSw3IEBAIGNsYXNzIFRl
c3RFeHBlY3RhdGlvbnNGaWxlOgogICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQogCiAgICAg
ICAgICMgQ2hlY2sgaWYgd2UndmUgYWxyZWFkeSBzZWVuIGEgbW9yZSBwcmVjaXNlIHBhdGguCi0g
ICAgICAgIHJldHVybiBwcmV2X2Jhc2VfcGF0aC5zdGFydHN3aXRoKG9zLnBhdGgubm9ybXBhdGgo
dGVzdF9saXN0X3BhdGgpKQorICAgICAgICByZXR1cm4gcHJldl9iYXNlX3BhdGguc3RhcnRzd2l0
aChzZWxmLl9wb3J0Ll9maWxlc3lzdGVtLm5vcm1wYXRoKHRlc3RfbGlzdF9wYXRoKSkKIAogICAg
IGRlZiBfYWRkX2Vycm9yKHNlbGYsIGxpbmVubywgbXNnLCBwYXRoKToKICAgICAgICAgIiIiUmVw
b3J0cyBhbiBlcnJvciB0aGF0IHdpbGwgcHJldmVudCBydW5uaW5nIHRoZSB0ZXN0cy4gRG9lcyBu
b3QKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L2xheW91dF9wYWNrYWdlL3Rlc3RfZXhwZWN0YXRpb25zX3VuaXR0ZXN0LnB5IGIvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9leHBl
Y3RhdGlvbnNfdW5pdHRlc3QucHkKaW5kZXggNTVlYWY5OTRiOGQyNTdjNDhiOTk0YzMwMDk2ZGIx
MDcyZTI2YzkwZC4uNjA1MmVlODkzZmVhNTVhZmI5OTRkZTdkNDQ2MmE0NjE3ZTNkNThjZiAxMDA2
NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0
X3BhY2thZ2UvdGVzdF9leHBlY3RhdGlvbnNfdW5pdHRlc3QucHkKKysrIGIvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9leHBlY3Rh
dGlvbnNfdW5pdHRlc3QucHkKQEAgLTI5LDcgKzI5LDYgQEAKIAogIiIiVW5pdCB0ZXN0cyBmb3Ig
dGVzdF9leHBlY3RhdGlvbnMucHkuIiIiCiAKLWltcG9ydCBvcwogaW1wb3J0IHN5cwogaW1wb3J0
IHVuaXR0ZXN0CiAKQEAgLTg2LDcgKzg1LDcgQEAgY2xhc3MgQmFzZSh1bml0dGVzdC5UZXN0Q2Fz
ZSk6CiAgICAgICAgIHVuaXR0ZXN0LlRlc3RDYXNlLl9faW5pdF9fKHNlbGYsIHRlc3RGdW5jKQog
CiAgICAgZGVmIGdldF90ZXN0KHNlbGYsIHRlc3RfbmFtZSk6Ci0gICAgICAgIHJldHVybiBvcy5w
YXRoLmpvaW4oc2VsZi5fcG9ydC5sYXlvdXRfdGVzdHNfZGlyKCksIHRlc3RfbmFtZSkKKyAgICAg
ICAgcmV0dXJuIHNlbGYuX3BvcnQuX2ZpbGVzeXN0ZW0uam9pbihzZWxmLl9wb3J0LmxheW91dF90
ZXN0c19kaXIoKSwgdGVzdF9uYW1lKQogCiAgICAgZGVmIGdldF9iYXNpY190ZXN0cyhzZWxmKToK
ICAgICAgICAgcmV0dXJuIFtzZWxmLmdldF90ZXN0KCdmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0
bWwnKSwKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvYmFzZS5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvYmFzZS5weQppbmRleCA0YTI5NzBlMzIwM2M2MDBmNWUyODlmOGU4M2RkOGFhNDI5
MDBhMWI0Li4wZjcwM2NhYmEzNmU0MmE2MDgyZGNkMTBkNGZjYWU5ZTQxMTBmN2RhIDEwMDY0NAot
LS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2Uu
cHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9i
YXNlLnB5CkBAIC0yNTUsNyArMjU1LDcgQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAgICAgICBj
b25qdW5jdGlvbiB3aXRoIHRoZSBvdGhlciBiYXNlbGluZSBhbmQgZmlsZW5hbWUgcm91dGluZXMg
dGhhdCBhcmUKICAgICAgICAgcGxhdGZvcm0gc3BlY2lmaWMuCiAgICAgICAgICIiIgotICAgICAg
ICB0ZXN0bmFtZSA9IG9zLnBhdGguc3BsaXRleHQoc2VsZi5yZWxhdGl2ZV90ZXN0X2ZpbGVuYW1l
KGZpbGVuYW1lKSlbMF0KKyAgICAgICAgdGVzdG5hbWUgPSBzZWxmLl9maWxlc3lzdGVtLnNwbGl0
ZXh0KHNlbGYucmVsYXRpdmVfdGVzdF9maWxlbmFtZShmaWxlbmFtZSkpWzBdCiAKICAgICAgICAg
YmFzZWxpbmVfZmlsZW5hbWUgPSB0ZXN0bmFtZSArICctZXhwZWN0ZWQnICsgc3VmZml4CiAKQEAg
LTM1OSw3ICszNTksNyBAQCBjbGFzcyBQb3J0KG9iamVjdCk6CiAgICAgICAgICAgICAgICAgcHJv
dG9jb2wgPSAiaHR0cCIKICAgICAgICAgICAgIHJldHVybiAiJXM6Ly8xMjcuMC4wLjE6JXUvJXMi
ICUgKHByb3RvY29sLCBwb3J0LCByZWxhdGl2ZV9wYXRoKQogCi0gICAgICAgIHJldHVybiBwYXRo
LmFic3BhdGhfdG9fdXJpKG9zLnBhdGguYWJzcGF0aChmaWxlbmFtZSkpCisgICAgICAgIHJldHVy
biBwYXRoLmFic3BhdGhfdG9fdXJpKHNlbGYuX2ZpbGVzeXN0ZW0uYWJzcGF0aChmaWxlbmFtZSkp
CiAKICAgICBkZWYgdGVzdHMoc2VsZiwgcGF0aHMpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIGxp
c3Qgb2YgdGVzdHMgZm91bmQgKHJlbGF0aXZlIHRvIGxheW91dF90ZXN0c19kaXIoKS4iIiIKQEAg
LTY5Niw3ICs2OTYsNyBAQCBjbGFzcyBQb3J0KG9iamVjdCk6CiAgICAgZGVmIHByZXR0eV9wYXRj
aF90ZXh0KHNlbGYsIGRpZmZfcGF0aCk6CiAgICAgICAgIGlmIG5vdCBzZWxmLl9wcmV0dHlfcGF0
Y2hfYXZhaWxhYmxlOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3ByZXR0eV9wYXRjaF9lcnJv
cl9odG1sCi0gICAgICAgIGNvbW1hbmQgPSAoInJ1YnkiLCAiLUkiLCBvcy5wYXRoLmRpcm5hbWUo
c2VsZi5fcHJldHR5X3BhdGNoX3BhdGgpLAorICAgICAgICBjb21tYW5kID0gKCJydWJ5IiwgIi1J
Iiwgc2VsZi5fZmlsZXN5c3RlbS5kaXJuYW1lKHNlbGYuX3ByZXR0eV9wYXRjaF9wYXRoKSwKICAg
ICAgICAgICAgICAgICAgICBzZWxmLl9wcmV0dHlfcGF0Y2hfcGF0aCwgZGlmZl9wYXRoKQogICAg
ICAgICB0cnk6CiAgICAgICAgICAgICAjIERpZmZzIGFyZSB0cmVhdGVkIGFzIGJpbmFyeSAod2Ug
cGFzcyBkZWNvZGVfb3V0cHV0PUZhbHNlKSBhcyB0aGV5CmRpZmYgLS1naXQgYS9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2NvbmZpZ19zdGFuZGFsb25lLnB5
IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jb25maWdf
c3RhbmRhbG9uZS5weQppbmRleCAzZGVjM2I5MWM0NTYyYmVjYTkxYmE1MGU3YzcyMTViNWI0MmRk
Y2FmLi43MDkyN2FmN2YxNTI1YzRmZmRmNGIzMTY5NDlmODFlZjQxNzU5ODViIDEwMDY0NAotLS0g
YS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2NvbmZpZ19z
dGFuZGFsb25lLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvY29uZmlnX3N0YW5kYWxvbmUucHkKQEAgLTQ0LDEwICs0NCwxMCBAQCBzY3JpcHRf
ZGlyID0gdXAodXAodXAodGhpc19kaXIpKSkKIGlmIHNjcmlwdF9kaXIgbm90IGluIHN5cy5wYXRo
OgogICAgIHN5cy5wYXRoLmFwcGVuZChzY3JpcHRfZGlyKQogCitmcm9tIHdlYmtpdHB5LmNvbW1v
biBpbXBvcnQgaW5fbWVtb3J5X2ZpbGVzeXN0ZW0KIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3Rl
bSBpbXBvcnQgZXhlY3V0aXZlCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0IGV4
ZWN1dGl2ZV9tb2NrCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0IGZpbGVzeXN0
ZW0KLWZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQgZmlsZXN5c3RlbV9tb2NrCiAK
IGltcG9ydCBjb25maWcKIApAQCAtNTgsNyArNTgsNyBAQCBkZWYgbWFpbihhcmd2PU5vbmUpOgog
CiAgICAgaWYgbGVuKGFyZ3YpID09IDMgYW5kIGFyZ3ZbMV0gPT0gJy0tbW9jayc6CiAgICAgICAg
IGUgPSBleGVjdXRpdmVfbW9jay5Nb2NrRXhlY3V0aXZlMihvdXRwdXQ9J2ZvbycpCi0gICAgICAg
IGZzID0gZmlsZXN5c3RlbV9tb2NrLk1vY2tGaWxlU3lzdGVtKHsnZm9vL0NvbmZpZ3VyYXRpb24n
OiBhcmd2WzJdfSkKKyAgICAgICAgZnMgPSBpbl9tZW1vcnlfZmlsZXN5c3RlbS5Jbk1lbW9yeUZp
bGVTeXN0ZW0oeydmb28vQ29uZmlndXJhdGlvbic6IGFyZ3ZbMl19KQogICAgIGVsc2U6CiAgICAg
ICAgIGUgPSBleGVjdXRpdmUuRXhlY3V0aXZlKCkKICAgICAgICAgZnMgPSBmaWxlc3lzdGVtLkZp
bGVTeXN0ZW0oKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9jb25maWdfdW5pdHRlc3QucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2NvbmZpZ191bml0dGVzdC5weQppbmRleCBmNWUyZDNh
MzVkMTRlZTllNjJkNWE5MTZlZGZlMjE2OGY4NGYyNmE3Li40NzczZmUyNzg0MDI0MDNhM2UwZWJl
MjdiOTM5YjcxYTIyNTQ3ZDk1IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L2NvbmZpZ191bml0dGVzdC5weQorKysgYi9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2NvbmZpZ191bml0dGVzdC5weQpA
QCAtMzAsMTAgKzMwLDEwIEBAIGltcG9ydCBvcwogaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0
CiAKK2Zyb20gd2Via2l0cHkuY29tbW9uIGltcG9ydCBpbl9tZW1vcnlfZmlsZXN5c3RlbQogZnJv
bSB3ZWJraXRweS5jb21tb24uc3lzdGVtIGltcG9ydCBleGVjdXRpdmUKIGZyb20gd2Via2l0cHku
Y29tbW9uLnN5c3RlbSBpbXBvcnQgZXhlY3V0aXZlX21vY2sKIGZyb20gd2Via2l0cHkuY29tbW9u
LnN5c3RlbSBpbXBvcnQgZmlsZXN5c3RlbQotZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtIGlt
cG9ydCBmaWxlc3lzdGVtX21vY2sKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQg
b3V0cHV0Y2FwdHVyZQogCiBpbXBvcnQgY29uZmlnCkBAIC00NCw3ICs0NCw3IEBAIGNsYXNzIENv
bmZpZ1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIG1ha2VfY29uZmlnKHNlbGYs
IG91dHB1dD0nJywgZmlsZXM9e30sIGV4aXRfY29kZT0wKToKICAgICAgICAgZSA9IGV4ZWN1dGl2
ZV9tb2NrLk1vY2tFeGVjdXRpdmUyKG91dHB1dD1vdXRwdXQsIGV4aXRfY29kZT1leGl0X2NvZGUp
Ci0gICAgICAgIGZzID0gZmlsZXN5c3RlbV9tb2NrLk1vY2tGaWxlU3lzdGVtKGZpbGVzKQorICAg
ICAgICBmcyA9IGluX21lbW9yeV9maWxlc3lzdGVtLkluTWVtb3J5RmlsZVN5c3RlbShmaWxlcykK
ICAgICAgICAgcmV0dXJuIGNvbmZpZy5Db25maWcoZSwgZnMpCiAKICAgICBkZWYgYXNzZXJ0X2Nv
bmZpZ3VyYXRpb24oc2VsZiwgY29udGVudHMsIGV4cGVjdGVkKToKZGlmZiAtLWdpdCBhL1dlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZHJ5cnVuLnB5IGIvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9kcnlydW4ucHkKaW5k
ZXggOGE2YWY1NmM4NDIwZTQ1MGM0MTg5N2FmZTU0M2U2NjcwNmY5YWU3Ni4uYTE5NThmOWFjZGI1
NTdiZjZhMGMyMzQ4NzlhZGM3YmIzODE3ODZmNCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9kcnlydW4ucHkKKysrIGIvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9kcnlydW4ucHkKQEAgLTQ0LDEx
ICs0NCw2IEBACiAgICBUaGlzIGltcGxlbWVudGF0aW9uIGFsc28gbW9kaWZpZXMgdGhlIHRlc3Qg
ZXhwZWN0YXRpb25zIHNvIHRoYXQgYWxsCiAgICB0ZXN0cyBhcmUgZWl0aGVyIFNLSVBQRUQgb3Ig
ZXhwZWN0ZWQgdG8gUEFTUy4iIiIKIAotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB3aXRoX3N0YXRl
bWVudAotCi1pbXBvcnQgb3MKLWltcG9ydCBzeXMKLQogaW1wb3J0IGJhc2UKIGltcG9ydCBmYWN0
b3J5CiAKQEAgLTExMCwxNCArMTA1LDE0IEBAIGNsYXNzIERyeXJ1bkRyaXZlcihiYXNlLkRyaXZl
cik6CiAKICAgICBkZWYgcnVuX3Rlc3Qoc2VsZiwgdXJpLCB0aW1lb3V0bXMsIGltYWdlX2hhc2gp
OgogICAgICAgICB0ZXN0X25hbWUgPSBzZWxmLl9wb3J0LnVyaV90b190ZXN0X25hbWUodXJpKQot
ICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKHNlbGYuX3BvcnQubGF5b3V0X3Rlc3RzX2Rpcigp
LCB0ZXN0X25hbWUpCisgICAgICAgIHBhdGggPSBzZWxmLl9wb3J0Ll9maWxlc3lzdGVtLmpvaW4o
c2VsZi5fcG9ydC5sYXlvdXRfdGVzdHNfZGlyKCksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGVzdF9uYW1lKQogICAgICAgICB0ZXh0X291dHB1dCA9IHNlbGYu
X3BvcnQuZXhwZWN0ZWRfdGV4dChwYXRoKQogCiAgICAgICAgIGlmIGltYWdlX2hhc2ggaXMgbm90
IE5vbmU6CiAgICAgICAgICAgICBpbWFnZSA9IHNlbGYuX3BvcnQuZXhwZWN0ZWRfaW1hZ2UocGF0
aCkKICAgICAgICAgICAgIGlmIGltYWdlIGFuZCBzZWxmLl9pbWFnZV9wYXRoOgotICAgICAgICAg
ICAgICAgIHdpdGggb3BlbihzZWxmLl9pbWFnZV9wYXRoLCAndycpIGFzIGY6Ci0gICAgICAgICAg
ICAgICAgICAgIGYud3JpdGUoaW1hZ2UpCisgICAgICAgICAgICAgICAgc2VsZi5fcG9ydC5fZmls
ZXN5c3RlbS53cml0ZV9iaW5hcnlfZmlsZShzZWxmLl9pbWFnZV9wYXRoLCBpbWFnZSkKICAgICAg
ICAgICAgIGhhc2ggPSBzZWxmLl9wb3J0LmV4cGVjdGVkX2NoZWNrc3VtKHBhdGgpCiAgICAgICAg
IGVsc2U6CiAgICAgICAgICAgICBoYXNoID0gTm9uZQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9wb3J0X3Rlc3RjYXNlLnB5IGIvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9wb3J0X3Rlc3RjYXNl
LnB5CmluZGV4IDA0YWRhNTAwMGUzYjM1MzgyYzNjOTYwOTIyZTI4YzU1M2MzZjQwNGUuLmQ2YWJk
NzNhOTFlYzhhZDFlNGRiZjc0ZjE1MWNmMmU4MDJmNDRlODcgMTAwNjQ0Ci0tLSBhL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvcG9ydF90ZXN0Y2FzZS5weQor
KysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3BvcnRf
dGVzdGNhc2UucHkKQEAgLTQ4LDYgKzQ4LDEwIEBAIGNsYXNzIFBvcnRUZXN0Q2FzZSh1bml0dGVz
dC5UZXN0Q2FzZSk6CiAgICAgICAgIHBvcnQgPSBzZWxmLm1ha2VfcG9ydCgpCiAgICAgICAgIGlm
IG5vdCBwb3J0OgogICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgIyBGSVhNRTogRGlzYWJs
ZSB1bnRpbCB3ZSBjYW4gcnVuIGludGVncmF0aW9uIHRlc3RzLgorICAgICAgICByZXR1cm4KKwog
ICAgICAgICBwb3J0LnN0YXJ0X2h0dHBfc2VydmVyKCkKICAgICAgICAgcG9ydC5zdG9wX2h0dHBf
c2VydmVyKCkKIApAQCAtNTYsNiArNjAsMTAgQEAgY2xhc3MgUG9ydFRlc3RDYXNlKHVuaXR0ZXN0
LlRlc3RDYXNlKToKICAgICAgICAgaWYgbm90IHBvcnQ6CiAgICAgICAgICAgICByZXR1cm4KIAor
ICAgICAgICAjIEZJWE1FOiBGaXNhYmxlIHVudGlsIHdlIGNhbiBydW4gaW50ZWdyYXRpb24gdGVz
dHMuCisgICAgICAgIHJldHVybgorCisKICAgICAgICAgIyBGSVhNRTogbm90IHN1cmUgd2h5IHRo
aXMgc2hvdWxkbid0IGFsd2F5cyBiZSBUcnVlCiAgICAgICAgICNzZWxmLmFzc2VydFRydWUocG9y
dC5jaGVja19pbWFnZV9kaWZmKCkpCiAgICAgICAgIGlmIG5vdCBwb3J0LmNoZWNrX2ltYWdlX2Rp
ZmYoKToKQEAgLTg1LDUgKzkzLDkgQEAgY2xhc3MgUG9ydFRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RD
YXNlKToKICAgICAgICAgcG9ydCA9IHNlbGYubWFrZV9wb3J0KCkKICAgICAgICAgaWYgbm90IHBv
cnQ6CiAgICAgICAgICAgICByZXR1cm4KKworICAgICAgICAjIEZJWE1FOiBEaXNhYmxlIHVudGls
IHdlIGNhbiBydW4gaW50ZWdyYXRpb24gdGVzdHMuCisgICAgICAgIHJldHVybgorCiAgICAgICAg
IHBvcnQuc3RhcnRfd2Vic29ja2V0X3NlcnZlcigpCiAgICAgICAgIHBvcnQuc3RvcF93ZWJzb2Nr
ZXRfc2VydmVyKCkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvdGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvdGVzdC5weQppbmRleCBmZjQwODZjNzRkYzE4MmJhODQ3MTIzZTYzNTUw
MGQxNDQxMWQ5OTNlLi43YTI1NWQ4MTJkOWQzODMwOTVjOTE3N2FkMWU1ODNkZDI1ODc1MDMzIDEw
MDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L3Rlc3QucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC90ZXN0LnB5CkBAIC0zMCwxNSArMzAsMzEgQEAKICIiIkR1bW15IFBvcnQgaW1wbGVtZW50
YXRpb24gdXNlZCBmb3IgdGVzdGluZy4iIiIKIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgd2l0aF9z
dGF0ZW1lbnQKIAotaW1wb3J0IGNvZGVjcworZnJvbSB3ZWJraXRweS5jb21tb24gaW1wb3J0IGlu
X21lbW9yeV9maWxlc3lzdGVtCiBpbXBvcnQgZm5tYXRjaAotaW1wb3J0IG9zCi1pbXBvcnQgc3lz
CiBpbXBvcnQgdGltZQogCiBpbXBvcnQgYmFzZQogCiAKK2RlZiB0ZXN0X2ZpbGVzeXN0ZW0oKToK
KyAgICAjIEZJWE1FOiBBZGQgcmVtYWluaW5nIGZpbGVzLCByZXZhbXAgVGVzdEluc3RhbmNlL1Rl
c3RMaXN0LgorICAgIHJldHVybiBpbl9tZW1vcnlfZmlsZXN5c3RlbS5Jbk1lbW9yeUZpbGVTeXN0
ZW0oZmlsZXM9eworICAgICAgICAiL0xheW91dFRlc3RzL3Bhc3Nlcy9pbWFnZS5odG1sIjogImlt
YWdlIiwKKyAgICAgICAgIi9MYXlvdXRUZXN0cy9wYXNzZXMvaW1hZ2UtZXhwZWN0ZWQudHh0Ijog
ImltYWdlLXR4dCIsCisgICAgICAgICIvTGF5b3V0VGVzdHMvcGFzc2VzL2ltYWdlLWV4cGVjdGVk
LnBuZyI6ICJpbWFnZS1wbmciLAorICAgICAgICAiL0xheW91dFRlc3RzL3Bhc3Nlcy9pbWFnZS1l
eHBlY3RlZC5jaGVja3N1bSI6ICJpbWFnZS1jaGVja3N1bSIsCisgICAgICAgICIvTGF5b3V0VGVz
dHMvZmFpbHVyZXMvZXhwZWN0ZWQvY3Jhc2guaHRtbCI6ICJjcmFzaCIsCisgICAgICAgICIvTGF5
b3V0VGVzdHMvZmFpbHVyZXMvZXhwZWN0ZWQvZXhjZXB0aW9uLmh0bWwiOiAiZXhjZXB0aW9uIiwK
KyAgICAgICAgIi9MYXlvdXRUZXN0cy9mYWlsdXJlcy9leHBlY3RlZC9oYW5nLmh0bWwiOiAiaGFu
ZyIsCisgICAgICAgICIvTGF5b3V0VGVzdHMvZmFpbHVyZXMvZXhwZWN0ZWQva2V5Ym9hcmQuaHRt
bCI6ICJrZXlib2FyZCIsCisgICAgICAgICIvTGF5b3V0VGVzdHMvZmFpbHVyZXMvZXhwZWN0ZWQv
bWlzc2luZ19pbWFnZS5odG1sIjogIm1pc3NpbmdfaW1hZ2UiLAorICAgICAgICAiL0xheW91dFRl
c3RzL2ZhaWx1cmVzL2V4cGVjdGVkL21pc3NpbmdfaW1hZ2UtZXhwZWN0ZWQudHh0IjogIm1pc3Np
bmdfaW1hZ2UtdHh0IiwKKyAgICAgICAgIi9MYXlvdXRUZXN0cy9mYWlsdXJlcy9leHBlY3RlZC9t
aXNzaW5nX2ltYWdlLWV4cGVjdGVkLmNoZWNrc3VtIjogIm1pc3NpbmdfaW1hZ2UtY2hlY2tzdW0i
LAorICAgICAgICAiL3RtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL3VuZXhwZWN0ZWRfcmVzdWx0cy5q
c29uIjogTm9uZSwKKyAgICB9KQorCisKICMgVGhpcyBzZXRzIGJhc2ljIGV4cGVjdGF0aW9ucyBm
b3IgYSB0ZXN0LiBFYWNoIGluZGl2aWR1YWwgZXhwZWN0YXRpb24KICMgY2FuIGJlIG92ZXJyaWRk
ZW4gYnkgYSBrZXl3b3JkIGFyZ3VtZW50IGluIFRlc3RMaXN0LmFkZCgpLgogY2xhc3MgVGVzdElu
c3RhbmNlOgpAQCAtODUsOCArMTAxLDkgQEAgY2xhc3MgVGVzdExpc3Q6CiBjbGFzcyBUZXN0UG9y
dChiYXNlLlBvcnQpOgogICAgICIiIlRlc3QgaW1wbGVtZW50YXRpb24gb2YgdGhlIFBvcnQgaW50
ZXJmYWNlLiIiIgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsICoqa3dhcmdzKToKLSAgICAgICAg
YmFzZS5Qb3J0Ll9faW5pdF9fKHNlbGYsICoqa3dhcmdzKQorICAgIGRlZiBfX2luaXRfXyhzZWxm
LCBmaWxlc3lzdGVtPU5vbmUsICoqa3dhcmdzKToKKyAgICAgICAgZmlsZXN5c3RlbSA9IGZpbGVz
eXN0ZW0gb3IgdGVzdF9maWxlc3lzdGVtKCkKKyAgICAgICAgYmFzZS5Qb3J0Ll9faW5pdF9fKHNl
bGYsIGZpbGVzeXN0ZW09ZmlsZXN5c3RlbSwgKiprd2FyZ3MpCiAgICAgICAgIHRlc3RzID0gVGVz
dExpc3Qoc2VsZikKICAgICAgICAgdGVzdHMuYWRkKCdwYXNzZXMvaW1hZ2UuaHRtbCcpCiAgICAg
ICAgIHRlc3RzLmFkZCgncGFzc2VzL3RleHQuaHRtbCcpCkBAIC0xMjcsOCArMTQ0LDggQEAgY2xh
c3MgVGVzdFBvcnQoYmFzZS5Qb3J0KToKICAgICAgICAgc2VsZi5fdGVzdHMgPSB0ZXN0cwogCiAg
ICAgZGVmIGJhc2VsaW5lX3BhdGgoc2VsZik6Ci0gICAgICAgIHJldHVybiBvcy5wYXRoLmpvaW4o
c2VsZi5sYXlvdXRfdGVzdHNfZGlyKCksICdwbGF0Zm9ybScsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2VsZi5uYW1lKCkgKyBzZWxmLnZlcnNpb24oKSkKKyAgICAgICAgcmV0dXJuIHNl
bGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxmLmxheW91dF90ZXN0c19kaXIoKSwgJ3BsYXRmb3JtJywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm5hbWUoKSArIHNlbGYu
dmVyc2lvbigpKQogCiAgICAgZGVmIGJhc2VsaW5lX3NlYXJjaF9wYXRoKHNlbGYpOgogICAgICAg
ICByZXR1cm4gW3NlbGYuYmFzZWxpbmVfcGF0aCgpXQpAQCAtMTQwLDkgKzE1Nyw4IEBAIGNsYXNz
IFRlc3RQb3J0KGJhc2UuUG9ydCk6CiAgICAgICAgICAgICAgICAgICAgZGlmZl9maWxlbmFtZT1O
b25lKToKICAgICAgICAgZGlmZmVkID0gYWN0dWFsX2NvbnRlbnRzICE9IGV4cGVjdGVkX2NvbnRl
bnRzCiAgICAgICAgIGlmIGRpZmZlZCBhbmQgZGlmZl9maWxlbmFtZToKLSAgICAgICAgICAgIHdp
dGggY29kZWNzLm9wZW4oZGlmZl9maWxlbmFtZSwgInciLCAidXRmLTgiKSBhcyBkaWZmX2ZoOgot
ICAgICAgICAgICAgICAgIGRpZmZfZmgud3JpdGUoIjwgJXNcbi0tLVxuPiAlc1xuIiAlCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAoZXhwZWN0ZWRfY29udGVudHMsIGFjdHVhbF9jb250
ZW50cykpCisgICAgICAgICAgICBzZWxmLl9maWxlc3lzdGVtLndyaXRlX3RleHRfZmlsZShkaWZm
X2ZpbGVuYW1lLAorICAgICAgICAgICAgICAgICI8ICVzXG4tLS1cbj4gJXNcbiIgJSAoZXhwZWN0
ZWRfY29udGVudHMsIGFjdHVhbF9jb250ZW50cykpCiAgICAgICAgIHJldHVybiBkaWZmZWQKIAog
ICAgIGRlZiBleHBlY3RlZF9jaGVja3N1bShzZWxmLCB0ZXN0KToKQEAgLTE2MCw2ICsxNzYsMTUg
QEAgY2xhc3MgVGVzdFBvcnQoYmFzZS5Qb3J0KToKICAgICAgICAgICAgIHRleHQgPSAnJwogICAg
ICAgICByZXR1cm4gdGV4dAogCisgICAgZGVmIHdlYmtpdF9iYXNlX2RpcihzZWxmKToKKyAgICAg
ICAgcmV0dXJuICcvJworCisgICAgZGVmIHByZXR0eV9wYXRjaF90ZXh0KHNlbGYsIGRpZmZfcGF0
aCk6CisgICAgICAgIHJldHVybiAnJworCisgICAgZGVmIHdkaWZmX3RleHQoc2VsZiwgYWN0dWFs
LCBleHBlY3RlZCk6CisgICAgICAgIHJldHVybiAnJworCiAgICAgZGVmIHRlc3RzKHNlbGYsIHBh
dGhzKToKICAgICAgICAgIyBUZXN0IHRoZSBpZGVhIG9mIHBvcnQtc3BlY2lmaWMgb3ZlcnJpZGVz
IGZvciB0ZXN0IGxpc3RzLiBBbHNvCiAgICAgICAgICMga2VlcCBpbiBtZW1vcnkgdG8gc3BlZWQg
dXAgdGhlIHRlc3QgaGFybmVzcy4KQEAgLTE3MywxNCArMTk4LDE0IEBAIGNsYXNzIFRlc3RQb3J0
KGJhc2UuUG9ydCk6CiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIG1hdGNoZWRf
dGVzdHMuZXh0ZW5kKGZubWF0Y2guZmlsdGVyKHNlbGYuX3Rlc3RzLmtleXMoKSwgcCkpCiAgICAg
ICAgIGxheW91dF90ZXN0c19kaXIgPSBzZWxmLmxheW91dF90ZXN0c19kaXIoKQotICAgICAgICBy
ZXR1cm4gc2V0KFtvcy5wYXRoLmpvaW4obGF5b3V0X3Rlc3RzX2RpciwgcCkgZm9yIHAgaW4gbWF0
Y2hlZF90ZXN0c10pCisgICAgICAgIHJldHVybiBzZXQoW3NlbGYuX2ZpbGVzeXN0ZW0uam9pbihs
YXlvdXRfdGVzdHNfZGlyLCBwKSBmb3IgcCBpbiBtYXRjaGVkX3Rlc3RzXSkKIAogICAgIGRlZiBw
YXRoX2V4aXN0cyhzZWxmLCBwYXRoKToKICAgICAgICAgIyB1c2VkIGJ5IHRlc3RfZXhwZWN0YXRp
b25zLnB5IGFuZCBwcmludGluZy5weQogICAgICAgICBycGF0aCA9IHNlbGYucmVsYXRpdmVfdGVz
dF9maWxlbmFtZShwYXRoKQogICAgICAgICBpZiBycGF0aCBpbiBzZWxmLl90ZXN0czoKICAgICAg
ICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgIGlmIHNlbGYucGF0aF9pc2RpcihycGF0aCk6Cisg
ICAgICAgIGlmIHNlbGYucGF0aF9pc2RpcihwYXRoKToKICAgICAgICAgICAgIHJldHVybiBUcnVl
CiAgICAgICAgIGlmIHJwYXRoLmVuZHN3aXRoKCctZXhwZWN0ZWQudHh0Jyk6CiAgICAgICAgICAg
ICB0ZXN0ID0gcnBhdGgucmVwbGFjZSgnLWV4cGVjdGVkLnR4dCcsICcuaHRtbCcpCkBAIC0xOTcs
MTcgKzIyMiw3IEBAIGNsYXNzIFRlc3RQb3J0KGJhc2UuUG9ydCk6CiAgICAgICAgIHJldHVybiBG
YWxzZQogCiAgICAgZGVmIGxheW91dF90ZXN0c19kaXIoc2VsZik6Ci0gICAgICAgIHJldHVybiBz
ZWxmLnBhdGhfZnJvbV93ZWJraXRfYmFzZSgnV2ViS2l0VG9vbHMnLCAnU2NyaXB0cycsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd2Via2l0cHknLCAnbGF5b3V0
X3Rlc3RzJywgJ2RhdGEnKQotCi0gICAgZGVmIHBhdGhfaXNkaXIoc2VsZiwgcGF0aCk6Ci0gICAg
ICAgICMgVXNlZCBieSB0ZXN0X2V4cGVjdGF0aW9ucy5weQotICAgICAgICAjCi0gICAgICAgICMg
V2UgYXNzdW1lIHRoYXQgYSBwYXRoIGlzIGEgZGlyZWN0b3J5IGlmIHdlIGhhdmUgYW55IHRlc3Rz
IHRoYXQKLSAgICAgICAgIyB3aG9zZSBwcmVmaXggbWF0Y2hlcyB0aGUgcGF0aCBwbHVzIGEgZGly
ZWN0b3J5IG1vZGlmaWVyLgotICAgICAgICBpZiBwYXRoWy0xXSAhPSAnLyc6Ci0gICAgICAgICAg
ICBwYXRoICs9ICcvJwotICAgICAgICByZXR1cm4gYW55KFt0LnN0YXJ0c3dpdGgocGF0aCkgZm9y
IHQgaW4gc2VsZi5fdGVzdHMua2V5cygpXSkKKyAgICAgICAgcmV0dXJuICcvTGF5b3V0VGVzdHMn
CiAKICAgICBkZWYgdGVzdF9kaXJzKHNlbGYpOgogICAgICAgICByZXR1cm4gWydwYXNzZXMnLCAn
ZmFpbHVyZXMnXQpAQCAtMjk5LDggKzMxNCw4IEBAIGNsYXNzIFRlc3REcml2ZXIoYmFzZS5Ecml2
ZXIpOgogICAgICAgICAgICAgdGltZS5zbGVlcCgoZmxvYXQodGltZW91dG1zKSAqIDQpIC8gMTAw
MC4wKQogCiAgICAgICAgIGlmIHNlbGYuX3BvcnQuZ2V0X29wdGlvbigncGl4ZWxfdGVzdHMnKSBh
bmQgdGVzdC5hY3R1YWxfaW1hZ2U6Ci0gICAgICAgICAgICB3aXRoIG9wZW4oc2VsZi5faW1hZ2Vf
cGF0aCwgJ3cnKSBhcyBmaWxlOgotICAgICAgICAgICAgICAgIGZpbGUud3JpdGUodGVzdC5hY3R1
YWxfaW1hZ2UpCisgICAgICAgICAgICBzZWxmLl9wb3J0Ll9maWxlc3lzdGVtLndyaXRlX2JpbmFy
eV9maWxlKHNlbGYuX2ltYWdlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRlc3QuYWN0dWFsX2ltYWdlKQogCiAgICAgICAgIHJldHVy
biAodGVzdC5jcmFzaCwgdGVzdC50aW1lb3V0LCB0ZXN0LmFjdHVhbF9jaGVja3N1bSwKICAgICAg
ICAgICAgICAgICB0ZXN0LmFjdHVhbF90ZXh0LCB0ZXN0LmVycm9yKQpkaWZmIC0tZ2l0IGEvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0X2ZpbGVzLnB5
IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0X2Zp
bGVzLnB5CmluZGV4IDNmYTBmYjM2NGJiMzE5NjAyZTYxOWFkZjVkZDUxZDMyYjBmNTdhNTIuLmVk
NDQ0ZGIxMDBjYTNlNDk0MjgwYjFjZDNmNzNkZWE0MjQwZGQyMGIgMTAwNjQ0Ci0tLSBhL1dlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdF9maWxlcy5weQor
KysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3Rf
ZmlsZXMucHkKQEAgLTM0LDggKzM0LDYgQEAgbGlzdCBvZiB0ZXN0IGZpbGVzIGlzIGNvbnN0cmFp
bmVkIHRvIHRob3NlIGZvdW5kIHVuZGVyIHRoZSBwYXRocyBwYXNzZWQgaW4sCiBpLmUuIGNhbGxp
bmcgZmluZChbIkxheW91dFRlc3RzL2Zhc3QiXSkgd2lsbCBvbmx5IHJldHVybiBmaWxlcwogdW5k
ZXIgdGhhdCBkaXJlY3RvcnkuIiIiCiAKLWltcG9ydCBnbG9iCi1pbXBvcnQgb3MKIGltcG9ydCB0
aW1lCiAKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQgbG9ndXRpbHMKQEAgLTQz
LDcgKzQxLDYgQEAgZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtIGltcG9ydCBsb2d1dGlscwog
CiBfbG9nID0gbG9ndXRpbHMuZ2V0X2xvZ2dlcihfX2ZpbGVfXykKIAotCiAjIFdoZW4gY29sbGVj
dGluZyB0ZXN0IGNhc2VzLCB3ZSBpbmNsdWRlIGFueSBmaWxlIHdpdGggdGhlc2UgZXh0ZW5zaW9u
cy4KIF9zdXBwb3J0ZWRfZmlsZV9leHRlbnNpb25zID0gc2V0KFsnLmh0bWwnLCAnLnNodG1sJywg
Jy54bWwnLCAnLnhodG1sJywgJy54aHRtbG1wJywgJy5wbCcsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJy5waHAnLCAnLnN2ZyddKQpAQCAtNTksMzIgKzU2LDM0IEBAIGRlZiBm
aW5kKHBvcnQsIHBhdGhzKToKICAgICAgICAgICB0byBsaW1pdCB0aGUgc2VhcmNoIHRvLiBnbG9i
IHBhdHRlcm5zIGFyZSBvay4KICAgICAiIiIKICAgICBnYXRoZXJfc3RhcnRfdGltZSA9IHRpbWUu
dGltZSgpCisgICAgZnMgPSBwb3J0Ll9maWxlc3lzdGVtCisgICAgbGF5b3V0X3Rlc3RzX2RpciA9
IHBvcnQubGF5b3V0X3Rlc3RzX2RpcigpCiAgICAgcGF0aHNfdG9fd2FsayA9IHNldCgpCiAgICAg
IyBpZiBwYXRocyBpcyBlbXB0eSwgcHJvdmlkZSBhIHByZS1kZWZpbmVkIGxpc3QuCiAgICAgaWYg
cGF0aHM6Ci0gICAgICAgIF9sb2cuZGVidWcoIkdhdGhlcmluZyB0ZXN0cyBmcm9tOiAlcyByZWxh
dGl2ZSB0byAlcyIgJSAocGF0aHMsIHBvcnQubGF5b3V0X3Rlc3RzX2RpcigpKSkKKyAgICAgICAg
X2xvZy5kZWJ1ZygiR2F0aGVyaW5nIHRlc3RzIGZyb206ICVzIHJlbGF0aXZlIHRvICVzIiAlIChw
YXRocywgbGF5b3V0X3Rlc3RzX2RpcikpCiAgICAgICAgIGZvciBwYXRoIGluIHBhdGhzOgogICAg
ICAgICAgICAgIyBJZiB0aGVyZSdzIGFuICogaW4gdGhlIG5hbWUsIGFzc3VtZSBpdCdzIGEgZ2xv
YiBwYXR0ZXJuLgotICAgICAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihwb3J0LmxheW91dF90
ZXN0c19kaXIoKSwgcGF0aCkKKyAgICAgICAgICAgIHBhdGggPSBmcy5qb2luKGxheW91dF90ZXN0
c19kaXIsIHBhdGgpCiAgICAgICAgICAgICBpZiBwYXRoLmZpbmQoJyonKSA+IC0xOgotICAgICAg
ICAgICAgICAgIGZpbGVuYW1lcyA9IGdsb2IuZ2xvYihwYXRoKQorICAgICAgICAgICAgICAgIGZp
bGVuYW1lcyA9IGZzLmdsb2IocGF0aCkKICAgICAgICAgICAgICAgICBwYXRoc190b193YWxrLnVw
ZGF0ZShmaWxlbmFtZXMpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHBhdGhz
X3RvX3dhbGsuYWRkKHBhdGgpCiAgICAgZWxzZToKLSAgICAgICAgX2xvZy5kZWJ1ZygiR2F0aGVy
aW5nIHRlc3RzIGZyb206ICVzIiAlIHBvcnQubGF5b3V0X3Rlc3RzX2RpcigpKQotICAgICAgICBw
YXRoc190b193YWxrLmFkZChwb3J0LmxheW91dF90ZXN0c19kaXIoKSkKKyAgICAgICAgX2xvZy5k
ZWJ1ZygiR2F0aGVyaW5nIHRlc3RzIGZyb206ICVzIiAlIGxheW91dF90ZXN0c19kaXIpCisgICAg
ICAgIHBhdGhzX3RvX3dhbGsuYWRkKGxheW91dF90ZXN0c19kaXIpCiAKICAgICAjIE5vdyB3YWxr
IGFsbCB0aGUgcGF0aHMgcGFzc2VkIGluIG9uIHRoZSBjb21tYW5kIGxpbmUgYW5kIGdldCBmaWxl
bmFtZXMKICAgICB0ZXN0X2ZpbGVzID0gc2V0KCkKICAgICBmb3IgcGF0aCBpbiBwYXRoc190b193
YWxrOgotICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShwYXRoKSBhbmQgX2hhc19zdXBwb3J0ZWRf
ZXh0ZW5zaW9uKHBhdGgpOgotICAgICAgICAgICAgdGVzdF9maWxlcy5hZGQob3MucGF0aC5ub3Jt
cGF0aChwYXRoKSkKKyAgICAgICAgaWYgZnMuaXNmaWxlKHBhdGgpIGFuZCBfaGFzX3N1cHBvcnRl
ZF9leHRlbnNpb24oZnMsIHBhdGgpOgorICAgICAgICAgICAgdGVzdF9maWxlcy5hZGQoZnMubm9y
bXBhdGgocGF0aCkpCiAgICAgICAgICAgICBjb250aW51ZQogCi0gICAgICAgIGZvciByb290LCBk
aXJzLCBmaWxlcyBpbiBvcy53YWxrKHBhdGgpOgorICAgICAgICBmb3Igcm9vdCwgZGlycywgZmls
ZXMgaW4gZnMud2FsayhwYXRoKToKICAgICAgICAgICAgICMgRG9uJ3Qgd2FsayBza2lwcGVkIGRp
cmVjdG9yaWVzIG9yIHRoZWlyIHN1Yi1kaXJlY3Rvcmllcy4KLSAgICAgICAgICAgIGlmIG9zLnBh
dGguYmFzZW5hbWUocm9vdCkgaW4gX3NraXBwZWRfZGlyZWN0b3JpZXM6CisgICAgICAgICAgICBp
ZiBmcy5iYXNlbmFtZShyb290KSBpbiBfc2tpcHBlZF9kaXJlY3RvcmllczoKICAgICAgICAgICAg
ICAgICBkZWwgZGlyc1s6XQogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAj
IFRoaXMgY29weSBhbmQgZm9yLWluIGlzIHNsaWdodGx5IGluZWZmaWNpZW50LCBidXQKQEAgLTk1
LDkgKzk0LDkgQEAgZGVmIGZpbmQocG9ydCwgcGF0aHMpOgogICAgICAgICAgICAgICAgICAgICBk
aXJzLnJlbW92ZShkaXJlY3RvcnkpCiAKICAgICAgICAgICAgIGZvciBmaWxlbmFtZSBpbiBmaWxl
czoKLSAgICAgICAgICAgICAgICBpZiBfaGFzX3N1cHBvcnRlZF9leHRlbnNpb24oZmlsZW5hbWUp
OgotICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZSA9IG9zLnBhdGguam9pbihyb290LCBmaWxl
bmFtZSkKLSAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWUgPSBvcy5wYXRoLm5vcm1wYXRoKGZp
bGVuYW1lKQorICAgICAgICAgICAgICAgIGlmIF9oYXNfc3VwcG9ydGVkX2V4dGVuc2lvbihmcywg
ZmlsZW5hbWUpOgorICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZSA9IGZzLmpvaW4ocm9vdCwg
ZmlsZW5hbWUpCisgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gZnMubm9ybXBhdGgoZmls
ZW5hbWUpCiAgICAgICAgICAgICAgICAgICAgIHRlc3RfZmlsZXMuYWRkKGZpbGVuYW1lKQogCiAg
ICAgZ2F0aGVyX3RpbWUgPSB0aW1lLnRpbWUoKSAtIGdhdGhlcl9zdGFydF90aW1lCkBAIC0xMDYs
OCArMTA1LDggQEAgZGVmIGZpbmQocG9ydCwgcGF0aHMpOgogICAgIHJldHVybiB0ZXN0X2ZpbGVz
CiAKIAotZGVmIF9oYXNfc3VwcG9ydGVkX2V4dGVuc2lvbihmaWxlbmFtZSk6CitkZWYgX2hhc19z
dXBwb3J0ZWRfZXh0ZW5zaW9uKGZzLCBmaWxlbmFtZSk6CiAgICAgIiIiUmV0dXJuIHRydWUgaWYg
ZmlsZW5hbWUgaXMgb25lIG9mIHRoZSBmaWxlIGV4dGVuc2lvbnMgd2Ugd2FudCB0byBydW4gYQog
ICAgIHRlc3Qgb24uIiIiCi0gICAgZXh0ZW5zaW9uID0gb3MucGF0aC5zcGxpdGV4dChmaWxlbmFt
ZSlbMV0KKyAgICBleHRlbnNpb24gPSBmcy5zcGxpdGV4dChmaWxlbmFtZSlbMV0KICAgICByZXR1
cm4gZXh0ZW5zaW9uIGluIF9zdXBwb3J0ZWRfZmlsZV9leHRlbnNpb25zCmRpZmYgLS1naXQgYS9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weSBi
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5
CmluZGV4IDUxZjU3YzQwZTY2NjE2N2IxOGNkZjUyZDY0MjAxODc1OTY1MjQ3ZTguLjM1ZjYyYjJl
Yjc0ZjI3ZTRlZjcwZDcyNGRhODVlYmFiOWU0MTBmZmUgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5CisrKyBiL1dlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5CkBAIC0z
MSw5ICszMSw2IEBACiAiIiJXZWJLaXQgaW1wbGVtZW50YXRpb25zIG9mIHRoZSBQb3J0IGludGVy
ZmFjZS4iIiIKIAogCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IHdpdGhfc3RhdGVtZW50Ci0KLWlt
cG9ydCBjb2RlY3MKIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgb3MKIGltcG9ydCByZQpAQCAtNDcs
NyArNDQsNyBAQCBpbXBvcnQgdGVtcGZpbGUKIGltcG9ydCBzaHV0aWwKIAogZnJvbSB3ZWJraXRw
eS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgRXhlY3V0aXZlCi0KK2Zyb20gd2Via2l0
cHkuY29tbW9uIGltcG9ydCBuZXdzdHJpbmdpbwogaW1wb3J0IHdlYmtpdHB5LmNvbW1vbi5zeXN0
ZW0ub3NwYXRoIGFzIG9zcGF0aAogaW1wb3J0IHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0LmJh
c2UgYXMgYmFzZQogaW1wb3J0IHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0LnNlcnZlcl9wcm9j
ZXNzIGFzIHNlcnZlcl9wcm9jZXNzCkBAIC0zMDgsMTkgKzMwNSwxOCBAQCBjbGFzcyBXZWJLaXRQ
b3J0KGJhc2UuUG9ydCk6CiAgICAgZGVmIF9leHBlY3RhdGlvbnNfZnJvbV9za2lwcGVkX2ZpbGVz
KHNlbGYpOgogICAgICAgICB0ZXN0c190b19za2lwID0gW10KICAgICAgICAgZm9yIGZpbGVuYW1l
IGluIHNlbGYuX3NraXBwZWRfZmlsZV9wYXRocygpOgotICAgICAgICAgICAgaWYgbm90IG9zLnBh
dGguZXhpc3RzKGZpbGVuYW1lKToKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9maWxlc3lzdGVt
LmV4aXN0cyhmaWxlbmFtZSk6CiAgICAgICAgICAgICAgICAgX2xvZy53YXJuKCJGYWlsZWQgdG8g
b3BlbiBTa2lwcGVkIGZpbGU6ICVzIiAlIGZpbGVuYW1lKQogICAgICAgICAgICAgICAgIGNvbnRp
bnVlCi0gICAgICAgICAgICB3aXRoIGNvZGVjcy5vcGVuKGZpbGVuYW1lLCAiciIsICJ1dGYtOCIp
IGFzIHNraXBwZWRfZmlsZToKLSAgICAgICAgICAgICAgICB0ZXN0c190b19za2lwLmV4dGVuZChz
ZWxmLl90ZXN0c19mcm9tX3NraXBwZWRfZmlsZShza2lwcGVkX2ZpbGUpKQorICAgICAgICAgICAg
c2tpcHBlZF9maWxlID0gbmV3c3RyaW5naW8uU3RyaW5nSU8oc2VsZi5fZmlsZXN5c3RlbS5yZWFk
X3RleHRfZmlsZShmaWxlbmFtZSkpCisgICAgICAgICAgICB0ZXN0c190b19za2lwLmV4dGVuZChz
ZWxmLl90ZXN0c19mcm9tX3NraXBwZWRfZmlsZShza2lwcGVkX2ZpbGUpKQogICAgICAgICByZXR1
cm4gdGVzdHNfdG9fc2tpcAogCiAgICAgZGVmIHRlc3RfZXhwZWN0YXRpb25zKHNlbGYpOgogICAg
ICAgICAjIFRoZSBXZWJLaXQgbWFjIHBvcnQgdXNlcyBhIGNvbWJpbmF0aW9uIG9mIGEgdGVzdF9l
eHBlY3RhdGlvbnMgZmlsZQogICAgICAgICAjIGFuZCAnU2tpcHBlZCcgZmlsZXMuCiAgICAgICAg
IGV4cGVjdGF0aW9uc19wYXRoID0gc2VsZi5wYXRoX3RvX3Rlc3RfZXhwZWN0YXRpb25zX2ZpbGUo
KQotICAgICAgICB3aXRoIGNvZGVjcy5vcGVuKGV4cGVjdGF0aW9uc19wYXRoLCAiciIsICJ1dGYt
OCIpIGFzIGZpbGU6Ci0gICAgICAgICAgICByZXR1cm4gZmlsZS5yZWFkKCkgKyBzZWxmLl9za2lw
cygpCisgICAgICAgIHJldHVybiBzZWxmLl9maWxlc3lzdGVtLnJlYWRfdGV4dF9maWxlKGV4cGVj
dGF0aW9uc19wYXRoKSArIHNlbGYuX3NraXBzKCkKIAogICAgIGRlZiBfc2tpcHMoc2VsZik6CiAg
ICAgICAgICMgRWFjaCBTa2lwcGVkIGZpbGUgY29udGFpbnMgYSBsaXN0IG9mIGZpbGVzCkBAIC0z
MzIsOCArMzI4LDEyIEBAIGNsYXNzIFdlYktpdFBvcnQoYmFzZS5Qb3J0KToKICAgICAgICAgIyBm
b3JtYXQgZXhwZWN0ZWQgYnkgdGVzdF9leHBlY3RhdGlvbnMuCiAKICAgICAgICAgdGVzdHNfdG9f
c2tpcCA9IHNlbGYuc2tpcHBlZF9sYXlvdXRfdGVzdHMoKQotICAgICAgICBza2lwX2xpbmVzID0g
bWFwKGxhbWJkYSB0ZXN0X3BhdGg6ICJCVUdfU0tJUFBFRCBTS0lQIDogJXMgPSBGQUlMIiAlCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfcGF0aCwgdGVzdHNfdG9fc2tpcCkK
KworICAgICAgICBkZWYgc2tpcF9wYXRoKHBhdGgpOgorICAgICAgICAgICAgaWYgc2VsZi5fZmls
ZXN5c3RlbS5leGlzdHMocGF0aCk6CisgICAgICAgICAgICAgICAgcmV0dXJuICJCVUdfU0tJUFBF
RCBTS0lQIDogJXMgPSBGQUlMIiAlIHBhdGgKKyAgICAgICAgICAgIHJldHVybiAiIgorICAgICAg
ICBza2lwX2xpbmVzID0gbWFwKHNraXBfcGF0aCwgdGVzdHNfdG9fc2tpcCkKICAgICAgICAgcmV0
dXJuICJcbiIuam9pbihza2lwX2xpbmVzKQogCiAgICAgZGVmIHNraXBwZWRfbGF5b3V0X3Rlc3Rz
KHNlbGYpOgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkKaW5kZXggZjM2MGFkYzlhNjUzYzU4ZjBj
N2ZjYzM3MTY0ZWQ5YzM4ZDllYjg0NC4uZjM4NGJmM2NlMGE3YmUwNDk3NjdhODNhYzcwZWMwYTRh
ZjhiMjRjYSAxMDA3NTUKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5CkBAIC00NywxOCArNDcsMTQgQEAg
Rm9yIGRldGFpbHMgb2YgdGhlIGZpbGVzJyBjb250ZW50cyBhbmQgcHVycG9zZXMsIHNlZSB0ZXN0
X2xpc3RzL1JFQURNRS4KIAogZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB3aXRoX3N0YXRlbWVudAog
Ci1pbXBvcnQgY29kZWNzCiBpbXBvcnQgZXJybm8KLWltcG9ydCBnbG9iCiBpbXBvcnQgbG9nZ2lu
ZwogaW1wb3J0IG1hdGgKIGltcG9ydCBvcHRwYXJzZQogaW1wb3J0IG9zCi1pbXBvcnQgcGxhdGZv
cm0KIGltcG9ydCBRdWV1ZQogaW1wb3J0IHJhbmRvbQogaW1wb3J0IHJlCi1pbXBvcnQgc2h1dGls
CiBpbXBvcnQgc2lnbmFsCiBpbXBvcnQgc3lzCiBpbXBvcnQgdGltZQpAQCAtMjg4LDcgKzI4NCw3
IEBAIGNsYXNzIFRlc3RSdW5uZXI6CiAgICAgICAgIHBhdGhzID0gW3NlbGYuX3N0cmlwX3Rlc3Rf
ZGlyX3ByZWZpeChhcmcpIGZvciBhcmcgaW4gYXJncyBpZiBhcmcgYW5kIGFyZyAhPSAnJ10KICAg
ICAgICAgcGF0aHMgKz0gbGFzdF91bmV4cGVjdGVkX3Jlc3VsdHMKICAgICAgICAgaWYgc2VsZi5f
b3B0aW9ucy50ZXN0X2xpc3Q6Ci0gICAgICAgICAgICBwYXRocyArPSByZWFkX3Rlc3RfZmlsZXMo
c2VsZi5fb3B0aW9ucy50ZXN0X2xpc3QpCisgICAgICAgICAgICBwYXRocyArPSByZWFkX3Rlc3Rf
ZmlsZXMoc2VsZi5fcG9ydC5fZmlsZXN5c3RlbSwgc2VsZi5fb3B0aW9ucy50ZXN0X2xpc3QpCiAg
ICAgICAgIHNlbGYuX3Rlc3RfZmlsZXMgPSBzZWxmLl9wb3J0LnRlc3RzKHBhdGhzKQogCiAgICAg
ZGVmIF9zdHJpcF90ZXN0X2Rpcl9wcmVmaXgoc2VsZiwgcGF0aCk6CkBAIC00MTgsMTAgKzQxNCwx
MCBAQCBjbGFzcyBUZXN0UnVubmVyOgogICAgICAgICAgICAgICAgIHNlbGYuX3ByaW50ZXIucHJp
bnRfZXhwZWN0ZWQoZXh0cmFfbXNnKQogICAgICAgICAgICAgICAgIHRlc3RzX3J1bl9tc2cgKz0g
IlxuIiArIGV4dHJhX21zZwogICAgICAgICAgICAgICAgIGZpbGVzLmV4dGVuZCh0ZXN0X2ZpbGVz
WzA6ZXh0cmFdKQotICAgICAgICAgICAgdGVzdHNfcnVuX2ZpbGVuYW1lID0gb3MucGF0aC5qb2lu
KHNlbGYuX29wdGlvbnMucmVzdWx0c19kaXJlY3RvcnksCisgICAgICAgICAgICB0ZXN0c19ydW5f
ZmlsZW5hbWUgPSBzZWxmLl9wb3J0Ll9maWxlc3lzdGVtLmpvaW4oc2VsZi5fb3B0aW9ucy5yZXN1
bHRzX2RpcmVjdG9yeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAidGVzdHNfcnVuLnR4dCIpCi0gICAgICAgICAgICB3aXRoIGNvZGVjcy5vcGVuKHRlc3Rz
X3J1bl9maWxlbmFtZSwgInciLCAidXRmLTgiKSBhcyBmaWxlOgotICAgICAgICAgICAgICAgIGZp
bGUud3JpdGUodGVzdHNfcnVuX21zZyArICJcbiIpCisgICAgICAgICAgICBzZWxmLl9wb3J0Ll9m
aWxlc3lzdGVtLndyaXRlX3RleHRfZmlsZSh0ZXN0c19ydW5fZmlsZW5hbWUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0c19ydW5fbXNnICsg
IlxuIikKIAogICAgICAgICAgICAgbGVuX3NraXBfY2h1bmsgPSBpbnQobGVuKGZpbGVzKSAqIGxl
bihza2lwcGVkKSAvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdChsZW4o
c2VsZi5fdGVzdF9maWxlcykpKQpAQCAtNDkyLDcgKzQ4OCw3IEBAIGNsYXNzIFRlc3RSdW5uZXI6
CiAgICAgICAgICAgICAgICAgYW5kIHRlc3RfZmlsZS5maW5kKG9zLnNlcCkgPj0gMCk6CiAgICAg
ICAgICAgICB0ZXN0X2ZpbGVfcGFydHMgPSB0ZXN0X2ZpbGUuc3BsaXQob3Muc2VwLCAxKQogICAg
ICAgICAgICAgZGlyZWN0b3J5ID0gdGVzdF9maWxlX3BhcnRzWzBdCi0gICAgICAgICAgICByZXR1
cm5fdmFsdWUgPSBvcy5wYXRoLmpvaW4ocmV0dXJuX3ZhbHVlLCBkaXJlY3RvcnkpCisgICAgICAg
ICAgICByZXR1cm5fdmFsdWUgPSBzZWxmLl9wb3J0Ll9maWxlc3lzdGVtLmpvaW4ocmV0dXJuX3Zh
bHVlLCBkaXJlY3RvcnkpCiAgICAgICAgICAgICB0ZXN0X2ZpbGUgPSB0ZXN0X2ZpbGVfcGFydHNb
MV0KIAogICAgICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlCkBAIC01NzcsNyArNTczLDcgQEAgY2xh
c3MgVGVzdFJ1bm5lcjoKICAgICAgICAgdGVzdF9hcmdzID0gdGVzdF90eXBlX2Jhc2UuVGVzdEFy
Z3VtZW50cygpCiAgICAgICAgIHRlc3RfYXJncy5wbmdfcGF0aCA9IE5vbmUKICAgICAgICAgaWYg
c2VsZi5fb3B0aW9ucy5waXhlbF90ZXN0czoKLSAgICAgICAgICAgIHBuZ19wYXRoID0gb3MucGF0
aC5qb2luKHNlbGYuX29wdGlvbnMucmVzdWx0c19kaXJlY3RvcnksCisgICAgICAgICAgICBwbmdf
cGF0aCA9IHNlbGYuX3BvcnQuX2ZpbGVzeXN0ZW0uam9pbihzZWxmLl9vcHRpb25zLnJlc3VsdHNf
ZGlyZWN0b3J5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBuZ19yZXN1
bHQlcy5wbmciICUgaW5kZXgpCiAgICAgICAgICAgICB0ZXN0X2FyZ3MucG5nX3BhdGggPSBwbmdf
cGF0aAogICAgICAgICB0ZXN0X2FyZ3MubmV3X2Jhc2VsaW5lID0gc2VsZi5fb3B0aW9ucy5uZXdf
YmFzZWxpbmUKQEAgLTg2NiwxMCArODYyLDkgQEAgY2xhc3MgVGVzdFJ1bm5lcjoKICAgICAgICAg
bGF5b3V0X3Rlc3RzX2RpciA9IHNlbGYuX3BvcnQubGF5b3V0X3Rlc3RzX2RpcigpCiAgICAgICAg
IHBvc3NpYmxlX2RpcnMgPSBzZWxmLl9wb3J0LnRlc3RfZGlycygpCiAgICAgICAgIGZvciBkaXJu
YW1lIGluIHBvc3NpYmxlX2RpcnM6Ci0gICAgICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKG9zLnBh
dGguam9pbihsYXlvdXRfdGVzdHNfZGlyLCBkaXJuYW1lKSk6Ci0gICAgICAgICAgICAgICAgc2h1
dGlsLnJtdHJlZShvcy5wYXRoLmpvaW4oc2VsZi5fb3B0aW9ucy5yZXN1bHRzX2RpcmVjdG9yeSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJuYW1lKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZV9lcnJvcnM9VHJ1ZSkKKyAgICAgICAg
ICAgIGlmIHNlbGYuX3BvcnQuX2ZpbGVzeXN0ZW0uaXNkaXIoc2VsZi5fcG9ydC5fZmlsZXN5c3Rl
bS5qb2luKGxheW91dF90ZXN0c19kaXIsIGRpcm5hbWUpKToKKyAgICAgICAgICAgICAgICBzZWxm
Ll9wb3J0Ll9maWxlc3lzdGVtLnJtdHJlZShzZWxmLl9wb3J0Ll9maWxlc3lzdGVtLmpvaW4oc2Vs
Zi5fb3B0aW9ucy5yZXN1bHRzX2RpcmVjdG9yeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkaXJuYW1lKSkKIAogICAgIGRlZiBfZ2V0X2ZhaWx1cmVzKHNlbGYs
IHJlc3VsdF9zdW1tYXJ5LCBpbmNsdWRlX2NyYXNoZXMpOgogICAgICAgICAiIiJGaWx0ZXJzIGEg
ZGljdCBvZiByZXN1bHRzIGFuZCByZXR1cm5zIG9ubHkgdGhlIGZhaWx1cmVzLgpAQCAtOTEyLDE2
ICs5MDcsMTYgQEAgY2xhc3MgVGVzdFJ1bm5lcjoKICAgICAgICAgIiIiCiAgICAgICAgIHJlc3Vs
dHNfZGlyZWN0b3J5ID0gc2VsZi5fb3B0aW9ucy5yZXN1bHRzX2RpcmVjdG9yeQogICAgICAgICBf
bG9nLmRlYnVnKCJXcml0aW5nIEpTT04gZmlsZXMgaW4gJXMuIiAlIHJlc3VsdHNfZGlyZWN0b3J5
KQotICAgICAgICB1bmV4cGVjdGVkX2pzb25fcGF0aCA9IG9zLnBhdGguam9pbihyZXN1bHRzX2Rp
cmVjdG9yeSwgInVuZXhwZWN0ZWRfcmVzdWx0cy5qc29uIikKLSAgICAgICAgd2l0aCBjb2RlY3Mu
b3Blbih1bmV4cGVjdGVkX2pzb25fcGF0aCwgInciLCAidXRmLTgiKSBhcyBmaWxlOgorICAgICAg
ICB1bmV4cGVjdGVkX2pzb25fcGF0aCA9IHNlbGYuX3BvcnQuX2ZpbGVzeXN0ZW0uam9pbihyZXN1
bHRzX2RpcmVjdG9yeSwgInVuZXhwZWN0ZWRfcmVzdWx0cy5qc29uIikKKyAgICAgICAgd2l0aCBz
ZWxmLl9wb3J0Ll9maWxlc3lzdGVtLm9wZW5fdGV4dF9maWxlX2Zvcl93cml0aW5nKHVuZXhwZWN0
ZWRfanNvbl9wYXRoKSBhcyBmaWxlOgogICAgICAgICAgICAgc2ltcGxlanNvbi5kdW1wKHVuZXhw
ZWN0ZWRfcmVzdWx0cywgZmlsZSwgc29ydF9rZXlzPVRydWUsIGluZGVudD0yKQogCiAgICAgICAg
ICMgV3JpdGUgYSBqc29uIGZpbGUgb2YgdGhlIHRlc3RfZXhwZWN0YXRpb25zLnR4dCBmaWxlIGZv
ciB0aGUgbGF5b3V0CiAgICAgICAgICMgdGVzdHMgZGFzaGJvYXJkLgotICAgICAgICBleHBlY3Rh
dGlvbnNfcGF0aCA9IG9zLnBhdGguam9pbihyZXN1bHRzX2RpcmVjdG9yeSwgImV4cGVjdGF0aW9u
cy5qc29uIikKKyAgICAgICAgZXhwZWN0YXRpb25zX3BhdGggPSBzZWxmLl9wb3J0Ll9maWxlc3lz
dGVtLmpvaW4ocmVzdWx0c19kaXJlY3RvcnksICJleHBlY3RhdGlvbnMuanNvbiIpCiAgICAgICAg
IGV4cGVjdGF0aW9uc19qc29uID0gXAogICAgICAgICAgICAgc2VsZi5fZXhwZWN0YXRpb25zLmdl
dF9leHBlY3RhdGlvbnNfanNvbl9mb3JfYWxsX3BsYXRmb3JtcygpCi0gICAgICAgIHdpdGggY29k
ZWNzLm9wZW4oZXhwZWN0YXRpb25zX3BhdGgsICJ3IiwgInV0Zi04IikgYXMgZmlsZToKKyAgICAg
ICAgd2l0aCBzZWxmLl9wb3J0Ll9maWxlc3lzdGVtLm9wZW5fdGV4dF9maWxlX2Zvcl93cml0aW5n
KGV4cGVjdGF0aW9uc19wYXRoKSBhcyBmaWxlOgogICAgICAgICAgICAgZmlsZS53cml0ZSh1IkFE
RF9FWFBFQ1RBVElPTlMoJXMpOyIgJSBleHBlY3RhdGlvbnNfanNvbikKIAogICAgICAgICBqc29u
X2xheW91dF9yZXN1bHRzX2dlbmVyYXRvci5KU09OTGF5b3V0UmVzdWx0c0dlbmVyYXRvcigKQEAg
LTk1NCw3ICs5NDksNyBAQCBjbGFzcyBUZXN0UnVubmVyOgogICAgICAgICBlbHNlOgogICAgICAg
ICAgICAganNvbl9maWxlcy5hcHBlbmQoImluY3JlbWVudGFsX3Jlc3VsdHMuanNvbiIpCiAKLSAg
ICAgICAgZmlsZXMgPSBbKGZpbGUsIG9zLnBhdGguam9pbihzZWxmLl9vcHRpb25zLnJlc3VsdHNf
ZGlyZWN0b3J5LCBmaWxlKSkKKyAgICAgICAgZmlsZXMgPSBbKGZpbGUsIHNlbGYuX3BvcnQuX2Zp
bGVzeXN0ZW0uam9pbihzZWxmLl9vcHRpb25zLnJlc3VsdHNfZGlyZWN0b3J5LCBmaWxlKSkKICAg
ICAgICAgICAgIGZvciBmaWxlIGluIGpzb25fZmlsZXNdCiAKICAgICAgICAgdXBsb2FkZXIgPSB0
ZXN0X3Jlc3VsdHNfdXBsb2FkZXIuVGVzdFJlc3VsdHNVcGxvYWRlcigKQEAgLTEzMTgsMjYgKzEz
MTMsMjQgQEAgY2xhc3MgVGVzdFJ1bm5lcjoKICAgICAgICAgaWYgbm90IGxlbih0ZXN0X2ZpbGVz
KToKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogCi0gICAgICAgIG91dF9maWxlbmFtZSA9IG9z
LnBhdGguam9pbihzZWxmLl9vcHRpb25zLnJlc3VsdHNfZGlyZWN0b3J5LAorICAgICAgICBvdXRf
ZmlsZW5hbWUgPSBzZWxmLl9wb3J0Ll9maWxlc3lzdGVtLmpvaW4oc2VsZi5fb3B0aW9ucy5yZXN1
bHRzX2RpcmVjdG9yeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZXN1
bHRzLmh0bWwiKQotICAgICAgICB3aXRoIGNvZGVjcy5vcGVuKG91dF9maWxlbmFtZSwgInciLCAi
dXRmLTgiKSBhcyByZXN1bHRzX2ZpbGU6Ci0gICAgICAgICAgICBodG1sID0gc2VsZi5fcmVzdWx0
c19odG1sKHRlc3RfZmlsZXMsIHJlc3VsdF9zdW1tYXJ5LmZhaWx1cmVzLCByZXN1bHRzX3RpdGxl
KQotICAgICAgICAgICAgcmVzdWx0c19maWxlLndyaXRlKGh0bWwpCisgICAgICAgIGh0bWwgPSBz
ZWxmLl9yZXN1bHRzX2h0bWwodGVzdF9maWxlcywgcmVzdWx0X3N1bW1hcnkuZmFpbHVyZXMsIHJl
c3VsdHNfdGl0bGUpCisgICAgICAgIHNlbGYuX3BvcnQuX2ZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9m
aWxlKG91dF9maWxlbmFtZSwgaHRtbCkKIAogICAgICAgICByZXR1cm4gVHJ1ZQogCiAgICAgZGVm
IF9zaG93X3Jlc3VsdHNfaHRtbF9maWxlKHNlbGYpOgogICAgICAgICAiIiJTaG93cyB0aGUgcmVz
dWx0cy5odG1sIHBhZ2UuIiIiCi0gICAgICAgIHJlc3VsdHNfZmlsZW5hbWUgPSBvcy5wYXRoLmpv
aW4oc2VsZi5fb3B0aW9ucy5yZXN1bHRzX2RpcmVjdG9yeSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAicmVzdWx0cy5odG1sIikKKyAgICAgICAgcmVzdWx0c19maWxl
bmFtZSA9IHNlbGYuX3BvcnQuX2ZpbGVzeXN0ZW0uam9pbihzZWxmLl9vcHRpb25zLnJlc3VsdHNf
ZGlyZWN0b3J5LCAicmVzdWx0cy5odG1sIikKICAgICAgICAgc2VsZi5fcG9ydC5zaG93X3Jlc3Vs
dHNfaHRtbF9maWxlKHJlc3VsdHNfZmlsZW5hbWUpCiAKIAotZGVmIHJlYWRfdGVzdF9maWxlcyhm
aWxlcyk6CitkZWYgcmVhZF90ZXN0X2ZpbGVzKGZzLCBmaWxlcyk6CiAgICAgdGVzdHMgPSBbXQog
ICAgIGZvciBmaWxlIGluIGZpbGVzOgogICAgICAgICB0cnk6Ci0gICAgICAgICAgICB3aXRoIGNv
ZGVjcy5vcGVuKGZpbGUsICdyJywgJ3V0Zi04JykgYXMgZmlsZV9jb250ZW50czoKKyAgICAgICAg
ICAgIHdpdGggZnMub3Blbl90ZXh0X2ZpbGVfZm9yX3JlYWRpbmcoZmlsZSkgYXMgZmlsZV9jb250
ZW50czoKICAgICAgICAgICAgICAgICAjIEZJWE1FOiBUaGlzIGNvdWxkIGJlIGNsZWFuZXIgdXNp
bmcgYSBsaXN0IGNvbXByZWhlbnNpb24uCiAgICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gZmls
ZV9jb250ZW50czoKICAgICAgICAgICAgICAgICAgICAgbGluZSA9IHRlc3RfZXhwZWN0YXRpb25z
LnN0cmlwX2NvbW1lbnRzKGxpbmUpCkBAIC0xMzc3LDcgKzEzNzAsNyBAQCBkZWYgcnVuKHBvcnQs
IG9wdGlvbnMsIGFyZ3MsIHJlZ3VsYXJfb3V0cHV0PXN5cy5zdGRlcnIsCiAgICAgICAgIHByaW50
ZXIuY2xlYW51cCgpCiAgICAgICAgIHJldHVybiAwCiAKLSAgICBsYXN0X3VuZXhwZWN0ZWRfcmVz
dWx0cyA9IF9nYXRoZXJfdW5leHBlY3RlZF9yZXN1bHRzKG9wdGlvbnMpCisgICAgbGFzdF91bmV4
cGVjdGVkX3Jlc3VsdHMgPSBfZ2F0aGVyX3VuZXhwZWN0ZWRfcmVzdWx0cyhwb3J0Ll9maWxlc3lz
dGVtLCBvcHRpb25zKQogICAgIGlmIG9wdGlvbnMucHJpbnRfbGFzdF9mYWlsdXJlczoKICAgICAg
ICAgcHJpbnRlci53cml0ZSgiXG4iLmpvaW4obGFzdF91bmV4cGVjdGVkX3Jlc3VsdHMpICsgIlxu
IikKICAgICAgICAgcHJpbnRlci5jbGVhbnVwKCkKQEAgLTE0MzgsNyArMTQzMSw3IEBAIGRlZiBf
c2V0X3VwX2Rlcml2ZWRfb3B0aW9ucyhwb3J0X29iaiwgb3B0aW9ucyk6CiAgICAgaWYgbm90IG9w
dGlvbnMudXNlX2FwYWNoZToKICAgICAgICAgb3B0aW9ucy51c2VfYXBhY2hlID0gc3lzLnBsYXRm
b3JtIGluICgnZGFyd2luJywgJ2xpbnV4MicpCiAKLSAgICBpZiBub3Qgb3MucGF0aC5pc2Ficyhv
cHRpb25zLnJlc3VsdHNfZGlyZWN0b3J5KToKKyAgICBpZiBub3QgcG9ydF9vYmouX2ZpbGVzeXN0
ZW0uaXNhYnMob3B0aW9ucy5yZXN1bHRzX2RpcmVjdG9yeSk6CiAgICAgICAgICMgVGhpcyBub3Jt
YWxpemVzIHRoZSBwYXRoIHRvIHRoZSBidWlsZCBkaXIuCiAgICAgICAgICMgRklYTUU6IGhvdyB0
aGlzIGhhcHBlbnMgaXMgbm90IGF0IGFsbCBvYnZpb3VzOyB0aGlzIGlzIGEgZHVtYgogICAgICAg
ICAjIGludGVyZmFjZSBhbmQgc2hvdWxkIGJlIGNsZWFuZWQgdXAuCkBAIC0xNDUzLDEzICsxNDQ2
LDEzIEBAIGRlZiBfc2V0X3VwX2Rlcml2ZWRfb3B0aW9ucyhwb3J0X29iaiwgb3B0aW9ucyk6CiAg
ICAgb3B0aW9ucy5zbG93X3RpbWVfb3V0X21zID0gc3RyKDUgKiBpbnQob3B0aW9ucy50aW1lX291
dF9tcykpCiAKIAotZGVmIF9nYXRoZXJfdW5leHBlY3RlZF9yZXN1bHRzKG9wdGlvbnMpOgorZGVm
IF9nYXRoZXJfdW5leHBlY3RlZF9yZXN1bHRzKGZzLCBvcHRpb25zKToKICAgICAiIiJSZXR1cm5z
IHRoZSB1bmV4cGVjdGVkIHJlc3VsdHMgZnJvbSB0aGUgcHJldmlvdXMgcnVuLCBpZiBhbnkuIiIi
CiAgICAgbGFzdF91bmV4cGVjdGVkX3Jlc3VsdHMgPSBbXQogICAgIGlmIG9wdGlvbnMucHJpbnRf
bGFzdF9mYWlsdXJlcyBvciBvcHRpb25zLnJldGVzdF9sYXN0X2ZhaWx1cmVzOgotICAgICAgICB1
bmV4cGVjdGVkX3Jlc3VsdHNfZmlsZW5hbWUgPSBvcy5wYXRoLmpvaW4oCi0gICAgICAgIG9wdGlv
bnMucmVzdWx0c19kaXJlY3RvcnksICJ1bmV4cGVjdGVkX3Jlc3VsdHMuanNvbiIpCi0gICAgICAg
IHdpdGggY29kZWNzLm9wZW4odW5leHBlY3RlZF9yZXN1bHRzX2ZpbGVuYW1lLCAiciIsICJ1dGYt
OCIpIGFzIGZpbGU6CisgICAgICAgIHVuZXhwZWN0ZWRfcmVzdWx0c19maWxlbmFtZSA9IGZzLmpv
aW4ob3B0aW9ucy5yZXN1bHRzX2RpcmVjdG9yeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAidW5leHBlY3RlZF9yZXN1bHRzLmpzb24iKQorICAgICAgICB3
aXRoIGZzLm9wZW5fdGV4dF9maWxlX2Zvcl9yZWFkaW5nKHVuZXhwZWN0ZWRfcmVzdWx0c19maWxl
bmFtZSkgYXMgZmlsZToKICAgICAgICAgICAgIHJlc3VsdHMgPSBzaW1wbGVqc29uLmxvYWQoZmls
ZSkKICAgICAgICAgbGFzdF91bmV4cGVjdGVkX3Jlc3VsdHMgPSByZXN1bHRzWyd0ZXN0cyddLmtl
eXMoKQogICAgIHJldHVybiBsYXN0X3VuZXhwZWN0ZWRfcmVzdWx0cwpkaWZmIC0tZ2l0IGEvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c191
bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1
bl93ZWJraXRfdGVzdHNfdW5pdHRlc3QucHkKaW5kZXggMjQ4YTI5MWQzOTMwMzI1ZmM3MmNiZjA2
ZGZkNjJlM2FkMDZhNDIyYi4uZjg5NjM3YjdlMmUzOGVmODc3NTZkZDM0NzBmNThmZWI1YmE0Yjlj
NSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cnVuX3dlYmtpdF90ZXN0c191bml0dGVzdC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX3VuaXR0ZXN0LnB5CkBAIC0zMCwy
NiArMzAsMjUgQEAKIAogIiIiVW5pdCB0ZXN0cyBmb3IgcnVuX3dlYmtpdF90ZXN0cy4iIiIKIAot
aW1wb3J0IGNvZGVjcwogaW1wb3J0IGl0ZXJ0b29scwogaW1wb3J0IGxvZ2dpbmcKLWltcG9ydCBv
cwogaW1wb3J0IFF1ZXVlCi1pbXBvcnQgc2h1dGlsCiBpbXBvcnQgc3lzCi1pbXBvcnQgdGVtcGZp
bGUKIGltcG9ydCB0aHJlYWQKIGltcG9ydCB0aW1lCiBpbXBvcnQgdGhyZWFkaW5nCiBpbXBvcnQg
dW5pdHRlc3QKIAogZnJvbSB3ZWJraXRweS5jb21tb24gaW1wb3J0IGFycmF5X3N0cmVhbQorZnJv
bSB3ZWJraXRweS5jb21tb24gaW1wb3J0IGluX21lbW9yeV9maWxlc3lzdGVtCiBmcm9tIHdlYmtp
dHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0IG91dHB1dGNhcHR1cmUKK2Zyb20gd2Via2l0cHkuY29t
bW9uLnN5c3RlbSBpbXBvcnQgZXhlY3V0aXZlX21vY2sKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5
c3RlbSBpbXBvcnQgdXNlcgogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMgaW1wb3J0IHBvcnQK
IGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzIGltcG9ydCBydW5fd2Via2l0X3Rlc3RzCiBmcm9t
IHdlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZSBpbXBvcnQgZHVtcF9yZW5kZXJf
dHJlZV90aHJlYWQKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQudGVzdCBpbXBvcnQg
VGVzdFBvcnQsIFRlc3REcml2ZXIKK2Zyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQuY29u
ZmlnX21vY2sgaW1wb3J0IE1vY2tDb25maWcKIGZyb20gd2Via2l0cHkucHl0aG9uMjQudmVyc2lv
bmluZyBpbXBvcnQgY29tcGFyZV92ZXJzaW9uCiBmcm9tIHdlYmtpdHB5LnRlc3Quc2tpcCBpbXBv
cnQgc2tpcF9pZgogCkBAIC02NCw0NCArNjMsODAgQEAgY2xhc3MgTW9ja1VzZXIoKToKICAgICAg
ICAgc2VsZi51cmwgPSB1cmwKIAogCitkZWYgbW9ja19maWxlc3lzdGVtKCk6CisgICAgZmlsZXMg
PSB7CisgICAgICAgICIvTGF5b3V0VGVzdHMvZmFzdC9odG1sL2tleWdlbi5odG1sIjogIjxodG1s
PmtleWdlbjwvaHRtbD4iLAorICAgICAgICAiL0xheW91dFRlc3RzL2Zhc3QvaHRtbC9hcnRpY2xl
LWVsZW1lbnQuaHRtbCI6ICI8aHRtbD5hcnRpY2xlLWVsZW1lbnQ8L2h0bWw+IiwKKyAgICAgICAg
Ii9MYXlvdXRUZXN0cy9mYXN0L2h0bWwvYXJ0aWNsZS1lbGVtZW50LWV4cGVjdGVkLnR4dCI6ICJh
cnRpY2xlLWVsZW1lbnQiLAorICAgICAgICAiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0
L2h0bWwva2V5Z2VuLWV4cGVjdGVkLnR4dCI6ICJrZXlnZW4iLAorICAgICAgICAiL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy9mYXN0L2h0bWwva2V5Z2VuLWV4cGVjdGVkLmNoZWNrc3VtIjogImNo
ZWNrc3VtIiwKKyAgICAgICAgIi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9odG1sL2tl
eWdlbi1leHBlY3RlZC5wbmciOiAicG5nIiwKKyAgICAgICAgIi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMtc25vd2xlb3BhcmQvU2tpcHBlZCI6ICIiLAorICAgICAgICAiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9Ta2lwcGVkIjogIiIsCisgICAgICAgICIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL3Rlc3RfZXhwZWN0YXRpb25zLnR4dCI6ICIiLAorICAgICAgICAiL3RtcC9sYXlvdXQtdGVz
dC1yZXN1bHRzL3VuZXhwZWN0ZWRfcmVzdWx0cy5qc29uIjogTm9uZSwKKyAgICB9CisgICAgcmV0
dXJuIGluX21lbW9yeV9maWxlc3lzdGVtLkluTWVtb3J5RmlsZVN5c3RlbShmaWxlcz1maWxlcykK
KworCitkZWYgdGVzdF9maWxlc3lzdGVtKCk6CisgICAgcmV0dXJuIHBvcnQudGVzdC50ZXN0X2Zp
bGVzeXN0ZW0oKQorCisKIGRlZiBwYXNzaW5nX3J1bihleHRyYV9hcmdzPU5vbmUsIHBvcnRfb2Jq
PU5vbmUsIHJlY29yZF9yZXN1bHRzPUZhbHNlLAotICAgICAgICAgICAgICAgIHRlc3RzX2luY2x1
ZGVkPUZhbHNlKToKKyAgICAgICAgICAgICAgICB0ZXN0c19pbmNsdWRlZD1GYWxzZSwgZmlsZXN5
c3RlbT1Ob25lKToKICAgICBleHRyYV9hcmdzID0gZXh0cmFfYXJncyBvciBbXQogICAgIGFyZ3Mg
PSBbJy0tcHJpbnQnLCAnbm90aGluZyddCisKKyAgICBlID0gZXhlY3V0aXZlX21vY2suTW9ja0V4
ZWN1dGl2ZTIoKQorICAgIGMgPSBNb2NrQ29uZmlnKCkKICAgICBpZiBub3QgJy0tcGxhdGZvcm0n
IGluIGV4dHJhX2FyZ3M6CiAgICAgICAgIGFyZ3MuZXh0ZW5kKFsnLS1wbGF0Zm9ybScsICd0ZXN0
J10pCisgICAgICAgIGZpbGVzeXN0ZW0gPSBmaWxlc3lzdGVtIG9yIHRlc3RfZmlsZXN5c3RlbSgp
CisgICAgZWxzZToKKyAgICAgICAgZmlsZXN5c3RlbSA9IGZpbGVzeXN0ZW0gb3IgbW9ja19maWxl
c3lzdGVtKCkKKwogICAgIGlmIG5vdCByZWNvcmRfcmVzdWx0czoKICAgICAgICAgYXJncy5hcHBl
bmQoJy0tbm8tcmVjb3JkLXJlc3VsdHMnKQorICAgIGlmIG5vdCAnLS1jaGlsZC1wcm9jZXNzZXMn
IGluIGV4dHJhX2FyZ3M6CisgICAgICAgIGFyZ3MuZXh0ZW5kKFsnLS1jaGlsZC1wcm9jZXNzZXMn
LCAxXSkKICAgICBhcmdzLmV4dGVuZChleHRyYV9hcmdzKQogICAgIGlmIG5vdCB0ZXN0c19pbmNs
dWRlZDoKICAgICAgICAgIyBXZSB1c2UgdGhlIGdsb2IgdG8gdGVzdCB0aGF0IGdsb2JiaW5nIHdv
cmtzLgogICAgICAgICBhcmdzLmV4dGVuZChbJ3Bhc3NlcycsCiAgICAgICAgICAgICAgICAgICAg
ICAnaHR0cC90ZXN0cycsCi0gICAgICAgICAgICAgICAgICAgICAnaHR0cC90ZXN0cy93ZWJzb2Nr
ZXQvdGVzdHMnLAorICAgICAgICAgICAgICAgICAgICAgJ3dlYnNvY2tldC90ZXN0cycsCiAgICAg
ICAgICAgICAgICAgICAgICAnZmFpbHVyZXMvZXhwZWN0ZWQvKiddKQogICAgIG9wdGlvbnMsIHBh
cnNlZF9hcmdzID0gcnVuX3dlYmtpdF90ZXN0cy5wYXJzZV9hcmdzKGFyZ3MpCiAgICAgaWYgbm90
IHBvcnRfb2JqOgogICAgICAgICBwb3J0X29iaiA9IHBvcnQuZ2V0KHBvcnRfbmFtZT1vcHRpb25z
LnBsYXRmb3JtLCBvcHRpb25zPW9wdGlvbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uZmlnPWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhlY3V0aXZlPWUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZmlsZXN5c3RlbT1maWxlc3lzdGVtLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVzZXI9TW9ja1VzZXIoKSkKICAgICByZXMgPSBydW5fd2Via2l0
X3Rlc3RzLnJ1bihwb3J0X29iaiwgb3B0aW9ucywgcGFyc2VkX2FyZ3MpCiAgICAgcmV0dXJuIHJl
cyA9PSAwCiAKIAotZGVmIGxvZ2dpbmdfcnVuKGV4dHJhX2FyZ3M9Tm9uZSwgcG9ydF9vYmo9Tm9u
ZSwgdGVzdHNfaW5jbHVkZWQ9RmFsc2UpOgorZGVmIGxvZ2dpbmdfcnVuKGV4dHJhX2FyZ3M9Tm9u
ZSwgcG9ydF9vYmo9Tm9uZSwgdGVzdHNfaW5jbHVkZWQ9RmFsc2UsCisgICAgICAgICAgICAgICAg
ZmlsZXN5c3RlbT1Ob25lKToKICAgICBleHRyYV9hcmdzID0gZXh0cmFfYXJncyBvciBbXQogICAg
IGFyZ3MgPSBbJy0tbm8tcmVjb3JkLXJlc3VsdHMnXQogICAgIGlmIG5vdCAnLS1wbGF0Zm9ybScg
aW4gZXh0cmFfYXJnczoKICAgICAgICAgYXJncy5leHRlbmQoWyctLXBsYXRmb3JtJywgJ3Rlc3Qn
XSkKKyAgICAgICAgZmlsZXN5c3RlbSA9IGZpbGVzeXN0ZW0gb3IgdGVzdF9maWxlc3lzdGVtKCkK
KyAgICBlbHNlOgorICAgICAgICBmaWxlc3lzdGVtID0gZmlsZXN5c3RlbSBvciBtb2NrX2ZpbGVz
eXN0ZW0oKQogICAgIGFyZ3MuZXh0ZW5kKGV4dHJhX2FyZ3MpCiAgICAgaWYgbm90IHRlc3RzX2lu
Y2x1ZGVkOgogICAgICAgICBhcmdzLmV4dGVuZChbJ3Bhc3NlcycsCiAgICAgICAgICAgICAgICAg
ICAgICAnaHR0cC90ZXN0cycsCi0gICAgICAgICAgICAgICAgICAgICAnaHR0cC90ZXN0cy93ZWJz
b2NrZXQvdGVzdHMnLAorICAgICAgICAgICAgICAgICAgICAgJ3dlYnNvY2tldC90ZXN0cycsCiAg
ICAgICAgICAgICAgICAgICAgICAnZmFpbHVyZXMvZXhwZWN0ZWQvKiddKQogICAgIG9wdGlvbnMs
IHBhcnNlZF9hcmdzID0gcnVuX3dlYmtpdF90ZXN0cy5wYXJzZV9hcmdzKGFyZ3MpCiAgICAgdXNl
ciA9IE1vY2tVc2VyKCkKICAgICBpZiBub3QgcG9ydF9vYmo6Ci0gICAgICAgIHBvcnRfb2JqID0g
cG9ydC5nZXQocG9ydF9uYW1lPW9wdGlvbnMucGxhdGZvcm0sIG9wdGlvbnM9b3B0aW9ucywgdXNl
cj11c2VyKQorICAgICAgICBwb3J0X29iaiA9IHBvcnQuZ2V0KHBvcnRfbmFtZT1vcHRpb25zLnBs
YXRmb3JtLCBvcHRpb25zPW9wdGlvbnMsIHVzZXI9dXNlciwgZmlsZXN5c3RlbT1maWxlc3lzdGVt
KQogICAgIGJ1aWxkYm90X291dHB1dCA9IGFycmF5X3N0cmVhbS5BcnJheVN0cmVhbSgpCiAgICAg
cmVndWxhcl9vdXRwdXQgPSBhcnJheV9zdHJlYW0uQXJyYXlTdHJlYW0oKQogICAgIHJlcyA9IHJ1
bl93ZWJraXRfdGVzdHMucnVuKHBvcnRfb2JqLCBvcHRpb25zLCBwYXJzZWRfYXJncywKQEAgLTEx
MCw3ICsxNDUsOSBAQCBkZWYgbG9nZ2luZ19ydW4oZXh0cmFfYXJncz1Ob25lLCBwb3J0X29iaj1O
b25lLCB0ZXN0c19pbmNsdWRlZD1GYWxzZSk6CiAgICAgcmV0dXJuIChyZXMsIGJ1aWxkYm90X291
dHB1dCwgcmVndWxhcl9vdXRwdXQsIHVzZXIpCiAKIAotZGVmIGdldF90ZXN0c19ydW4oZXh0cmFf
YXJncz1Ob25lLCB0ZXN0c19pbmNsdWRlZD1GYWxzZSwgZmxhdHRlbl9iYXRjaGVzPUZhbHNlKToK
K2RlZiBnZXRfdGVzdHNfcnVuKGV4dHJhX2FyZ3M9Tm9uZSwgdGVzdHNfaW5jbHVkZWQ9RmFsc2Us
IGZsYXR0ZW5fYmF0Y2hlcz1GYWxzZSwKKyAgICAgICAgICAgICAgICAgIGZpbGVzeXN0ZW09Tm9u
ZSk6CisgICAgZmlsZXN5c3RlbSA9IGZpbGVzeXN0ZW0gb3IgdGVzdF9maWxlc3lzdGVtKCkKICAg
ICBleHRyYV9hcmdzID0gZXh0cmFfYXJncyBvciBbXQogICAgIGFyZ3MgPSBbCiAgICAgICAgICct
LXByaW50JywgJ25vdGhpbmcnLApAQCAtMTUwLDcgKzE4Nyw4IEBAIGRlZiBnZXRfdGVzdHNfcnVu
KGV4dHJhX2FyZ3M9Tm9uZSwgdGVzdHNfaW5jbHVkZWQ9RmFsc2UsIGZsYXR0ZW5fYmF0Y2hlcz1G
YWxzZSk6CiAgICAgICAgIGRlZiBjcmVhdGVfZHJpdmVyKHNlbGYsIGltYWdlX3BhdGgsIG9wdGlv
bnMpOgogICAgICAgICAgICAgcmV0dXJuIFJlY29yZGluZ1Rlc3REcml2ZXIoc2VsZiwgaW1hZ2Vf
cGF0aCwgb3B0aW9ucykKIAotICAgIHJlY29yZGluZ19wb3J0ID0gUmVjb3JkaW5nVGVzdFBvcnQo
b3B0aW9ucz1vcHRpb25zLCB1c2VyPXVzZXIpCisgICAgcmVjb3JkaW5nX3BvcnQgPSBSZWNvcmRp
bmdUZXN0UG9ydChvcHRpb25zPW9wdGlvbnMsIHVzZXI9dXNlciwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZpbGVzeXN0ZW09ZmlsZXN5c3RlbSkKICAgICBsb2dnaW5n
X3J1bihleHRyYV9hcmdzPWFyZ3MsIHBvcnRfb2JqPXJlY29yZGluZ19wb3J0LCB0ZXN0c19pbmNs
dWRlZD1UcnVlKQogCiAgICAgaWYgZmxhdHRlbl9iYXRjaGVzOgpAQCAtMjE4LDkgKzI1NiwxMiBA
QCBjbGFzcyBNYWluVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAgICBbJ2ZhaWx1
cmVzL2V4cGVjdGVkL2tleWJvYXJkLmh0bWwnXSwgdGVzdHNfaW5jbHVkZWQ9VHJ1ZSkKIAogICAg
IGRlZiB0ZXN0X2xhc3RfcmVzdWx0cyhzZWxmKToKLSAgICAgICAgcGFzc2luZ19ydW4oWyctLWNs
b2JiZXItb2xkLXJlc3VsdHMnXSwgcmVjb3JkX3Jlc3VsdHM9VHJ1ZSkKKyAgICAgICAgZnMgPSB0
ZXN0X2ZpbGVzeXN0ZW0oKQorICAgICAgICBwYXNzaW5nX3J1bihbJy0tY2xvYmJlci1vbGQtcmVz
dWx0cyddLCByZWNvcmRfcmVzdWx0cz1UcnVlLAorICAgICAgICAgICAgICAgICAgICBmaWxlc3lz
dGVtPWZzKQogICAgICAgICAocmVzLCBidWlsZGJvdF9vdXRwdXQsIHJlZ3VsYXJfb3V0cHV0LCB1
c2VyKSA9IGxvZ2dpbmdfcnVuKAotICAgICAgICAgICAgWyctLXByaW50LWxhc3QtZmFpbHVyZXMn
XSkKKyAgICAgICAgICAgIFsnLS1wcmludC1sYXN0LWZhaWx1cmVzJ10sCisgICAgICAgICAgICBm
aWxlc3lzdGVtPWZzKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlZ3VsYXJfb3V0cHV0Lmdl
dCgpLCBbJ1xuXG4nXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWlsZGJvdF9vdXRwdXQu
Z2V0KCksIFtdKQogCkBAIC0yODYsMTUgKzMyNywxNSBAQCBjbGFzcyBNYWluVGVzdCh1bml0dGVz
dC5UZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKFsncGFzc2VzL3RleHQuaHRt
bCddLCB0ZXN0c19ydW4pCiAKICAgICBkZWYgdGVzdF90ZXN0X2xpc3Qoc2VsZik6Ci0gICAgICAg
IGZpbGVuYW1lID0gdGVtcGZpbGUubWt0ZW1wKCkKLSAgICAgICAgdG1wZmlsZSA9IGZpbGUoZmls
ZW5hbWUsIG1vZGU9J3crJykKLSAgICAgICAgdG1wZmlsZS53cml0ZSgncGFzc2VzL3RleHQuaHRt
bCcpCi0gICAgICAgIHRtcGZpbGUuY2xvc2UoKQotICAgICAgICB0ZXN0c19ydW4gPSBnZXRfdGVz
dHNfcnVuKFsnLS10ZXN0LWxpc3Q9JXMnICUgZmlsZW5hbWVdLCB0ZXN0c19pbmNsdWRlZD1UcnVl
LCBmbGF0dGVuX2JhdGNoZXM9VHJ1ZSkKKyAgICAgICAgZmlsZW5hbWUgPSAidG1wZmlsZSIKKyAg
ICAgICAgZnMgPSB0ZXN0X2ZpbGVzeXN0ZW0oKQorICAgICAgICBmcy5maWxlc1tmaWxlbmFtZV0g
PSAicGFzc2VzL3RleHQuaHRtbCIKKyAgICAgICAgdGVzdHNfcnVuID0gZ2V0X3Rlc3RzX3J1bihb
Jy0tdGVzdC1saXN0PSVzJyAlIGZpbGVuYW1lXSwgdGVzdHNfaW5jbHVkZWQ9VHJ1ZSwgZmxhdHRl
bl9iYXRjaGVzPVRydWUsIGZpbGVzeXN0ZW09ZnMpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxz
KFsncGFzc2VzL3RleHQuaHRtbCddLCB0ZXN0c19ydW4pCi0gICAgICAgIG9zLnJlbW92ZShmaWxl
bmFtZSkKKyAgICAgICAgZnMucmVtb3ZlKGZpbGVuYW1lKQogICAgICAgICByZXMsIG91dCwgZXJy
LCB1c2VyID0gbG9nZ2luZ19ydW4oWyctLXRlc3QtbGlzdD0lcycgJSBmaWxlbmFtZV0sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0c19pbmNsdWRlZD1UcnVl
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdHNfaW5jbHVk
ZWQ9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVz
eXN0ZW09ZnMpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLCAtMSkKICAgICAgICAgc2Vs
Zi5hc3NlcnRGYWxzZShlcnIuZW1wdHkoKSkKIApAQCAtMzExLDExICszNTIsMTMgQEAgY2xhc3Mg
TWFpblRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICAjIFdlIHJ1biBhIGNvbmZpZ3Vy
YXRpb24gdGhhdCBzaG91bGQgZmFpbCwgdG8gZ2VuZXJhdGUgb3V0cHV0LCB0aGVuCiAgICAgICAg
ICMgbG9vayBmb3Igd2hhdCB0aGUgb3V0cHV0IHJlc3VsdHMgdXJsIHdhcy4KIAotICAgICAgICB0
bXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKCkKLSAgICAgICAgcmVzLCBvdXQsIGVyciwgdXNlciA9
IGxvZ2dpbmdfcnVuKFsnLS1yZXN1bHRzLWRpcmVjdG9yeT0nICsgdG1wZGlyXSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RzX2luY2x1ZGVkPVRydWUpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodXNlci51cmwsIG9zLnBhdGguam9pbih0bXBkaXIsICdy
ZXN1bHRzLmh0bWwnKSkKLSAgICAgICAgc2h1dGlsLnJtdHJlZSh0bXBkaXIsIGlnbm9yZV9lcnJv
cnM9VHJ1ZSkKKyAgICAgICAgZnMgPSBtb2NrX2ZpbGVzeXN0ZW0oKQorICAgICAgICB0bXBkaXIg
PSBmcy5ta2R0ZW1wKCkKKyAgICAgICAgcmVzLCBvdXQsIGVyciwgdXNlciA9IGxvZ2dpbmdfcnVu
KFsnLS1yZXN1bHRzLWRpcmVjdG9yeT0nICsgc3RyKHRtcGRpcildLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdHNfaW5jbHVkZWQ9VHJ1ZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVzeXN0ZW09ZnMpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwodXNlci51cmwsIGZzLmpvaW4oc3RyKHRtcGRpciksICdyZXN1bHRz
Lmh0bWwnKSkKKyAgICAgICAgZnMucm10cmVlKHN0cih0bXBkaXIpKQogCiAgICAgZGVmIHRlc3Rf
cmVzdWx0c19kaXJlY3RvcnlfZGVmYXVsdChzZWxmKToKICAgICAgICAgIyBXZSBydW4gYSBjb25m
aWd1cmF0aW9uIHRoYXQgc2hvdWxkIGZhaWwsIHRvIGdlbmVyYXRlIG91dHB1dCwgdGhlbgpAQCAt
MzQyLDggKzM4NSwxMSBAQCBjbGFzcyBNYWluVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAg
ICAgICAgZGVmIGdldF9wb3J0X2Zvcl9ydW4oYXJncyk6CiAgICAgICAgICAgICBvcHRpb25zLCBw
YXJzZWRfYXJncyA9IHJ1bl93ZWJraXRfdGVzdHMucGFyc2VfYXJncyhhcmdzKQotICAgICAgICAg
ICAgdGVzdF9wb3J0ID0gSW1hZ2VEaWZmVGVzdFBvcnQob3B0aW9ucz1vcHRpb25zLCB1c2VyPU1v
Y2tVc2VyKCkpCi0gICAgICAgICAgICBwYXNzaW5nX3J1bihhcmdzLCBwb3J0X29iaj10ZXN0X3Bv
cnQsIHRlc3RzX2luY2x1ZGVkPVRydWUpCisgICAgICAgICAgICBmcyA9IHRlc3RfZmlsZXN5c3Rl
bSgpCisgICAgICAgICAgICB0ZXN0X3BvcnQgPSBJbWFnZURpZmZUZXN0UG9ydChvcHRpb25zPW9w
dGlvbnMsIHVzZXI9TW9ja1VzZXIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZpbGVzeXN0ZW09ZnMpCisgICAgICAgICAgICBwYXNzaW5nX3J1bihhcmdzLCBw
b3J0X29iaj10ZXN0X3BvcnQsIHRlc3RzX2luY2x1ZGVkPVRydWUsCisgICAgICAgICAgICAgICAg
ICAgICAgICBmaWxlc3lzdGVtPWZzKQogICAgICAgICAgICAgcmV0dXJuIHRlc3RfcG9ydAogCiAg
ICAgICAgIGJhc2VfYXJncyA9IFsnLS1waXhlbC10ZXN0cycsICdmYWlsdXJlcy9leHBlY3RlZC8q
J10KQEAgLTM2MiwxNyArNDA4LDYgQEAgY2xhc3MgTWFpblRlc3QodW5pdHRlc3QuVGVzdENhc2Up
OgogTWFpblRlc3QgPSBza2lwX2lmKE1haW5UZXN0LCBzeXMucGxhdGZvcm0gPT0gJ2N5Z3dpbicg
YW5kIGNvbXBhcmVfdmVyc2lvbihzeXMsICcyLjYnKVswXSA8IDAsICduZXctcnVuLXdlYmtpdC10
ZXN0cyB0ZXN0cyBoYW5nIG9uIEN5Z3dpbiBQeXRob24gMi41LjInKQogCiAKLWRlZiBfbW9ja2Vk
X29wZW4ob3JpZ2luYWxfb3BlbiwgZmlsZV9saXN0KToKLSAgICBkZWYgX3dyYXBwZXIobmFtZSwg
bW9kZSwgZW5jb2RpbmcpOgotICAgICAgICBpZiBuYW1lLmZpbmQoIi1leHBlY3RlZC4iKSAhPSAt
MSBhbmQgbW9kZS5maW5kKCJ3IikgIT0gLTE6Ci0gICAgICAgICAgICAjIHdlIGRvbid0IHdhbnQg
dG8gYWN0dWFsbHkgd3JpdGUgbmV3IGJhc2VsaW5lcywgc28gc3R1YiB0aGVzZSBvdXQKLSAgICAg
ICAgICAgIG5hbWUucmVwbGFjZSgnXFwnLCAnLycpCi0gICAgICAgICAgICBmaWxlX2xpc3QuYXBw
ZW5kKG5hbWUpCi0gICAgICAgICAgICByZXR1cm4gb3JpZ2luYWxfb3Blbihvcy5kZXZudWxsLCBt
b2RlLCBlbmNvZGluZykKLSAgICAgICAgcmV0dXJuIG9yaWdpbmFsX29wZW4obmFtZSwgbW9kZSwg
ZW5jb2RpbmcpCi0gICAgcmV0dXJuIF93cmFwcGVyCi0KLQogY2xhc3MgUmViYXNlbGluZVRlc3Qo
dW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBhc3NlcnRCYXNlbGluZXMoc2VsZiwgZmlsZV9s
aXN0LCBmaWxlKToKICAgICAgICAgImFzc2VydCB0aGF0IHRoZSBmaWxlX2xpc3QgY29udGFpbnMg
dGhlIGJhc2VsaW5lcy4iIiIKQEAgLTM4MCw0OSArNDE1LDM3IEBAIGNsYXNzIFJlYmFzZWxpbmVU
ZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgICAgIGJhc2VsaW5lID0gZmlsZSArICIt
ZXhwZWN0ZWQiICsgZXh0CiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYW55KGYuZmluZChi
YXNlbGluZSkgIT0gLTEgZm9yIGYgaW4gZmlsZV9saXN0KSkKIAotICAgIGRlZiBkaXNhYmxlZF90
ZXN0X3Jlc2V0X3Jlc3VsdHMoc2VsZik6Ci0gICAgICAgICMgRklYTUU6IFRoaXMgdGVzdCBpcyBk
aXNhYmxlZCB1bnRpbCB3ZSBjYW4gcmV3cml0ZSBpdCB0byB1c2UgYQotICAgICAgICAjIG1vY2sg
ZmlsZXN5c3RlbS4KLSAgICAgICAgIworICAgIGRlZiB0ZXN0X3Jlc2V0X3Jlc3VsdHMoc2VsZik6
CiAgICAgICAgICMgVGVzdCB0aGF0IHdlIHVwZGF0ZSBleHBlY3RhdGlvbnMgaW4gcGxhY2UuIElm
IHRoZSBleHBlY3RhdGlvbgogICAgICAgICAjIGlzIG1pc3NpbmcsIHVwZGF0ZSB0aGUgZXhwZWN0
ZWQgZ2VuZXJpYyBsb2NhdGlvbi4KLSAgICAgICAgZmlsZV9saXN0ID0gW10KKyAgICAgICAgZnMg
PSB0ZXN0X2ZpbGVzeXN0ZW0oKQogICAgICAgICBwYXNzaW5nX3J1bihbJy0tcGl4ZWwtdGVzdHMn
LAogICAgICAgICAgICAgICAgICAgICAgICAgJy0tcmVzZXQtcmVzdWx0cycsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAncGFzc2VzL2ltYWdlLmh0bWwnLAogICAgICAgICAgICAgICAgICAgICAg
ICAgJ2ZhaWx1cmVzL2V4cGVjdGVkL21pc3NpbmdfaW1hZ2UuaHRtbCddLAotICAgICAgICAgICAg
ICAgICAgICAgICAgdGVzdHNfaW5jbHVkZWQ9VHJ1ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChsZW4oZmlsZV9saXN0KSwgNikKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RzX2luY2x1
ZGVkPVRydWUsIGZpbGVzeXN0ZW09ZnMpCisgICAgICAgIGZpbGVfbGlzdCA9IGZzLndyaXR0ZW5f
ZmlsZXMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZmlsZV9saXN0KSwgOCkKICAgICAg
ICAgc2VsZi5hc3NlcnRCYXNlbGluZXMoZmlsZV9saXN0LAotICAgICAgICAgICAgImRhdGEvcGFz
c2VzL2ltYWdlIikKKyAgICAgICAgICAgICIvcGFzc2VzL2ltYWdlIikKICAgICAgICAgc2VsZi5h
c3NlcnRCYXNlbGluZXMoZmlsZV9saXN0LAotICAgICAgICAgICAgImRhdGEvZmFpbHVyZXMvZXhw
ZWN0ZWQvbWlzc2luZ19pbWFnZSIpCisgICAgICAgICAgICAiL2ZhaWx1cmVzL2V4cGVjdGVkL21p
c3NpbmdfaW1hZ2UiKQogCi0gICAgZGVmIGRpc2FibGVkX3Rlc3RfbmV3X2Jhc2VsaW5lKHNlbGYp
OgotICAgICAgICAjIEZJWE1FOiBUaGlzIHRlc3QgaXMgZGlzYWJsZWQgdW50aWwgd2UgY2FuIHJl
d3JpdGUgaXQgdG8gdXNlIGEKLSAgICAgICAgIyBtb2NrIGZpbGVzeXN0ZW0uCi0gICAgICAgICMK
KyAgICBkZWYgdGVzdF9uZXdfYmFzZWxpbmUoc2VsZik6CiAgICAgICAgICMgVGVzdCB0aGF0IHdl
IHVwZGF0ZSB0aGUgcGxhdGZvcm0gZXhwZWN0YXRpb25zLiBJZiB0aGUgZXhwZWN0YXRpb24KICAg
ICAgICAgIyBpcyBtc3NpbmcsIHRoZW4gY3JlYXRlIGEgbmV3IGV4cGVjdGF0aW9uIGluIHRoZSBw
bGF0Zm9ybSBkaXIuCi0gICAgICAgIGZpbGVfbGlzdCA9IFtdCi0gICAgICAgIG9yaWdpbmFsX29w
ZW4gPSBjb2RlY3Mub3BlbgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICAjIFRlc3QgdGhhdCB3
ZSB1cGRhdGUgdGhlIHBsYXRmb3JtIGV4cGVjdGF0aW9ucy4gSWYgdGhlIGV4cGVjdGF0aW9uCi0g
ICAgICAgICAgICAjIGlzIG1zc2luZywgdGhlbiBjcmVhdGUgYSBuZXcgZXhwZWN0YXRpb24gaW4g
dGhlIHBsYXRmb3JtIGRpci4KLSAgICAgICAgICAgIGZpbGVfbGlzdCA9IFtdCi0gICAgICAgICAg
ICBjb2RlY3Mub3BlbiA9IF9tb2NrZWRfb3BlbihvcmlnaW5hbF9vcGVuLCBmaWxlX2xpc3QpCi0g
ICAgICAgICAgICBwYXNzaW5nX3J1bihbJy0tcGl4ZWwtdGVzdHMnLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICctLW5ldy1iYXNlbGluZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ3Bh
c3Nlcy9pbWFnZS5odG1sJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnZmFpbHVyZXMvZXhw
ZWN0ZWQvbWlzc2luZ19pbWFnZS5odG1sJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICB0ZXN0
c19pbmNsdWRlZD1UcnVlKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZmlsZV9s
aXN0KSwgNikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0QmFzZWxpbmVzKGZpbGVfbGlzdCwKLSAg
ICAgICAgICAgICAgICAiZGF0YS9wbGF0Zm9ybS90ZXN0L3Bhc3Nlcy9pbWFnZSIpCi0gICAgICAg
ICAgICBzZWxmLmFzc2VydEJhc2VsaW5lcyhmaWxlX2xpc3QsCi0gICAgICAgICAgICAgICAgImRh
dGEvcGxhdGZvcm0vdGVzdC9mYWlsdXJlcy9leHBlY3RlZC9taXNzaW5nX2ltYWdlIikKLSAgICAg
ICAgZmluYWxseToKLSAgICAgICAgICAgIGNvZGVjcy5vcGVuID0gb3JpZ2luYWxfb3BlbgorICAg
ICAgICBmcyA9IHRlc3RfZmlsZXN5c3RlbSgpCisgICAgICAgIHBhc3NpbmdfcnVuKFsnLS1waXhl
bC10ZXN0cycsCisgICAgICAgICAgICAgICAgICAgICAgICAnLS1uZXctYmFzZWxpbmUnLAorICAg
ICAgICAgICAgICAgICAgICAgICAgJ3Bhc3Nlcy9pbWFnZS5odG1sJywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICdmYWlsdXJlcy9leHBlY3RlZC9taXNzaW5nX2ltYWdlLmh0bWwnXSwKKyAgICAg
ICAgICAgICAgICAgICAgdGVzdHNfaW5jbHVkZWQ9VHJ1ZSwgZmlsZXN5c3RlbT1mcykKKyAgICAg
ICAgZmlsZV9saXN0ID0gZnMud3JpdHRlbl9maWxlcworICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGxlbihmaWxlX2xpc3QpLCA4KQorICAgICAgICBzZWxmLmFzc2VydEJhc2VsaW5lcyhmaWxlX2xp
c3QsCisgICAgICAgICAgICAiL3BsYXRmb3JtL3Rlc3QvcGFzc2VzL2ltYWdlIikKKyAgICAgICAg
c2VsZi5hc3NlcnRCYXNlbGluZXMoZmlsZV9saXN0LAorICAgICAgICAgICAgIi9wbGF0Zm9ybS90
ZXN0L2ZhaWx1cmVzL2V4cGVjdGVkL21pc3NpbmdfaW1hZ2UiKQogCiAKIGNsYXNzIFRlc3RSdW5u
ZXJXcmFwcGVyKHJ1bl93ZWJraXRfdGVzdHMuVGVzdFJ1bm5lcik6CkBAIC01MDgsOSArNTMxLDkg
QEAgY2xhc3MgRHJ5cnVuVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKHBhc3NpbmdfcnVuKFsnLS1wbGF0Zm9ybScsICd0ZXN0J10pKQogICAgICAgICBz
ZWxmLmFzc2VydFRydWUocGFzc2luZ19ydW4oWyctLXBsYXRmb3JtJywgJ2RyeXJ1bicsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zhc3QvaHRtbCddKSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZmFzdC9odG1sJ10sIHRlc3RzX2luY2x1ZGVk
PVRydWUpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocGFzc2luZ19ydW4oWyctLXBsYXRmb3Jt
JywgJ2RyeXJ1bi1tYWMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdm
YXN0L2h0bWwnXSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zhc3Qv
aHRtbCddLCB0ZXN0c19pbmNsdWRlZD1UcnVlKSkKIAogICAgIGRlZiB0ZXN0X3Rlc3Qoc2VsZik6
CiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwYXNzaW5nX3J1bihbJy0tcGxhdGZvcm0nLCAnZHJ5
cnVuLXRlc3QnLApAQCAtNTk0LDkgKzYxNywxMSBAQCBjbGFzcyBXYWl0Rm9yVGhyZWFkc1RvRmlu
aXNoVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfdGltZW91dChzZWxmKToK
ICAgICAgICAgb2MgPSBvdXRwdXRjYXB0dXJlLk91dHB1dENhcHR1cmUoKQogICAgICAgICBvYy5j
YXB0dXJlX291dHB1dCgpCi0gICAgICAgIGludGVycnVwdGVkID0gc2VsZi5ydW5fb25lX3RocmVh
ZCgnVGltZW91dCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaW50ZXJydXB0ZWQpCi0gICAg
ICAgIG9jLnJlc3RvcmVfb3V0cHV0KCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaW50ZXJy
dXB0ZWQgPSBzZWxmLnJ1bl9vbmVfdGhyZWFkKCdUaW1lb3V0JykKKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RmFsc2UoaW50ZXJydXB0ZWQpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBv
Yy5yZXN0b3JlX291dHB1dCgpCiAKICAgICBkZWYgdGVzdF9leGNlcHRpb24oc2VsZik6CiAgICAg
ICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYucnVuX29uZV90aHJlYWQsICdF
eGNlcHRpb24nKQpAQCAtNjA2LDI0ICs2MzEsMjYgQEAgY2xhc3MgU3RhbmRhbG9uZUZ1bmN0aW9u
c1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X2xvZ193ZWRnZWRfdGhyZWFk
KHNlbGYpOgogICAgICAgICBvYyA9IG91dHB1dGNhcHR1cmUuT3V0cHV0Q2FwdHVyZSgpCiAgICAg
ICAgIG9jLmNhcHR1cmVfb3V0cHV0KCkKLSAgICAgICAgbG9nZ2VyID0gcnVuX3dlYmtpdF90ZXN0
cy5fbG9nCi0gICAgICAgIGFzdHJlYW0gPSBhcnJheV9zdHJlYW0uQXJyYXlTdHJlYW0oKQotICAg
ICAgICBoYW5kbGVyID0gVGVzdEhhbmRsZXIoYXN0cmVhbSkKLSAgICAgICAgbG9nZ2VyLmFkZEhh
bmRsZXIoaGFuZGxlcikKLQotICAgICAgICBzdGFydGluZ19xdWV1ZSA9IFF1ZXVlLlF1ZXVlKCkK
LSAgICAgICAgc3RvcHBpbmdfcXVldWUgPSBRdWV1ZS5RdWV1ZSgpCi0gICAgICAgIGNoaWxkX3Ro
cmVhZCA9IFRlc3RUaHJlYWQoc3RhcnRpbmdfcXVldWUsIHN0b3BwaW5nX3F1ZXVlKQotICAgICAg
ICBjaGlsZF90aHJlYWQuc3RhcnQoKQotICAgICAgICBtc2cgPSBzdGFydGluZ19xdWV1ZS5nZXQo
KQotCi0gICAgICAgIHJ1bl93ZWJraXRfdGVzdHMuX2xvZ193ZWRnZWRfdGhyZWFkKGNoaWxkX3Ro
cmVhZCkKLSAgICAgICAgc3RvcHBpbmdfcXVldWUucHV0KCcnKQotICAgICAgICBjaGlsZF90aHJl
YWQuam9pbih0aW1lb3V0PTEuMCkKLQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGFzdHJlYW0u
ZW1wdHkoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjaGlsZF90aHJlYWQuaXNBbGl2ZSgp
KQotICAgICAgICBvYy5yZXN0b3JlX291dHB1dCgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAg
IGxvZ2dlciA9IHJ1bl93ZWJraXRfdGVzdHMuX2xvZworICAgICAgICAgICAgYXN0cmVhbSA9IGFy
cmF5X3N0cmVhbS5BcnJheVN0cmVhbSgpCisgICAgICAgICAgICBoYW5kbGVyID0gVGVzdEhhbmRs
ZXIoYXN0cmVhbSkKKyAgICAgICAgICAgIGxvZ2dlci5hZGRIYW5kbGVyKGhhbmRsZXIpCisKKyAg
ICAgICAgICAgIHN0YXJ0aW5nX3F1ZXVlID0gUXVldWUuUXVldWUoKQorICAgICAgICAgICAgc3Rv
cHBpbmdfcXVldWUgPSBRdWV1ZS5RdWV1ZSgpCisgICAgICAgICAgICBjaGlsZF90aHJlYWQgPSBU
ZXN0VGhyZWFkKHN0YXJ0aW5nX3F1ZXVlLCBzdG9wcGluZ19xdWV1ZSkKKyAgICAgICAgICAgIGNo
aWxkX3RocmVhZC5zdGFydCgpCisgICAgICAgICAgICBtc2cgPSBzdGFydGluZ19xdWV1ZS5nZXQo
KQorCisgICAgICAgICAgICBydW5fd2Via2l0X3Rlc3RzLl9sb2dfd2VkZ2VkX3RocmVhZChjaGls
ZF90aHJlYWQpCisgICAgICAgICAgICBzdG9wcGluZ19xdWV1ZS5wdXQoJycpCisgICAgICAgICAg
ICBjaGlsZF90aHJlYWQuam9pbih0aW1lb3V0PTEuMCkKKworICAgICAgICAgICAgc2VsZi5hc3Nl
cnRGYWxzZShhc3RyZWFtLmVtcHR5KCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGNo
aWxkX3RocmVhZC5pc0FsaXZlKCkpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBvYy5y
ZXN0b3JlX291dHB1dCgpCiAKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKZGlmZiAtLWdp
dCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Rlc3RfdHlwZXMv
aW1hZ2VfZGlmZi5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3Rlc3RfdHlwZXMvaW1hZ2VfZGlmZi5weQppbmRleCAwYjA1ODAyMGMwOGY0ZjUxYzExNjIwNGRj
NTRjYmY1ZDljM2U3YzZmLi4zZWRhOGE4YjU0MGUwZWRhNzU4NjU1NjE5NTQ1NTJkYzc4YzljNTRl
IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy90
ZXN0X3R5cGVzL2ltYWdlX2RpZmYucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvdGVzdF90eXBlcy9pbWFnZV9kaWZmLnB5CkBAIC0zNCwxMyArMzQsOCBA
QCBtYXRjaCwgcmV0dXJucyBGYWlsdXJlSW1hZ2VIYXNoTWlzbWF0Y2ggYW5kIG91dHB1dHMgYm90
aCBoYXNoZXMgaW50byB0aGUgbGF5b3V0CiB0ZXN0IHJlc3VsdHMgZGlyZWN0b3J5LgogIiIiCiAK
LWZyb20gX19mdXR1cmVfXyBpbXBvcnQgd2l0aF9zdGF0ZW1lbnQKLQotaW1wb3J0IGNvZGVjcwog
aW1wb3J0IGVycm5vCiBpbXBvcnQgbG9nZ2luZwotaW1wb3J0IG9zCi1pbXBvcnQgc2h1dGlsCiAK
IGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmxheW91dF9wYWNrYWdlIGltcG9ydCB0ZXN0X2Zh
aWx1cmVzCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy50ZXN0X3R5cGVzIGltcG9ydCB0ZXN0
X3R5cGVfYmFzZQpAQCAtNjYsOCArNjEsOCBAQCBjbGFzcyBJbWFnZURpZmYodGVzdF90eXBlX2Jh
c2UuVGVzdFR5cGVCYXNlKToKICAgICAgICAgc2VsZi5fbWFrZV9vdXRwdXRfZGlyZWN0b3J5KHRl
c3RfZmlsZW5hbWUpCiAgICAgICAgIGRlc3RfaW1hZ2UgPSBzZWxmLm91dHB1dF9maWxlbmFtZSh0
ZXN0X2ZpbGVuYW1lLCBleHRlbnNpb24pCiAKLSAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoc291
cmNlX2ltYWdlKToKLSAgICAgICAgICAgIHNodXRpbC5jb3B5ZmlsZShzb3VyY2VfaW1hZ2UsIGRl
c3RfaW1hZ2UpCisgICAgICAgIGlmIHNlbGYuX3BvcnQuX2ZpbGVzeXN0ZW0uZXhpc3RzKHNvdXJj
ZV9pbWFnZSk6CisgICAgICAgICAgICBzZWxmLl9wb3J0Ll9maWxlc3lzdGVtLmNvcHlmaWxlKHNv
dXJjZV9pbWFnZSwgZGVzdF9pbWFnZSkKIAogICAgIGRlZiBfc2F2ZV9iYXNlbGluZV9maWxlcyhz
ZWxmLCBmaWxlbmFtZSwgcG5nX3BhdGgsIGNoZWNrc3VtLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBnZW5lcmF0ZV9uZXdfYmFzZWxpbmUpOgpAQCAtODAsOCArNzUsNyBAQCBjbGFzcyBJ
bWFnZURpZmYodGVzdF90eXBlX2Jhc2UuVGVzdFR5cGVCYXNlKToKICAgICAgICAgICBnZW5lcmF0
ZV9uZXdfYmFzZWxpbmU6IHdoZXRoZXIgdG8gZ2VuZXJhdGUgYSBuZXcsIHBsYXRmb3JtLXNwZWNp
ZmljCiAgICAgICAgICAgICBiYXNlbGluZSwgb3IgdXBkYXRlIHRoZSBleGlzdGluZyBvbmUKICAg
ICAgICAgIiIiCi0gICAgICAgIHdpdGggb3BlbihwbmdfcGF0aCwgInJiIikgYXMgcG5nX2ZpbGU6
Ci0gICAgICAgICAgICBwbmdfZGF0YSA9IHBuZ19maWxlLnJlYWQoKQorICAgICAgICBwbmdfZGF0
YSA9IHNlbGYuX3BvcnQuX2ZpbGVzeXN0ZW0ucmVhZF9iaW5hcnlfZmlsZShwbmdfcGF0aCkKICAg
ICAgICAgc2VsZi5fc2F2ZV9iYXNlbGluZV9kYXRhKGZpbGVuYW1lLCBwbmdfZGF0YSwgIi5wbmci
LCBlbmNvZGluZz1Ob25lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJh
dGVfbmV3X2Jhc2VsaW5lPWdlbmVyYXRlX25ld19iYXNlbGluZSkKICAgICAgICAgc2VsZi5fc2F2
ZV9iYXNlbGluZV9kYXRhKGZpbGVuYW1lLCBjaGVja3N1bSwgIi5jaGVja3N1bSIsCkBAIC0xMDQs
OCArOTgsNyBAQCBjbGFzcyBJbWFnZURpZmYodGVzdF90eXBlX2Jhc2UuVGVzdFR5cGVCYXNlKToK
ICAgICAgICAgICBzZWxmLkZJTEVOQU1FX1NVRkZJWF9FWFBFQ1RFRCArICcucG5nJykKIAogICAg
ICAgICBleHBlY3RlZF9pbWFnZSA9IHBvcnQuZXhwZWN0ZWRfaW1hZ2UoZmlsZW5hbWUpCi0gICAg
ICAgIHdpdGggY29kZWNzLm9wZW4oYWN0dWFsX2ZpbGVuYW1lLCAncitiJywgTm9uZSkgYXMgZmls
ZToKLSAgICAgICAgICAgIGFjdHVhbF9pbWFnZSA9IGZpbGUucmVhZCgpCisgICAgICAgIGFjdHVh
bF9pbWFnZSA9IHBvcnQuX2ZpbGVzeXN0ZW0ucmVhZF9iaW5hcnlfZmlsZShhY3R1YWxfZmlsZW5h
bWUpCiAKICAgICAgICAgcmVzdWx0ID0gcG9ydC5kaWZmX2ltYWdlKGV4cGVjdGVkX2ltYWdlLCBh
Y3R1YWxfaW1hZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWZmX2ZpbGVu
YW1lKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvdGVzdF90eXBlcy90ZXN0X3R5cGVfYmFzZS5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3Rlc3RfdHlwZXMvdGVzdF90eXBlX2Jhc2UucHkKaW5kZXggZGNj
NjRhMzViMzM5ZGY5ODgwYWFjMDUzOGY3ZTg1NTk3MjU4MGIxMy4uOTJhNzE1NjVjZjgxNTBlM2Yy
Y2ZlNDM4M2M3MmFiMTNmNTgzOTFjMiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvdGVzdF90eXBlcy90ZXN0X3R5cGVfYmFzZS5weQorKysgYi9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy90ZXN0X3R5cGVzL3Rlc3Rf
dHlwZV9iYXNlLnB5CkBAIC0zMiwxMyArMzIsOSBAQAogQWxzbyBkZWZpbmVzIHRoZSBUZXN0QXJn
dW1lbnRzICJzdHJ1Y3QiIHRvIHBhc3MgdGhlbSBhZGRpdGlvbmFsIGFyZ3VtZW50cy4KICIiIgog
Ci1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IHdpdGhfc3RhdGVtZW50Ci0KLWltcG9ydCBjb2RlY3MK
IGltcG9ydCBjZ2kKIGltcG9ydCBlcnJubwogaW1wb3J0IGxvZ2dpbmcKLWltcG9ydCBvcy5wYXRo
CiAKIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcigid2Via2l0cHkubGF5b3V0X3Rlc3RzLnRlc3Rf
dHlwZXMudGVzdF90eXBlX2Jhc2UiKQogCkBAIC04Niw5ICs4Miw5IEBAIGNsYXNzIFRlc3RUeXBl
QmFzZShvYmplY3QpOgogICAgIGRlZiBfbWFrZV9vdXRwdXRfZGlyZWN0b3J5KHNlbGYsIGZpbGVu
YW1lKToKICAgICAgICAgIiIiQ3JlYXRlcyB0aGUgb3V0cHV0IGRpcmVjdG9yeSAoaWYgbmVlZGVk
KSBmb3IgYSBnaXZlbiB0ZXN0CiAgICAgICAgIGZpbGVuYW1lLiIiIgotICAgICAgICBvdXRwdXRf
ZmlsZW5hbWUgPSBvcy5wYXRoLmpvaW4oc2VsZi5fcm9vdF9vdXRwdXRfZGlyLAorICAgICAgICBv
dXRwdXRfZmlsZW5hbWUgPSBzZWxmLl9wb3J0Ll9maWxlc3lzdGVtLmpvaW4oc2VsZi5fcm9vdF9v
dXRwdXRfZGlyLAogICAgICAgICAgICAgc2VsZi5fcG9ydC5yZWxhdGl2ZV90ZXN0X2ZpbGVuYW1l
KGZpbGVuYW1lKSkKLSAgICAgICAgc2VsZi5fcG9ydC5tYXliZV9tYWtlX2RpcmVjdG9yeShvcy5w
YXRoLnNwbGl0KG91dHB1dF9maWxlbmFtZSlbMF0pCisgICAgICAgIHNlbGYuX3BvcnQubWF5YmVf
bWFrZV9kaXJlY3Rvcnkoc2VsZi5fcG9ydC5fZmlsZXN5c3RlbS5zcGxpdChvdXRwdXRfZmlsZW5h
bWUpWzBdKQogCiAgICAgZGVmIF9zYXZlX2Jhc2VsaW5lX2RhdGEoc2VsZiwgZmlsZW5hbWUsIGRh
dGEsIG1vZGlmaWVyLCBlbmNvZGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5l
cmF0ZV9uZXdfYmFzZWxpbmU9VHJ1ZSk6CkBAIC0xMDcsMTQgKzEwMywxNCBAQCBjbGFzcyBUZXN0
VHlwZUJhc2Uob2JqZWN0KToKICAgICAgICAgIiIiCiAKICAgICAgICAgaWYgZ2VuZXJhdGVfbmV3
X2Jhc2VsaW5lOgotICAgICAgICAgICAgcmVsYXRpdmVfZGlyID0gb3MucGF0aC5kaXJuYW1lKAor
ICAgICAgICAgICAgcmVsYXRpdmVfZGlyID0gc2VsZi5fcG9ydC5fZmlsZXN5c3RlbS5kaXJuYW1l
KAogICAgICAgICAgICAgICAgIHNlbGYuX3BvcnQucmVsYXRpdmVfdGVzdF9maWxlbmFtZShmaWxl
bmFtZSkpCiAgICAgICAgICAgICBiYXNlbGluZV9wYXRoID0gc2VsZi5fcG9ydC5iYXNlbGluZV9w
YXRoKCkKLSAgICAgICAgICAgIG91dHB1dF9kaXIgPSBvcy5wYXRoLmpvaW4oYmFzZWxpbmVfcGF0
aCwgcmVsYXRpdmVfZGlyKQotICAgICAgICAgICAgb3V0cHV0X2ZpbGUgPSBvcy5wYXRoLmJhc2Vu
YW1lKG9zLnBhdGguc3BsaXRleHQoZmlsZW5hbWUpWzBdICsKKyAgICAgICAgICAgIG91dHB1dF9k
aXIgPSBzZWxmLl9wb3J0Ll9maWxlc3lzdGVtLmpvaW4oYmFzZWxpbmVfcGF0aCwgcmVsYXRpdmVf
ZGlyKQorICAgICAgICAgICAgb3V0cHV0X2ZpbGUgPSBzZWxmLl9wb3J0Ll9maWxlc3lzdGVtLmJh
c2VuYW1lKHNlbGYuX3BvcnQuX2ZpbGVzeXN0ZW0uc3BsaXRleHQoZmlsZW5hbWUpWzBdICsKICAg
ICAgICAgICAgICAgICBzZWxmLkZJTEVOQU1FX1NVRkZJWF9FWFBFQ1RFRCArIG1vZGlmaWVyKQog
ICAgICAgICAgICAgc2VsZi5fcG9ydC5tYXliZV9tYWtlX2RpcmVjdG9yeShvdXRwdXRfZGlyKQot
ICAgICAgICAgICAgb3V0cHV0X3BhdGggPSBvcy5wYXRoLmpvaW4ob3V0cHV0X2Rpciwgb3V0cHV0
X2ZpbGUpCisgICAgICAgICAgICBvdXRwdXRfcGF0aCA9IHNlbGYuX3BvcnQuX2ZpbGVzeXN0ZW0u
am9pbihvdXRwdXRfZGlyLCBvdXRwdXRfZmlsZSkKICAgICAgICAgICAgIF9sb2cuZGVidWcoJ3dy
aXRpbmcgbmV3IGJhc2VsaW5lIHJlc3VsdCAiJXMiJyAlIChvdXRwdXRfcGF0aCkpCiAgICAgICAg
IGVsc2U6CiAgICAgICAgICAgICBvdXRwdXRfcGF0aCA9IHNlbGYuX3BvcnQuZXhwZWN0ZWRfZmls
ZW5hbWUoZmlsZW5hbWUsIG1vZGlmaWVyKQpAQCAtMTM2LDkgKzEzMiw5IEBAIGNsYXNzIFRlc3RU
eXBlQmFzZShvYmplY3QpOgogICAgICAgICBSZXR1cm46CiAgICAgICAgICAgVGhlIGFic29sdXRl
IHdpbmRvd3MgcGF0aCB0byB0aGUgb3V0cHV0IGZpbGVuYW1lCiAgICAgICAgICIiIgotICAgICAg
ICBvdXRwdXRfZmlsZW5hbWUgPSBvcy5wYXRoLmpvaW4oc2VsZi5fcm9vdF9vdXRwdXRfZGlyLAor
ICAgICAgICBvdXRwdXRfZmlsZW5hbWUgPSBzZWxmLl9wb3J0Ll9maWxlc3lzdGVtLmpvaW4oc2Vs
Zi5fcm9vdF9vdXRwdXRfZGlyLAogICAgICAgICAgICAgc2VsZi5fcG9ydC5yZWxhdGl2ZV90ZXN0
X2ZpbGVuYW1lKGZpbGVuYW1lKSkKLSAgICAgICAgcmV0dXJuIG9zLnBhdGguc3BsaXRleHQob3V0
cHV0X2ZpbGVuYW1lKVswXSArIG1vZGlmaWVyCisgICAgICAgIHJldHVybiBzZWxmLl9wb3J0Ll9m
aWxlc3lzdGVtLnNwbGl0ZXh0KG91dHB1dF9maWxlbmFtZSlbMF0gKyBtb2RpZmllcgogCiAgICAg
ZGVmIGNvbXBhcmVfb3V0cHV0KHNlbGYsIHBvcnQsIGZpbGVuYW1lLCBvdXRwdXQsIHRlc3RfYXJn
cywgY29uZmlndXJhdGlvbik6CiAgICAgICAgICIiIk1ldGhvZCB0aGF0IGNvbXBhcmVzIHRoZSBv
dXRwdXQgZnJvbSB0aGUgdGVzdCB3aXRoIHRoZQpAQCAtMTYxLDExICsxNTcsMTAgQEAgY2xhc3Mg
VGVzdFR5cGVCYXNlKG9iamVjdCk6CiAgICAgZGVmIF93cml0ZV9pbnRvX2ZpbGVfYXRfcGF0aChz
ZWxmLCBmaWxlX3BhdGgsIGNvbnRlbnRzLCBlbmNvZGluZyk6CiAgICAgICAgICIiIlRoaXMgbWV0
aG9kIGFzc3VtZXMgdGhhdCBieXRlX2FycmF5IGlzIGFscmVhZHkgZW5jb2RlZAogICAgICAgICBp
bnRvIHRoZSByaWdodCBmb3JtYXQuIiIiCi0gICAgICAgIG9wZW5fbW9kZSA9ICd3JwogICAgICAg
ICBpZiBlbmNvZGluZyBpcyBOb25lOgotICAgICAgICAgICAgb3Blbl9tb2RlID0gJ3crYicKLSAg
ICAgICAgd2l0aCBjb2RlY3Mub3BlbihmaWxlX3BhdGgsIG9wZW5fbW9kZSwgZW5jb2Rpbmc9ZW5j
b2RpbmcpIGFzIGZpbGU6Ci0gICAgICAgICAgICBmaWxlLndyaXRlKGNvbnRlbnRzKQorICAgICAg
ICAgICAgc2VsZi5fcG9ydC5fZmlsZXN5c3RlbS53cml0ZV9iaW5hcnlfZmlsZShmaWxlX3BhdGgs
IGNvbnRlbnRzKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5fcG9ydC5fZmlsZXN5
c3RlbS53cml0ZV90ZXh0X2ZpbGUoZmlsZV9wYXRoLCBjb250ZW50cykKIAogICAgIGRlZiB3cml0
ZV9vdXRwdXRfZmlsZXMoc2VsZiwgZmlsZW5hbWUsIGZpbGVfdHlwZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG91dHB1dCwgZXhwZWN0ZWQsIGVuY29kaW5nLAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>73940</attachid>
            <date>2010-11-15 15:45:51 -0800</date>
            <delta_ts>2010-11-15 15:45:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-48072-20101115154550.patch</filename>
            <type>text/plain</type>
            <size>74175</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBkMzE2NzE3ZGFmOWU5NDkzM2RmZDVhNzBiNDllNzlmZTI5ZGUyY2Y5Li5iYTRhZDQy
YTE2MmQxNmVhNWZiNGU5ZmNiZjE0Y2RlODVmNGUzZTUzIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAK
KzIwMTAtMTEtMTIgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUm91dGUgYWxsIGZpbGVz
eXN0ZW0gaS9vIHVuZGVyIHdlYmtpdHB5LmxheW91dF90ZXN0cyB0aHJvdWdoIHRoZQorICAgICAg
ICBGaWxlU3lzdGVtIGFic3RyYWN0aW9uLCB1c2UgaW4gbWVtb3J5IGZpbGVzeXN0ZW1zIGZvciB0
ZXN0aW5nLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD00ODA3MgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2ZpbGVz
eXN0ZW0ucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2ZpbGVz
eXN0ZW1fbW9jay5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9s
YXlvdXRfcGFja2FnZS9kdW1wX3JlbmRlcl90cmVlX3RocmVhZC5weToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9wcmludGluZ191bml0dGVz
dC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFj
a2FnZS90ZXN0X2V4cGVjdGF0aW9ucy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2V4cGVjdGF0aW9uc191bml0dGVzdC5weToK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHk6Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jb25maWdfc3RhbmRh
bG9uZS5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nv
bmZpZ191bml0dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L2RyeXJ1bi5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L3BvcnRfdGVzdGNhc2UucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC90ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvdGVzdF9maWxlcy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfdW5pdHRlc3QucHk6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdGVzdF90eXBlcy9pbWFnZV9kaWZmLnB5Ogor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Rlc3RfdHlwZXMvdGVzdF90
eXBlX2Jhc2UucHk6CisKIDIwMTAtMTEtMTUgIEFuZHJhcyBCZWNzaSAgPGFiZWNzaUB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCmRpZmYgLS1naXQgYS9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9pbl9tZW1vcnlfZmlsZXN5c3RlbS5w
eSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2luX21lbW9yeV9maWxlc3lz
dGVtLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjdiNTg1YjE3N2Q5NjU1ZjcwZDc1YzQ2NDAyNTE3MzViOWJiMzk5
OTgKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi9pbl9tZW1vcnlfZmlsZXN5c3RlbS5weQpAQCAtMCwwICsxLDI0MSBAQAorIyBDb3B5cmlnaHQg
KEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisiIiJJbXBsZW1lbnRzIGFuIGluLW1lbW9yeSB2ZXJzaW9uIG9mIHRoZSBGaWxlU3lzdGVtIGlu
dGVyZmFjZS4iIiIKKworaW1wb3J0IGVycm5vCitpbXBvcnQgb3MKKworaW1wb3J0IG5ld3N0cmlu
Z2lvCisKKworY2xhc3MgSW5NZW1vcnlGaWxlU3lzdGVtKG9iamVjdCk6CisgICAgZGVmIF9faW5p
dF9fKHNlbGYsIGZpbGVzPXt9KToKKyAgICAgICAgIiIiSW4tbWVtb3J5IGltcGxtZW50YXRpb24g
b2YgdGhlIGNvbW1vbi5zeXN0ZW0uZmlsZXN5c3RlbS5GaWxlU3lzdGVtCisgICAgICAgIGludGVy
ZmFjZS4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgZmlsZXM6IGEgZGljdCBvZiBmaWxl
bmFtZXMgLT4gZmlsZSBjb250ZW50cy4gQSB2YWx1ZSBvZiBOb25lCisgICAgICAgICAgICBpcyB1
c2VkIHRvIGluZGljYXRlIHRoYXQgdGhlIGZpbGVuYW1lIGRvZXMgbm90IGV4aXN0LiBJdCBpcwor
ICAgICAgICAgICAgYW4gZXJyb3IgdG8gdHJ5IGFuZCByZWFkIGZyb20gYSBrZXkgdGhhdCBkb2Vz
IG5vdCBleGlzdC4KKworICAgICAgICBUaGUgY29udGVudHMgb2YgdGhlIGZpbGVzeXN0ZW0gYXJl
IGF2YWlsYWJsZSB0aHJvdWdoIHRoZSAnZmlsZXMnCisgICAgICAgIHByb3BlcnR5LiBBIGRpY3Qg
b2YgZXZlcnkgZmlsZSB0aGF0IGhhcyBiZWVuIHdyaXR0ZW4gcG9zdC1jb25zdHJ1Y3RvcgorICAg
ICAgICBpcyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgJ3dyaXR0ZW5fZmlsZXMnIHByb3BlcnR5LiIi
IgorICAgICAgICBzZWxmLmZpbGVzID0gZmlsZXMKKyAgICAgICAgc2VsZi5jdXJyZW50X3RtcG5v
ID0gMAorICAgICAgICBzZWxmLndyaXR0ZW5fZmlsZXMgPSB7fQorCisgICAgZGVmIGFic3BhdGgo
c2VsZiwgcGF0aCk6CisgICAgICAgIGlmIHBhdGguc3RhcnRzd2l0aCgnLycpOgorICAgICAgICAg
ICAgcmV0dXJuIHBhdGgKKyAgICAgICAgcmV0dXJuICcvJyArIHBhdGgKKworICAgIGRlZiBiYXNl
bmFtZShzZWxmLCBwYXRoKToKKyAgICAgICAgaWR4ID0gcGF0aC5yZmluZCgnLycpCisgICAgICAg
IGlmIGlkeCA9PSAtMToKKyAgICAgICAgICAgIGlkeCA9IDAKKyAgICAgICAgcmV0dXJuIHBhdGhb
aWR4Ol0KKworICAgIGRlZiBjb3B5ZmlsZShzZWxmLCBzb3VyY2UsIGRlc3QpOgorICAgICAgICBz
ZWxmLmZpbGVzW2Rlc3RdID0gc2VsZi5maWxlc1tzb3VyY2VdCisgICAgICAgIHNlbGYud3JpdHRl
bl9maWxlc1tkZXN0XSA9IHNlbGYuZmlsZXNbc291cmNlXQorCisgICAgZGVmIGRpcm5hbWUoc2Vs
ZiwgcGF0aCk6CisgICAgICAgIHJldHVybiBzZWxmLnNwbGl0KHBhdGgpWzBdCisKKyAgICBkZWYg
ZXhpc3RzKHNlbGYsIHBhdGgpOgorICAgICAgICBpZiBwYXRoIGluIHNlbGYuZmlsZXM6CisgICAg
ICAgICAgICByZXR1cm4gc2VsZi5maWxlc1twYXRoXSBpcyBub3QgTm9uZQorCisgICAgICAgICMg
Q2hlY2sgdG8gc2VlIGlmIHBhdGggcmVmZXJzIHRvIGEgImRpcmVjdG9yeSIgaW4gc2VsZi5maWxl
cy4KKyAgICAgICAgaWYgbm90IHBhdGguZW5kc3dpdGgoJy8nKToKKyAgICAgICAgICAgIHBhdGgg
PSBwYXRoICsgJy8nCisgICAgICAgIHJldHVybiBhbnkoW2Yuc3RhcnRzd2l0aChwYXRoKSBmb3Ig
ZiBpbiBzZWxmLmZpbGVzXSkKKworICAgIGRlZiBnbG9iKHNlbGYsIHBhdGgpOgorICAgICAgICBp
ZiBwYXRoWy0xXSA9PSAnKic6CisgICAgICAgICAgICByZXR1cm4gW2YgZm9yIGYgaW4gc2VsZi5m
aWxlcyBpZiBmLnN0YXJ0c3dpdGgocGF0aFs6LTFdKV0KKyAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgIHJldHVybiBbZiBmb3IgZiBpbiBzZWxmLmZpbGVzIGlmIGYgPT0gcGF0aF0KKworICAgIGRl
ZiBpc2FicyhzZWxmLCBwYXRoKToKKyAgICAgICAgcmV0dXJuIHBhdGhbMF0gPT0gJy8nCisKKyAg
ICBkZWYgaXNmaWxlKHNlbGYsIHBhdGgpOgorICAgICAgICByZXR1cm4gcGF0aCBpbiBzZWxmLmZp
bGVzIGFuZCBzZWxmLmZpbGVzW3BhdGhdIGlzIG5vdCBOb25lCisKKyAgICBkZWYgaXNkaXIoc2Vs
ZiwgcGF0aCk6CisgICAgICAgIHJldHVybiBzZWxmLmV4aXN0cyhwYXRoKSBhbmQgbm90IHNlbGYu
aXNmaWxlKHBhdGgpCisKKyAgICBkZWYgam9pbihzZWxmLCAqY29tcHMpOgorICAgICAgICByZXR1
cm4gJy8nLmpvaW4oY29tcHMpLnJlcGxhY2UoJy8vJywgJy8nKQorCisgICAgZGVmIGxpc3RkaXIo
c2VsZiwgcGF0aCk6CisgICAgICAgIGlmIG5vdCBzZWxmLmlzZGlyKHBhdGgpOgorICAgICAgICAg
ICAgcmFpc2UgT1NFcnJvcigiJXMgaXMgbm90IGEgZGlyZWN0b3J5IiAlIHBhdGgpCisKKyAgICAg
ICAgaWYgbm90IHBhdGguZW5kc3dpdGgoJy8nKToKKyAgICAgICAgICAgIHBhdGggKz0gJy8nCisK
KyAgICAgICAgZGlycyA9IFtdCisgICAgICAgIGZpbGVzID0gW10KKyAgICAgICAgZm9yIGYgaW4g
c2VsZi5maWxlczoKKyAgICAgICAgICAgIGlmIHNlbGYuZXhpc3RzKGYpIGFuZCBmLnN0YXJ0c3dp
dGgocGF0aCk6CisgICAgICAgICAgICAgICAgcmVtYWluaW5nID0gZltsZW4ocGF0aCk6XQorICAg
ICAgICAgICAgICAgIGlmICcvJyBpbiByZW1haW5pbmc6CisgICAgICAgICAgICAgICAgICAgIGRp
ciA9IHJlbWFpbmluZ1s6cmVtYWluaW5nLmluZGV4KCcvJyldCisgICAgICAgICAgICAgICAgICAg
IGlmIG5vdCBkaXIgaW4gZGlyczoKKyAgICAgICAgICAgICAgICAgICAgICAgIGRpcnMuYXBwZW5k
KGRpcikKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBmaWxlcy5h
cHBlbmQocmVtYWluaW5nKQorICAgICAgICByZXR1cm4gZGlycyArIGZpbGVzCisKKyAgICBkZWYg
bWF5YmVfbWFrZV9kaXJlY3Rvcnkoc2VsZiwgKnBhdGgpOgorICAgICAgICAjIEZJWE1FOiBJbXBs
ZW1lbnQgc3VjaCB0aGF0IHN1YnNlcXVlbnQgY2FsbHMgdG8gaXNkaXIoKSB3b3JrPworICAgICAg
ICBwYXNzCisKKyAgICBkZWYgX21rdGVtcChzZWxmLCBzdWZmaXg9JycsIHByZWZpeD0ndG1wJywg
ZGlyPU5vbmUsICoqa3dhcmdzKToKKyAgICAgICAgaWYgZGlyIGlzIE5vbmU6CisgICAgICAgICAg
ICBkaXIgPSAnL19faW1fdG1wJworICAgICAgICBjdXJubyA9IHNlbGYuY3VycmVudF90bXBubwor
ICAgICAgICBzZWxmLmN1cnJlbnRfdG1wbm8gKz0gMQorICAgICAgICByZXR1cm4gc2VsZi5qb2lu
KGRpciwgIiVzXyV1XyVzIiAlIChwcmVmaXgsIGN1cm5vLCBzdWZmaXgpKQorCisgICAgZGVmIG1r
ZHRlbXAoc2VsZiwgKiprd2FyZ3MpOgorICAgICAgICBjbGFzcyBUZW1wb3JhcnlEaXJlY3Rvcnko
b2JqZWN0KToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmcywgKiprd2FyZ3MpOgor
ICAgICAgICAgICAgICAgIHNlbGYuX2t3YXJncyA9IGt3YXJncworICAgICAgICAgICAgICAgIHNl
bGYuX2ZpbGVzeXN0ZW0gPSBmcworICAgICAgICAgICAgICAgIHNlbGYuX2RpcmVjdG9yeV9wYXRo
ID0gZnMuX21rdGVtcCgqKmt3YXJncykKKyAgICAgICAgICAgICAgICBmcy5tYXliZV9tYWtlX2Rp
cmVjdG9yeShzZWxmLl9kaXJlY3RvcnlfcGF0aCkKKworICAgICAgICAgICAgZGVmIF9fc3RyX18o
c2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2RpcmVjdG9yeV9wYXRoCisKKyAg
ICAgICAgICAgIGRlZiBfX2VudGVyX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNl
bGYuX2RpcmVjdG9yeV9wYXRoCisKKyAgICAgICAgICAgIGRlZiBfX2V4aXRfXyhzZWxmLCB0eXBl
LCB2YWx1ZSwgdHJhY2ViYWNrKToKKyAgICAgICAgICAgICAgICAjIE9ubHkgc2VsZi1kZWxldGUg
aWYgbmVjZXNzYXJ5LgorCisgICAgICAgICAgICAgICAgIyBGSVhNRTogU2hvdWxkIHdlIGRlbGV0
ZSBub24tZW1wdHkgZGlyZWN0b3JpZXM/CisgICAgICAgICAgICAgICAgaWYgc2VsZi5fZmlsZXN5
c3RlbS5leGlzdHMoc2VsZi5fZGlyZWN0b3J5X3BhdGgpOgorICAgICAgICAgICAgICAgICAgICBz
ZWxmLl9maWxlc3lzdGVtLnJtZGlyKHNlbGYuX2RpcmVjdG9yeV9wYXRoKQorCisgICAgICAgIHJl
dHVybiBUZW1wb3JhcnlEaXJlY3RvcnkoZnM9c2VsZiwgKiprd2FyZ3MpCisKKyAgICBkZWYgbm9y
bXBhdGgoc2VsZiwgcGF0aCk6CisgICAgICAgIHJldHVybiBwYXRoCisKKyAgICBkZWYgb3Blbl90
ZXh0X2ZpbGVfZm9yX2FwcGVuZGluZyhzZWxmLCBwYXRoKToKKyAgICAgICAgcmV0dXJuIFdyaXRh
YmxlRmlsZU9iamVjdChzZWxmLCBwYXRoLCBhcHBlbmQ9VHJ1ZSkKKworICAgIGRlZiBvcGVuX3Rl
eHRfZmlsZV9mb3JfcmVhZGluZyhzZWxmLCBwYXRoKToKKyAgICAgICAgaWYgc2VsZi5maWxlc1tw
YXRoXSBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5fcmFpc2Vfbm90X2ZvdW5kKHBhdGgpCisg
ICAgICAgIHJldHVybiBuZXdzdHJpbmdpby5TdHJpbmdJTyhzZWxmLmZpbGVzW3BhdGhdKQorCisg
ICAgZGVmIF9yYWlzZV9ub3RfZm91bmQoc2VsZiwgcGF0aCk6CisgICAgICAgIHJhaXNlIElPRXJy
b3IoZXJybm8uRU5PRU5ULCBwYXRoLCBvcy5zdHJlcnJvcihlcnJuby5FTk9FTlQpKQorCisgICAg
ZGVmIG9wZW5fdGV4dF9maWxlX2Zvcl93cml0aW5nKHNlbGYsIHBhdGgpOgorICAgICAgICByZXR1
cm4gV3JpdGFibGVGaWxlT2JqZWN0KHNlbGYsIHBhdGgpCisKKyAgICBkZWYgcmVhZF9iaW5hcnlf
ZmlsZShzZWxmLCBwYXRoKToKKyAgICAgICAgaWYgcGF0aCBpbiBzZWxmLmZpbGVzOgorICAgICAg
ICAgICAgaWYgc2VsZi5maWxlc1twYXRoXSBpcyBOb25lOgorICAgICAgICAgICAgICAgIHNlbGYu
X3JhaXNlX25vdF9mb3VuZChwYXRoKQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZmlsZXNbcGF0
aF0KKworICAgIGRlZiByZWFkX3RleHRfZmlsZShzZWxmLCBwYXRoKToKKyAgICAgICAgcmV0dXJu
IHNlbGYucmVhZF9iaW5hcnlfZmlsZShwYXRoKQorCisgICAgZGVmIHJtdHJlZShzZWxmLCBwYXRo
KToKKyAgICAgICAgZm9yIGYgaW4gc2VsZi5maWxlczoKKyAgICAgICAgICAgIGlmIGYuc3RhcnRz
d2l0aChwYXRoKToKKyAgICAgICAgICAgICAgICBzZWxmLmZpbGVzW2ZdID0gTm9uZQorCisgICAg
ZGVmIHJlbW92ZShzZWxmLCBwYXRoKToKKyAgICAgICAgaWYgc2VsZi5maWxlc1twYXRoXSBpcyBO
b25lOgorICAgICAgICAgICAgc2VsZi5fcmFpc2Vfbm90X2ZvdW5kKHBhdGgpCisgICAgICAgIHNl
bGYuZmlsZXNbcGF0aF0gPSBOb25lCisKKyAgICBkZWYgc3BsaXQoc2VsZiwgcGF0aCk6CisgICAg
ICAgIGlkeCA9IHBhdGgucmZpbmQoJy8nKQorICAgICAgICByZXR1cm4gKHBhdGhbMDppZHhdLCBw
YXRoW2lkeCArIDE6XSkKKworICAgIGRlZiBzcGxpdGV4dChzZWxmLCBwYXRoKToKKyAgICAgICAg
aWR4ID0gcGF0aC5yZmluZCgnLicpCisgICAgICAgIGlmIGlkeCA9PSAtMToKKyAgICAgICAgICAg
IGlkeCA9IDAKKyAgICAgICAgcmV0dXJuIChwYXRoWzA6aWR4XSwgcGF0aFtpZHg6XSkKKworICAg
IGRlZiB3YWxrKHNlbGYsIHRvcCk6CisgICAgICAgICMgUmlwcGVkIGZyb20gUHl0aG9uIDIuNidz
IG9zLndhbGsuCisgICAgICAgICMgZXF1aXZhbGVudCB0byB3YWxrKHRvcCwgdG9wZG93bj1UcnVl
LCBmb2xsb3dsaW5rcz1GYWxzZSkuCisgICAgICAgIG5hbWVzID0gc2VsZi5saXN0ZGlyKHRvcCkK
KyAgICAgICAgZGlycywgbm9uZGlycyA9IFtdLCBbXQorICAgICAgICBmb3IgbmFtZSBpbiBuYW1l
czoKKyAgICAgICAgICAgIGlmIHNlbGYuaXNkaXIoc2VsZi5qb2luKHRvcCwgbmFtZSkpOgorICAg
ICAgICAgICAgICAgIGRpcnMuYXBwZW5kKG5hbWUpCisgICAgICAgICAgICBlbHNlOgorICAgICAg
ICAgICAgICAgIG5vbmRpcnMuYXBwZW5kKG5hbWUpCisKKyAgICAgICAgeWllbGQgdG9wLCBkaXJz
LCBub25kaXJzCisgICAgICAgIGZvciBuYW1lIGluIGRpcnM6CisgICAgICAgICAgICBwYXRoID0g
c2VsZi5qb2luKHRvcCwgbmFtZSkKKyAgICAgICAgICAgIGZvciB4IGluIHNlbGYud2FsayhwYXRo
KToKKyAgICAgICAgICAgICAgICB5aWVsZCB4CisKKyAgICBkZWYgd3JpdGVfYmluYXJ5X2ZpbGUo
c2VsZiwgcGF0aCwgY29udGVudHMpOgorICAgICAgICBzZWxmLmZpbGVzW3BhdGhdID0gY29udGVu
dHMKKyAgICAgICAgc2VsZi53cml0dGVuX2ZpbGVzW3BhdGhdID0gY29udGVudHMKKworICAgIGRl
ZiB3cml0ZV90ZXh0X2ZpbGUoc2VsZiwgcGF0aCwgY29udGVudHMpOgorICAgICAgICByZXR1cm4g
c2VsZi53cml0ZV9iaW5hcnlfZmlsZShwYXRoLCBjb250ZW50cykKKworCitjbGFzcyBXcml0YWJs
ZUZpbGVPYmplY3Qob2JqZWN0KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZnMsIHBhdGgsIGFw
cGVuZD1GYWxzZSk6CisgICAgICAgIHNlbGYuZnMgPSBmcworICAgICAgICBzZWxmLnBhdGggPSBw
YXRoCisgICAgICAgIGlmIHBhdGggbm90IGluIHNlbGYuZnMuZmlsZXMgb3Igbm90IGFwcGVuZDoK
KyAgICAgICAgICAgIHNlbGYuZnMuZmlsZXNbcGF0aF0gPSAiIgorCisgICAgZGVmIF9fZW50ZXJf
XyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBfX2V4aXRfXyhzZWxmLCB0
eXBlLCB2YWx1ZSwgdHJhY2ViYWNrKToKKyAgICAgICAgcGFzcworCisgICAgZGVmIGNsb3NlKHNl
bGYpOgorICAgICAgICBwYXNzCisKKyAgICBkZWYgd3JpdGUoc2VsZiwgc3RyKToKKyAgICAgICAg
c2VsZi5mcy5maWxlc1tzZWxmLnBhdGhdICs9IHN0cgorICAgICAgICBzZWxmLmZzLndyaXR0ZW5f
ZmlsZXNbc2VsZi5wYXRoXSA9IHNlbGYuZnMuZmlsZXNbc2VsZi5wYXRoXQpkaWZmIC0tZ2l0IGEv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2ZpbGVzeXN0ZW0ucHkg
Yi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3RlbS5w
eQppbmRleCBjN2VmZGUzYTQyNGNhNDI2OGUxNjBhZTNkNWEzMjYxOGM2NGZjMjNiLi44NGFhZGQy
M2M4ZjhmZGMyOTBmN2Y0OGM4MmYzYzVlOGJmYjllODU4IDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3RlbS5weQorKysgYi9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3RlbS5weQpAQCAt
MzIsNyArMzIsOSBAQCBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHdpdGhfc3RhdGVtZW50CiAKIGlt
cG9ydCBjb2RlY3MKIGltcG9ydCBlcnJubworaW1wb3J0IGdsb2IKIGltcG9ydCBvcworaW1wb3J0
IHNodXRpbAogaW1wb3J0IHRlbXBmaWxlCiAKIApAQCAtNDIsMTIgKzQ0LDM2IEBAIGNsYXNzIEZp
bGVTeXN0ZW0ob2JqZWN0KToKICAgICBVbmxlc3Mgb3RoZXJ3aXNlIG5vdGVkLCBhbGwgcGF0aHMg
YXJlIGFsbG93ZWQgdG8gYmUgZWl0aGVyIGFic29sdXRlCiAgICAgb3IgcmVsYXRpdmUuIiIiCiAK
KyAgICBkZWYgYWJzcGF0aChzZWxmLCBwYXRoKToKKyAgICAgICAgcmV0dXJuIG9zLnBhdGguYWJz
cGF0aChwYXRoKQorCisgICAgZGVmIGJhc2VuYW1lKHNlbGYsIHBhdGgpOgorICAgICAgICAiIiJX
cmFwcyBvcy5wYXRoLmJhc2VuYW1lKCkuIiIiCisgICAgICAgIHJldHVybiBvcy5wYXRoLmJhc2Vu
YW1lKHBhdGgpCisKKyAgICBkZWYgY29weWZpbGUoc2VsZiwgc291cmNlLCBkZXN0KToKKyAgICAg
ICAgcmV0dXJuIHNodXRpbC5jb3B5ZmlsZShzb3VyY2UsIGRlc3QpCisKKyAgICBkZWYgZGlybmFt
ZShzZWxmLCBwYXRoKToKKyAgICAgICAgcmV0dXJuIG9zLnBhdGguZGlybmFtZShwYXRoKQorCiAg
ICAgZGVmIGV4aXN0cyhzZWxmLCBwYXRoKToKICAgICAgICAgIiIiUmV0dXJuIHdoZXRoZXIgdGhl
IHBhdGggZXhpc3RzIGluIHRoZSBmaWxlc3lzdGVtLiIiIgogICAgICAgICByZXR1cm4gb3MucGF0
aC5leGlzdHMocGF0aCkKIAorICAgIGRlZiBnbG9iKHNlbGYsIHBhdGgpOgorICAgICAgICAiIiJX
cmFwcyBnbG9iLmdsb2IoKS4iIiIKKyAgICAgICAgcmV0dXJuIGdsb2IuZ2xvYihwYXRoKQorCisg
ICAgZGVmIGlzYWJzKHNlbGYsIHBhdGgpOgorICAgICAgICByZXR1cm4gb3MucGF0aC5pc2Ficyhw
YXRoKQorCisgICAgZGVmIGlzZmlsZShzZWxmLCBwYXRoKToKKyAgICAgICAgIiIiUmV0dXJuIFRy
dWUgaWYgdGhlIHBhdGggZXhpc3RzIGFuZCBwb2ludHMgdG8gYSBmaWxlLiIiIgorICAgICAgICBy
ZXR1cm4gb3MucGF0aC5pc2ZpbGUocGF0aCkKKwogICAgIGRlZiBpc2RpcihzZWxmLCBwYXRoKToK
LSAgICAgICAgIiIiUmV0dXJuIHdoZXRoZXIgdGhlIHBhdGggcmVmZXJzIHRvIGEgZGlyZWN0b3J5
LiIiIgorICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiB0aGUgcGF0aCBleGlzdHMgYW5kIHBvaW50
cyB0byBhIGRpcmVjdG9yeS4iIiIKICAgICAgICAgcmV0dXJuIG9zLnBhdGguaXNkaXIocGF0aCkK
IAogICAgIGRlZiBqb2luKHNlbGYsICpjb21wcyk6CkBAIC05Miw2ICsxMTgsMTIgQEAgY2xhc3Mg
RmlsZVN5c3RlbShvYmplY3QpOgogICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FRVhJ
U1Q6CiAgICAgICAgICAgICAgICAgcmFpc2UKIAorICAgIGRlZiBub3JtcGF0aChzZWxmLCBwYXRo
KToKKyAgICAgICAgcmV0dXJuIG9zLnBhdGgubm9ybXBhdGgocGF0aCkKKworICAgIGRlZiBvcGVu
X3RleHRfZmlsZV9mb3JfYXBwZW5kaW5nKHNlbGYsIHBhdGgpOgorICAgICAgICByZXR1cm4gY29k
ZWNzLm9wZW4ocGF0aCwgJ3dhJywgJ3V0ZjgnKQorCiAgICAgZGVmIHJlYWRfYmluYXJ5X2ZpbGUo
c2VsZiwgcGF0aCk6CiAgICAgICAgICIiIlJldHVybiB0aGUgY29udGVudHMgb2YgdGhlIGZpbGUg
YXQgdGhlIGdpdmVuIHBhdGggYXMgYSBieXRlIHN0cmluZy4iIiIKICAgICAgICAgd2l0aCBmaWxl
KHBhdGgsICdyYicpIGFzIGY6CkBAIC0xMDQsNiArMTM2LDI2IEBAIGNsYXNzIEZpbGVTeXN0ZW0o
b2JqZWN0KToKICAgICAgICAgd2l0aCBjb2RlY3Mub3BlbihwYXRoLCAncicsICd1dGY4JykgYXMg
ZjoKICAgICAgICAgICAgIHJldHVybiBmLnJlYWQoKQogCisgICAgZGVmIHJlbW92ZShzZWxmLCBw
YXRoKToKKyAgICAgICAgIiIiRGVsZXRlIHRoZSBmaWxlIHBvaW50ZWQgdG8gYnkgcGF0aC4iIiIK
KyAgICAgICAgb3MucmVtb3ZlKHBhdGgpCisKKyAgICBkZWYgcm10cmVlKHNlbGYsIHBhdGgpOgor
ICAgICAgICAiIiJEZWxldGUgdGhlIGRpcmVjdG9yeSByb290ZWQgYXQgcGF0aCwgZW1wdHkgb3Ig
bm8uIiIiCisgICAgICAgIHNodXRpbC5ybXRyZWUocGF0aCwgaWdub3JlX2Vycm9ycz1UcnVlKQor
CisgICAgZGVmIHNwbGl0KHNlbGYsIHBhdGgpOgorICAgICAgICAiIiJSZXR1cm4gKGRpcm5hbWUs
IGJhc2VuYW1lICsgZXh0KS4iIiIKKyAgICAgICAgcmV0dXJuIG9zLnBhdGguc3BsaXQocGF0aCkK
KworICAgIGRlZiBzcGxpdGV4dChzZWxmLCBwYXRoKToKKyAgICAgICAgIiIiUmV0dXJuIChkaXJu
YW1lICsgb3Muc2VwICsgYmFzZW5hbWUsICcuJyArIGV4dCkiIiIKKyAgICAgICAgcmV0dXJuIG9z
LnBhdGguc3BsaXRleHQocGF0aCkKKworICAgIGRlZiB3YWxrKHNlbGYsIHBhdGgpOgorICAgICAg
ICAiIiJXcmFwcGVyIGFyb3VuZCBvcy53YWxrKCkuIiIiCisgICAgICAgIHJldHVybiBvcy53YWxr
KHBhdGgpCisKICAgICBkZWYgd3JpdGVfYmluYXJ5X2ZpbGUoc2VsZiwgcGF0aCwgY29udGVudHMp
OgogICAgICAgICAiIiJXcml0ZSB0aGUgY29udGVudHMgdG8gdGhlIGZpbGUgYXQgdGhlIGdpdmVu
IGxvY2F0aW9uLiIiIgogICAgICAgICB3aXRoIGZpbGUocGF0aCwgJ3diJykgYXMgZjoKZGlmZiAt
LWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9maWxlc3lz
dGVtX21vY2sucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0v
ZmlsZXN5c3RlbV9tb2NrLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMmNkZTRm
NTJlYmIzZTM2NDlkOTkyZTYyZTc5ODYxMDAxODkxYTExLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29t
bW9uL3N5c3RlbS9maWxlc3lzdGVtX21vY2sucHkKKysrIC9kZXYvbnVsbApAQCAtMSw3NSArMCww
IEBACi0jIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotIyAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlv
bi4KLSMgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMg
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0j
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLQotaW1wb3J0IGVycm5vCi1pbXBvcnQgb3MKLWltcG9ydCBwYXRo
Ci0KLQotY2xhc3MgTW9ja0ZpbGVTeXN0ZW0ob2JqZWN0KToKLSAgICBkZWYgX19pbml0X18oc2Vs
ZiwgZmlsZXM9e30pOgotICAgICAgICAiIiJJbml0aWFsaXplcyBhICJtb2NrIiBmaWxlc3lzdGVt
IHRoYXQgY2FuIGJlIHVzZWQgdG8gY29tcGxldGVseQotICAgICAgICBzdHViIG91dCBhIGZpbGVz
eXN0ZW0uCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICAgIGZpbGVzOiBhIGRpY3Qgb2YgZmls
ZW5hbWVzIC0+IGZpbGUgY29udGVudHMuIEEgZmlsZSBjb250ZW50cwotICAgICAgICAgICAgICAg
IHZhbHVlIG9mIE5vbmUgaXMgdXNlZCB0byBpbmRpY2F0ZSB0aGF0IHRoZSBmaWxlIHNob3VsZAot
ICAgICAgICAgICAgICAgIG5vdCBleGlzdCAoZXZlbiBpZiBzdGFuZGFsb25lIGlzIEZhbHNlKS4K
LSAgICAgICAgICAgIHN0YW5kYWxvbmU6IElmIFRydWUsIG9ubHkgdGhlIGZpbGVzIGxpc3RlZCBp
biBfZmlsZXNfIGV4aXN0LgotICAgICAgICAgICAgICAgIElmIEZhbHNlLCB0aGUgb2JqZWN0IHdp
bGwgcGFzcyB0aHJvdWdoIHJlYWQgY2FsbHMgdG8gdGhlCi0gICAgICAgICAgICAgICAgdW5kZXJs
eWluZyBmaWxlc3lzdGVtLiBXcml0ZXMgYXJlIG5ldmVyIHBhc3NlZCB0aHJvdWdoLgotCi0gICAg
ICAgICIiIgotICAgICAgICBzZWxmLmZpbGVzID0gZmlsZXMKLQotICAgIGRlZiBleGlzdHMoc2Vs
ZiwgcGF0aCk6Ci0gICAgICAgIGlmIHBhdGggaW4gc2VsZi5maWxlczoKLSAgICAgICAgICAgIHJl
dHVybiBzZWxmLmZpbGVzW3BhdGhdIGlzIG5vdCBOb25lCi0gICAgICAgIHJldHVybiBGYWxzZQot
Ci0gICAgZGVmIGpvaW4oc2VsZiwgKmNvbXBzKToKLSAgICAgICAgcmV0dXJuICcvJy5qb2luKGNv
bXBzKQotCi0gICAgZGVmIG1heWJlX21ha2VfZGlyZWN0b3J5KHNlbGYsICpwYXRoKToKLSAgICAg
ICAgIyBGSVhNRTogSW1wbGVtZW50IHN1Y2ggdGhhdCBzdWJzZXF1ZW50IGNhbGxzIHRvIGlzZGly
KCkgd29yaz8KLSAgICAgICAgcGFzcwotCi0gICAgZGVmIHJlYWRfdGV4dF9maWxlKHNlbGYsIHBh
dGgpOgotICAgICAgICByZXR1cm4gc2VsZi5yZWFkX2JpbmFyeV9maWxlKHBhdGgpCi0KLSAgICBk
ZWYgcmVhZF9iaW5hcnlfZmlsZShzZWxmLCBwYXRoKToKLSAgICAgICAgaWYgcGF0aCBpbiBzZWxm
LmZpbGVzOgotICAgICAgICAgICAgaWYgc2VsZi5maWxlc1twYXRoXSBpcyBOb25lOgotICAgICAg
ICAgICAgICAgIHJhaXNlIElPRXJyb3IoZXJybm8uRU5PRU5ULCBwYXRoLCBvcy5zdHJlcnJvcihl
cnJuby5FTk9FTlQpKQotICAgICAgICAgICAgcmV0dXJuIHNlbGYuZmlsZXNbcGF0aF0KLQotICAg
IGRlZiB3cml0ZV90ZXh0X2ZpbGUoc2VsZiwgcGF0aCwgY29udGVudHMpOgotICAgICAgICByZXR1
cm4gc2VsZi53cml0ZV9iaW5hcnlfZmlsZShwYXRoLCBjb250ZW50cykKLQotICAgIGRlZiB3cml0
ZV9iaW5hcnlfZmlsZShzZWxmLCBwYXRoLCBjb250ZW50cyk6Ci0gICAgICAgIHNlbGYuZmlsZXNb
cGF0aF0gPSBjb250ZW50cwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvZHVtcF9yZW5kZXJfdHJlZV90aHJlYWQucHkg
Yi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2Fn
ZS9kdW1wX3JlbmRlcl90cmVlX3RocmVhZC5weQppbmRleCA5ZjJkZTdlNDc2YjdiNWMwYjdmMTFl
ZGM0NmU4ODI1NDc0ZjNmODVmLi40OGUwNzVjY2UwYjlhMTU5NGVmNTAxZGEzNTQyZGY3YTJkYzcz
NjEyIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9sYXlvdXRfcGFja2FnZS9kdW1wX3JlbmRlcl90cmVlX3RocmVhZC5weQorKysgYi9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9kdW1wX3Jl
bmRlcl90cmVlX3RocmVhZC5weQpAQCAtMzYsMTIgKzM2LDggQEAgdGhlIG91dHB1dC4gIFdoZW4g
dGhlcmUgYXJlIG5vIG1vcmUgVVJMcyB0byBwcm9jZXNzIGluIHRoZSBzaGFyZWQgcXVldWUsIHRo
ZQogdGhyZWFkIGV4aXRzLgogIiIiCiAKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgd2l0aF9zdGF0
ZW1lbnQKLQotaW1wb3J0IGNvZGVjcwogaW1wb3J0IGNvcHkKIGltcG9ydCBsb2dnaW5nCi1pbXBv
cnQgb3MKIGltcG9ydCBRdWV1ZQogaW1wb3J0IHNpZ25hbAogaW1wb3J0IHN5cwpAQCAtMTA3LDEz
ICsxMDMsMTMgQEAgZGVmIF9wcm9jZXNzX291dHB1dChwb3J0LCBvcHRpb25zLCB0ZXN0X2luZm8s
IHRlc3RfdHlwZXMsIHRlc3RfYXJncywKICAgICAgICAgX2xvZy5kZWJ1ZygiU3RhY2t0cmFjZSBm
b3IgJXM6XG4lcyIgJSAodGVzdF9pbmZvLmZpbGVuYW1lLCBlcnJvcikpCiAgICAgICAgICMgU3Ry
aXAgb2ZmICJmaWxlOi8vIiBzaW5jZSBSZWxhdGl2ZVRlc3RGaWxlbmFtZSBleHBlY3RzCiAgICAg
ICAgICMgZmlsZXN5c3RlbSBwYXRocy4KLSAgICAgICAgZmlsZW5hbWUgPSBvcy5wYXRoLmpvaW4o
b3B0aW9ucy5yZXN1bHRzX2RpcmVjdG9yeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcG9ydC5yZWxhdGl2ZV90ZXN0X2ZpbGVuYW1lKAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0ZXN0X2luZm8uZmlsZW5hbWUpKQotICAgICAgICBmaWxlbmFtZSA9IG9zLnBhdGgu
c3BsaXRleHQoZmlsZW5hbWUpWzBdICsgIi1zdGFjay50eHQiCi0gICAgICAgIHBvcnQubWF5YmVf
bWFrZV9kaXJlY3Rvcnkob3MucGF0aC5zcGxpdChmaWxlbmFtZSlbMF0pCi0gICAgICAgIHdpdGgg
Y29kZWNzLm9wZW4oZmlsZW5hbWUsICJ3YiIsICJ1dGYtOCIpIGFzIGZpbGU6Ci0gICAgICAgICAg
ICBmaWxlLndyaXRlKGVycm9yKQorICAgICAgICBmcyA9IHBvcnQuX2ZpbGVzeXN0ZW0KKyAgICAg
ICAgZmlsZW5hbWUgPSBmcy5qb2luKG9wdGlvbnMucmVzdWx0c19kaXJlY3RvcnksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwb3J0LnJlbGF0aXZlX3Rlc3RfZmlsZW5hbWUoCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0ZXN0X2luZm8uZmlsZW5hbWUpKQorICAgICAgICBmaWxlbmFt
ZSA9IGZzLnNwbGl0ZXh0KGZpbGVuYW1lKVswXSArICItc3RhY2sudHh0IgorICAgICAgICBmcy5t
YXliZV9tYWtlX2RpcmVjdG9yeShmcy5zcGxpdChmaWxlbmFtZSlbMF0pCisgICAgICAgIGZzLndy
aXRlX3RleHRfZmlsZShmaWxlbmFtZSwgZXJyb3IpCiAgICAgZWxpZiBlcnJvcjoKICAgICAgICAg
X2xvZy5kZWJ1ZygiUHJldmlvdXMgdGVzdCBvdXRwdXQgc3RkZXJyIGxpbmVzOlxuJXMiICUgZXJy
b3IpCiAKQEAgLTM2OSw5ICszNjUsMTMgQEAgY2xhc3MgVGVzdFNoZWxsVGhyZWFkKFdhdGNoYWJs
ZVRocmVhZCk6CiAKICAgICAgICAgIyBBcHBlbmQgdGVzdHMgd2UncmUgcnVubmluZyB0byB0aGUg
ZXhpc3RpbmcgdGVzdHNfcnVuLnR4dCBmaWxlLgogICAgICAgICAjIFRoaXMgaXMgY3JlYXRlZCBp
biBydW5fd2Via2l0X3Rlc3RzLnB5Ol9QcmVwYXJlTGlzdHNBbmRQcmludE91dHB1dC4KLSAgICAg
ICAgdGVzdHNfcnVuX2ZpbGVuYW1lID0gb3MucGF0aC5qb2luKHNlbGYuX29wdGlvbnMucmVzdWx0
c19kaXJlY3RvcnksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
dGVzdHNfcnVuLnR4dCIpCi0gICAgICAgIHRlc3RzX3J1bl9maWxlID0gY29kZWNzLm9wZW4odGVz
dHNfcnVuX2ZpbGVuYW1lLCAiYSIsICJ1dGYtOCIpCisgICAgICAgIGZzID0gc2VsZi5fcG9ydC5f
ZmlsZXN5c3RlbQorICAgICAgICB0ZXN0c19ydW5fZmlsZW5hbWUgPSBmcy5qb2luKHNlbGYuX29w
dGlvbnMucmVzdWx0c19kaXJlY3RvcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgInRlc3RzX3J1bi50eHQiKQorICAgICAgICB0ZXN0c19ydW5fZmlsZSA9IGZzLm9wZW5f
dGV4dF9maWxlX2Zvcl9hcHBlbmRpbmcodGVzdHNfcnVuX2ZpbGVuYW1lKQorCisgICAgICAgICMg
RklYTUU6IGltcGxlbWVudCBvcGVuKCkgaW4gc3lzdGVtLmZpbGVzeXN0ZW0gc28gdGhhdCB3ZSBj
YW4KKyAgICAgICAgIyB3cml0ZSgpIHJlcGVhdGVkbHkgdG8gZmlsZXMuCiAKICAgICAgICAgd2hp
bGUgVHJ1ZToKICAgICAgICAgICAgIGlmIHNlbGYuX2NhbmNlbGVkOgpkaWZmIC0tZ2l0IGEvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvcHJp
bnRpbmdfdW5pdHRlc3QucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9sYXlvdXRfcGFja2FnZS9wcmludGluZ191bml0dGVzdC5weQppbmRleCA5YTBmNGVlYTIw
OGQyMWNmODhlZjhkNWVlYWYxNDgzYTUxMTYxOGUzLi45ZWEzNzlmMGJlM2U1MmNlOTgzYjU4NWRm
NjBlMDQ3YjYwYmY3ZDY4IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9wcmludGluZ191bml0dGVzdC5weQorKysgYi9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9w
cmludGluZ191bml0dGVzdC5weQpAQCAtMTYwLDcgKzE2MCw3IEBAIGNsYXNzICBUZXN0cHJpbnRl
cih1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICMgSGVyZSBhbmQgYmVsb3cgd2UnbGwgY2Fs
bCB0aGUgInJlZ3VsYXIiIHByaW50ZXIgZXJyIGFuZCB0aGUKICAgICAgICAgIyBidWlsZGJvdCBw
cmludGVyIG91dDsgdGhpcyBjb3JyZXNwb25kcyB0byBob3cgdGhpbmdzIHJ1biBvbiB0aGUKICAg
ICAgICAgIyBib3RzIHdpdGggc3RkZXJyIGFuZCBzdGRvdXQuCi0gICAgICAgIHByaW50ZXIsIGVy
ciwgb3V0ID0gc2VsZi5nZXRfcHJpbnRlcigpCisgICAgICAgIHByaW50ZXIsIGVyciwgb3V0ID0g
c2VsZi5nZXRfcHJpbnRlcihbXSkKIAogICAgICAgICAjIFRoaXMgcm91dGluZSBzaG91bGQgcHJp
bnQgc29tZXRoaW5nIHRvIHN0ZG91dC4gdGVzdGluZyB3aGF0IGl0IGlzCiAgICAgICAgICMgaXMg
a2luZCBvZiBwb2ludGxlc3MuCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2V4cGVjdGF0aW9ucy5weSBiL1dl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rl
c3RfZXhwZWN0YXRpb25zLnB5CmluZGV4IDY3ODczYThjYzBhYjMxNzljN2RlMzVkNWM5ODE2Y2Uz
NDBkMzRjYjkuLjNiZGJkMDg0NjZjYTFkNjQzYWIwN2QwMWJkMmUzMDE0M2Q2YTYzOTIgMTAwNjQ0
Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9w
YWNrYWdlL3Rlc3RfZXhwZWN0YXRpb25zLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZXhwZWN0YXRpb25zLnB5CkBA
IC02NzUsOSArNjc1LDkgQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9uc0ZpbGU6CiAgICAgICAgICAg
ICAgICAgICAgICdpbmRlZmluaXRlbHksIHRoZW4gaXQgc2hvdWxkIGJlIGp1c3QgdGltZW91dC4n
LAogICAgICAgICAgICAgICAgICAgICB0ZXN0X2xpc3RfcGF0aCkKIAotICAgICAgICAgICAgZnVs
bF9wYXRoID0gb3MucGF0aC5qb2luKHNlbGYuX3BvcnQubGF5b3V0X3Rlc3RzX2RpcigpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfbGlzdF9wYXRoKQotICAgICAg
ICAgICAgZnVsbF9wYXRoID0gb3MucGF0aC5ub3JtcGF0aChmdWxsX3BhdGgpCisgICAgICAgICAg
ICBmdWxsX3BhdGggPSBzZWxmLl9wb3J0Ll9maWxlc3lzdGVtLmpvaW4oc2VsZi5fcG9ydC5sYXlv
dXRfdGVzdHNfZGlyKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdGVzdF9saXN0X3BhdGgpCisgICAgICAgICAgICBmdWxsX3BhdGggPSBzZWxm
Ll9wb3J0Ll9maWxlc3lzdGVtLm5vcm1wYXRoKGZ1bGxfcGF0aCkKICAgICAgICAgICAgICMgV2Vi
S2l0J3Mgd2F5IG9mIHNraXBwaW5nIHRlc3RzIGlzIHRvIGFkZCBhIC1kaXNhYmxlZCBzdWZmaXgu
CiAgICAgICAgICAgICAjIFNvIHdlIHNob3VsZCBjb25zaWRlciB0aGUgcGF0aCBleGlzdGluZyBp
ZiB0aGUgcGF0aCBvciB0aGUKICAgICAgICAgICAgICMgLWRpc2FibGVkIHZlcnNpb24gZXhpc3Rz
LgpAQCAtNzE1LDEwICs3MTUsMTAgQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9uc0ZpbGU6CiAgICAg
ZGVmIF9leHBhbmRfdGVzdHMoc2VsZiwgdGVzdF9saXN0X3BhdGgpOgogICAgICAgICAiIiJDb252
ZXJ0IHRoZSB0ZXN0IHNwZWNpZmljYXRpb24gdG8gYW4gYWJzb2x1dGUsIG5vcm1hbGl6ZWQKICAg
ICAgICAgcGF0aCBhbmQgbWFrZSBzdXJlIGRpcmVjdG9yaWVzIGVuZCB3aXRoIHRoZSBPUyBwYXRo
IHNlcGFyYXRvci4iIiIKLSAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihzZWxmLl9wb3J0Lmxh
eW91dF90ZXN0c19kaXIoKSwgdGVzdF9saXN0X3BhdGgpCi0gICAgICAgIHBhdGggPSBvcy5wYXRo
Lm5vcm1wYXRoKHBhdGgpCisgICAgICAgIHBhdGggPSBzZWxmLl9wb3J0Ll9maWxlc3lzdGVtLmpv
aW4oc2VsZi5fcG9ydC5sYXlvdXRfdGVzdHNfZGlyKCksIHRlc3RfbGlzdF9wYXRoKQorICAgICAg
ICBwYXRoID0gc2VsZi5fcG9ydC5fZmlsZXN5c3RlbS5ub3JtcGF0aChwYXRoKQogICAgICAgICBp
ZiBzZWxmLl9wb3J0LnBhdGhfaXNkaXIocGF0aCk6Ci0gICAgICAgICAgICBwYXRoID0gb3MucGF0
aC5qb2luKHBhdGgsICcnKQorICAgICAgICAgICAgcGF0aCA9IHNlbGYuX3BvcnQuX2ZpbGVzeXN0
ZW0uam9pbihwYXRoLCAnJykKIAogICAgICAgICByZXN1bHQgPSBbXQogICAgICAgICBmb3IgdGVz
dCBpbiBzZWxmLl9mdWxsX3Rlc3RfbGlzdDoKQEAgLTc5Miw3ICs3OTIsNyBAQCBjbGFzcyBUZXN0
RXhwZWN0YXRpb25zRmlsZToKICAgICAgICAgICAgIHNlbGYuX3JlbW92ZV9mcm9tX3NldHModGVz
dCwgc2VsZi5fdGltZWxpbmVfdG9fdGVzdHMpCiAgICAgICAgICAgICBzZWxmLl9yZW1vdmVfZnJv
bV9zZXRzKHRlc3QsIHNlbGYuX3Jlc3VsdF90eXBlX3RvX3Rlc3RzKQogCi0gICAgICAgIHNlbGYu
X3Rlc3RfbGlzdF9wYXRoc1t0ZXN0XSA9IG9zLnBhdGgubm9ybXBhdGgodGVzdF9saXN0X3BhdGgp
CisgICAgICAgIHNlbGYuX3Rlc3RfbGlzdF9wYXRoc1t0ZXN0XSA9IHNlbGYuX3BvcnQuX2ZpbGVz
eXN0ZW0ubm9ybXBhdGgodGVzdF9saXN0X3BhdGgpCiAKICAgICBkZWYgX3JlbW92ZV9mcm9tX3Nl
dHMoc2VsZiwgdGVzdCwgZGljdCk6CiAgICAgICAgICIiIlJlbW92ZXMgdGhlIGdpdmVuIHRlc3Qg
ZnJvbSB0aGUgc2V0cyBpbiB0aGUgZGljdGlvbmFyeS4KQEAgLTgxMyw3ICs4MTMsNyBAQCBjbGFz
cyBUZXN0RXhwZWN0YXRpb25zRmlsZToKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogCiAgICAg
ICAgIHByZXZfYmFzZV9wYXRoID0gc2VsZi5fdGVzdF9saXN0X3BhdGhzW3Rlc3RdCi0gICAgICAg
IGlmIChwcmV2X2Jhc2VfcGF0aCA9PSBvcy5wYXRoLm5vcm1wYXRoKHRlc3RfbGlzdF9wYXRoKSk6
CisgICAgICAgIGlmIChwcmV2X2Jhc2VfcGF0aCA9PSBzZWxmLl9wb3J0Ll9maWxlc3lzdGVtLm5v
cm1wYXRoKHRlc3RfbGlzdF9wYXRoKSk6CiAgICAgICAgICAgICBpZiAobm90IGFsbG93X292ZXJy
aWRlcyBvciB0ZXN0IGluIHNlbGYuX292ZXJyaWRkaW5nX3Rlc3RzKToKICAgICAgICAgICAgICAg
ICBpZiBhbGxvd19vdmVycmlkZXM6CiAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGF0aW9uX3Nv
dXJjZSA9ICJvdmVycmlkZSIKQEAgLTgyOSw3ICs4MjksNyBAQCBjbGFzcyBUZXN0RXhwZWN0YXRp
b25zRmlsZToKICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKIAogICAgICAgICAjIENoZWNr
IGlmIHdlJ3ZlIGFscmVhZHkgc2VlbiBhIG1vcmUgcHJlY2lzZSBwYXRoLgotICAgICAgICByZXR1
cm4gcHJldl9iYXNlX3BhdGguc3RhcnRzd2l0aChvcy5wYXRoLm5vcm1wYXRoKHRlc3RfbGlzdF9w
YXRoKSkKKyAgICAgICAgcmV0dXJuIHByZXZfYmFzZV9wYXRoLnN0YXJ0c3dpdGgoc2VsZi5fcG9y
dC5fZmlsZXN5c3RlbS5ub3JtcGF0aCh0ZXN0X2xpc3RfcGF0aCkpCiAKICAgICBkZWYgX2FkZF9l
cnJvcihzZWxmLCBsaW5lbm8sIG1zZywgcGF0aCk6CiAgICAgICAgICIiIlJlcG9ydHMgYW4gZXJy
b3IgdGhhdCB3aWxsIHByZXZlbnQgcnVubmluZyB0aGUgdGVzdHMuIERvZXMgbm90CmRpZmYgLS1n
aXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFj
a2FnZS90ZXN0X2V4cGVjdGF0aW9uc191bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZXhwZWN0YXRpb25zX3Vu
aXR0ZXN0LnB5CmluZGV4IDU1ZWFmOTk0YjhkMjU3YzQ4Yjk5NGMzMDA5NmRiMTA3MmUyNmM5MGQu
LjYwNTJlZTg5M2ZlYTU1YWZiOTk0ZGU3ZDQ0NjJhNDYxN2UzZDU4Y2YgMTAwNjQ0Ci0tLSBhL1dl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rl
c3RfZXhwZWN0YXRpb25zX3VuaXR0ZXN0LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZXhwZWN0YXRpb25zX3VuaXR0
ZXN0LnB5CkBAIC0yOSw3ICsyOSw2IEBACiAKICIiIlVuaXQgdGVzdHMgZm9yIHRlc3RfZXhwZWN0
YXRpb25zLnB5LiIiIgogCi1pbXBvcnQgb3MKIGltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAog
CkBAIC04Niw3ICs4NSw3IEBAIGNsYXNzIEJhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAg
ICB1bml0dGVzdC5UZXN0Q2FzZS5fX2luaXRfXyhzZWxmLCB0ZXN0RnVuYykKIAogICAgIGRlZiBn
ZXRfdGVzdChzZWxmLCB0ZXN0X25hbWUpOgotICAgICAgICByZXR1cm4gb3MucGF0aC5qb2luKHNl
bGYuX3BvcnQubGF5b3V0X3Rlc3RzX2RpcigpLCB0ZXN0X25hbWUpCisgICAgICAgIHJldHVybiBz
ZWxmLl9wb3J0Ll9maWxlc3lzdGVtLmpvaW4oc2VsZi5fcG9ydC5sYXlvdXRfdGVzdHNfZGlyKCks
IHRlc3RfbmFtZSkKIAogICAgIGRlZiBnZXRfYmFzaWNfdGVzdHMoc2VsZik6CiAgICAgICAgIHJl
dHVybiBbc2VsZi5nZXRfdGVzdCgnZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sJyksCmRpZmYg
LS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jh
c2UucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jh
c2UucHkKaW5kZXggNGEyOTcwZTMyMDNjNjAwZjVlMjg5ZjhlODNkZDhhYTQyOTAwYTFiNC4uMGY3
MDNjYWJhMzZlNDJhNjA4MmRjZDEwZDRmY2FlOWU0MTEwZjdkYSAxMDA2NDQKLS0tIGEvV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5CisrKyBiL1dl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQpAQCAt
MjU1LDcgKzI1NSw3IEBAIGNsYXNzIFBvcnQob2JqZWN0KToKICAgICAgICAgY29uanVuY3Rpb24g
d2l0aCB0aGUgb3RoZXIgYmFzZWxpbmUgYW5kIGZpbGVuYW1lIHJvdXRpbmVzIHRoYXQgYXJlCiAg
ICAgICAgIHBsYXRmb3JtIHNwZWNpZmljLgogICAgICAgICAiIiIKLSAgICAgICAgdGVzdG5hbWUg
PSBvcy5wYXRoLnNwbGl0ZXh0KHNlbGYucmVsYXRpdmVfdGVzdF9maWxlbmFtZShmaWxlbmFtZSkp
WzBdCisgICAgICAgIHRlc3RuYW1lID0gc2VsZi5fZmlsZXN5c3RlbS5zcGxpdGV4dChzZWxmLnJl
bGF0aXZlX3Rlc3RfZmlsZW5hbWUoZmlsZW5hbWUpKVswXQogCiAgICAgICAgIGJhc2VsaW5lX2Zp
bGVuYW1lID0gdGVzdG5hbWUgKyAnLWV4cGVjdGVkJyArIHN1ZmZpeAogCkBAIC0zNTksNyArMzU5
LDcgQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAgICAgICAgICAgICAgIHByb3RvY29sID0gImh0
dHAiCiAgICAgICAgICAgICByZXR1cm4gIiVzOi8vMTI3LjAuMC4xOiV1LyVzIiAlIChwcm90b2Nv
bCwgcG9ydCwgcmVsYXRpdmVfcGF0aCkKIAotICAgICAgICByZXR1cm4gcGF0aC5hYnNwYXRoX3Rv
X3VyaShvcy5wYXRoLmFic3BhdGgoZmlsZW5hbWUpKQorICAgICAgICByZXR1cm4gcGF0aC5hYnNw
YXRoX3RvX3VyaShzZWxmLl9maWxlc3lzdGVtLmFic3BhdGgoZmlsZW5hbWUpKQogCiAgICAgZGVm
IHRlc3RzKHNlbGYsIHBhdGhzKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSBsaXN0IG9mIHRlc3Rz
IGZvdW5kIChyZWxhdGl2ZSB0byBsYXlvdXRfdGVzdHNfZGlyKCkuIiIiCkBAIC02OTYsNyArNjk2
LDcgQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAgIGRlZiBwcmV0dHlfcGF0Y2hfdGV4dChzZWxm
LCBkaWZmX3BhdGgpOgogICAgICAgICBpZiBub3Qgc2VsZi5fcHJldHR5X3BhdGNoX2F2YWlsYWJs
ZToKICAgICAgICAgICAgIHJldHVybiBzZWxmLl9wcmV0dHlfcGF0Y2hfZXJyb3JfaHRtbAotICAg
ICAgICBjb21tYW5kID0gKCJydWJ5IiwgIi1JIiwgb3MucGF0aC5kaXJuYW1lKHNlbGYuX3ByZXR0
eV9wYXRjaF9wYXRoKSwKKyAgICAgICAgY29tbWFuZCA9ICgicnVieSIsICItSSIsIHNlbGYuX2Zp
bGVzeXN0ZW0uZGlybmFtZShzZWxmLl9wcmV0dHlfcGF0Y2hfcGF0aCksCiAgICAgICAgICAgICAg
ICAgICAgc2VsZi5fcHJldHR5X3BhdGNoX3BhdGgsIGRpZmZfcGF0aCkKICAgICAgICAgdHJ5Ogog
ICAgICAgICAgICAgIyBEaWZmcyBhcmUgdHJlYXRlZCBhcyBiaW5hcnkgKHdlIHBhc3MgZGVjb2Rl
X291dHB1dD1GYWxzZSkgYXMgdGhleQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jb25maWdfc3RhbmRhbG9uZS5weSBiL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY29uZmlnX3N0YW5kYWxvbmUu
cHkKaW5kZXggM2RlYzNiOTFjNDU2MmJlY2E5MWJhNTBlN2M3MjE1YjViNDJkZGNhZi4uNzA5Mjdh
ZjdmMTUyNWM0ZmZkZjRiMzE2OTQ5ZjgxZWY0MTc1OTg1YiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jb25maWdfc3RhbmRhbG9uZS5w
eQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nv
bmZpZ19zdGFuZGFsb25lLnB5CkBAIC00NCwxMCArNDQsMTAgQEAgc2NyaXB0X2RpciA9IHVwKHVw
KHVwKHRoaXNfZGlyKSkpCiBpZiBzY3JpcHRfZGlyIG5vdCBpbiBzeXMucGF0aDoKICAgICBzeXMu
cGF0aC5hcHBlbmQoc2NyaXB0X2RpcikKIAorZnJvbSB3ZWJraXRweS5jb21tb24gaW1wb3J0IGlu
X21lbW9yeV9maWxlc3lzdGVtCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0IGV4
ZWN1dGl2ZQogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtIGltcG9ydCBleGVjdXRpdmVfbW9j
awogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtIGltcG9ydCBmaWxlc3lzdGVtCi1mcm9tIHdl
YmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0IGZpbGVzeXN0ZW1fbW9jawogCiBpbXBvcnQgY29u
ZmlnCiAKQEAgLTU4LDcgKzU4LDcgQEAgZGVmIG1haW4oYXJndj1Ob25lKToKIAogICAgIGlmIGxl
bihhcmd2KSA9PSAzIGFuZCBhcmd2WzFdID09ICctLW1vY2snOgogICAgICAgICBlID0gZXhlY3V0
aXZlX21vY2suTW9ja0V4ZWN1dGl2ZTIob3V0cHV0PSdmb28nKQotICAgICAgICBmcyA9IGZpbGVz
eXN0ZW1fbW9jay5Nb2NrRmlsZVN5c3RlbSh7J2Zvby9Db25maWd1cmF0aW9uJzogYXJndlsyXX0p
CisgICAgICAgIGZzID0gaW5fbWVtb3J5X2ZpbGVzeXN0ZW0uSW5NZW1vcnlGaWxlU3lzdGVtKHsn
Zm9vL0NvbmZpZ3VyYXRpb24nOiBhcmd2WzJdfSkKICAgICBlbHNlOgogICAgICAgICBlID0gZXhl
Y3V0aXZlLkV4ZWN1dGl2ZSgpCiAgICAgICAgIGZzID0gZmlsZXN5c3RlbS5GaWxlU3lzdGVtKCkK
ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvY29uZmlnX3VuaXR0ZXN0LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9jb25maWdfdW5pdHRlc3QucHkKaW5kZXggOWJlYTAxNDQyMDA3MDY5OGVm
YTY4MDVjNzQxZDIzZDBkYWFhM2NmNC4uZGIwOWI2NzgwZDZhMzczOTFiN2NjM2ZlNTZhMzk1NDY0
YTE2NWMxZSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9jb25maWdfdW5pdHRlc3QucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jb25maWdfdW5pdHRlc3QucHkKQEAgLTMwLDEwICsz
MCwxMCBAQCBpbXBvcnQgb3MKIGltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAogCitmcm9tIHdl
YmtpdHB5LmNvbW1vbiBpbXBvcnQgaW5fbWVtb3J5X2ZpbGVzeXN0ZW0KIGZyb20gd2Via2l0cHku
Y29tbW9uLnN5c3RlbSBpbXBvcnQgZXhlY3V0aXZlCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0
ZW0gaW1wb3J0IGV4ZWN1dGl2ZV9tb2NrCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1w
b3J0IGZpbGVzeXN0ZW0KLWZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQgZmlsZXN5
c3RlbV9tb2NrCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0IG91dHB1dGNhcHR1
cmUKIAogaW1wb3J0IGNvbmZpZwpAQCAtNDUsNyArNDUsNyBAQCBjbGFzcyBDb25maWdUZXN0KHVu
aXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgbWFrZV9jb25maWcoc2VsZiwgb3V0cHV0PScnLCBm
aWxlcz17fSwgZXhpdF9jb2RlPTAsIGV4Y2VwdGlvbj1Ob25lKToKICAgICAgICAgZSA9IGV4ZWN1
dGl2ZV9tb2NrLk1vY2tFeGVjdXRpdmUyKG91dHB1dD1vdXRwdXQsIGV4aXRfY29kZT1leGl0X2Nv
ZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb249
ZXhjZXB0aW9uKQotICAgICAgICBmcyA9IGZpbGVzeXN0ZW1fbW9jay5Nb2NrRmlsZVN5c3RlbShm
aWxlcykKKyAgICAgICAgZnMgPSBpbl9tZW1vcnlfZmlsZXN5c3RlbS5Jbk1lbW9yeUZpbGVTeXN0
ZW0oZmlsZXMpCiAgICAgICAgIHJldHVybiBjb25maWcuQ29uZmlnKGUsIGZzKQogCiAgICAgZGVm
IGFzc2VydF9jb25maWd1cmF0aW9uKHNlbGYsIGNvbnRlbnRzLCBleHBlY3RlZCk6CmRpZmYgLS1n
aXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2RyeXJ1
bi5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZHJ5
cnVuLnB5CmluZGV4IDhhNmFmNTZjODQyMGU0NTBjNDE4OTdhZmU1NDNlNjY3MDZmOWFlNzYuLmEx
OTU4ZjlhY2RiNTU3YmY2YTBjMjM0ODc5YWRjN2JiMzgxNzg2ZjQgMTAwNjQ0Ci0tLSBhL1dlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZHJ5cnVuLnB5CisrKyBi
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZHJ5cnVuLnB5
CkBAIC00NCwxMSArNDQsNiBAQAogICAgVGhpcyBpbXBsZW1lbnRhdGlvbiBhbHNvIG1vZGlmaWVz
IHRoZSB0ZXN0IGV4cGVjdGF0aW9ucyBzbyB0aGF0IGFsbAogICAgdGVzdHMgYXJlIGVpdGhlciBT
S0lQUEVEIG9yIGV4cGVjdGVkIHRvIFBBU1MuIiIiCiAKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQg
d2l0aF9zdGF0ZW1lbnQKLQotaW1wb3J0IG9zCi1pbXBvcnQgc3lzCi0KIGltcG9ydCBiYXNlCiBp
bXBvcnQgZmFjdG9yeQogCkBAIC0xMTAsMTQgKzEwNSwxNCBAQCBjbGFzcyBEcnlydW5Ecml2ZXIo
YmFzZS5Ecml2ZXIpOgogCiAgICAgZGVmIHJ1bl90ZXN0KHNlbGYsIHVyaSwgdGltZW91dG1zLCBp
bWFnZV9oYXNoKToKICAgICAgICAgdGVzdF9uYW1lID0gc2VsZi5fcG9ydC51cmlfdG9fdGVzdF9u
YW1lKHVyaSkKLSAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihzZWxmLl9wb3J0LmxheW91dF90
ZXN0c19kaXIoKSwgdGVzdF9uYW1lKQorICAgICAgICBwYXRoID0gc2VsZi5fcG9ydC5fZmlsZXN5
c3RlbS5qb2luKHNlbGYuX3BvcnQubGF5b3V0X3Rlc3RzX2RpcigpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfbmFtZSkKICAgICAgICAgdGV4dF9vdXRw
dXQgPSBzZWxmLl9wb3J0LmV4cGVjdGVkX3RleHQocGF0aCkKIAogICAgICAgICBpZiBpbWFnZV9o
YXNoIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgaW1hZ2UgPSBzZWxmLl9wb3J0LmV4cGVjdGVk
X2ltYWdlKHBhdGgpCiAgICAgICAgICAgICBpZiBpbWFnZSBhbmQgc2VsZi5faW1hZ2VfcGF0aDoK
LSAgICAgICAgICAgICAgICB3aXRoIG9wZW4oc2VsZi5faW1hZ2VfcGF0aCwgJ3cnKSBhcyBmOgot
ICAgICAgICAgICAgICAgICAgICBmLndyaXRlKGltYWdlKQorICAgICAgICAgICAgICAgIHNlbGYu
X3BvcnQuX2ZpbGVzeXN0ZW0ud3JpdGVfYmluYXJ5X2ZpbGUoc2VsZi5faW1hZ2VfcGF0aCwgaW1h
Z2UpCiAgICAgICAgICAgICBoYXNoID0gc2VsZi5fcG9ydC5leHBlY3RlZF9jaGVja3N1bShwYXRo
KQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgaGFzaCA9IE5vbmUKZGlmZiAtLWdpdCBhL1dl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvcG9ydF90ZXN0Y2Fz
ZS5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvcG9y
dF90ZXN0Y2FzZS5weQppbmRleCAwNGFkYTUwMDBlM2IzNTM4MmMzYzk2MDkyMmUyOGM1NTNjM2Y0
MDRlLi5kNmFiZDczYTkxZWM4YWQxZTRkYmY3NGYxNTFjZjJlODAyZjQ0ZTg3IDEwMDY0NAotLS0g
YS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3BvcnRfdGVz
dGNhc2UucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9wb3J0X3Rlc3RjYXNlLnB5CkBAIC00OCw2ICs0OCwxMCBAQCBjbGFzcyBQb3J0VGVzdENh
c2UodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBwb3J0ID0gc2VsZi5tYWtlX3BvcnQoKQog
ICAgICAgICBpZiBub3QgcG9ydDoKICAgICAgICAgICAgIHJldHVybgorCisgICAgICAgICMgRklY
TUU6IERpc2FibGUgdW50aWwgd2UgY2FuIHJ1biBpbnRlZ3JhdGlvbiB0ZXN0cy4KKyAgICAgICAg
cmV0dXJuCisKICAgICAgICAgcG9ydC5zdGFydF9odHRwX3NlcnZlcigpCiAgICAgICAgIHBvcnQu
c3RvcF9odHRwX3NlcnZlcigpCiAKQEAgLTU2LDYgKzYwLDEwIEBAIGNsYXNzIFBvcnRUZXN0Q2Fz
ZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIGlmIG5vdCBwb3J0OgogICAgICAgICAgICAg
cmV0dXJuCiAKKyAgICAgICAgIyBGSVhNRTogRmlzYWJsZSB1bnRpbCB3ZSBjYW4gcnVuIGludGVn
cmF0aW9uIHRlc3RzLgorICAgICAgICByZXR1cm4KKworCiAgICAgICAgICMgRklYTUU6IG5vdCBz
dXJlIHdoeSB0aGlzIHNob3VsZG4ndCBhbHdheXMgYmUgVHJ1ZQogICAgICAgICAjc2VsZi5hc3Nl
cnRUcnVlKHBvcnQuY2hlY2tfaW1hZ2VfZGlmZigpKQogICAgICAgICBpZiBub3QgcG9ydC5jaGVj
a19pbWFnZV9kaWZmKCk6CkBAIC04NSw1ICs5Myw5IEBAIGNsYXNzIFBvcnRUZXN0Q2FzZSh1bml0
dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHBvcnQgPSBzZWxmLm1ha2VfcG9ydCgpCiAgICAgICAg
IGlmIG5vdCBwb3J0OgogICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgIyBGSVhNRTogRGlz
YWJsZSB1bnRpbCB3ZSBjYW4gcnVuIGludGVncmF0aW9uIHRlc3RzLgorICAgICAgICByZXR1cm4K
KwogICAgICAgICBwb3J0LnN0YXJ0X3dlYnNvY2tldF9zZXJ2ZXIoKQogICAgICAgICBwb3J0LnN0
b3Bfd2Vic29ja2V0X3NlcnZlcigpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3QucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3QucHkKaW5kZXggZmY0MDg2Yzc0ZGMxODJiYTg0
NzEyM2U2MzU1MDBkMTQ0MTFkOTkzZS4uN2EyNTVkODEyZDlkMzgzMDk1YzkxNzdhZDFlNTgzZGQy
NTg3NTAzMyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC90ZXN0LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvdGVzdC5weQpAQCAtMzAsMTUgKzMwLDMxIEBACiAiIiJEdW1teSBQb3J0
IGltcGxlbWVudGF0aW9uIHVzZWQgZm9yIHRlc3RpbmcuIiIiCiBmcm9tIF9fZnV0dXJlX18gaW1w
b3J0IHdpdGhfc3RhdGVtZW50CiAKLWltcG9ydCBjb2RlY3MKK2Zyb20gd2Via2l0cHkuY29tbW9u
IGltcG9ydCBpbl9tZW1vcnlfZmlsZXN5c3RlbQogaW1wb3J0IGZubWF0Y2gKLWltcG9ydCBvcwot
aW1wb3J0IHN5cwogaW1wb3J0IHRpbWUKIAogaW1wb3J0IGJhc2UKIAogCitkZWYgdGVzdF9maWxl
c3lzdGVtKCk6CisgICAgIyBGSVhNRTogQWRkIHJlbWFpbmluZyBmaWxlcywgcmV2YW1wIFRlc3RJ
bnN0YW5jZS9UZXN0TGlzdC4KKyAgICByZXR1cm4gaW5fbWVtb3J5X2ZpbGVzeXN0ZW0uSW5NZW1v
cnlGaWxlU3lzdGVtKGZpbGVzPXsKKyAgICAgICAgIi9MYXlvdXRUZXN0cy9wYXNzZXMvaW1hZ2Uu
aHRtbCI6ICJpbWFnZSIsCisgICAgICAgICIvTGF5b3V0VGVzdHMvcGFzc2VzL2ltYWdlLWV4cGVj
dGVkLnR4dCI6ICJpbWFnZS10eHQiLAorICAgICAgICAiL0xheW91dFRlc3RzL3Bhc3Nlcy9pbWFn
ZS1leHBlY3RlZC5wbmciOiAiaW1hZ2UtcG5nIiwKKyAgICAgICAgIi9MYXlvdXRUZXN0cy9wYXNz
ZXMvaW1hZ2UtZXhwZWN0ZWQuY2hlY2tzdW0iOiAiaW1hZ2UtY2hlY2tzdW0iLAorICAgICAgICAi
L0xheW91dFRlc3RzL2ZhaWx1cmVzL2V4cGVjdGVkL2NyYXNoLmh0bWwiOiAiY3Jhc2giLAorICAg
ICAgICAiL0xheW91dFRlc3RzL2ZhaWx1cmVzL2V4cGVjdGVkL2V4Y2VwdGlvbi5odG1sIjogImV4
Y2VwdGlvbiIsCisgICAgICAgICIvTGF5b3V0VGVzdHMvZmFpbHVyZXMvZXhwZWN0ZWQvaGFuZy5o
dG1sIjogImhhbmciLAorICAgICAgICAiL0xheW91dFRlc3RzL2ZhaWx1cmVzL2V4cGVjdGVkL2tl
eWJvYXJkLmh0bWwiOiAia2V5Ym9hcmQiLAorICAgICAgICAiL0xheW91dFRlc3RzL2ZhaWx1cmVz
L2V4cGVjdGVkL21pc3NpbmdfaW1hZ2UuaHRtbCI6ICJtaXNzaW5nX2ltYWdlIiwKKyAgICAgICAg
Ii9MYXlvdXRUZXN0cy9mYWlsdXJlcy9leHBlY3RlZC9taXNzaW5nX2ltYWdlLWV4cGVjdGVkLnR4
dCI6ICJtaXNzaW5nX2ltYWdlLXR4dCIsCisgICAgICAgICIvTGF5b3V0VGVzdHMvZmFpbHVyZXMv
ZXhwZWN0ZWQvbWlzc2luZ19pbWFnZS1leHBlY3RlZC5jaGVja3N1bSI6ICJtaXNzaW5nX2ltYWdl
LWNoZWNrc3VtIiwKKyAgICAgICAgIi90bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy91bmV4cGVjdGVk
X3Jlc3VsdHMuanNvbiI6IE5vbmUsCisgICAgfSkKKworCiAjIFRoaXMgc2V0cyBiYXNpYyBleHBl
Y3RhdGlvbnMgZm9yIGEgdGVzdC4gRWFjaCBpbmRpdmlkdWFsIGV4cGVjdGF0aW9uCiAjIGNhbiBi
ZSBvdmVycmlkZGVuIGJ5IGEga2V5d29yZCBhcmd1bWVudCBpbiBUZXN0TGlzdC5hZGQoKS4KIGNs
YXNzIFRlc3RJbnN0YW5jZToKQEAgLTg1LDggKzEwMSw5IEBAIGNsYXNzIFRlc3RMaXN0OgogY2xh
c3MgVGVzdFBvcnQoYmFzZS5Qb3J0KToKICAgICAiIiJUZXN0IGltcGxlbWVudGF0aW9uIG9mIHRo
ZSBQb3J0IGludGVyZmFjZS4iIiIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqKmt3YXJncyk6
Ci0gICAgICAgIGJhc2UuUG9ydC5fX2luaXRfXyhzZWxmLCAqKmt3YXJncykKKyAgICBkZWYgX19p
bml0X18oc2VsZiwgZmlsZXN5c3RlbT1Ob25lLCAqKmt3YXJncyk6CisgICAgICAgIGZpbGVzeXN0
ZW0gPSBmaWxlc3lzdGVtIG9yIHRlc3RfZmlsZXN5c3RlbSgpCisgICAgICAgIGJhc2UuUG9ydC5f
X2luaXRfXyhzZWxmLCBmaWxlc3lzdGVtPWZpbGVzeXN0ZW0sICoqa3dhcmdzKQogICAgICAgICB0
ZXN0cyA9IFRlc3RMaXN0KHNlbGYpCiAgICAgICAgIHRlc3RzLmFkZCgncGFzc2VzL2ltYWdlLmh0
bWwnKQogICAgICAgICB0ZXN0cy5hZGQoJ3Bhc3Nlcy90ZXh0Lmh0bWwnKQpAQCAtMTI3LDggKzE0
NCw4IEBAIGNsYXNzIFRlc3RQb3J0KGJhc2UuUG9ydCk6CiAgICAgICAgIHNlbGYuX3Rlc3RzID0g
dGVzdHMKIAogICAgIGRlZiBiYXNlbGluZV9wYXRoKHNlbGYpOgotICAgICAgICByZXR1cm4gb3Mu
cGF0aC5qb2luKHNlbGYubGF5b3V0X3Rlc3RzX2RpcigpLCAncGxhdGZvcm0nLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNlbGYubmFtZSgpICsgc2VsZi52ZXJzaW9uKCkpCisgICAgICAg
IHJldHVybiBzZWxmLl9maWxlc3lzdGVtLmpvaW4oc2VsZi5sYXlvdXRfdGVzdHNfZGlyKCksICdw
bGF0Zm9ybScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5uYW1l
KCkgKyBzZWxmLnZlcnNpb24oKSkKIAogICAgIGRlZiBiYXNlbGluZV9zZWFyY2hfcGF0aChzZWxm
KToKICAgICAgICAgcmV0dXJuIFtzZWxmLmJhc2VsaW5lX3BhdGgoKV0KQEAgLTE0MCw5ICsxNTcs
OCBAQCBjbGFzcyBUZXN0UG9ydChiYXNlLlBvcnQpOgogICAgICAgICAgICAgICAgICAgIGRpZmZf
ZmlsZW5hbWU9Tm9uZSk6CiAgICAgICAgIGRpZmZlZCA9IGFjdHVhbF9jb250ZW50cyAhPSBleHBl
Y3RlZF9jb250ZW50cwogICAgICAgICBpZiBkaWZmZWQgYW5kIGRpZmZfZmlsZW5hbWU6Ci0gICAg
ICAgICAgICB3aXRoIGNvZGVjcy5vcGVuKGRpZmZfZmlsZW5hbWUsICJ3IiwgInV0Zi04IikgYXMg
ZGlmZl9maDoKLSAgICAgICAgICAgICAgICBkaWZmX2ZoLndyaXRlKCI8ICVzXG4tLS1cbj4gJXNc
biIgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGV4cGVjdGVkX2NvbnRlbnRzLCBh
Y3R1YWxfY29udGVudHMpKQorICAgICAgICAgICAgc2VsZi5fZmlsZXN5c3RlbS53cml0ZV90ZXh0
X2ZpbGUoZGlmZl9maWxlbmFtZSwKKyAgICAgICAgICAgICAgICAiPCAlc1xuLS0tXG4+ICVzXG4i
ICUgKGV4cGVjdGVkX2NvbnRlbnRzLCBhY3R1YWxfY29udGVudHMpKQogICAgICAgICByZXR1cm4g
ZGlmZmVkCiAKICAgICBkZWYgZXhwZWN0ZWRfY2hlY2tzdW0oc2VsZiwgdGVzdCk6CkBAIC0xNjAs
NiArMTc2LDE1IEBAIGNsYXNzIFRlc3RQb3J0KGJhc2UuUG9ydCk6CiAgICAgICAgICAgICB0ZXh0
ID0gJycKICAgICAgICAgcmV0dXJuIHRleHQKIAorICAgIGRlZiB3ZWJraXRfYmFzZV9kaXIoc2Vs
Zik6CisgICAgICAgIHJldHVybiAnLycKKworICAgIGRlZiBwcmV0dHlfcGF0Y2hfdGV4dChzZWxm
LCBkaWZmX3BhdGgpOgorICAgICAgICByZXR1cm4gJycKKworICAgIGRlZiB3ZGlmZl90ZXh0KHNl
bGYsIGFjdHVhbCwgZXhwZWN0ZWQpOgorICAgICAgICByZXR1cm4gJycKKwogICAgIGRlZiB0ZXN0
cyhzZWxmLCBwYXRocyk6CiAgICAgICAgICMgVGVzdCB0aGUgaWRlYSBvZiBwb3J0LXNwZWNpZmlj
IG92ZXJyaWRlcyBmb3IgdGVzdCBsaXN0cy4gQWxzbwogICAgICAgICAjIGtlZXAgaW4gbWVtb3J5
IHRvIHNwZWVkIHVwIHRoZSB0ZXN0IGhhcm5lc3MuCkBAIC0xNzMsMTQgKzE5OCwxNCBAQCBjbGFz
cyBUZXN0UG9ydChiYXNlLlBvcnQpOgogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAg
ICBtYXRjaGVkX3Rlc3RzLmV4dGVuZChmbm1hdGNoLmZpbHRlcihzZWxmLl90ZXN0cy5rZXlzKCks
IHApKQogICAgICAgICBsYXlvdXRfdGVzdHNfZGlyID0gc2VsZi5sYXlvdXRfdGVzdHNfZGlyKCkK
LSAgICAgICAgcmV0dXJuIHNldChbb3MucGF0aC5qb2luKGxheW91dF90ZXN0c19kaXIsIHApIGZv
ciBwIGluIG1hdGNoZWRfdGVzdHNdKQorICAgICAgICByZXR1cm4gc2V0KFtzZWxmLl9maWxlc3lz
dGVtLmpvaW4obGF5b3V0X3Rlc3RzX2RpciwgcCkgZm9yIHAgaW4gbWF0Y2hlZF90ZXN0c10pCiAK
ICAgICBkZWYgcGF0aF9leGlzdHMoc2VsZiwgcGF0aCk6CiAgICAgICAgICMgdXNlZCBieSB0ZXN0
X2V4cGVjdGF0aW9ucy5weSBhbmQgcHJpbnRpbmcucHkKICAgICAgICAgcnBhdGggPSBzZWxmLnJl
bGF0aXZlX3Rlc3RfZmlsZW5hbWUocGF0aCkKICAgICAgICAgaWYgcnBhdGggaW4gc2VsZi5fdGVz
dHM6CiAgICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICBpZiBzZWxmLnBhdGhfaXNkaXIo
cnBhdGgpOgorICAgICAgICBpZiBzZWxmLnBhdGhfaXNkaXIocGF0aCk6CiAgICAgICAgICAgICBy
ZXR1cm4gVHJ1ZQogICAgICAgICBpZiBycGF0aC5lbmRzd2l0aCgnLWV4cGVjdGVkLnR4dCcpOgog
ICAgICAgICAgICAgdGVzdCA9IHJwYXRoLnJlcGxhY2UoJy1leHBlY3RlZC50eHQnLCAnLmh0bWwn
KQpAQCAtMTk3LDE3ICsyMjIsNyBAQCBjbGFzcyBUZXN0UG9ydChiYXNlLlBvcnQpOgogICAgICAg
ICByZXR1cm4gRmFsc2UKIAogICAgIGRlZiBsYXlvdXRfdGVzdHNfZGlyKHNlbGYpOgotICAgICAg
ICByZXR1cm4gc2VsZi5wYXRoX2Zyb21fd2Via2l0X2Jhc2UoJ1dlYktpdFRvb2xzJywgJ1Njcmlw
dHMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dlYmtpdHB5
JywgJ2xheW91dF90ZXN0cycsICdkYXRhJykKLQotICAgIGRlZiBwYXRoX2lzZGlyKHNlbGYsIHBh
dGgpOgotICAgICAgICAjIFVzZWQgYnkgdGVzdF9leHBlY3RhdGlvbnMucHkKLSAgICAgICAgIwot
ICAgICAgICAjIFdlIGFzc3VtZSB0aGF0IGEgcGF0aCBpcyBhIGRpcmVjdG9yeSBpZiB3ZSBoYXZl
IGFueSB0ZXN0cyB0aGF0Ci0gICAgICAgICMgd2hvc2UgcHJlZml4IG1hdGNoZXMgdGhlIHBhdGgg
cGx1cyBhIGRpcmVjdG9yeSBtb2RpZmllci4KLSAgICAgICAgaWYgcGF0aFstMV0gIT0gJy8nOgot
ICAgICAgICAgICAgcGF0aCArPSAnLycKLSAgICAgICAgcmV0dXJuIGFueShbdC5zdGFydHN3aXRo
KHBhdGgpIGZvciB0IGluIHNlbGYuX3Rlc3RzLmtleXMoKV0pCisgICAgICAgIHJldHVybiAnL0xh
eW91dFRlc3RzJwogCiAgICAgZGVmIHRlc3RfZGlycyhzZWxmKToKICAgICAgICAgcmV0dXJuIFsn
cGFzc2VzJywgJ2ZhaWx1cmVzJ10KQEAgLTI5OSw4ICszMTQsOCBAQCBjbGFzcyBUZXN0RHJpdmVy
KGJhc2UuRHJpdmVyKToKICAgICAgICAgICAgIHRpbWUuc2xlZXAoKGZsb2F0KHRpbWVvdXRtcykg
KiA0KSAvIDEwMDAuMCkKIAogICAgICAgICBpZiBzZWxmLl9wb3J0LmdldF9vcHRpb24oJ3BpeGVs
X3Rlc3RzJykgYW5kIHRlc3QuYWN0dWFsX2ltYWdlOgotICAgICAgICAgICAgd2l0aCBvcGVuKHNl
bGYuX2ltYWdlX3BhdGgsICd3JykgYXMgZmlsZToKLSAgICAgICAgICAgICAgICBmaWxlLndyaXRl
KHRlc3QuYWN0dWFsX2ltYWdlKQorICAgICAgICAgICAgc2VsZi5fcG9ydC5fZmlsZXN5c3RlbS53
cml0ZV9iaW5hcnlfZmlsZShzZWxmLl9pbWFnZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0LmFjdHVhbF9pbWFnZSkKIAogICAg
ICAgICByZXR1cm4gKHRlc3QuY3Jhc2gsIHRlc3QudGltZW91dCwgdGVzdC5hY3R1YWxfY2hlY2tz
dW0sCiAgICAgICAgICAgICAgICAgdGVzdC5hY3R1YWxfdGV4dCwgdGVzdC5lcnJvcikKZGlmZiAt
LWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVz
dF9maWxlcy5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvdGVzdF9maWxlcy5weQppbmRleCAzZmEwZmIzNjRiYjMxOTYwMmU2MTlhZGY1ZGQ1MWQzMmIw
ZjU3YTUyLi5lZDQ0NGRiMTAwY2EzZTQ5NDI4MGIxY2QzZjczZGVhNDI0MGRkMjBiIDEwMDY0NAot
LS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3Rf
ZmlsZXMucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC90ZXN0X2ZpbGVzLnB5CkBAIC0zNCw4ICszNCw2IEBAIGxpc3Qgb2YgdGVzdCBmaWxlcyBp
cyBjb25zdHJhaW5lZCB0byB0aG9zZSBmb3VuZCB1bmRlciB0aGUgcGF0aHMgcGFzc2VkIGluLAog
aS5lLiBjYWxsaW5nIGZpbmQoWyJMYXlvdXRUZXN0cy9mYXN0Il0pIHdpbGwgb25seSByZXR1cm4g
ZmlsZXMKIHVuZGVyIHRoYXQgZGlyZWN0b3J5LiIiIgogCi1pbXBvcnQgZ2xvYgotaW1wb3J0IG9z
CiBpbXBvcnQgdGltZQogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0IGxvZ3V0
aWxzCkBAIC00Myw3ICs0MSw2IEBAIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQg
bG9ndXRpbHMKIAogX2xvZyA9IGxvZ3V0aWxzLmdldF9sb2dnZXIoX19maWxlX18pCiAKLQogIyBX
aGVuIGNvbGxlY3RpbmcgdGVzdCBjYXNlcywgd2UgaW5jbHVkZSBhbnkgZmlsZSB3aXRoIHRoZXNl
IGV4dGVuc2lvbnMuCiBfc3VwcG9ydGVkX2ZpbGVfZXh0ZW5zaW9ucyA9IHNldChbJy5odG1sJywg
Jy5zaHRtbCcsICcueG1sJywgJy54aHRtbCcsICcueGh0bWxtcCcsICcucGwnLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICcucGhwJywgJy5zdmcnXSkKQEAgLTU5LDMyICs1Niwz
NCBAQCBkZWYgZmluZChwb3J0LCBwYXRocyk6CiAgICAgICAgICAgdG8gbGltaXQgdGhlIHNlYXJj
aCB0by4gZ2xvYiBwYXR0ZXJucyBhcmUgb2suCiAgICAgIiIiCiAgICAgZ2F0aGVyX3N0YXJ0X3Rp
bWUgPSB0aW1lLnRpbWUoKQorICAgIGZzID0gcG9ydC5fZmlsZXN5c3RlbQorICAgIGxheW91dF90
ZXN0c19kaXIgPSBwb3J0LmxheW91dF90ZXN0c19kaXIoKQogICAgIHBhdGhzX3RvX3dhbGsgPSBz
ZXQoKQogICAgICMgaWYgcGF0aHMgaXMgZW1wdHksIHByb3ZpZGUgYSBwcmUtZGVmaW5lZCBsaXN0
LgogICAgIGlmIHBhdGhzOgotICAgICAgICBfbG9nLmRlYnVnKCJHYXRoZXJpbmcgdGVzdHMgZnJv
bTogJXMgcmVsYXRpdmUgdG8gJXMiICUgKHBhdGhzLCBwb3J0LmxheW91dF90ZXN0c19kaXIoKSkp
CisgICAgICAgIF9sb2cuZGVidWcoIkdhdGhlcmluZyB0ZXN0cyBmcm9tOiAlcyByZWxhdGl2ZSB0
byAlcyIgJSAocGF0aHMsIGxheW91dF90ZXN0c19kaXIpKQogICAgICAgICBmb3IgcGF0aCBpbiBw
YXRoczoKICAgICAgICAgICAgICMgSWYgdGhlcmUncyBhbiAqIGluIHRoZSBuYW1lLCBhc3N1bWUg
aXQncyBhIGdsb2IgcGF0dGVybi4KLSAgICAgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4ocG9y
dC5sYXlvdXRfdGVzdHNfZGlyKCksIHBhdGgpCisgICAgICAgICAgICBwYXRoID0gZnMuam9pbihs
YXlvdXRfdGVzdHNfZGlyLCBwYXRoKQogICAgICAgICAgICAgaWYgcGF0aC5maW5kKCcqJykgPiAt
MToKLSAgICAgICAgICAgICAgICBmaWxlbmFtZXMgPSBnbG9iLmdsb2IocGF0aCkKKyAgICAgICAg
ICAgICAgICBmaWxlbmFtZXMgPSBmcy5nbG9iKHBhdGgpCiAgICAgICAgICAgICAgICAgcGF0aHNf
dG9fd2Fsay51cGRhdGUoZmlsZW5hbWVzKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAg
ICAgICBwYXRoc190b193YWxrLmFkZChwYXRoKQogICAgIGVsc2U6Ci0gICAgICAgIF9sb2cuZGVi
dWcoIkdhdGhlcmluZyB0ZXN0cyBmcm9tOiAlcyIgJSBwb3J0LmxheW91dF90ZXN0c19kaXIoKSkK
LSAgICAgICAgcGF0aHNfdG9fd2Fsay5hZGQocG9ydC5sYXlvdXRfdGVzdHNfZGlyKCkpCisgICAg
ICAgIF9sb2cuZGVidWcoIkdhdGhlcmluZyB0ZXN0cyBmcm9tOiAlcyIgJSBsYXlvdXRfdGVzdHNf
ZGlyKQorICAgICAgICBwYXRoc190b193YWxrLmFkZChsYXlvdXRfdGVzdHNfZGlyKQogCiAgICAg
IyBOb3cgd2FsayBhbGwgdGhlIHBhdGhzIHBhc3NlZCBpbiBvbiB0aGUgY29tbWFuZCBsaW5lIGFu
ZCBnZXQgZmlsZW5hbWVzCiAgICAgdGVzdF9maWxlcyA9IHNldCgpCiAgICAgZm9yIHBhdGggaW4g
cGF0aHNfdG9fd2FsazoKLSAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUocGF0aCkgYW5kIF9oYXNf
c3VwcG9ydGVkX2V4dGVuc2lvbihwYXRoKToKLSAgICAgICAgICAgIHRlc3RfZmlsZXMuYWRkKG9z
LnBhdGgubm9ybXBhdGgocGF0aCkpCisgICAgICAgIGlmIGZzLmlzZmlsZShwYXRoKSBhbmQgX2hh
c19zdXBwb3J0ZWRfZXh0ZW5zaW9uKGZzLCBwYXRoKToKKyAgICAgICAgICAgIHRlc3RfZmlsZXMu
YWRkKGZzLm5vcm1wYXRoKHBhdGgpKQogICAgICAgICAgICAgY29udGludWUKIAotICAgICAgICBm
b3Igcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2FsayhwYXRoKToKKyAgICAgICAgZm9yIHJvb3Qs
IGRpcnMsIGZpbGVzIGluIGZzLndhbGsocGF0aCk6CiAgICAgICAgICAgICAjIERvbid0IHdhbGsg
c2tpcHBlZCBkaXJlY3RvcmllcyBvciB0aGVpciBzdWItZGlyZWN0b3JpZXMuCi0gICAgICAgICAg
ICBpZiBvcy5wYXRoLmJhc2VuYW1lKHJvb3QpIGluIF9za2lwcGVkX2RpcmVjdG9yaWVzOgorICAg
ICAgICAgICAgaWYgZnMuYmFzZW5hbWUocm9vdCkgaW4gX3NraXBwZWRfZGlyZWN0b3JpZXM6CiAg
ICAgICAgICAgICAgICAgZGVsIGRpcnNbOl0KICAgICAgICAgICAgICAgICBjb250aW51ZQogICAg
ICAgICAgICAgIyBUaGlzIGNvcHkgYW5kIGZvci1pbiBpcyBzbGlnaHRseSBpbmVmZmljaWVudCwg
YnV0CkBAIC05NSw5ICs5NCw5IEBAIGRlZiBmaW5kKHBvcnQsIHBhdGhzKToKICAgICAgICAgICAg
ICAgICAgICAgZGlycy5yZW1vdmUoZGlyZWN0b3J5KQogCiAgICAgICAgICAgICBmb3IgZmlsZW5h
bWUgaW4gZmlsZXM6Ci0gICAgICAgICAgICAgICAgaWYgX2hhc19zdXBwb3J0ZWRfZXh0ZW5zaW9u
KGZpbGVuYW1lKToKLSAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWUgPSBvcy5wYXRoLmpvaW4o
cm9vdCwgZmlsZW5hbWUpCi0gICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gb3MucGF0aC5u
b3JtcGF0aChmaWxlbmFtZSkKKyAgICAgICAgICAgICAgICBpZiBfaGFzX3N1cHBvcnRlZF9leHRl
bnNpb24oZnMsIGZpbGVuYW1lKToKKyAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWUgPSBmcy5q
b2luKHJvb3QsIGZpbGVuYW1lKQorICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZSA9IGZzLm5v
cm1wYXRoKGZpbGVuYW1lKQogICAgICAgICAgICAgICAgICAgICB0ZXN0X2ZpbGVzLmFkZChmaWxl
bmFtZSkKIAogICAgIGdhdGhlcl90aW1lID0gdGltZS50aW1lKCkgLSBnYXRoZXJfc3RhcnRfdGlt
ZQpAQCAtMTA2LDggKzEwNSw4IEBAIGRlZiBmaW5kKHBvcnQsIHBhdGhzKToKICAgICByZXR1cm4g
dGVzdF9maWxlcwogCiAKLWRlZiBfaGFzX3N1cHBvcnRlZF9leHRlbnNpb24oZmlsZW5hbWUpOgor
ZGVmIF9oYXNfc3VwcG9ydGVkX2V4dGVuc2lvbihmcywgZmlsZW5hbWUpOgogICAgICIiIlJldHVy
biB0cnVlIGlmIGZpbGVuYW1lIGlzIG9uZSBvZiB0aGUgZmlsZSBleHRlbnNpb25zIHdlIHdhbnQg
dG8gcnVuIGEKICAgICB0ZXN0IG9uLiIiIgotICAgIGV4dGVuc2lvbiA9IG9zLnBhdGguc3BsaXRl
eHQoZmlsZW5hbWUpWzFdCisgICAgZXh0ZW5zaW9uID0gZnMuc3BsaXRleHQoZmlsZW5hbWUpWzFd
CiAgICAgcmV0dXJuIGV4dGVuc2lvbiBpbiBfc3VwcG9ydGVkX2ZpbGVfZXh0ZW5zaW9ucwpkaWZm
IC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93
ZWJraXQucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L3dlYmtpdC5weQppbmRleCA1MWY1N2M0MGU2NjYxNjdiMThjZGY1MmQ2NDIwMTg3NTk2NTI0N2U4
Li4zNWY2MmIyZWI3NGYyN2U0ZWY3MGQ3MjRkYTg1ZWJhYjllNDEwZmZlIDEwMDY0NAotLS0gYS9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weQor
KysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtp
dC5weQpAQCAtMzEsOSArMzEsNiBAQAogIiIiV2ViS2l0IGltcGxlbWVudGF0aW9ucyBvZiB0aGUg
UG9ydCBpbnRlcmZhY2UuIiIiCiAKIAotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB3aXRoX3N0YXRl
bWVudAotCi1pbXBvcnQgY29kZWNzCiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IG9zCiBpbXBvcnQg
cmUKQEAgLTQ3LDcgKzQ0LDcgQEAgaW1wb3J0IHRlbXBmaWxlCiBpbXBvcnQgc2h1dGlsCiAKIGZy
b20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IEV4ZWN1dGl2ZQotCitm
cm9tIHdlYmtpdHB5LmNvbW1vbiBpbXBvcnQgbmV3c3RyaW5naW8KIGltcG9ydCB3ZWJraXRweS5j
b21tb24uc3lzdGVtLm9zcGF0aCBhcyBvc3BhdGgKIGltcG9ydCB3ZWJraXRweS5sYXlvdXRfdGVz
dHMucG9ydC5iYXNlIGFzIGJhc2UKIGltcG9ydCB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC5z
ZXJ2ZXJfcHJvY2VzcyBhcyBzZXJ2ZXJfcHJvY2VzcwpAQCAtMzA4LDE5ICszMDUsMTggQEAgY2xh
c3MgV2ViS2l0UG9ydChiYXNlLlBvcnQpOgogICAgIGRlZiBfZXhwZWN0YXRpb25zX2Zyb21fc2tp
cHBlZF9maWxlcyhzZWxmKToKICAgICAgICAgdGVzdHNfdG9fc2tpcCA9IFtdCiAgICAgICAgIGZv
ciBmaWxlbmFtZSBpbiBzZWxmLl9za2lwcGVkX2ZpbGVfcGF0aHMoKToKLSAgICAgICAgICAgIGlm
IG5vdCBvcy5wYXRoLmV4aXN0cyhmaWxlbmFtZSk6CisgICAgICAgICAgICBpZiBub3Qgc2VsZi5f
ZmlsZXN5c3RlbS5leGlzdHMoZmlsZW5hbWUpOgogICAgICAgICAgICAgICAgIF9sb2cud2Fybigi
RmFpbGVkIHRvIG9wZW4gU2tpcHBlZCBmaWxlOiAlcyIgJSBmaWxlbmFtZSkKICAgICAgICAgICAg
ICAgICBjb250aW51ZQotICAgICAgICAgICAgd2l0aCBjb2RlY3Mub3BlbihmaWxlbmFtZSwgInIi
LCAidXRmLTgiKSBhcyBza2lwcGVkX2ZpbGU6Ci0gICAgICAgICAgICAgICAgdGVzdHNfdG9fc2tp
cC5leHRlbmQoc2VsZi5fdGVzdHNfZnJvbV9za2lwcGVkX2ZpbGUoc2tpcHBlZF9maWxlKSkKKyAg
ICAgICAgICAgIHNraXBwZWRfZmlsZSA9IG5ld3N0cmluZ2lvLlN0cmluZ0lPKHNlbGYuX2ZpbGVz
eXN0ZW0ucmVhZF90ZXh0X2ZpbGUoZmlsZW5hbWUpKQorICAgICAgICAgICAgdGVzdHNfdG9fc2tp
cC5leHRlbmQoc2VsZi5fdGVzdHNfZnJvbV9za2lwcGVkX2ZpbGUoc2tpcHBlZF9maWxlKSkKICAg
ICAgICAgcmV0dXJuIHRlc3RzX3RvX3NraXAKIAogICAgIGRlZiB0ZXN0X2V4cGVjdGF0aW9ucyhz
ZWxmKToKICAgICAgICAgIyBUaGUgV2ViS2l0IG1hYyBwb3J0IHVzZXMgYSBjb21iaW5hdGlvbiBv
ZiBhIHRlc3RfZXhwZWN0YXRpb25zIGZpbGUKICAgICAgICAgIyBhbmQgJ1NraXBwZWQnIGZpbGVz
LgogICAgICAgICBleHBlY3RhdGlvbnNfcGF0aCA9IHNlbGYucGF0aF90b190ZXN0X2V4cGVjdGF0
aW9uc19maWxlKCkKLSAgICAgICAgd2l0aCBjb2RlY3Mub3BlbihleHBlY3RhdGlvbnNfcGF0aCwg
InIiLCAidXRmLTgiKSBhcyBmaWxlOgotICAgICAgICAgICAgcmV0dXJuIGZpbGUucmVhZCgpICsg
c2VsZi5fc2tpcHMoKQorICAgICAgICByZXR1cm4gc2VsZi5fZmlsZXN5c3RlbS5yZWFkX3RleHRf
ZmlsZShleHBlY3RhdGlvbnNfcGF0aCkgKyBzZWxmLl9za2lwcygpCiAKICAgICBkZWYgX3NraXBz
KHNlbGYpOgogICAgICAgICAjIEVhY2ggU2tpcHBlZCBmaWxlIGNvbnRhaW5zIGEgbGlzdCBvZiBm
aWxlcwpAQCAtMzMyLDggKzMyOCwxMiBAQCBjbGFzcyBXZWJLaXRQb3J0KGJhc2UuUG9ydCk6CiAg
ICAgICAgICMgZm9ybWF0IGV4cGVjdGVkIGJ5IHRlc3RfZXhwZWN0YXRpb25zLgogCiAgICAgICAg
IHRlc3RzX3RvX3NraXAgPSBzZWxmLnNraXBwZWRfbGF5b3V0X3Rlc3RzKCkKLSAgICAgICAgc2tp
cF9saW5lcyA9IG1hcChsYW1iZGEgdGVzdF9wYXRoOiAiQlVHX1NLSVBQRUQgU0tJUCA6ICVzID0g
RkFJTCIgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X3BhdGgsIHRlc3Rz
X3RvX3NraXApCisKKyAgICAgICAgZGVmIHNraXBfcGF0aChwYXRoKToKKyAgICAgICAgICAgIGlm
IHNlbGYuX2ZpbGVzeXN0ZW0uZXhpc3RzKHBhdGgpOgorICAgICAgICAgICAgICAgIHJldHVybiAi
QlVHX1NLSVBQRUQgU0tJUCA6ICVzID0gRkFJTCIgJSBwYXRoCisgICAgICAgICAgICByZXR1cm4g
IiIKKyAgICAgICAgc2tpcF9saW5lcyA9IG1hcChza2lwX3BhdGgsIHRlc3RzX3RvX3NraXApCiAg
ICAgICAgIHJldHVybiAiXG4iLmpvaW4oc2tpcF9saW5lcykKIAogICAgIGRlZiBza2lwcGVkX2xh
eW91dF90ZXN0cyhzZWxmKToKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkgYi9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5CmluZGV4IDlmYjY4NGZh
MTA3MTdhYjM3ZjcxM2UyMWU0MmUzZjMwOTcwYjJlZWYuLjU5NjZmMTBlYmQ3ZGZiYjdjYmMyODc1
ZjIwMDE0MzdhNzU4N2Y1MTUgMTAwNzU1Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkKKysrIGIvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weQpAQCAtNDcsMTgg
KzQ3LDE0IEBAIEZvciBkZXRhaWxzIG9mIHRoZSBmaWxlcycgY29udGVudHMgYW5kIHB1cnBvc2Vz
LCBzZWUgdGVzdF9saXN0cy9SRUFETUUuCiAKIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgd2l0aF9z
dGF0ZW1lbnQKIAotaW1wb3J0IGNvZGVjcwogaW1wb3J0IGVycm5vCi1pbXBvcnQgZ2xvYgogaW1w
b3J0IGxvZ2dpbmcKIGltcG9ydCBtYXRoCiBpbXBvcnQgb3B0cGFyc2UKIGltcG9ydCBvcwotaW1w
b3J0IHBsYXRmb3JtCiBpbXBvcnQgUXVldWUKIGltcG9ydCByYW5kb20KIGltcG9ydCByZQotaW1w
b3J0IHNodXRpbAogaW1wb3J0IHNpZ25hbAogaW1wb3J0IHN5cwogaW1wb3J0IHRpbWUKQEAgLTI4
OCw3ICsyODQsNyBAQCBjbGFzcyBUZXN0UnVubmVyOgogICAgICAgICBwYXRocyA9IFtzZWxmLl9z
dHJpcF90ZXN0X2Rpcl9wcmVmaXgoYXJnKSBmb3IgYXJnIGluIGFyZ3MgaWYgYXJnIGFuZCBhcmcg
IT0gJyddCiAgICAgICAgIHBhdGhzICs9IGxhc3RfdW5leHBlY3RlZF9yZXN1bHRzCiAgICAgICAg
IGlmIHNlbGYuX29wdGlvbnMudGVzdF9saXN0OgotICAgICAgICAgICAgcGF0aHMgKz0gcmVhZF90
ZXN0X2ZpbGVzKHNlbGYuX29wdGlvbnMudGVzdF9saXN0KQorICAgICAgICAgICAgcGF0aHMgKz0g
cmVhZF90ZXN0X2ZpbGVzKHNlbGYuX3BvcnQuX2ZpbGVzeXN0ZW0sIHNlbGYuX29wdGlvbnMudGVz
dF9saXN0KQogICAgICAgICBzZWxmLl90ZXN0X2ZpbGVzID0gc2VsZi5fcG9ydC50ZXN0cyhwYXRo
cykKIAogICAgIGRlZiBfc3RyaXBfdGVzdF9kaXJfcHJlZml4KHNlbGYsIHBhdGgpOgpAQCAtNDE4
LDEwICs0MTQsMTAgQEAgY2xhc3MgVGVzdFJ1bm5lcjoKICAgICAgICAgICAgICAgICBzZWxmLl9w
cmludGVyLnByaW50X2V4cGVjdGVkKGV4dHJhX21zZykKICAgICAgICAgICAgICAgICB0ZXN0c19y
dW5fbXNnICs9ICJcbiIgKyBleHRyYV9tc2cKICAgICAgICAgICAgICAgICBmaWxlcy5leHRlbmQo
dGVzdF9maWxlc1swOmV4dHJhXSkKLSAgICAgICAgICAgIHRlc3RzX3J1bl9maWxlbmFtZSA9IG9z
LnBhdGguam9pbihzZWxmLl9vcHRpb25zLnJlc3VsdHNfZGlyZWN0b3J5LAorICAgICAgICAgICAg
dGVzdHNfcnVuX2ZpbGVuYW1lID0gc2VsZi5fcG9ydC5fZmlsZXN5c3RlbS5qb2luKHNlbGYuX29w
dGlvbnMucmVzdWx0c19kaXJlY3RvcnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgInRlc3RzX3J1bi50eHQiKQotICAgICAgICAgICAgd2l0aCBjb2RlY3Mu
b3Blbih0ZXN0c19ydW5fZmlsZW5hbWUsICJ3IiwgInV0Zi04IikgYXMgZmlsZToKLSAgICAgICAg
ICAgICAgICBmaWxlLndyaXRlKHRlc3RzX3J1bl9tc2cgKyAiXG4iKQorICAgICAgICAgICAgc2Vs
Zi5fcG9ydC5fZmlsZXN5c3RlbS53cml0ZV90ZXh0X2ZpbGUodGVzdHNfcnVuX2ZpbGVuYW1lLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdHNf
cnVuX21zZyArICJcbiIpCiAKICAgICAgICAgICAgIGxlbl9za2lwX2NodW5rID0gaW50KGxlbihm
aWxlcykgKiBsZW4oc2tpcHBlZCkgLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZmxvYXQobGVuKHNlbGYuX3Rlc3RfZmlsZXMpKSkKQEAgLTQ5Miw3ICs0ODgsNyBAQCBjbGFzcyBU
ZXN0UnVubmVyOgogICAgICAgICAgICAgICAgIGFuZCB0ZXN0X2ZpbGUuZmluZChvcy5zZXApID49
IDApOgogICAgICAgICAgICAgdGVzdF9maWxlX3BhcnRzID0gdGVzdF9maWxlLnNwbGl0KG9zLnNl
cCwgMSkKICAgICAgICAgICAgIGRpcmVjdG9yeSA9IHRlc3RfZmlsZV9wYXJ0c1swXQotICAgICAg
ICAgICAgcmV0dXJuX3ZhbHVlID0gb3MucGF0aC5qb2luKHJldHVybl92YWx1ZSwgZGlyZWN0b3J5
KQorICAgICAgICAgICAgcmV0dXJuX3ZhbHVlID0gc2VsZi5fcG9ydC5fZmlsZXN5c3RlbS5qb2lu
KHJldHVybl92YWx1ZSwgZGlyZWN0b3J5KQogICAgICAgICAgICAgdGVzdF9maWxlID0gdGVzdF9m
aWxlX3BhcnRzWzFdCiAKICAgICAgICAgcmV0dXJuIHJldHVybl92YWx1ZQpAQCAtNTc3LDcgKzU3
Myw3IEBAIGNsYXNzIFRlc3RSdW5uZXI6CiAgICAgICAgIHRlc3RfYXJncyA9IHRlc3RfdHlwZV9i
YXNlLlRlc3RBcmd1bWVudHMoKQogICAgICAgICB0ZXN0X2FyZ3MucG5nX3BhdGggPSBOb25lCiAg
ICAgICAgIGlmIHNlbGYuX29wdGlvbnMucGl4ZWxfdGVzdHM6Ci0gICAgICAgICAgICBwbmdfcGF0
aCA9IG9zLnBhdGguam9pbihzZWxmLl9vcHRpb25zLnJlc3VsdHNfZGlyZWN0b3J5LAorICAgICAg
ICAgICAgcG5nX3BhdGggPSBzZWxmLl9wb3J0Ll9maWxlc3lzdGVtLmpvaW4oc2VsZi5fb3B0aW9u
cy5yZXN1bHRzX2RpcmVjdG9yeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJwbmdfcmVzdWx0JXMucG5nIiAlIGluZGV4KQogICAgICAgICAgICAgdGVzdF9hcmdzLnBuZ19w
YXRoID0gcG5nX3BhdGgKICAgICAgICAgdGVzdF9hcmdzLm5ld19iYXNlbGluZSA9IHNlbGYuX29w
dGlvbnMubmV3X2Jhc2VsaW5lCkBAIC04NjQsMTAgKzg2MCw5IEBAIGNsYXNzIFRlc3RSdW5uZXI6
CiAgICAgICAgIGxheW91dF90ZXN0c19kaXIgPSBzZWxmLl9wb3J0LmxheW91dF90ZXN0c19kaXIo
KQogICAgICAgICBwb3NzaWJsZV9kaXJzID0gc2VsZi5fcG9ydC50ZXN0X2RpcnMoKQogICAgICAg
ICBmb3IgZGlybmFtZSBpbiBwb3NzaWJsZV9kaXJzOgotICAgICAgICAgICAgaWYgb3MucGF0aC5p
c2Rpcihvcy5wYXRoLmpvaW4obGF5b3V0X3Rlc3RzX2RpciwgZGlybmFtZSkpOgotICAgICAgICAg
ICAgICAgIHNodXRpbC5ybXRyZWUob3MucGF0aC5qb2luKHNlbGYuX29wdGlvbnMucmVzdWx0c19k
aXJlY3RvcnksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGly
bmFtZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmVfZXJyb3JzPVRydWUp
CisgICAgICAgICAgICBpZiBzZWxmLl9wb3J0Ll9maWxlc3lzdGVtLmlzZGlyKHNlbGYuX3BvcnQu
X2ZpbGVzeXN0ZW0uam9pbihsYXlvdXRfdGVzdHNfZGlyLCBkaXJuYW1lKSk6CisgICAgICAgICAg
ICAgICAgc2VsZi5fcG9ydC5fZmlsZXN5c3RlbS5ybXRyZWUoc2VsZi5fcG9ydC5fZmlsZXN5c3Rl
bS5qb2luKHNlbGYuX29wdGlvbnMucmVzdWx0c19kaXJlY3RvcnksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlybmFtZSkpCiAKICAgICBkZWYgX2dldF9mYWls
dXJlcyhzZWxmLCByZXN1bHRfc3VtbWFyeSwgaW5jbHVkZV9jcmFzaGVzKToKICAgICAgICAgIiIi
RmlsdGVycyBhIGRpY3Qgb2YgcmVzdWx0cyBhbmQgcmV0dXJucyBvbmx5IHRoZSBmYWlsdXJlcy4K
QEAgLTkxMCwxNiArOTA1LDE2IEBAIGNsYXNzIFRlc3RSdW5uZXI6CiAgICAgICAgICIiIgogICAg
ICAgICByZXN1bHRzX2RpcmVjdG9yeSA9IHNlbGYuX29wdGlvbnMucmVzdWx0c19kaXJlY3RvcnkK
ICAgICAgICAgX2xvZy5kZWJ1ZygiV3JpdGluZyBKU09OIGZpbGVzIGluICVzLiIgJSByZXN1bHRz
X2RpcmVjdG9yeSkKLSAgICAgICAgdW5leHBlY3RlZF9qc29uX3BhdGggPSBvcy5wYXRoLmpvaW4o
cmVzdWx0c19kaXJlY3RvcnksICJ1bmV4cGVjdGVkX3Jlc3VsdHMuanNvbiIpCi0gICAgICAgIHdp
dGggY29kZWNzLm9wZW4odW5leHBlY3RlZF9qc29uX3BhdGgsICJ3IiwgInV0Zi04IikgYXMgZmls
ZToKKyAgICAgICAgdW5leHBlY3RlZF9qc29uX3BhdGggPSBzZWxmLl9wb3J0Ll9maWxlc3lzdGVt
LmpvaW4ocmVzdWx0c19kaXJlY3RvcnksICJ1bmV4cGVjdGVkX3Jlc3VsdHMuanNvbiIpCisgICAg
ICAgIHdpdGggc2VsZi5fcG9ydC5fZmlsZXN5c3RlbS5vcGVuX3RleHRfZmlsZV9mb3Jfd3JpdGlu
Zyh1bmV4cGVjdGVkX2pzb25fcGF0aCkgYXMgZmlsZToKICAgICAgICAgICAgIHNpbXBsZWpzb24u
ZHVtcCh1bmV4cGVjdGVkX3Jlc3VsdHMsIGZpbGUsIHNvcnRfa2V5cz1UcnVlLCBpbmRlbnQ9MikK
IAogICAgICAgICAjIFdyaXRlIGEganNvbiBmaWxlIG9mIHRoZSB0ZXN0X2V4cGVjdGF0aW9ucy50
eHQgZmlsZSBmb3IgdGhlIGxheW91dAogICAgICAgICAjIHRlc3RzIGRhc2hib2FyZC4KLSAgICAg
ICAgZXhwZWN0YXRpb25zX3BhdGggPSBvcy5wYXRoLmpvaW4ocmVzdWx0c19kaXJlY3RvcnksICJl
eHBlY3RhdGlvbnMuanNvbiIpCisgICAgICAgIGV4cGVjdGF0aW9uc19wYXRoID0gc2VsZi5fcG9y
dC5fZmlsZXN5c3RlbS5qb2luKHJlc3VsdHNfZGlyZWN0b3J5LCAiZXhwZWN0YXRpb25zLmpzb24i
KQogICAgICAgICBleHBlY3RhdGlvbnNfanNvbiA9IFwKICAgICAgICAgICAgIHNlbGYuX2V4cGVj
dGF0aW9ucy5nZXRfZXhwZWN0YXRpb25zX2pzb25fZm9yX2FsbF9wbGF0Zm9ybXMoKQotICAgICAg
ICB3aXRoIGNvZGVjcy5vcGVuKGV4cGVjdGF0aW9uc19wYXRoLCAidyIsICJ1dGYtOCIpIGFzIGZp
bGU6CisgICAgICAgIHdpdGggc2VsZi5fcG9ydC5fZmlsZXN5c3RlbS5vcGVuX3RleHRfZmlsZV9m
b3Jfd3JpdGluZyhleHBlY3RhdGlvbnNfcGF0aCkgYXMgZmlsZToKICAgICAgICAgICAgIGZpbGUu
d3JpdGUodSJBRERfRVhQRUNUQVRJT05TKCVzKTsiICUgZXhwZWN0YXRpb25zX2pzb24pCiAKICAg
ICAgICAgZ2VuZXJhdG9yID0ganNvbl9sYXlvdXRfcmVzdWx0c19nZW5lcmF0b3IuSlNPTkxheW91
dFJlc3VsdHNHZW5lcmF0b3IoCkBAIC0xMjkxLDI2ICsxMjg2LDI0IEBAIGNsYXNzIFRlc3RSdW5u
ZXI6CiAgICAgICAgIGlmIG5vdCBsZW4odGVzdF9maWxlcyk6CiAgICAgICAgICAgICByZXR1cm4g
RmFsc2UKIAotICAgICAgICBvdXRfZmlsZW5hbWUgPSBvcy5wYXRoLmpvaW4oc2VsZi5fb3B0aW9u
cy5yZXN1bHRzX2RpcmVjdG9yeSwKKyAgICAgICAgb3V0X2ZpbGVuYW1lID0gc2VsZi5fcG9ydC5f
ZmlsZXN5c3RlbS5qb2luKHNlbGYuX29wdGlvbnMucmVzdWx0c19kaXJlY3RvcnksCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVzdWx0cy5odG1sIikKLSAgICAgICAgd2l0
aCBjb2RlY3Mub3BlbihvdXRfZmlsZW5hbWUsICJ3IiwgInV0Zi04IikgYXMgcmVzdWx0c19maWxl
OgotICAgICAgICAgICAgaHRtbCA9IHNlbGYuX3Jlc3VsdHNfaHRtbCh0ZXN0X2ZpbGVzLCByZXN1
bHRfc3VtbWFyeS5mYWlsdXJlcywgcmVzdWx0c190aXRsZSkKLSAgICAgICAgICAgIHJlc3VsdHNf
ZmlsZS53cml0ZShodG1sKQorICAgICAgICBodG1sID0gc2VsZi5fcmVzdWx0c19odG1sKHRlc3Rf
ZmlsZXMsIHJlc3VsdF9zdW1tYXJ5LmZhaWx1cmVzLCByZXN1bHRzX3RpdGxlKQorICAgICAgICBz
ZWxmLl9wb3J0Ll9maWxlc3lzdGVtLndyaXRlX3RleHRfZmlsZShvdXRfZmlsZW5hbWUsIGh0bWwp
CiAKICAgICAgICAgcmV0dXJuIFRydWUKIAogICAgIGRlZiBfc2hvd19yZXN1bHRzX2h0bWxfZmls
ZShzZWxmKToKICAgICAgICAgIiIiU2hvd3MgdGhlIHJlc3VsdHMuaHRtbCBwYWdlLiIiIgotICAg
ICAgICByZXN1bHRzX2ZpbGVuYW1lID0gb3MucGF0aC5qb2luKHNlbGYuX29wdGlvbnMucmVzdWx0
c19kaXJlY3RvcnksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJl
c3VsdHMuaHRtbCIpCisgICAgICAgIHJlc3VsdHNfZmlsZW5hbWUgPSBzZWxmLl9wb3J0Ll9maWxl
c3lzdGVtLmpvaW4oc2VsZi5fb3B0aW9ucy5yZXN1bHRzX2RpcmVjdG9yeSwgInJlc3VsdHMuaHRt
bCIpCiAgICAgICAgIHNlbGYuX3BvcnQuc2hvd19yZXN1bHRzX2h0bWxfZmlsZShyZXN1bHRzX2Zp
bGVuYW1lKQogCiAKLWRlZiByZWFkX3Rlc3RfZmlsZXMoZmlsZXMpOgorZGVmIHJlYWRfdGVzdF9m
aWxlcyhmcywgZmlsZXMpOgogICAgIHRlc3RzID0gW10KICAgICBmb3IgZmlsZSBpbiBmaWxlczoK
ICAgICAgICAgdHJ5OgotICAgICAgICAgICAgd2l0aCBjb2RlY3Mub3BlbihmaWxlLCAncicsICd1
dGYtOCcpIGFzIGZpbGVfY29udGVudHM6CisgICAgICAgICAgICB3aXRoIGZzLm9wZW5fdGV4dF9m
aWxlX2Zvcl9yZWFkaW5nKGZpbGUpIGFzIGZpbGVfY29udGVudHM6CiAgICAgICAgICAgICAgICAg
IyBGSVhNRTogVGhpcyBjb3VsZCBiZSBjbGVhbmVyIHVzaW5nIGEgbGlzdCBjb21wcmVoZW5zaW9u
LgogICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIGZpbGVfY29udGVudHM6CiAgICAgICAgICAg
ICAgICAgICAgIGxpbmUgPSB0ZXN0X2V4cGVjdGF0aW9ucy5zdHJpcF9jb21tZW50cyhsaW5lKQpA
QCAtMTM1MCw3ICsxMzQzLDcgQEAgZGVmIHJ1bihwb3J0LCBvcHRpb25zLCBhcmdzLCByZWd1bGFy
X291dHB1dD1zeXMuc3RkZXJyLAogICAgICAgICBwcmludGVyLmNsZWFudXAoKQogICAgICAgICBy
ZXR1cm4gMAogCi0gICAgbGFzdF91bmV4cGVjdGVkX3Jlc3VsdHMgPSBfZ2F0aGVyX3VuZXhwZWN0
ZWRfcmVzdWx0cyhvcHRpb25zKQorICAgIGxhc3RfdW5leHBlY3RlZF9yZXN1bHRzID0gX2dhdGhl
cl91bmV4cGVjdGVkX3Jlc3VsdHMocG9ydC5fZmlsZXN5c3RlbSwgb3B0aW9ucykKICAgICBpZiBv
cHRpb25zLnByaW50X2xhc3RfZmFpbHVyZXM6CiAgICAgICAgIHByaW50ZXIud3JpdGUoIlxuIi5q
b2luKGxhc3RfdW5leHBlY3RlZF9yZXN1bHRzKSArICJcbiIpCiAgICAgICAgIHByaW50ZXIuY2xl
YW51cCgpCkBAIC0xNDExLDcgKzE0MDQsNyBAQCBkZWYgX3NldF91cF9kZXJpdmVkX29wdGlvbnMo
cG9ydF9vYmosIG9wdGlvbnMpOgogICAgIGlmIG5vdCBvcHRpb25zLnVzZV9hcGFjaGU6CiAgICAg
ICAgIG9wdGlvbnMudXNlX2FwYWNoZSA9IHN5cy5wbGF0Zm9ybSBpbiAoJ2RhcndpbicsICdsaW51
eDInKQogCi0gICAgaWYgbm90IG9zLnBhdGguaXNhYnMob3B0aW9ucy5yZXN1bHRzX2RpcmVjdG9y
eSk6CisgICAgaWYgbm90IHBvcnRfb2JqLl9maWxlc3lzdGVtLmlzYWJzKG9wdGlvbnMucmVzdWx0
c19kaXJlY3RvcnkpOgogICAgICAgICAjIFRoaXMgbm9ybWFsaXplcyB0aGUgcGF0aCB0byB0aGUg
YnVpbGQgZGlyLgogICAgICAgICAjIEZJWE1FOiBob3cgdGhpcyBoYXBwZW5zIGlzIG5vdCBhdCBh
bGwgb2J2aW91czsgdGhpcyBpcyBhIGR1bWIKICAgICAgICAgIyBpbnRlcmZhY2UgYW5kIHNob3Vs
ZCBiZSBjbGVhbmVkIHVwLgpAQCAtMTQyNiwxMyArMTQxOSwxMyBAQCBkZWYgX3NldF91cF9kZXJp
dmVkX29wdGlvbnMocG9ydF9vYmosIG9wdGlvbnMpOgogICAgIG9wdGlvbnMuc2xvd190aW1lX291
dF9tcyA9IHN0cig1ICogaW50KG9wdGlvbnMudGltZV9vdXRfbXMpKQogCiAKLWRlZiBfZ2F0aGVy
X3VuZXhwZWN0ZWRfcmVzdWx0cyhvcHRpb25zKToKK2RlZiBfZ2F0aGVyX3VuZXhwZWN0ZWRfcmVz
dWx0cyhmcywgb3B0aW9ucyk6CiAgICAgIiIiUmV0dXJucyB0aGUgdW5leHBlY3RlZCByZXN1bHRz
IGZyb20gdGhlIHByZXZpb3VzIHJ1biwgaWYgYW55LiIiIgogICAgIGxhc3RfdW5leHBlY3RlZF9y
ZXN1bHRzID0gW10KICAgICBpZiBvcHRpb25zLnByaW50X2xhc3RfZmFpbHVyZXMgb3Igb3B0aW9u
cy5yZXRlc3RfbGFzdF9mYWlsdXJlczoKLSAgICAgICAgdW5leHBlY3RlZF9yZXN1bHRzX2ZpbGVu
YW1lID0gb3MucGF0aC5qb2luKAotICAgICAgICBvcHRpb25zLnJlc3VsdHNfZGlyZWN0b3J5LCAi
dW5leHBlY3RlZF9yZXN1bHRzLmpzb24iKQotICAgICAgICB3aXRoIGNvZGVjcy5vcGVuKHVuZXhw
ZWN0ZWRfcmVzdWx0c19maWxlbmFtZSwgInIiLCAidXRmLTgiKSBhcyBmaWxlOgorICAgICAgICB1
bmV4cGVjdGVkX3Jlc3VsdHNfZmlsZW5hbWUgPSBmcy5qb2luKG9wdGlvbnMucmVzdWx0c19kaXJl
Y3RvcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVu
ZXhwZWN0ZWRfcmVzdWx0cy5qc29uIikKKyAgICAgICAgd2l0aCBmcy5vcGVuX3RleHRfZmlsZV9m
b3JfcmVhZGluZyh1bmV4cGVjdGVkX3Jlc3VsdHNfZmlsZW5hbWUpIGFzIGZpbGU6CiAgICAgICAg
ICAgICByZXN1bHRzID0gc2ltcGxlanNvbi5sb2FkKGZpbGUpCiAgICAgICAgIGxhc3RfdW5leHBl
Y3RlZF9yZXN1bHRzID0gcmVzdWx0c1sndGVzdHMnXS5rZXlzKCkKICAgICByZXR1cm4gbGFzdF91
bmV4cGVjdGVkX3Jlc3VsdHMKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfdW5pdHRlc3QucHkgYi9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX3VuaXR0ZXN0
LnB5CmluZGV4IDI0OGEyOTFkMzkzMDMyNWZjNzJjYmYwNmRmZDYyZTNhZDA2YTQyMmIuLmY4OTYz
N2I3ZTJlMzhlZjg3NzU2ZGQzNDcwZjU4ZmViNWJhNGI5YzUgMTAwNjQ0Ci0tLSBhL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfdW5pdHRl
c3QucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVu
X3dlYmtpdF90ZXN0c191bml0dGVzdC5weQpAQCAtMzAsMjYgKzMwLDI1IEBACiAKICIiIlVuaXQg
dGVzdHMgZm9yIHJ1bl93ZWJraXRfdGVzdHMuIiIiCiAKLWltcG9ydCBjb2RlY3MKIGltcG9ydCBp
dGVydG9vbHMKIGltcG9ydCBsb2dnaW5nCi1pbXBvcnQgb3MKIGltcG9ydCBRdWV1ZQotaW1wb3J0
IHNodXRpbAogaW1wb3J0IHN5cwotaW1wb3J0IHRlbXBmaWxlCiBpbXBvcnQgdGhyZWFkCiBpbXBv
cnQgdGltZQogaW1wb3J0IHRocmVhZGluZwogaW1wb3J0IHVuaXR0ZXN0CiAKIGZyb20gd2Via2l0
cHkuY29tbW9uIGltcG9ydCBhcnJheV9zdHJlYW0KK2Zyb20gd2Via2l0cHkuY29tbW9uIGltcG9y
dCBpbl9tZW1vcnlfZmlsZXN5c3RlbQogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtIGltcG9y
dCBvdXRwdXRjYXB0dXJlCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0IGV4ZWN1
dGl2ZV9tb2NrCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0IHVzZXIKIGZyb20g
d2Via2l0cHkubGF5b3V0X3Rlc3RzIGltcG9ydCBwb3J0CiBmcm9tIHdlYmtpdHB5LmxheW91dF90
ZXN0cyBpbXBvcnQgcnVuX3dlYmtpdF90ZXN0cwogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMu
bGF5b3V0X3BhY2thZ2UgaW1wb3J0IGR1bXBfcmVuZGVyX3RyZWVfdGhyZWFkCiBmcm9tIHdlYmtp
dHB5LmxheW91dF90ZXN0cy5wb3J0LnRlc3QgaW1wb3J0IFRlc3RQb3J0LCBUZXN0RHJpdmVyCitm
cm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0LmNvbmZpZ19tb2NrIGltcG9ydCBNb2NrQ29u
ZmlnCiBmcm9tIHdlYmtpdHB5LnB5dGhvbjI0LnZlcnNpb25pbmcgaW1wb3J0IGNvbXBhcmVfdmVy
c2lvbgogZnJvbSB3ZWJraXRweS50ZXN0LnNraXAgaW1wb3J0IHNraXBfaWYKIApAQCAtNjQsNDQg
KzYzLDgwIEBAIGNsYXNzIE1vY2tVc2VyKCk6CiAgICAgICAgIHNlbGYudXJsID0gdXJsCiAKIAor
ZGVmIG1vY2tfZmlsZXN5c3RlbSgpOgorICAgIGZpbGVzID0geworICAgICAgICAiL0xheW91dFRl
c3RzL2Zhc3QvaHRtbC9rZXlnZW4uaHRtbCI6ICI8aHRtbD5rZXlnZW48L2h0bWw+IiwKKyAgICAg
ICAgIi9MYXlvdXRUZXN0cy9mYXN0L2h0bWwvYXJ0aWNsZS1lbGVtZW50Lmh0bWwiOiAiPGh0bWw+
YXJ0aWNsZS1lbGVtZW50PC9odG1sPiIsCisgICAgICAgICIvTGF5b3V0VGVzdHMvZmFzdC9odG1s
L2FydGljbGUtZWxlbWVudC1leHBlY3RlZC50eHQiOiAiYXJ0aWNsZS1lbGVtZW50IiwKKyAgICAg
ICAgIi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9odG1sL2tleWdlbi1leHBlY3RlZC50
eHQiOiAia2V5Z2VuIiwKKyAgICAgICAgIi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9o
dG1sL2tleWdlbi1leHBlY3RlZC5jaGVja3N1bSI6ICJjaGVja3N1bSIsCisgICAgICAgICIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvaHRtbC9rZXlnZW4tZXhwZWN0ZWQucG5nIjogInBu
ZyIsCisgICAgICAgICIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXNub3dsZW9wYXJkL1NraXBw
ZWQiOiAiIiwKKyAgICAgICAgIi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZCI6ICIi
LAorICAgICAgICAiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy90ZXN0X2V4cGVjdGF0aW9ucy50
eHQiOiAiIiwKKyAgICAgICAgIi90bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy91bmV4cGVjdGVkX3Jl
c3VsdHMuanNvbiI6IE5vbmUsCisgICAgfQorICAgIHJldHVybiBpbl9tZW1vcnlfZmlsZXN5c3Rl
bS5Jbk1lbW9yeUZpbGVTeXN0ZW0oZmlsZXM9ZmlsZXMpCisKKworZGVmIHRlc3RfZmlsZXN5c3Rl
bSgpOgorICAgIHJldHVybiBwb3J0LnRlc3QudGVzdF9maWxlc3lzdGVtKCkKKworCiBkZWYgcGFz
c2luZ19ydW4oZXh0cmFfYXJncz1Ob25lLCBwb3J0X29iaj1Ob25lLCByZWNvcmRfcmVzdWx0cz1G
YWxzZSwKLSAgICAgICAgICAgICAgICB0ZXN0c19pbmNsdWRlZD1GYWxzZSk6CisgICAgICAgICAg
ICAgICAgdGVzdHNfaW5jbHVkZWQ9RmFsc2UsIGZpbGVzeXN0ZW09Tm9uZSk6CiAgICAgZXh0cmFf
YXJncyA9IGV4dHJhX2FyZ3Mgb3IgW10KICAgICBhcmdzID0gWyctLXByaW50JywgJ25vdGhpbmcn
XQorCisgICAgZSA9IGV4ZWN1dGl2ZV9tb2NrLk1vY2tFeGVjdXRpdmUyKCkKKyAgICBjID0gTW9j
a0NvbmZpZygpCiAgICAgaWYgbm90ICctLXBsYXRmb3JtJyBpbiBleHRyYV9hcmdzOgogICAgICAg
ICBhcmdzLmV4dGVuZChbJy0tcGxhdGZvcm0nLCAndGVzdCddKQorICAgICAgICBmaWxlc3lzdGVt
ID0gZmlsZXN5c3RlbSBvciB0ZXN0X2ZpbGVzeXN0ZW0oKQorICAgIGVsc2U6CisgICAgICAgIGZp
bGVzeXN0ZW0gPSBmaWxlc3lzdGVtIG9yIG1vY2tfZmlsZXN5c3RlbSgpCisKICAgICBpZiBub3Qg
cmVjb3JkX3Jlc3VsdHM6CiAgICAgICAgIGFyZ3MuYXBwZW5kKCctLW5vLXJlY29yZC1yZXN1bHRz
JykKKyAgICBpZiBub3QgJy0tY2hpbGQtcHJvY2Vzc2VzJyBpbiBleHRyYV9hcmdzOgorICAgICAg
ICBhcmdzLmV4dGVuZChbJy0tY2hpbGQtcHJvY2Vzc2VzJywgMV0pCiAgICAgYXJncy5leHRlbmQo
ZXh0cmFfYXJncykKICAgICBpZiBub3QgdGVzdHNfaW5jbHVkZWQ6CiAgICAgICAgICMgV2UgdXNl
IHRoZSBnbG9iIHRvIHRlc3QgdGhhdCBnbG9iYmluZyB3b3Jrcy4KICAgICAgICAgYXJncy5leHRl
bmQoWydwYXNzZXMnLAogICAgICAgICAgICAgICAgICAgICAgJ2h0dHAvdGVzdHMnLAotICAgICAg
ICAgICAgICAgICAgICAgJ2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzJywKKyAgICAgICAgICAg
ICAgICAgICAgICd3ZWJzb2NrZXQvdGVzdHMnLAogICAgICAgICAgICAgICAgICAgICAgJ2ZhaWx1
cmVzL2V4cGVjdGVkLyonXSkKICAgICBvcHRpb25zLCBwYXJzZWRfYXJncyA9IHJ1bl93ZWJraXRf
dGVzdHMucGFyc2VfYXJncyhhcmdzKQogICAgIGlmIG5vdCBwb3J0X29iajoKICAgICAgICAgcG9y
dF9vYmogPSBwb3J0LmdldChwb3J0X25hbWU9b3B0aW9ucy5wbGF0Zm9ybSwgb3B0aW9ucz1vcHRp
b25zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZz1jLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGV4ZWN1dGl2ZT1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZpbGVzeXN0ZW09ZmlsZXN5c3RlbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2Vy
PU1vY2tVc2VyKCkpCiAgICAgcmVzID0gcnVuX3dlYmtpdF90ZXN0cy5ydW4ocG9ydF9vYmosIG9w
dGlvbnMsIHBhcnNlZF9hcmdzKQogICAgIHJldHVybiByZXMgPT0gMAogCiAKLWRlZiBsb2dnaW5n
X3J1bihleHRyYV9hcmdzPU5vbmUsIHBvcnRfb2JqPU5vbmUsIHRlc3RzX2luY2x1ZGVkPUZhbHNl
KToKK2RlZiBsb2dnaW5nX3J1bihleHRyYV9hcmdzPU5vbmUsIHBvcnRfb2JqPU5vbmUsIHRlc3Rz
X2luY2x1ZGVkPUZhbHNlLAorICAgICAgICAgICAgICAgIGZpbGVzeXN0ZW09Tm9uZSk6CiAgICAg
ZXh0cmFfYXJncyA9IGV4dHJhX2FyZ3Mgb3IgW10KICAgICBhcmdzID0gWyctLW5vLXJlY29yZC1y
ZXN1bHRzJ10KICAgICBpZiBub3QgJy0tcGxhdGZvcm0nIGluIGV4dHJhX2FyZ3M6CiAgICAgICAg
IGFyZ3MuZXh0ZW5kKFsnLS1wbGF0Zm9ybScsICd0ZXN0J10pCisgICAgICAgIGZpbGVzeXN0ZW0g
PSBmaWxlc3lzdGVtIG9yIHRlc3RfZmlsZXN5c3RlbSgpCisgICAgZWxzZToKKyAgICAgICAgZmls
ZXN5c3RlbSA9IGZpbGVzeXN0ZW0gb3IgbW9ja19maWxlc3lzdGVtKCkKICAgICBhcmdzLmV4dGVu
ZChleHRyYV9hcmdzKQogICAgIGlmIG5vdCB0ZXN0c19pbmNsdWRlZDoKICAgICAgICAgYXJncy5l
eHRlbmQoWydwYXNzZXMnLAogICAgICAgICAgICAgICAgICAgICAgJ2h0dHAvdGVzdHMnLAotICAg
ICAgICAgICAgICAgICAgICAgJ2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzJywKKyAgICAgICAg
ICAgICAgICAgICAgICd3ZWJzb2NrZXQvdGVzdHMnLAogICAgICAgICAgICAgICAgICAgICAgJ2Zh
aWx1cmVzL2V4cGVjdGVkLyonXSkKICAgICBvcHRpb25zLCBwYXJzZWRfYXJncyA9IHJ1bl93ZWJr
aXRfdGVzdHMucGFyc2VfYXJncyhhcmdzKQogICAgIHVzZXIgPSBNb2NrVXNlcigpCiAgICAgaWYg
bm90IHBvcnRfb2JqOgotICAgICAgICBwb3J0X29iaiA9IHBvcnQuZ2V0KHBvcnRfbmFtZT1vcHRp
b25zLnBsYXRmb3JtLCBvcHRpb25zPW9wdGlvbnMsIHVzZXI9dXNlcikKKyAgICAgICAgcG9ydF9v
YmogPSBwb3J0LmdldChwb3J0X25hbWU9b3B0aW9ucy5wbGF0Zm9ybSwgb3B0aW9ucz1vcHRpb25z
LCB1c2VyPXVzZXIsIGZpbGVzeXN0ZW09ZmlsZXN5c3RlbSkKICAgICBidWlsZGJvdF9vdXRwdXQg
PSBhcnJheV9zdHJlYW0uQXJyYXlTdHJlYW0oKQogICAgIHJlZ3VsYXJfb3V0cHV0ID0gYXJyYXlf
c3RyZWFtLkFycmF5U3RyZWFtKCkKICAgICByZXMgPSBydW5fd2Via2l0X3Rlc3RzLnJ1bihwb3J0
X29iaiwgb3B0aW9ucywgcGFyc2VkX2FyZ3MsCkBAIC0xMTAsNyArMTQ1LDkgQEAgZGVmIGxvZ2dp
bmdfcnVuKGV4dHJhX2FyZ3M9Tm9uZSwgcG9ydF9vYmo9Tm9uZSwgdGVzdHNfaW5jbHVkZWQ9RmFs
c2UpOgogICAgIHJldHVybiAocmVzLCBidWlsZGJvdF9vdXRwdXQsIHJlZ3VsYXJfb3V0cHV0LCB1
c2VyKQogCiAKLWRlZiBnZXRfdGVzdHNfcnVuKGV4dHJhX2FyZ3M9Tm9uZSwgdGVzdHNfaW5jbHVk
ZWQ9RmFsc2UsIGZsYXR0ZW5fYmF0Y2hlcz1GYWxzZSk6CitkZWYgZ2V0X3Rlc3RzX3J1bihleHRy
YV9hcmdzPU5vbmUsIHRlc3RzX2luY2x1ZGVkPUZhbHNlLCBmbGF0dGVuX2JhdGNoZXM9RmFsc2Us
CisgICAgICAgICAgICAgICAgICBmaWxlc3lzdGVtPU5vbmUpOgorICAgIGZpbGVzeXN0ZW0gPSBm
aWxlc3lzdGVtIG9yIHRlc3RfZmlsZXN5c3RlbSgpCiAgICAgZXh0cmFfYXJncyA9IGV4dHJhX2Fy
Z3Mgb3IgW10KICAgICBhcmdzID0gWwogICAgICAgICAnLS1wcmludCcsICdub3RoaW5nJywKQEAg
LTE1MCw3ICsxODcsOCBAQCBkZWYgZ2V0X3Rlc3RzX3J1bihleHRyYV9hcmdzPU5vbmUsIHRlc3Rz
X2luY2x1ZGVkPUZhbHNlLCBmbGF0dGVuX2JhdGNoZXM9RmFsc2UpOgogICAgICAgICBkZWYgY3Jl
YXRlX2RyaXZlcihzZWxmLCBpbWFnZV9wYXRoLCBvcHRpb25zKToKICAgICAgICAgICAgIHJldHVy
biBSZWNvcmRpbmdUZXN0RHJpdmVyKHNlbGYsIGltYWdlX3BhdGgsIG9wdGlvbnMpCiAKLSAgICBy
ZWNvcmRpbmdfcG9ydCA9IFJlY29yZGluZ1Rlc3RQb3J0KG9wdGlvbnM9b3B0aW9ucywgdXNlcj11
c2VyKQorICAgIHJlY29yZGluZ19wb3J0ID0gUmVjb3JkaW5nVGVzdFBvcnQob3B0aW9ucz1vcHRp
b25zLCB1c2VyPXVzZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBm
aWxlc3lzdGVtPWZpbGVzeXN0ZW0pCiAgICAgbG9nZ2luZ19ydW4oZXh0cmFfYXJncz1hcmdzLCBw
b3J0X29iaj1yZWNvcmRpbmdfcG9ydCwgdGVzdHNfaW5jbHVkZWQ9VHJ1ZSkKIAogICAgIGlmIGZs
YXR0ZW5fYmF0Y2hlczoKQEAgLTIxOCw5ICsyNTYsMTIgQEAgY2xhc3MgTWFpblRlc3QodW5pdHRl
c3QuVGVzdENhc2UpOgogICAgICAgICAgICAgWydmYWlsdXJlcy9leHBlY3RlZC9rZXlib2FyZC5o
dG1sJ10sIHRlc3RzX2luY2x1ZGVkPVRydWUpCiAKICAgICBkZWYgdGVzdF9sYXN0X3Jlc3VsdHMo
c2VsZik6Ci0gICAgICAgIHBhc3NpbmdfcnVuKFsnLS1jbG9iYmVyLW9sZC1yZXN1bHRzJ10sIHJl
Y29yZF9yZXN1bHRzPVRydWUpCisgICAgICAgIGZzID0gdGVzdF9maWxlc3lzdGVtKCkKKyAgICAg
ICAgcGFzc2luZ19ydW4oWyctLWNsb2JiZXItb2xkLXJlc3VsdHMnXSwgcmVjb3JkX3Jlc3VsdHM9
VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgZmlsZXN5c3RlbT1mcykKICAgICAgICAgKHJlcywg
YnVpbGRib3Rfb3V0cHV0LCByZWd1bGFyX291dHB1dCwgdXNlcikgPSBsb2dnaW5nX3J1bigKLSAg
ICAgICAgICAgIFsnLS1wcmludC1sYXN0LWZhaWx1cmVzJ10pCisgICAgICAgICAgICBbJy0tcHJp
bnQtbGFzdC1mYWlsdXJlcyddLAorICAgICAgICAgICAgZmlsZXN5c3RlbT1mcykKICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChyZWd1bGFyX291dHB1dC5nZXQoKSwgWydcblxuJ10pCiAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoYnVpbGRib3Rfb3V0cHV0LmdldCgpLCBbXSkKIApAQCAtMjg2LDE1
ICszMjcsMTUgQEAgY2xhc3MgTWFpblRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBz
ZWxmLmFzc2VydEVxdWFscyhbJ3Bhc3Nlcy90ZXh0Lmh0bWwnXSwgdGVzdHNfcnVuKQogCiAgICAg
ZGVmIHRlc3RfdGVzdF9saXN0KHNlbGYpOgotICAgICAgICBmaWxlbmFtZSA9IHRlbXBmaWxlLm1r
dGVtcCgpCi0gICAgICAgIHRtcGZpbGUgPSBmaWxlKGZpbGVuYW1lLCBtb2RlPSd3KycpCi0gICAg
ICAgIHRtcGZpbGUud3JpdGUoJ3Bhc3Nlcy90ZXh0Lmh0bWwnKQotICAgICAgICB0bXBmaWxlLmNs
b3NlKCkKLSAgICAgICAgdGVzdHNfcnVuID0gZ2V0X3Rlc3RzX3J1bihbJy0tdGVzdC1saXN0PSVz
JyAlIGZpbGVuYW1lXSwgdGVzdHNfaW5jbHVkZWQ9VHJ1ZSwgZmxhdHRlbl9iYXRjaGVzPVRydWUp
CisgICAgICAgIGZpbGVuYW1lID0gInRtcGZpbGUiCisgICAgICAgIGZzID0gdGVzdF9maWxlc3lz
dGVtKCkKKyAgICAgICAgZnMuZmlsZXNbZmlsZW5hbWVdID0gInBhc3Nlcy90ZXh0Lmh0bWwiCisg
ICAgICAgIHRlc3RzX3J1biA9IGdldF90ZXN0c19ydW4oWyctLXRlc3QtbGlzdD0lcycgJSBmaWxl
bmFtZV0sIHRlc3RzX2luY2x1ZGVkPVRydWUsIGZsYXR0ZW5fYmF0Y2hlcz1UcnVlLCBmaWxlc3lz
dGVtPWZzKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhbJ3Bhc3Nlcy90ZXh0Lmh0bWwnXSwg
dGVzdHNfcnVuKQotICAgICAgICBvcy5yZW1vdmUoZmlsZW5hbWUpCisgICAgICAgIGZzLnJlbW92
ZShmaWxlbmFtZSkKICAgICAgICAgcmVzLCBvdXQsIGVyciwgdXNlciA9IGxvZ2dpbmdfcnVuKFsn
LS10ZXN0LWxpc3Q9JXMnICUgZmlsZW5hbWVdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdGVzdHNfaW5jbHVkZWQ9VHJ1ZSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRlc3RzX2luY2x1ZGVkPVRydWUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlc3lzdGVtPWZzKQogICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHJlcywgLTEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZXJyLmVtcHR5
KCkpCiAKQEAgLTMxMSwxMSArMzUyLDEzIEBAIGNsYXNzIE1haW5UZXN0KHVuaXR0ZXN0LlRlc3RD
YXNlKToKICAgICAgICAgIyBXZSBydW4gYSBjb25maWd1cmF0aW9uIHRoYXQgc2hvdWxkIGZhaWws
IHRvIGdlbmVyYXRlIG91dHB1dCwgdGhlbgogICAgICAgICAjIGxvb2sgZm9yIHdoYXQgdGhlIG91
dHB1dCByZXN1bHRzIHVybCB3YXMuCiAKLSAgICAgICAgdG1wZGlyID0gdGVtcGZpbGUubWtkdGVt
cCgpCi0gICAgICAgIHJlcywgb3V0LCBlcnIsIHVzZXIgPSBsb2dnaW5nX3J1bihbJy0tcmVzdWx0
cy1kaXJlY3Rvcnk9JyArIHRtcGRpcl0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0ZXN0c19pbmNsdWRlZD1UcnVlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHVzZXIudXJsLCBvcy5wYXRoLmpvaW4odG1wZGlyLCAncmVzdWx0cy5odG1sJykpCi0gICAgICAg
IHNodXRpbC5ybXRyZWUodG1wZGlyLCBpZ25vcmVfZXJyb3JzPVRydWUpCisgICAgICAgIGZzID0g
bW9ja19maWxlc3lzdGVtKCkKKyAgICAgICAgdG1wZGlyID0gZnMubWtkdGVtcCgpCisgICAgICAg
IHJlcywgb3V0LCBlcnIsIHVzZXIgPSBsb2dnaW5nX3J1bihbJy0tcmVzdWx0cy1kaXJlY3Rvcnk9
JyArIHN0cih0bXBkaXIpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRlc3RzX2luY2x1ZGVkPVRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmaWxlc3lzdGVtPWZzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHVzZXIu
dXJsLCBmcy5qb2luKHN0cih0bXBkaXIpLCAncmVzdWx0cy5odG1sJykpCisgICAgICAgIGZzLnJt
dHJlZShzdHIodG1wZGlyKSkKIAogICAgIGRlZiB0ZXN0X3Jlc3VsdHNfZGlyZWN0b3J5X2RlZmF1
bHQoc2VsZik6CiAgICAgICAgICMgV2UgcnVuIGEgY29uZmlndXJhdGlvbiB0aGF0IHNob3VsZCBm
YWlsLCB0byBnZW5lcmF0ZSBvdXRwdXQsIHRoZW4KQEAgLTM0Miw4ICszODUsMTEgQEAgY2xhc3Mg
TWFpblRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgICAgIGRlZiBnZXRfcG9ydF9mb3Jf
cnVuKGFyZ3MpOgogICAgICAgICAgICAgb3B0aW9ucywgcGFyc2VkX2FyZ3MgPSBydW5fd2Via2l0
X3Rlc3RzLnBhcnNlX2FyZ3MoYXJncykKLSAgICAgICAgICAgIHRlc3RfcG9ydCA9IEltYWdlRGlm
ZlRlc3RQb3J0KG9wdGlvbnM9b3B0aW9ucywgdXNlcj1Nb2NrVXNlcigpKQotICAgICAgICAgICAg
cGFzc2luZ19ydW4oYXJncywgcG9ydF9vYmo9dGVzdF9wb3J0LCB0ZXN0c19pbmNsdWRlZD1UcnVl
KQorICAgICAgICAgICAgZnMgPSB0ZXN0X2ZpbGVzeXN0ZW0oKQorICAgICAgICAgICAgdGVzdF9w
b3J0ID0gSW1hZ2VEaWZmVGVzdFBvcnQob3B0aW9ucz1vcHRpb25zLCB1c2VyPU1vY2tVc2VyKCks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlc3lzdGVtPWZz
KQorICAgICAgICAgICAgcGFzc2luZ19ydW4oYXJncywgcG9ydF9vYmo9dGVzdF9wb3J0LCB0ZXN0
c19pbmNsdWRlZD1UcnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgZmlsZXN5c3RlbT1mcykK
ICAgICAgICAgICAgIHJldHVybiB0ZXN0X3BvcnQKIAogICAgICAgICBiYXNlX2FyZ3MgPSBbJy0t
cGl4ZWwtdGVzdHMnLCAnZmFpbHVyZXMvZXhwZWN0ZWQvKiddCkBAIC0zNjIsMTcgKzQwOCw2IEBA
IGNsYXNzIE1haW5UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIE1haW5UZXN0ID0gc2tpcF9pZihN
YWluVGVzdCwgc3lzLnBsYXRmb3JtID09ICdjeWd3aW4nIGFuZCBjb21wYXJlX3ZlcnNpb24oc3lz
LCAnMi42JylbMF0gPCAwLCAnbmV3LXJ1bi13ZWJraXQtdGVzdHMgdGVzdHMgaGFuZyBvbiBDeWd3
aW4gUHl0aG9uIDIuNS4yJykKIAogCi1kZWYgX21vY2tlZF9vcGVuKG9yaWdpbmFsX29wZW4sIGZp
bGVfbGlzdCk6Ci0gICAgZGVmIF93cmFwcGVyKG5hbWUsIG1vZGUsIGVuY29kaW5nKToKLSAgICAg
ICAgaWYgbmFtZS5maW5kKCItZXhwZWN0ZWQuIikgIT0gLTEgYW5kIG1vZGUuZmluZCgidyIpICE9
IC0xOgotICAgICAgICAgICAgIyB3ZSBkb24ndCB3YW50IHRvIGFjdHVhbGx5IHdyaXRlIG5ldyBi
YXNlbGluZXMsIHNvIHN0dWIgdGhlc2Ugb3V0Ci0gICAgICAgICAgICBuYW1lLnJlcGxhY2UoJ1xc
JywgJy8nKQotICAgICAgICAgICAgZmlsZV9saXN0LmFwcGVuZChuYW1lKQotICAgICAgICAgICAg
cmV0dXJuIG9yaWdpbmFsX29wZW4ob3MuZGV2bnVsbCwgbW9kZSwgZW5jb2RpbmcpCi0gICAgICAg
IHJldHVybiBvcmlnaW5hbF9vcGVuKG5hbWUsIG1vZGUsIGVuY29kaW5nKQotICAgIHJldHVybiBf
d3JhcHBlcgotCi0KIGNsYXNzIFJlYmFzZWxpbmVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAg
ICBkZWYgYXNzZXJ0QmFzZWxpbmVzKHNlbGYsIGZpbGVfbGlzdCwgZmlsZSk6CiAgICAgICAgICJh
c3NlcnQgdGhhdCB0aGUgZmlsZV9saXN0IGNvbnRhaW5zIHRoZSBiYXNlbGluZXMuIiIiCkBAIC0z
ODAsNDkgKzQxNSwzNyBAQCBjbGFzcyBSZWJhc2VsaW5lVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6
CiAgICAgICAgICAgICBiYXNlbGluZSA9IGZpbGUgKyAiLWV4cGVjdGVkIiArIGV4dAogICAgICAg
ICAgICAgc2VsZi5hc3NlcnRUcnVlKGFueShmLmZpbmQoYmFzZWxpbmUpICE9IC0xIGZvciBmIGlu
IGZpbGVfbGlzdCkpCiAKLSAgICBkZWYgZGlzYWJsZWRfdGVzdF9yZXNldF9yZXN1bHRzKHNlbGYp
OgotICAgICAgICAjIEZJWE1FOiBUaGlzIHRlc3QgaXMgZGlzYWJsZWQgdW50aWwgd2UgY2FuIHJl
d3JpdGUgaXQgdG8gdXNlIGEKLSAgICAgICAgIyBtb2NrIGZpbGVzeXN0ZW0uCi0gICAgICAgICMK
KyAgICBkZWYgdGVzdF9yZXNldF9yZXN1bHRzKHNlbGYpOgogICAgICAgICAjIFRlc3QgdGhhdCB3
ZSB1cGRhdGUgZXhwZWN0YXRpb25zIGluIHBsYWNlLiBJZiB0aGUgZXhwZWN0YXRpb24KICAgICAg
ICAgIyBpcyBtaXNzaW5nLCB1cGRhdGUgdGhlIGV4cGVjdGVkIGdlbmVyaWMgbG9jYXRpb24uCi0g
ICAgICAgIGZpbGVfbGlzdCA9IFtdCisgICAgICAgIGZzID0gdGVzdF9maWxlc3lzdGVtKCkKICAg
ICAgICAgcGFzc2luZ19ydW4oWyctLXBpeGVsLXRlc3RzJywKICAgICAgICAgICAgICAgICAgICAg
ICAgICctLXJlc2V0LXJlc3VsdHMnLAogICAgICAgICAgICAgICAgICAgICAgICAgJ3Bhc3Nlcy9p
bWFnZS5odG1sJywKICAgICAgICAgICAgICAgICAgICAgICAgICdmYWlsdXJlcy9leHBlY3RlZC9t
aXNzaW5nX2ltYWdlLmh0bWwnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RzX2luY2x1
ZGVkPVRydWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGZpbGVfbGlzdCksIDYpCisg
ICAgICAgICAgICAgICAgICAgICAgICB0ZXN0c19pbmNsdWRlZD1UcnVlLCBmaWxlc3lzdGVtPWZz
KQorICAgICAgICBmaWxlX2xpc3QgPSBmcy53cml0dGVuX2ZpbGVzCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwobGVuKGZpbGVfbGlzdCksIDgpCiAgICAgICAgIHNlbGYuYXNzZXJ0QmFzZWxpbmVz
KGZpbGVfbGlzdCwKLSAgICAgICAgICAgICJkYXRhL3Bhc3Nlcy9pbWFnZSIpCisgICAgICAgICAg
ICAiL3Bhc3Nlcy9pbWFnZSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0QmFzZWxpbmVzKGZpbGVfbGlz
dCwKLSAgICAgICAgICAgICJkYXRhL2ZhaWx1cmVzL2V4cGVjdGVkL21pc3NpbmdfaW1hZ2UiKQor
ICAgICAgICAgICAgIi9mYWlsdXJlcy9leHBlY3RlZC9taXNzaW5nX2ltYWdlIikKIAotICAgIGRl
ZiBkaXNhYmxlZF90ZXN0X25ld19iYXNlbGluZShzZWxmKToKLSAgICAgICAgIyBGSVhNRTogVGhp
cyB0ZXN0IGlzIGRpc2FibGVkIHVudGlsIHdlIGNhbiByZXdyaXRlIGl0IHRvIHVzZSBhCi0gICAg
ICAgICMgbW9jayBmaWxlc3lzdGVtLgotICAgICAgICAjCisgICAgZGVmIHRlc3RfbmV3X2Jhc2Vs
aW5lKHNlbGYpOgogICAgICAgICAjIFRlc3QgdGhhdCB3ZSB1cGRhdGUgdGhlIHBsYXRmb3JtIGV4
cGVjdGF0aW9ucy4gSWYgdGhlIGV4cGVjdGF0aW9uCiAgICAgICAgICMgaXMgbXNzaW5nLCB0aGVu
IGNyZWF0ZSBhIG5ldyBleHBlY3RhdGlvbiBpbiB0aGUgcGxhdGZvcm0gZGlyLgotICAgICAgICBm
aWxlX2xpc3QgPSBbXQotICAgICAgICBvcmlnaW5hbF9vcGVuID0gY29kZWNzLm9wZW4KLSAgICAg
ICAgdHJ5OgotICAgICAgICAgICAgIyBUZXN0IHRoYXQgd2UgdXBkYXRlIHRoZSBwbGF0Zm9ybSBl
eHBlY3RhdGlvbnMuIElmIHRoZSBleHBlY3RhdGlvbgotICAgICAgICAgICAgIyBpcyBtc3Npbmcs
IHRoZW4gY3JlYXRlIGEgbmV3IGV4cGVjdGF0aW9uIGluIHRoZSBwbGF0Zm9ybSBkaXIuCi0gICAg
ICAgICAgICBmaWxlX2xpc3QgPSBbXQotICAgICAgICAgICAgY29kZWNzLm9wZW4gPSBfbW9ja2Vk
X29wZW4ob3JpZ2luYWxfb3BlbiwgZmlsZV9saXN0KQotICAgICAgICAgICAgcGFzc2luZ19ydW4o
WyctLXBpeGVsLXRlc3RzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnLS1uZXctYmFzZWxp
bmUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICdwYXNzZXMvaW1hZ2UuaHRtbCcsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgJ2ZhaWx1cmVzL2V4cGVjdGVkL21pc3NpbmdfaW1hZ2UuaHRt
bCddLAotICAgICAgICAgICAgICAgICAgICAgICAgdGVzdHNfaW5jbHVkZWQ9VHJ1ZSkKLSAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGZpbGVfbGlzdCksIDYpCi0gICAgICAgICAgICBz
ZWxmLmFzc2VydEJhc2VsaW5lcyhmaWxlX2xpc3QsCi0gICAgICAgICAgICAgICAgImRhdGEvcGxh
dGZvcm0vdGVzdC9wYXNzZXMvaW1hZ2UiKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRCYXNlbGlu
ZXMoZmlsZV9saXN0LAotICAgICAgICAgICAgICAgICJkYXRhL3BsYXRmb3JtL3Rlc3QvZmFpbHVy
ZXMvZXhwZWN0ZWQvbWlzc2luZ19pbWFnZSIpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAg
ICBjb2RlY3Mub3BlbiA9IG9yaWdpbmFsX29wZW4KKyAgICAgICAgZnMgPSB0ZXN0X2ZpbGVzeXN0
ZW0oKQorICAgICAgICBwYXNzaW5nX3J1bihbJy0tcGl4ZWwtdGVzdHMnLAorICAgICAgICAgICAg
ICAgICAgICAgICAgJy0tbmV3LWJhc2VsaW5lJywKKyAgICAgICAgICAgICAgICAgICAgICAgICdw
YXNzZXMvaW1hZ2UuaHRtbCcsCisgICAgICAgICAgICAgICAgICAgICAgICAnZmFpbHVyZXMvZXhw
ZWN0ZWQvbWlzc2luZ19pbWFnZS5odG1sJ10sCisgICAgICAgICAgICAgICAgICAgIHRlc3RzX2lu
Y2x1ZGVkPVRydWUsIGZpbGVzeXN0ZW09ZnMpCisgICAgICAgIGZpbGVfbGlzdCA9IGZzLndyaXR0
ZW5fZmlsZXMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZmlsZV9saXN0KSwgOCkKKyAg
ICAgICAgc2VsZi5hc3NlcnRCYXNlbGluZXMoZmlsZV9saXN0LAorICAgICAgICAgICAgIi9wbGF0
Zm9ybS90ZXN0L3Bhc3Nlcy9pbWFnZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0QmFzZWxpbmVzKGZp
bGVfbGlzdCwKKyAgICAgICAgICAgICIvcGxhdGZvcm0vdGVzdC9mYWlsdXJlcy9leHBlY3RlZC9t
aXNzaW5nX2ltYWdlIikKIAogCiBjbGFzcyBUZXN0UnVubmVyV3JhcHBlcihydW5fd2Via2l0X3Rl
c3RzLlRlc3RSdW5uZXIpOgpAQCAtNTA4LDkgKzUzMSw5IEBAIGNsYXNzIERyeXJ1blRlc3QodW5p
dHRlc3QuVGVzdENhc2UpOgogCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwYXNzaW5nX3J1bihb
Jy0tcGxhdGZvcm0nLCAndGVzdCddKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBhc3Npbmdf
cnVuKFsnLS1wbGF0Zm9ybScsICdkcnlydW4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICdmYXN0L2h0bWwnXSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ2Zhc3QvaHRtbCddLCB0ZXN0c19pbmNsdWRlZD1UcnVlKSkKICAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKHBhc3NpbmdfcnVuKFsnLS1wbGF0Zm9ybScsICdkcnlydW4tbWFjJywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZmFzdC9odG1sJ10pKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmYXN0L2h0bWwnXSwgdGVzdHNfaW5jbHVkZWQ9
VHJ1ZSkpCiAKICAgICBkZWYgdGVzdF90ZXN0KHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFRy
dWUocGFzc2luZ19ydW4oWyctLXBsYXRmb3JtJywgJ2RyeXJ1bi10ZXN0JywKQEAgLTU5NCw5ICs2
MTcsMTEgQEAgY2xhc3MgV2FpdEZvclRocmVhZHNUb0ZpbmlzaFRlc3QodW5pdHRlc3QuVGVzdENh
c2UpOgogICAgIGRlZiB0ZXN0X3RpbWVvdXQoc2VsZik6CiAgICAgICAgIG9jID0gb3V0cHV0Y2Fw
dHVyZS5PdXRwdXRDYXB0dXJlKCkKICAgICAgICAgb2MuY2FwdHVyZV9vdXRwdXQoKQotICAgICAg
ICBpbnRlcnJ1cHRlZCA9IHNlbGYucnVuX29uZV90aHJlYWQoJ1RpbWVvdXQnKQotICAgICAgICBz
ZWxmLmFzc2VydEZhbHNlKGludGVycnVwdGVkKQotICAgICAgICBvYy5yZXN0b3JlX291dHB1dCgp
CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGludGVycnVwdGVkID0gc2VsZi5ydW5fb25lX3Ro
cmVhZCgnVGltZW91dCcpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGludGVycnVwdGVk
KQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgb2MucmVzdG9yZV9vdXRwdXQoKQogCiAg
ICAgZGVmIHRlc3RfZXhjZXB0aW9uKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhW
YWx1ZUVycm9yLCBzZWxmLnJ1bl9vbmVfdGhyZWFkLCAnRXhjZXB0aW9uJykKQEAgLTYwNiwyNCAr
NjMxLDI2IEBAIGNsYXNzIFN0YW5kYWxvbmVGdW5jdGlvbnNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNl
KToKICAgICBkZWYgdGVzdF9sb2dfd2VkZ2VkX3RocmVhZChzZWxmKToKICAgICAgICAgb2MgPSBv
dXRwdXRjYXB0dXJlLk91dHB1dENhcHR1cmUoKQogICAgICAgICBvYy5jYXB0dXJlX291dHB1dCgp
Ci0gICAgICAgIGxvZ2dlciA9IHJ1bl93ZWJraXRfdGVzdHMuX2xvZwotICAgICAgICBhc3RyZWFt
ID0gYXJyYXlfc3RyZWFtLkFycmF5U3RyZWFtKCkKLSAgICAgICAgaGFuZGxlciA9IFRlc3RIYW5k
bGVyKGFzdHJlYW0pCi0gICAgICAgIGxvZ2dlci5hZGRIYW5kbGVyKGhhbmRsZXIpCi0KLSAgICAg
ICAgc3RhcnRpbmdfcXVldWUgPSBRdWV1ZS5RdWV1ZSgpCi0gICAgICAgIHN0b3BwaW5nX3F1ZXVl
ID0gUXVldWUuUXVldWUoKQotICAgICAgICBjaGlsZF90aHJlYWQgPSBUZXN0VGhyZWFkKHN0YXJ0
aW5nX3F1ZXVlLCBzdG9wcGluZ19xdWV1ZSkKLSAgICAgICAgY2hpbGRfdGhyZWFkLnN0YXJ0KCkK
LSAgICAgICAgbXNnID0gc3RhcnRpbmdfcXVldWUuZ2V0KCkKLQotICAgICAgICBydW5fd2Via2l0
X3Rlc3RzLl9sb2dfd2VkZ2VkX3RocmVhZChjaGlsZF90aHJlYWQpCi0gICAgICAgIHN0b3BwaW5n
X3F1ZXVlLnB1dCgnJykKLSAgICAgICAgY2hpbGRfdGhyZWFkLmpvaW4odGltZW91dD0xLjApCi0K
LSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShhc3RyZWFtLmVtcHR5KCkpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RmFsc2UoY2hpbGRfdGhyZWFkLmlzQWxpdmUoKSkKLSAgICAgICAgb2MucmVzdG9yZV9v
dXRwdXQoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBsb2dnZXIgPSBydW5fd2Via2l0X3Rl
c3RzLl9sb2cKKyAgICAgICAgICAgIGFzdHJlYW0gPSBhcnJheV9zdHJlYW0uQXJyYXlTdHJlYW0o
KQorICAgICAgICAgICAgaGFuZGxlciA9IFRlc3RIYW5kbGVyKGFzdHJlYW0pCisgICAgICAgICAg
ICBsb2dnZXIuYWRkSGFuZGxlcihoYW5kbGVyKQorCisgICAgICAgICAgICBzdGFydGluZ19xdWV1
ZSA9IFF1ZXVlLlF1ZXVlKCkKKyAgICAgICAgICAgIHN0b3BwaW5nX3F1ZXVlID0gUXVldWUuUXVl
dWUoKQorICAgICAgICAgICAgY2hpbGRfdGhyZWFkID0gVGVzdFRocmVhZChzdGFydGluZ19xdWV1
ZSwgc3RvcHBpbmdfcXVldWUpCisgICAgICAgICAgICBjaGlsZF90aHJlYWQuc3RhcnQoKQorICAg
ICAgICAgICAgbXNnID0gc3RhcnRpbmdfcXVldWUuZ2V0KCkKKworICAgICAgICAgICAgcnVuX3dl
YmtpdF90ZXN0cy5fbG9nX3dlZGdlZF90aHJlYWQoY2hpbGRfdGhyZWFkKQorICAgICAgICAgICAg
c3RvcHBpbmdfcXVldWUucHV0KCcnKQorICAgICAgICAgICAgY2hpbGRfdGhyZWFkLmpvaW4odGlt
ZW91dD0xLjApCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYXN0cmVhbS5lbXB0eSgp
KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjaGlsZF90aHJlYWQuaXNBbGl2ZSgpKQor
ICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgb2MucmVzdG9yZV9vdXRwdXQoKQogCiAKIGlm
IF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy90ZXN0X3R5cGVzL2ltYWdlX2RpZmYucHkgYi9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy90ZXN0X3R5cGVzL2ltYWdlX2RpZmYu
cHkKaW5kZXggMGIwNTgwMjBjMDhmNGY1MWMxMTYyMDRkYzU0Y2JmNWQ5YzNlN2M2Zi4uM2VkYThh
OGI1NDBlMGVkYTc1ODY1NTYxOTU0NTUyZGM3OGM5YzU0ZSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdGVzdF90eXBlcy9pbWFnZV9kaWZmLnB5
CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Rlc3RfdHlw
ZXMvaW1hZ2VfZGlmZi5weQpAQCAtMzQsMTMgKzM0LDggQEAgbWF0Y2gsIHJldHVybnMgRmFpbHVy
ZUltYWdlSGFzaE1pc21hdGNoIGFuZCBvdXRwdXRzIGJvdGggaGFzaGVzIGludG8gdGhlIGxheW91
dAogdGVzdCByZXN1bHRzIGRpcmVjdG9yeS4KICIiIgogCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0
IHdpdGhfc3RhdGVtZW50Ci0KLWltcG9ydCBjb2RlY3MKIGltcG9ydCBlcnJubwogaW1wb3J0IGxv
Z2dpbmcKLWltcG9ydCBvcwotaW1wb3J0IHNodXRpbAogCiBmcm9tIHdlYmtpdHB5LmxheW91dF90
ZXN0cy5sYXlvdXRfcGFja2FnZSBpbXBvcnQgdGVzdF9mYWlsdXJlcwogZnJvbSB3ZWJraXRweS5s
YXlvdXRfdGVzdHMudGVzdF90eXBlcyBpbXBvcnQgdGVzdF90eXBlX2Jhc2UKQEAgLTY2LDggKzYx
LDggQEAgY2xhc3MgSW1hZ2VEaWZmKHRlc3RfdHlwZV9iYXNlLlRlc3RUeXBlQmFzZSk6CiAgICAg
ICAgIHNlbGYuX21ha2Vfb3V0cHV0X2RpcmVjdG9yeSh0ZXN0X2ZpbGVuYW1lKQogICAgICAgICBk
ZXN0X2ltYWdlID0gc2VsZi5vdXRwdXRfZmlsZW5hbWUodGVzdF9maWxlbmFtZSwgZXh0ZW5zaW9u
KQogCi0gICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHNvdXJjZV9pbWFnZSk6Ci0gICAgICAgICAg
ICBzaHV0aWwuY29weWZpbGUoc291cmNlX2ltYWdlLCBkZXN0X2ltYWdlKQorICAgICAgICBpZiBz
ZWxmLl9wb3J0Ll9maWxlc3lzdGVtLmV4aXN0cyhzb3VyY2VfaW1hZ2UpOgorICAgICAgICAgICAg
c2VsZi5fcG9ydC5fZmlsZXN5c3RlbS5jb3B5ZmlsZShzb3VyY2VfaW1hZ2UsIGRlc3RfaW1hZ2Up
CiAKICAgICBkZWYgX3NhdmVfYmFzZWxpbmVfZmlsZXMoc2VsZiwgZmlsZW5hbWUsIHBuZ19wYXRo
LCBjaGVja3N1bSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGVfbmV3X2Jh
c2VsaW5lKToKQEAgLTgwLDggKzc1LDcgQEAgY2xhc3MgSW1hZ2VEaWZmKHRlc3RfdHlwZV9iYXNl
LlRlc3RUeXBlQmFzZSk6CiAgICAgICAgICAgZ2VuZXJhdGVfbmV3X2Jhc2VsaW5lOiB3aGV0aGVy
IHRvIGdlbmVyYXRlIGEgbmV3LCBwbGF0Zm9ybS1zcGVjaWZpYwogICAgICAgICAgICAgYmFzZWxp
bmUsIG9yIHVwZGF0ZSB0aGUgZXhpc3Rpbmcgb25lCiAgICAgICAgICIiIgotICAgICAgICB3aXRo
IG9wZW4ocG5nX3BhdGgsICJyYiIpIGFzIHBuZ19maWxlOgotICAgICAgICAgICAgcG5nX2RhdGEg
PSBwbmdfZmlsZS5yZWFkKCkKKyAgICAgICAgcG5nX2RhdGEgPSBzZWxmLl9wb3J0Ll9maWxlc3lz
dGVtLnJlYWRfYmluYXJ5X2ZpbGUocG5nX3BhdGgpCiAgICAgICAgIHNlbGYuX3NhdmVfYmFzZWxp
bmVfZGF0YShmaWxlbmFtZSwgcG5nX2RhdGEsICIucG5nIiwgZW5jb2Rpbmc9Tm9uZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlX25ld19iYXNlbGluZT1nZW5lcmF0
ZV9uZXdfYmFzZWxpbmUpCiAgICAgICAgIHNlbGYuX3NhdmVfYmFzZWxpbmVfZGF0YShmaWxlbmFt
ZSwgY2hlY2tzdW0sICIuY2hlY2tzdW0iLApAQCAtMTA0LDggKzk4LDcgQEAgY2xhc3MgSW1hZ2VE
aWZmKHRlc3RfdHlwZV9iYXNlLlRlc3RUeXBlQmFzZSk6CiAgICAgICAgICAgc2VsZi5GSUxFTkFN
RV9TVUZGSVhfRVhQRUNURUQgKyAnLnBuZycpCiAKICAgICAgICAgZXhwZWN0ZWRfaW1hZ2UgPSBw
b3J0LmV4cGVjdGVkX2ltYWdlKGZpbGVuYW1lKQotICAgICAgICB3aXRoIGNvZGVjcy5vcGVuKGFj
dHVhbF9maWxlbmFtZSwgJ3IrYicsIE5vbmUpIGFzIGZpbGU6Ci0gICAgICAgICAgICBhY3R1YWxf
aW1hZ2UgPSBmaWxlLnJlYWQoKQorICAgICAgICBhY3R1YWxfaW1hZ2UgPSBwb3J0Ll9maWxlc3lz
dGVtLnJlYWRfYmluYXJ5X2ZpbGUoYWN0dWFsX2ZpbGVuYW1lKQogCiAgICAgICAgIHJlc3VsdCA9
IHBvcnQuZGlmZl9pbWFnZShleHBlY3RlZF9pbWFnZSwgYWN0dWFsX2ltYWdlLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZGlmZl9maWxlbmFtZSkKZGlmZiAtLWdpdCBhL1dlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Rlc3RfdHlwZXMvdGVzdF90eXBl
X2Jhc2UucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy90ZXN0
X3R5cGVzL3Rlc3RfdHlwZV9iYXNlLnB5CmluZGV4IGRjYzY0YTM1YjMzOWRmOTg4MGFhYzA1Mzhm
N2U4NTU5NzI1ODBiMTMuLjkyYTcxNTY1Y2Y4MTUwZTNmMmNmZTQzODNjNzJhYjEzZjU4MzkxYzIg
MTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Rl
c3RfdHlwZXMvdGVzdF90eXBlX2Jhc2UucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvdGVzdF90eXBlcy90ZXN0X3R5cGVfYmFzZS5weQpAQCAtMzIsMTMg
KzMyLDkgQEAKIEFsc28gZGVmaW5lcyB0aGUgVGVzdEFyZ3VtZW50cyAic3RydWN0IiB0byBwYXNz
IHRoZW0gYWRkaXRpb25hbCBhcmd1bWVudHMuCiAiIiIKIAotZnJvbSBfX2Z1dHVyZV9fIGltcG9y
dCB3aXRoX3N0YXRlbWVudAotCi1pbXBvcnQgY29kZWNzCiBpbXBvcnQgY2dpCiBpbXBvcnQgZXJy
bm8KIGltcG9ydCBsb2dnaW5nCi1pbXBvcnQgb3MucGF0aAogCiBfbG9nID0gbG9nZ2luZy5nZXRM
b2dnZXIoIndlYmtpdHB5LmxheW91dF90ZXN0cy50ZXN0X3R5cGVzLnRlc3RfdHlwZV9iYXNlIikK
IApAQCAtODYsOSArODIsOSBAQCBjbGFzcyBUZXN0VHlwZUJhc2Uob2JqZWN0KToKICAgICBkZWYg
X21ha2Vfb3V0cHV0X2RpcmVjdG9yeShzZWxmLCBmaWxlbmFtZSk6CiAgICAgICAgICIiIkNyZWF0
ZXMgdGhlIG91dHB1dCBkaXJlY3RvcnkgKGlmIG5lZWRlZCkgZm9yIGEgZ2l2ZW4gdGVzdAogICAg
ICAgICBmaWxlbmFtZS4iIiIKLSAgICAgICAgb3V0cHV0X2ZpbGVuYW1lID0gb3MucGF0aC5qb2lu
KHNlbGYuX3Jvb3Rfb3V0cHV0X2RpciwKKyAgICAgICAgb3V0cHV0X2ZpbGVuYW1lID0gc2VsZi5f
cG9ydC5fZmlsZXN5c3RlbS5qb2luKHNlbGYuX3Jvb3Rfb3V0cHV0X2RpciwKICAgICAgICAgICAg
IHNlbGYuX3BvcnQucmVsYXRpdmVfdGVzdF9maWxlbmFtZShmaWxlbmFtZSkpCi0gICAgICAgIHNl
bGYuX3BvcnQubWF5YmVfbWFrZV9kaXJlY3Rvcnkob3MucGF0aC5zcGxpdChvdXRwdXRfZmlsZW5h
bWUpWzBdKQorICAgICAgICBzZWxmLl9wb3J0Lm1heWJlX21ha2VfZGlyZWN0b3J5KHNlbGYuX3Bv
cnQuX2ZpbGVzeXN0ZW0uc3BsaXQob3V0cHV0X2ZpbGVuYW1lKVswXSkKIAogICAgIGRlZiBfc2F2
ZV9iYXNlbGluZV9kYXRhKHNlbGYsIGZpbGVuYW1lLCBkYXRhLCBtb2RpZmllciwgZW5jb2Rpbmcs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGVfbmV3X2Jhc2VsaW5lPVRydWUp
OgpAQCAtMTA3LDE0ICsxMDMsMTQgQEAgY2xhc3MgVGVzdFR5cGVCYXNlKG9iamVjdCk6CiAgICAg
ICAgICIiIgogCiAgICAgICAgIGlmIGdlbmVyYXRlX25ld19iYXNlbGluZToKLSAgICAgICAgICAg
IHJlbGF0aXZlX2RpciA9IG9zLnBhdGguZGlybmFtZSgKKyAgICAgICAgICAgIHJlbGF0aXZlX2Rp
ciA9IHNlbGYuX3BvcnQuX2ZpbGVzeXN0ZW0uZGlybmFtZSgKICAgICAgICAgICAgICAgICBzZWxm
Ll9wb3J0LnJlbGF0aXZlX3Rlc3RfZmlsZW5hbWUoZmlsZW5hbWUpKQogICAgICAgICAgICAgYmFz
ZWxpbmVfcGF0aCA9IHNlbGYuX3BvcnQuYmFzZWxpbmVfcGF0aCgpCi0gICAgICAgICAgICBvdXRw
dXRfZGlyID0gb3MucGF0aC5qb2luKGJhc2VsaW5lX3BhdGgsIHJlbGF0aXZlX2RpcikKLSAgICAg
ICAgICAgIG91dHB1dF9maWxlID0gb3MucGF0aC5iYXNlbmFtZShvcy5wYXRoLnNwbGl0ZXh0KGZp
bGVuYW1lKVswXSArCisgICAgICAgICAgICBvdXRwdXRfZGlyID0gc2VsZi5fcG9ydC5fZmlsZXN5
c3RlbS5qb2luKGJhc2VsaW5lX3BhdGgsIHJlbGF0aXZlX2RpcikKKyAgICAgICAgICAgIG91dHB1
dF9maWxlID0gc2VsZi5fcG9ydC5fZmlsZXN5c3RlbS5iYXNlbmFtZShzZWxmLl9wb3J0Ll9maWxl
c3lzdGVtLnNwbGl0ZXh0KGZpbGVuYW1lKVswXSArCiAgICAgICAgICAgICAgICAgc2VsZi5GSUxF
TkFNRV9TVUZGSVhfRVhQRUNURUQgKyBtb2RpZmllcikKICAgICAgICAgICAgIHNlbGYuX3BvcnQu
bWF5YmVfbWFrZV9kaXJlY3Rvcnkob3V0cHV0X2RpcikKLSAgICAgICAgICAgIG91dHB1dF9wYXRo
ID0gb3MucGF0aC5qb2luKG91dHB1dF9kaXIsIG91dHB1dF9maWxlKQorICAgICAgICAgICAgb3V0
cHV0X3BhdGggPSBzZWxmLl9wb3J0Ll9maWxlc3lzdGVtLmpvaW4ob3V0cHV0X2Rpciwgb3V0cHV0
X2ZpbGUpCiAgICAgICAgICAgICBfbG9nLmRlYnVnKCd3cml0aW5nIG5ldyBiYXNlbGluZSByZXN1
bHQgIiVzIicgJSAob3V0cHV0X3BhdGgpKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgb3V0
cHV0X3BhdGggPSBzZWxmLl9wb3J0LmV4cGVjdGVkX2ZpbGVuYW1lKGZpbGVuYW1lLCBtb2RpZmll
cikKQEAgLTEzNiw5ICsxMzIsOSBAQCBjbGFzcyBUZXN0VHlwZUJhc2Uob2JqZWN0KToKICAgICAg
ICAgUmV0dXJuOgogICAgICAgICAgIFRoZSBhYnNvbHV0ZSB3aW5kb3dzIHBhdGggdG8gdGhlIG91
dHB1dCBmaWxlbmFtZQogICAgICAgICAiIiIKLSAgICAgICAgb3V0cHV0X2ZpbGVuYW1lID0gb3Mu
cGF0aC5qb2luKHNlbGYuX3Jvb3Rfb3V0cHV0X2RpciwKKyAgICAgICAgb3V0cHV0X2ZpbGVuYW1l
ID0gc2VsZi5fcG9ydC5fZmlsZXN5c3RlbS5qb2luKHNlbGYuX3Jvb3Rfb3V0cHV0X2RpciwKICAg
ICAgICAgICAgIHNlbGYuX3BvcnQucmVsYXRpdmVfdGVzdF9maWxlbmFtZShmaWxlbmFtZSkpCi0g
ICAgICAgIHJldHVybiBvcy5wYXRoLnNwbGl0ZXh0KG91dHB1dF9maWxlbmFtZSlbMF0gKyBtb2Rp
ZmllcgorICAgICAgICByZXR1cm4gc2VsZi5fcG9ydC5fZmlsZXN5c3RlbS5zcGxpdGV4dChvdXRw
dXRfZmlsZW5hbWUpWzBdICsgbW9kaWZpZXIKIAogICAgIGRlZiBjb21wYXJlX291dHB1dChzZWxm
LCBwb3J0LCBmaWxlbmFtZSwgb3V0cHV0LCB0ZXN0X2FyZ3MsIGNvbmZpZ3VyYXRpb24pOgogICAg
ICAgICAiIiJNZXRob2QgdGhhdCBjb21wYXJlcyB0aGUgb3V0cHV0IGZyb20gdGhlIHRlc3Qgd2l0
aCB0aGUKQEAgLTE2MSwxMSArMTU3LDEwIEBAIGNsYXNzIFRlc3RUeXBlQmFzZShvYmplY3QpOgog
ICAgIGRlZiBfd3JpdGVfaW50b19maWxlX2F0X3BhdGgoc2VsZiwgZmlsZV9wYXRoLCBjb250ZW50
cywgZW5jb2RpbmcpOgogICAgICAgICAiIiJUaGlzIG1ldGhvZCBhc3N1bWVzIHRoYXQgYnl0ZV9h
cnJheSBpcyBhbHJlYWR5IGVuY29kZWQKICAgICAgICAgaW50byB0aGUgcmlnaHQgZm9ybWF0LiIi
IgotICAgICAgICBvcGVuX21vZGUgPSAndycKICAgICAgICAgaWYgZW5jb2RpbmcgaXMgTm9uZToK
LSAgICAgICAgICAgIG9wZW5fbW9kZSA9ICd3K2InCi0gICAgICAgIHdpdGggY29kZWNzLm9wZW4o
ZmlsZV9wYXRoLCBvcGVuX21vZGUsIGVuY29kaW5nPWVuY29kaW5nKSBhcyBmaWxlOgotICAgICAg
ICAgICAgZmlsZS53cml0ZShjb250ZW50cykKKyAgICAgICAgICAgIHNlbGYuX3BvcnQuX2ZpbGVz
eXN0ZW0ud3JpdGVfYmluYXJ5X2ZpbGUoZmlsZV9wYXRoLCBjb250ZW50cykKKyAgICAgICAgZWxz
ZToKKyAgICAgICAgICAgIHNlbGYuX3BvcnQuX2ZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9maWxlKGZp
bGVfcGF0aCwgY29udGVudHMpCiAKICAgICBkZWYgd3JpdGVfb3V0cHV0X2ZpbGVzKHNlbGYsIGZp
bGVuYW1lLCBmaWxlX3R5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQsIGV4
cGVjdGVkLCBlbmNvZGluZywK
</data>

          </attachment>
      

    </bug>

</bugzilla>