<?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>63439</bug_id>
          
          <creation_ts>2011-06-27 01:48:28 -0700</creation_ts>
          <short_desc>new-run-webkit-tests needs a --webkit-test-runner option</short_desc>
          <delta_ts>2011-06-28 14:44:36 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>63476</dependson>
          <blocked>56729</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Eric Seidel (no email)">eric</assigned_to>
          <cc>abarth</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>427779</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-06-27 01:48:28 -0700</bug_when>
    <thetext>new-run-webkit-tests needs a --webkit-test-runner option</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>427784</commentid>
    <comment_count>1</comment_count>
      <attachid>98683</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-06-27 01:54:56 -0700</bug_when>
    <thetext>Created attachment 98683
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>427789</commentid>
    <comment_count>2</comment_count>
      <attachid>98683</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-27 01:57:33 -0700</bug_when>
    <thetext>Comment on attachment 98683
Patch

Ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428084</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-27 10:42:34 -0700</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 98683:

http/tests/local/formdata/send-form-data-constructed-from-form.html bug 62431 (author: jianli@chromium.org)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428087</commentid>
    <comment_count>4</comment_count>
      <attachid>98683</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-27 10:44:08 -0700</bug_when>
    <thetext>Comment on attachment 98683
Patch

Clearing flags on attachment: 98683

Committed r89834: &lt;http://trac.webkit.org/changeset/89834&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428088</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-27 10:44:13 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428239</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-27 13:47:54 -0700</bug_when>
    <thetext>======================================================================
FAIL: test_build_driver (webkitpy.layout_tests.port.webkit_unittest.WebKitPortTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File &quot;/Users/abarth/svn/webkit/Tools/Scripts/webkitpy/layout_tests/port/webkit_unittest.py&quot;, line 124, in test_build_driver
    self.assertTrue(output.assert_outputs(self, port._build_driver, expected_stderr=expected_stderr))
  File &quot;/Users/abarth/svn/webkit/Tools/Scripts/webkitpy/common/system/outputcapture.py&quot;, line 66, in assert_outputs
    testcase.assertEqual(stderr_string, expected_stderr)
AssertionError: &quot;MOCK run_command: [&apos;/Users/abarth/svn/webkit/Tools/Scripts/build-dumprendertree&apos;, &apos;--release&apos;]\n&quot; != &quot;MOCK run_command: [&apos;/Projects/WebKit/Tools/Scripts/build-dumprendertree&apos;, &apos;--release&apos;]\n&quot;

======================================================================
FAIL: test_run_singly_actually_runs_tests (webkitpy.layout_tests.run_webkit_tests_integrationtest.MainTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File &quot;/Users/abarth/svn/webkit/Tools/Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py&quot;, line 351, in test_run_singly_actually_runs_tests
    self.assertEquals(res, 5)
AssertionError: 6 != 5

======================================================================
FAIL: test_unexpected_failures (webkitpy.layout_tests.run_webkit_tests_integrationtest.MainTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File &quot;/Users/abarth/svn/webkit/Tools/Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py&quot;, line 403, in test_unexpected_failures
    self.assertEqual(res, unexpected_tests_count)
AssertionError: 6 != 5

----------------------------------------------------------------------
Ran 1035 tests in 25.396s

FAILED (failures=3)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428260</commentid>
    <comment_count>7</comment_count>
      <attachid>98683</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-06-27 13:56:18 -0700</bug_when>
    <thetext>Comment on attachment 98683
Patch

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

&gt; Tools/Scripts/webkitpy/layout_tests/port/config.py:107
&gt; +    # if scm.find_checkout_root() is broken for Chromium, we should fix (or at least wrap) it!

scm.find_checkout_root() is a generic routine to find the top of a given VCS&apos;s checkout. It does not (ostensibly) have anything to do with the actual top of the webkit tree, since it can be reused in other non-webkit checkouts (this is what I was told by you and Adam about the intent of the scm module, at least).

If you want the checkout module to be webkit-specific, then it would be great if that had an equivalent to config.webkit_base_dir. 

FWIW, the whole config module should really be moved into webkitpy/common somewhere, since none of it is layout-test-specific.

Note that any routine that would replace this one has to support at least two uses that Chromium needs:

1) Working in a bare tree (one that doesn&apos;t have .git or .svn metadata directories); this is a requested feature for the chromium test bots

2) Working in a tree where the top of the webkit directory != the top of the checkout, and where you may not have everything in the checkout present (in Chromium, for example, they check out the Source and LayoutTests directories directly, rather than checking out the whole tree).

&gt; Tools/Scripts/webkitpy/layout_tests/port/webkit_unittest.py:-114
&gt; -    unittest.main()

Why did you delete these lines? I frequently run tests of individual modules this way, and would prefer that they stay in the files.

&gt; Tools/Scripts/webkitpy/layout_tests/run_webkit_tests.py:271
&gt; +            help=&quot;Run a concurrent JavaScript thead with each test&quot;),

Nit. Typo: &quot;thread&quot;, not &quot;thead&quot;

&gt; Tools/Scripts/webkitpy/tool/bot/queueengine_unittest.py:163
&gt; +        OutputCapture().assert_outputs(self, engine.run, expected_stderr=expected_stderr)

Did this have anything to do with the other changes?

&gt; Tools/Scripts/webkitpy/tool/commands/commandtest.py:35
&gt; +    def assert_execute_outputs(self, command, args=[], expected_stdout=&quot;&quot;, expected_stderr=&quot;&quot;, expected_exception=None, options=MockOptions(), tool=MockTool()):

Ditto.

&gt; Tools/Scripts/webkitpy/tool/commands/queues_unittest.py:169
&gt; +        patch_id = OutputCapture().assert_outputs(self, queue._next_patch, expected_stdout=expected_stdout, expected_stderr=expected_stderr)

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428323</commentid>
    <comment_count>8</comment_count>
      <attachid>98787</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-06-27 14:40:37 -0700</bug_when>
    <thetext>Created attachment 98787
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428330</commentid>
    <comment_count>9</comment_count>
      <attachid>98787</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-27 14:49:56 -0700</bug_when>
    <thetext>Comment on attachment 98787
Patch for landing

Rejecting attachment 98787 from commit-queue.

Failed to run &quot;[&apos;./Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=ec2-cq-01&apos;, &apos;--port...&quot; exit_code: 1

Last 500 characters of output:
139fd5220d9bbbf17b9ffc07a24c553015a8c25f
r89863 = 97c078b725714bdefe986a4ed07e31d1f9e900ab
Done rebuilding .git/svn/refs/remotes/origin/master/.rev_map.268f45cc-cd09-0410-ab3c-d52691b4dbfc
First, rewinding head to replay your work on top of it...
Fast-forwarded master to refs/remotes/origin/master.
Updating chromium port dependencies using gclient...

________ running &apos;/usr/bin/python gyp_webkit&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;
Updating webkit projects from gyp files...

Full output: http://queues.webkit.org/results/8948426</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428366</commentid>
    <comment_count>10</comment_count>
      <attachid>98787</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-27 15:17:58 -0700</bug_when>
    <thetext>Comment on attachment 98787
Patch for landing

Clearing flags on attachment: 98787

Committed r89868: &lt;http://trac.webkit.org/changeset/89868&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428367</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-27 15:18:03 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428375</commentid>
    <comment_count>12</comment_count>
      <attachid>98801</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-06-27 15:23:57 -0700</bug_when>
    <thetext>Created attachment 98801
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428392</commentid>
    <comment_count>13</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-06-27 15:39:05 -0700</bug_when>
    <thetext>webkit-patch should auto-open bugs when uploading new patches. :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428394</commentid>
    <comment_count>14</comment_count>
      <attachid>98801</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-27 15:40:53 -0700</bug_when>
    <thetext>Comment on attachment 98801
Patch for landing

Rejecting attachment 98801 from commit-queue.

Failed to run &quot;[&apos;./Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=ec2-cq-03&apos;, &apos;--port...&quot; exit_code: 2

Last 500 characters of output:
.rej
patching file Tools/Scripts/webkitpy/tool/commands/commandtest.py
Hunk #1 FAILED at 32.
1 out of 1 hunk FAILED -- saving rejects to file Tools/Scripts/webkitpy/tool/commands/commandtest.py.rej
patching file Tools/Scripts/webkitpy/tool/commands/queues_unittest.py
Hunk #1 FAILED at 166.
1 out of 1 hunk FAILED -- saving rejects to file Tools/Scripts/webkitpy/tool/commands/queues_unittest.py.rej

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--force&apos;]&quot; exit_code: 1

Full output: http://queues.webkit.org/results/8954078</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428414</commentid>
    <comment_count>15</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-06-27 16:03:10 -0700</bug_when>
    <thetext>Was already landed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428987</commentid>
    <comment_count>16</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-06-28 11:00:21 -0700</bug_when>
    <thetext>A python test is failing on Chromium Windows bots after this patch was landed:
http://build.webkit.org/builders/Chromium%20Win%20Release%20%28Tests%29/builds/16070/steps/webkitpy-test/logs/stdio

Traceback (most recent call last):
  File &quot;E:\google-windows-2\chromium-win-release-tests\build\Tools\Scripts\webkitpy\layout_tests\port\webkit_unittest.py&quot;, line 124, in test_build_driver
    self.assertTrue(output.assert_outputs(self, port._build_driver, expected_stderr=expected_stderr))
  File &quot;E:\google-windows-2\chromium-win-release-tests\build\Tools\Scripts\webkitpy\common\system\outputcapture.py&quot;, line 66, in assert_outputs
    testcase.assertEqual(stderr_string, expected_stderr)
AssertionError: &quot;MOCK run_command: [&apos;Tools\\\\Scripts\\\\build-dumprendertree&apos;, &apos;--release&apos;]\n&quot; != &quot;MOCK run_command: [&apos;Tools/Scripts/build-dumprendertree&apos;, &apos;--release&apos;]\n&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428988</commentid>
    <comment_count>17</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-06-28 11:01:19 -0700</bug_when>
    <thetext>OK.  Easy fix, will write it now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428997</commentid>
    <comment_count>18</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-06-28 11:06:56 -0700</bug_when>
    <thetext>reopen to fix windows.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>429001</commentid>
    <comment_count>19</comment_count>
      <attachid>98944</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-06-28 11:09:21 -0700</bug_when>
    <thetext>Created attachment 98944
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>429006</commentid>
    <comment_count>20</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-06-28 11:16:01 -0700</bug_when>
    <thetext>re-open to fix windows.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>429111</commentid>
    <comment_count>21</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-06-28 13:41:25 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; re-open to fix windows.

I finally fixed webkit-patch to know how to re-open bugs when posting new patches! bug 32006.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>429158</commentid>
    <comment_count>22</comment_count>
      <attachid>98944</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-28 14:44:30 -0700</bug_when>
    <thetext>Comment on attachment 98944
Patch

Clearing flags on attachment: 98944

Committed r89962: &lt;http://trac.webkit.org/changeset/89962&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>429159</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-28 14:44:36 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>98683</attachid>
            <date>2011-06-27 01:54:56 -0700</date>
            <delta_ts>2011-06-27 14:40:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-63439-20110627015455.patch</filename>
            <type>text/plain</type>
            <size>24083</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODk3ODMKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCA3ODExYzNmMWY0OGYxMzkxY2VkM2Y2OTkxM2U5YmQ2YjU0
OTUzZTU2Li45ZjI5OWM3NDFiM2ZkNmUwZGQ3NWE4NTE0ODQ2NzMwZTRjNzg3NzVmIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDQg
QEAKKzIwMTEtMDYtMjcgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIG5ldy1ydW4td2Via2l0LXRl
c3RzIG5lZWRzIGEgLS13ZWJraXQtdGVzdC1ydW5uZXIgb3B0aW9uCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MzQzOQorCisgICAgICAgIE5SV1QgZG9l
c24ndCBhY3R1YWxseSBrbm93IGhvdyB0byBydW4gd2l0aCB0aGUgV2ViS2l0VGVzdFJ1bm5lciB5
ZXQKKyAgICAgICAgYnV0IGl0IGRvZXMgaGF2ZSBhIC0td2Via2l0LXRlc3QtcnVubmVyIG9wdGlv
biBhbmQgd2lsbCBidWlsZCBXZWJLaXRUZXN0UnVubmVyIGNvcnJlY3RseS4KKworICAgICAgICBU
aGVyZSBpcyBhIGJ1bmNoIG9mIG90aGVyIGxpdHRsZSBjbGVhbnVwIGluIHRoaXMgcGF0Y2ggd2hp
Y2ggSSBhZGRlZCBhcyBJCisgICAgICAgIHRvb2sgYSB0b3VyIHRocm91Z2ggYWxsIG9mIG91ciBo
YXJkLWNvZGVkIER1bXBSZW5kZXJUcmVlIHN0cmluZ3MuCisKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9uZXQvbGF5b3V0dGVzdHJlc3VsdHMucHk6IEFkZGVkIEZJWE1FLgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9vdXRwdXRjYXB0dXJlLnB5OiBG
aXhlZCBzcGFjaW5nIHRvIHBhc3MgUEVQOC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9tYW5hZ2VyLnB5OiBNYWRlIHRoZSBGSVhNRSBzbGln
aHRseSBzdHJvbmdlciAoYmFkIGJ1ZykuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvbGF5b3V0X3BhY2thZ2Uvc2luZ2xlX3Rlc3RfcnVubmVyLnB5OiB0ZXN0X3NoZWxs
IGlzIGRlYWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0
X3BhY2thZ2UvdGVzdF9mYWlsdXJlcy5weTogVW53cmFwcGVkIHNpbGx5IHdyYXBwaW5nLgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weTogUmVtb3Zl
ZCB0d28gZGVhZCBtZXRob2RzLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvY29uZmlnLnB5OgorICAgICAgICAgLSBidWlsZF9kdW1wcmVuZGVydHJlZSBoYWQg
bm8gYnVzaW5lc3MgaW4gdGhpcyBjbGFzcywgcmVtb3ZlZCBpdC4KKyAgICAgICAgIC0gRXhwb3Nl
ZCBfRkxBR1NfRlJPTV9DT05GSUdVUkFUSU9OUyB0aHJvdWdoIGZsYWdfZm9yX2NvbmZpZ3VyYXRp
b24oKQorICAgICAgICAgLSBFeHBvc2VkIF9zY3JpcHRfcGF0aCBhcyBzY3JpcHRfcGF0aCgpICh0
aGlzIHByb2JhYmx5IGJlbG9uZ3MgZWxzZXdoZXJlKS4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L2NvbmZpZ191bml0dGVzdC5weToKKyAgICAgICAgIC0gTW92
ZWQgdGhlc2UgdGVzdHMgdG8gd2Via2l0X3VuaXR0ZXN0cy4KKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weToKKyAgICAgICAgIC0gTm93IHJlc3Bl
Y3RzIHRoZSAtLXdlYmtpdC10ZXN0LXJ1bm5lciBvcHRpb24uCisgICAgICAgICAtIHNldHVwX3Rl
c3RfcnVuIGlzIGVtcHR5IGluIGJhc2UucHkgdG9vLCBubyBuZWVkIHRvIG92ZXJyaWRlIGl0Lgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0X3VuaXR0
ZXN0LnB5OgorICAgICAgICAgLSBUZXN0IHRoZSBuZXcgaG90bmVzcy4KKyAgICAgICAgIC0gQmFk
LCBiYWQsIGJhZCEgIFRoZSBvbGQgY29kZSB3YXMgdXNpbmcgYSByZWFsIEV4ZWN1dGl2ZSBkdXJp
bmcgdW5pdC10ZXN0aW5nIQorICAgICAgICAgICBJIHRoaW5rIHRoaXMgY29kZSBpcyBzdGlsbCBo
aXR0aW5nIGRpc2sgZHVyaW5nIHRoZSB1bml0IHRlc3RzLiA6KAorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHk6CisgICAgICAgICAtIEFk
ZCB0aGUgb3B0aW9uLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvcXVldWVl
bmdpbmVfdW5pdHRlc3QucHk6CisgICAgICAgICAtIFJlbW92ZSBvcHRpb25hbCBhcmdzIG9wdGlv
bi4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvY29tbWFuZHRlc3Qu
cHk6CisgICAgICAgICAtIFJlbW92ZSBvcHRpb25hbCBhcmdzIG9wdGlvbi4KKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVldWVzX3VuaXR0ZXN0LnB5OgorICAgICAg
ICAgLSBSZW1vdmUgb3B0aW9uYWwgYXJncyBvcHRpb24uCisKIDIwMTEtMDYtMjUgIE5hb2tpIFRh
a2FubyAgPGhvbnRlbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBT
ZWlkZWwuCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvbGF5
b3V0dGVzdHJlc3VsdHMucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvbGF5
b3V0dGVzdHJlc3VsdHMucHkKaW5kZXggNGE1ZWE0MjBjODQzN2FkNzA1M2RlZWRlMDA2NmYzOTUy
ODNlNzdiMi4uYWI1YTI3Zjg1OGQxOGVkNjNlNWQxOWJkYmU4OGJlY2MyMjU0NjNhZiAxMDA2NDQK
LS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2xheW91dHRlc3RyZXN1bHRz
LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9sYXlvdXR0ZXN0cmVz
dWx0cy5weQpAQCAtNDgsNiArNDgsNyBAQCBjbGFzcyBPUldUUmVzdWx0c0hUTUxQYXJzZXIob2Jq
ZWN0KToKICAgICBzdGRlcnJfa2V5ID0gdSdUZXN0cyB0aGF0IGhhZCBzdGRlcnIgb3V0cHV0OicK
ICAgICBmYWlsX2tleSA9IHUnVGVzdHMgd2hlcmUgcmVzdWx0cyBkaWQgbm90IG1hdGNoIGV4cGVj
dGVkIHJlc3VsdHM6JwogICAgIHRpbWVvdXRfa2V5ID0gdSdUZXN0cyB0aGF0IHRpbWVkIG91dDon
CisgICAgIyBGSVhNRTogVGhpcyBtYXkgbmVlZCB0byBiZSBtYWRlIGF3YXJlIG9mIFdlYktpdFRl
c3RSdW5uZXIgcmVzdWx0cyBmb3IgV2ViS2l0Mi4KICAgICBjcmFzaF9rZXkgPSB1J1Rlc3RzIHRo
YXQgY2F1c2VkIHRoZSBEdW1wUmVuZGVyVHJlZSB0b29sIHRvIGNyYXNoOicKICAgICBtaXNzaW5n
X2tleSA9IHUnVGVzdHMgdGhhdCBoYWQgbm8gZXhwZWN0ZWQgcmVzdWx0cyAocHJvYmFibHkgbmV3
KTonCiAgICAgd2VicHJvY2Vzc19jcmFzaF9rZXkgPSB1J1Rlc3RzIHRoYXQgY2F1c2VkIHRoZSBX
ZWIgcHJvY2VzcyB0byBjcmFzaDonCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9zeXN0ZW0vb3V0cHV0Y2FwdHVyZS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL3N5c3RlbS9vdXRwdXRjYXB0dXJlLnB5CmluZGV4IDQ1ZTBlM2ZjOTM2Y2E4Mjk1NjA4
ODBhODYxMTk2NGJmZmY2ZjIxZWEuLmVhNTA4MDFhZDMwMGQ0Yzk4YTAwNWYxNGRiYzVlN2I3YWM4
NWVkZDYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9v
dXRwdXRjYXB0dXJlLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3Rl
bS9vdXRwdXRjYXB0dXJlLnB5CkBAIC0zMiw2ICszMiw3IEBAIGltcG9ydCBzeXMKIGltcG9ydCB1
bml0dGVzdAogZnJvbSBTdHJpbmdJTyBpbXBvcnQgU3RyaW5nSU8KIAorCiBjbGFzcyBPdXRwdXRD
YXB0dXJlKG9iamVjdCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgICAgICBzZWxmLnNh
dmVkX291dHB1dHMgPSBkaWN0KCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL21hbmFnZXIucHkgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9tYW5hZ2VyLnB5CmluZGV4IDQ4Yjg5
MjVhNmUzZTIwZjU2YzJkMGE4YWZkNWNhM2RmZTNkMDIxMmUuLjBkYzYyMjAwNDEyZjdiMDc2ODlj
ODcyYmRjY2I4ODkzZmQ4ZTIwOTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL21hbmFnZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWFuYWdlci5weQpAQCAtNjUy
LDcgKzY1Miw3IEBAIGNsYXNzIE1hbmFnZXI6CiAgICAgICAgICAgICAjIEZJWE1FOiBJZiB3ZSBz
dGFydCB3b3JrZXJzIHVwIHRvbyBxdWlja2x5LCBEdW1wUmVuZGVyVHJlZSBhcHBlYXJzCiAgICAg
ICAgICAgICAjIHRvIHRocmFzaCBvbiBzb21ldGhpbmcgYW5kIHRpbWUgb3V0IGl0cyBmaXJzdCBm
ZXcgdGVzdHMuIFVudGlsCiAgICAgICAgICAgICAjIHdlIGNhbiBmaWd1cmUgb3V0IHdoYXQncyBn
b2luZyBvbiwgc2xlZXAgYSBiaXQgaW4gYmV0d2VlbgotICAgICAgICAgICAgIyB3b3JrZXJzLgor
ICAgICAgICAgICAgIyB3b3JrZXJzLiBUaGlzIG5lZWRzIGEgYnVnIGZpbGVkLgogICAgICAgICAg
ICAgdGltZS5zbGVlcCgwLjEpCiAKICAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF91cGRhdGUo
IlN0YXJ0aW5nIHRlc3RpbmcgLi4uIikKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3NpbmdsZV90ZXN0X3J1bm5lci5weSBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3NpbmdsZV90
ZXN0X3J1bm5lci5weQppbmRleCBmNzQ2NDM4Y2IwNThlN2QxOTkwOWRlODc0YzBmYTgzOWU0YjYy
Y2M5Li5jMGYyZTJkNzM1NDRkY2M5NGYyMjQ3NGMzMzJhY2NmNDM2YjBjMjBkIDEwMDY0NAotLS0g
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9zaW5n
bGVfdGVzdF9ydW5uZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvbGF5b3V0X3BhY2thZ2Uvc2luZ2xlX3Rlc3RfcnVubmVyLnB5CkBAIC0xNDMsNyArMTQzLDcg
QEAgY2xhc3MgU2luZ2xlVGVzdFJ1bm5lcjoKICAgICAgICAgcmV0dXJuIFRlc3RSZXN1bHQoc2Vs
Zi5fZmlsZW5hbWUsIGZhaWx1cmVzLCBkcml2ZXJfb3V0cHV0LnRlc3RfdGltZSkKIAogICAgIGRl
ZiBfc2F2ZV9iYXNlbGluZXMoc2VsZiwgZHJpdmVyX291dHB1dCk6Ci0gICAgICAgICMgQWx0aG91
Z2ggYWxsIHRlc3Rfc2hlbGwvRHVtcFJlbmRlclRyZWUgb3V0cHV0IHNob3VsZCBiZSB1dGYtOCwK
KyAgICAgICAgIyBBbHRob3VnaCBhbGwgRHVtcFJlbmRlclRyZWUgb3V0cHV0IHNob3VsZCBiZSB1
dGYtOCwKICAgICAgICAgIyB3ZSBkbyBub3QgZXZlciBkZWNvZGUgaXQgaW5zaWRlIHJ1bi13ZWJr
aXQtdGVzdHMuICBGb3Igc29tZSB0ZXN0cwogICAgICAgICAjIER1bXBSZW5kZXJUcmVlIG1heSBu
b3Qgb3V0cHV0IHV0Zi04IHRleHQgKGUuZy4gd2ViYXJjaGl2ZXMpLgogICAgICAgICBzZWxmLl9z
YXZlX2Jhc2VsaW5lX2RhdGEoZHJpdmVyX291dHB1dC50ZXh0LCAiLnR4dCIsCmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0
X2ZhaWx1cmVzLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0
X3BhY2thZ2UvdGVzdF9mYWlsdXJlcy5weQppbmRleCA0ZWU1NzEyYTU2Yzk1NWVlZDMzMTU5NGIx
YmY5NDc0ZDhjM2Y4MmYxLi5kMmJiNzYxYjIyNWViMWIzYzVlMzVhNGI5MzQzOTg2NzQ1MTQ2NDU1
IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRf
cGFja2FnZS90ZXN0X2ZhaWx1cmVzLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZmFpbHVyZXMucHkKQEAgLTEwNCwxNCArMTA0
LDEyIEBAIGNsYXNzIFRlc3RGYWlsdXJlKG9iamVjdCk6CiAgICAgICAgIHJldHVybiBjUGlja2xl
LmR1bXBzKHNlbGYpCiAKICAgICBkZWYgc2hvdWxkX2tpbGxfZHVtcF9yZW5kZXJfdHJlZShzZWxm
KToKLSAgICAgICAgIiIiUmV0dXJucyBUcnVlIGlmIHdlIHNob3VsZCBraWxsIER1bXBSZW5kZXJU
cmVlIGJlZm9yZSB0aGUgbmV4dAotICAgICAgICB0ZXN0LiIiIgorICAgICAgICAiIiJSZXR1cm5z
IFRydWUgaWYgd2Ugc2hvdWxkIGtpbGwgRHVtcFJlbmRlclRyZWUgYmVmb3JlIHRoZSBuZXh0IHRl
c3QuIiIiCiAgICAgICAgIHJldHVybiBGYWxzZQogCiAKIGNsYXNzIEZhaWx1cmVUaW1lb3V0KFRl
c3RGYWlsdXJlKToKLSAgICAiIiJUZXN0IHRpbWVkIG91dC4gIFdlIGFsc28gd2FudCB0byByZXN0
YXJ0IER1bXBSZW5kZXJUcmVlIGlmIHRoaXMKLSAgICBoYXBwZW5zLiIiIgorICAgICIiIlRlc3Qg
dGltZWQgb3V0LiAgV2UgYWxzbyB3YW50IHRvIHJlc3RhcnQgRHVtcFJlbmRlclRyZWUgaWYgdGhp
cyBoYXBwZW5zLiIiIgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBpc19yZWZ0ZXN0PUZhbHNlKToK
ICAgICAgICAgc2VsZi5pc19yZWZ0ZXN0ID0gaXNfcmVmdGVzdAogCkBAIC0xMzAsNiArMTI4LDcg
QEAgY2xhc3MgRmFpbHVyZUNyYXNoKFRlc3RGYWlsdXJlKToKIAogICAgIEBzdGF0aWNtZXRob2QK
ICAgICBkZWYgbWVzc2FnZSgpOgorICAgICAgICAjIEZJWE1FOiBUaGlzIGlzIHdyb25nIGZvciBX
ZWJLaXQyICh3aGljaCB1c2VzIFdlYktpdFRlc3RSdW5uZXIpLgogICAgICAgICByZXR1cm4gIkR1
bXBSZW5kZXJUcmVlIGNyYXNoZWQiCiAKICAgICBkZWYgc2hvdWxkX2tpbGxfZHVtcF9yZW5kZXJf
dHJlZShzZWxmKToKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvYmFzZS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvYmFzZS5weQppbmRleCA1OWU1MGE0NjdhNzE2NzRmZjQ2MmQ2MjFiNDI5NzZjNDAyNGM0NTIz
Li44ZmE1YzEzNTdmMjc2Njc5ZWEyYTkwYjYyNjIzZTFlNmJiYzIyY2QwIDEwMDc1NQotLS0gYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkKKysrIGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5CkBAIC01OTAsMTIg
KzU5MCw2IEBAIGNsYXNzIFBvcnQob2JqZWN0KToKICAgICAgICAgV2ViS2l0IHNvdXJjZSB0cmVl
IGFuZCB0aGUgbGlzdCBvZiBwYXRoIGNvbXBvbmVudHMgaW4gfCpjb21wc3wuIiIiCiAgICAgICAg
IHJldHVybiBzZWxmLl9jb25maWcucGF0aF9mcm9tX3dlYmtpdF9iYXNlKCpjb21wcykKIAotICAg
IGRlZiBzY3JpcHRfcGF0aChzZWxmLCBzY3JpcHRfbmFtZSk6Ci0gICAgICAgIHJldHVybiBzZWxm
Ll9jb25maWcuc2NyaXB0X3BhdGgoc2NyaXB0X25hbWUpCi0KLSAgICBkZWYgc2NyaXB0X3NoZWxs
X2NvbW1hbmQoc2VsZiwgc2NyaXB0X25hbWUpOgotICAgICAgICByZXR1cm4gc2VsZi5fY29uZmln
LnNjcmlwdF9zaGVsbF9jb21tYW5kKHNjcmlwdF9uYW1lKQotCiAgICAgZGVmIHBhdGhfdG9fdGVz
dF9leHBlY3RhdGlvbnNfZmlsZShzZWxmKToKICAgICAgICAgIiIiVXBkYXRlIHRoZSB0ZXN0IGV4
cGVjdGF0aW9ucyB0byB0aGUgcGFzc2VkLWluIHN0cmluZy4KIApkaWZmIC0tZ2l0IGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jb25maWcucHkgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2NvbmZpZy5weQppbmRleCA2MDE2NjM5NmFh
YjBhNmVhY2Y5YThkNDZkNTY0MTQzZTQyYTk3ODg2Li4xOTM1MGU3MzdhZTRhZjk5NTVhNzJjOGYx
Njg4MDE2OTNmNmQwYmNlIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L2NvbmZpZy5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L2NvbmZpZy5weQpAQCAtNzEsMzEgKzcxLDIwIEBAIGNsYXNzIENvbmZpZyhv
YmplY3QpOgogICAgIGRlZiBidWlsZF9kaXJlY3Rvcnkoc2VsZiwgY29uZmlndXJhdGlvbik6CiAg
ICAgICAgICIiIlJldHVybnMgdGhlIHBhdGggdG8gdGhlIGJ1aWxkIGRpcmVjdG9yeSBmb3IgdGhl
IGNvbmZpZ3VyYXRpb24uIiIiCiAgICAgICAgIGlmIGNvbmZpZ3VyYXRpb246Ci0gICAgICAgICAg
ICBmbGFncyA9IFsiLS1jb25maWd1cmF0aW9uIiwKLSAgICAgICAgICAgICAgICAgICAgIHNlbGYu
X0ZMQUdTX0ZST01fQ09ORklHVVJBVElPTlNbY29uZmlndXJhdGlvbl1dCisgICAgICAgICAgICBm
bGFncyA9IFsiLS1jb25maWd1cmF0aW9uIiwgc2VsZi5mbGFnX2Zvcl9jb25maWd1cmF0aW9uKGNv
bmZpZ3VyYXRpb24pXQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgY29uZmlndXJhdGlvbiA9
ICIiCiAgICAgICAgICAgICBmbGFncyA9IFsiLS10b3AtbGV2ZWwiXQogCiAgICAgICAgIGlmIG5v
dCBzZWxmLl9idWlsZF9kaXJlY3Rvcmllcy5nZXQoY29uZmlndXJhdGlvbik6Ci0gICAgICAgICAg
ICBhcmdzID0gWyJwZXJsIiwgc2VsZi5fc2NyaXB0X3BhdGgoIndlYmtpdC1idWlsZC1kaXJlY3Rv
cnkiKV0gKyBmbGFncworICAgICAgICAgICAgYXJncyA9IFsicGVybCIsIHNlbGYuc2NyaXB0X3Bh
dGgoIndlYmtpdC1idWlsZC1kaXJlY3RvcnkiKV0gKyBmbGFncwogICAgICAgICAgICAgc2VsZi5f
YnVpbGRfZGlyZWN0b3JpZXNbY29uZmlndXJhdGlvbl0gPSAoCiAgICAgICAgICAgICAgICAgc2Vs
Zi5fZXhlY3V0aXZlLnJ1bl9jb21tYW5kKGFyZ3MpLnJzdHJpcCgpKQogCiAgICAgICAgIHJldHVy
biBzZWxmLl9idWlsZF9kaXJlY3Rvcmllc1tjb25maWd1cmF0aW9uXQogCi0gICAgZGVmIGJ1aWxk
X2R1bXByZW5kZXJ0cmVlKHNlbGYsIGNvbmZpZ3VyYXRpb24pOgotICAgICAgICAiIiJCdWlsZHMg
RFJUIGluIHRoZSBnaXZlbiBjb25maWd1cmF0aW9uLgotCi0gICAgICAgIFJldHVybnMgVHJ1ZSBp
ZiB0aGUgIGJ1aWxkIHdhcyBzdWNjZXNzZnVsIGFuZCB1cC10by1kYXRlLiIiIgotICAgICAgICBm
bGFnID0gc2VsZi5fRkxBR1NfRlJPTV9DT05GSUdVUkFUSU9OU1tjb25maWd1cmF0aW9uXQotICAg
ICAgICBleGl0X2NvZGUgPSBzZWxmLl9leGVjdXRpdmUucnVuX2NvbW1hbmQoWwotICAgICAgICAg
ICAgc2VsZi5fc2NyaXB0X3BhdGgoImJ1aWxkLWR1bXByZW5kZXJ0cmVlIiksIGZsYWddLAotICAg
ICAgICAgICAgcmV0dXJuX2V4aXRfY29kZT1UcnVlKQotICAgICAgICBpZiBleGl0X2NvZGUgIT0g
MDoKLSAgICAgICAgICAgIF9sb2cuZXJyb3IoIkZhaWxlZCB0byBidWlsZCBEdW1wUmVuZGVyVHJl
ZSIpCi0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgcmV0dXJuIFRydWUKKyAgICBk
ZWYgZmxhZ19mb3JfY29uZmlndXJhdGlvbihzZWxmLCBjb25maWd1cmF0aW9uKToKKyAgICAgICAg
cmV0dXJuIHNlbGYuX0ZMQUdTX0ZST01fQ09ORklHVVJBVElPTlNbY29uZmlndXJhdGlvbl0KIAog
ICAgIGRlZiBkZWZhdWx0X2NvbmZpZ3VyYXRpb24oc2VsZik6CiAgICAgICAgICIiIlJldHVybnMg
dGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbiBmb3IgdGhlIHVzZXIuCkBAIC0xMDcsMTUgKzk2LDE1
IEBAIGNsYXNzIENvbmZpZyhvYmplY3QpOgogICAgICAgICBpZiBub3Qgc2VsZi5fZGVmYXVsdF9j
b25maWd1cmF0aW9uOgogICAgICAgICAgICAgc2VsZi5fZGVmYXVsdF9jb25maWd1cmF0aW9uID0g
J1JlbGVhc2UnCiAgICAgICAgIGlmIHNlbGYuX2RlZmF1bHRfY29uZmlndXJhdGlvbiBub3QgaW4g
c2VsZi5fRkxBR1NfRlJPTV9DT05GSUdVUkFUSU9OUzoKLSAgICAgICAgICAgIF9sb2cud2Fybigi
Q29uZmlndXJhdGlvbiBcIiVzXCIgaXMgbm90IGEgcmVjb2duaXplZCB2YWx1ZS5cbiIgJQotICAg
ICAgICAgICAgICAgICAgICAgIHNlbGYuX2RlZmF1bHRfY29uZmlndXJhdGlvbikKLSAgICAgICAg
ICAgIF9sb2cud2FybigiU2NyaXB0cyBtYXkgZmFpbC4gICIKLSAgICAgICAgICAgICAgICAgICAg
ICAiU2VlICdzZXQtd2Via2l0LWNvbmZpZ3VyYXRpb24gLS1oZWxwJy4iKQorICAgICAgICAgICAg
X2xvZy53YXJuKCJDb25maWd1cmF0aW9uIFwiJXNcIiBpcyBub3QgYSByZWNvZ25pemVkIHZhbHVl
LlxuIiAlIHNlbGYuX2RlZmF1bHRfY29uZmlndXJhdGlvbikKKyAgICAgICAgICAgIF9sb2cud2Fy
bigiU2NyaXB0cyBtYXkgZmFpbC4gIFNlZSAnc2V0LXdlYmtpdC1jb25maWd1cmF0aW9uIC0taGVs
cCcuIikKICAgICAgICAgcmV0dXJuIHNlbGYuX2RlZmF1bHRfY29uZmlndXJhdGlvbgogCiAgICAg
ZGVmIHBhdGhfZnJvbV93ZWJraXRfYmFzZShzZWxmLCAqY29tcHMpOgogICAgICAgICByZXR1cm4g
c2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYud2Via2l0X2Jhc2VfZGlyKCksICpjb21wcykKIAor
ICAgICMgRklYTUU6IFdlIHNob3VsZCBvbmx5IGhhdmUgb25lIGltcGxlbWVudGF0aW9uIG9mIHRo
aXMgbG9naWMsCisgICAgIyBpZiBzY20uZmluZF9jaGVja291dF9yb290KCkgaXMgYnJva2VuIGZv
ciBDaHJvbWl1bSwgd2Ugc2hvdWxkIGZpeCAob3IgYXQgbGVhc3Qgd3JhcCkgaXQhCiAgICAgZGVm
IHdlYmtpdF9iYXNlX2RpcihzZWxmKToKICAgICAgICAgIiIiUmV0dXJucyB0aGUgYWJzb2x1dGUg
cGF0aCB0byB0aGUgdG9wIG9mIHRoZSBXZWJLaXQgdHJlZS4KIApAQCAtMTMzLDkgKzEyMiw4IEBA
IGNsYXNzIENvbmZpZyhvYmplY3QpOgogICAgICAgICAgICAgc2VsZi5fd2Via2l0X2Jhc2VfZGly
ID0gYWJzcGF0aFswOmFic3BhdGguZmluZCgnVG9vbHMnKSAtIDFdCiAgICAgICAgIHJldHVybiBz
ZWxmLl93ZWJraXRfYmFzZV9kaXIKIAotICAgIGRlZiBfc2NyaXB0X3BhdGgoc2VsZiwgc2NyaXB0
X25hbWUpOgotICAgICAgICByZXR1cm4gc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYud2Via2l0
X2Jhc2VfZGlyKCksICJUb29scyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIlNjcmlwdHMiLCBzY3JpcHRfbmFtZSkKKyAgICBkZWYgc2NyaXB0X3BhdGgoc2VsZiwgc2Ny
aXB0X25hbWUpOgorICAgICAgICByZXR1cm4gc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYud2Vi
a2l0X2Jhc2VfZGlyKCksICJUb29scyIsICJTY3JpcHRzIiwgc2NyaXB0X25hbWUpCiAKICAgICBk
ZWYgX2RldGVybWluZV9jb25maWd1cmF0aW9uKHNlbGYpOgogICAgICAgICAjIFRoaXMgbWlycm9y
cyB0aGUgbG9naWMgaW4gd2Via2l0ZGlycy5wbTpkZXRlcm1pbmVDb25maWd1cmF0aW9uKCkuCmRp
ZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2NvbmZp
Z191bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
Y29uZmlnX3VuaXR0ZXN0LnB5CmluZGV4IDhmMWUwZDQxNjZmYTUxMDFkYjVkZGJmNTBiODUwNzM1
ZmU3ZjlmODMuLjU5YTAxMGZkNWQ1OWM1OWRjMmYwZTYwZmExOGEzZjJjN2ViNWY4N2MgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY29uZmlnX3Vu
aXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
Y29uZmlnX3VuaXR0ZXN0LnB5CkBAIC05MSwyOSArOTEsNiBAQCBjbGFzcyBDb25maWdUZXN0KHVu
aXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMuYnVpbGRfZGlyZWN0
b3J5KCdEZWJ1ZycpLmVuZHN3aXRoKCcvRGVidWcnKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlz
ZXMoS2V5RXJyb3IsIGMuYnVpbGRfZGlyZWN0b3J5LCAnVW5rbm93bicpCiAKLSAgICBkZWYgdGVz
dF9idWlsZF9kdW1wcmVuZGVydHJlZV9fc3VjY2VzcyhzZWxmKToKLSAgICAgICAgYyA9IHNlbGYu
bWFrZV9jb25maWcoZXhpdF9jb2RlPTApCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjLmJ1aWxk
X2R1bXByZW5kZXJ0cmVlKCJEZWJ1ZyIpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5idWls
ZF9kdW1wcmVuZGVydHJlZSgiUmVsZWFzZSIpKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhL
ZXlFcnJvciwgYy5idWlsZF9kdW1wcmVuZGVydHJlZSwgIlVua25vd24iKQotCi0gICAgZGVmIHRl
c3RfYnVpbGRfZHVtcHJlbmRlcnRyZWVfX2ZhaWx1cmUoc2VsZik6Ci0gICAgICAgIGMgPSBzZWxm
Lm1ha2VfY29uZmlnKGV4aXRfY29kZT0tMSkKLQotICAgICAgICAjIEZJWE1FOiBCdWlsZCBmYWls
dXJlcyBzaG91bGQgbG9nIGVycm9ycy4gSG93ZXZlciwgdGhlIG1lc3NhZ2Ugd2UKLSAgICAgICAg
IyBnZXQgZGVwZW5kcyBvbiBob3cgd2UncmUgYmVpbmcgY2FsbGVkOyBhcyBhIHN0YW5kYWxvbmUg
dGVzdCwKLSAgICAgICAgIyB3ZSdsbCBnZXQgdGhlICJubyBoYW5kbGVycyBmb3VuZCIgbWVzc2Fn
ZS4gQXMgcGFydCBvZgotICAgICAgICAjIHRlc3Qtd2Via2l0cHksIHdlIGdldCB0aGUgYWN0dWFs
IG1lc3NhZ2UuIFJlYWxseSwgd2UgbmVlZAotICAgICAgICAjIG91dHB1dGNhcHR1cmUgdG8gaW5z
dGFsbCBpdHMgb3duIGhhbmRsZXIuCi0gICAgICAgIG9jID0gb3V0cHV0Y2FwdHVyZS5PdXRwdXRD
YXB0dXJlKCkKLSAgICAgICAgb2MuY2FwdHVyZV9vdXRwdXQoKQotICAgICAgICBzZWxmLmFzc2Vy
dEZhbHNlKGMuYnVpbGRfZHVtcHJlbmRlcnRyZWUoJ0RlYnVnJykpCi0gICAgICAgIG9jLnJlc3Rv
cmVfb3V0cHV0KCkKLQotICAgICAgICBvYy5jYXB0dXJlX291dHB1dCgpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RmFsc2UoYy5idWlsZF9kdW1wcmVuZGVydHJlZSgnUmVsZWFzZScpKQotICAgICAgICBv
Yy5yZXN0b3JlX291dHB1dCgpCi0KICAgICBkZWYgdGVzdF9kZWZhdWx0X2NvbmZpZ3VyYXRpb25f
X3JlbGVhc2Uoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0X2NvbmZpZ3VyYXRpb24oJ1JlbGVh
c2UnLCAnUmVsZWFzZScpCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC93ZWJraXQucHkKaW5kZXggNGJhNzkyYWM2NWQ4Nzk3NzEyMjFlMTAyNTBmYjdk
N2ExMDQyY2QzMy4uNTRlY2Q0N2JmMGI2ZjZiYzc2YmVlYjVkMzA0ZWIwYjgzYzAwMDRjNiAxMDA2
NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXQu
cHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXQu
cHkKQEAgLTQxLDggKzQxLDEwIEBAIGltcG9ydCBzeXMKIGltcG9ydCB0aW1lCiBpbXBvcnQgd2Vi
YnJvd3NlcgogCisKIGZyb20gd2Via2l0cHkuY29tbW9uLm5ldC5idWlsZGJvdCBpbXBvcnQgQnVp
bGRCb3QKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQgb3NwYXRoCitmcm9tIHdl
YmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBTY3JpcHRFcnJvcgogZnJvbSB3
ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydCBpbXBvcnQgYmFzZSwgYnVpbGRlcnMsIHNlcnZlcl9w
cm9jZXNzCiAKIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcigid2Via2l0cHkubGF5b3V0X3Rlc3Rz
LnBvcnQud2Via2l0IikKQEAgLTYwLDYgKzYyLDExIEBAIGNsYXNzIFdlYktpdFBvcnQoYmFzZS5Q
b3J0KToKICAgICAgICAgaWYgbm90IGhhc2F0dHIoc2VsZi5fb3B0aW9ucywgInBpeGVsX3Rlc3Rz
Iikgb3Igc2VsZi5fb3B0aW9ucy5waXhlbF90ZXN0cyA9PSBOb25lOgogICAgICAgICAgICAgc2Vs
Zi5fb3B0aW9ucy5waXhlbF90ZXN0cyA9IEZhbHNlCiAKKyAgICBkZWYgZHJpdmVyX25hbWUoc2Vs
Zik6CisgICAgICAgIGlmIHNlbGYuZ2V0X29wdGlvbignd2Via2l0X3Rlc3RfcnVubmVyJyk6Cisg
ICAgICAgICAgICByZXR1cm4gIldlYktpdFRlc3RSdW5uZXIiCisgICAgICAgIHJldHVybiAiRHVt
cFJlbmRlclRyZWUiCisKICAgICBkZWYgYmFzZWxpbmVfc2VhcmNoX3BhdGgoc2VsZik6CiAgICAg
ICAgIHJldHVybiBbc2VsZi5fd2Via2l0X2Jhc2VsaW5lX3BhdGgoc2VsZi5fbmFtZSldCiAKQEAg
LTc3LDE0ICs4NCwyNyBAQCBjbGFzcyBXZWJLaXRQb3J0KGJhc2UuUG9ydCk6CiAgICAgICAgIHJl
c3VsdF9zZXQuc2V0X3BsYXRmb3JtKHBsYXRmb3JtKQogICAgICAgICByZXR1cm4gcmVzdWx0X3Nl
dAogCisgICAgZGVmIF9kcml2ZXJfYnVpbGRfc2NyaXB0X25hbWUoc2VsZik6CisgICAgICAgIGlm
IHNlbGYuZ2V0X29wdGlvbignd2Via2l0X3Rlc3RfcnVubmVyJyk6CisgICAgICAgICAgICByZXR1
cm4gImJ1aWxkLXdlYmtpdHRlc3RydW5uZXIiCisgICAgICAgIHJldHVybiAiYnVpbGQtZHVtcHJl
bmRlcnRyZWUiCisKICAgICBkZWYgX2J1aWxkX2RyaXZlcihzZWxmKToKICAgICAgICAgY29uZmln
dXJhdGlvbiA9IHNlbGYuZ2V0X29wdGlvbignY29uZmlndXJhdGlvbicpCi0gICAgICAgIHJldHVy
biBzZWxmLl9jb25maWcuYnVpbGRfZHVtcHJlbmRlcnRyZWUoY29uZmlndXJhdGlvbikKKyAgICAg
ICAgdHJ5OgorICAgICAgICAgICAgIyBGSVhNRTogV2Ugc2hvdWxkIHByb2JhYmx5IGhhdmUgYSBy
dW5fc2NyaXB0IGhlbHBlciB3aGljaCBhdXRvbWF0aWNhbGx5IGFkZHMgdGhlIGNvbmZpZ3VyYXRp
b24gZmxhZ3MuCisgICAgICAgICAgICBzZWxmLl9leGVjdXRpdmUucnVuX2NvbW1hbmQoWworICAg
ICAgICAgICAgICAgIHNlbGYuX2NvbmZpZy5zY3JpcHRfcGF0aChzZWxmLl9kcml2ZXJfYnVpbGRf
c2NyaXB0X25hbWUoKSksCisgICAgICAgICAgICAgICAgc2VsZi5fY29uZmlnLmZsYWdfZm9yX2Nv
bmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbildKQorICAgICAgICBleGNlcHQgU2NyaXB0RXJyb3I6
CisgICAgICAgICAgICBfbG9nLmVycm9yKCJGYWlsZWQgdG8gYnVpbGQgJXMiICUgc2VsZi5kcml2
ZXJfbmFtZSgpKQorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHJldHVybiBUcnVl
CiAKICAgICBkZWYgX2NoZWNrX2RyaXZlcihzZWxmKToKICAgICAgICAgZHJpdmVyX3BhdGggPSBz
ZWxmLl9wYXRoX3RvX2RyaXZlcigpCiAgICAgICAgIGlmIG5vdCBzZWxmLl9maWxlc3lzdGVtLmV4
aXN0cyhkcml2ZXJfcGF0aCk6Ci0gICAgICAgICAgICBfbG9nLmVycm9yKCJEdW1wUmVuZGVyVHJl
ZSB3YXMgbm90IGZvdW5kIGF0ICVzIiAlIGRyaXZlcl9wYXRoKQorICAgICAgICAgICAgX2xvZy5l
cnJvcigiJXMgd2FzIG5vdCBmb3VuZCBhdCAlcyIgJSAoc2VsZi5kcml2ZXJfbmFtZSgpLCBkcml2
ZXJfcGF0aCkpCiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgcmV0dXJuIFRydWUK
IApAQCAtMTc5LDEwICsxOTksNiBAQCBjbGFzcyBXZWJLaXRQb3J0KGJhc2UuUG9ydCk6CiAgICAg
ICAgICMgdG8gaGF2ZSBtdWx0aXBsZSBjb3BpZXMgb2Ygd2Via2l0IGNoZWNrZWQgb3V0IGFuZCBi
dWlsdC4KICAgICAgICAgcmV0dXJuIHNlbGYuX2J1aWxkX3BhdGgoJ2xheW91dC10ZXN0LXJlc3Vs
dHMnKQogCi0gICAgZGVmIHNldHVwX3Rlc3RfcnVuKHNlbGYpOgotICAgICAgICAjIFRoaXMgcG9y
dCBkb2Vzbid0IHJlcXVpcmUgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb24uCi0gICAgICAgIHBh
c3MKLQogICAgIGRlZiBjcmVhdGVfZHJpdmVyKHNlbGYsIHdvcmtlcl9udW1iZXIpOgogICAgICAg
ICByZXR1cm4gV2ViS2l0RHJpdmVyKHNlbGYsIHdvcmtlcl9udW1iZXIpCiAKQEAgLTQyOSw4ICs0
NDUsOCBAQCBjbGFzcyBXZWJLaXREcml2ZXIoYmFzZS5Ecml2ZXIpOgogICAgICAgICBpZiBlcnJv
cl9saW5lcyBhbmQgZXJyb3JfbGluZXNbLTFdID09ICIjRU9GIjoKICAgICAgICAgICAgIGVycm9y
X2xpbmVzLnBvcCgpICAjIFJlbW92ZSB0aGUgZXhwZWN0ZWQgIiNFT0YiCiAgICAgICAgIGVycm9y
ID0gIlxuIi5qb2luKGVycm9yX2xpbmVzKQotICAgICAgICAjIEZJWE1FOiBUaGlzIHNlZW1zIGxp
a2UgdGhlIHdyb25nIHNlY3Rpb24gb2YgY29kZSB0byBiZSBkb2luZwotICAgICAgICAjIHRoaXMg
cmVzZXQgaW4uCisKKyAgICAgICAgIyBGSVhNRTogVGhpcyBzZWVtcyBsaWtlIHRoZSB3cm9uZyBz
ZWN0aW9uIG9mIGNvZGUgdG8gYmUgZG9pbmcgdGhpcyByZXNldCBpbi4KICAgICAgICAgc2VsZi5f
c2VydmVyX3Byb2Nlc3MuZXJyb3IgPSAiIgogICAgICAgICByZXR1cm4gYmFzZS5Ecml2ZXJPdXRw
dXQodGV4dCwgaW1hZ2UsIGFjdHVhbF9pbWFnZV9oYXNoLCBhdWRpbywKICAgICAgICAgICAgIGNy
YXNoPXNlbGYuX3NlcnZlcl9wcm9jZXNzLmNyYXNoZWQsIHRlc3RfdGltZT10aW1lLnRpbWUoKSAt
IHN0YXJ0X3RpbWUsCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L3dlYmtpdF91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvd2Via2l0X3VuaXR0ZXN0LnB5CmluZGV4IDBhZjMzODFmMTExNWM2NzJi
YWU1ZWIzYWUzMTRmNTczNGQxZGI5NjMuLjc5YmE4ZTc2YWI2MTZkM2EyZTc5YWMzN2RhMDBkZWE5
OWYzNTNhZmEgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvd2Via2l0X3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvd2Via2l0X3VuaXR0ZXN0LnB5CkBAIC0yOCwxOSArMjgsMjUgQEAKIGlt
cG9ydCB1bml0dGVzdAogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0IGZpbGVz
eXN0ZW1fbW9jaworZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLm91dHB1dGNhcHR1cmUgaW1w
b3J0IE91dHB1dENhcHR1cmUKIAogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC53ZWJr
aXQgaW1wb3J0IFdlYktpdFBvcnQKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQgaW1w
b3J0IHBvcnRfdGVzdGNhc2UKIAorZnJvbSB3ZWJraXRweS50b29sLm1vY2t0b29sIGltcG9ydCBN
b2NrRXhlY3V0aXZlCitmcm9tIHdlYmtpdHB5LnRvb2wubW9ja3Rvb2wgaW1wb3J0IE1vY2tPcHRp
b25zCisKIAogY2xhc3MgVGVzdFdlYktpdFBvcnQoV2ViS2l0UG9ydCk6CiAgICAgZGVmIF9faW5p
dF9fKHNlbGYsIHN5bWJvbF9saXN0PU5vbmUsIGZlYXR1cmVfbGlzdD1Ob25lLAotICAgICAgICAg
ICAgICAgICBleHBlY3RhdGlvbnNfZmlsZT1Ob25lLCBza2lwc19maWxlPU5vbmUsICoqa3dhcmdz
KToKKyAgICAgICAgICAgICAgICAgZXhwZWN0YXRpb25zX2ZpbGU9Tm9uZSwgc2tpcHNfZmlsZT1O
b25lLAorICAgICAgICAgICAgICAgICBleGVjdXRpdmU9Tm9uZSwgKiprd2FyZ3MpOgogICAgICAg
ICBzZWxmLnN5bWJvbF9saXN0ID0gc3ltYm9sX2xpc3QKICAgICAgICAgc2VsZi5mZWF0dXJlX2xp
c3QgPSBmZWF0dXJlX2xpc3QKICAgICAgICAgc2VsZi5leHBlY3RhdGlvbnNfZmlsZSA9IGV4cGVj
dGF0aW9uc19maWxlCiAgICAgICAgIHNlbGYuc2tpcHNfZmlsZSA9IHNraXBzX2ZpbGUKLSAgICAg
ICAgV2ViS2l0UG9ydC5fX2luaXRfXyhzZWxmLCAqKmt3YXJncykKKyAgICAgICAgZXhlY3V0aXZl
ID0gZXhlY3V0aXZlIG9yIE1vY2tFeGVjdXRpdmUoc2hvdWxkX2xvZz1GYWxzZSkKKyAgICAgICAg
V2ViS2l0UG9ydC5fX2luaXRfXyhzZWxmLCBleGVjdXRpdmU9ZXhlY3V0aXZlLCAqKmt3YXJncykK
IAogICAgIGRlZiBfcnVudGltZV9mZWF0dXJlX2xpc3Qoc2VsZik6CiAgICAgICAgIHJldHVybiBz
ZWxmLmZlYXR1cmVfbGlzdApAQCAtOTEsOCArOTcsNyBAQCBjbGFzcyBXZWJLaXRQb3J0VGVzdChw
b3J0X3Rlc3RjYXNlLlBvcnRUZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVz
dWx0X2RpcmVjdG9yaWVzLCBleHBlY3RlZF9kaXJlY3RvcmllcykKIAogICAgIGRlZiB0ZXN0X3Nr
aXBwZWRfbGF5b3V0X3Rlc3RzKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRlc3RX
ZWJLaXRQb3J0KE5vbmUsIE5vbmUpLnNraXBwZWRfbGF5b3V0X3Rlc3RzKCksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgc2V0KFsibWVkaWEiXSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
VGVzdFdlYktpdFBvcnQoTm9uZSwgTm9uZSkuc2tpcHBlZF9sYXlvdXRfdGVzdHMoKSwgc2V0KFsi
bWVkaWEiXSkpCiAKICAgICBkZWYgdGVzdF90ZXN0X2V4cGVjdGF0aW9ucyhzZWxmKToKICAgICAg
ICAgIyBDaGVjayB0aGF0IHdlIHJlYWQgYm90aCB0aGUgZXhwZWN0YXRpb25zIGZpbGUgYW5kIGFu
eXRoaW5nIGluIGEKQEAgLTEwOSw2ICsxMTQsMjEgQEAgY2xhc3MgV2ViS2l0UG9ydFRlc3QocG9y
dF90ZXN0Y2FzZS5Qb3J0VGVzdENhc2UpOgogQlVHX1NLSVBQRUQgU0tJUCA6IGZhc3QvaHRtbC9r
ZXlnZW4uaHRtbCA9IEZBSUwKIEJVR19TS0lQUEVEIFNLSVAgOiBtZWRpYSA9IEZBSUwiIiIpCiAK
LQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB1bml0dGVzdC5tYWluKCkKKyAgICBk
ZWYgdGVzdF9idWlsZF9kcml2ZXIoc2VsZik6CisgICAgICAgIG91dHB1dCA9IE91dHB1dENhcHR1
cmUoKQorICAgICAgICBwb3J0ID0gVGVzdFdlYktpdFBvcnQoKQorICAgICAgICAjIERlbGF5IHNl
dHRpbmcgX2V4ZWN1dGl2ZSB0byBhdm9pZCBsb2dnaW5nIGR1cmluZyBjb25zdHJ1Y3Rpb24KKyAg
ICAgICAgcG9ydC5fZXhlY3V0aXZlID0gTW9ja0V4ZWN1dGl2ZShzaG91bGRfbG9nPVRydWUpCisg
ICAgICAgIHBvcnQuX29wdGlvbnMgPSBNb2NrT3B0aW9ucyhjb25maWd1cmF0aW9uPSJSZWxlYXNl
IikgICMgVGhpcyBzaG91bGQgbm90IGJlIG5lY2Vzc2FyeSwgYnV0IEkgdGhpbmsgVGVzdFdlYktp
dFBvcnQgaXMgYWN0dWFsbHkgcmVhZGluZyBmcm9tIGRpc2sgKGFuZCB0aHVzIGRldGVjdHMgdGhl
IGN1cnJlbnQgY29uZmlndXJhdGlvbikuCisgICAgICAgIGV4cGVjdGVkX3N0ZGVyciA9ICJNT0NL
IHJ1bl9jb21tYW5kOiBbJy9Qcm9qZWN0cy9XZWJLaXQvVG9vbHMvU2NyaXB0cy9idWlsZC1kdW1w
cmVuZGVydHJlZScsICctLXJlbGVhc2UnXVxuIgorICAgICAgICBzZWxmLmFzc2VydFRydWUob3V0
cHV0LmFzc2VydF9vdXRwdXRzKHNlbGYsIHBvcnQuX2J1aWxkX2RyaXZlciwgZXhwZWN0ZWRfc3Rk
ZXJyPWV4cGVjdGVkX3N0ZGVycikpCisKKyAgICAgICAgIyBNYWtlIHN1cmUgd2hlbiBwYXNzZWQg
LS13ZWJraXQtdGVzdC1ydW5uZXIgd2ViIGJ1aWxkIHRoZSByaWdodCB0b29sLgorICAgICAgICBw
b3J0Ll9vcHRpb25zID0gTW9ja09wdGlvbnMod2Via2l0X3Rlc3RfcnVubmVyPVRydWUsIGNvbmZp
Z3VyYXRpb249IlJlbGVhc2UiKQorICAgICAgICBleHBlY3RlZF9zdGRlcnIgPSAiTU9DSyBydW5f
Y29tbWFuZDogWycvUHJvamVjdHMvV2ViS2l0L1Rvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0dGVz
dHJ1bm5lcicsICctLXJlbGVhc2UnXVxuIgorICAgICAgICBzZWxmLmFzc2VydFRydWUob3V0cHV0
LmFzc2VydF9vdXRwdXRzKHNlbGYsIHBvcnQuX2J1aWxkX2RyaXZlciwgZXhwZWN0ZWRfc3RkZXJy
PWV4cGVjdGVkX3N0ZGVycikpCisKKyAgICAgICAgIyBNYWtlIHN1cmUgdGhhdCBmYWlsdXJlIHRv
IGJ1aWxkIHJldHVybnMgRmFsc2UuCisgICAgICAgIHBvcnQuX2V4ZWN1dGl2ZSA9IE1vY2tFeGVj
dXRpdmUoc2hvdWxkX2xvZz1UcnVlLCBzaG91bGRfdGhyb3c9VHJ1ZSkKKyAgICAgICAgZXhwZWN0
ZWRfc3RkZXJyID0gIk1PQ0sgcnVuX2NvbW1hbmQ6IFsnL1Byb2plY3RzL1dlYktpdC9Ub29scy9T
Y3JpcHRzL2J1aWxkLXdlYmtpdHRlc3RydW5uZXInLCAnLS1yZWxlYXNlJ11cbiIKKyAgICAgICAg
c2VsZi5hc3NlcnRGYWxzZShvdXRwdXQuYXNzZXJ0X291dHB1dHMoc2VsZiwgcG9ydC5fYnVpbGRf
ZHJpdmVyLCBleHBlY3RlZF9zdGRlcnI9ZXhwZWN0ZWRfc3RkZXJyKSkKZGlmZiAtLWdpdCBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5Cmlu
ZGV4IDZkZjJjOGZkOTU0MmYxZjc3YzFkMWIzMWIxMzg3NGUwYjBhOTE4NTAuLjJkZmJiOGVjOTky
Yjc1MDE2YTkxZmZlZTRmZjc2MjhmYmFkMzM1ZTIgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkKKysrIGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weQpAQCAtMjY4LDcg
KzI2OCw5IEBAIGRlZiBwYXJzZV9hcmdzKGFyZ3M9Tm9uZSk6CiAgICAgICAgIG9wdHBhcnNlLm1h
a2Vfb3B0aW9uKCItLWNvbXBsZXgtdGV4dCIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlZmF1bHQ9
RmFsc2UsCiAgICAgICAgICAgICBoZWxwPSJVc2UgdGhlIGNvbXBsZXggdGV4dCBjb2RlIHBhdGgg
Zm9yIGFsbCB0ZXh0IChNYWMgT1MgWCBhbmQgV2luZG93cyBvbmx5KSIpLAogICAgICAgICBvcHRw
YXJzZS5tYWtlX29wdGlvbigiLS10aHJlYWRlZCIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlZmF1
bHQ9RmFsc2UsCi0gICAgICAgICAgICBoZWxwPSJSdW4gYSBjb25jdXJyZW50IEphdmFTY3JpcHQg
dGhlYWQgd2l0aCBlYWNoIHRlc3QiKQorICAgICAgICAgICAgaGVscD0iUnVuIGEgY29uY3VycmVu
dCBKYXZhU2NyaXB0IHRoZWFkIHdpdGggZWFjaCB0ZXN0IiksCisgICAgICAgIG9wdHBhcnNlLm1h
a2Vfb3B0aW9uKCItLXdlYmtpdC10ZXN0LXJ1bm5lciIsICItMiIsIGFjdGlvbj0ic3RvcmVfdHJ1
ZSIsCisgICAgICAgICAgICBoZWxwPSJVc2UgV2ViS2l0VGVzdFJ1bm5lciByYXRoZXIgdGhhbiBE
dW1wUmVuZGVyVHJlZS4iKSwKICAgICBdCiAKICAgICAjIE1pc3NpbmcgTWFjLXNwZWNpZmljIG9s
ZC1ydW4td2Via2l0LXRlc3RzIG9wdGlvbnM6CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L3Rvb2wvYm90L3F1ZXVlZW5naW5lX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL2JvdC9xdWV1ZWVuZ2luZV91bml0dGVzdC5weQppbmRleCAzN2Q4NTAyYWZj
YWIyM2RlMmE4MjA4Mzk3Mzg3YmNiZDk5YjAzMzBhLi42NWQ2Njc0MzUzZmM2MzA5ODEwNjIzOWM3
NmZiYjFhYjUxOGFmYTliIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wv
Ym90L3F1ZXVlZW5naW5lX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dG9vbC9ib3QvcXVldWVlbmdpbmVfdW5pdHRlc3QucHkKQEAgLTE2MCw3ICsxNjAsNyBAQCBjbGFz
cyBRdWV1ZUVuZ2luZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBpZiBub3QgdGVy
bWluYXRpb25fbWVzc2FnZToKICAgICAgICAgICAgIHRlcm1pbmF0aW9uX21lc3NhZ2UgPSAiRGVs
ZWdhdGUgdGVybWluYXRlZCBxdWV1ZS4iCiAgICAgICAgIGV4cGVjdGVkX3N0ZGVyciA9ICJcbiVz
XG4iICUgdGVybWluYXRpb25fbWVzc2FnZQotICAgICAgICBPdXRwdXRDYXB0dXJlKCkuYXNzZXJ0
X291dHB1dHMoc2VsZiwgZW5naW5lLnJ1biwgW10sIGV4cGVjdGVkX3N0ZGVycj1leHBlY3RlZF9z
dGRlcnIpCisgICAgICAgIE91dHB1dENhcHR1cmUoKS5hc3NlcnRfb3V0cHV0cyhzZWxmLCBlbmdp
bmUucnVuLCBleHBlY3RlZF9zdGRlcnI9ZXhwZWN0ZWRfc3RkZXJyKQogCiAgICAgZGVmIF90ZXN0
X3Rlcm1pbmF0aW5nX3F1ZXVlKHNlbGYsIGV4Y2VwdGlvbiwgdGVybWluYXRpb25fbWVzc2FnZSk6
CiAgICAgICAgIHdvcmtfaXRlbV9pbmRleCA9IExvZ2dpbmdEZWxlZ2F0ZS5leHBlY3RlZF9jYWxs
YmFja3MuaW5kZXgoJ3Byb2Nlc3Nfd29ya19pdGVtJykKZGlmZiAtLWdpdCBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9jb21tYW5kdGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdG9vbC9jb21tYW5kcy9jb21tYW5kdGVzdC5weQppbmRleCBlMzM1NzEwNGRjYmJl
MzM2ZDZjYzhkMzZjNjZjMTU0Yzk3MGE0ZjgyLi5jNDhmNzA2MmE5ZWU0N2VjN2EyOWM4MjBmYWZm
NjJkZjg3MzAyZmUzIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29t
bWFuZHMvY29tbWFuZHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2Nv
bW1hbmRzL2NvbW1hbmR0ZXN0LnB5CkBAIC0zMiw3ICszMiw3IEBAIGZyb20gd2Via2l0cHkuY29t
bW9uLnN5c3RlbS5vdXRwdXRjYXB0dXJlIGltcG9ydCBPdXRwdXRDYXB0dXJlCiBmcm9tIHdlYmtp
dHB5LnRvb2wubW9ja3Rvb2wgaW1wb3J0IE1vY2tPcHRpb25zLCBNb2NrVG9vbAogCiBjbGFzcyBD
b21tYW5kc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiBhc3NlcnRfZXhlY3V0ZV9v
dXRwdXRzKHNlbGYsIGNvbW1hbmQsIGFyZ3MsIGV4cGVjdGVkX3N0ZG91dD0iIiwgZXhwZWN0ZWRf
c3RkZXJyPSIiLCBleHBlY3RlZF9leGNlcHRpb249Tm9uZSwgb3B0aW9ucz1Nb2NrT3B0aW9ucygp
LCB0b29sPU1vY2tUb29sKCkpOgorICAgIGRlZiBhc3NlcnRfZXhlY3V0ZV9vdXRwdXRzKHNlbGYs
IGNvbW1hbmQsIGFyZ3M9W10sIGV4cGVjdGVkX3N0ZG91dD0iIiwgZXhwZWN0ZWRfc3RkZXJyPSIi
LCBleHBlY3RlZF9leGNlcHRpb249Tm9uZSwgb3B0aW9ucz1Nb2NrT3B0aW9ucygpLCB0b29sPU1v
Y2tUb29sKCkpOgogICAgICAgICBvcHRpb25zLmJsb2NrcyA9IE5vbmUKICAgICAgICAgb3B0aW9u
cy5jYyA9ICdNT0NLIGNjJwogICAgICAgICBvcHRpb25zLmNvbXBvbmVudCA9ICdNT0NLIGNvbXBv
bmVudCcKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9x
dWV1ZXNfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMv
cXVldWVzX3VuaXR0ZXN0LnB5CmluZGV4IGFkNzM4NmE0NTg0YmRhZDZlNzhiNzVlNThiODMxN2Y2
MjYzMjU4ZWYuLmRmODNmMjE3MjlhNjlhMTAzMWVhYTYyYzU1NWM4ZmQ0ZGZjMGY1ZmEgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9xdWV1ZXNfdW5pdHRl
c3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1ZXVlc191
bml0dGVzdC5weQpAQCAtMTY2LDcgKzE2Niw3IEBAIGNsYXNzIEFic3RyYWN0UGF0Y2hRdWV1ZVRl
c3QoQ29tbWFuZHNUZXN0KToKICAgICAgICAgdG9vbC5zdGF0dXNfc2VydmVyID0gTW9ja1N0YXR1
c1NlcnZlcih3b3JrX2l0ZW1zPVsyLCAxOTddKQogICAgICAgICBleHBlY3RlZF9zdGRvdXQgPSAi
TU9DSzogZmV0Y2hfYXR0YWNobWVudDogMiBpcyBub3QgYSBrbm93biBhdHRhY2htZW50IGlkXG4i
ICAjIEEgbW9jay1vbmx5IG1lc3NhZ2UgdG8gcHJldmVudCB1cyBmcm9tIG1ha2luZyBtaXN0YWtl
cy4KICAgICAgICAgZXhwZWN0ZWRfc3RkZXJyID0gIk1PQ0s6IHJlbGVhc2Vfd29ya19pdGVtOiBO
b25lIDJcbiIKLSAgICAgICAgcGF0Y2hfaWQgPSBPdXRwdXRDYXB0dXJlKCkuYXNzZXJ0X291dHB1
dHMoc2VsZiwgcXVldWUuX25leHRfcGF0Y2gsIFtdLCBleHBlY3RlZF9zdGRvdXQ9ZXhwZWN0ZWRf
c3Rkb3V0LCBleHBlY3RlZF9zdGRlcnI9ZXhwZWN0ZWRfc3RkZXJyKQorICAgICAgICBwYXRjaF9p
ZCA9IE91dHB1dENhcHR1cmUoKS5hc3NlcnRfb3V0cHV0cyhzZWxmLCBxdWV1ZS5fbmV4dF9wYXRj
aCwgZXhwZWN0ZWRfc3Rkb3V0PWV4cGVjdGVkX3N0ZG91dCwgZXhwZWN0ZWRfc3RkZXJyPWV4cGVj
dGVkX3N0ZGVycikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocGF0Y2hfaWQsIE5vbmUpICAj
IDIgaXMgYW4gaW52YWxpZCBwYXRjaCBpZAogICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhxdWV1
ZS5fbmV4dF9wYXRjaCgpLmlkKCksIDE5NykKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>98787</attachid>
            <date>2011-06-27 14:40:37 -0700</date>
            <delta_ts>2011-06-27 15:23:52 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-63439-20110627144036.patch</filename>
            <type>text/plain</type>
            <size>25923</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODk4NTgKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCA0MmRhMjViMTViN2M0YWZlZTFkNDcwOTM1ZDNmMTczNDkz
MGQ4MDM4Li4zZjg1ZTA3NjU3MTBiNGRkZTA4ZTEzOTlmYTkzZGZiOWEzNWQzY2I2IDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDQg
QEAKKzIwMTEtMDYtMjcgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIG5ldy1ydW4td2Via2l0LXRl
c3RzIG5lZWRzIGEgLS13ZWJraXQtdGVzdC1ydW5uZXIgb3B0aW9uCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MzQzOQorCisgICAgICAgIE5SV1QgZG9l
c24ndCBhY3R1YWxseSBrbm93IGhvdyB0byBydW4gd2l0aCB0aGUgV2ViS2l0VGVzdFJ1bm5lciB5
ZXQKKyAgICAgICAgYnV0IGl0IGRvZXMgaGF2ZSBhIC0td2Via2l0LXRlc3QtcnVubmVyIG9wdGlv
biBhbmQgd2lsbCBidWlsZCBXZWJLaXRUZXN0UnVubmVyIGNvcnJlY3RseS4KKworICAgICAgICBU
aGVyZSBpcyBhIGJ1bmNoIG9mIG90aGVyIGxpdHRsZSBjbGVhbnVwIGluIHRoaXMgcGF0Y2ggd2hp
Y2ggSSBhZGRlZCBhcyBJCisgICAgICAgIHRvb2sgYSB0b3VyIHRocm91Z2ggYWxsIG9mIG91ciBo
YXJkLWNvZGVkIER1bXBSZW5kZXJUcmVlIHN0cmluZ3MuCisKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9uZXQvbGF5b3V0dGVzdHJlc3VsdHMucHk6IEFkZGVkIEZJWE1FLgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9vdXRwdXRjYXB0dXJlLnB5OiBG
aXhlZCBzcGFjaW5nIHRvIHBhc3MgUEVQOC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9tYW5hZ2VyLnB5OiBNYWRlIHRoZSBGSVhNRSBzbGln
aHRseSBzdHJvbmdlciAoYmFkIGJ1ZykuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvbGF5b3V0X3BhY2thZ2Uvc2luZ2xlX3Rlc3RfcnVubmVyLnB5OiB0ZXN0X3NoZWxs
IGlzIGRlYWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0
X3BhY2thZ2UvdGVzdF9mYWlsdXJlcy5weTogVW53cmFwcGVkIHNpbGx5IHdyYXBwaW5nLgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weTogUmVtb3Zl
ZCB0d28gZGVhZCBtZXRob2RzLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvY29uZmlnLnB5OgorICAgICAgICAgLSBidWlsZF9kdW1wcmVuZGVydHJlZSBoYWQg
bm8gYnVzaW5lc3MgaW4gdGhpcyBjbGFzcywgcmVtb3ZlZCBpdC4KKyAgICAgICAgIC0gRXhwb3Nl
ZCBfRkxBR1NfRlJPTV9DT05GSUdVUkFUSU9OUyB0aHJvdWdoIGZsYWdfZm9yX2NvbmZpZ3VyYXRp
b24oKQorICAgICAgICAgLSBFeHBvc2VkIF9zY3JpcHRfcGF0aCBhcyBzY3JpcHRfcGF0aCgpICh0
aGlzIHByb2JhYmx5IGJlbG9uZ3MgZWxzZXdoZXJlKS4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L2NvbmZpZ191bml0dGVzdC5weToKKyAgICAgICAgIC0gTW92
ZWQgdGhlc2UgdGVzdHMgdG8gd2Via2l0X3VuaXR0ZXN0cy4KKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weToKKyAgICAgICAgIC0gTm93IHJlc3Bl
Y3RzIHRoZSAtLXdlYmtpdC10ZXN0LXJ1bm5lciBvcHRpb24uCisgICAgICAgICAtIHNldHVwX3Rl
c3RfcnVuIGlzIGVtcHR5IGluIGJhc2UucHkgdG9vLCBubyBuZWVkIHRvIG92ZXJyaWRlIGl0Lgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0X3VuaXR0
ZXN0LnB5OgorICAgICAgICAgLSBUZXN0IHRoZSBuZXcgaG90bmVzcy4KKyAgICAgICAgIC0gQmFk
LCBiYWQsIGJhZCEgIFRoZSBvbGQgY29kZSB3YXMgdXNpbmcgYSByZWFsIEV4ZWN1dGl2ZSBkdXJp
bmcgdW5pdC10ZXN0aW5nIQorICAgICAgICAgICBJIHRoaW5rIHRoaXMgY29kZSBpcyBzdGlsbCBo
aXR0aW5nIGRpc2sgZHVyaW5nIHRoZSB1bml0IHRlc3RzLiA6KAorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHk6CisgICAgICAgICAtIEFk
ZCB0aGUgb3B0aW9uLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvcXVldWVl
bmdpbmVfdW5pdHRlc3QucHk6CisgICAgICAgICAtIFJlbW92ZSBvcHRpb25hbCBhcmdzIG9wdGlv
bi4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvY29tbWFuZHRlc3Qu
cHk6CisgICAgICAgICAtIFJlbW92ZSBvcHRpb25hbCBhcmdzIG9wdGlvbi4KKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVldWVzX3VuaXR0ZXN0LnB5OgorICAgICAg
ICAgLSBSZW1vdmUgb3B0aW9uYWwgYXJncyBvcHRpb24uCisKIDIwMTEtMDYtMjcgIEFkYW0gQmFy
dGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaXJrIFByYW5r
ZS4KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9sYXlvdXR0
ZXN0cmVzdWx0cy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9sYXlvdXR0
ZXN0cmVzdWx0cy5weQppbmRleCA0YTVlYTQyMGM4NDM3YWQ3MDUzZGVlZGUwMDY2ZjM5NTI4M2U3
N2IyLi5hYjVhMjdmODU4ZDE4ZWQ2M2U1ZDE5YmRiZTg4YmVjYzIyNTQ2M2FmIDEwMDY0NAotLS0g
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvbGF5b3V0dGVzdHJlc3VsdHMucHkK
KysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2xheW91dHRlc3RyZXN1bHRz
LnB5CkBAIC00OCw2ICs0OCw3IEBAIGNsYXNzIE9SV1RSZXN1bHRzSFRNTFBhcnNlcihvYmplY3Qp
OgogICAgIHN0ZGVycl9rZXkgPSB1J1Rlc3RzIHRoYXQgaGFkIHN0ZGVyciBvdXRwdXQ6JwogICAg
IGZhaWxfa2V5ID0gdSdUZXN0cyB3aGVyZSByZXN1bHRzIGRpZCBub3QgbWF0Y2ggZXhwZWN0ZWQg
cmVzdWx0czonCiAgICAgdGltZW91dF9rZXkgPSB1J1Rlc3RzIHRoYXQgdGltZWQgb3V0OicKKyAg
ICAjIEZJWE1FOiBUaGlzIG1heSBuZWVkIHRvIGJlIG1hZGUgYXdhcmUgb2YgV2ViS2l0VGVzdFJ1
bm5lciByZXN1bHRzIGZvciBXZWJLaXQyLgogICAgIGNyYXNoX2tleSA9IHUnVGVzdHMgdGhhdCBj
YXVzZWQgdGhlIER1bXBSZW5kZXJUcmVlIHRvb2wgdG8gY3Jhc2g6JwogICAgIG1pc3Npbmdfa2V5
ID0gdSdUZXN0cyB0aGF0IGhhZCBubyBleHBlY3RlZCByZXN1bHRzIChwcm9iYWJseSBuZXcpOicK
ICAgICB3ZWJwcm9jZXNzX2NyYXNoX2tleSA9IHUnVGVzdHMgdGhhdCBjYXVzZWQgdGhlIFdlYiBw
cm9jZXNzIHRvIGNyYXNoOicKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29t
bW9uL3N5c3RlbS9leGVjdXRpdmVfbW9jay5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29t
bW9uL3N5c3RlbS9leGVjdXRpdmVfbW9jay5weQppbmRleCAzNjc3MzJjMGVjYTlhZDUyNTNlYjcx
ZDNmYjBlNGZiY2Q2MjdkNzQzLi4zMGU0YzdlZDY5NDA3MDY5MDZhODcxZDYyMzkwNWU5OTA1NjNj
MjdmIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZXhl
Y3V0aXZlX21vY2sucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVt
L2V4ZWN1dGl2ZV9tb2NrLnB5CkBAIC01MSwxNiArNTEsMjIgQEAgY2xhc3MgTW9ja0V4ZWN1dGl2
ZTIob2JqZWN0KToKICAgICBkZWYga2lsbF9wcm9jZXNzKHNlbGYsIHBpZCk6CiAgICAgICAgIHBh
c3MKIAotICAgIGRlZiBydW5fY29tbWFuZChzZWxmLCBhcmdfbGlzdCwgZXJyb3JfaGFuZGxlcj1O
b25lLCByZXR1cm5fZXhpdF9jb2RlPUZhbHNlLAotICAgICAgICAgICAgICAgICAgICBkZWNvZGVf
b3V0cHV0PUZhbHNlLCByZXR1cm5fc3RkZXJyPUZhbHNlKToKKyAgICBkZWYgcnVuX2NvbW1hbmQo
c2VsZiwKKyAgICAgICAgICAgICAgICAgICAgYXJncywKKyAgICAgICAgICAgICAgICAgICAgY3dk
PU5vbmUsCisgICAgICAgICAgICAgICAgICAgIGlucHV0PU5vbmUsCisgICAgICAgICAgICAgICAg
ICAgIGVycm9yX2hhbmRsZXI9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuX2V4aXRf
Y29kZT1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuX3N0ZGVycj1UcnVlLAorICAg
ICAgICAgICAgICAgICAgICBkZWNvZGVfb3V0cHV0PUZhbHNlKToKICAgICAgICAgaWYgc2VsZi5f
ZXhjZXB0aW9uOgogICAgICAgICAgICAgcmFpc2Ugc2VsZi5fZXhjZXB0aW9uCiAgICAgICAgIGlm
IHJldHVybl9leGl0X2NvZGU6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5fZXhpdF9jb2RlCiAg
ICAgICAgIGlmIHNlbGYuX3J1bl9jb21tYW5kX2ZuOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYu
X3J1bl9jb21tYW5kX2ZuKGFyZ19saXN0KQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3J1bl9j
b21tYW5kX2ZuKGFyZ3MpCiAgICAgICAgIGlmIHNlbGYuX2V4aXRfY29kZSBhbmQgZXJyb3JfaGFu
ZGxlcjoKLSAgICAgICAgICAgIHNjcmlwdF9lcnJvciA9IGV4ZWN1dGl2ZS5TY3JpcHRFcnJvcihz
Y3JpcHRfYXJncz1hcmdfbGlzdCwKKyAgICAgICAgICAgIHNjcmlwdF9lcnJvciA9IGV4ZWN1dGl2
ZS5TY3JpcHRFcnJvcihzY3JpcHRfYXJncz1hcmdzLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGV4aXRfY29kZT1zZWxmLl9leGl0X2NvZGUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0PXNlbGYu
X291dHB1dCkKICAgICAgICAgICAgIGVycm9yX2hhbmRsZXIoc2NyaXB0X2Vycm9yKQpkaWZmIC0t
Z2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL291dHB1dGNhcHR1cmUu
cHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vb3V0cHV0Y2FwdHVyZS5w
eQppbmRleCA0NWUwZTNmYzkzNmNhODI5NTYwODgwYTg2MTE5NjRiZmZmNmYyMWVhLi5lYTUwODAx
YWQzMDBkNGM5OGEwMDVmMTRkYmM1ZTdiN2FjODVlZGQ2IDEwMDY0NAotLS0gYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vb3V0cHV0Y2FwdHVyZS5weQorKysgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vb3V0cHV0Y2FwdHVyZS5weQpAQCAtMzIsNiAr
MzIsNyBAQCBpbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gU3RyaW5nSU8gaW1wb3J0
IFN0cmluZ0lPCiAKKwogY2xhc3MgT3V0cHV0Q2FwdHVyZShvYmplY3QpOgogICAgIGRlZiBfX2lu
aXRfXyhzZWxmKToKICAgICAgICAgc2VsZi5zYXZlZF9vdXRwdXRzID0gZGljdCgpCmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9t
YW5hZ2VyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3Bh
Y2thZ2UvbWFuYWdlci5weQppbmRleCA1M2U1ZjY5N2NkYjUxMzFiYjcyMjYwMjNkNjk2ZmM0ZTJi
NzBkZWFjLi4xMmVmOWIwZDliNTk1YzdiMzE1YWJmOGVlMzVkZjZhNTAyMjZjNmFhIDEwMDY0NAot
LS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9t
YW5hZ2VyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91
dF9wYWNrYWdlL21hbmFnZXIucHkKQEAgLTY1Miw3ICs2NTIsNyBAQCBjbGFzcyBNYW5hZ2VyOgog
ICAgICAgICAgICAgIyBGSVhNRTogSWYgd2Ugc3RhcnQgd29ya2VycyB1cCB0b28gcXVpY2tseSwg
RHVtcFJlbmRlclRyZWUgYXBwZWFycwogICAgICAgICAgICAgIyB0byB0aHJhc2ggb24gc29tZXRo
aW5nIGFuZCB0aW1lIG91dCBpdHMgZmlyc3QgZmV3IHRlc3RzLiBVbnRpbAogICAgICAgICAgICAg
IyB3ZSBjYW4gZmlndXJlIG91dCB3aGF0J3MgZ29pbmcgb24sIHNsZWVwIGEgYml0IGluIGJldHdl
ZW4KLSAgICAgICAgICAgICMgd29ya2Vycy4KKyAgICAgICAgICAgICMgd29ya2Vycy4gVGhpcyBu
ZWVkcyBhIGJ1ZyBmaWxlZC4KICAgICAgICAgICAgIHRpbWUuc2xlZXAoMC4xKQogCiAgICAgICAg
IHNlbGYuX3ByaW50ZXIucHJpbnRfdXBkYXRlKCJTdGFydGluZyB0ZXN0aW5nIC4uLiIpCmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2Fn
ZS9zaW5nbGVfdGVzdF9ydW5uZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9sYXlvdXRfcGFja2FnZS9zaW5nbGVfdGVzdF9ydW5uZXIucHkKaW5kZXggZGJhYjVjNjBh
OWViNzUyYWY5YzQ3Yzg0NWRjNzJhYzk1NzEwYWUyMC4uNDVmMzEwMTZhMjEwYjdmNDIxZjExOGM0
ZGU0MGFkZDk1ZTc1ZDlmNiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvbGF5b3V0X3BhY2thZ2Uvc2luZ2xlX3Rlc3RfcnVubmVyLnB5CisrKyBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3NpbmdsZV90ZXN0
X3J1bm5lci5weQpAQCAtMTQzLDcgKzE0Myw3IEBAIGNsYXNzIFNpbmdsZVRlc3RSdW5uZXI6CiAg
ICAgICAgIHJldHVybiBUZXN0UmVzdWx0KHNlbGYuX2ZpbGVuYW1lLCBmYWlsdXJlcywgZHJpdmVy
X291dHB1dC50ZXN0X3RpbWUsIGRyaXZlcl9vdXRwdXQuaGFzX3N0ZGVycigpKQogCiAgICAgZGVm
IF9zYXZlX2Jhc2VsaW5lcyhzZWxmLCBkcml2ZXJfb3V0cHV0KToKLSAgICAgICAgIyBBbHRob3Vn
aCBhbGwgdGVzdF9zaGVsbC9EdW1wUmVuZGVyVHJlZSBvdXRwdXQgc2hvdWxkIGJlIHV0Zi04LAor
ICAgICAgICAjIEFsdGhvdWdoIGFsbCBEdW1wUmVuZGVyVHJlZSBvdXRwdXQgc2hvdWxkIGJlIHV0
Zi04LAogICAgICAgICAjIHdlIGRvIG5vdCBldmVyIGRlY29kZSBpdCBpbnNpZGUgcnVuLXdlYmtp
dC10ZXN0cy4gIEZvciBzb21lIHRlc3RzCiAgICAgICAgICMgRHVtcFJlbmRlclRyZWUgbWF5IG5v
dCBvdXRwdXQgdXRmLTggdGV4dCAoZS5nLiB3ZWJhcmNoaXZlcykuCiAgICAgICAgIHNlbGYuX3Nh
dmVfYmFzZWxpbmVfZGF0YShkcml2ZXJfb3V0cHV0LnRleHQsICIudHh0IiwKZGlmZiAtLWdpdCBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3Rf
ZmFpbHVyZXMucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRf
cGFja2FnZS90ZXN0X2ZhaWx1cmVzLnB5CmluZGV4IDRlZTU3MTJhNTZjOTU1ZWVkMzMxNTk0YjFi
Zjk0NzRkOGMzZjgyZjEuLmQyYmI3NjFiMjI1ZWIxYjNjNWUzNWE0YjkzNDM5ODY3NDUxNDY0NTUg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9w
YWNrYWdlL3Rlc3RfZmFpbHVyZXMucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9mYWlsdXJlcy5weQpAQCAtMTA0LDE0ICsxMDQs
MTIgQEAgY2xhc3MgVGVzdEZhaWx1cmUob2JqZWN0KToKICAgICAgICAgcmV0dXJuIGNQaWNrbGUu
ZHVtcHMoc2VsZikKIAogICAgIGRlZiBzaG91bGRfa2lsbF9kdW1wX3JlbmRlcl90cmVlKHNlbGYp
OgotICAgICAgICAiIiJSZXR1cm5zIFRydWUgaWYgd2Ugc2hvdWxkIGtpbGwgRHVtcFJlbmRlclRy
ZWUgYmVmb3JlIHRoZSBuZXh0Ci0gICAgICAgIHRlc3QuIiIiCisgICAgICAgICIiIlJldHVybnMg
VHJ1ZSBpZiB3ZSBzaG91bGQga2lsbCBEdW1wUmVuZGVyVHJlZSBiZWZvcmUgdGhlIG5leHQgdGVz
dC4iIiIKICAgICAgICAgcmV0dXJuIEZhbHNlCiAKIAogY2xhc3MgRmFpbHVyZVRpbWVvdXQoVGVz
dEZhaWx1cmUpOgotICAgICIiIlRlc3QgdGltZWQgb3V0LiAgV2UgYWxzbyB3YW50IHRvIHJlc3Rh
cnQgRHVtcFJlbmRlclRyZWUgaWYgdGhpcwotICAgIGhhcHBlbnMuIiIiCisgICAgIiIiVGVzdCB0
aW1lZCBvdXQuICBXZSBhbHNvIHdhbnQgdG8gcmVzdGFydCBEdW1wUmVuZGVyVHJlZSBpZiB0aGlz
IGhhcHBlbnMuIiIiCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGlzX3JlZnRlc3Q9RmFsc2UpOgog
ICAgICAgICBzZWxmLmlzX3JlZnRlc3QgPSBpc19yZWZ0ZXN0CiAKQEAgLTEzMCw2ICsxMjgsNyBA
QCBjbGFzcyBGYWlsdXJlQ3Jhc2goVGVzdEZhaWx1cmUpOgogCiAgICAgQHN0YXRpY21ldGhvZAog
ICAgIGRlZiBtZXNzYWdlKCk6CisgICAgICAgICMgRklYTUU6IFRoaXMgaXMgd3JvbmcgZm9yIFdl
YktpdDIgKHdoaWNoIHVzZXMgV2ViS2l0VGVzdFJ1bm5lcikuCiAgICAgICAgIHJldHVybiAiRHVt
cFJlbmRlclRyZWUgY3Jhc2hlZCIKIAogICAgIGRlZiBzaG91bGRfa2lsbF9kdW1wX3JlbmRlcl90
cmVlKHNlbGYpOgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9iYXNlLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9iYXNlLnB5CmluZGV4IDg2NjIzOTJkMzNhN2JmNTE2ODY3NTQxYzZiYjZmOTY0ODVkMzljNGUu
LjhlZjQ5Y2M1ZDIzNjY3NDQzMDgzNTFiY2I2OThmNGQyYjBjODBiNzEgMTAwNzU1Ci0tLSBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkKQEAgLTU4OSwxMiAr
NTg5LDYgQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAgICAgICBXZWJLaXQgc291cmNlIHRyZWUg
YW5kIHRoZSBsaXN0IG9mIHBhdGggY29tcG9uZW50cyBpbiB8KmNvbXBzfC4iIiIKICAgICAgICAg
cmV0dXJuIHNlbGYuX2NvbmZpZy5wYXRoX2Zyb21fd2Via2l0X2Jhc2UoKmNvbXBzKQogCi0gICAg
ZGVmIHNjcmlwdF9wYXRoKHNlbGYsIHNjcmlwdF9uYW1lKToKLSAgICAgICAgcmV0dXJuIHNlbGYu
X2NvbmZpZy5zY3JpcHRfcGF0aChzY3JpcHRfbmFtZSkKLQotICAgIGRlZiBzY3JpcHRfc2hlbGxf
Y29tbWFuZChzZWxmLCBzY3JpcHRfbmFtZSk6Ci0gICAgICAgIHJldHVybiBzZWxmLl9jb25maWcu
c2NyaXB0X3NoZWxsX2NvbW1hbmQoc2NyaXB0X25hbWUpCi0KICAgICBkZWYgcGF0aF90b190ZXN0
X2V4cGVjdGF0aW9uc19maWxlKHNlbGYpOgogICAgICAgICAiIiJVcGRhdGUgdGhlIHRlc3QgZXhw
ZWN0YXRpb25zIHRvIHRoZSBwYXNzZWQtaW4gc3RyaW5nLgogCmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2NvbmZpZy5weSBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY29uZmlnLnB5CmluZGV4IDYwMTY2Mzk2YWFi
MGE2ZWFjZjlhOGQ0NmQ1NjQxNDNlNDJhOTc4ODYuLjY1NDQxNzBlY2U0N2ZkYjY5NDA3NDIxODhh
YWZhNzBkMjE1MzIwNDcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvY29uZmlnLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvY29uZmlnLnB5CkBAIC03MSwzMSArNzEsMjAgQEAgY2xhc3MgQ29uZmlnKG9i
amVjdCk6CiAgICAgZGVmIGJ1aWxkX2RpcmVjdG9yeShzZWxmLCBjb25maWd1cmF0aW9uKToKICAg
ICAgICAgIiIiUmV0dXJucyB0aGUgcGF0aCB0byB0aGUgYnVpbGQgZGlyZWN0b3J5IGZvciB0aGUg
Y29uZmlndXJhdGlvbi4iIiIKICAgICAgICAgaWYgY29uZmlndXJhdGlvbjoKLSAgICAgICAgICAg
IGZsYWdzID0gWyItLWNvbmZpZ3VyYXRpb24iLAotICAgICAgICAgICAgICAgICAgICAgc2VsZi5f
RkxBR1NfRlJPTV9DT05GSUdVUkFUSU9OU1tjb25maWd1cmF0aW9uXV0KKyAgICAgICAgICAgIGZs
YWdzID0gWyItLWNvbmZpZ3VyYXRpb24iLCBzZWxmLmZsYWdfZm9yX2NvbmZpZ3VyYXRpb24oY29u
ZmlndXJhdGlvbildCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBjb25maWd1cmF0aW9uID0g
IiIKICAgICAgICAgICAgIGZsYWdzID0gWyItLXRvcC1sZXZlbCJdCiAKICAgICAgICAgaWYgbm90
IHNlbGYuX2J1aWxkX2RpcmVjdG9yaWVzLmdldChjb25maWd1cmF0aW9uKToKLSAgICAgICAgICAg
IGFyZ3MgPSBbInBlcmwiLCBzZWxmLl9zY3JpcHRfcGF0aCgid2Via2l0LWJ1aWxkLWRpcmVjdG9y
eSIpXSArIGZsYWdzCisgICAgICAgICAgICBhcmdzID0gWyJwZXJsIiwgc2VsZi5zY3JpcHRfcGF0
aCgid2Via2l0LWJ1aWxkLWRpcmVjdG9yeSIpXSArIGZsYWdzCiAgICAgICAgICAgICBzZWxmLl9i
dWlsZF9kaXJlY3Rvcmllc1tjb25maWd1cmF0aW9uXSA9ICgKLSAgICAgICAgICAgICAgICBzZWxm
Ll9leGVjdXRpdmUucnVuX2NvbW1hbmQoYXJncykucnN0cmlwKCkpCisgICAgICAgICAgICAgICAg
c2VsZi5fZXhlY3V0aXZlLnJ1bl9jb21tYW5kKGFyZ3MsIGN3ZD1zZWxmLndlYmtpdF9iYXNlX2Rp
cigpKS5yc3RyaXAoKSkKIAogICAgICAgICByZXR1cm4gc2VsZi5fYnVpbGRfZGlyZWN0b3JpZXNb
Y29uZmlndXJhdGlvbl0KIAotICAgIGRlZiBidWlsZF9kdW1wcmVuZGVydHJlZShzZWxmLCBjb25m
aWd1cmF0aW9uKToKLSAgICAgICAgIiIiQnVpbGRzIERSVCBpbiB0aGUgZ2l2ZW4gY29uZmlndXJh
dGlvbi4KLQotICAgICAgICBSZXR1cm5zIFRydWUgaWYgdGhlICBidWlsZCB3YXMgc3VjY2Vzc2Z1
bCBhbmQgdXAtdG8tZGF0ZS4iIiIKLSAgICAgICAgZmxhZyA9IHNlbGYuX0ZMQUdTX0ZST01fQ09O
RklHVVJBVElPTlNbY29uZmlndXJhdGlvbl0KLSAgICAgICAgZXhpdF9jb2RlID0gc2VsZi5fZXhl
Y3V0aXZlLnJ1bl9jb21tYW5kKFsKLSAgICAgICAgICAgIHNlbGYuX3NjcmlwdF9wYXRoKCJidWls
ZC1kdW1wcmVuZGVydHJlZSIpLCBmbGFnXSwKLSAgICAgICAgICAgIHJldHVybl9leGl0X2NvZGU9
VHJ1ZSkKLSAgICAgICAgaWYgZXhpdF9jb2RlICE9IDA6Ci0gICAgICAgICAgICBfbG9nLmVycm9y
KCJGYWlsZWQgdG8gYnVpbGQgRHVtcFJlbmRlclRyZWUiKQotICAgICAgICAgICAgcmV0dXJuIEZh
bHNlCi0gICAgICAgIHJldHVybiBUcnVlCisgICAgZGVmIGZsYWdfZm9yX2NvbmZpZ3VyYXRpb24o
c2VsZiwgY29uZmlndXJhdGlvbik6CisgICAgICAgIHJldHVybiBzZWxmLl9GTEFHU19GUk9NX0NP
TkZJR1VSQVRJT05TW2NvbmZpZ3VyYXRpb25dCiAKICAgICBkZWYgZGVmYXVsdF9jb25maWd1cmF0
aW9uKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm5zIHRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24g
Zm9yIHRoZSB1c2VyLgpAQCAtMTA3LDE1ICs5NiwxNSBAQCBjbGFzcyBDb25maWcob2JqZWN0KToK
ICAgICAgICAgaWYgbm90IHNlbGYuX2RlZmF1bHRfY29uZmlndXJhdGlvbjoKICAgICAgICAgICAg
IHNlbGYuX2RlZmF1bHRfY29uZmlndXJhdGlvbiA9ICdSZWxlYXNlJwogICAgICAgICBpZiBzZWxm
Ll9kZWZhdWx0X2NvbmZpZ3VyYXRpb24gbm90IGluIHNlbGYuX0ZMQUdTX0ZST01fQ09ORklHVVJB
VElPTlM6Ci0gICAgICAgICAgICBfbG9nLndhcm4oIkNvbmZpZ3VyYXRpb24gXCIlc1wiIGlzIG5v
dCBhIHJlY29nbml6ZWQgdmFsdWUuXG4iICUKLSAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9k
ZWZhdWx0X2NvbmZpZ3VyYXRpb24pCi0gICAgICAgICAgICBfbG9nLndhcm4oIlNjcmlwdHMgbWF5
IGZhaWwuICAiCi0gICAgICAgICAgICAgICAgICAgICAgIlNlZSAnc2V0LXdlYmtpdC1jb25maWd1
cmF0aW9uIC0taGVscCcuIikKKyAgICAgICAgICAgIF9sb2cud2FybigiQ29uZmlndXJhdGlvbiBc
IiVzXCIgaXMgbm90IGEgcmVjb2duaXplZCB2YWx1ZS5cbiIgJSBzZWxmLl9kZWZhdWx0X2NvbmZp
Z3VyYXRpb24pCisgICAgICAgICAgICBfbG9nLndhcm4oIlNjcmlwdHMgbWF5IGZhaWwuICBTZWUg
J3NldC13ZWJraXQtY29uZmlndXJhdGlvbiAtLWhlbHAnLiIpCiAgICAgICAgIHJldHVybiBzZWxm
Ll9kZWZhdWx0X2NvbmZpZ3VyYXRpb24KIAogICAgIGRlZiBwYXRoX2Zyb21fd2Via2l0X2Jhc2Uo
c2VsZiwgKmNvbXBzKToKICAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxm
LndlYmtpdF9iYXNlX2RpcigpLCAqY29tcHMpCiAKKyAgICAjIEZJWE1FOiBXZSBzaG91bGQgb25s
eSBoYXZlIG9uZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIGxvZ2ljLAorICAgICMgaWYgc2NtLmZp
bmRfY2hlY2tvdXRfcm9vdCgpIGlzIGJyb2tlbiBmb3IgQ2hyb21pdW0sIHdlIHNob3VsZCBmaXgg
KG9yIGF0IGxlYXN0IHdyYXApIGl0IQogICAgIGRlZiB3ZWJraXRfYmFzZV9kaXIoc2VsZik6CiAg
ICAgICAgICIiIlJldHVybnMgdGhlIGFic29sdXRlIHBhdGggdG8gdGhlIHRvcCBvZiB0aGUgV2Vi
S2l0IHRyZWUuCiAKQEAgLTEzMyw5ICsxMjIsOSBAQCBjbGFzcyBDb25maWcob2JqZWN0KToKICAg
ICAgICAgICAgIHNlbGYuX3dlYmtpdF9iYXNlX2RpciA9IGFic3BhdGhbMDphYnNwYXRoLmZpbmQo
J1Rvb2xzJykgLSAxXQogICAgICAgICByZXR1cm4gc2VsZi5fd2Via2l0X2Jhc2VfZGlyCiAKLSAg
ICBkZWYgX3NjcmlwdF9wYXRoKHNlbGYsIHNjcmlwdF9uYW1lKToKLSAgICAgICAgcmV0dXJuIHNl
bGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxmLndlYmtpdF9iYXNlX2RpcigpLCAiVG9vbHMiLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTY3JpcHRzIiwgc2NyaXB0X25hbWUp
CisgICAgZGVmIHNjcmlwdF9wYXRoKHNlbGYsIHNjcmlwdF9uYW1lKToKKyAgICAgICAgIyBUaGlz
IGlzIGludGVudGlvbmFsbHkgcmVsYXRpdmUuIENhbGxlcnMgc2hvdWxkIHBhc3MgdGhlIGNoZWNr
b3V0X3Jvb3Qvd2Via2l0X2Jhc2VfZGlyIHRvIHJ1bl9jb21tYW5kIGFzIHRoZSBjd2QuCisgICAg
ICAgIHJldHVybiBzZWxmLl9maWxlc3lzdGVtLmpvaW4oIlRvb2xzIiwgIlNjcmlwdHMiLCBzY3Jp
cHRfbmFtZSkKIAogICAgIGRlZiBfZGV0ZXJtaW5lX2NvbmZpZ3VyYXRpb24oc2VsZik6CiAgICAg
ICAgICMgVGhpcyBtaXJyb3JzIHRoZSBsb2dpYyBpbiB3ZWJraXRkaXJzLnBtOmRldGVybWluZUNv
bmZpZ3VyYXRpb24oKS4KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvY29uZmlnX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9jb25maWdfdW5pdHRlc3QucHkKaW5kZXggOGYxZTBkNDE2NmZhNTEw
MWRiNWRkYmY1MGI4NTA3MzVmZTdmOWY4My4uNTlhMDEwZmQ1ZDU5YzU5ZGMyZjBlNjBmYTE4YTNm
MmM3ZWI1Zjg3YyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9jb25maWdfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9jb25maWdfdW5pdHRlc3QucHkKQEAgLTkxLDI5ICs5MSw2IEBAIGNs
YXNzIENvbmZpZ1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBzZWxmLmFzc2VydFRy
dWUoYy5idWlsZF9kaXJlY3RvcnkoJ0RlYnVnJykuZW5kc3dpdGgoJy9EZWJ1ZycpKQogICAgICAg
ICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwgYy5idWlsZF9kaXJlY3RvcnksICdVbmtub3du
JykKIAotICAgIGRlZiB0ZXN0X2J1aWxkX2R1bXByZW5kZXJ0cmVlX19zdWNjZXNzKHNlbGYpOgot
ICAgICAgICBjID0gc2VsZi5tYWtlX2NvbmZpZyhleGl0X2NvZGU9MCkKLSAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKGMuYnVpbGRfZHVtcHJlbmRlcnRyZWUoIkRlYnVnIikpCi0gICAgICAgIHNlbGYu
YXNzZXJ0VHJ1ZShjLmJ1aWxkX2R1bXByZW5kZXJ0cmVlKCJSZWxlYXNlIikpCi0gICAgICAgIHNl
bGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yLCBjLmJ1aWxkX2R1bXByZW5kZXJ0cmVlLCAiVW5rbm93
biIpCi0KLSAgICBkZWYgdGVzdF9idWlsZF9kdW1wcmVuZGVydHJlZV9fZmFpbHVyZShzZWxmKToK
LSAgICAgICAgYyA9IHNlbGYubWFrZV9jb25maWcoZXhpdF9jb2RlPS0xKQotCi0gICAgICAgICMg
RklYTUU6IEJ1aWxkIGZhaWx1cmVzIHNob3VsZCBsb2cgZXJyb3JzLiBIb3dldmVyLCB0aGUgbWVz
c2FnZSB3ZQotICAgICAgICAjIGdldCBkZXBlbmRzIG9uIGhvdyB3ZSdyZSBiZWluZyBjYWxsZWQ7
IGFzIGEgc3RhbmRhbG9uZSB0ZXN0LAotICAgICAgICAjIHdlJ2xsIGdldCB0aGUgIm5vIGhhbmRs
ZXJzIGZvdW5kIiBtZXNzYWdlLiBBcyBwYXJ0IG9mCi0gICAgICAgICMgdGVzdC13ZWJraXRweSwg
d2UgZ2V0IHRoZSBhY3R1YWwgbWVzc2FnZS4gUmVhbGx5LCB3ZSBuZWVkCi0gICAgICAgICMgb3V0
cHV0Y2FwdHVyZSB0byBpbnN0YWxsIGl0cyBvd24gaGFuZGxlci4KLSAgICAgICAgb2MgPSBvdXRw
dXRjYXB0dXJlLk91dHB1dENhcHR1cmUoKQotICAgICAgICBvYy5jYXB0dXJlX291dHB1dCgpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYy5idWlsZF9kdW1wcmVuZGVydHJlZSgnRGVidWcnKSkK
LSAgICAgICAgb2MucmVzdG9yZV9vdXRwdXQoKQotCi0gICAgICAgIG9jLmNhcHR1cmVfb3V0cHV0
KCkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjLmJ1aWxkX2R1bXByZW5kZXJ0cmVlKCdSZWxl
YXNlJykpCi0gICAgICAgIG9jLnJlc3RvcmVfb3V0cHV0KCkKLQogICAgIGRlZiB0ZXN0X2RlZmF1
bHRfY29uZmlndXJhdGlvbl9fcmVsZWFzZShzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRfY29u
ZmlndXJhdGlvbignUmVsZWFzZScsICdSZWxlYXNlJykKIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXQucHkgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weQppbmRleCBmMTE5YTUwOTRlY2E4
OWMzNzQ5MWUwZjRhOTI2NTA5YzUwYmM1ODhhLi5lMTNjNTdmZGU5M2E1M2EzMTA0NzFkYTA0NjBj
YzNjNjdkMWM0YzhkIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L3dlYmtpdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L3dlYmtpdC5weQpAQCAtNDEsOCArNDEsMTAgQEAgaW1wb3J0IHN5cwogaW1wb3J0
IHRpbWUKIGltcG9ydCB3ZWJicm93c2VyCiAKKwogZnJvbSB3ZWJraXRweS5jb21tb24ubmV0LmJ1
aWxkYm90IGltcG9ydCBCdWlsZEJvdAogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtIGltcG9y
dCBvc3BhdGgKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IFNj
cmlwdEVycm9yCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0IGltcG9ydCBiYXNlLCBi
dWlsZGVycywgc2VydmVyX3Byb2Nlc3MKIAogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJ3ZWJr
aXRweS5sYXlvdXRfdGVzdHMucG9ydC53ZWJraXQiKQpAQCAtNTgsNiArNjAsMTEgQEAgY2xhc3Mg
V2ViS2l0UG9ydChiYXNlLlBvcnQpOgogICAgICAgICAjIEZJWE1FOiBkaXNhYmxlIHBpeGVsIHRl
c3RzIHVudGlsIHRoZXkgYXJlIHJ1biBieSBkZWZhdWx0IG9uIHRoZSBidWlsZCBtYWNoaW5lcy4K
ICAgICAgICAgc2VsZi5zZXRfb3B0aW9uX2RlZmF1bHQoInBpeGVsX3Rlc3RzIiwgRmFsc2UpCiAK
KyAgICBkZWYgZHJpdmVyX25hbWUoc2VsZik6CisgICAgICAgIGlmIHNlbGYuZ2V0X29wdGlvbign
d2Via2l0X3Rlc3RfcnVubmVyJyk6CisgICAgICAgICAgICByZXR1cm4gIldlYktpdFRlc3RSdW5u
ZXIiCisgICAgICAgIHJldHVybiAiRHVtcFJlbmRlclRyZWUiCisKICAgICBkZWYgYmFzZWxpbmVf
c2VhcmNoX3BhdGgoc2VsZik6CiAgICAgICAgIHJldHVybiBbc2VsZi5fd2Via2l0X2Jhc2VsaW5l
X3BhdGgoc2VsZi5fbmFtZSldCiAKQEAgLTc1LDE0ICs4MiwyOSBAQCBjbGFzcyBXZWJLaXRQb3J0
KGJhc2UuUG9ydCk6CiAgICAgICAgIHJlc3VsdF9zZXQuc2V0X3BsYXRmb3JtKHBsYXRmb3JtKQog
ICAgICAgICByZXR1cm4gcmVzdWx0X3NldAogCisgICAgZGVmIF9kcml2ZXJfYnVpbGRfc2NyaXB0
X25hbWUoc2VsZik6CisgICAgICAgIGlmIHNlbGYuZ2V0X29wdGlvbignd2Via2l0X3Rlc3RfcnVu
bmVyJyk6CisgICAgICAgICAgICByZXR1cm4gImJ1aWxkLXdlYmtpdHRlc3RydW5uZXIiCisgICAg
ICAgIHJldHVybiAiYnVpbGQtZHVtcHJlbmRlcnRyZWUiCisKICAgICBkZWYgX2J1aWxkX2RyaXZl
cihzZWxmKToKICAgICAgICAgY29uZmlndXJhdGlvbiA9IHNlbGYuZ2V0X29wdGlvbignY29uZmln
dXJhdGlvbicpCi0gICAgICAgIHJldHVybiBzZWxmLl9jb25maWcuYnVpbGRfZHVtcHJlbmRlcnRy
ZWUoY29uZmlndXJhdGlvbikKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyBGSVhNRTogV2Ug
c2hvdWxkIHByb2JhYmx5IGhhdmUgYSBydW5fc2NyaXB0IGhlbHBlciB3aGljaCBhdXRvbWF0aWNh
bGx5IGFkZHMgdGhlIGNvbmZpZ3VyYXRpb24gZmxhZ3MuCisgICAgICAgICAgICBzZWxmLl9leGVj
dXRpdmUucnVuX2NvbW1hbmQoWworICAgICAgICAgICAgICAgIHNlbGYuX2NvbmZpZy5zY3JpcHRf
cGF0aChzZWxmLl9kcml2ZXJfYnVpbGRfc2NyaXB0X25hbWUoKSksCisgICAgICAgICAgICAgICAg
c2VsZi5fY29uZmlnLmZsYWdfZm9yX2NvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbildLAorICAg
ICAgICAgICAgICAgICMgRklYTUU6IEl0J3MgdW5jbGVhciBpZiB0aGlzIGN3ZD0gaXMgbmVjZXNz
YXJ5LiBBZ2FpbiBhIGhlbHBlciBzaG91bGQgZG8gdGhpcyBmb3IgdXMuCisgICAgICAgICAgICAg
ICAgY3dkPXNlbGYuX2NvbmZpZy53ZWJraXRfYmFzZV9kaXIoKSkKKyAgICAgICAgZXhjZXB0IFNj
cmlwdEVycm9yOgorICAgICAgICAgICAgX2xvZy5lcnJvcigiRmFpbGVkIHRvIGJ1aWxkICVzIiAl
IHNlbGYuZHJpdmVyX25hbWUoKSkKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICBy
ZXR1cm4gVHJ1ZQogCiAgICAgZGVmIF9jaGVja19kcml2ZXIoc2VsZik6CiAgICAgICAgIGRyaXZl
cl9wYXRoID0gc2VsZi5fcGF0aF90b19kcml2ZXIoKQogICAgICAgICBpZiBub3Qgc2VsZi5fZmls
ZXN5c3RlbS5leGlzdHMoZHJpdmVyX3BhdGgpOgotICAgICAgICAgICAgX2xvZy5lcnJvcigiRHVt
cFJlbmRlclRyZWUgd2FzIG5vdCBmb3VuZCBhdCAlcyIgJSBkcml2ZXJfcGF0aCkKKyAgICAgICAg
ICAgIF9sb2cuZXJyb3IoIiVzIHdhcyBub3QgZm91bmQgYXQgJXMiICUgKHNlbGYuZHJpdmVyX25h
bWUoKSwgZHJpdmVyX3BhdGgpKQogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgIHJl
dHVybiBUcnVlCiAKQEAgLTE3NywxMCArMTk5LDYgQEAgY2xhc3MgV2ViS2l0UG9ydChiYXNlLlBv
cnQpOgogICAgICAgICAjIHRvIGhhdmUgbXVsdGlwbGUgY29waWVzIG9mIHdlYmtpdCBjaGVja2Vk
IG91dCBhbmQgYnVpbHQuCiAgICAgICAgIHJldHVybiBzZWxmLl9idWlsZF9wYXRoKCdsYXlvdXQt
dGVzdC1yZXN1bHRzJykKIAotICAgIGRlZiBzZXR1cF90ZXN0X3J1bihzZWxmKToKLSAgICAgICAg
IyBUaGlzIHBvcnQgZG9lc24ndCByZXF1aXJlIGFueSBzcGVjaWZpYyBjb25maWd1cmF0aW9uLgot
ICAgICAgICBwYXNzCi0KICAgICBkZWYgY3JlYXRlX2RyaXZlcihzZWxmLCB3b3JrZXJfbnVtYmVy
KToKICAgICAgICAgcmV0dXJuIFdlYktpdERyaXZlcihzZWxmLCB3b3JrZXJfbnVtYmVyKQogCkBA
IC00MjcsOCArNDQ1LDggQEAgY2xhc3MgV2ViS2l0RHJpdmVyKGJhc2UuRHJpdmVyKToKICAgICAg
ICAgaWYgZXJyb3JfbGluZXMgYW5kIGVycm9yX2xpbmVzWy0xXSA9PSAiI0VPRiI6CiAgICAgICAg
ICAgICBlcnJvcl9saW5lcy5wb3AoKSAgIyBSZW1vdmUgdGhlIGV4cGVjdGVkICIjRU9GIgogICAg
ICAgICBlcnJvciA9ICJcbiIuam9pbihlcnJvcl9saW5lcykKLSAgICAgICAgIyBGSVhNRTogVGhp
cyBzZWVtcyBsaWtlIHRoZSB3cm9uZyBzZWN0aW9uIG9mIGNvZGUgdG8gYmUgZG9pbmcKLSAgICAg
ICAgIyB0aGlzIHJlc2V0IGluLgorCisgICAgICAgICMgRklYTUU6IFRoaXMgc2VlbXMgbGlrZSB0
aGUgd3Jvbmcgc2VjdGlvbiBvZiBjb2RlIHRvIGJlIGRvaW5nIHRoaXMgcmVzZXQgaW4uCiAgICAg
ICAgIHNlbGYuX3NlcnZlcl9wcm9jZXNzLmVycm9yID0gIiIKICAgICAgICAgcmV0dXJuIGJhc2Uu
RHJpdmVyT3V0cHV0KHRleHQsIGltYWdlLCBhY3R1YWxfaW1hZ2VfaGFzaCwgYXVkaW8sCiAgICAg
ICAgICAgICBjcmFzaD1zZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5jcmFzaGVkLCB0ZXN0X3RpbWU9dGlt
ZS50aW1lKCkgLSBzdGFydF90aW1lLApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXRfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdF91bml0dGVzdC5weQppbmRleCAwYWYzMzgx
ZjExMTVjNjcyYmFlNWViM2FlMzE0ZjU3MzRkMWRiOTYzLi42YThkN2UxMTBkNjA0ODczMzgwNzg5
NjMxYzdmNTVmMDQ4ZTU3ODY1IDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L3dlYmtpdF91bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdF91bml0dGVzdC5weQpAQCAtMjgsMTkgKzI4
LDI1IEBACiBpbXBvcnQgdW5pdHRlc3QKIAogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtIGlt
cG9ydCBmaWxlc3lzdGVtX21vY2sKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5vdXRwdXRj
YXB0dXJlIGltcG9ydCBPdXRwdXRDYXB0dXJlCiAKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3Rz
LnBvcnQud2Via2l0IGltcG9ydCBXZWJLaXRQb3J0CiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0
cy5wb3J0IGltcG9ydCBwb3J0X3Rlc3RjYXNlCiAKK2Zyb20gd2Via2l0cHkudG9vbC5tb2NrdG9v
bCBpbXBvcnQgTW9ja0V4ZWN1dGl2ZQorZnJvbSB3ZWJraXRweS50b29sLm1vY2t0b29sIGltcG9y
dCBNb2NrT3B0aW9ucworCiAKIGNsYXNzIFRlc3RXZWJLaXRQb3J0KFdlYktpdFBvcnQpOgogICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBzeW1ib2xfbGlzdD1Ob25lLCBmZWF0dXJlX2xpc3Q9Tm9uZSwK
LSAgICAgICAgICAgICAgICAgZXhwZWN0YXRpb25zX2ZpbGU9Tm9uZSwgc2tpcHNfZmlsZT1Ob25l
LCAqKmt3YXJncyk6CisgICAgICAgICAgICAgICAgIGV4cGVjdGF0aW9uc19maWxlPU5vbmUsIHNr
aXBzX2ZpbGU9Tm9uZSwKKyAgICAgICAgICAgICAgICAgZXhlY3V0aXZlPU5vbmUsICoqa3dhcmdz
KToKICAgICAgICAgc2VsZi5zeW1ib2xfbGlzdCA9IHN5bWJvbF9saXN0CiAgICAgICAgIHNlbGYu
ZmVhdHVyZV9saXN0ID0gZmVhdHVyZV9saXN0CiAgICAgICAgIHNlbGYuZXhwZWN0YXRpb25zX2Zp
bGUgPSBleHBlY3RhdGlvbnNfZmlsZQogICAgICAgICBzZWxmLnNraXBzX2ZpbGUgPSBza2lwc19m
aWxlCi0gICAgICAgIFdlYktpdFBvcnQuX19pbml0X18oc2VsZiwgKiprd2FyZ3MpCisgICAgICAg
IGV4ZWN1dGl2ZSA9IGV4ZWN1dGl2ZSBvciBNb2NrRXhlY3V0aXZlKHNob3VsZF9sb2c9RmFsc2Up
CisgICAgICAgIFdlYktpdFBvcnQuX19pbml0X18oc2VsZiwgZXhlY3V0aXZlPWV4ZWN1dGl2ZSwg
Kiprd2FyZ3MpCiAKICAgICBkZWYgX3J1bnRpbWVfZmVhdHVyZV9saXN0KHNlbGYpOgogICAgICAg
ICByZXR1cm4gc2VsZi5mZWF0dXJlX2xpc3QKQEAgLTkxLDggKzk3LDcgQEAgY2xhc3MgV2ViS2l0
UG9ydFRlc3QocG9ydF90ZXN0Y2FzZS5Qb3J0VGVzdENhc2UpOgogICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHJlc3VsdF9kaXJlY3RvcmllcywgZXhwZWN0ZWRfZGlyZWN0b3JpZXMpCiAKICAgICBk
ZWYgdGVzdF9za2lwcGVkX2xheW91dF90ZXN0cyhzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChUZXN0V2ViS2l0UG9ydChOb25lLCBOb25lKS5za2lwcGVkX2xheW91dF90ZXN0cygpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgIHNldChbIm1lZGlhIl0pKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKFRlc3RXZWJLaXRQb3J0KE5vbmUsIE5vbmUpLnNraXBwZWRfbGF5b3V0X3Rlc3Rz
KCksIHNldChbIm1lZGlhIl0pKQogCiAgICAgZGVmIHRlc3RfdGVzdF9leHBlY3RhdGlvbnMoc2Vs
Zik6CiAgICAgICAgICMgQ2hlY2sgdGhhdCB3ZSByZWFkIGJvdGggdGhlIGV4cGVjdGF0aW9ucyBm
aWxlIGFuZCBhbnl0aGluZyBpbiBhCkBAIC0xMDksNiArMTE0LDIxIEBAIGNsYXNzIFdlYktpdFBv
cnRUZXN0KHBvcnRfdGVzdGNhc2UuUG9ydFRlc3RDYXNlKToKIEJVR19TS0lQUEVEIFNLSVAgOiBm
YXN0L2h0bWwva2V5Z2VuLmh0bWwgPSBGQUlMCiBCVUdfU0tJUFBFRCBTS0lQIDogbWVkaWEgPSBG
QUlMIiIiKQogCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdW5pdHRlc3QubWFp
bigpCisgICAgZGVmIHRlc3RfYnVpbGRfZHJpdmVyKHNlbGYpOgorICAgICAgICBvdXRwdXQgPSBP
dXRwdXRDYXB0dXJlKCkKKyAgICAgICAgcG9ydCA9IFRlc3RXZWJLaXRQb3J0KCkKKyAgICAgICAg
IyBEZWxheSBzZXR0aW5nIF9leGVjdXRpdmUgdG8gYXZvaWQgbG9nZ2luZyBkdXJpbmcgY29uc3Ry
dWN0aW9uCisgICAgICAgIHBvcnQuX2V4ZWN1dGl2ZSA9IE1vY2tFeGVjdXRpdmUoc2hvdWxkX2xv
Zz1UcnVlKQorICAgICAgICBwb3J0Ll9vcHRpb25zID0gTW9ja09wdGlvbnMoY29uZmlndXJhdGlv
bj0iUmVsZWFzZSIpICAjIFRoaXMgc2hvdWxkIG5vdCBiZSBuZWNlc3NhcnksIGJ1dCBJIHRoaW5r
IFRlc3RXZWJLaXRQb3J0IGlzIGFjdHVhbGx5IHJlYWRpbmcgZnJvbSBkaXNrIChhbmQgdGh1cyBk
ZXRlY3RzIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24pLgorICAgICAgICBleHBlY3RlZF9zdGRl
cnIgPSAiTU9DSyBydW5fY29tbWFuZDogWydUb29scy9TY3JpcHRzL2J1aWxkLWR1bXByZW5kZXJ0
cmVlJywgJy0tcmVsZWFzZSddXG4iCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvdXRwdXQuYXNz
ZXJ0X291dHB1dHMoc2VsZiwgcG9ydC5fYnVpbGRfZHJpdmVyLCBleHBlY3RlZF9zdGRlcnI9ZXhw
ZWN0ZWRfc3RkZXJyKSkKKworICAgICAgICAjIE1ha2Ugc3VyZSB3aGVuIHBhc3NlZCAtLXdlYmtp
dC10ZXN0LXJ1bm5lciB3ZWIgYnVpbGQgdGhlIHJpZ2h0IHRvb2wuCisgICAgICAgIHBvcnQuX29w
dGlvbnMgPSBNb2NrT3B0aW9ucyh3ZWJraXRfdGVzdF9ydW5uZXI9VHJ1ZSwgY29uZmlndXJhdGlv
bj0iUmVsZWFzZSIpCisgICAgICAgIGV4cGVjdGVkX3N0ZGVyciA9ICJNT0NLIHJ1bl9jb21tYW5k
OiBbJ1Rvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0dGVzdHJ1bm5lcicsICctLXJlbGVhc2UnXVxu
IgorICAgICAgICBzZWxmLmFzc2VydFRydWUob3V0cHV0LmFzc2VydF9vdXRwdXRzKHNlbGYsIHBv
cnQuX2J1aWxkX2RyaXZlciwgZXhwZWN0ZWRfc3RkZXJyPWV4cGVjdGVkX3N0ZGVycikpCisKKyAg
ICAgICAgIyBNYWtlIHN1cmUgdGhhdCBmYWlsdXJlIHRvIGJ1aWxkIHJldHVybnMgRmFsc2UuCisg
ICAgICAgIHBvcnQuX2V4ZWN1dGl2ZSA9IE1vY2tFeGVjdXRpdmUoc2hvdWxkX2xvZz1UcnVlLCBz
aG91bGRfdGhyb3c9VHJ1ZSkKKyAgICAgICAgZXhwZWN0ZWRfc3RkZXJyID0gIk1PQ0sgcnVuX2Nv
bW1hbmQ6IFsnVG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXR0ZXN0cnVubmVyJywgJy0tcmVsZWFz
ZSddXG4iCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3V0cHV0LmFzc2VydF9vdXRwdXRzKHNl
bGYsIHBvcnQuX2J1aWxkX2RyaXZlciwgZXhwZWN0ZWRfc3RkZXJyPWV4cGVjdGVkX3N0ZGVycikp
CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Vi
a2l0X3Rlc3RzLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dl
YmtpdF90ZXN0cy5weQppbmRleCA2ZGYyYzhmZDk1NDJmMWY3N2MxZDFiMzFiMTM4NzRlMGIwYTkx
ODUwLi4yZGZiYjhlYzk5MmI3NTAxNmE5MWZmZWU0ZmY3NjI4ZmJhZDMzNWUyIDEwMDc1NQotLS0g
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5
CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVz
dHMucHkKQEAgLTI2OCw3ICsyNjgsOSBAQCBkZWYgcGFyc2VfYXJncyhhcmdzPU5vbmUpOgogICAg
ICAgICBvcHRwYXJzZS5tYWtlX29wdGlvbigiLS1jb21wbGV4LXRleHQiLCBhY3Rpb249InN0b3Jl
X3RydWUiLCBkZWZhdWx0PUZhbHNlLAogICAgICAgICAgICAgaGVscD0iVXNlIHRoZSBjb21wbGV4
IHRleHQgY29kZSBwYXRoIGZvciBhbGwgdGV4dCAoTWFjIE9TIFggYW5kIFdpbmRvd3Mgb25seSki
KSwKICAgICAgICAgb3B0cGFyc2UubWFrZV9vcHRpb24oIi0tdGhyZWFkZWQiLCBhY3Rpb249InN0
b3JlX3RydWUiLCBkZWZhdWx0PUZhbHNlLAotICAgICAgICAgICAgaGVscD0iUnVuIGEgY29uY3Vy
cmVudCBKYXZhU2NyaXB0IHRoZWFkIHdpdGggZWFjaCB0ZXN0IikKKyAgICAgICAgICAgIGhlbHA9
IlJ1biBhIGNvbmN1cnJlbnQgSmF2YVNjcmlwdCB0aGVhZCB3aXRoIGVhY2ggdGVzdCIpLAorICAg
ICAgICBvcHRwYXJzZS5tYWtlX29wdGlvbigiLS13ZWJraXQtdGVzdC1ydW5uZXIiLCAiLTIiLCBh
Y3Rpb249InN0b3JlX3RydWUiLAorICAgICAgICAgICAgaGVscD0iVXNlIFdlYktpdFRlc3RSdW5u
ZXIgcmF0aGVyIHRoYW4gRHVtcFJlbmRlclRyZWUuIiksCiAgICAgXQogCiAgICAgIyBNaXNzaW5n
IE1hYy1zcGVjaWZpYyBvbGQtcnVuLXdlYmtpdC10ZXN0cyBvcHRpb25zOgpkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9xdWV1ZWVuZ2luZV91bml0dGVzdC5weSBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvcXVldWVlbmdpbmVfdW5pdHRlc3QucHkK
aW5kZXggMzdkODUwMmFmY2FiMjNkZTJhODIwODM5NzM4N2JjYmQ5OWIwMzMwYS4uNjVkNjY3NDM1
M2ZjNjMwOTgxMDYyMzljNzZmYmIxYWI1MThhZmE5YiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS90b29sL2JvdC9xdWV1ZWVuZ2luZV91bml0dGVzdC5weQorKysgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L3F1ZXVlZW5naW5lX3VuaXR0ZXN0LnB5CkBAIC0xNjAs
NyArMTYwLDcgQEAgY2xhc3MgUXVldWVFbmdpbmVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAg
ICAgICAgaWYgbm90IHRlcm1pbmF0aW9uX21lc3NhZ2U6CiAgICAgICAgICAgICB0ZXJtaW5hdGlv
bl9tZXNzYWdlID0gIkRlbGVnYXRlIHRlcm1pbmF0ZWQgcXVldWUuIgogICAgICAgICBleHBlY3Rl
ZF9zdGRlcnIgPSAiXG4lc1xuIiAlIHRlcm1pbmF0aW9uX21lc3NhZ2UKLSAgICAgICAgT3V0cHV0
Q2FwdHVyZSgpLmFzc2VydF9vdXRwdXRzKHNlbGYsIGVuZ2luZS5ydW4sIFtdLCBleHBlY3RlZF9z
dGRlcnI9ZXhwZWN0ZWRfc3RkZXJyKQorICAgICAgICBPdXRwdXRDYXB0dXJlKCkuYXNzZXJ0X291
dHB1dHMoc2VsZiwgZW5naW5lLnJ1biwgZXhwZWN0ZWRfc3RkZXJyPWV4cGVjdGVkX3N0ZGVycikK
IAogICAgIGRlZiBfdGVzdF90ZXJtaW5hdGluZ19xdWV1ZShzZWxmLCBleGNlcHRpb24sIHRlcm1p
bmF0aW9uX21lc3NhZ2UpOgogICAgICAgICB3b3JrX2l0ZW1faW5kZXggPSBMb2dnaW5nRGVsZWdh
dGUuZXhwZWN0ZWRfY2FsbGJhY2tzLmluZGV4KCdwcm9jZXNzX3dvcmtfaXRlbScpCmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvY29tbWFuZHRlc3QucHkg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvY29tbWFuZHRlc3QucHkKaW5k
ZXggZTMzNTcxMDRkY2JiZTMzNmQ2Y2M4ZDM2YzY2YzE1NGM5NzBhNGY4Mi4uYzQ4ZjcwNjJhOWVl
NDdlYzdhMjljODIwZmFmZjYyZGY4NzMwMmZlMyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL2NvbW1hbmRzL2NvbW1hbmR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdG9vbC9jb21tYW5kcy9jb21tYW5kdGVzdC5weQpAQCAtMzIsNyArMzIsNyBAQCBm
cm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ub3V0cHV0Y2FwdHVyZSBpbXBvcnQgT3V0cHV0Q2Fw
dHVyZQogZnJvbSB3ZWJraXRweS50b29sLm1vY2t0b29sIGltcG9ydCBNb2NrT3B0aW9ucywgTW9j
a1Rvb2wKIAogY2xhc3MgQ29tbWFuZHNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYg
YXNzZXJ0X2V4ZWN1dGVfb3V0cHV0cyhzZWxmLCBjb21tYW5kLCBhcmdzLCBleHBlY3RlZF9zdGRv
dXQ9IiIsIGV4cGVjdGVkX3N0ZGVycj0iIiwgZXhwZWN0ZWRfZXhjZXB0aW9uPU5vbmUsIG9wdGlv
bnM9TW9ja09wdGlvbnMoKSwgdG9vbD1Nb2NrVG9vbCgpKToKKyAgICBkZWYgYXNzZXJ0X2V4ZWN1
dGVfb3V0cHV0cyhzZWxmLCBjb21tYW5kLCBhcmdzPVtdLCBleHBlY3RlZF9zdGRvdXQ9IiIsIGV4
cGVjdGVkX3N0ZGVycj0iIiwgZXhwZWN0ZWRfZXhjZXB0aW9uPU5vbmUsIG9wdGlvbnM9TW9ja09w
dGlvbnMoKSwgdG9vbD1Nb2NrVG9vbCgpKToKICAgICAgICAgb3B0aW9ucy5ibG9ja3MgPSBOb25l
CiAgICAgICAgIG9wdGlvbnMuY2MgPSAnTU9DSyBjYycKICAgICAgICAgb3B0aW9ucy5jb21wb25l
bnQgPSAnTU9DSyBjb21wb25lbnQnCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L3Rvb2wvY29tbWFuZHMvcXVldWVzX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS90b29sL2NvbW1hbmRzL3F1ZXVlc191bml0dGVzdC5weQppbmRleCBhZDczODZhNDU4NGJkYWQ2
ZTc4Yjc1ZTU4YjgzMTdmNjI2MzI1OGVmLi5kZjgzZjIxNzI5YTY5YTEwMzFlYWE2MmM1NTVjOGZk
NGRmYzBmNWZhIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFu
ZHMvcXVldWVzX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9j
b21tYW5kcy9xdWV1ZXNfdW5pdHRlc3QucHkKQEAgLTE2Niw3ICsxNjYsNyBAQCBjbGFzcyBBYnN0
cmFjdFBhdGNoUXVldWVUZXN0KENvbW1hbmRzVGVzdCk6CiAgICAgICAgIHRvb2wuc3RhdHVzX3Nl
cnZlciA9IE1vY2tTdGF0dXNTZXJ2ZXIod29ya19pdGVtcz1bMiwgMTk3XSkKICAgICAgICAgZXhw
ZWN0ZWRfc3Rkb3V0ID0gIk1PQ0s6IGZldGNoX2F0dGFjaG1lbnQ6IDIgaXMgbm90IGEga25vd24g
YXR0YWNobWVudCBpZFxuIiAgIyBBIG1vY2stb25seSBtZXNzYWdlIHRvIHByZXZlbnQgdXMgZnJv
bSBtYWtpbmcgbWlzdGFrZXMuCiAgICAgICAgIGV4cGVjdGVkX3N0ZGVyciA9ICJNT0NLOiByZWxl
YXNlX3dvcmtfaXRlbTogTm9uZSAyXG4iCi0gICAgICAgIHBhdGNoX2lkID0gT3V0cHV0Q2FwdHVy
ZSgpLmFzc2VydF9vdXRwdXRzKHNlbGYsIHF1ZXVlLl9uZXh0X3BhdGNoLCBbXSwgZXhwZWN0ZWRf
c3Rkb3V0PWV4cGVjdGVkX3N0ZG91dCwgZXhwZWN0ZWRfc3RkZXJyPWV4cGVjdGVkX3N0ZGVycikK
KyAgICAgICAgcGF0Y2hfaWQgPSBPdXRwdXRDYXB0dXJlKCkuYXNzZXJ0X291dHB1dHMoc2VsZiwg
cXVldWUuX25leHRfcGF0Y2gsIGV4cGVjdGVkX3N0ZG91dD1leHBlY3RlZF9zdGRvdXQsIGV4cGVj
dGVkX3N0ZGVycj1leHBlY3RlZF9zdGRlcnIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHBh
dGNoX2lkLCBOb25lKSAgIyAyIGlzIGFuIGludmFsaWQgcGF0Y2ggaWQKICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbHMocXVldWUuX25leHRfcGF0Y2goKS5pZCgpLCAxOTcpCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>98801</attachid>
            <date>2011-06-27 15:23:57 -0700</date>
            <delta_ts>2011-06-28 11:09:17 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-63439-20110627152355.patch</filename>
            <type>text/plain</type>
            <size>34193</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODk4NTgKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCA0MmRhMjViMTViN2M0YWZlZTFkNDcwOTM1ZDNmMTczNDkz
MGQ4MDM4Li4wYWVkYjBmODg1YWE5OWJjZGVjN2ZhOGY4OGIyNmE4YWVjN2FmMzM3IDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDQg
QEAKKzIwMTEtMDYtMjcgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IEFkYW0gQmFydGguCisKKyAgICAgICAgbmV3LXJ1bi13ZWJraXQtdGVzdHMg
bmVlZHMgYSAtLXdlYmtpdC10ZXN0LXJ1bm5lciBvcHRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYzNDM5CisKKyAgICAgICAgTlJXVCBkb2Vzbid0
IGFjdHVhbGx5IGtub3cgaG93IHRvIHJ1biB3aXRoIHRoZSBXZWJLaXRUZXN0UnVubmVyIHlldAor
ICAgICAgICBidXQgaXQgZG9lcyBoYXZlIGEgLS13ZWJraXQtdGVzdC1ydW5uZXIgb3B0aW9uIGFu
ZCB3aWxsIGJ1aWxkIFdlYktpdFRlc3RSdW5uZXIgY29ycmVjdGx5LgorCisgICAgICAgIFRoZXJl
IGlzIGEgYnVuY2ggb2Ygb3RoZXIgbGl0dGxlIGNsZWFudXAgaW4gdGhpcyBwYXRjaCB3aGljaCBJ
IGFkZGVkIGFzIEkKKyAgICAgICAgdG9vayBhIHRvdXIgdGhyb3VnaCBhbGwgb2Ygb3VyIGhhcmQt
Y29kZWQgRHVtcFJlbmRlclRyZWUgc3RyaW5ncy4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvY29tbW9uL25ldC9sYXlvdXR0ZXN0cmVzdWx0cy5weTogQWRkZWQgRklYTUUuCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL291dHB1dGNhcHR1cmUucHk6IEZpeGVk
IHNwYWNpbmcgdG8gcGFzcyBQRVA4LgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL2xheW91dF9wYWNrYWdlL21hbmFnZXIucHk6IE1hZGUgdGhlIEZJWE1FIHNsaWdodGx5
IHN0cm9uZ2VyIChiYWQgYnVnKS4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9sYXlvdXRfcGFja2FnZS9zaW5nbGVfdGVzdF9ydW5uZXIucHk6IHRlc3Rfc2hlbGwgaXMg
ZGVhZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFj
a2FnZS90ZXN0X2ZhaWx1cmVzLnB5OiBVbndyYXBwZWQgc2lsbHkgd3JhcHBpbmcuCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5OiBSZW1vdmVkIHR3
byBkZWFkIG1ldGhvZHMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9jb25maWcucHk6CisgICAgICAgICAtIGJ1aWxkX2R1bXByZW5kZXJ0cmVlIGhhZCBubyBi
dXNpbmVzcyBpbiB0aGlzIGNsYXNzLCByZW1vdmVkIGl0LgorICAgICAgICAgLSBFeHBvc2VkIF9G
TEFHU19GUk9NX0NPTkZJR1VSQVRJT05TIHRocm91Z2ggZmxhZ19mb3JfY29uZmlndXJhdGlvbigp
CisgICAgICAgICAtIEV4cG9zZWQgX3NjcmlwdF9wYXRoIGFzIHNjcmlwdF9wYXRoKCkgKHRoaXMg
cHJvYmFibHkgYmVsb25ncyBlbHNld2hlcmUpLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvY29uZmlnX3VuaXR0ZXN0LnB5OgorICAgICAgICAgLSBNb3ZlZCB0
aGVzZSB0ZXN0cyB0byB3ZWJraXRfdW5pdHRlc3RzLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5OgorICAgICAgICAgLSBOb3cgcmVzcGVjdHMg
dGhlIC0td2Via2l0LXRlc3QtcnVubmVyIG9wdGlvbi4KKyAgICAgICAgIC0gc2V0dXBfdGVzdF9y
dW4gaXMgZW1wdHkgaW4gYmFzZS5weSB0b28sIG5vIG5lZWQgdG8gb3ZlcnJpZGUgaXQuCisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXRfdW5pdHRlc3Qu
cHk6CisgICAgICAgICAtIFRlc3QgdGhlIG5ldyBob3RuZXNzLgorICAgICAgICAgLSBCYWQsIGJh
ZCwgYmFkISAgVGhlIG9sZCBjb2RlIHdhcyB1c2luZyBhIHJlYWwgRXhlY3V0aXZlIGR1cmluZyB1
bml0LXRlc3RpbmchCisgICAgICAgICAgIEkgdGhpbmsgdGhpcyBjb2RlIGlzIHN0aWxsIGhpdHRp
bmcgZGlzayBkdXJpbmcgdGhlIHVuaXQgdGVzdHMuIDooCisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weToKKyAgICAgICAgIC0gQWRkIHRo
ZSBvcHRpb24uCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9xdWV1ZWVuZ2lu
ZV91bml0dGVzdC5weToKKyAgICAgICAgIC0gUmVtb3ZlIG9wdGlvbmFsIGFyZ3Mgb3B0aW9uLgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9jb21tYW5kdGVzdC5weToK
KyAgICAgICAgIC0gUmVtb3ZlIG9wdGlvbmFsIGFyZ3Mgb3B0aW9uLgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9xdWV1ZXNfdW5pdHRlc3QucHk6CisgICAgICAgICAt
IFJlbW92ZSBvcHRpb25hbCBhcmdzIG9wdGlvbi4KKwogMjAxMS0wNi0yNyAgQWRhbSBCYXJ0aCAg
PGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERpcmsgUHJhbmtlLgpk
aWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2xheW91dHRlc3Ry
ZXN1bHRzLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2xheW91dHRlc3Ry
ZXN1bHRzLnB5CmluZGV4IDRhNWVhNDIwYzg0MzdhZDcwNTNkZWVkZTAwNjZmMzk1MjgzZTc3YjIu
LmFiNWEyN2Y4NThkMThlZDYzZTVkMTliZGJlODhiZWNjMjI1NDYzYWYgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9sYXlvdXR0ZXN0cmVzdWx0cy5weQorKysg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvbGF5b3V0dGVzdHJlc3VsdHMucHkK
QEAgLTQ4LDYgKzQ4LDcgQEAgY2xhc3MgT1JXVFJlc3VsdHNIVE1MUGFyc2VyKG9iamVjdCk6CiAg
ICAgc3RkZXJyX2tleSA9IHUnVGVzdHMgdGhhdCBoYWQgc3RkZXJyIG91dHB1dDonCiAgICAgZmFp
bF9rZXkgPSB1J1Rlc3RzIHdoZXJlIHJlc3VsdHMgZGlkIG5vdCBtYXRjaCBleHBlY3RlZCByZXN1
bHRzOicKICAgICB0aW1lb3V0X2tleSA9IHUnVGVzdHMgdGhhdCB0aW1lZCBvdXQ6JworICAgICMg
RklYTUU6IFRoaXMgbWF5IG5lZWQgdG8gYmUgbWFkZSBhd2FyZSBvZiBXZWJLaXRUZXN0UnVubmVy
IHJlc3VsdHMgZm9yIFdlYktpdDIuCiAgICAgY3Jhc2hfa2V5ID0gdSdUZXN0cyB0aGF0IGNhdXNl
ZCB0aGUgRHVtcFJlbmRlclRyZWUgdG9vbCB0byBjcmFzaDonCiAgICAgbWlzc2luZ19rZXkgPSB1
J1Rlc3RzIHRoYXQgaGFkIG5vIGV4cGVjdGVkIHJlc3VsdHMgKHByb2JhYmx5IG5ldyk6JwogICAg
IHdlYnByb2Nlc3NfY3Jhc2hfa2V5ID0gdSdUZXN0cyB0aGF0IGNhdXNlZCB0aGUgV2ViIHByb2Nl
c3MgdG8gY3Jhc2g6JwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24v
c3lzdGVtL2V4ZWN1dGl2ZV9tb2NrLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24v
c3lzdGVtL2V4ZWN1dGl2ZV9tb2NrLnB5CmluZGV4IDM2NzczMmMwZWNhOWFkNTI1M2ViNzFkM2Zi
MGU0ZmJjZDYyN2Q3NDMuLjMwZTRjN2VkNjk0MDcwNjkwNmE4NzFkNjIzOTA1ZTk5MDU2M2MyN2Yg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9leGVjdXRp
dmVfbW9jay5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZXhl
Y3V0aXZlX21vY2sucHkKQEAgLTUxLDE2ICs1MSwyMiBAQCBjbGFzcyBNb2NrRXhlY3V0aXZlMihv
YmplY3QpOgogICAgIGRlZiBraWxsX3Byb2Nlc3Moc2VsZiwgcGlkKToKICAgICAgICAgcGFzcwog
Ci0gICAgZGVmIHJ1bl9jb21tYW5kKHNlbGYsIGFyZ19saXN0LCBlcnJvcl9oYW5kbGVyPU5vbmUs
IHJldHVybl9leGl0X2NvZGU9RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgIGRlY29kZV9vdXRw
dXQ9RmFsc2UsIHJldHVybl9zdGRlcnI9RmFsc2UpOgorICAgIGRlZiBydW5fY29tbWFuZChzZWxm
LAorICAgICAgICAgICAgICAgICAgICBhcmdzLAorICAgICAgICAgICAgICAgICAgICBjd2Q9Tm9u
ZSwKKyAgICAgICAgICAgICAgICAgICAgaW5wdXQ9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAg
ZXJyb3JfaGFuZGxlcj1Ob25lLAorICAgICAgICAgICAgICAgICAgICByZXR1cm5fZXhpdF9jb2Rl
PUZhbHNlLAorICAgICAgICAgICAgICAgICAgICByZXR1cm5fc3RkZXJyPVRydWUsCisgICAgICAg
ICAgICAgICAgICAgIGRlY29kZV9vdXRwdXQ9RmFsc2UpOgogICAgICAgICBpZiBzZWxmLl9leGNl
cHRpb246CiAgICAgICAgICAgICByYWlzZSBzZWxmLl9leGNlcHRpb24KICAgICAgICAgaWYgcmV0
dXJuX2V4aXRfY29kZToKICAgICAgICAgICAgIHJldHVybiBzZWxmLl9leGl0X2NvZGUKICAgICAg
ICAgaWYgc2VsZi5fcnVuX2NvbW1hbmRfZm46Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fcnVu
X2NvbW1hbmRfZm4oYXJnX2xpc3QpCisgICAgICAgICAgICByZXR1cm4gc2VsZi5fcnVuX2NvbW1h
bmRfZm4oYXJncykKICAgICAgICAgaWYgc2VsZi5fZXhpdF9jb2RlIGFuZCBlcnJvcl9oYW5kbGVy
OgotICAgICAgICAgICAgc2NyaXB0X2Vycm9yID0gZXhlY3V0aXZlLlNjcmlwdEVycm9yKHNjcmlw
dF9hcmdzPWFyZ19saXN0LAorICAgICAgICAgICAgc2NyaXB0X2Vycm9yID0gZXhlY3V0aXZlLlNj
cmlwdEVycm9yKHNjcmlwdF9hcmdzPWFyZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZXhpdF9jb2RlPXNlbGYuX2V4aXRfY29kZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQ9c2VsZi5fb3V0
cHV0KQogICAgICAgICAgICAgZXJyb3JfaGFuZGxlcihzY3JpcHRfZXJyb3IpCmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vb3V0cHV0Y2FwdHVyZS5weSBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9vdXRwdXRjYXB0dXJlLnB5Cmlu
ZGV4IDQ1ZTBlM2ZjOTM2Y2E4Mjk1NjA4ODBhODYxMTk2NGJmZmY2ZjIxZWEuLmVhNTA4MDFhZDMw
MGQ0Yzk4YTAwNWYxNGRiYzVlN2I3YWM4NWVkZDYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvY29tbW9uL3N5c3RlbS9vdXRwdXRjYXB0dXJlLnB5CisrKyBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9vdXRwdXRjYXB0dXJlLnB5CkBAIC0zMiw2ICszMiw3
IEBAIGltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAogZnJvbSBTdHJpbmdJTyBpbXBvcnQgU3Ry
aW5nSU8KIAorCiBjbGFzcyBPdXRwdXRDYXB0dXJlKG9iamVjdCk6CiAgICAgZGVmIF9faW5pdF9f
KHNlbGYpOgogICAgICAgICBzZWxmLnNhdmVkX291dHB1dHMgPSBkaWN0KCkKZGlmZiAtLWdpdCBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL21hbmFn
ZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2Fn
ZS9tYW5hZ2VyLnB5CmluZGV4IDUzZTVmNjk3Y2RiNTEzMWJiNzIyNjAyM2Q2OTZmYzRlMmI3MGRl
YWMuLjEyZWY5YjBkOWI1OTVjN2IzMTVhYmY4ZWUzNWRmNmE1MDIyNmM2YWEgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL21hbmFn
ZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3Bh
Y2thZ2UvbWFuYWdlci5weQpAQCAtNjUyLDcgKzY1Miw3IEBAIGNsYXNzIE1hbmFnZXI6CiAgICAg
ICAgICAgICAjIEZJWE1FOiBJZiB3ZSBzdGFydCB3b3JrZXJzIHVwIHRvbyBxdWlja2x5LCBEdW1w
UmVuZGVyVHJlZSBhcHBlYXJzCiAgICAgICAgICAgICAjIHRvIHRocmFzaCBvbiBzb21ldGhpbmcg
YW5kIHRpbWUgb3V0IGl0cyBmaXJzdCBmZXcgdGVzdHMuIFVudGlsCiAgICAgICAgICAgICAjIHdl
IGNhbiBmaWd1cmUgb3V0IHdoYXQncyBnb2luZyBvbiwgc2xlZXAgYSBiaXQgaW4gYmV0d2Vlbgot
ICAgICAgICAgICAgIyB3b3JrZXJzLgorICAgICAgICAgICAgIyB3b3JrZXJzLiBUaGlzIG5lZWRz
IGEgYnVnIGZpbGVkLgogICAgICAgICAgICAgdGltZS5zbGVlcCgwLjEpCiAKICAgICAgICAgc2Vs
Zi5fcHJpbnRlci5wcmludF91cGRhdGUoIlN0YXJ0aW5nIHRlc3RpbmcgLi4uIikKZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Np
bmdsZV90ZXN0X3J1bm5lci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L2xheW91dF9wYWNrYWdlL3NpbmdsZV90ZXN0X3J1bm5lci5weQppbmRleCBkYmFiNWM2MGE5ZWI3
NTJhZjljNDdjODQ1ZGM3MmFjOTU3MTBhZTIwLi40NWYzMTAxNmEyMTBiN2Y0MjFmMTE4YzRkZTQw
YWRkOTVlNzVkOWY2IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9sYXlvdXRfcGFja2FnZS9zaW5nbGVfdGVzdF9ydW5uZXIucHkKKysrIGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2Uvc2luZ2xlX3Rlc3RfcnVu
bmVyLnB5CkBAIC0xNDMsNyArMTQzLDcgQEAgY2xhc3MgU2luZ2xlVGVzdFJ1bm5lcjoKICAgICAg
ICAgcmV0dXJuIFRlc3RSZXN1bHQoc2VsZi5fZmlsZW5hbWUsIGZhaWx1cmVzLCBkcml2ZXJfb3V0
cHV0LnRlc3RfdGltZSwgZHJpdmVyX291dHB1dC5oYXNfc3RkZXJyKCkpCiAKICAgICBkZWYgX3Nh
dmVfYmFzZWxpbmVzKHNlbGYsIGRyaXZlcl9vdXRwdXQpOgotICAgICAgICAjIEFsdGhvdWdoIGFs
bCB0ZXN0X3NoZWxsL0R1bXBSZW5kZXJUcmVlIG91dHB1dCBzaG91bGQgYmUgdXRmLTgsCisgICAg
ICAgICMgQWx0aG91Z2ggYWxsIER1bXBSZW5kZXJUcmVlIG91dHB1dCBzaG91bGQgYmUgdXRmLTgs
CiAgICAgICAgICMgd2UgZG8gbm90IGV2ZXIgZGVjb2RlIGl0IGluc2lkZSBydW4td2Via2l0LXRl
c3RzLiAgRm9yIHNvbWUgdGVzdHMKICAgICAgICAgIyBEdW1wUmVuZGVyVHJlZSBtYXkgbm90IG91
dHB1dCB1dGYtOCB0ZXh0IChlLmcuIHdlYmFyY2hpdmVzKS4KICAgICAgICAgc2VsZi5fc2F2ZV9i
YXNlbGluZV9kYXRhKGRyaXZlcl9vdXRwdXQudGV4dCwgIi50eHQiLApkaWZmIC0tZ2l0IGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9mYWls
dXJlcy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNr
YWdlL3Rlc3RfZmFpbHVyZXMucHkKaW5kZXggNGVlNTcxMmE1NmM5NTVlZWQzMzE1OTRiMWJmOTQ3
NGQ4YzNmODJmMS4uZDJiYjc2MWIyMjVlYjFiM2M1ZTM1YTRiOTM0Mzk4Njc0NTE0NjQ1NSAxMDA2
NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2th
Z2UvdGVzdF9mYWlsdXJlcy5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2ZhaWx1cmVzLnB5CkBAIC0xMDQsMTQgKzEwNCwxMiBA
QCBjbGFzcyBUZXN0RmFpbHVyZShvYmplY3QpOgogICAgICAgICByZXR1cm4gY1BpY2tsZS5kdW1w
cyhzZWxmKQogCiAgICAgZGVmIHNob3VsZF9raWxsX2R1bXBfcmVuZGVyX3RyZWUoc2VsZik6Ci0g
ICAgICAgICIiIlJldHVybnMgVHJ1ZSBpZiB3ZSBzaG91bGQga2lsbCBEdW1wUmVuZGVyVHJlZSBi
ZWZvcmUgdGhlIG5leHQKLSAgICAgICAgdGVzdC4iIiIKKyAgICAgICAgIiIiUmV0dXJucyBUcnVl
IGlmIHdlIHNob3VsZCBraWxsIER1bXBSZW5kZXJUcmVlIGJlZm9yZSB0aGUgbmV4dCB0ZXN0LiIi
IgogICAgICAgICByZXR1cm4gRmFsc2UKIAogCiBjbGFzcyBGYWlsdXJlVGltZW91dChUZXN0RmFp
bHVyZSk6Ci0gICAgIiIiVGVzdCB0aW1lZCBvdXQuICBXZSBhbHNvIHdhbnQgdG8gcmVzdGFydCBE
dW1wUmVuZGVyVHJlZSBpZiB0aGlzCi0gICAgaGFwcGVucy4iIiIKKyAgICAiIiJUZXN0IHRpbWVk
IG91dC4gIFdlIGFsc28gd2FudCB0byByZXN0YXJ0IER1bXBSZW5kZXJUcmVlIGlmIHRoaXMgaGFw
cGVucy4iIiIKICAgICBkZWYgX19pbml0X18oc2VsZiwgaXNfcmVmdGVzdD1GYWxzZSk6CiAgICAg
ICAgIHNlbGYuaXNfcmVmdGVzdCA9IGlzX3JlZnRlc3QKIApAQCAtMTMwLDYgKzEyOCw3IEBAIGNs
YXNzIEZhaWx1cmVDcmFzaChUZXN0RmFpbHVyZSk6CiAKICAgICBAc3RhdGljbWV0aG9kCiAgICAg
ZGVmIG1lc3NhZ2UoKToKKyAgICAgICAgIyBGSVhNRTogVGhpcyBpcyB3cm9uZyBmb3IgV2ViS2l0
MiAod2hpY2ggdXNlcyBXZWJLaXRUZXN0UnVubmVyKS4KICAgICAgICAgcmV0dXJuICJEdW1wUmVu
ZGVyVHJlZSBjcmFzaGVkIgogCiAgICAgZGVmIHNob3VsZF9raWxsX2R1bXBfcmVuZGVyX3RyZWUo
c2VsZik6CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L2Jhc2UucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jh
c2UucHkKaW5kZXggODY2MjM5MmQzM2E3YmY1MTY4Njc1NDFjNmJiNmY5NjQ4NWQzOWM0ZS4uZTE3
OWVjZjBjMGE5NTYyYWM1YWQ5ZGNkMjg1MzQ1MmZmZDczYmE4ZCAxMDA3NTUKLS0tIGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5CisrKyBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQpAQCAtNTU5LDE0ICs1NTks
MTQgQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAgICAgICByZXR1cm4gQWdncmVnYXRlVGVzdE91
dHB1dFNldChbc2VsZi5fcmVzdWx0c19mb3JfcGxhdGZvcm0ocGxhdGZvcm0pIGZvciBwbGF0Zm9y
bSBpbiBwbGF0Zm9ybXNdKQogCiAgICAgZGVmIGdyYXBoaWNzX3R5cGUoc2VsZik6Ci0gICAgICAg
ICIiIlJldHVybnMgd2hldGhlciB0aGUgcG9ydCB1c2VzIGFjY2VsZXJhdGVkIGdyYXBoaWNzICgn
Z3B1Jykgb3Igbm90Ci0gICAgICAgICgnY3B1JykuIiIiCisgICAgICAgICIiIlJldHVybnMgd2hl
dGhlciB0aGUgcG9ydCB1c2VzIGFjY2VsZXJhdGVkIGdyYXBoaWNzICgnZ3B1Jykgb3Igbm90ICgn
Y3B1JykuIiIiCiAgICAgICAgIHJldHVybiBzZWxmLl9ncmFwaGljc190eXBlCiAKICAgICBkZWYg
YXJjaGl0ZWN0dXJlKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5fYXJjaGl0ZWN0dXJlCiAK
ICAgICBkZWYgcmVhbF9uYW1lKHNlbGYpOgorICAgICAgICAjIEZJWE1FOiBTZWVtcyB0aGlzIGlz
IG9ubHkgdXNlZCBmb3IgTW9ja0RSVCBhbmQgc2hvdWxkIGJlIHJlbW92ZWQuCiAgICAgICAgICIi
IlJldHVybnMgdGhlIGFjdHVhbCBuYW1lIG9mIHRoZSBwb3J0LCBub3QgdGhlIGRlbGVnYXRlJ3Mu
IiIiCiAgICAgICAgIHJldHVybiBzZWxmLm5hbWUoKQogCkBAIC01ODksMTIgKzU4OSw2IEBAIGNs
YXNzIFBvcnQob2JqZWN0KToKICAgICAgICAgV2ViS2l0IHNvdXJjZSB0cmVlIGFuZCB0aGUgbGlz
dCBvZiBwYXRoIGNvbXBvbmVudHMgaW4gfCpjb21wc3wuIiIiCiAgICAgICAgIHJldHVybiBzZWxm
Ll9jb25maWcucGF0aF9mcm9tX3dlYmtpdF9iYXNlKCpjb21wcykKIAotICAgIGRlZiBzY3JpcHRf
cGF0aChzZWxmLCBzY3JpcHRfbmFtZSk6Ci0gICAgICAgIHJldHVybiBzZWxmLl9jb25maWcuc2Ny
aXB0X3BhdGgoc2NyaXB0X25hbWUpCi0KLSAgICBkZWYgc2NyaXB0X3NoZWxsX2NvbW1hbmQoc2Vs
Ziwgc2NyaXB0X25hbWUpOgotICAgICAgICByZXR1cm4gc2VsZi5fY29uZmlnLnNjcmlwdF9zaGVs
bF9jb21tYW5kKHNjcmlwdF9uYW1lKQotCiAgICAgZGVmIHBhdGhfdG9fdGVzdF9leHBlY3RhdGlv
bnNfZmlsZShzZWxmKToKICAgICAgICAgIiIiVXBkYXRlIHRoZSB0ZXN0IGV4cGVjdGF0aW9ucyB0
byB0aGUgcGFzc2VkLWluIHN0cmluZy4KIApAQCAtNjQ1LDggKzYzOSw3IEBAIGNsYXNzIFBvcnQo
b2JqZWN0KToKICAgICAgICAgcmV0dXJuIHNlbGYuX3VzZXIub3Blbl91cmwocmVzdWx0c19maWxl
bmFtZSkKIAogICAgIGRlZiBjcmVhdGVfZHJpdmVyKHNlbGYsIHdvcmtlcl9udW1iZXIpOgotICAg
ICAgICAiIiJSZXR1cm4gYSBuZXdseSBjcmVhdGVkIGJhc2UuRHJpdmVyIHN1YmNsYXNzIGZvciBz
dGFydGluZy9zdG9wcGluZwotICAgICAgICB0aGUgdGVzdCBkcml2ZXIuIiIiCisgICAgICAgICIi
IlJldHVybiBhIG5ld2x5IGNyZWF0ZWQgYmFzZS5Ecml2ZXIgc3ViY2xhc3MgZm9yIHN0YXJ0aW5n
L3N0b3BwaW5nIHRoZSB0ZXN0IGRyaXZlci4iIiIKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50
ZWRFcnJvcignUG9ydC5jcmVhdGVfZHJpdmVyJykKIAogICAgIGRlZiBzdGFydF9oZWxwZXIoc2Vs
Zik6CkBAIC04ODAsOCArODczLDcgQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAgICAgICByYWlz
ZSBOb3RJbXBsZW1lbnRlZEVycm9yKCdQb3J0Ll9wYXRoX3RvX2hlbHBlcicpCiAKICAgICBkZWYg
X3BhdGhfdG9faW1hZ2VfZGlmZihzZWxmKToKLSAgICAgICAgIiIiUmV0dXJucyB0aGUgZnVsbCBw
YXRoIHRvIHRoZSBpbWFnZV9kaWZmIGJpbmFyeSwgb3IgTm9uZSBpZiBpdAotICAgICAgICBpcyBu
b3QgYXZhaWxhYmxlLgorICAgICAgICAiIiJSZXR1cm5zIHRoZSBmdWxsIHBhdGggdG8gdGhlIGlt
YWdlX2RpZmYgYmluYXJ5LCBvciBOb25lIGlmIGl0IGlzIG5vdCBhdmFpbGFibGUuCiAKICAgICAg
ICAgVGhpcyBpcyBsaWtlbHkgdXNlZCBvbmx5IGJ5IGRpZmZfaW1hZ2UoKSIiIgogICAgICAgICBy
YWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCdQb3J0LnBhdGhfdG9faW1hZ2VfZGlmZicpCkBAIC05
MDUsOCArODk3LDcgQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAgICAgICByYWlzZSBOb3RJbXBs
ZW1lbnRlZEVycm9yKCdQb3J0Ll9wYXRoX3RvX2xpZ2h0dHBkX3BocCcpCiAKICAgICBkZWYgX3Bh
dGhfdG9fd2RpZmYoc2VsZik6Ci0gICAgICAgICIiIlJldHVybnMgdGhlIGZ1bGwgcGF0aCB0byB0
aGUgd2RpZmYgYmluYXJ5LCBvciBOb25lIGlmIGl0IGlzCi0gICAgICAgIG5vdCBhdmFpbGFibGUu
CisgICAgICAgICIiIlJldHVybnMgdGhlIGZ1bGwgcGF0aCB0byB0aGUgd2RpZmYgYmluYXJ5LCBv
ciBOb25lIGlmIGl0IGlzIG5vdCBhdmFpbGFibGUuCiAKICAgICAgICAgVGhpcyBpcyBsaWtlbHkg
dXNlZCBvbmx5IGJ5IHdkaWZmX3RleHQoKSIiIgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRl
ZEVycm9yKCdQb3J0Ll9wYXRoX3RvX3dkaWZmJykKQEAgLTkxNCw4ICs5MDUsNyBAQCBjbGFzcyBQ
b3J0KG9iamVjdCk6CiAgICAgZGVmIF93ZWJraXRfYmFzZWxpbmVfcGF0aChzZWxmLCBwbGF0Zm9y
bSk6CiAgICAgICAgICIiIlJldHVybiB0aGUgIGZ1bGwgcGF0aCB0byB0aGUgdG9wIG9mIHRoZSBi
YXNlbGluZSB0cmVlIGZvciBhCiAgICAgICAgIGdpdmVuIHBsYXRmb3JtLiIiIgotICAgICAgICBy
ZXR1cm4gc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYubGF5b3V0X3Rlc3RzX2RpcigpLCAncGxh
dGZvcm0nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYXRmb3JtKQor
ICAgICAgICByZXR1cm4gc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYubGF5b3V0X3Rlc3RzX2Rp
cigpLCAncGxhdGZvcm0nLCBwbGF0Zm9ybSkKIAogCiBjbGFzcyBEcml2ZXJJbnB1dChvYmplY3Qp
OgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9j
aHJvbWl1bV9tYWMucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L2Nocm9taXVtX21hYy5weQppbmRleCAyNmU0MGU1NjQ2NTYzYzYyYzRhYjkxODRlNWM0ZWU4NGIw
MTAyODAyLi4zYjRmOWQxNGU0NWM4ZjMyMGI2ODFmZDkyZjExNGQzNjAzYWY0YmY2IDEwMDY0NAot
LS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX21h
Yy5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9t
aXVtX21hYy5weQpAQCAtMTQ3LDggKzE0Nyw3IEBAIGNsYXNzIENocm9taXVtTWFjUG9ydChjaHJv
bWl1bS5DaHJvbWl1bVBvcnQpOgogICAgICAgICByZXR1cm4gc2VsZi5fbGlnaHR0cGRfcGF0aCgn
YmluJywgJ3BocC1jZ2knKQogCiAgICAgZGVmIF9wYXRoX3RvX2RyaXZlcihzZWxmLCBjb25maWd1
cmF0aW9uPU5vbmUpOgotICAgICAgICAjIEZJWE1FOiBtYWtlIHxjb25maWd1cmF0aW9ufCBoYXBw
eSB3aXRoIGNhc2Utc2Vuc2l0aXZlIGZpbGUKLSAgICAgICAgIyBzeXN0ZW1zLgorICAgICAgICAj
IEZJWE1FOiBtYWtlIHxjb25maWd1cmF0aW9ufCBoYXBweSB3aXRoIGNhc2Utc2Vuc2l0aXZlIGZp
bGUgc3lzdGVtcy4KICAgICAgICAgaWYgbm90IGNvbmZpZ3VyYXRpb246CiAgICAgICAgICAgICBj
b25maWd1cmF0aW9uID0gc2VsZi5nZXRfb3B0aW9uKCdjb25maWd1cmF0aW9uJykKICAgICAgICAg
cmV0dXJuIHNlbGYuX2J1aWxkX3BhdGgoY29uZmlndXJhdGlvbiwgc2VsZi5kcml2ZXJfbmFtZSgp
ICsgJy5hcHAnLApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9jb25maWcucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L2NvbmZpZy5weQppbmRleCA2MDE2NjM5NmFhYjBhNmVhY2Y5YThkNDZkNTY0MTQzZTQyYTk3
ODg2Li42NTQ0MTcwZWNlNDdmZGI2OTQwNzQyMTg4YWFmYTcwZDIxNTMyMDQ3IDEwMDY0NAotLS0g
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2NvbmZpZy5weQorKysg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2NvbmZpZy5weQpAQCAt
NzEsMzEgKzcxLDIwIEBAIGNsYXNzIENvbmZpZyhvYmplY3QpOgogICAgIGRlZiBidWlsZF9kaXJl
Y3Rvcnkoc2VsZiwgY29uZmlndXJhdGlvbik6CiAgICAgICAgICIiIlJldHVybnMgdGhlIHBhdGgg
dG8gdGhlIGJ1aWxkIGRpcmVjdG9yeSBmb3IgdGhlIGNvbmZpZ3VyYXRpb24uIiIiCiAgICAgICAg
IGlmIGNvbmZpZ3VyYXRpb246Ci0gICAgICAgICAgICBmbGFncyA9IFsiLS1jb25maWd1cmF0aW9u
IiwKLSAgICAgICAgICAgICAgICAgICAgIHNlbGYuX0ZMQUdTX0ZST01fQ09ORklHVVJBVElPTlNb
Y29uZmlndXJhdGlvbl1dCisgICAgICAgICAgICBmbGFncyA9IFsiLS1jb25maWd1cmF0aW9uIiwg
c2VsZi5mbGFnX2Zvcl9jb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24pXQogICAgICAgICBlbHNl
OgogICAgICAgICAgICAgY29uZmlndXJhdGlvbiA9ICIiCiAgICAgICAgICAgICBmbGFncyA9IFsi
LS10b3AtbGV2ZWwiXQogCiAgICAgICAgIGlmIG5vdCBzZWxmLl9idWlsZF9kaXJlY3Rvcmllcy5n
ZXQoY29uZmlndXJhdGlvbik6Ci0gICAgICAgICAgICBhcmdzID0gWyJwZXJsIiwgc2VsZi5fc2Ny
aXB0X3BhdGgoIndlYmtpdC1idWlsZC1kaXJlY3RvcnkiKV0gKyBmbGFncworICAgICAgICAgICAg
YXJncyA9IFsicGVybCIsIHNlbGYuc2NyaXB0X3BhdGgoIndlYmtpdC1idWlsZC1kaXJlY3Rvcnki
KV0gKyBmbGFncwogICAgICAgICAgICAgc2VsZi5fYnVpbGRfZGlyZWN0b3JpZXNbY29uZmlndXJh
dGlvbl0gPSAoCi0gICAgICAgICAgICAgICAgc2VsZi5fZXhlY3V0aXZlLnJ1bl9jb21tYW5kKGFy
Z3MpLnJzdHJpcCgpKQorICAgICAgICAgICAgICAgIHNlbGYuX2V4ZWN1dGl2ZS5ydW5fY29tbWFu
ZChhcmdzLCBjd2Q9c2VsZi53ZWJraXRfYmFzZV9kaXIoKSkucnN0cmlwKCkpCiAKICAgICAgICAg
cmV0dXJuIHNlbGYuX2J1aWxkX2RpcmVjdG9yaWVzW2NvbmZpZ3VyYXRpb25dCiAKLSAgICBkZWYg
YnVpbGRfZHVtcHJlbmRlcnRyZWUoc2VsZiwgY29uZmlndXJhdGlvbik6Ci0gICAgICAgICIiIkJ1
aWxkcyBEUlQgaW4gdGhlIGdpdmVuIGNvbmZpZ3VyYXRpb24uCi0KLSAgICAgICAgUmV0dXJucyBU
cnVlIGlmIHRoZSAgYnVpbGQgd2FzIHN1Y2Nlc3NmdWwgYW5kIHVwLXRvLWRhdGUuIiIiCi0gICAg
ICAgIGZsYWcgPSBzZWxmLl9GTEFHU19GUk9NX0NPTkZJR1VSQVRJT05TW2NvbmZpZ3VyYXRpb25d
Ci0gICAgICAgIGV4aXRfY29kZSA9IHNlbGYuX2V4ZWN1dGl2ZS5ydW5fY29tbWFuZChbCi0gICAg
ICAgICAgICBzZWxmLl9zY3JpcHRfcGF0aCgiYnVpbGQtZHVtcHJlbmRlcnRyZWUiKSwgZmxhZ10s
Ci0gICAgICAgICAgICByZXR1cm5fZXhpdF9jb2RlPVRydWUpCi0gICAgICAgIGlmIGV4aXRfY29k
ZSAhPSAwOgotICAgICAgICAgICAgX2xvZy5lcnJvcigiRmFpbGVkIHRvIGJ1aWxkIER1bXBSZW5k
ZXJUcmVlIikKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICByZXR1cm4gVHJ1ZQor
ICAgIGRlZiBmbGFnX2Zvcl9jb25maWd1cmF0aW9uKHNlbGYsIGNvbmZpZ3VyYXRpb24pOgorICAg
ICAgICByZXR1cm4gc2VsZi5fRkxBR1NfRlJPTV9DT05GSUdVUkFUSU9OU1tjb25maWd1cmF0aW9u
XQogCiAgICAgZGVmIGRlZmF1bHRfY29uZmlndXJhdGlvbihzZWxmKToKICAgICAgICAgIiIiUmV0
dXJucyB0aGUgZGVmYXVsdCBjb25maWd1cmF0aW9uIGZvciB0aGUgdXNlci4KQEAgLTEwNywxNSAr
OTYsMTUgQEAgY2xhc3MgQ29uZmlnKG9iamVjdCk6CiAgICAgICAgIGlmIG5vdCBzZWxmLl9kZWZh
dWx0X2NvbmZpZ3VyYXRpb246CiAgICAgICAgICAgICBzZWxmLl9kZWZhdWx0X2NvbmZpZ3VyYXRp
b24gPSAnUmVsZWFzZScKICAgICAgICAgaWYgc2VsZi5fZGVmYXVsdF9jb25maWd1cmF0aW9uIG5v
dCBpbiBzZWxmLl9GTEFHU19GUk9NX0NPTkZJR1VSQVRJT05TOgotICAgICAgICAgICAgX2xvZy53
YXJuKCJDb25maWd1cmF0aW9uIFwiJXNcIiBpcyBub3QgYSByZWNvZ25pemVkIHZhbHVlLlxuIiAl
Ci0gICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZGVmYXVsdF9jb25maWd1cmF0aW9uKQotICAg
ICAgICAgICAgX2xvZy53YXJuKCJTY3JpcHRzIG1heSBmYWlsLiAgIgotICAgICAgICAgICAgICAg
ICAgICAgICJTZWUgJ3NldC13ZWJraXQtY29uZmlndXJhdGlvbiAtLWhlbHAnLiIpCisgICAgICAg
ICAgICBfbG9nLndhcm4oIkNvbmZpZ3VyYXRpb24gXCIlc1wiIGlzIG5vdCBhIHJlY29nbml6ZWQg
dmFsdWUuXG4iICUgc2VsZi5fZGVmYXVsdF9jb25maWd1cmF0aW9uKQorICAgICAgICAgICAgX2xv
Zy53YXJuKCJTY3JpcHRzIG1heSBmYWlsLiAgU2VlICdzZXQtd2Via2l0LWNvbmZpZ3VyYXRpb24g
LS1oZWxwJy4iKQogICAgICAgICByZXR1cm4gc2VsZi5fZGVmYXVsdF9jb25maWd1cmF0aW9uCiAK
ICAgICBkZWYgcGF0aF9mcm9tX3dlYmtpdF9iYXNlKHNlbGYsICpjb21wcyk6CiAgICAgICAgIHJl
dHVybiBzZWxmLl9maWxlc3lzdGVtLmpvaW4oc2VsZi53ZWJraXRfYmFzZV9kaXIoKSwgKmNvbXBz
KQogCisgICAgIyBGSVhNRTogV2Ugc2hvdWxkIG9ubHkgaGF2ZSBvbmUgaW1wbGVtZW50YXRpb24g
b2YgdGhpcyBsb2dpYywKKyAgICAjIGlmIHNjbS5maW5kX2NoZWNrb3V0X3Jvb3QoKSBpcyBicm9r
ZW4gZm9yIENocm9taXVtLCB3ZSBzaG91bGQgZml4IChvciBhdCBsZWFzdCB3cmFwKSBpdCEKICAg
ICBkZWYgd2Via2l0X2Jhc2VfZGlyKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm5zIHRoZSBhYnNv
bHV0ZSBwYXRoIHRvIHRoZSB0b3Agb2YgdGhlIFdlYktpdCB0cmVlLgogCkBAIC0xMzMsOSArMTIy
LDkgQEAgY2xhc3MgQ29uZmlnKG9iamVjdCk6CiAgICAgICAgICAgICBzZWxmLl93ZWJraXRfYmFz
ZV9kaXIgPSBhYnNwYXRoWzA6YWJzcGF0aC5maW5kKCdUb29scycpIC0gMV0KICAgICAgICAgcmV0
dXJuIHNlbGYuX3dlYmtpdF9iYXNlX2RpcgogCi0gICAgZGVmIF9zY3JpcHRfcGF0aChzZWxmLCBz
Y3JpcHRfbmFtZSk6Ci0gICAgICAgIHJldHVybiBzZWxmLl9maWxlc3lzdGVtLmpvaW4oc2VsZi53
ZWJraXRfYmFzZV9kaXIoKSwgIlRvb2xzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiU2NyaXB0cyIsIHNjcmlwdF9uYW1lKQorICAgIGRlZiBzY3JpcHRfcGF0aChzZWxm
LCBzY3JpcHRfbmFtZSk6CisgICAgICAgICMgVGhpcyBpcyBpbnRlbnRpb25hbGx5IHJlbGF0aXZl
LiBDYWxsZXJzIHNob3VsZCBwYXNzIHRoZSBjaGVja291dF9yb290L3dlYmtpdF9iYXNlX2RpciB0
byBydW5fY29tbWFuZCBhcyB0aGUgY3dkLgorICAgICAgICByZXR1cm4gc2VsZi5fZmlsZXN5c3Rl
bS5qb2luKCJUb29scyIsICJTY3JpcHRzIiwgc2NyaXB0X25hbWUpCiAKICAgICBkZWYgX2RldGVy
bWluZV9jb25maWd1cmF0aW9uKHNlbGYpOgogICAgICAgICAjIFRoaXMgbWlycm9ycyB0aGUgbG9n
aWMgaW4gd2Via2l0ZGlycy5wbTpkZXRlcm1pbmVDb25maWd1cmF0aW9uKCkuCmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2NvbmZpZ191bml0dGVz
dC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY29uZmlnX3Vu
aXR0ZXN0LnB5CmluZGV4IDhmMWUwZDQxNjZmYTUxMDFkYjVkZGJmNTBiODUwNzM1ZmU3ZjlmODMu
LjU5YTAxMGZkNWQ1OWM1OWRjMmYwZTYwZmExOGEzZjJjN2ViNWY4N2MgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY29uZmlnX3VuaXR0ZXN0LnB5
CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY29uZmlnX3Vu
aXR0ZXN0LnB5CkBAIC05MSwyOSArOTEsNiBAQCBjbGFzcyBDb25maWdUZXN0KHVuaXR0ZXN0LlRl
c3RDYXNlKToKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMuYnVpbGRfZGlyZWN0b3J5KCdEZWJ1
ZycpLmVuZHN3aXRoKCcvRGVidWcnKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJy
b3IsIGMuYnVpbGRfZGlyZWN0b3J5LCAnVW5rbm93bicpCiAKLSAgICBkZWYgdGVzdF9idWlsZF9k
dW1wcmVuZGVydHJlZV9fc3VjY2VzcyhzZWxmKToKLSAgICAgICAgYyA9IHNlbGYubWFrZV9jb25m
aWcoZXhpdF9jb2RlPTApCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjLmJ1aWxkX2R1bXByZW5k
ZXJ0cmVlKCJEZWJ1ZyIpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5idWlsZF9kdW1wcmVu
ZGVydHJlZSgiUmVsZWFzZSIpKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwg
Yy5idWlsZF9kdW1wcmVuZGVydHJlZSwgIlVua25vd24iKQotCi0gICAgZGVmIHRlc3RfYnVpbGRf
ZHVtcHJlbmRlcnRyZWVfX2ZhaWx1cmUoc2VsZik6Ci0gICAgICAgIGMgPSBzZWxmLm1ha2VfY29u
ZmlnKGV4aXRfY29kZT0tMSkKLQotICAgICAgICAjIEZJWE1FOiBCdWlsZCBmYWlsdXJlcyBzaG91
bGQgbG9nIGVycm9ycy4gSG93ZXZlciwgdGhlIG1lc3NhZ2Ugd2UKLSAgICAgICAgIyBnZXQgZGVw
ZW5kcyBvbiBob3cgd2UncmUgYmVpbmcgY2FsbGVkOyBhcyBhIHN0YW5kYWxvbmUgdGVzdCwKLSAg
ICAgICAgIyB3ZSdsbCBnZXQgdGhlICJubyBoYW5kbGVycyBmb3VuZCIgbWVzc2FnZS4gQXMgcGFy
dCBvZgotICAgICAgICAjIHRlc3Qtd2Via2l0cHksIHdlIGdldCB0aGUgYWN0dWFsIG1lc3NhZ2Uu
IFJlYWxseSwgd2UgbmVlZAotICAgICAgICAjIG91dHB1dGNhcHR1cmUgdG8gaW5zdGFsbCBpdHMg
b3duIGhhbmRsZXIuCi0gICAgICAgIG9jID0gb3V0cHV0Y2FwdHVyZS5PdXRwdXRDYXB0dXJlKCkK
LSAgICAgICAgb2MuY2FwdHVyZV9vdXRwdXQoKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGMu
YnVpbGRfZHVtcHJlbmRlcnRyZWUoJ0RlYnVnJykpCi0gICAgICAgIG9jLnJlc3RvcmVfb3V0cHV0
KCkKLQotICAgICAgICBvYy5jYXB0dXJlX291dHB1dCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFs
c2UoYy5idWlsZF9kdW1wcmVuZGVydHJlZSgnUmVsZWFzZScpKQotICAgICAgICBvYy5yZXN0b3Jl
X291dHB1dCgpCi0KICAgICBkZWYgdGVzdF9kZWZhdWx0X2NvbmZpZ3VyYXRpb25fX3JlbGVhc2Uo
c2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0X2NvbmZpZ3VyYXRpb24oJ1JlbGVhc2UnLCAnUmVs
ZWFzZScpCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvZ3RrLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9n
dGsucHkKaW5kZXggMjU2YTVlZjAzOWRmOGQzZWQ0NjcyMDJjMTk4ZDY2NWM2NmEzZjY0Ny4uOTk1
NWZkNmIwZWUwODk2Zjg4NGExMGRiNzhhMDhjYjkyZjY5YjFjZSAxMDA2NDQKLS0tIGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9ndGsucHkKKysrIGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9ndGsucHkKQEAgLTQ4LDcgKzQ4LDcgQEAg
Y2xhc3MgR3RrUG9ydChXZWJLaXRQb3J0KToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnYXBhY2hlMi1kZWJpYW4taHR0cGQuY29uZicpCiAKICAgICBkZWYgX3BhdGhfdG9f
ZHJpdmVyKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5fYnVpbGRfcGF0aCgnUHJvZ3JhbXMn
LCAnRHVtcFJlbmRlclRyZWUnKQorICAgICAgICByZXR1cm4gc2VsZi5fYnVpbGRfcGF0aCgnUHJv
Z3JhbXMnLCBzZWxmLmRyaXZlcl9uYW1lKCkpCiAKICAgICBkZWYgY2hlY2tfYnVpbGQoc2VsZiwg
bmVlZHNfaHR0cCk6CiAgICAgICAgIGlmIG5vdCBzZWxmLl9jaGVja19kcml2ZXIoKToKZGlmZiAt
LWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbWFjLnB5IGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tYWMucHkKaW5kZXggNmMx
Yzk2OWI0MzM0NzU1MTUyN2E3NzlkNmE1ZTQyYmFlNjM3ZGUxMy4uYzEyZDczOTE3YzhlMzA2OWQ1
NTE3ZGNhNTRmZTBjZTdkOTAyYzExZSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9tYWMucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9tYWMucHkKQEAgLTEwMywxMSArMTAzLDEwIEBAIGNsYXNzIE1hY1Bv
cnQoV2ViS2l0UG9ydCk6CiAgICAgICAgICMgRklYTUU6IFRoaXMgbWV0aG9kIHdpbGwgbmVlZCB0
byBiZSBtYWRlIHdvcmsgZm9yIG5vbi1tYWMKICAgICAgICAgIyBwbGF0Zm9ybXMgYW5kIG1vdmVk
IGludG8gYmFzZS5Qb3J0LgogICAgICAgICBza2lwcGVkX2ZpbGVzID0gW10KLSAgICAgICAgaWYg
c2VsZi5fbmFtZSBpbiAoJ21hYy1sZW9wYXJkJywgJ21hYy1zbm93bGVvcGFyZCcpOgorICAgICAg
ICBpZiBzZWxmLm5hbWUoKSBpbiAoJ21hYy1sZW9wYXJkJywgJ21hYy1zbm93bGVvcGFyZCcpOgog
ICAgICAgICAgICAgc2tpcHBlZF9maWxlcy5hcHBlbmQoc2VsZi5fZmlsZXN5c3RlbS5qb2luKAot
ICAgICAgICAgICAgICAgIHNlbGYuX3dlYmtpdF9iYXNlbGluZV9wYXRoKHNlbGYuX25hbWUpLCAn
U2tpcHBlZCcpKQotICAgICAgICBza2lwcGVkX2ZpbGVzLmFwcGVuZChzZWxmLl9maWxlc3lzdGVt
LmpvaW4oc2VsZi5fd2Via2l0X2Jhc2VsaW5lX3BhdGgoJ21hYycpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1NraXBwZWQnKSkKKyAgICAgICAgICAgICAgICBz
ZWxmLl93ZWJraXRfYmFzZWxpbmVfcGF0aChzZWxmLm5hbWUoKSksICdTa2lwcGVkJykpCisgICAg
ICAgIHNraXBwZWRfZmlsZXMuYXBwZW5kKHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxmLl93ZWJr
aXRfYmFzZWxpbmVfcGF0aCgnbWFjJyksICdTa2lwcGVkJykpCiAgICAgICAgIHJldHVybiBza2lw
cGVkX2ZpbGVzCiAKICAgICBkZWYgX2J1aWxkX2phdmFfdGVzdF9zdXBwb3J0KHNlbGYpOgpAQCAt
MTIyLDggKzEyMSw3IEBAIGNsYXNzIE1hY1BvcnQoV2ViS2l0UG9ydCk6CiAgICAgICAgIHJldHVy
biBzZWxmLl9idWlsZF9qYXZhX3Rlc3Rfc3VwcG9ydCgpCiAKICAgICBkZWYgX3BhdGhfdG9fYXBh
Y2hlX2NvbmZpZ19maWxlKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5fZmlsZXN5c3RlbS5q
b2luKHNlbGYubGF5b3V0X3Rlc3RzX2RpcigpLCAnaHR0cCcsICdjb25mJywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnYXBhY2hlMi1odHRwZC5jb25mJykKKyAgICAgICAg
cmV0dXJuIHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxmLmxheW91dF90ZXN0c19kaXIoKSwgJ2h0
dHAnLCAnY29uZicsJ2FwYWNoZTItaHR0cGQuY29uZicpCiAKICAgICBkZWYgX3BhdGhfdG9fd2Vi
Y29yZV9saWJyYXJ5KHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5fYnVpbGRfcGF0aCgnV2Vi
Q29yZS5mcmFtZXdvcmsvVmVyc2lvbnMvQS9XZWJDb3JlJykKZGlmZiAtLWdpdCBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvcXQucHkgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3F0LnB5CmluZGV4IDZmZDVkYmI5ZDM2MzgyOGQ3ZDE1
MDhlNGNjYmM4NjVmZTRiZGM1NzMuLjYwYjBjMzI5Mjc3NjUyOGYwN2YwZDYzNDE5Y2I0MjY5ZmU1
YzQ0YTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvcXQucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9x
dC5weQpAQCAtNjYsNyArNjYsNyBAQCBjbGFzcyBRdFBvcnQoV2ViS2l0UG9ydCk6CiAgICAgICAg
IHJldHVybiBUcnVlCiAKICAgICBkZWYgX3BhdGhfdG9fZHJpdmVyKHNlbGYpOgotICAgICAgICBy
ZXR1cm4gc2VsZi5fYnVpbGRfcGF0aCgnYmluL0R1bXBSZW5kZXJUcmVlJykKKyAgICAgICAgcmV0
dXJuIHNlbGYuX2J1aWxkX3BhdGgoJ2Jpbi8lcycgJSBzZWxmLmRyaXZlcl9uYW1lKCkpCiAKICAg
ICBkZWYgX3BhdGhfdG9faW1hZ2VfZGlmZihzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuX2J1
aWxkX3BhdGgoJ2Jpbi9JbWFnZURpZmYnKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXQucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weQppbmRleCBmMTE5YTUwOTRlY2E4OWMzNzQ5MWUw
ZjRhOTI2NTA5YzUwYmM1ODhhLi42YzhlZjNkNDgyODVlNGFmNDNjMzVkMDc5OTEzYzFlYzA0OGVm
OGJhIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L3dlYmtpdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L3dlYmtpdC5weQpAQCAtNDEsOCArNDEsMTAgQEAgaW1wb3J0IHN5cwogaW1wb3J0IHRpbWUKIGlt
cG9ydCB3ZWJicm93c2VyCiAKKwogZnJvbSB3ZWJraXRweS5jb21tb24ubmV0LmJ1aWxkYm90IGlt
cG9ydCBCdWlsZEJvdAogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtIGltcG9ydCBvc3BhdGgK
K2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IFNjcmlwdEVycm9y
CiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0IGltcG9ydCBiYXNlLCBidWlsZGVycywg
c2VydmVyX3Byb2Nlc3MKIAogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJ3ZWJraXRweS5sYXlv
dXRfdGVzdHMucG9ydC53ZWJraXQiKQpAQCAtNTgsMTIgKzYwLDE2IEBAIGNsYXNzIFdlYktpdFBv
cnQoYmFzZS5Qb3J0KToKICAgICAgICAgIyBGSVhNRTogZGlzYWJsZSBwaXhlbCB0ZXN0cyB1bnRp
bCB0aGV5IGFyZSBydW4gYnkgZGVmYXVsdCBvbiB0aGUgYnVpbGQgbWFjaGluZXMuCiAgICAgICAg
IHNlbGYuc2V0X29wdGlvbl9kZWZhdWx0KCJwaXhlbF90ZXN0cyIsIEZhbHNlKQogCisgICAgZGVm
IGRyaXZlcl9uYW1lKHNlbGYpOgorICAgICAgICBpZiBzZWxmLmdldF9vcHRpb24oJ3dlYmtpdF90
ZXN0X3J1bm5lcicpOgorICAgICAgICAgICAgcmV0dXJuICJXZWJLaXRUZXN0UnVubmVyIgorICAg
ICAgICByZXR1cm4gIkR1bXBSZW5kZXJUcmVlIgorCiAgICAgZGVmIGJhc2VsaW5lX3NlYXJjaF9w
YXRoKHNlbGYpOgotICAgICAgICByZXR1cm4gW3NlbGYuX3dlYmtpdF9iYXNlbGluZV9wYXRoKHNl
bGYuX25hbWUpXQorICAgICAgICByZXR1cm4gW3NlbGYuX3dlYmtpdF9iYXNlbGluZV9wYXRoKHNl
bGYubmFtZSgpKV0KIAogICAgIGRlZiBwYXRoX3RvX3Rlc3RfZXhwZWN0YXRpb25zX2ZpbGUoc2Vs
Zik6Ci0gICAgICAgIHJldHVybiBzZWxmLl9maWxlc3lzdGVtLmpvaW4oc2VsZi5fd2Via2l0X2Jh
c2VsaW5lX3BhdGgoc2VsZi5fbmFtZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ3Rlc3RfZXhwZWN0YXRpb25zLnR4dCcpCisgICAgICAgIHJldHVybiBzZWxmLl9maWxl
c3lzdGVtLmpvaW4oc2VsZi5fd2Via2l0X2Jhc2VsaW5lX3BhdGgoc2VsZi5uYW1lKCkpLCAndGVz
dF9leHBlY3RhdGlvbnMudHh0JykKIAogICAgIGRlZiBfcmVzdWx0c19mb3JfcGxhdGZvcm0oc2Vs
ZiwgcGxhdGZvcm0pOgogICAgICAgICBidWlsZGVyX25hbWUgPSBidWlsZGVycy5idWlsZGVyX25h
bWVfZm9yX3BsYXRmb3JtKHBsYXRmb3JtKQpAQCAtNzUsMTQgKzgxLDI5IEBAIGNsYXNzIFdlYktp
dFBvcnQoYmFzZS5Qb3J0KToKICAgICAgICAgcmVzdWx0X3NldC5zZXRfcGxhdGZvcm0ocGxhdGZv
cm0pCiAgICAgICAgIHJldHVybiByZXN1bHRfc2V0CiAKKyAgICBkZWYgX2RyaXZlcl9idWlsZF9z
Y3JpcHRfbmFtZShzZWxmKToKKyAgICAgICAgaWYgc2VsZi5nZXRfb3B0aW9uKCd3ZWJraXRfdGVz
dF9ydW5uZXInKToKKyAgICAgICAgICAgIHJldHVybiAiYnVpbGQtd2Via2l0dGVzdHJ1bm5lciIK
KyAgICAgICAgcmV0dXJuICJidWlsZC1kdW1wcmVuZGVydHJlZSIKKwogICAgIGRlZiBfYnVpbGRf
ZHJpdmVyKHNlbGYpOgogICAgICAgICBjb25maWd1cmF0aW9uID0gc2VsZi5nZXRfb3B0aW9uKCdj
b25maWd1cmF0aW9uJykKLSAgICAgICAgcmV0dXJuIHNlbGYuX2NvbmZpZy5idWlsZF9kdW1wcmVu
ZGVydHJlZShjb25maWd1cmF0aW9uKQorICAgICAgICB0cnk6CisgICAgICAgICAgICAjIEZJWE1F
OiBXZSBzaG91bGQgcHJvYmFibHkgaGF2ZSBhIHJ1bl9zY3JpcHQgaGVscGVyIHdoaWNoIGF1dG9t
YXRpY2FsbHkgYWRkcyB0aGUgY29uZmlndXJhdGlvbiBmbGFncy4KKyAgICAgICAgICAgIHNlbGYu
X2V4ZWN1dGl2ZS5ydW5fY29tbWFuZChbCisgICAgICAgICAgICAgICAgc2VsZi5fY29uZmlnLnNj
cmlwdF9wYXRoKHNlbGYuX2RyaXZlcl9idWlsZF9zY3JpcHRfbmFtZSgpKSwKKyAgICAgICAgICAg
ICAgICBzZWxmLl9jb25maWcuZmxhZ19mb3JfY29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uKV0s
CisgICAgICAgICAgICAgICAgIyBGSVhNRTogSXQncyB1bmNsZWFyIGlmIHRoaXMgY3dkPSBpcyBu
ZWNlc3NhcnkuIEFnYWluIGEgaGVscGVyIHNob3VsZCBkbyB0aGlzIGZvciB1cy4KKyAgICAgICAg
ICAgICAgICBjd2Q9c2VsZi5fY29uZmlnLndlYmtpdF9iYXNlX2RpcigpKQorICAgICAgICBleGNl
cHQgU2NyaXB0RXJyb3I6CisgICAgICAgICAgICBfbG9nLmVycm9yKCJGYWlsZWQgdG8gYnVpbGQg
JXMiICUgc2VsZi5kcml2ZXJfbmFtZSgpKQorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAg
ICAgIHJldHVybiBUcnVlCiAKICAgICBkZWYgX2NoZWNrX2RyaXZlcihzZWxmKToKICAgICAgICAg
ZHJpdmVyX3BhdGggPSBzZWxmLl9wYXRoX3RvX2RyaXZlcigpCiAgICAgICAgIGlmIG5vdCBzZWxm
Ll9maWxlc3lzdGVtLmV4aXN0cyhkcml2ZXJfcGF0aCk6Ci0gICAgICAgICAgICBfbG9nLmVycm9y
KCJEdW1wUmVuZGVyVHJlZSB3YXMgbm90IGZvdW5kIGF0ICVzIiAlIGRyaXZlcl9wYXRoKQorICAg
ICAgICAgICAgX2xvZy5lcnJvcigiJXMgd2FzIG5vdCBmb3VuZCBhdCAlcyIgJSAoc2VsZi5kcml2
ZXJfbmFtZSgpLCBkcml2ZXJfcGF0aCkpCiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAg
ICAgcmV0dXJuIFRydWUKIApAQCAtMTc3LDEwICsxOTgsNiBAQCBjbGFzcyBXZWJLaXRQb3J0KGJh
c2UuUG9ydCk6CiAgICAgICAgICMgdG8gaGF2ZSBtdWx0aXBsZSBjb3BpZXMgb2Ygd2Via2l0IGNo
ZWNrZWQgb3V0IGFuZCBidWlsdC4KICAgICAgICAgcmV0dXJuIHNlbGYuX2J1aWxkX3BhdGgoJ2xh
eW91dC10ZXN0LXJlc3VsdHMnKQogCi0gICAgZGVmIHNldHVwX3Rlc3RfcnVuKHNlbGYpOgotICAg
ICAgICAjIFRoaXMgcG9ydCBkb2Vzbid0IHJlcXVpcmUgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRp
b24uCi0gICAgICAgIHBhc3MKLQogICAgIGRlZiBjcmVhdGVfZHJpdmVyKHNlbGYsIHdvcmtlcl9u
dW1iZXIpOgogICAgICAgICByZXR1cm4gV2ViS2l0RHJpdmVyKHNlbGYsIHdvcmtlcl9udW1iZXIp
CiAKQEAgLTMxMCw3ICszMjcsNyBAQCBjbGFzcyBXZWJLaXRQb3J0KGJhc2UuUG9ydCk6CiAgICAg
ICAgICAgICBzZWxmLmdldF9vcHRpb24oJ2NvbmZpZ3VyYXRpb24nKSksICpjb21wcykKIAogICAg
IGRlZiBfcGF0aF90b19kcml2ZXIoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLl9idWlsZF9w
YXRoKCdEdW1wUmVuZGVyVHJlZScpCisgICAgICAgIHJldHVybiBzZWxmLl9idWlsZF9wYXRoKHNl
bGYuZHJpdmVyX25hbWUoKSkKIAogICAgIGRlZiBfcGF0aF90b193ZWJjb3JlX2xpYnJhcnkoc2Vs
Zik6CiAgICAgICAgIHJldHVybiBOb25lCkBAIC0zNDEsMTIgKzM1OCwxMiBAQCBjbGFzcyBXZWJL
aXRQb3J0KGJhc2UuUG9ydCk6CiAKIAogY2xhc3MgV2ViS2l0RHJpdmVyKGJhc2UuRHJpdmVyKToK
LSAgICAiIiJXZWJLaXQgaW1wbGVtZW50YXRpb24gb2YgdGhlIER1bXBSZW5kZXJUcmVlIGludGVy
ZmFjZS4iIiIKKyAgICAiIiJJbXBsZW1lbnRhdGlvbiBvZiB0aGUgRHVtcFJlbmRlclRyZWUvV2Vi
S2l0VGVzdFJ1bm5lciBpbnRlcmZhY2UuIiIiCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgcG9y
dCwgd29ya2VyX251bWJlcik6CiAgICAgICAgIHNlbGYuX3dvcmtlcl9udW1iZXIgPSB3b3JrZXJf
bnVtYmVyCiAgICAgICAgIHNlbGYuX3BvcnQgPSBwb3J0Ci0gICAgICAgIHNlbGYuX2RyaXZlcl90
ZW1wZGlyID0gcG9ydC5fZmlsZXN5c3RlbS5ta2R0ZW1wKHByZWZpeD0nRHVtcFJlbmRlclRyZWUt
JykKKyAgICAgICAgc2VsZi5fZHJpdmVyX3RlbXBkaXIgPSBwb3J0Ll9maWxlc3lzdGVtLm1rZHRl
bXAocHJlZml4PSclcy0nICUgc2VsZi5fcG9ydC5kcml2ZXJfbmFtZSgpKQogCiAgICAgZGVmIF9f
ZGVsX18oc2VsZik6CiAgICAgICAgIHNlbGYuX3BvcnQuX2ZpbGVzeXN0ZW0ucm10cmVlKHN0cihz
ZWxmLl9kcml2ZXJfdGVtcGRpcikpCkBAIC0zNzAsOSArMzg3LDEwIEBAIGNsYXNzIFdlYktpdERy
aXZlcihiYXNlLkRyaXZlcik6CiAgICAgZGVmIHN0YXJ0KHNlbGYpOgogICAgICAgICBlbnZpcm9u
bWVudCA9IHNlbGYuX3BvcnQuc2V0dXBfZW52aXJvbl9mb3Jfc2VydmVyKCkKICAgICAgICAgZW52
aXJvbm1lbnRbJ0RZTERfRlJBTUVXT1JLX1BBVEgnXSA9IHNlbGYuX3BvcnQuX2J1aWxkX3BhdGgo
KQorICAgICAgICAjIEZJWE1FOiBXRSdyZSBhc3N1bWluZyB0aGF0IFdlYktpdFRlc3RSdW5uZXIg
YWxzbyBjaGVja3MgdGhpcyBEVU1QUkVOREVSVFJFRS1uYW1lZCBlbnZyaW9ubWVudCB2YXJpYWJs
ZS4KICAgICAgICAgZW52aXJvbm1lbnRbJ0RVTVBSRU5ERVJUUkVFX1RFTVAnXSA9IHN0cihzZWxm
Ll9kcml2ZXJfdGVtcGRpcikKICAgICAgICAgc2VsZi5fc2VydmVyX3Byb2Nlc3MgPSBzZXJ2ZXJf
cHJvY2Vzcy5TZXJ2ZXJQcm9jZXNzKHNlbGYuX3BvcnQsCi0gICAgICAgICAgICAiRHVtcFJlbmRl
clRyZWUiLCBzZWxmLmNtZF9saW5lKCksIGVudmlyb25tZW50KQorICAgICAgICAgICAgc2VsZi5f
cG9ydC5kcml2ZXJfbmFtZSgpLCBzZWxmLmNtZF9saW5lKCksIGVudmlyb25tZW50KQogCiAgICAg
ZGVmIHBvbGwoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5wb2xs
KCkKQEAgLTQyNyw4ICs0NDUsOCBAQCBjbGFzcyBXZWJLaXREcml2ZXIoYmFzZS5Ecml2ZXIpOgog
ICAgICAgICBpZiBlcnJvcl9saW5lcyBhbmQgZXJyb3JfbGluZXNbLTFdID09ICIjRU9GIjoKICAg
ICAgICAgICAgIGVycm9yX2xpbmVzLnBvcCgpICAjIFJlbW92ZSB0aGUgZXhwZWN0ZWQgIiNFT0Yi
CiAgICAgICAgIGVycm9yID0gIlxuIi5qb2luKGVycm9yX2xpbmVzKQotICAgICAgICAjIEZJWE1F
OiBUaGlzIHNlZW1zIGxpa2UgdGhlIHdyb25nIHNlY3Rpb24gb2YgY29kZSB0byBiZSBkb2luZwot
ICAgICAgICAjIHRoaXMgcmVzZXQgaW4uCisKKyAgICAgICAgIyBGSVhNRTogVGhpcyBzZWVtcyBs
aWtlIHRoZSB3cm9uZyBzZWN0aW9uIG9mIGNvZGUgdG8gYmUgZG9pbmcgdGhpcyByZXNldCBpbi4K
ICAgICAgICAgc2VsZi5fc2VydmVyX3Byb2Nlc3MuZXJyb3IgPSAiIgogICAgICAgICByZXR1cm4g
YmFzZS5Ecml2ZXJPdXRwdXQodGV4dCwgaW1hZ2UsIGFjdHVhbF9pbWFnZV9oYXNoLCBhdWRpbywK
ICAgICAgICAgICAgIGNyYXNoPXNlbGYuX3NlcnZlcl9wcm9jZXNzLmNyYXNoZWQsIHRlc3RfdGlt
ZT10aW1lLnRpbWUoKSAtIHN0YXJ0X3RpbWUsCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdF91bml0dGVzdC5weSBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0X3VuaXR0ZXN0LnB5CmluZGV4IDBh
ZjMzODFmMTExNWM2NzJiYWU1ZWIzYWUzMTRmNTczNGQxZGI5NjMuLjZhOGQ3ZTExMGQ2MDQ4NzMz
ODA3ODk2MzFjN2Y1NWYwNDhlNTc4NjUgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0X3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0X3VuaXR0ZXN0LnB5CkBAIC0yOCwx
OSArMjgsMjUgQEAKIGltcG9ydCB1bml0dGVzdAogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0
ZW0gaW1wb3J0IGZpbGVzeXN0ZW1fbW9jaworZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLm91
dHB1dGNhcHR1cmUgaW1wb3J0IE91dHB1dENhcHR1cmUKIAogZnJvbSB3ZWJraXRweS5sYXlvdXRf
dGVzdHMucG9ydC53ZWJraXQgaW1wb3J0IFdlYktpdFBvcnQKIGZyb20gd2Via2l0cHkubGF5b3V0
X3Rlc3RzLnBvcnQgaW1wb3J0IHBvcnRfdGVzdGNhc2UKIAorZnJvbSB3ZWJraXRweS50b29sLm1v
Y2t0b29sIGltcG9ydCBNb2NrRXhlY3V0aXZlCitmcm9tIHdlYmtpdHB5LnRvb2wubW9ja3Rvb2wg
aW1wb3J0IE1vY2tPcHRpb25zCisKIAogY2xhc3MgVGVzdFdlYktpdFBvcnQoV2ViS2l0UG9ydCk6
CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHN5bWJvbF9saXN0PU5vbmUsIGZlYXR1cmVfbGlzdD1O
b25lLAotICAgICAgICAgICAgICAgICBleHBlY3RhdGlvbnNfZmlsZT1Ob25lLCBza2lwc19maWxl
PU5vbmUsICoqa3dhcmdzKToKKyAgICAgICAgICAgICAgICAgZXhwZWN0YXRpb25zX2ZpbGU9Tm9u
ZSwgc2tpcHNfZmlsZT1Ob25lLAorICAgICAgICAgICAgICAgICBleGVjdXRpdmU9Tm9uZSwgKipr
d2FyZ3MpOgogICAgICAgICBzZWxmLnN5bWJvbF9saXN0ID0gc3ltYm9sX2xpc3QKICAgICAgICAg
c2VsZi5mZWF0dXJlX2xpc3QgPSBmZWF0dXJlX2xpc3QKICAgICAgICAgc2VsZi5leHBlY3RhdGlv
bnNfZmlsZSA9IGV4cGVjdGF0aW9uc19maWxlCiAgICAgICAgIHNlbGYuc2tpcHNfZmlsZSA9IHNr
aXBzX2ZpbGUKLSAgICAgICAgV2ViS2l0UG9ydC5fX2luaXRfXyhzZWxmLCAqKmt3YXJncykKKyAg
ICAgICAgZXhlY3V0aXZlID0gZXhlY3V0aXZlIG9yIE1vY2tFeGVjdXRpdmUoc2hvdWxkX2xvZz1G
YWxzZSkKKyAgICAgICAgV2ViS2l0UG9ydC5fX2luaXRfXyhzZWxmLCBleGVjdXRpdmU9ZXhlY3V0
aXZlLCAqKmt3YXJncykKIAogICAgIGRlZiBfcnVudGltZV9mZWF0dXJlX2xpc3Qoc2VsZik6CiAg
ICAgICAgIHJldHVybiBzZWxmLmZlYXR1cmVfbGlzdApAQCAtOTEsOCArOTcsNyBAQCBjbGFzcyBX
ZWJLaXRQb3J0VGVzdChwb3J0X3Rlc3RjYXNlLlBvcnRUZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwocmVzdWx0X2RpcmVjdG9yaWVzLCBleHBlY3RlZF9kaXJlY3RvcmllcykKIAog
ICAgIGRlZiB0ZXN0X3NraXBwZWRfbGF5b3V0X3Rlc3RzKHNlbGYpOgotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKFRlc3RXZWJLaXRQb3J0KE5vbmUsIE5vbmUpLnNraXBwZWRfbGF5b3V0X3Rlc3Rz
KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgc2V0KFsibWVkaWEiXSkpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoVGVzdFdlYktpdFBvcnQoTm9uZSwgTm9uZSkuc2tpcHBlZF9sYXlvdXRf
dGVzdHMoKSwgc2V0KFsibWVkaWEiXSkpCiAKICAgICBkZWYgdGVzdF90ZXN0X2V4cGVjdGF0aW9u
cyhzZWxmKToKICAgICAgICAgIyBDaGVjayB0aGF0IHdlIHJlYWQgYm90aCB0aGUgZXhwZWN0YXRp
b25zIGZpbGUgYW5kIGFueXRoaW5nIGluIGEKQEAgLTEwOSw2ICsxMTQsMjEgQEAgY2xhc3MgV2Vi
S2l0UG9ydFRlc3QocG9ydF90ZXN0Y2FzZS5Qb3J0VGVzdENhc2UpOgogQlVHX1NLSVBQRUQgU0tJ
UCA6IGZhc3QvaHRtbC9rZXlnZW4uaHRtbCA9IEZBSUwKIEJVR19TS0lQUEVEIFNLSVAgOiBtZWRp
YSA9IEZBSUwiIiIpCiAKLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB1bml0dGVz
dC5tYWluKCkKKyAgICBkZWYgdGVzdF9idWlsZF9kcml2ZXIoc2VsZik6CisgICAgICAgIG91dHB1
dCA9IE91dHB1dENhcHR1cmUoKQorICAgICAgICBwb3J0ID0gVGVzdFdlYktpdFBvcnQoKQorICAg
ICAgICAjIERlbGF5IHNldHRpbmcgX2V4ZWN1dGl2ZSB0byBhdm9pZCBsb2dnaW5nIGR1cmluZyBj
b25zdHJ1Y3Rpb24KKyAgICAgICAgcG9ydC5fZXhlY3V0aXZlID0gTW9ja0V4ZWN1dGl2ZShzaG91
bGRfbG9nPVRydWUpCisgICAgICAgIHBvcnQuX29wdGlvbnMgPSBNb2NrT3B0aW9ucyhjb25maWd1
cmF0aW9uPSJSZWxlYXNlIikgICMgVGhpcyBzaG91bGQgbm90IGJlIG5lY2Vzc2FyeSwgYnV0IEkg
dGhpbmsgVGVzdFdlYktpdFBvcnQgaXMgYWN0dWFsbHkgcmVhZGluZyBmcm9tIGRpc2sgKGFuZCB0
aHVzIGRldGVjdHMgdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbikuCisgICAgICAgIGV4cGVjdGVk
X3N0ZGVyciA9ICJNT0NLIHJ1bl9jb21tYW5kOiBbJ1Rvb2xzL1NjcmlwdHMvYnVpbGQtZHVtcHJl
bmRlcnRyZWUnLCAnLS1yZWxlYXNlJ11cbiIKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG91dHB1
dC5hc3NlcnRfb3V0cHV0cyhzZWxmLCBwb3J0Ll9idWlsZF9kcml2ZXIsIGV4cGVjdGVkX3N0ZGVy
cj1leHBlY3RlZF9zdGRlcnIpKQorCisgICAgICAgICMgTWFrZSBzdXJlIHdoZW4gcGFzc2VkIC0t
d2Via2l0LXRlc3QtcnVubmVyIHdlYiBidWlsZCB0aGUgcmlnaHQgdG9vbC4KKyAgICAgICAgcG9y
dC5fb3B0aW9ucyA9IE1vY2tPcHRpb25zKHdlYmtpdF90ZXN0X3J1bm5lcj1UcnVlLCBjb25maWd1
cmF0aW9uPSJSZWxlYXNlIikKKyAgICAgICAgZXhwZWN0ZWRfc3RkZXJyID0gIk1PQ0sgcnVuX2Nv
bW1hbmQ6IFsnVG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXR0ZXN0cnVubmVyJywgJy0tcmVsZWFz
ZSddXG4iCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvdXRwdXQuYXNzZXJ0X291dHB1dHMoc2Vs
ZiwgcG9ydC5fYnVpbGRfZHJpdmVyLCBleHBlY3RlZF9zdGRlcnI9ZXhwZWN0ZWRfc3RkZXJyKSkK
KworICAgICAgICAjIE1ha2Ugc3VyZSB0aGF0IGZhaWx1cmUgdG8gYnVpbGQgcmV0dXJucyBGYWxz
ZS4KKyAgICAgICAgcG9ydC5fZXhlY3V0aXZlID0gTW9ja0V4ZWN1dGl2ZShzaG91bGRfbG9nPVRy
dWUsIHNob3VsZF90aHJvdz1UcnVlKQorICAgICAgICBleHBlY3RlZF9zdGRlcnIgPSAiTU9DSyBy
dW5fY29tbWFuZDogWydUb29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdHRlc3RydW5uZXInLCAnLS1y
ZWxlYXNlJ11cbiIKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvdXRwdXQuYXNzZXJ0X291dHB1
dHMoc2VsZiwgcG9ydC5fYnVpbGRfZHJpdmVyLCBleHBlY3RlZF9zdGRlcnI9ZXhwZWN0ZWRfc3Rk
ZXJyKSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1
bl93ZWJraXRfdGVzdHMucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9y
dW5fd2Via2l0X3Rlc3RzLnB5CmluZGV4IDZkZjJjOGZkOTU0MmYxZjc3YzFkMWIzMWIxMzg3NGUw
YjBhOTE4NTAuLjJkZmJiOGVjOTkyYjc1MDE2YTkxZmZlZTRmZjc2MjhmYmFkMzM1ZTIgMTAwNzU1
Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVz
dHMucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtp
dF90ZXN0cy5weQpAQCAtMjY4LDcgKzI2OCw5IEBAIGRlZiBwYXJzZV9hcmdzKGFyZ3M9Tm9uZSk6
CiAgICAgICAgIG9wdHBhcnNlLm1ha2Vfb3B0aW9uKCItLWNvbXBsZXgtdGV4dCIsIGFjdGlvbj0i
c3RvcmVfdHJ1ZSIsIGRlZmF1bHQ9RmFsc2UsCiAgICAgICAgICAgICBoZWxwPSJVc2UgdGhlIGNv
bXBsZXggdGV4dCBjb2RlIHBhdGggZm9yIGFsbCB0ZXh0IChNYWMgT1MgWCBhbmQgV2luZG93cyBv
bmx5KSIpLAogICAgICAgICBvcHRwYXJzZS5tYWtlX29wdGlvbigiLS10aHJlYWRlZCIsIGFjdGlv
bj0ic3RvcmVfdHJ1ZSIsIGRlZmF1bHQ9RmFsc2UsCi0gICAgICAgICAgICBoZWxwPSJSdW4gYSBj
b25jdXJyZW50IEphdmFTY3JpcHQgdGhlYWQgd2l0aCBlYWNoIHRlc3QiKQorICAgICAgICAgICAg
aGVscD0iUnVuIGEgY29uY3VycmVudCBKYXZhU2NyaXB0IHRoZWFkIHdpdGggZWFjaCB0ZXN0Iiks
CisgICAgICAgIG9wdHBhcnNlLm1ha2Vfb3B0aW9uKCItLXdlYmtpdC10ZXN0LXJ1bm5lciIsICIt
MiIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsCisgICAgICAgICAgICBoZWxwPSJVc2UgV2ViS2l0VGVz
dFJ1bm5lciByYXRoZXIgdGhhbiBEdW1wUmVuZGVyVHJlZS4iKSwKICAgICBdCiAKICAgICAjIE1p
c3NpbmcgTWFjLXNwZWNpZmljIG9sZC1ydW4td2Via2l0LXRlc3RzIG9wdGlvbnM6CmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L3F1ZXVlZW5naW5lX3VuaXR0ZXN0
LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9xdWV1ZWVuZ2luZV91bml0dGVz
dC5weQppbmRleCAzN2Q4NTAyYWZjYWIyM2RlMmE4MjA4Mzk3Mzg3YmNiZDk5YjAzMzBhLi42NWQ2
Njc0MzUzZmM2MzA5ODEwNjIzOWM3NmZiYjFhYjUxOGFmYTliIDEwMDY0NAotLS0gYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L3F1ZXVlZW5naW5lX3VuaXR0ZXN0LnB5CisrKyBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvcXVldWVlbmdpbmVfdW5pdHRlc3QucHkKQEAg
LTE2MCw3ICsxNjAsNyBAQCBjbGFzcyBRdWV1ZUVuZ2luZVRlc3QodW5pdHRlc3QuVGVzdENhc2Up
OgogICAgICAgICBpZiBub3QgdGVybWluYXRpb25fbWVzc2FnZToKICAgICAgICAgICAgIHRlcm1p
bmF0aW9uX21lc3NhZ2UgPSAiRGVsZWdhdGUgdGVybWluYXRlZCBxdWV1ZS4iCiAgICAgICAgIGV4
cGVjdGVkX3N0ZGVyciA9ICJcbiVzXG4iICUgdGVybWluYXRpb25fbWVzc2FnZQotICAgICAgICBP
dXRwdXRDYXB0dXJlKCkuYXNzZXJ0X291dHB1dHMoc2VsZiwgZW5naW5lLnJ1biwgW10sIGV4cGVj
dGVkX3N0ZGVycj1leHBlY3RlZF9zdGRlcnIpCisgICAgICAgIE91dHB1dENhcHR1cmUoKS5hc3Nl
cnRfb3V0cHV0cyhzZWxmLCBlbmdpbmUucnVuLCBleHBlY3RlZF9zdGRlcnI9ZXhwZWN0ZWRfc3Rk
ZXJyKQogCiAgICAgZGVmIF90ZXN0X3Rlcm1pbmF0aW5nX3F1ZXVlKHNlbGYsIGV4Y2VwdGlvbiwg
dGVybWluYXRpb25fbWVzc2FnZSk6CiAgICAgICAgIHdvcmtfaXRlbV9pbmRleCA9IExvZ2dpbmdE
ZWxlZ2F0ZS5leHBlY3RlZF9jYWxsYmFja3MuaW5kZXgoJ3Byb2Nlc3Nfd29ya19pdGVtJykKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9jb21tYW5kdGVz
dC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9jb21tYW5kdGVzdC5w
eQppbmRleCBlMzM1NzEwNGRjYmJlMzM2ZDZjYzhkMzZjNjZjMTU0Yzk3MGE0ZjgyLi5jNDhmNzA2
MmE5ZWU0N2VjN2EyOWM4MjBmYWZmNjJkZjg3MzAyZmUzIDEwMDY0NAotLS0gYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvY29tbWFuZHRlc3QucHkKKysrIGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2NvbW1hbmR0ZXN0LnB5CkBAIC0zMiw3ICszMiw3
IEBAIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5vdXRwdXRjYXB0dXJlIGltcG9ydCBPdXRw
dXRDYXB0dXJlCiBmcm9tIHdlYmtpdHB5LnRvb2wubW9ja3Rvb2wgaW1wb3J0IE1vY2tPcHRpb25z
LCBNb2NrVG9vbAogCiBjbGFzcyBDb21tYW5kc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAg
IGRlZiBhc3NlcnRfZXhlY3V0ZV9vdXRwdXRzKHNlbGYsIGNvbW1hbmQsIGFyZ3MsIGV4cGVjdGVk
X3N0ZG91dD0iIiwgZXhwZWN0ZWRfc3RkZXJyPSIiLCBleHBlY3RlZF9leGNlcHRpb249Tm9uZSwg
b3B0aW9ucz1Nb2NrT3B0aW9ucygpLCB0b29sPU1vY2tUb29sKCkpOgorICAgIGRlZiBhc3NlcnRf
ZXhlY3V0ZV9vdXRwdXRzKHNlbGYsIGNvbW1hbmQsIGFyZ3M9W10sIGV4cGVjdGVkX3N0ZG91dD0i
IiwgZXhwZWN0ZWRfc3RkZXJyPSIiLCBleHBlY3RlZF9leGNlcHRpb249Tm9uZSwgb3B0aW9ucz1N
b2NrT3B0aW9ucygpLCB0b29sPU1vY2tUb29sKCkpOgogICAgICAgICBvcHRpb25zLmJsb2NrcyA9
IE5vbmUKICAgICAgICAgb3B0aW9ucy5jYyA9ICdNT0NLIGNjJwogICAgICAgICBvcHRpb25zLmNv
bXBvbmVudCA9ICdNT0NLIGNvbXBvbmVudCcKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdG9vbC9jb21tYW5kcy9xdWV1ZXNfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVldWVzX3VuaXR0ZXN0LnB5CmluZGV4IGFkNzM4NmE0NTg0
YmRhZDZlNzhiNzVlNThiODMxN2Y2MjYzMjU4ZWYuLmRmODNmMjE3MjlhNjlhMTAzMWVhYTYyYzU1
NWM4ZmQ0ZGZjMGY1ZmEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9j
b21tYW5kcy9xdWV1ZXNfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90
b29sL2NvbW1hbmRzL3F1ZXVlc191bml0dGVzdC5weQpAQCAtMTY2LDcgKzE2Niw3IEBAIGNsYXNz
IEFic3RyYWN0UGF0Y2hRdWV1ZVRlc3QoQ29tbWFuZHNUZXN0KToKICAgICAgICAgdG9vbC5zdGF0
dXNfc2VydmVyID0gTW9ja1N0YXR1c1NlcnZlcih3b3JrX2l0ZW1zPVsyLCAxOTddKQogICAgICAg
ICBleHBlY3RlZF9zdGRvdXQgPSAiTU9DSzogZmV0Y2hfYXR0YWNobWVudDogMiBpcyBub3QgYSBr
bm93biBhdHRhY2htZW50IGlkXG4iICAjIEEgbW9jay1vbmx5IG1lc3NhZ2UgdG8gcHJldmVudCB1
cyBmcm9tIG1ha2luZyBtaXN0YWtlcy4KICAgICAgICAgZXhwZWN0ZWRfc3RkZXJyID0gIk1PQ0s6
IHJlbGVhc2Vfd29ya19pdGVtOiBOb25lIDJcbiIKLSAgICAgICAgcGF0Y2hfaWQgPSBPdXRwdXRD
YXB0dXJlKCkuYXNzZXJ0X291dHB1dHMoc2VsZiwgcXVldWUuX25leHRfcGF0Y2gsIFtdLCBleHBl
Y3RlZF9zdGRvdXQ9ZXhwZWN0ZWRfc3Rkb3V0LCBleHBlY3RlZF9zdGRlcnI9ZXhwZWN0ZWRfc3Rk
ZXJyKQorICAgICAgICBwYXRjaF9pZCA9IE91dHB1dENhcHR1cmUoKS5hc3NlcnRfb3V0cHV0cyhz
ZWxmLCBxdWV1ZS5fbmV4dF9wYXRjaCwgZXhwZWN0ZWRfc3Rkb3V0PWV4cGVjdGVkX3N0ZG91dCwg
ZXhwZWN0ZWRfc3RkZXJyPWV4cGVjdGVkX3N0ZGVycikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bHMocGF0Y2hfaWQsIE5vbmUpICAjIDIgaXMgYW4gaW52YWxpZCBwYXRjaCBpZAogICAgICAgICBz
ZWxmLmFzc2VydEVxdWFscyhxdWV1ZS5fbmV4dF9wYXRjaCgpLmlkKCksIDE5NykKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>98944</attachid>
            <date>2011-06-28 11:09:21 -0700</date>
            <delta_ts>2011-06-28 14:44:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-63439-20110628110920.patch</filename>
            <type>text/plain</type>
            <size>2443</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODk5MzkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCA4ZjM0MmMxNWNhZmVhOWU2M2NkMmUyZDZmN2M0YzU3NDVh
Y2MxMTIzLi40YjlhM2I5ZTAxODE2ZDZkNmU2NjY2MTUwM2M4OGIyYzEyNWRjNjVlIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcg
QEAKKzIwMTEtMDYtMjggIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIG5ldy1ydW4td2Via2l0LXRl
c3RzIG5lZWRzIGEgLS13ZWJraXQtdGVzdC1ydW5uZXIgb3B0aW9uCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MzQzOQorCisgICAgICAgIFRoaXMgd2Fz
IGFjY2lkZW50YWxseSBmaXhlZCBpbiBidWcgNjM1MDEgYXMgd2VsbC4KKyAgICAgICAgVGhlIHJv
b3QgcHJvYmxlbSBoZXJlIHdhcyB0aGF0IHRoZSB3ZWJraXQgdW5pdCB0ZXN0cyB3ZXJlIG5vdCB1
c2luZworICAgICAgICBlbm91Z2ggbW9ja3MuICBJJ3ZlIGZpeGVkIHRoZW0gaGVyZSB0byB1c2Ug
bW9yZSBtb2NrcworICAgICAgICB3aGljaCBzaG91bGQgdW5icmVhayB3aW5kb3dzLgorCisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXRfdW5pdHRlc3Qu
cHk6CisKIDIwMTEtMDYtMjggIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIFJvbGwgb3V0IHI4OTkyNCBhbmQgcjg5OTI1CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdF91bml0dGVzdC5weSBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0X3VuaXR0ZXN0LnB5CmluZGV4
IDZhOGQ3ZTExMGQ2MDQ4NzMzODA3ODk2MzFjN2Y1NWYwNDhlNTc4NjUuLjFmYjllMDQ3MmMyOTdm
YmYyM2QxOTQ2ODJiY2UwMzUzY2NkZGRiMWQgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0X3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0X3VuaXR0ZXN0LnB5CkBAIC0z
MywyMCArMzMsMjIgQEAgZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLm91dHB1dGNhcHR1cmUg
aW1wb3J0IE91dHB1dENhcHR1cmUKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQud2Vi
a2l0IGltcG9ydCBXZWJLaXRQb3J0CiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0IGlt
cG9ydCBwb3J0X3Rlc3RjYXNlCiAKLWZyb20gd2Via2l0cHkudG9vbC5tb2NrdG9vbCBpbXBvcnQg
TW9ja0V4ZWN1dGl2ZQotZnJvbSB3ZWJraXRweS50b29sLm1vY2t0b29sIGltcG9ydCBNb2NrT3B0
aW9ucworZnJvbSB3ZWJraXRweS50b29sLm1vY2t0b29sIGltcG9ydCBNb2NrRXhlY3V0aXZlLCBN
b2NrT3B0aW9ucywgTW9ja1VzZXIKIAogCiBjbGFzcyBUZXN0V2ViS2l0UG9ydChXZWJLaXRQb3J0
KToKICAgICBkZWYgX19pbml0X18oc2VsZiwgc3ltYm9sX2xpc3Q9Tm9uZSwgZmVhdHVyZV9saXN0
PU5vbmUsCiAgICAgICAgICAgICAgICAgIGV4cGVjdGF0aW9uc19maWxlPU5vbmUsIHNraXBzX2Zp
bGU9Tm9uZSwKLSAgICAgICAgICAgICAgICAgZXhlY3V0aXZlPU5vbmUsICoqa3dhcmdzKToKKyAg
ICAgICAgICAgICAgICAgZXhlY3V0aXZlPU5vbmUsIGZpbGVzeXN0ZW09Tm9uZSwgdXNlcj1Ob25l
LAorICAgICAgICAgICAgICAgICAqKmt3YXJncyk6CiAgICAgICAgIHNlbGYuc3ltYm9sX2xpc3Qg
PSBzeW1ib2xfbGlzdAogICAgICAgICBzZWxmLmZlYXR1cmVfbGlzdCA9IGZlYXR1cmVfbGlzdAog
ICAgICAgICBzZWxmLmV4cGVjdGF0aW9uc19maWxlID0gZXhwZWN0YXRpb25zX2ZpbGUKICAgICAg
ICAgc2VsZi5za2lwc19maWxlID0gc2tpcHNfZmlsZQogICAgICAgICBleGVjdXRpdmUgPSBleGVj
dXRpdmUgb3IgTW9ja0V4ZWN1dGl2ZShzaG91bGRfbG9nPUZhbHNlKQotICAgICAgICBXZWJLaXRQ
b3J0Ll9faW5pdF9fKHNlbGYsIGV4ZWN1dGl2ZT1leGVjdXRpdmUsICoqa3dhcmdzKQorICAgICAg
ICBmaWxlc3lzdGVtID0gZmlsZXN5c3RlbSBvciBmaWxlc3lzdGVtX21vY2suTW9ja0ZpbGVTeXN0
ZW0oKQorICAgICAgICB1c2VyID0gdXNlciBvciBNb2NrVXNlcigpCisgICAgICAgIFdlYktpdFBv
cnQuX19pbml0X18oc2VsZiwgZXhlY3V0aXZlPWV4ZWN1dGl2ZSwgZmlsZXN5c3RlbT1maWxlc3lz
dGVtLCB1c2VyPU1vY2tVc2VyKCksICoqa3dhcmdzKQogCiAgICAgZGVmIF9ydW50aW1lX2ZlYXR1
cmVfbGlzdChzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuZmVhdHVyZV9saXN0Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>