<?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>37987</bug_id>
          
          <creation_ts>2010-04-22 05:22:44 -0700</creation_ts>
          <short_desc>[chromium] new-run-webkit-tests hangs on Chromium Bots (OS X and Linux)</short_desc>
          <delta_ts>2010-04-28 17:54:53 -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>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac (Intel)</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>38011</dependson>
          <blocked>38300</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yuzo Fujishima">yuzo</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cjerdonek</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dpranke</cc>
    
    <cc>eric</cc>
    
    <cc>jamesr</cc>
    
    <cc>ojan</cc>
    
    <cc>tkent</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>215835</commentid>
    <comment_count>0</comment_count>
    <who name="Yuzo Fujishima">yuzo</who>
    <bug_when>2010-04-22 05:22:44 -0700</bug_when>
    <thetext>Revision: 58075 (and later)

When invoked from &lt;CHROMIUM&gt;/src/webkit/tools/layout_tests/run_webkit_tests.py,
WebKitTools/Scripts/new-run-webkit-tests hangs until it times out after 600 seconds.

I observed this both in my local (Chromium) environment:
  ./webkit/tools/layout_tests/run_webkit_tests.py  --debug fast/[a-b]* --verbose
and in Chromium&apos;s canary bots:
  http://build.chromium.org/buildbot/waterfall.fyi/waterfall?builder=Webkit+Mac+(webkit.org)
  (Sometimes the tests go through, sometimes hang.)

As far as I tested, the hang is not caused by a specific test(s) -- the test being run by the
hanging thread differs every time I tried (a few dozen times).

-- Local Environment --

Traceback (collected by signaling):

  File &quot;/Users/yuzo/src/chromium/src/third_party/WebKit/WebKitTools/Scripts/new-run-webkit-tests&quot;, line 55, in &lt;module&gt;
    sys.exit(run_webkit_tests.main(options, args))
  File &quot;/Users/yuzo/src/chromium/src/third_party/WebKit/WebKitTools/Scripts/webkitpy/layout_tests/run_webkit_tests.py&quot;, line 1628, in main
    num_unexpected_results = test_runner.run(result_summary, print_results)
  File &quot;/Users/yuzo/src/chromium/src/third_party/WebKit/WebKitTools/Scripts/webkitpy/layout_tests/run_webkit_tests.py&quot;, line 678, in run
    self._run_tests(self._test_files_list, result_summary))
  File &quot;/Users/yuzo/src/chromium/src/third_party/WebKit/WebKitTools/Scripts/webkitpy/layout_tests/run_webkit_tests.py&quot;, line 622, in _run_tests
    thread.join(0.1)
  File &quot;/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/threading.py&quot;, line 569, in join
    self.__block.wait(delay)
  File &quot;/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/threading.py&quot;, line 233, in wait
    _sleep(delay)

Processes:

 7163 ttys000    0:00.03 /System/Library/Frameworks/Python.framework/Versions/2.5/Resources/Python.app/Contents/MacOS/Python ./webkit/tools/layout_tests/run_webkit_tests.py --debug fast/[a-b]* --verbose
 7165 ttys000    0:07.77 /System/Library/Frameworks/Python.framework/Versions/2.5/Resources/Python.app/Contents/MacOS/Python /Users/yuzo/src/chromium/src/third_party/WebKit/WebKitTools/Scripts/new-run-webkit-tests --chromium --debug fast/[a-b]* --verbose
 7170 ttys000    0:00.02 /Users/yuzo/src/chromium/src/xcodebuild/Debug/layout_test_helper
 7183 ttys000    0:01.58 /Users/yuzo/src/chromium/src/xcodebuild/Debug/TestShell.app/Contents/MacOS/TestShell --layout-tests --pixel-tests=/Users/yuzo/src/chromium/src/webkit/Debug/layout-test-results/png_result11.png

-- Chromium Canary Bot --

http://build.chromium.org/buildbot/waterfall.fyi/builders/Webkit%20Mac%20(webkit.org)/builds/18643/steps/webkit_tests/logs/stdio

...
100422 03:48:12 dump_render_tree_thread.py:348  DEBUG Thread-1 fast/events/onunload.html passed
100422 03:48:12 dump_render_tree_thread.py:348  DEBUG Thread-2 editing/selection/thai-word-at-document-end.html passed
100422 03:48:12 dump_render_tree_thread.py:348  DEBUG Thread-2 editing/selection/toString-1.html passed
100422 03:48:12 dump_render_tree_thread.py:348  DEBUG Thread-2 editing/selection/toString.html passed
100422 03:48:12 dump_render_tree_thread.py:348  DEBUG Thread-1 fast/events/open-window-from-another-frame.html passed

command timed out: 600 seconds without output, killing pid 20832
process killed by signal 9
program finished with exit code -1
elapsedTime=840.133609</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>215994</commentid>
    <comment_count>1</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-22 11:58:21 -0700</bug_when>
    <thetext>We need a stack trace from the hung threads to diagnose.

I&apos;m attempting to build chromium now so that I can reproduce.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216032</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-22 12:54:20 -0700</bug_when>
    <thetext>OK.  I&apos;m not able to reproduce this (yet).

Someone who is, please add the following code to your copy (any file that gets run is fine):

import signal
import threading
import traceback
def dumpstacks(signal, frame):
    code = []
    for threadId, stack in sys._current_frames().items():
        code.append(&quot;\n# Thread: %d&quot; % threadId)
        for filename, lineno, name, line in traceback.extract_stack(stack):
            code.append(&apos;File: &quot;%s&quot;, line %d, in %s&apos; % (filename, lineno, name))
            if line:
                code.append(&quot;  %s&quot; % (line.strip()))
    print &quot;\n&quot;.join(code)

signal.signal(signal.SIGQUIT, dumpstacks)

and then use:

kill -QUIT PROCESS_ID

And attach the dump of the stacks to this bug.  Once we have that information, we can solve this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216034</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-22 12:55:24 -0700</bug_when>
    <thetext>It would be possible to add that sort of thread dumping code to run-webkit-tests for normal --verbose mode operation and have it run any time it gets a SIGTERM (what it should be getting from the bots).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216068</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-22 14:07:33 -0700</bug_when>
    <thetext>So far James and I have not been able to reproduce this failure locally.  Yuzo said he could last night.

Unfortunately, we can&apos;t easily debug on the bots, because BuildBot sends SIGKILL to kill the process instead of SIGTERM so there is no debug logging we can do w/o writing additional watch timers or wrapper scripts.
http://buildbot.net/trac/ticket/751</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216072</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-22 14:12:43 -0700</bug_when>
    <thetext>I&apos;m not sure how:
./webkit/tools/layout_tests/run_webkit_tests.py  --debug fast/[a-b]*
--verbose

works.

my shell would try to eat the &quot;*&quot;, and even passing just &quot;fast&quot; doesn&apos;t find any tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216132</commentid>
    <comment_count>6</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-22 16:08:33 -0700</bug_when>
    <thetext>Adding some debugging code to help with this in bug 38011.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216285</commentid>
    <comment_count>7</comment_count>
      <attachid>54132</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-04-22 22:59:24 -0700</bug_when>
    <thetext>Created attachment 54132
stack dump

I have a similar problem.
If I run &quot;new-run-webkit-tests --chromium --debug --use-drt --experimental-fully-parallel&quot;, 2 DumpRenderTree processes work correctly and 14 DumpRenderTree process freeze.  I had no problem with the source as of two days ago, and have the problem with the today&apos;s source.

I attach an output for Comment #2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216307</commentid>
    <comment_count>8</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-23 00:20:12 -0700</bug_when>
    <thetext>We have testing code running on the canary bots.  We just need one of the stacktrace sets from that testing code as soon as someone notices a bot hang.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216326</commentid>
    <comment_count>9</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-04-23 01:01:40 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Created an attachment (id=54132) [details]
&gt; stack dump
&gt; 
&gt; I have a similar problem.
&gt; If I run &quot;new-run-webkit-tests --chromium --debug --use-drt
&gt; --experimental-fully-parallel&quot;, 2 DumpRenderTree processes work correctly and
&gt; 14 DumpRenderTree process freeze.  I had no problem with the source as of two
&gt; days ago, and have the problem with the today&apos;s source.
&gt; 
&gt; I attach an output for Comment #2.

For my case,
r58044 &quot;Unreviewed, just adding missing &quot;:&quot; in python file.&quot; was ok, and
r58050 &quot;Unreviewed. Attempt one more time to fix NRWT for chromium.&quot; made this problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216517</commentid>
    <comment_count>10</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-23 12:54:24 -0700</bug_when>
    <thetext>I theorized with tony that we could be passing non-utf8 strings to the test_shell process and getting it to hang.

http://trac.webkit.org/changeset/58050 is not related to test_shell communication at all, so I don&apos;t see why it would cause hangs in reading from test_shell.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216527</commentid>
    <comment_count>11</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-23 13:05:56 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Created an attachment (id=54132) [details]
&gt; stack dump
&gt; 
&gt; I have a similar problem.
&gt; If I run &quot;new-run-webkit-tests --chromium --debug --use-drt
&gt; --experimental-fully-parallel&quot;, 2 DumpRenderTree processes work correctly and
&gt; 14 DumpRenderTree process freeze.  I had no problem with the source as of two
&gt; days ago, and have the problem with the today&apos;s source.
&gt; 
&gt; I attach an output for Comment #2.

How do I build an test this configuration?  I would like to have a local reproduction of this bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216528</commentid>
    <comment_count>12</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-23 13:08:44 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #7)
&gt; &gt; Created an attachment (id=54132) [details] [details]
&gt; &gt; stack dump
&gt; &gt; 
&gt; &gt; I have a similar problem.
&gt; &gt; If I run &quot;new-run-webkit-tests --chromium --debug --use-drt
&gt; &gt; --experimental-fully-parallel&quot;, 2 DumpRenderTree processes work correctly and
&gt; &gt; 14 DumpRenderTree process freeze.  I had no problem with the source as of two
&gt; &gt; days ago, and have the problem with the today&apos;s source.
&gt; &gt; 
&gt; &gt; I attach an output for Comment #2.
&gt; 
&gt; How do I build an test this configuration?  I would like to have a local
&gt; reproduction of this bug.


Also, DumpRenderTree uses a totally different Driver than test_shell, meaning your hang (since it was in WebKitDriver code) has little to do with Yuzo&apos;s hang (which didn&apos;t use that code).

I suspect your DRT hang is related to how I have been fixing the WebKit Driver code to have proper expectations about Mac DRT, including reading from stderr as well as assuming that the text output is utf-8.  It&apos;s possible that Chromium DRT is not spitting out enough #EOFs?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216533</commentid>
    <comment_count>13</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-23 13:14:53 -0700</bug_when>
    <thetext>James and I have *not* seen this hang on the chromium bots after adding the stack dumping code.

The bots are expected to no longer kill the process for lack of output after 10m since it now outputs thread dumps every minute.  However if it were a true hang it should still end up killing the process for taking too long.

Something is fishy here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216550</commentid>
    <comment_count>14</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-04-23 14:05:57 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; James and I have *not* seen this hang on the chromium bots after adding the
&gt; stack dumping code.
&gt; 
&gt; The bots are expected to no longer kill the process for lack of output after
&gt; 10m since it now outputs thread dumps every minute.  However if it were a true
&gt; hang it should still end up killing the process for taking too long.
&gt; 
&gt; Something is fishy here.

Note that the stack dumping will only work if the main thread can call that routine. If it can&apos;t (e.g., because it&apos;s blocked in a join(), or for some other reason), you will still have a hang.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216600</commentid>
    <comment_count>15</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-23 15:34:53 -0700</bug_when>
    <thetext>James, Dirk and I have all tried and failed to repro this locally.  Anyone who is successful I would love to know.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216708</commentid>
    <comment_count>16</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-24 00:10:57 -0700</bug_when>
    <thetext>@tkent:  We should break your hang off into a separate bug.

I plan to roll out some of the wdiff changes I made in hopes they make the failures on the bots go away.  Mostly on the off chance that we&apos;re triggering some python bug and that makes it go away.

We saw this reproduce on the bots a couple times today, but the dumping code I wrote did not run as expected.  It is definitely working, as you see the output earlier in the run, but once it hangs it appears to be some sort of hard hang whereby the main thread is never returning from .join()

It could also be crashing somehow and buildbot is detecting the crash as a hang.  Either way, sounds like a python bug.

We need local reproduction of the hang to really move forward.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216843</commentid>
    <comment_count>17</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-25 11:43:06 -0700</bug_when>
    <thetext>OK.  I&apos;m going to roll out:
http://trac.webkit.org/changeset/58062
http://trac.webkit.org/changeset/58060
http://trac.webkit.org/changeset/58059
http://trac.webkit.org/changeset/58055
http://trac.webkit.org/changeset/58054
and parts of:
http://trac.webkit.org/changeset/58050

We&apos;ll see if that fixes this mysterious hang.  I realized that although we could (and possibly should) treat the output from DumpRenderTree/test_shell as utf-8 there are some exceptions to the rule that it is always utf-8.  So to make things simple, I&quot;m restoring the previous behavior of just treating the output as binary.

Additionally, I learned in fixing bug 38027 that diff ouput must be treated as binary as well.  So these reverts fix that too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216852</commentid>
    <comment_count>18</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-25 14:30:37 -0700</bug_when>
    <thetext>My suspicion is that the hang may be http://bugs.python.org/issue2320.  I&apos;m not sure why the changes would have triggered it though.  Unless somehow the previous wdiff code was safe, and the new run_command code is not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216869</commentid>
    <comment_count>19</comment_count>
      <attachid>54251</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-25 18:29:46 -0700</bug_when>
    <thetext>Created attachment 54251
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216871</commentid>
    <comment_count>20</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-25 18:31:42 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; Created an attachment (id=54251) [details]
&gt; Patch

I&apos;ve run test-webkitpy --all, as well as new-run-webkit-tests and run_webkit_tests.py (with a chromium checkout).

I have no idea if this will fix the hangs, but it definitely makes our handling of diffs better, and treating DRT output as binary is probably best for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216875</commentid>
    <comment_count>21</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-04-25 18:58:32 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; &gt; I have a similar problem.
&gt; &gt; If I run &quot;new-run-webkit-tests --chromium --debug --use-drt
&gt; &gt; --experimental-fully-parallel&quot;, 2 DumpRenderTree processes work correctly and
&gt; &gt; 14 DumpRenderTree process freeze.  I had no problem with the source as of two
&gt; &gt; days ago, and have the problem with the today&apos;s source.
&gt; &gt; 
&gt; &gt; I attach an output for Comment #2.
&gt; 
&gt; How do I build an test this configuration?  I would like to have a local
&gt; reproduction of this bug.

% update-webkit --chromium
% build-dumprendertree --debug --chromium
% new-run-webkit-tests --debug --chromium --use-drt


&gt; Created an attachment (id=54251) [details] [details]
&gt; Patch

I tried this patch, but I still have the problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216876</commentid>
    <comment_count>22</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-25 19:09:01 -0700</bug_when>
    <thetext>OK.  Testing tkent&apos;s setup now (which is a separate bug from the hang seen on the cr builders).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217349</commentid>
    <comment_count>23</comment_count>
      <attachid>54251</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-26 16:16:55 -0700</bug_when>
    <thetext>Comment on attachment 54251
Patch

Ok.  The comments below are minor.

WebKitTools/Scripts/webkitpy/layout_tests/driver_test.py:62
 +      driver.stop()
To we need a finally to make sure we run this line of code?

WebKitTools/Scripts/webkitpy/layout_tests/port/base.py:569
 +                  wdiff = wdiff.replace(&apos;##WDIFF_DEL##&apos;, &apos;&lt;span class=del&gt;&apos;)
Yuck

WebKitTools/Scripts/webkitpy/layout_tests/port/base.py:735
 +          browser_wrapper = os.environ.get(&quot;BROWSER_WRAPPER&quot;, None)
I think this &quot;None&quot; is superfluous.

WebKitTools/Scripts/webkitpy/layout_tests/port/base.py:740
 +              _log.error(&quot;BROWSER_WRAPPER will be removed any time after June 1st 2010 and your scripts will break.&quot;)
Yay.  Environment variables are evil.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217447</commentid>
    <comment_count>24</comment_count>
      <attachid>54251</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-04-26 19:33:12 -0700</bug_when>
    <thetext>Comment on attachment 54251
Patch

Clearing flags on attachment: 54251

Committed r58279: &lt;http://trac.webkit.org/changeset/58279&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217448</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-04-26 19:33:20 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217566</commentid>
    <comment_count>26</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-27 00:55:54 -0700</bug_when>
    <thetext>I believe this is likely still happening.  Preparing a new fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217575</commentid>
    <comment_count>27</comment_count>
      <attachid>54394</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-27 01:26:08 -0700</bug_when>
    <thetext>Created attachment 54394
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217576</commentid>
    <comment_count>28</comment_count>
      <attachid>54395</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-27 01:28:32 -0700</bug_when>
    <thetext>Created attachment 54395
Add mising import</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217585</commentid>
    <comment_count>29</comment_count>
      <attachid>54395</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-27 01:48:37 -0700</bug_when>
    <thetext>Comment on attachment 54395
Add mising import

WebKitTools/Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:128
 +      # FIXME: Callers should use scm.py instead.
This comment seems unrelated, but ok.

WebKitTools/Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:139
 +                                        shell=(sys.platform == &apos;win32&apos;),
I thought we were against shell=True?

WebKitTools/Scripts/webkitpy/layout_tests/port/server_process.py:73
 +          close_fds = sys.platform not in (&apos;win32&apos;, &apos;cygwin&apos;)
This seems to be a repeat of the code in Executive.  Is there a way for them to share?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217597</commentid>
    <comment_count>30</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-27 01:59:10 -0700</bug_when>
    <thetext>(In reply to comment #29)
&gt; (From update of attachment 54395 [details])
&gt; WebKitTools/Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:128
&gt;  +      # FIXME: Callers should use scm.py instead.
&gt; This comment seems unrelated, but ok.

Yeah, I just noticed more of the scm duplication while in the file.

&gt; WebKitTools/Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:139
&gt;  +                                        shell=(sys.platform == &apos;win32&apos;),
&gt; I thought we were against shell=True?

We are.

&gt; WebKitTools/Scripts/webkitpy/layout_tests/port/server_process.py:73
&gt;  +          close_fds = sys.platform not in (&apos;win32&apos;, &apos;cygwin&apos;)
&gt; This seems to be a repeat of the code in Executive.  Is there a way for them to
&gt; share?

server_process keeps a long-running Popen().  Executive does not yet have any sort of wrapper for that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217783</commentid>
    <comment_count>31</comment_count>
      <attachid>54395</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-04-27 10:50:13 -0700</bug_when>
    <thetext>Comment on attachment 54395
Add mising import

Clearing flags on attachment: 54395

Committed r58314: &lt;http://trac.webkit.org/changeset/58314&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217785</commentid>
    <comment_count>32</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-04-27 10:50:21 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>218714</commentid>
    <comment_count>33</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-28 17:41:32 -0700</bug_when>
    <thetext>This is still happening.  I&apos;ll open a new bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>218733</commentid>
    <comment_count>34</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-28 17:54:53 -0700</bug_when>
    <thetext>Opened bug 38300 and bug 38298 to cover remaining hangs.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>54132</attachid>
            <date>2010-04-22 22:59:24 -0700</date>
            <delta_ts>2010-04-22 22:59:24 -0700</delta_ts>
            <desc>stack dump</desc>
            <filename>nrwt-stack.txt</filename>
            <type>text/plain</type>
            <size>20029</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">Y3NzMS9ib3hfcHJvcGVydGllczogLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uICg3OTc1
KSAKIyBUaHJlYWQ6IC0xMzMzNjYxNjk2CkZpbGU6ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9QeXRob24uZnJhbWV3b3JrL1ZlcnNpb25zLzIuNS9saWIvcHl0aG9uMi41L3RocmVhZGluZy5w
eSIsIGxpbmUgNDYwLCBpbiBfX2Jvb3RzdHJhcAogIHNlbGYucnVuKCkKRmlsZTogIi9Vc2Vycy90
a2VudC9XZWJLaXQyL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xh
eW91dF9wYWNrYWdlL2R1bXBfcmVuZGVyX3RyZWVfdGhyZWFkLnB5IiwgbGluZSAyNTcsIGluIHJ1
bgogIHNlbGYuX3J1bih0ZXN0X3J1bm5lcj1Ob25lLCByZXN1bHRfc3VtbWFyeT1Ob25lKQpGaWxl
OiAiL1VzZXJzL3RrZW50L1dlYktpdDIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvZHVtcF9yZW5kZXJfdHJlZV90aHJlYWQucHkiLCBsaW5l
IDMyOSwgaW4gX3J1bgogIHJlc3VsdCA9IHNlbGYuX3J1bl90ZXN0KHRlc3RfaW5mbykKRmlsZTog
Ii9Vc2Vycy90a2VudC9XZWJLaXQyL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL2xheW91dF9wYWNrYWdlL2R1bXBfcmVuZGVyX3RyZWVfdGhyZWFkLnB5IiwgbGluZSA0
MzEsIGluIF9ydW5fdGVzdAogIHNlbGYuX2RyaXZlci5ydW5fdGVzdCh0ZXN0X2luZm8udXJpLCB0
ZXN0X2luZm8udGltZW91dCwgaW1hZ2VfaGFzaCkKRmlsZTogIi9Vc2Vycy90a2VudC9XZWJLaXQy
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5
IiwgbGluZSA0MTAsIGluIHJ1bl90ZXN0CiAgbGluZSA9IHNlbGYuX3NlcnZlcl9wcm9jZXNzLnJl
YWRfbGluZSh0aW1lb3V0KQpGaWxlOiAiL1VzZXJzL3RrZW50L1dlYktpdDIvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9zZXJ2ZXJfcHJvY2Vzcy5weSIsIGxp
bmUgMTM2LCBpbiByZWFkX2xpbmUKICByZXR1cm4gc2VsZi5fcmVhZCh0aW1lb3V0LCBzaXplPTAp
CkZpbGU6ICIvVXNlcnMvdGtlbnQvV2ViS2l0Mi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L3NlcnZlcl9wcm9jZXNzLnB5IiwgbGluZSAxOTIsIGluIF9yZWFk
CiAgc2VsZi5fb3V0cHV0ICs9IHNlbGYuX3Byb2Muc3Rkb3V0LnJlYWQoKQoKIyBUaHJlYWQ6IC0x
MzM0MTk0MTc2CkZpbGU6ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9QeXRob24uZnJhbWV3
b3JrL1ZlcnNpb25zLzIuNS9saWIvcHl0aG9uMi41L3RocmVhZGluZy5weSIsIGxpbmUgNDYwLCBp
biBfX2Jvb3RzdHJhcAogIHNlbGYucnVuKCkKRmlsZTogIi9Vc2Vycy90a2VudC9XZWJLaXQyL1dl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2R1
bXBfcmVuZGVyX3RyZWVfdGhyZWFkLnB5IiwgbGluZSAyNTcsIGluIHJ1bgogIHNlbGYuX3J1bih0
ZXN0X3J1bm5lcj1Ob25lLCByZXN1bHRfc3VtbWFyeT1Ob25lKQpGaWxlOiAiL1VzZXJzL3RrZW50
L1dlYktpdDIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0
X3BhY2thZ2UvZHVtcF9yZW5kZXJfdHJlZV90aHJlYWQucHkiLCBsaW5lIDMyOSwgaW4gX3J1bgog
IHJlc3VsdCA9IHNlbGYuX3J1bl90ZXN0KHRlc3RfaW5mbykKRmlsZTogIi9Vc2Vycy90a2VudC9X
ZWJLaXQyL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9w
YWNrYWdlL2R1bXBfcmVuZGVyX3RyZWVfdGhyZWFkLnB5IiwgbGluZSA0MzEsIGluIF9ydW5fdGVz
dAogIHNlbGYuX2RyaXZlci5ydW5fdGVzdCh0ZXN0X2luZm8udXJpLCB0ZXN0X2luZm8udGltZW91
dCwgaW1hZ2VfaGFzaCkKRmlsZTogIi9Vc2Vycy90a2VudC9XZWJLaXQyL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5IiwgbGluZSA0MTAsIGlu
IHJ1bl90ZXN0CiAgbGluZSA9IHNlbGYuX3NlcnZlcl9wcm9jZXNzLnJlYWRfbGluZSh0aW1lb3V0
KQpGaWxlOiAiL1VzZXJzL3RrZW50L1dlYktpdDIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9zZXJ2ZXJfcHJvY2Vzcy5weSIsIGxpbmUgMTM2LCBpbiByZWFk
X2xpbmUKICByZXR1cm4gc2VsZi5fcmVhZCh0aW1lb3V0LCBzaXplPTApCkZpbGU6ICIvVXNlcnMv
dGtlbnQvV2ViS2l0Mi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L3NlcnZlcl9wcm9jZXNzLnB5IiwgbGluZSAxOTIsIGluIF9yZWFkCiAgc2VsZi5fb3V0cHV0
ICs9IHNlbGYuX3Byb2Muc3Rkb3V0LnJlYWQoKQoKIyBUaHJlYWQ6IC0xMzM3Mzg5MDU2CkZpbGU6
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9QeXRob24uZnJhbWV3b3JrL1ZlcnNpb25zLzIu
NS9saWIvcHl0aG9uMi41L3RocmVhZGluZy5weSIsIGxpbmUgNDYwLCBpbiBfX2Jvb3RzdHJhcAog
IHNlbGYucnVuKCkKRmlsZTogIi9Vc2Vycy90a2VudC9XZWJLaXQyL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2R1bXBfcmVuZGVyX3RyZWVf
dGhyZWFkLnB5IiwgbGluZSAyNTcsIGluIHJ1bgogIHNlbGYuX3J1bih0ZXN0X3J1bm5lcj1Ob25l
LCByZXN1bHRfc3VtbWFyeT1Ob25lKQpGaWxlOiAiL1VzZXJzL3RrZW50L1dlYktpdDIvV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvZHVtcF9y
ZW5kZXJfdHJlZV90aHJlYWQucHkiLCBsaW5lIDMyOSwgaW4gX3J1bgogIHJlc3VsdCA9IHNlbGYu
X3J1bl90ZXN0KHRlc3RfaW5mbykKRmlsZTogIi9Vc2Vycy90a2VudC9XZWJLaXQyL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2R1bXBfcmVu
ZGVyX3RyZWVfdGhyZWFkLnB5IiwgbGluZSA0MzEsIGluIF9ydW5fdGVzdAogIHNlbGYuX2RyaXZl
ci5ydW5fdGVzdCh0ZXN0X2luZm8udXJpLCB0ZXN0X2luZm8udGltZW91dCwgaW1hZ2VfaGFzaCkK
RmlsZTogIi9Vc2Vycy90a2VudC9XZWJLaXQyL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5IiwgbGluZSA0MTAsIGluIHJ1bl90ZXN0CiAgbGlu
ZSA9IHNlbGYuX3NlcnZlcl9wcm9jZXNzLnJlYWRfbGluZSh0aW1lb3V0KQpGaWxlOiAiL1VzZXJz
L3RrZW50L1dlYktpdDIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9zZXJ2ZXJfcHJvY2Vzcy5weSIsIGxpbmUgMTM2LCBpbiByZWFkX2xpbmUKICByZXR1cm4g
c2VsZi5fcmVhZCh0aW1lb3V0LCBzaXplPTApCkZpbGU6ICIvVXNlcnMvdGtlbnQvV2ViS2l0Mi9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3NlcnZlcl9wcm9j
ZXNzLnB5IiwgbGluZSAxOTIsIGluIF9yZWFkCiAgc2VsZi5fb3V0cHV0ICs9IHNlbGYuX3Byb2Mu
c3Rkb3V0LnJlYWQoKQoKIyBUaHJlYWQ6IC0xMzM1MjU5MTM2CkZpbGU6ICIvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9QeXRob24uZnJhbWV3b3JrL1ZlcnNpb25zLzIuNS9saWIvcHl0aG9uMi41
L3RocmVhZGluZy5weSIsIGxpbmUgNDYwLCBpbiBfX2Jvb3RzdHJhcAogIHNlbGYucnVuKCkKRmls
ZTogIi9Vc2Vycy90a2VudC9XZWJLaXQyL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2R1bXBfcmVuZGVyX3RyZWVfdGhyZWFkLnB5IiwgbGlu
ZSAyNTcsIGluIHJ1bgogIHNlbGYuX3J1bih0ZXN0X3J1bm5lcj1Ob25lLCByZXN1bHRfc3VtbWFy
eT1Ob25lKQpGaWxlOiAiL1VzZXJzL3RrZW50L1dlYktpdDIvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvZHVtcF9yZW5kZXJfdHJlZV90aHJl
YWQucHkiLCBsaW5lIDMyOSwgaW4gX3J1bgogIHJlc3VsdCA9IHNlbGYuX3J1bl90ZXN0KHRlc3Rf
aW5mbykKRmlsZTogIi9Vc2Vycy90a2VudC9XZWJLaXQyL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2R1bXBfcmVuZGVyX3RyZWVfdGhyZWFk
LnB5IiwgbGluZSA0MzEsIGluIF9ydW5fdGVzdAogIHNlbGYuX2RyaXZlci5ydW5fdGVzdCh0ZXN0
X2luZm8udXJpLCB0ZXN0X2luZm8udGltZW91dCwgaW1hZ2VfaGFzaCkKRmlsZTogIi9Vc2Vycy90
a2VudC9XZWJLaXQyL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvd2Via2l0LnB5IiwgbGluZSA0MTAsIGluIHJ1bl90ZXN0CiAgbGluZSA9IHNlbGYuX3NlcnZl
cl9wcm9jZXNzLnJlYWRfbGluZSh0aW1lb3V0KQpGaWxlOiAiL1VzZXJzL3RrZW50L1dlYktpdDIv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9zZXJ2ZXJfcHJv
Y2Vzcy5weSIsIGxpbmUgMTM2LCBpbiByZWFkX2xpbmUKICByZXR1cm4gc2VsZi5fcmVhZCh0aW1l
b3V0LCBzaXplPTApCkZpbGU6ICIvVXNlcnMvdGtlbnQvV2ViS2l0Mi9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3NlcnZlcl9wcm9jZXNzLnB5IiwgbGluZSAx
OTIsIGluIF9yZWFkCiAgc2VsZi5fb3V0cHV0ICs9IHNlbGYuX3Byb2Muc3Rkb3V0LnJlYWQoKQoK
IyBUaHJlYWQ6IC0xMzM1NzkxNjE2CkZpbGU6ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Q
eXRob24uZnJhbWV3b3JrL1ZlcnNpb25zLzIuNS9saWIvcHl0aG9uMi41L3RocmVhZGluZy5weSIs
IGxpbmUgNDYwLCBpbiBfX2Jvb3RzdHJhcAogIHNlbGYucnVuKCkKRmlsZTogIi9Vc2Vycy90a2Vu
dC9XZWJLaXQyL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91
dF9wYWNrYWdlL2R1bXBfcmVuZGVyX3RyZWVfdGhyZWFkLnB5IiwgbGluZSAyNTcsIGluIHJ1bgog
IHNlbGYuX3J1bih0ZXN0X3J1bm5lcj1Ob25lLCByZXN1bHRfc3VtbWFyeT1Ob25lKQpGaWxlOiAi
L1VzZXJzL3RrZW50L1dlYktpdDIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvbGF5b3V0X3BhY2thZ2UvZHVtcF9yZW5kZXJfdHJlZV90aHJlYWQucHkiLCBsaW5lIDMy
OSwgaW4gX3J1bgogIHJlc3VsdCA9IHNlbGYuX3J1bl90ZXN0KHRlc3RfaW5mbykKRmlsZTogIi9V
c2Vycy90a2VudC9XZWJLaXQyL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL2xheW91dF9wYWNrYWdlL2R1bXBfcmVuZGVyX3RyZWVfdGhyZWFkLnB5IiwgbGluZSA0MzEs
IGluIF9ydW5fdGVzdAogIHNlbGYuX2RyaXZlci5ydW5fdGVzdCh0ZXN0X2luZm8udXJpLCB0ZXN0
X2luZm8udGltZW91dCwgaW1hZ2VfaGFzaCkKRmlsZTogIi9Vc2Vycy90a2VudC9XZWJLaXQyL1dl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5Iiwg
bGluZSA0MTAsIGluIHJ1bl90ZXN0CiAgbGluZSA9IHNlbGYuX3NlcnZlcl9wcm9jZXNzLnJlYWRf
bGluZSh0aW1lb3V0KQpGaWxlOiAiL1VzZXJzL3RrZW50L1dlYktpdDIvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9zZXJ2ZXJfcHJvY2Vzcy5weSIsIGxpbmUg
MTM2LCBpbiByZWFkX2xpbmUKICByZXR1cm4gc2VsZi5fcmVhZCh0aW1lb3V0LCBzaXplPTApCkZp
bGU6ICIvVXNlcnMvdGtlbnQvV2ViS2l0Mi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L3NlcnZlcl9wcm9jZXNzLnB5IiwgbGluZSAxOTIsIGluIF9yZWFkCiAg
c2VsZi5fb3V0cHV0ICs9IHNlbGYuX3Byb2Muc3Rkb3V0LnJlYWQoKQoKIyBUaHJlYWQ6IC0xMzM5
NTE4OTc2CkZpbGU6ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9QeXRob24uZnJhbWV3b3Jr
L1ZlcnNpb25zLzIuNS9saWIvcHl0aG9uMi41L3RocmVhZGluZy5weSIsIGxpbmUgNDYwLCBpbiBf
X2Jvb3RzdHJhcAogIHNlbGYucnVuKCkKRmlsZTogIi9Vc2Vycy90a2VudC9XZWJLaXQyL1dlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2R1bXBf
cmVuZGVyX3RyZWVfdGhyZWFkLnB5IiwgbGluZSAyNTcsIGluIHJ1bgogIHNlbGYuX3J1bih0ZXN0
X3J1bm5lcj1Ob25lLCByZXN1bHRfc3VtbWFyeT1Ob25lKQpGaWxlOiAiL1VzZXJzL3RrZW50L1dl
YktpdDIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3Bh
Y2thZ2UvZHVtcF9yZW5kZXJfdHJlZV90aHJlYWQucHkiLCBsaW5lIDMyOSwgaW4gX3J1bgogIHJl
c3VsdCA9IHNlbGYuX3J1bl90ZXN0KHRlc3RfaW5mbykKRmlsZTogIi9Vc2Vycy90a2VudC9XZWJL
aXQyL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNr
YWdlL2R1bXBfcmVuZGVyX3RyZWVfdGhyZWFkLnB5IiwgbGluZSA0MzEsIGluIF9ydW5fdGVzdAog
IHNlbGYuX2RyaXZlci5ydW5fdGVzdCh0ZXN0X2luZm8udXJpLCB0ZXN0X2luZm8udGltZW91dCwg
aW1hZ2VfaGFzaCkKRmlsZTogIi9Vc2Vycy90a2VudC9XZWJLaXQyL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5IiwgbGluZSA0MTAsIGluIHJ1
bl90ZXN0CiAgbGluZSA9IHNlbGYuX3NlcnZlcl9wcm9jZXNzLnJlYWRfbGluZSh0aW1lb3V0KQpG
aWxlOiAiL1VzZXJzL3RrZW50L1dlYktpdDIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9zZXJ2ZXJfcHJvY2Vzcy5weSIsIGxpbmUgMTM2LCBpbiByZWFkX2xp
bmUKICByZXR1cm4gc2VsZi5fcmVhZCh0aW1lb3V0LCBzaXplPTApCkZpbGU6ICIvVXNlcnMvdGtl
bnQvV2ViS2l0Mi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L3NlcnZlcl9wcm9jZXNzLnB5IiwgbGluZSAxOTIsIGluIF9yZWFkCiAgc2VsZi5fb3V0cHV0ICs9
IHNlbGYuX3Byb2Muc3Rkb3V0LnJlYWQoKQoKIyBUaHJlYWQ6IC0xMzM0NzI2NjU2CkZpbGU6ICIv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9QeXRob24uZnJhbWV3b3JrL1ZlcnNpb25zLzIuNS9s
aWIvcHl0aG9uMi41L3RocmVhZGluZy5weSIsIGxpbmUgNDYwLCBpbiBfX2Jvb3RzdHJhcAogIHNl
bGYucnVuKCkKRmlsZTogIi9Vc2Vycy90a2VudC9XZWJLaXQyL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2R1bXBfcmVuZGVyX3RyZWVfdGhy
ZWFkLnB5IiwgbGluZSAyNTcsIGluIHJ1bgogIHNlbGYuX3J1bih0ZXN0X3J1bm5lcj1Ob25lLCBy
ZXN1bHRfc3VtbWFyeT1Ob25lKQpGaWxlOiAiL1VzZXJzL3RrZW50L1dlYktpdDIvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvZHVtcF9yZW5k
ZXJfdHJlZV90aHJlYWQucHkiLCBsaW5lIDMyOSwgaW4gX3J1bgogIHJlc3VsdCA9IHNlbGYuX3J1
bl90ZXN0KHRlc3RfaW5mbykKRmlsZTogIi9Vc2Vycy90a2VudC9XZWJLaXQyL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2R1bXBfcmVuZGVy
X3RyZWVfdGhyZWFkLnB5IiwgbGluZSA0MzEsIGluIF9ydW5fdGVzdAogIHNlbGYuX2RyaXZlci5y
dW5fdGVzdCh0ZXN0X2luZm8udXJpLCB0ZXN0X2luZm8udGltZW91dCwgaW1hZ2VfaGFzaCkKRmls
ZTogIi9Vc2Vycy90a2VudC9XZWJLaXQyL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5IiwgbGluZSA0MTAsIGluIHJ1bl90ZXN0CiAgbGluZSA9
IHNlbGYuX3NlcnZlcl9wcm9jZXNzLnJlYWRfbGluZSh0aW1lb3V0KQpGaWxlOiAiL1VzZXJzL3Rr
ZW50L1dlYktpdDIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9zZXJ2ZXJfcHJvY2Vzcy5weSIsIGxpbmUgMTM2LCBpbiByZWFkX2xpbmUKICByZXR1cm4gc2Vs
Zi5fcmVhZCh0aW1lb3V0LCBzaXplPTApCkZpbGU6ICIvVXNlcnMvdGtlbnQvV2ViS2l0Mi9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3NlcnZlcl9wcm9jZXNz
LnB5IiwgbGluZSAxOTIsIGluIF9yZWFkCiAgc2VsZi5fb3V0cHV0ICs9IHNlbGYuX3Byb2Muc3Rk
b3V0LnJlYWQoKQoKIyBUaHJlYWQ6IC0xMzQwMDUxNDU2CkZpbGU6ICIvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9QeXRob24uZnJhbWV3b3JrL1ZlcnNpb25zLzIuNS9saWIvcHl0aG9uMi41L3Ro
cmVhZGluZy5weSIsIGxpbmUgNDYwLCBpbiBfX2Jvb3RzdHJhcAogIHNlbGYucnVuKCkKRmlsZTog
Ii9Vc2Vycy90a2VudC9XZWJLaXQyL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL2xheW91dF9wYWNrYWdlL2R1bXBfcmVuZGVyX3RyZWVfdGhyZWFkLnB5IiwgbGluZSAy
NTcsIGluIHJ1bgogIHNlbGYuX3J1bih0ZXN0X3J1bm5lcj1Ob25lLCByZXN1bHRfc3VtbWFyeT1O
b25lKQpGaWxlOiAiL1VzZXJzL3RrZW50L1dlYktpdDIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvZHVtcF9yZW5kZXJfdHJlZV90aHJlYWQu
cHkiLCBsaW5lIDMyOSwgaW4gX3J1bgogIHJlc3VsdCA9IHNlbGYuX3J1bl90ZXN0KHRlc3RfaW5m
bykKRmlsZTogIi9Vc2Vycy90a2VudC9XZWJLaXQyL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2R1bXBfcmVuZGVyX3RyZWVfdGhyZWFkLnB5
IiwgbGluZSA0MzEsIGluIF9ydW5fdGVzdAogIHNlbGYuX2RyaXZlci5ydW5fdGVzdCh0ZXN0X2lu
Zm8udXJpLCB0ZXN0X2luZm8udGltZW91dCwgaW1hZ2VfaGFzaCkKRmlsZTogIi9Vc2Vycy90a2Vu
dC9XZWJLaXQyL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
d2Via2l0LnB5IiwgbGluZSA0MTAsIGluIHJ1bl90ZXN0CiAgbGluZSA9IHNlbGYuX3NlcnZlcl9w
cm9jZXNzLnJlYWRfbGluZSh0aW1lb3V0KQpGaWxlOiAiL1VzZXJzL3RrZW50L1dlYktpdDIvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9zZXJ2ZXJfcHJvY2Vz
cy5weSIsIGxpbmUgMTM2LCBpbiByZWFkX2xpbmUKICByZXR1cm4gc2VsZi5fcmVhZCh0aW1lb3V0
LCBzaXplPTApCkZpbGU6ICIvVXNlcnMvdGtlbnQvV2ViS2l0Mi9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3NlcnZlcl9wcm9jZXNzLnB5IiwgbGluZSAxOTIs
IGluIF9yZWFkCiAgc2VsZi5fb3V0cHV0ICs9IHNlbGYuX3Byb2Muc3Rkb3V0LnJlYWQoKQoKIyBU
aHJlYWQ6IC0xMzM4NDU0MDE2CkZpbGU6ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9QeXRo
b24uZnJhbWV3b3JrL1ZlcnNpb25zLzIuNS9saWIvcHl0aG9uMi41L3RocmVhZGluZy5weSIsIGxp
bmUgNDYwLCBpbiBfX2Jvb3RzdHJhcAogIHNlbGYucnVuKCkKRmlsZTogIi9Vc2Vycy90a2VudC9X
ZWJLaXQyL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9w
YWNrYWdlL2R1bXBfcmVuZGVyX3RyZWVfdGhyZWFkLnB5IiwgbGluZSAyNTcsIGluIHJ1bgogIHNl
bGYuX3J1bih0ZXN0X3J1bm5lcj1Ob25lLCByZXN1bHRfc3VtbWFyeT1Ob25lKQpGaWxlOiAiL1Vz
ZXJzL3RrZW50L1dlYktpdDIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvbGF5b3V0X3BhY2thZ2UvZHVtcF9yZW5kZXJfdHJlZV90aHJlYWQucHkiLCBsaW5lIDMyOSwg
aW4gX3J1bgogIHJlc3VsdCA9IHNlbGYuX3J1bl90ZXN0KHRlc3RfaW5mbykKRmlsZTogIi9Vc2Vy
cy90a2VudC9XZWJLaXQyL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L2xheW91dF9wYWNrYWdlL2R1bXBfcmVuZGVyX3RyZWVfdGhyZWFkLnB5IiwgbGluZSA0MzEsIGlu
IF9ydW5fdGVzdAogIHNlbGYuX2RyaXZlci5ydW5fdGVzdCh0ZXN0X2luZm8udXJpLCB0ZXN0X2lu
Zm8udGltZW91dCwgaW1hZ2VfaGFzaCkKRmlsZTogIi9Vc2Vycy90a2VudC9XZWJLaXQyL1dlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5IiwgbGlu
ZSA0MTAsIGluIHJ1bl90ZXN0CiAgbGluZSA9IHNlbGYuX3NlcnZlcl9wcm9jZXNzLnJlYWRfbGlu
ZSh0aW1lb3V0KQpGaWxlOiAiL1VzZXJzL3RrZW50L1dlYktpdDIvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9zZXJ2ZXJfcHJvY2Vzcy5weSIsIGxpbmUgMTM2
LCBpbiByZWFkX2xpbmUKICByZXR1cm4gc2VsZi5fcmVhZCh0aW1lb3V0LCBzaXplPTApCkZpbGU6
ICIvVXNlcnMvdGtlbnQvV2ViS2l0Mi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L3NlcnZlcl9wcm9jZXNzLnB5IiwgbGluZSAxOTIsIGluIF9yZWFkCiAgc2Vs
Zi5fb3V0cHV0ICs9IHNlbGYuX3Byb2Muc3Rkb3V0LnJlYWQoKQoKIyBUaHJlYWQ6IC0xMzQwNTgz
OTM2CkZpbGU6ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9QeXRob24uZnJhbWV3b3JrL1Zl
cnNpb25zLzIuNS9saWIvcHl0aG9uMi41L3RocmVhZGluZy5weSIsIGxpbmUgNDYwLCBpbiBfX2Jv
b3RzdHJhcAogIHNlbGYucnVuKCkKRmlsZTogIi9Vc2Vycy90a2VudC9XZWJLaXQyL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2R1bXBfcmVu
ZGVyX3RyZWVfdGhyZWFkLnB5IiwgbGluZSAyNTcsIGluIHJ1bgogIHNlbGYuX3J1bih0ZXN0X3J1
bm5lcj1Ob25lLCByZXN1bHRfc3VtbWFyeT1Ob25lKQpGaWxlOiAiL1VzZXJzL3RrZW50L1dlYktp
dDIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2th
Z2UvZHVtcF9yZW5kZXJfdHJlZV90aHJlYWQucHkiLCBsaW5lIDMyOSwgaW4gX3J1bgogIHJlc3Vs
dCA9IHNlbGYuX3J1bl90ZXN0KHRlc3RfaW5mbykKRmlsZTogIi9Vc2Vycy90a2VudC9XZWJLaXQy
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdl
L2R1bXBfcmVuZGVyX3RyZWVfdGhyZWFkLnB5IiwgbGluZSA0MzEsIGluIF9ydW5fdGVzdAogIHNl
bGYuX2RyaXZlci5ydW5fdGVzdCh0ZXN0X2luZm8udXJpLCB0ZXN0X2luZm8udGltZW91dCwgaW1h
Z2VfaGFzaCkKRmlsZTogIi9Vc2Vycy90a2VudC9XZWJLaXQyL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5IiwgbGluZSA0MTAsIGluIHJ1bl90
ZXN0CiAgbGluZSA9IHNlbGYuX3NlcnZlcl9wcm9jZXNzLnJlYWRfbGluZSh0aW1lb3V0KQpGaWxl
OiAiL1VzZXJzL3RrZW50L1dlYktpdDIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9zZXJ2ZXJfcHJvY2Vzcy5weSIsIGxpbmUgMTM2LCBpbiByZWFkX2xpbmUK
ICByZXR1cm4gc2VsZi5fcmVhZCh0aW1lb3V0LCBzaXplPTApCkZpbGU6ICIvVXNlcnMvdGtlbnQv
V2ViS2l0Mi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Nl
cnZlcl9wcm9jZXNzLnB5IiwgbGluZSAxOTIsIGluIF9yZWFkCiAgc2VsZi5fb3V0cHV0ICs9IHNl
bGYuX3Byb2Muc3Rkb3V0LnJlYWQoKQoKIyBUaHJlYWQ6IC0xMzM2MzI0MDk2CkZpbGU6ICIvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9QeXRob24uZnJhbWV3b3JrL1ZlcnNpb25zLzIuNS9saWIv
cHl0aG9uMi41L3RocmVhZGluZy5weSIsIGxpbmUgNDYwLCBpbiBfX2Jvb3RzdHJhcAogIHNlbGYu
cnVuKCkKRmlsZTogIi9Vc2Vycy90a2VudC9XZWJLaXQyL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2R1bXBfcmVuZGVyX3RyZWVfdGhyZWFk
LnB5IiwgbGluZSAyNTcsIGluIHJ1bgogIHNlbGYuX3J1bih0ZXN0X3J1bm5lcj1Ob25lLCByZXN1
bHRfc3VtbWFyeT1Ob25lKQpGaWxlOiAiL1VzZXJzL3RrZW50L1dlYktpdDIvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvZHVtcF9yZW5kZXJf
dHJlZV90aHJlYWQucHkiLCBsaW5lIDMyOSwgaW4gX3J1bgogIHJlc3VsdCA9IHNlbGYuX3J1bl90
ZXN0KHRlc3RfaW5mbykKRmlsZTogIi9Vc2Vycy90a2VudC9XZWJLaXQyL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2R1bXBfcmVuZGVyX3Ry
ZWVfdGhyZWFkLnB5IiwgbGluZSA0MzEsIGluIF9ydW5fdGVzdAogIHNlbGYuX2RyaXZlci5ydW5f
dGVzdCh0ZXN0X2luZm8udXJpLCB0ZXN0X2luZm8udGltZW91dCwgaW1hZ2VfaGFzaCkKRmlsZTog
Ii9Vc2Vycy90a2VudC9XZWJLaXQyL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvd2Via2l0LnB5IiwgbGluZSA0MTAsIGluIHJ1bl90ZXN0CiAgbGluZSA9IHNl
bGYuX3NlcnZlcl9wcm9jZXNzLnJlYWRfbGluZSh0aW1lb3V0KQpGaWxlOiAiL1VzZXJzL3RrZW50
L1dlYktpdDIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9z
ZXJ2ZXJfcHJvY2Vzcy5weSIsIGxpbmUgMTM2LCBpbiByZWFkX2xpbmUKICByZXR1cm4gc2VsZi5f
cmVhZCh0aW1lb3V0LCBzaXplPTApCkZpbGU6ICIvVXNlcnMvdGtlbnQvV2ViS2l0Mi9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3NlcnZlcl9wcm9jZXNzLnB5
IiwgbGluZSAxOTIsIGluIF9yZWFkCiAgc2VsZi5fb3V0cHV0ICs9IHNlbGYuX3Byb2Muc3Rkb3V0
LnJlYWQoKQoKIyBUaHJlYWQ6IC0xMzQxMTE2NDE2CkZpbGU6ICIvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9QeXRob24uZnJhbWV3b3JrL1ZlcnNpb25zLzIuNS9saWIvcHl0aG9uMi41L3RocmVh
ZGluZy5weSIsIGxpbmUgNDYwLCBpbiBfX2Jvb3RzdHJhcAogIHNlbGYucnVuKCkKRmlsZTogIi9V
c2Vycy90a2VudC9XZWJLaXQyL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL2xheW91dF9wYWNrYWdlL2R1bXBfcmVuZGVyX3RyZWVfdGhyZWFkLnB5IiwgbGluZSAyNTcs
IGluIHJ1bgogIHNlbGYuX3J1bih0ZXN0X3J1bm5lcj1Ob25lLCByZXN1bHRfc3VtbWFyeT1Ob25l
KQpGaWxlOiAiL1VzZXJzL3RrZW50L1dlYktpdDIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvZHVtcF9yZW5kZXJfdHJlZV90aHJlYWQucHki
LCBsaW5lIDMyOSwgaW4gX3J1bgogIHJlc3VsdCA9IHNlbGYuX3J1bl90ZXN0KHRlc3RfaW5mbykK
RmlsZTogIi9Vc2Vycy90a2VudC9XZWJLaXQyL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2R1bXBfcmVuZGVyX3RyZWVfdGhyZWFkLnB5Iiwg
bGluZSA0MzEsIGluIF9ydW5fdGVzdAogIHNlbGYuX2RyaXZlci5ydW5fdGVzdCh0ZXN0X2luZm8u
dXJpLCB0ZXN0X2luZm8udGltZW91dCwgaW1hZ2VfaGFzaCkKRmlsZTogIi9Vc2Vycy90a2VudC9X
ZWJLaXQyL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Vi
a2l0LnB5IiwgbGluZSA0MTAsIGluIHJ1bl90ZXN0CiAgbGluZSA9IHNlbGYuX3NlcnZlcl9wcm9j
ZXNzLnJlYWRfbGluZSh0aW1lb3V0KQpGaWxlOiAiL1VzZXJzL3RrZW50L1dlYktpdDIvV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9zZXJ2ZXJfcHJvY2Vzcy5w
eSIsIGxpbmUgMTM2LCBpbiByZWFkX2xpbmUKICByZXR1cm4gc2VsZi5fcmVhZCh0aW1lb3V0LCBz
aXplPTApCkZpbGU6ICIvVXNlcnMvdGtlbnQvV2ViS2l0Mi9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3NlcnZlcl9wcm9jZXNzLnB5IiwgbGluZSAxOTIsIGlu
IF9yZWFkCiAgc2VsZi5fb3V0cHV0ICs9IHNlbGYuX3Byb2Muc3Rkb3V0LnJlYWQoKQoKIyBUaHJl
YWQ6IC0xMzM4OTg2NDk2CkZpbGU6ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9QeXRob24u
ZnJhbWV3b3JrL1ZlcnNpb25zLzIuNS9saWIvcHl0aG9uMi41L3RocmVhZGluZy5weSIsIGxpbmUg
NDYwLCBpbiBfX2Jvb3RzdHJhcAogIHNlbGYucnVuKCkKRmlsZTogIi9Vc2Vycy90a2VudC9XZWJL
aXQyL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNr
YWdlL2R1bXBfcmVuZGVyX3RyZWVfdGhyZWFkLnB5IiwgbGluZSAyNTcsIGluIHJ1bgogIHNlbGYu
X3J1bih0ZXN0X3J1bm5lcj1Ob25lLCByZXN1bHRfc3VtbWFyeT1Ob25lKQpGaWxlOiAiL1VzZXJz
L3RrZW50L1dlYktpdDIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
bGF5b3V0X3BhY2thZ2UvZHVtcF9yZW5kZXJfdHJlZV90aHJlYWQucHkiLCBsaW5lIDMyOSwgaW4g
X3J1bgogIHJlc3VsdCA9IHNlbGYuX3J1bl90ZXN0KHRlc3RfaW5mbykKRmlsZTogIi9Vc2Vycy90
a2VudC9XZWJLaXQyL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xh
eW91dF9wYWNrYWdlL2R1bXBfcmVuZGVyX3RyZWVfdGhyZWFkLnB5IiwgbGluZSA0MzEsIGluIF9y
dW5fdGVzdAogIHNlbGYuX2RyaXZlci5ydW5fdGVzdCh0ZXN0X2luZm8udXJpLCB0ZXN0X2luZm8u
dGltZW91dCwgaW1hZ2VfaGFzaCkKRmlsZTogIi9Vc2Vycy90a2VudC9XZWJLaXQyL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5IiwgbGluZSA0
MTAsIGluIHJ1bl90ZXN0CiAgbGluZSA9IHNlbGYuX3NlcnZlcl9wcm9jZXNzLnJlYWRfbGluZSh0
aW1lb3V0KQpGaWxlOiAiL1VzZXJzL3RrZW50L1dlYktpdDIvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9zZXJ2ZXJfcHJvY2Vzcy5weSIsIGxpbmUgMTM2LCBp
biByZWFkX2xpbmUKICByZXR1cm4gc2VsZi5fcmVhZCh0aW1lb3V0LCBzaXplPTApCkZpbGU6ICIv
VXNlcnMvdGtlbnQvV2ViS2l0Mi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L3NlcnZlcl9wcm9jZXNzLnB5IiwgbGluZSAxOTIsIGluIF9yZWFkCiAgc2VsZi5f
b3V0cHV0ICs9IHNlbGYuX3Byb2Muc3Rkb3V0LnJlYWQoKQoKCiMgVGhyZWFkOiAtMTMzNjg1NjU3
NgpGaWxlOiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUHl0aG9uLmZyYW1ld29yay9WZXJz
aW9ucy8yLjUvbGliL3B5dGhvbjIuNS90aHJlYWRpbmcucHkiLCBsaW5lIDQ2MCwgaW4gX19ib290
c3RyYXAKICBzZWxmLnJ1bigpCkZpbGU6ICIvVXNlcnMvdGtlbnQvV2ViS2l0Mi9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9kdW1wX3JlbmRl
cl90cmVlX3RocmVhZC5weSIsIGxpbmUgMjU3LCBpbiBydW4KICBzZWxmLl9ydW4odGVzdF9ydW5u
ZXI9Tm9uZSwgcmVzdWx0X3N1bW1hcnk9Tm9uZSkKRmlsZTogIi9Vc2Vycy90a2VudC9XZWJLaXQy
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdl
L2R1bXBfcmVuZGVyX3RyZWVfdGhyZWFkLnB5IiwgbGluZSAzMjksIGluIF9ydW4KICByZXN1bHQg
PSBzZWxmLl9ydW5fdGVzdCh0ZXN0X2luZm8pCkZpbGU6ICIvVXNlcnMvdGtlbnQvV2ViS2l0Mi9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9k
dW1wX3JlbmRlcl90cmVlX3RocmVhZC5weSIsIGxpbmUgNDMxLCBpbiBfcnVuX3Rlc3QKICBzZWxm
Ll9kcml2ZXIucnVuX3Rlc3QodGVzdF9pbmZvLnVyaSwgdGVzdF9pbmZvLnRpbWVvdXQsIGltYWdl
X2hhc2gpCkZpbGU6ICIvVXNlcnMvdGtlbnQvV2ViS2l0Mi9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weSIsIGxpbmUgNDEwLCBpbiBydW5fdGVz
dAogIGxpbmUgPSBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5yZWFkX2xpbmUodGltZW91dCkKRmlsZTog
Ii9Vc2Vycy90a2VudC9XZWJLaXQyL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvc2VydmVyX3Byb2Nlc3MucHkiLCBsaW5lIDEzNiwgaW4gcmVhZF9saW5lCiAg
cmV0dXJuIHNlbGYuX3JlYWQodGltZW91dCwgc2l6ZT0wKQpGaWxlOiAiL1VzZXJzL3RrZW50L1dl
YktpdDIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9zZXJ2
ZXJfcHJvY2Vzcy5weSIsIGxpbmUgMTkyLCBpbiBfcmVhZAogIHNlbGYuX291dHB1dCArPSBzZWxm
Ll9wcm9jLnN0ZG91dC5yZWFkKCkKCiMgVGhyZWFkOiAtMTMzNzkyMTUzNgpGaWxlOiAiL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvUHl0aG9uLmZyYW1ld29yay9WZXJzaW9ucy8yLjUvbGliL3B5
dGhvbjIuNS90aHJlYWRpbmcucHkiLCBsaW5lIDQ2MCwgaW4gX19ib290c3RyYXAKICBzZWxmLnJ1
bigpCkZpbGU6ICIvVXNlcnMvdGtlbnQvV2ViS2l0Mi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9kdW1wX3JlbmRlcl90cmVlX3RocmVhZC5w
eSIsIGxpbmUgMjU3LCBpbiBydW4KICBzZWxmLl9ydW4odGVzdF9ydW5uZXI9Tm9uZSwgcmVzdWx0
X3N1bW1hcnk9Tm9uZSkKRmlsZTogIi9Vc2Vycy90a2VudC9XZWJLaXQyL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2R1bXBfcmVuZGVyX3Ry
ZWVfdGhyZWFkLnB5IiwgbGluZSAzMjksIGluIF9ydW4KICByZXN1bHQgPSBzZWxmLl9ydW5fdGVz
dCh0ZXN0X2luZm8pCkZpbGU6ICIvVXNlcnMvdGtlbnQvV2ViS2l0Mi9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9kdW1wX3JlbmRlcl90cmVl
X3RocmVhZC5weSIsIGxpbmUgNDMxLCBpbiBfcnVuX3Rlc3QKICBzZWxmLl9kcml2ZXIucnVuX3Rl
c3QodGVzdF9pbmZvLnVyaSwgdGVzdF9pbmZvLnRpbWVvdXQsIGltYWdlX2hhc2gpCkZpbGU6ICIv
VXNlcnMvdGtlbnQvV2ViS2l0Mi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L3dlYmtpdC5weSIsIGxpbmUgNDEwLCBpbiBydW5fdGVzdAogIGxpbmUgPSBzZWxm
Ll9zZXJ2ZXJfcHJvY2Vzcy5yZWFkX2xpbmUodGltZW91dCkKRmlsZTogIi9Vc2Vycy90a2VudC9X
ZWJLaXQyL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvc2Vy
dmVyX3Byb2Nlc3MucHkiLCBsaW5lIDEzNiwgaW4gcmVhZF9saW5lCiAgcmV0dXJuIHNlbGYuX3Jl
YWQodGltZW91dCwgc2l6ZT0wKQpGaWxlOiAiL1VzZXJzL3RrZW50L1dlYktpdDIvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9zZXJ2ZXJfcHJvY2Vzcy5weSIs
IGxpbmUgMTkyLCBpbiBfcmVhZAogIHNlbGYuX291dHB1dCArPSBzZWxmLl9wcm9jLnN0ZG91dC5y
ZWFkKCkKCiMgVGhyZWFkOiAtMTM0MTY0ODg5NgpGaWxlOiAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvUHl0aG9uLmZyYW1ld29yay9WZXJzaW9ucy8yLjUvbGliL3B5dGhvbjIuNS90aHJlYWRp
bmcucHkiLCBsaW5lIDQ2MCwgaW4gX19ib290c3RyYXAKICBzZWxmLnJ1bigpCkZpbGU6ICIvVXNl
cnMvdGtlbnQvV2ViS2l0Mi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9sYXlvdXRfcGFja2FnZS9kdW1wX3JlbmRlcl90cmVlX3RocmVhZC5weSIsIGxpbmUgMjU3LCBp
biBydW4KICBzZWxmLl9ydW4odGVzdF9ydW5uZXI9Tm9uZSwgcmVzdWx0X3N1bW1hcnk9Tm9uZSkK
RmlsZTogIi9Vc2Vycy90a2VudC9XZWJLaXQyL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2R1bXBfcmVuZGVyX3RyZWVfdGhyZWFkLnB5Iiwg
bGluZSAzMjksIGluIF9ydW4KICByZXN1bHQgPSBzZWxmLl9ydW5fdGVzdCh0ZXN0X2luZm8pCkZp
bGU6ICIvVXNlcnMvdGtlbnQvV2ViS2l0Mi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9kdW1wX3JlbmRlcl90cmVlX3RocmVhZC5weSIsIGxp
bmUgNDMxLCBpbiBfcnVuX3Rlc3QKICBzZWxmLl9kcml2ZXIucnVuX3Rlc3QodGVzdF9pbmZvLnVy
aSwgdGVzdF9pbmZvLnRpbWVvdXQsIGltYWdlX2hhc2gpCkZpbGU6ICIvVXNlcnMvdGtlbnQvV2Vi
S2l0Mi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtp
dC5weSIsIGxpbmUgNDEwLCBpbiBydW5fdGVzdAogIGxpbmUgPSBzZWxmLl9zZXJ2ZXJfcHJvY2Vz
cy5yZWFkX2xpbmUodGltZW91dCkKRmlsZTogIi9Vc2Vycy90a2VudC9XZWJLaXQyL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvc2VydmVyX3Byb2Nlc3MucHki
LCBsaW5lIDEzNiwgaW4gcmVhZF9saW5lCiAgcmV0dXJuIHNlbGYuX3JlYWQodGltZW91dCwgc2l6
ZT0wKQpGaWxlOiAiL1VzZXJzL3RrZW50L1dlYktpdDIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcG9ydC9zZXJ2ZXJfcHJvY2Vzcy5weSIsIGxpbmUgMTg5LCBpbiBf
cmVhZAogIGRlYWRsaW5lIC0gbm93KQoKIyBUaHJlYWQ6IC0xNjA2NTU1ODcyCkZpbGU6ICIuL1dl
YktpdFRvb2xzL1NjcmlwdHMvbmV3LXJ1bi13ZWJraXQtdGVzdHMiLCBsaW5lIDM3LCBpbiA8bW9k
dWxlPgogIHN5cy5leGl0KHJ1bl93ZWJraXRfdGVzdHMubWFpbihvcHRpb25zLCBhcmdzKSkKRmls
ZTogIi9Vc2Vycy90a2VudC9XZWJLaXQyL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkiLCBsaW5lIDE2ODEsIGluIG1haW4KICBudW1f
dW5leHBlY3RlZF9yZXN1bHRzID0gdGVzdF9ydW5uZXIucnVuKHJlc3VsdF9zdW1tYXJ5LCBwcmlu
dF9yZXN1bHRzKQpGaWxlOiAiL1VzZXJzL3RrZW50L1dlYktpdDIvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weSIsIGxpbmUgNzMxLCBp
biBydW4KICBzZWxmLl9ydW5fdGVzdHMoc2VsZi5fdGVzdF9maWxlc19saXN0LCByZXN1bHRfc3Vt
bWFyeSkpCkZpbGU6ICIvVXNlcnMvdGtlbnQvV2ViS2l0Mi9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5IiwgbGluZSA2NzAsIGluIF9y
dW5fdGVzdHMKICB0aHJlYWQuam9pbigwLjEpCkZpbGU6ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9QeXRob24uZnJhbWV3b3JrL1ZlcnNpb25zLzIuNS9saWIvcHl0aG9uMi41L3RocmVhZGlu
Zy5weSIsIGxpbmUgNTY5LCBpbiBqb2luCiAgc2VsZi5fX2Jsb2NrLndhaXQoZGVsYXkpCkZpbGU6
ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9QeXRob24uZnJhbWV3b3JrL1ZlcnNpb25zLzIu
NS9saWIvcHl0aG9uMi41L3RocmVhZGluZy5weSIsIGxpbmUgMjMzLCBpbiB3YWl0CiAgX3NsZWVw
KGRlbGF5KQpGaWxlOiAiL1VzZXJzL3RrZW50L1dlYktpdDIvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weSIsIGxpbmUgODksIGluIGR1
bXBzdGFja3MKICBmb3IgZmlsZW5hbWUsIGxpbmVubywgbmFtZSwgbGluZSBpbiB0cmFjZWJhY2su
ZXh0cmFjdF9zdGFjayhzdGFjayk6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>54251</attachid>
            <date>2010-04-25 18:29:46 -0700</date>
            <delta_ts>2010-04-27 01:26:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-37987-20100425182945.patch</filename>
            <type>text/plain</type>
            <size>35034</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA4Njc5ZjMyLi5hMTViMDliIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjMgQEAKKzIwMTAtMDQt
MjUgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtjaHJvbWl1bV0gbmV3LXJ1bi13ZWJraXQtdGVz
dHMgaGFuZ3Mgb24gQ2hyb21pdW0gQm90cyAoT1MgWCBhbmQgTGludXgpCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNzk4NworCisgICAgICAgIFJvbGxl
ZCBvdXQ6CisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzU4MDYyCisg
ICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzU4MDYwCisgICAgICAgIGh0
dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzU4MDU5CisgICAgICAgIGh0dHA6Ly90cmFj
LndlYmtpdC5vcmcvY2hhbmdlc2V0LzU4MDU1CisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5v
cmcvY2hhbmdlc2V0LzU4MDU0CisgICAgICAgIGFuZCBwYXJ0cyBvZjoKKyAgICAgICAgaHR0cDov
L3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvNTgwNTAKKworICAgICAgICBJIGFsc28gd3JvdGUg
c29tZSBuZXcgY29tbWVudHMgYW5kIGEgdGlueSBhbW91bnQgb2YgbmV3CisgICAgICAgIGNvZGUg
dG8gaGVscCBtYWtlIENocm9taXVtRHJpdmVyLnJ1bl90ZXN0IGVhc2llciB0byByZWFkLgorCisg
ICAgICAgIEluIG9yZGVyIHRvIHVuaXQtdGVzdCBteSBuZXcgY29kZSwgSSBoYWQgdG8gY2hhbmdl
IENocm9taXVtRHJpdmVyCisgICAgICAgIHRvIG5vdCBhdXRvbWF0aWNhbGx5IHN0YXJ0IGl0c2Vs
ZiB3aGVuIGNyZWF0ZWQuICBUaGF0IGVuZGVkIHVwCisgICAgICAgIGJlaW5nIGEgbG90IG9mIHBs
dW1iaW5nLCBidXQgaXMgaG9wZWZ1bGx5IGVhc2llciB0byB1bmRlcnN0YW5kIG5vdy4KKworICAg
ICAgICBUaGVyZSBhcmUgbm8gdGVzdHMgZm9yIHRoZSAocmVzdG9yZWQpIHdkaWZmIGNvZGUuICB3
ZGlmZiBkb2VzIG5vdAorICAgICAgICBleGlzdCBvbiBhbGwgc3lzdGVtcywgc28gZm9yIG5vdyB3
ZSB3aWxsIGFzc3VtZSBpdCB3b3JrZWQgc2luY2UKKyAgICAgICAgaXQgaXMganVzdCBvbGQgY29k
ZSBiZWluZyByZXZlcnRlZC4KKworICAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9kcml2ZXJfdGVzdC5weToKKyAgICAgICAgICAtIFVzZSBjcmVhdGVfZHJpdmVyIGluc3Rl
YWQgb2Ygc3RhcnRfZHJpdmVyLCBhbmQgYmUgc3VyZSB0byBjYWxsIC5zdG9wKCkKKyAgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvZHVtcF9yZW5k
ZXJfdHJlZV90aHJlYWQucHk6CisgICAgICAgICAgLSBVc2UgY3JlYXRlX2RyaXZlciBpbnN0ZWFk
IG9mIHN0YXJ0X2RyaXZlcgorICAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L2Jhc2UucHk6CisgICAgICAgICAgLSBBZGRlZCBhIGNvbW1lbnQgdG8gZXhwbGFpbiB0
aGF0IGRpZmZzIGFyZSBiaW5hcnkgZmlsZXMuCisgICAgICAgICAgLSBWYXJpb3VzIHBhdGNoIHJl
dmVydHMgcmVsYXRpbmcgdG8gd2RpZmYKKyAgICAgICAgICAtIEFkZCBEcml2ZXIuX2NvbW1hbmRf
d3JhcHBlciB0byBzaGFyZSBjb2RlIGJldHdlZW4gV2ViS2l0RHJpdmVyIGFuZCBDaHJvbWl1bURy
aXZlci4KKyAgICAgICAgICAtIE1hZGUgX2NvbW1hbmRfd3JhcHBlciB1c2Ugc2hsZXguc3BsaXQg
dG8gZ2V0IHJpZCBvZiB0aGUgRklYTUUuCisgICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvYmFzZV91bml0dGVzdC5weTogQWRkZWQuCisgICAgICAgICAgLSB0ZXN0
IHRoZSBuZXcgX2NvbW1hbmRfd3JhcHBlcgorICAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5OgorICAgICAgICAgLSBVc2UgX2NvbW1hbmRfd3Jh
cHBlciB0byBnZXQgcmlkIG9mIGEgYnVuY2ggb2YgdWdseSBjb2RlLgorICAgICAgICAgLSBNYWtl
IF9faW5pdF9fIHN0b3AgYXV0by1zdGFydGluZy4KKyAgICAgICAgIC0gUmVuYW1lIGNyZWF0ZV9k
cml2ZXIgdG8gc3RhcnRfZHJpdmVyLgorICAgICAgICAgLSBBZGRlZCBfd3JpdGVfY29tbWFuZF9h
bmRfcmVhZF9saW5lIHRvIG1ha2UgaXQgcG9zc2libGUgdG8KKyAgICAgICAgICAgcHV0IGEgRklY
TUUgbmV4dCB0byByZWFkX2xpbmUoKSB3L28gaGF2aW5nIHRvIHB1dCBpdCBpbiB0d28gcGxhY2Vz
LgorICAgICAgICAgLSBNb3ZlZCB0ZXN0X3NoZWxsIGNvbW1hbmQgYnVpbGRpbmcgaW50byBfdGVz
dF9zaGVsbF9jb21tYW5kIGFuZCB0ZXN0ZWQgaXQuCisgICAgICAgICAtIEZpeCBjb21tZW50cyB0
byBzYXkgdGVzdF9zaGVsbCBzaW5jZSBDaHJvbWl1bURyaXZlciBpcyB0ZXN0X3NoZWxsIG9ubHku
CisgICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1f
dW5pdHRlc3QucHk6IEFkZGVkLgorICAgICAgICAgIC0gVGVzdCB0aGUgbmV3IHRlc3Rfc2hlbGxf
Y29tbWFuZCBtZXRob2QuCisgICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvZHJ5cnVuLnB5OgorICAgICAgICAgIC0gUmVuYW1lIGNyZWF0ZV9kcml2ZXIgdG8gc3Rh
cnRfZHJpdmVyLgorICAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L3Rlc3QucHk6CisgICAgICAgICAgLSBSZW5hbWUgY3JlYXRlX2RyaXZlciB0byBzdGFydF9kcml2
ZXIuCisgICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0
LnB5OgorICAgICAgICAgIC0gUmVuYW1lIGNyZWF0ZV9kcml2ZXIgdG8gc3RhcnRfZHJpdmVyLgor
ICAgICAgICAgIC0gVHJlYXQgb3V0cHV0IGFzIGJpbmFyeSBhcnJheXMuCisgICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Rlc3RfdHlwZXMvdGVzdF90eXBlX2Jhc2UucHk6
CisgICAgICAgICAgLSBUcmVhdCBkaWZmIGZpbGVzIGFzIGJpbmFyeS4KKyAgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdGVzdF90eXBlcy90ZXh0X2RpZmYucHk6CisgICAg
ICAgICAgLSBUcmVhdCBkaWZmIGZpbGVzIGFzIGJpbmFyeS4KKwogMjAxMC0wNC0yMCAgUm9iZXJ0
IEhvZ2FuICA8cm9iZXJ0QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24g
SGF1c21hbm4uCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9kcml2ZXJfdGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL2RyaXZlcl90ZXN0LnB5CmluZGV4IDIzMWVkNzAuLjYzM2RmZTggMTAwNjQ0Ci0t
LSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2RyaXZlcl90ZXN0
LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2RyaXZl
cl90ZXN0LnB5CkBAIC00Miw3ICs0Miw4IEBAIGltcG9ydCBwb3J0CiBkZWYgcnVuX3Rlc3RzKHBv
cnQsIG9wdGlvbnMsIHRlc3RzKToKICAgICAjIHxpbWFnZV9wYXRofCBpcyBhIHBhdGggdG8gdGhl
IGltYWdlIGNhcHR1cmUgZnJvbSB0aGUgZHJpdmVyLgogICAgIGltYWdlX3BhdGggPSAnaW1hZ2Vf
cmVzdWx0LnBuZycKLSAgICBkcml2ZXIgPSBwb3J0LnN0YXJ0X2RyaXZlcihpbWFnZV9wYXRoLCBO
b25lKQorICAgIGRyaXZlciA9IHBvcnQuY3JlYXRlX2RyaXZlcihpbWFnZV9wYXRoLCBOb25lKQor
ICAgIGRyaXZlci5zdGFydCgpCiAgICAgZm9yIHQgaW4gdGVzdHM6CiAgICAgICAgIHVyaSA9IHBv
cnQuZmlsZW5hbWVfdG9fdXJpKG9zLnBhdGguam9pbihwb3J0LmxheW91dF90ZXN0c19kaXIoKSwg
dCkpCiAgICAgICAgIHByaW50ICJ1cmk6ICIgKyB1cmkKQEAgLTU4LDYgKzU5LDcgQEAgZGVmIHJ1
bl90ZXN0cyhwb3J0LCBvcHRpb25zLCB0ZXN0cyk6CiAgICAgICAgIHByaW50ICcnLmpvaW4oZXJy
KQogICAgICAgICBwcmludCAnIiIiJwogICAgICAgICBwcmludAorICAgIGRyaXZlci5zdG9wKCkK
IAogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvZHVtcF9yZW5kZXJf
dHJlZV90aHJlYWQucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9sYXlvdXRfcGFja2FnZS9kdW1wX3JlbmRlcl90cmVlX3RocmVhZC5weQppbmRleCA0NjJhMzRi
Li5mODZlMTVlIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9kdW1wX3JlbmRlcl90cmVlX3RocmVhZC5weQorKysgYi9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9k
dW1wX3JlbmRlcl90cmVlX3RocmVhZC5weQpAQCAtMTU1LDcgKzE1NSw4IEBAIGNsYXNzIFNpbmds
ZVRlc3RUaHJlYWQodGhyZWFkaW5nLlRocmVhZCk6CiAKICAgICBkZWYgcnVuKHNlbGYpOgogICAg
ICAgICB0ZXN0X2luZm8gPSBzZWxmLl90ZXN0X2luZm8KLSAgICAgICAgZHJpdmVyID0gc2VsZi5f
cG9ydC5zdGFydF9kcml2ZXIoc2VsZi5faW1hZ2VfcGF0aCwgc2VsZi5fc2hlbGxfYXJncykKKyAg
ICAgICAgZHJpdmVyID0gc2VsZi5fcG9ydC5jcmVhdGVfZHJpdmVyKHNlbGYuX2ltYWdlX3BhdGgs
IHNlbGYuX3NoZWxsX2FyZ3MpCisgICAgICAgIGRyaXZlci5zdGFydCgpCiAgICAgICAgIHN0YXJ0
ID0gdGltZS50aW1lKCkKICAgICAgICAgY3Jhc2gsIHRpbWVvdXQsIGFjdHVhbF9jaGVja3N1bSwg
b3V0cHV0LCBlcnJvciA9IFwKICAgICAgICAgICAgIGRyaXZlci5ydW5fdGVzdCh0ZXN0X2luZm8u
dXJpLnN0cmlwKCksIHRlc3RfaW5mby50aW1lb3V0LApAQCAtNDQ3LDggKzQ0OCw4IEBAIGNsYXNz
IFRlc3RTaGVsbFRocmVhZCh0aHJlYWRpbmcuVGhyZWFkKToKIAogICAgICAgICAiIiIKICAgICAg
ICAgaWYgKG5vdCBzZWxmLl9kcml2ZXIgb3Igc2VsZi5fZHJpdmVyLnBvbGwoKSBpcyBub3QgTm9u
ZSk6Ci0gICAgICAgICAgICBzZWxmLl9kcml2ZXIgPSBzZWxmLl9wb3J0LnN0YXJ0X2RyaXZlcigK
LSAgICAgICAgICAgICAgICBzZWxmLl9pbWFnZV9wYXRoLCBzZWxmLl9zaGVsbF9hcmdzKQorICAg
ICAgICAgICAgc2VsZi5fZHJpdmVyID0gc2VsZi5fcG9ydC5jcmVhdGVfZHJpdmVyKHNlbGYuX2lt
YWdlX3BhdGgsIHNlbGYuX3NoZWxsX2FyZ3MpCisgICAgICAgICAgICBzZWxmLl9kcml2ZXIuc3Rh
cnQoKQogCiAgICAgZGVmIF9raWxsX2R1bXBfcmVuZGVyX3RyZWUoc2VsZik6CiAgICAgICAgICIi
IktpbGwgdGhlIER1bXBSZW5kZXJUcmVlIHByb2Nlc3MgaWYgaXQncyBydW5uaW5nLiIiIgpkaWZm
IC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9i
YXNlLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9i
YXNlLnB5CmluZGV4IGI3YTQ1MjguLmFjN2E1NDUgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQorKysgYi9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkKQEAgLTM0LDYgKzM0
LDcgQEAgaW1wb3J0IGNnaQogaW1wb3J0IGRpZmZsaWIKIGltcG9ydCBlcnJubwogaW1wb3J0IG9z
CitpbXBvcnQgc2hsZXgKIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgc3lzCiBpbXBvcnQgdGlt
ZQpAQCAtNDksMTkgKzUwLDcgQEAgZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2
ZSBpbXBvcnQgRXhlY3V0aXZlLCBTY3JpcHRFcnJvcgogX2xvZyA9IGxvZ3V0aWxzLmdldF9sb2dn
ZXIoX19maWxlX18pCiAKIAotIyBQeXRob24ncyBQb3BlbiBoYXMgYSBidWcgdGhhdCBjYXVzZXMg
YW55IHBpcGVzIG9wZW5lZCB0byBhCi0jIHByb2Nlc3MgdGhhdCBjYW4ndCBiZSBleGVjdXRlZCB0
byBiZSBsZWFrZWQuICBTaW5jZSB0aGlzCi0jIGNvZGUgaXMgc3BlY2lmaWNhbGx5IGRlc2lnbmVk
IHRvIHRvbGVyYXRlIGV4ZWMgZmFpbHVyZXMKLSMgdG8gZ3JhY2VmdWxseSBoYW5kbGUgY2FzZXMg
d2hlcmUgd2RpZmYgaXMgbm90IGluc3RhbGxlZCwKLSMgdGhlIGJ1ZyByZXN1bHRzIGluIGEgbWFz
c2l2ZSBmaWxlIGRlc2NyaXB0b3IgbGVhay4gQXMgYQotIyB3b3JrYXJvdW5kLCBpZiBhbiBleGVj
IGZhaWx1cmUgaXMgZXZlciBleHBlcmllbmNlZCBmb3IKLSMgd2RpZmYsIGFzc3VtZSBpdCdzIG5v
dCBhdmFpbGFibGUuICBUaGlzIHdpbGwgbGVhayBvbmUKLSMgZmlsZSBkZXNjcmlwdG9yIGJ1dCB0
aGF0J3MgYmV0dGVyIHRoYW4gbGVha2luZyBlYWNoIHRpbWUKLSMgd2RpZmYgd291bGQgYmUgcnVu
LgotIwotIyBodHRwOi8vbWFpbC5weXRob24ub3JnL3BpcGVybWFpbC9weXRob24tbGlzdC8KLSMg
ICAgMjAwOC1BdWd1c3QvNTA1NzUzLmh0bWwKLSMgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1
ZTMyMTAKKyMgUHl0aG9uIGJ1ZyB3b3JrYXJvdW5kLiAgU2VlIFBvcnQud2RpZmZfdGV4dCgpIGZv
ciBhbiBleHBsYW5hdGlvbi4KIF93ZGlmZl9hdmFpbGFibGUgPSBUcnVlCiBfcHJldHR5X3BhdGNo
X2F2YWlsYWJsZSA9IFRydWUKIApAQCAtNDI3LDkgKzQxNiwxMCBAQCBjbGFzcyBQb3J0KG9iamVj
dCk6CiAgICAgICAgIHJlc3VsdHNfZmlsZW5hbWUgaW4gYSB1c2VycycgYnJvd3Nlci4iIiIKICAg
ICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcignUG9ydC5zaG93X2h0bWxfcmVzdWx0c19m
aWxlJykKIAotICAgIGRlZiBzdGFydF9kcml2ZXIoc2VsZiwgcG5nX3BhdGgsIG9wdGlvbnMpOgot
ICAgICAgICAiIiJTdGFydHMgYSBuZXcgdGVzdCBEcml2ZXIgYW5kIHJldHVybnMgYSBoYW5kbGUg
dG8gdGhlIG9iamVjdC4iIiIKLSAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcignUG9y
dC5zdGFydF9kcml2ZXInKQorICAgIGRlZiBjcmVhdGVfZHJpdmVyKHNlbGYsIHBuZ19wYXRoLCBv
cHRpb25zKToKKyAgICAgICAgIiIiUmV0dXJuIGEgbmV3bHkgY3JlYXRlZCBiYXNlLkRyaXZlciBz
dWJjbGFzcyBmb3Igc3RhcnRpbmcvc3RvcHBpbmcKKyAgICAgICAgdGhlIHRlc3QgZHJpdmVyLiIi
IgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCdQb3J0LmNyZWF0ZV9kcml2ZXIn
KQogCiAgICAgZGVmIHN0YXJ0X2hlbHBlcihzZWxmKToKICAgICAgICAgIiIiSWYgYSBwb3J0IG5l
ZWRzIHRvIHJlY29uZmlndXJlIGdyYXBoaWNzIHNldHRpbmdzIG9yIGRvIG90aGVyCkBAIC01MzMs
NTAgKzUyMyw2NCBAQCBjbGFzcyBQb3J0KG9iamVjdCk6CiAgICAgICAgIGV4cGVjdGF0aW9ucywg
ZGV0ZXJtaW5pbmcgc2VhcmNoIHBhdGhzLCBhbmQgbG9nZ2luZyBpbmZvcm1hdGlvbi4iIiIKICAg
ICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcignUG9ydC52ZXJzaW9uJykKIAotICAgIF9X
RElGRl9ERUwgPSAnIyNXRElGRl9ERUwjIycKLSAgICBfV0RJRkZfQUREID0gJyMjV0RJRkZfQURE
IyMnCi0gICAgX1dESUZGX0VORCA9ICcjI1dESUZGX0VORCMjJwotCi0gICAgZGVmIF9mb3JtYXRf
d2RpZmZfb3V0cHV0X2FzX2h0bWwoc2VsZiwgd2RpZmYpOgotICAgICAgICB3ZGlmZiA9IGNnaS5l
c2NhcGUod2RpZmYpCi0gICAgICAgIHdkaWZmID0gd2RpZmYucmVwbGFjZShzZWxmLl9XRElGRl9E
RUwsICc8c3BhbiBjbGFzcz1kZWw+JykKLSAgICAgICAgd2RpZmYgPSB3ZGlmZi5yZXBsYWNlKHNl
bGYuX1dESUZGX0FERCwgJzxzcGFuIGNsYXNzPWFkZD4nKQotICAgICAgICB3ZGlmZiA9IHdkaWZm
LnJlcGxhY2Uoc2VsZi5fV0RJRkZfRU5ELCAnPC9zcGFuPicpCi0gICAgICAgIGh0bWwgPSAnPGhl
YWQ+PHN0eWxlPi5kZWwgeyBiYWNrZ3JvdW5kOiAjZmFhOyB9ICcKLSAgICAgICAgaHRtbCArPSAn
LmFkZCB7IGJhY2tncm91bmQ6ICNhZmE7IH08L3N0eWxlPjwvaGVhZD4nCi0gICAgICAgIGh0bWwg
Kz0gIjxwcmU+JXM8L3ByZT4iICUgd2RpZmYKLSAgICAgICAgcmV0dXJuIHJlc3VsdAotCi0gICAg
ZGVmIF93ZGlmZl9jb21tYW5kKHNlbGYsIGFjdHVhbF9maWxlbmFtZSwgZXhwZWN0ZWRfZmlsZW5h
bWUpOgotICAgICAgICBleGVjdXRhYmxlID0gc2VsZi5fcGF0aF90b193ZGlmZigpCi0gICAgICAg
IHJldHVybiBbZXhlY3V0YWJsZSwKLSAgICAgICAgICAgICAgICAiLS1zdGFydC1kZWxldGU9JXMi
ICUgc2VsZi5fV0RJRkZfREVMLAotICAgICAgICAgICAgICAgICItLWVuZC1kZWxldGU9JXMiICUg
c2VsZi5fV0RJRkZfRU5ELAotICAgICAgICAgICAgICAgICItLXN0YXJ0LWluc2VydD0lcyIgJSBz
ZWxmLl9XRElGRl9BREQsCi0gICAgICAgICAgICAgICAgIi0tZW5kLWluc2VydD0lcyIgJSBzZWxm
Ll9XRElGRl9FTkQsCi0gICAgICAgICAgICAgICAgYWN0dWFsX2ZpbGVuYW1lLAotICAgICAgICAg
ICAgICAgIGV4cGVjdGVkX2ZpbGVuYW1lXQotCiAgICAgZGVmIHdkaWZmX3RleHQoc2VsZiwgYWN0
dWFsX2ZpbGVuYW1lLCBleHBlY3RlZF9maWxlbmFtZSk6CiAgICAgICAgICIiIlJldHVybnMgYSBz
dHJpbmcgb2YgSFRNTCBpbmRpY2F0aW5nIHRoZSB3b3JkLWxldmVsIGRpZmYgb2YgdGhlCiAgICAg
ICAgIGNvbnRlbnRzIG9mIHRoZSB0d28gZmlsZW5hbWVzLiBSZXR1cm5zIGFuIGVtcHR5IHN0cmlu
ZyBpZiB3b3JkLWxldmVsCiAgICAgICAgIGRpZmZpbmcgaXNuJ3QgYXZhaWxhYmxlLiIiIgotCisg
ICAgICAgIGV4ZWN1dGFibGUgPSBzZWxmLl9wYXRoX3RvX3dkaWZmKCkKKyAgICAgICAgY21kID0g
W2V4ZWN1dGFibGUsCisgICAgICAgICAgICAgICAnLS1zdGFydC1kZWxldGU9IyNXRElGRl9ERUwj
IycsCisgICAgICAgICAgICAgICAnLS1lbmQtZGVsZXRlPSMjV0RJRkZfRU5EIyMnLAorICAgICAg
ICAgICAgICAgJy0tc3RhcnQtaW5zZXJ0PSMjV0RJRkZfQUREIyMnLAorICAgICAgICAgICAgICAg
Jy0tZW5kLWluc2VydD0jI1dESUZGX0VORCMjJywKKyAgICAgICAgICAgICAgIGFjdHVhbF9maWxl
bmFtZSwKKyAgICAgICAgICAgICAgIGV4cGVjdGVkX2ZpbGVuYW1lXQorICAgICAgICAjIEZJWE1F
OiBXaHkgbm90IGp1c3QgY2hlY2sgb3MuZXhpc3RzKGV4ZWN1dGFibGUpIG9uY2U/CiAgICAgICAg
IGdsb2JhbCBfd2RpZmZfYXZhaWxhYmxlCi0gICAgICAgIGlmIG5vdCBfd2RpZmZfYXZhaWxhYmxl
OgotICAgICAgICAgICAgcmV0dXJuICIiCisgICAgICAgIHJlc3VsdCA9ICcnCiAgICAgICAgIHRy
eToKLSAgICAgICAgICAgIGNtZCA9IHNlbGYuX3dkaWZmX2NvbW1hbmQoYWN0dWFsX2ZpbGVuYW1l
LCBleHBlY3RlZF9maWxlbmFtZSkKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9leGVjdXRpdmUu
cnVuX2NvbW1hbmQoY21kKQorICAgICAgICAgICAgIyBQeXRob24ncyBQb3BlbiBoYXMgYSBidWcg
dGhhdCBjYXVzZXMgYW55IHBpcGVzIG9wZW5lZCB0byBhCisgICAgICAgICAgICAjIHByb2Nlc3Mg
dGhhdCBjYW4ndCBiZSBleGVjdXRlZCB0byBiZSBsZWFrZWQuICBTaW5jZSB0aGlzCisgICAgICAg
ICAgICAjIGNvZGUgaXMgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIHRvIHRvbGVyYXRlIGV4ZWMgZmFp
bHVyZXMKKyAgICAgICAgICAgICMgdG8gZ3JhY2VmdWxseSBoYW5kbGUgY2FzZXMgd2hlcmUgd2Rp
ZmYgaXMgbm90IGluc3RhbGxlZCwKKyAgICAgICAgICAgICMgdGhlIGJ1ZyByZXN1bHRzIGluIGEg
bWFzc2l2ZSBmaWxlIGRlc2NyaXB0b3IgbGVhay4gQXMgYQorICAgICAgICAgICAgIyB3b3JrYXJv
dW5kLCBpZiBhbiBleGVjIGZhaWx1cmUgaXMgZXZlciBleHBlcmllbmNlZCBmb3IKKyAgICAgICAg
ICAgICMgd2RpZmYsIGFzc3VtZSBpdCdzIG5vdCBhdmFpbGFibGUuICBUaGlzIHdpbGwgbGVhayBv
bmUKKyAgICAgICAgICAgICMgZmlsZSBkZXNjcmlwdG9yIGJ1dCB0aGF0J3MgYmV0dGVyIHRoYW4g
bGVha2luZyBlYWNoIHRpbWUKKyAgICAgICAgICAgICMgd2RpZmYgd291bGQgYmUgcnVuLgorICAg
ICAgICAgICAgIworICAgICAgICAgICAgIyBodHRwOi8vbWFpbC5weXRob24ub3JnL3BpcGVybWFp
bC9weXRob24tbGlzdC8KKyAgICAgICAgICAgICMgICAgMjAwOC1BdWd1c3QvNTA1NzUzLmh0bWwK
KyAgICAgICAgICAgICMgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTMyMTAKKyAgICAgICAg
ICAgICMKKyAgICAgICAgICAgICMgSXQgYWxzbyBoYXMgYSB0aHJlYWRpbmcgYnVnLCBzbyB3ZSBk
b24ndCBvdXRwdXQgd2RpZmYgaWYKKyAgICAgICAgICAgICMgdGhlIFBvcGVuIHJhaXNlcyBhIFZh
bHVlRXJyb3IuCisgICAgICAgICAgICAjIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUxMjM2
CisgICAgICAgICAgICBpZiBfd2RpZmZfYXZhaWxhYmxlOgorICAgICAgICAgICAgICAgIHRyeToK
KyAgICAgICAgICAgICAgICAgICAgIyBGSVhNRTogVXNlIEV4ZWN1dGl2ZSgpIGhlcmUuCisgICAg
ICAgICAgICAgICAgICAgIHdkaWZmID0gc3VicHJvY2Vzcy5Qb3BlbihjbWQsCisgICAgICAgICAg
ICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFKS5jb21tdW5pY2F0ZSgpWzBdCisg
ICAgICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3IsIGU6CisgICAgICAgICAgICAgICAgICAg
ICMgV29ya2luZyBhcm91bmQgYSByYWNlIGluIFB5dGhvbiAyLjQncyBpbXBsZW1lbnRhdGlvbgor
ICAgICAgICAgICAgICAgICAgICAjIG9mIFBvcGVuKCkuCisgICAgICAgICAgICAgICAgICAgIHdk
aWZmID0gJycKKyAgICAgICAgICAgICAgICB3ZGlmZiA9IGNnaS5lc2NhcGUod2RpZmYpCisgICAg
ICAgICAgICAgICAgd2RpZmYgPSB3ZGlmZi5yZXBsYWNlKCcjI1dESUZGX0RFTCMjJywgJzxzcGFu
IGNsYXNzPWRlbD4nKQorICAgICAgICAgICAgICAgIHdkaWZmID0gd2RpZmYucmVwbGFjZSgnIyNX
RElGRl9BREQjIycsICc8c3BhbiBjbGFzcz1hZGQ+JykKKyAgICAgICAgICAgICAgICB3ZGlmZiA9
IHdkaWZmLnJlcGxhY2UoJyMjV0RJRkZfRU5EIyMnLCAnPC9zcGFuPicpCisgICAgICAgICAgICAg
ICAgcmVzdWx0ID0gJzxoZWFkPjxzdHlsZT4uZGVsIHsgYmFja2dyb3VuZDogI2ZhYTsgfSAnCisg
ICAgICAgICAgICAgICAgcmVzdWx0ICs9ICcuYWRkIHsgYmFja2dyb3VuZDogI2FmYTsgfTwvc3R5
bGU+PC9oZWFkPicKKyAgICAgICAgICAgICAgICByZXN1bHQgKz0gJzxwcmU+JyArIHdkaWZmICsg
JzwvcHJlPicKICAgICAgICAgZXhjZXB0IE9TRXJyb3IsIGU6Ci0gICAgICAgICAgICAjIElmIHRo
ZSBzeXN0ZW0gaXMgbWlzc2luZyB3ZGlmZiBzdG9wIHRyeWluZy4KLSAgICAgICAgICAgIF93ZGlm
Zl9hdmFpbGFibGUgPSBGYWxzZQotICAgICAgICAgICAgcmV0dXJuICcnCi0gICAgICAgIGV4Y2Vw
dCBTY3JpcHRFcnJvciwgZToKLSAgICAgICAgICAgICMgSWYgd2RpZmYgZmFpbGVkIHRvIHJ1biBm
b3Igc29tZSByZWFzb24sIHN0b3AgdHJ5aW5nLgotICAgICAgICAgICAgX3dkaWZmX2F2YWlsYWJs
ZSA9IEZhbHNlCi0gICAgICAgICAgICByZXR1cm4gIiIKLQorICAgICAgICAgICAgaWYgKGUuZXJy
bm8gPT0gZXJybm8uRU5PRU5UIG9yIGUuZXJybm8gPT0gZXJybm8uRUFDQ0VTIG9yCisgICAgICAg
ICAgICAgICAgZS5lcnJubyA9PSBlcnJuby5FQ0hJTEQpOgorICAgICAgICAgICAgICAgIF93ZGlm
Zl9hdmFpbGFibGUgPSBGYWxzZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBy
YWlzZSBlCisgICAgICAgICMgRGlmZnMgYXJlIHRyZWF0ZWQgYXMgYmluYXJ5IGFzIHRoZXkgbWF5
IGluY2x1ZGUgbXVsdGlwbGUgZmlsZXMKKyAgICAgICAgIyB3aXRoIGNvbmZsaWN0aW5nIGVuY29k
aW5ncy4gIFRodXMgd2UgZG8gbm90IGRlY29kZSB0aGUgb3V0cHV0IGhlcmUuCisgICAgICAgIHJl
dHVybiByZXN1bHQKIAogICAgIF9wcmV0dHlfcGF0Y2hfZXJyb3JfaHRtbCA9ICJGYWlsZWQgdG8g
cnVuIFByZXR0eVBhdGNoLCBzZWUgZXJyb3IgY29uc29sZS4iCiAKQEAgLTU4OCw3ICs1OTIsOSBA
QCBjbGFzcyBQb3J0KG9iamVjdCk6CiAgICAgICAgIHByZXR0aWZ5X3BhdGggPSBvcy5wYXRoLmpv
aW4ocHJldHR5X3BhdGNoX3BhdGgsICJwcmV0dGlmeS5yYiIpCiAgICAgICAgIGNvbW1hbmQgPSBb
InJ1YnkiLCAiLUkiLCBwcmV0dHlfcGF0Y2hfcGF0aCwgcHJldHRpZnlfcGF0aCwgZGlmZl9wYXRo
XQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fZXhlY3V0aXZlLnJ1bl9j
b21tYW5kKGNvbW1hbmQpCisgICAgICAgICAgICAjIERpZmZzIGFyZSB0cmVhdGVkIGFzIGJpbmFy
eSAod2UgcGFzcyBkZWNvZGVfb3V0cHV0PUZhbHNlKSBhcyB0aGV5CisgICAgICAgICAgICAjIG1h
eSBjb250YWluIG11bHRpcGxlIGZpbGVzIG9mIGNvbmZsaWN0aW5nIGVuY29kaW5ncy4KKyAgICAg
ICAgICAgIHJldHVybiBzZWxmLl9leGVjdXRpdmUucnVuX2NvbW1hbmQoY29tbWFuZCwgZGVjb2Rl
X291dHB1dD1GYWxzZSkKICAgICAgICAgZXhjZXB0IE9TRXJyb3IsIGU6CiAgICAgICAgICAgICAj
IElmIHRoZSBzeXN0ZW0gaXMgbWlzc2luZyBydWJ5IGxvZyB0aGUgZXJyb3IgYW5kIHN0b3AgdHJ5
aW5nLgogICAgICAgICAgICAgX3ByZXR0eV9wYXRjaF9hdmFpbGFibGUgPSBGYWxzZQpAQCAtNzIw
LDYgKzcyNiwyNCBAQCBjbGFzcyBEcml2ZXI6CiAgICAgICAgIHNwZWNpZmllZCBpbiB0aGUgX19p
bml0X18oKSBjYWxsLiIiIgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCdEcml2
ZXIucnVuX3Rlc3QnKQogCisgICAgIyBGSVhNRTogVGhpcyBpcyBzdGF0aWMgc28gd2UgY2FuIHRl
c3QgaXQgdy9vIGNyZWF0aW5nIGEgQmFzZSBpbnN0YW5jZS4KKyAgICBAY2xhc3NtZXRob2QKKyAg
ICBkZWYgX2NvbW1hbmRfd3JhcHBlcihjbHMsIHdyYXBwZXJfb3B0aW9uKToKKyAgICAgICAgIyBI
b29rIGZvciBpbmplY3RpbmcgdmFsZ3JpbmQgb3Igb3RoZXIgcnVudGltZSBpbnN0cnVtZW50YXRp
b24sCisgICAgICAgICMgdXNlZCBieSBlLmcuIHRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kX3Rlc3Rz
LnB5LgorICAgICAgICB3cmFwcGVyID0gW10KKyAgICAgICAgYnJvd3Nlcl93cmFwcGVyID0gb3Mu
ZW52aXJvbi5nZXQoIkJST1dTRVJfV1JBUFBFUiIsIE5vbmUpCisgICAgICAgIGlmIGJyb3dzZXJf
d3JhcHBlcjoKKyAgICAgICAgICAgICMgRklYTUU6IFRoZXJlIHNlZW1zIHRvIGJlIG5vIHJlYXNv
biB0byB1c2UgQlJPV1NFUl9XUkFQUEVSIG92ZXIgLS13cmFwcGVyLgorICAgICAgICAgICAgIyBS
ZW1vdmUgdGhpcyBjb2RlIGFueSB0aW1lIGFmdGVyIHRoZSBkYXRlIGxpc3RlZCBiZWxvdy4KKyAg
ICAgICAgICAgIF9sb2cuZXJyb3IoIkJST1dTRVJfV1JBUFBFUiBpcyBkZXByZWNhdGVkLCBwbGVh
c2UgdXNlIC0td3JhcHBlciBpbnN0ZWFkLiIpCisgICAgICAgICAgICBfbG9nLmVycm9yKCJCUk9X
U0VSX1dSQVBQRVIgd2lsbCBiZSByZW1vdmVkIGFueSB0aW1lIGFmdGVyIEp1bmUgMXN0IDIwMTAg
YW5kIHlvdXIgc2NyaXB0cyB3aWxsIGJyZWFrLiIpCisgICAgICAgICAgICB3cmFwcGVyICs9IFti
cm93c2VyX3dyYXBwZXJdCisKKyAgICAgICAgaWYgd3JhcHBlcl9vcHRpb246CisgICAgICAgICAg
ICB3cmFwcGVyICs9IHNobGV4LnNwbGl0KHdyYXBwZXJfb3B0aW9uKQorICAgICAgICByZXR1cm4g
d3JhcHBlcgorCiAgICAgZGVmIHBvbGwoc2VsZik6CiAgICAgICAgICIiIlJldHVybnMgTm9uZSBp
ZiB0aGUgRHJpdmVyIGlzIHN0aWxsIHJ1bm5pbmcuIFJldHVybnMgdGhlIHJldHVybmNvZGUKICAg
ICAgICAgaWYgaXQgaGFzIGV4aXRlZC4iIiIKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZV91bml0dGVzdC5weSBiL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZV91bml0dGVzdC5weQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZWE5MTY1Ci0tLSAvZGV2L251bGwK
KysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNl
X3VuaXR0ZXN0LnB5CkBAIC0wLDAgKzEsNDggQEAKKyMgQ29weXJpZ2h0IChDKSAyMDEwIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisjIG1ldDoKKyMKKyMgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMg
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
IyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgYmFz
ZQoraW1wb3J0IHVuaXR0ZXN0CisKK2Zyb20gd2Via2l0cHkudGhpcmRwYXJ0eS5tb2NrIGltcG9y
dCBNb2NrCisKKworY2xhc3MgRHJpdmVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBk
ZWYgX2Fzc2VydF93cmFwcGVyKHNlbGYsIHdyYXBwZXJfc3RyaW5nLCBleHBlY3RlZF93cmFwcGVy
KToKKyAgICAgICAgd3JhcHBlciA9IGJhc2UuRHJpdmVyLl9jb21tYW5kX3dyYXBwZXIod3JhcHBl
cl9zdHJpbmcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod3JhcHBlciwgZXhwZWN0ZWRfd3Jh
cHBlcikKKworICAgIGRlZiB0ZXN0X2NvbW1hbmRfd3JhcHBlcihzZWxmKToKKyAgICAgICAgc2Vs
Zi5fYXNzZXJ0X3dyYXBwZXIoTm9uZSwgW10pCisgICAgICAgIHNlbGYuX2Fzc2VydF93cmFwcGVy
KCJ2YWxncmluZCIsIFsidmFsZ3JpbmQiXSkKKworICAgICAgICAjIFZhbGlkYXRlIHRoYXQgc2hs
ZXggd29ya3MgYXMgZXhwZWN0ZWQuCisgICAgICAgIGNvbW1hbmRfd2l0aF9zcGFjZXMgPSAidmFs
Z3JpbmQgLS1zbWMtY2hlY2s9XCJjaGVjayB3aXRoIHNwYWNlcyFcIiAtLWZvbyIKKyAgICAgICAg
ZXhwZWN0ZWRfcGFyc2UgPSBbInZhbGdyaW5kIiwgIi0tc21jLWNoZWNrPWNoZWNrIHdpdGggc3Bh
Y2VzISIsICItLWZvbyJdCisgICAgICAgIHNlbGYuX2Fzc2VydF93cmFwcGVyKGNvbW1hbmRfd2l0
aF9zcGFjZXMsIGV4cGVjdGVkX3BhcnNlKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weSBiL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkKaW5kZXggNTM2ZmIy
ZS4uYmZkNWI4YyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5CkBAIC0xNzMsMTEgKzE3MywxMiBAQCBj
bGFzcyBDaHJvbWl1bVBvcnQoYmFzZS5Qb3J0KToKICAgICBkZWYgc2hvd19yZXN1bHRzX2h0bWxf
ZmlsZShzZWxmLCByZXN1bHRzX2ZpbGVuYW1lKToKICAgICAgICAgdXJpID0gc2VsZi5maWxlbmFt
ZV90b191cmkocmVzdWx0c19maWxlbmFtZSkKICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy51c2Vf
ZHJ0OgorICAgICAgICAgICAgIyBGSVhNRTogVGhpcyBzaG91bGQgdXNlIFVzZXIub3Blbl91cmwK
ICAgICAgICAgICAgIHdlYmJyb3dzZXIub3Blbih1cmksIG5ldz0xKQogICAgICAgICBlbHNlOgog
ICAgICAgICAgICAgc3VicHJvY2Vzcy5Qb3Blbihbc2VsZi5fcGF0aF90b19kcml2ZXIoKSwgdXJp
XSkKIAotICAgIGRlZiBzdGFydF9kcml2ZXIoc2VsZiwgaW1hZ2VfcGF0aCwgb3B0aW9ucyk6Cisg
ICAgZGVmIGNyZWF0ZV9kcml2ZXIoc2VsZiwgaW1hZ2VfcGF0aCwgb3B0aW9ucyk6CiAgICAgICAg
ICIiIlN0YXJ0cyBhIG5ldyBEcml2ZXIgYW5kIHJldHVybnMgYSBoYW5kbGUgdG8gaXQuIiIiCiAg
ICAgICAgIGlmIHNlbGYuX29wdGlvbnMudXNlX2RydDoKICAgICAgICAgICAgIHJldHVybiB3ZWJr
aXQuV2ViS2l0RHJpdmVyKHNlbGYsIGltYWdlX3BhdGgsIG9wdGlvbnMpCkBAIC0yNzQsMjUgKzI3
NSwyMSBAQCBjbGFzcyBDaHJvbWl1bURyaXZlcihiYXNlLkRyaXZlcik6CiAKICAgICBkZWYgX19p
bml0X18oc2VsZiwgcG9ydCwgaW1hZ2VfcGF0aCwgb3B0aW9ucyk6CiAgICAgICAgIHNlbGYuX3Bv
cnQgPSBwb3J0Ci0gICAgICAgIHNlbGYuX29wdGlvbnMgPSBvcHRpb25zCiAgICAgICAgIHNlbGYu
X2NvbmZpZ3VyYXRpb24gPSBwb3J0Ll9vcHRpb25zLmNvbmZpZ3VyYXRpb24KKyAgICAgICAgIyBG
SVhNRTogX29wdGlvbnMgaXMgdmVyeSBjb25mdXNpbmcsIGJlY2F1c2UgaXQncyBub3QgYW4gT3B0
aW9ucygpIGVsZW1lbnQuCisgICAgICAgICMgRklYTUU6IFRoZXNlIGRvbid0IG5lZWQgdG8gYmUg
cGFzc2VkIGludG8gdGhlIGNvbnN0cnVjdG9yLCBidXQgY291bGQgcmF0aGVyCisgICAgICAgICMg
YmUgcGFzc2VkIGludG8gLnN0YXJ0KCkKKyAgICAgICAgc2VsZi5fb3B0aW9ucyA9IG9wdGlvbnMK
ICAgICAgICAgc2VsZi5faW1hZ2VfcGF0aCA9IGltYWdlX3BhdGgKIAorICAgIGRlZiBzdGFydChz
ZWxmKToKKyAgICAgICAgIyBGSVhNRTogU2hvdWxkIGJlIGFuIGVycm9yIHRvIGNhbGwgdGhpcyBt
ZXRob2QgdHdpY2UuCiAgICAgICAgIGNtZCA9IFtdCi0gICAgICAgICMgSG9vayBmb3IgaW5qZWN0
aW5nIHZhbGdyaW5kIG9yIG90aGVyIHJ1bnRpbWUgaW5zdHJ1bWVudGF0aW9uLAotICAgICAgICAj
IHVzZWQgYnkgZS5nLiB0b29scy92YWxncmluZC92YWxncmluZF90ZXN0cy5weS4KLSAgICAgICAg
d3JhcHBlciA9IG9zLmVudmlyb24uZ2V0KCJCUk9XU0VSX1dSQVBQRVIiLCBOb25lKQotICAgICAg
ICBpZiB3cmFwcGVyICE9IE5vbmU6Ci0gICAgICAgICAgICBjbWQgKz0gW3dyYXBwZXJdCi0gICAg
ICAgIGlmIHNlbGYuX3BvcnQuX29wdGlvbnMud3JhcHBlcjoKLSAgICAgICAgICAgICMgVGhpcyBz
cGxpdCgpIGlzbid0IHJlYWxseSB3aGF0IHdlIHdhbnQgLS0gaXQgaW5jb3JyZWN0bHkgd2lsbAot
ICAgICAgICAgICAgIyBzcGxpdCBxdW90ZWQgc3RyaW5ncyB3aXRoaW4gdGhlIHdyYXBwZXIgYXJn
dW1lbnQgLS0gYnV0IGluCi0gICAgICAgICAgICAjIHByYWN0aWNlIGl0IHNob3VsZG4ndCBjb21l
IHVwIGFuZCB0aGUgLS1oZWxwIG91dHB1dCB3YXJucwotICAgICAgICAgICAgIyBhYm91dCBpdCBh
bnl3YXkuCi0gICAgICAgICAgICBjbWQgKz0gc2VsZi5fb3B0aW9ucy53cmFwcGVyLnNwbGl0KCkK
LSAgICAgICAgY21kICs9IFtwb3J0Ll9wYXRoX3RvX2RyaXZlcigpLCAnLS1sYXlvdXQtdGVzdHMn
XQotICAgICAgICBpZiBvcHRpb25zOgotICAgICAgICAgICAgY21kICs9IG9wdGlvbnMKKyAgICAg
ICAgIyBGSVhNRTogV2Ugc2hvdWxkIG5vdCBiZSBncmFiYmluZyBhdCBzZWxmLl9wb3J0Ll9vcHRp
b25zLndyYXBwZXIgZGlyZWN0bHkuCisgICAgICAgIGNtZCArPSBzZWxmLl9jb21tYW5kX3dyYXBw
ZXIoc2VsZi5fcG9ydC5fb3B0aW9ucy53cmFwcGVyKQorICAgICAgICBjbWQgKz0gW3NlbGYuX3Bv
cnQuX3BhdGhfdG9fZHJpdmVyKCksICctLWxheW91dC10ZXN0cyddCisgICAgICAgIGlmIHNlbGYu
X29wdGlvbnM6CisgICAgICAgICAgICBjbWQgKz0gc2VsZi5fb3B0aW9ucwogCiAgICAgICAgICMg
V2UgbmVlZCB0byBwYXNzIGNsb3NlX2Zkcz1UcnVlIHRvIHdvcmsgYXJvdW5kIFB5dGhvbiBidWcg
IzIzMjAKICAgICAgICAgIyAob3RoZXJ3aXNlIHdlIGNhbiBoYW5nIHdoZW4gd2Uga2lsbCBEdW1w
UmVuZGVyVHJlZSB3aGVuIHdlIGFyZSBydW5uaW5nCkBAIC0zMDQsMTIgKzMwMSwzNyBAQCBjbGFz
cyBDaHJvbWl1bURyaXZlcihiYXNlLkRyaXZlcik6CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VfZmRzPWNsb3NlX2ZsYWcpCisKICAgICBk
ZWYgcG9sbChzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuX3Byb2MucG9sbCgpCiAKICAgICBk
ZWYgcmV0dXJuY29kZShzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuX3Byb2MucmV0dXJuY29k
ZQogCisgICAgZGVmIF93cml0ZV9jb21tYW5kX2FuZF9yZWFkX2xpbmUoc2VsZiwgaW5wdXQ9Tm9u
ZSk6CisgICAgICAgICIiIlJldHVybnMgYSB0dXBsZTogKGxpbmUsIGRpZF9jcmFzaCkiIiIKKyAg
ICAgICAgdHJ5OgorICAgICAgICAgICAgaWYgaW5wdXQ6CisgICAgICAgICAgICAgICAgc2VsZi5f
cHJvYy5zdGRpbi53cml0ZShpbnB1dCkKKyAgICAgICAgICAgICMgRHVtcFJlbmRlclRyZWUgdGV4
dCBvdXRwdXQgaXMgYWx3YXlzIFVURi04LiAgSG93ZXZlciBzb21lIHRlc3RzCisgICAgICAgICAg
ICAjIChlLmcuIHdlYmFyY2hpdmUpIG1heSBzcGl0IG91dCBiaW5hcnkgZGF0YSBpbnN0ZWFkIG9m
IHRleHQgc28gd2UKKyAgICAgICAgICAgICMgZG9uJ3QgYm90aGVyIHRvIGRlY29kZSB0aGUgb3V0
cHV0IChmb3IgZWl0aGVyIERSVCBvciB0ZXN0X3NoZWxsKS4KKyAgICAgICAgICAgIGxpbmUgPSBz
ZWxmLl9wcm9jLnN0ZG91dC5yZWFkbGluZSgpCisgICAgICAgICAgICAjIFdlIGNvdWxkIGFzc2Vy
dCgpIGhlcmUgdGhhdCBsaW5lIGNvcnJlY3RseSBkZWNvZGVzIGFzIFVURi04LgorICAgICAgICAg
ICAgcmV0dXJuIChsaW5lLCBGYWxzZSkKKyAgICAgICAgZXhjZXB0IElPRXJyb3IsIGU6CisgICAg
ICAgICAgICBfbG9nLmVycm9yKCJJT0Vycm9yIGNvbW11bmljYXRpbmcgdy8gdGVzdF9zaGVsbDog
IiArIHN0cihlKSkKKyAgICAgICAgICAgIHJldHVybiAoTm9uZSwgVHJ1ZSkKKworICAgIGRlZiBf
dGVzdF9zaGVsbF9jb21tYW5kKHNlbGYsIHVyaSwgdGltZW91dG1zLCBjaGVja3N1bSk6CisgICAg
ICAgIGNtZCA9IHVyaQorICAgICAgICBpZiB0aW1lb3V0bXM6CisgICAgICAgICAgICBjbWQgKz0g
JyAnICsgc3RyKHRpbWVvdXRtcykKKyAgICAgICAgaWYgY2hlY2tzdW06CisgICAgICAgICAgICBj
bWQgKz0gJyAnICsgY2hlY2tzdW0KKyAgICAgICAgY21kICs9ICJcbiIKKyAgICAgICAgcmV0dXJu
IGNtZAorCiAgICAgZGVmIHJ1bl90ZXN0KHNlbGYsIHVyaSwgdGltZW91dG1zLCBjaGVja3N1bSk6
CiAgICAgICAgIG91dHB1dCA9IFtdCiAgICAgICAgIGVycm9yID0gW10KQEAgLTMxOSwyOSArMzQx
LDE2IEBAIGNsYXNzIENocm9taXVtRHJpdmVyKGJhc2UuRHJpdmVyKToKICAgICAgICAgYWN0dWFs
X2NoZWNrc3VtID0gTm9uZQogCiAgICAgICAgIHN0YXJ0X3RpbWUgPSB0aW1lLnRpbWUoKQotICAg
ICAgICBjbWQgPSB1cmkKLSAgICAgICAgaWYgdGltZW91dG1zOgotICAgICAgICAgICAgY21kICs9
ICcgJyArIHN0cih0aW1lb3V0bXMpCi0gICAgICAgIGlmIGNoZWNrc3VtOgotICAgICAgICAgICAg
Y21kICs9ICcgJyArIGNoZWNrc3VtCi0gICAgICAgIGNtZCArPSAiXG4iCiAKLSAgICAgICAgdHJ5
OgotICAgICAgICAgICAgc2VsZi5fcHJvYy5zdGRpbi53cml0ZShjbWQpCi0gICAgICAgICAgICBs
aW5lID0gc2VsZi5fcHJvYy5zdGRvdXQucmVhZGxpbmUoKQotICAgICAgICAgICAgIyBBcyBmYXIg
YXMgSSBjYW4gdGVsbCwgYWxsIG91dHB1dCBmcm9tIHRlc3Rfc2hlbGwKLSAgICAgICAgICAgICMg
aXMgdGV4dCBvdXRwdXQsIHRodXMgd2Uga25vdyBpdCdzIGFsbCB1dGYtOC4KLSAgICAgICAgICAg
IGxpbmUgPSBsaW5lLmRlY29kZSgidXRmLTgiKQotICAgICAgICBleGNlcHQgSU9FcnJvciwgZToK
LSAgICAgICAgICAgIF9sb2cuZXJyb3IoIklPRXJyb3IgY29tbXVuaWNhdGluZyB3LyB0ZXN0X3No
ZWxsOiAiICsgc3RyKGUpKQotICAgICAgICAgICAgY3Jhc2ggPSBUcnVlCisgICAgICAgIGNtZCA9
IHNlbGYuX3Rlc3Rfc2hlbGxfY29tbWFuZCh1cmksIHRpbWVvdXRtcywgY2hlY2tzdW0pCisgICAg
ICAgIChsaW5lLCBjcmFzaCkgPSBzZWxmLl93cml0ZV9jb21tYW5kX2FuZF9yZWFkX2xpbmUoaW5w
dXQ9Y21kKQogCiAgICAgICAgIHdoaWxlIG5vdCBjcmFzaCBhbmQgbGluZS5yc3RyaXAoKSAhPSAi
I0VPRiI6CiAgICAgICAgICAgICAjIE1ha2Ugc3VyZSB3ZSBoYXZlbid0IGNyYXNoZWQuCiAgICAg
ICAgICAgICBpZiBsaW5lID09ICcnIGFuZCBzZWxmLnBvbGwoKSBpcyBub3QgTm9uZToKICAgICAg
ICAgICAgICAgICAjIFRoaXMgaXMgaGV4IGNvZGUgMHhjMDAwMDAxZCwgd2hpY2ggaXMgdXNlZCBm
b3IgYWJydXB0CiAgICAgICAgICAgICAgICAgIyB0ZXJtaW5hdGlvbi4gVGhpcyBoYXBwZW5zIGlm
IHdlIGhpdCBjdHJsK2MgZnJvbSB0aGUgcHJvbXB0Ci0gICAgICAgICAgICAgICAgIyBhbmQgd2Ug
aGFwcGVuIHRvIGJlIHdhaXRpbmcgb24gdGhlIER1bXBSZW5kZXJUcmVlLgorICAgICAgICAgICAg
ICAgICMgYW5kIHdlIGhhcHBlbiB0byBiZSB3YWl0aW5nIG9uIHRlc3Rfc2hlbGwuCiAgICAgICAg
ICAgICAgICAgIyBzZG95b246IE5vdCBzdXJlIGZvciB3aGljaCBPUyBhbmQgaW4gd2hhdCBjaXJj
dW1zdGFuY2VzIHRoZQogICAgICAgICAgICAgICAgICMgYWJvdmUgY29kZSBpcyB2YWxpZC4gV2hh
dCB3b3JrcyBmb3IgbWUgdW5kZXIgTGludXggdG8gZGV0ZWN0CiAgICAgICAgICAgICAgICAgIyBj
dHJsK2MgaXMgZm9yIHRoZSBzdWJwcm9jZXNzIHJldHVybmNvZGUgdG8gYmUgbmVnYXRpdmUKQEAg
LTM2OSwxNCArMzc4LDcgQEAgY2xhc3MgQ2hyb21pdW1Ecml2ZXIoYmFzZS5Ecml2ZXIpOgogICAg
ICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBlcnJvci5hcHBlbmQobGluZSkKIAotICAg
ICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGxpbmUgPSBzZWxmLl9wcm9jLnN0ZG91dC5y
ZWFkbGluZSgpCi0gICAgICAgICAgICAgICAgIyBBcyBmYXIgYXMgSSBjYW4gdGVsbCwgYWxsIG91
dHB1dCBmcm9tIHRlc3Rfc2hlbGwKLSAgICAgICAgICAgICAgICAjIGlzIHRleHQgb3V0cHV0LCB0
aHVzIHdlIGtub3cgaXQncyBhbGwgdXRmLTguCi0gICAgICAgICAgICAgICAgbGluZSA9IGxpbmUu
ZGVjb2RlKCJ1dGYtOCIpCi0gICAgICAgICAgICBleGNlcHQgSU9FcnJvciwgZToKLSAgICAgICAg
ICAgICAgICBfbG9nLmVycm9yKCJJT0Vycm9yIHdoaWxlIHJlYWRpbmc6ICIgKyBzdHIoZSkpCi0g
ICAgICAgICAgICAgICAgY3Jhc2ggPSBUcnVlCisgICAgICAgICAgICAobGluZSwgY3Jhc2gpID0g
c2VsZi5fd3JpdGVfY29tbWFuZF9hbmRfcmVhZF9saW5lKGlucHV0PU5vbmUpCiAKICAgICAgICAg
cmV0dXJuIChjcmFzaCwgdGltZW91dCwgYWN0dWFsX2NoZWNrc3VtLCAnJy5qb2luKG91dHB1dCks
CiAgICAgICAgICAgICAgICAgJycuam9pbihlcnJvcikpCkBAIC0zOTAsOCArMzkyLDggQEAgY2xh
c3MgQ2hyb21pdW1Ecml2ZXIoYmFzZS5Ecml2ZXIpOgogICAgICAgICAgICAgaWYgc3lzLnBsYXRm
b3JtIG5vdCBpbiAoJ3dpbjMyJywgJ2N5Z3dpbicpOgogICAgICAgICAgICAgICAgICMgQ2xvc2lu
ZyBzdGRpbi9zdGRvdXQvc3RkZXJyIGhhbmdzIHNvbWV0aW1lcyBvbiBPUyBYLAogICAgICAgICAg
ICAgICAgICMgKHNlZSBfX2luaXRfXygpLCBhYm92ZSksIGFuZCBhbnl3YXkgd2UgZG9uJ3Qgd2Fu
dCB0byBoYW5nCi0gICAgICAgICAgICAgICAgIyB0aGUgaGFybmVzcyBpZiBEdW1wUmVuZGVyVHJl
ZSBpcyBidWdneSwgc28gd2Ugd2FpdCBhIGNvdXBsZQotICAgICAgICAgICAgICAgICMgc2Vjb25k
cyB0byBnaXZlIER1bXBSZW5kZXJUcmVlIGEgY2hhbmNlIHRvIGNsZWFuIHVwLCBidXQgdGhlbgor
ICAgICAgICAgICAgICAgICMgdGhlIGhhcm5lc3MgaWYgdGVzdF9zaGVsbCBpcyBidWdneSwgc28g
d2Ugd2FpdCBhIGNvdXBsZQorICAgICAgICAgICAgICAgICMgc2Vjb25kcyB0byBnaXZlIHRlc3Rf
c2hlbGwgYSBjaGFuY2UgdG8gY2xlYW4gdXAsIGJ1dCB0aGVuCiAgICAgICAgICAgICAgICAgIyBm
b3JjZS1raWxsIHRoZSBwcm9jZXNzIGlmIG5lY2Vzc2FyeS4KICAgICAgICAgICAgICAgICBLSUxM
X1RJTUVPVVQgPSAzLjAKICAgICAgICAgICAgICAgICB0aW1lb3V0ID0gdGltZS50aW1lKCkgKyBL
SUxMX1RJTUVPVVQKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fdW5pdHRlc3QucHkgYi9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3VuaXR0ZXN0LnB5Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxYzM3MTkKLS0tIC9kZXYvbnVsbAorKysgYi9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3Vu
aXR0ZXN0LnB5CkBAIC0wLDAgKzEsNDYgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisjIG1ldDoKKyMKKyMgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgY2hyb21p
dW0KK2ltcG9ydCB1bml0dGVzdAorCitmcm9tIHdlYmtpdHB5LnRoaXJkcGFydHkubW9jayBpbXBv
cnQgTW9jaworCisKK2NsYXNzIENocm9taXVtRHJpdmVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6
CisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIG1vY2tfcG9ydCA9IE1vY2soKQorICAg
ICAgICAjIEZJWE1FOiBUaGUgRHJpdmVyIHNob3VsZCBub3QgYmUgZ3JhYmJpbmcgYXQgcG9ydC5f
b3B0aW9ucyEKKyAgICAgICAgbW9ja19wb3J0Ll9vcHRpb25zID0gTW9jaygpCisgICAgICAgIG1v
Y2tfcG9ydC5fb3B0aW9ucy53cmFwcGVyID0gIiIKKyAgICAgICAgc2VsZi5kcml2ZXIgPSBjaHJv
bWl1bS5DaHJvbWl1bURyaXZlcihtb2NrX3BvcnQsIGltYWdlX3BhdGg9Tm9uZSwgb3B0aW9ucz1O
b25lKQorCisgICAgZGVmIHRlc3RfdGVzdF9zaGVsbF9jb21tYW5kKHNlbGYpOgorICAgICAgICBl
eHBlY3RlZF9jb21tYW5kID0gInRlc3QuaHRtbCAyIGNoZWNrc3VtXG4iCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoc2VsZi5kcml2ZXIuX3Rlc3Rfc2hlbGxfY29tbWFuZCgidGVzdC5odG1sIiwg
MiwgImNoZWNrc3VtIiksIGV4cGVjdGVkX2NvbW1hbmQpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2RyeXJ1bi5weSBiL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZHJ5cnVuLnB5CmluZGV4IDdh
NjcxN2YuLjJjYmIxYjkgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvZHJ5cnVuLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZHJ5cnVuLnB5CkBAIC0xMTYsNyArMTE2LDcgQEAgY2xh
c3MgRHJ5UnVuUG9ydChvYmplY3QpOgogICAgIGRlZiBzdG9wX3dlYnNvY2tldF9zZXJ2ZXIoc2Vs
Zik6CiAgICAgICAgIHBhc3MKIAotICAgIGRlZiBzdGFydF9kcml2ZXIoc2VsZiwgaW1hZ2VfcGF0
aCwgb3B0aW9ucyk6CisgICAgZGVmIGNyZWF0ZV9kcml2ZXIoc2VsZiwgaW1hZ2VfcGF0aCwgb3B0
aW9ucyk6CiAgICAgICAgIHJldHVybiBEcnlydW5Ecml2ZXIoc2VsZiwgaW1hZ2VfcGF0aCwgb3B0
aW9ucykKIAogCkBAIC0xNTMsNiArMTUzLDkgQEAgY2xhc3MgRHJ5cnVuRHJpdmVyKGJhc2UuRHJp
dmVyKToKICAgICAgICAgICAgIGhhc2ggPSBOb25lCiAgICAgICAgIHJldHVybiAoRmFsc2UsIEZh
bHNlLCBoYXNoLCB0ZXh0X291dHB1dCwgTm9uZSkKIAorICAgIGRlZiBzdGFydChzZWxmKToKKyAg
ICAgICAgcGFzcworCiAgICAgZGVmIHN0b3Aoc2VsZik6CiAgICAgICAgIHBhc3MKIApkaWZmIC0t
Z2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0
LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0
LnB5CmluZGV4IGVkZWY0ODUuLjMzOWZhODUgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdC5weQorKysgYi9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3QucHkKQEAgLTgxLDcgKzgxLDcg
QEAgY2xhc3MgVGVzdFBvcnQoYmFzZS5Qb3J0KToKICAgICBkZWYgc2hvd19yZXN1bHRzX2h0bWxf
ZmlsZShzZWxmLCBmaWxlbmFtZSk6CiAgICAgICAgIHBhc3MKIAotICAgIGRlZiBzdGFydF9kcml2
ZXIoc2VsZiwgaW1hZ2VfcGF0aCwgb3B0aW9ucyk6CisgICAgZGVmIGNyZWF0ZV9kcml2ZXIoc2Vs
ZiwgaW1hZ2VfcGF0aCwgb3B0aW9ucyk6CiAgICAgICAgIHJldHVybiBUZXN0RHJpdmVyKGltYWdl
X3BhdGgsIG9wdGlvbnMsIHNlbGYpCiAKICAgICBkZWYgc3RhcnRfaHR0cF9zZXJ2ZXIoc2VsZik6
CkBAIC0xMzIsNSArMTMyLDggQEAgY2xhc3MgVGVzdERyaXZlcihiYXNlLkRyaXZlcik6CiAgICAg
ZGVmIHJ1bl90ZXN0KHNlbGYsIHVyaSwgdGltZW91dG1zLCBpbWFnZV9oYXNoKToKICAgICAgICAg
cmV0dXJuIChGYWxzZSwgRmFsc2UsIGltYWdlX2hhc2gsICcnLCBOb25lKQogCisgICAgZGVmIHN0
YXJ0KHNlbGYpOgorICAgICAgICBwYXNzCisKICAgICBkZWYgc3RvcChzZWxmKToKICAgICAgICAg
cGFzcwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC93ZWJraXQucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L3dlYmtpdC5weQppbmRleCBhYWJjOWExLi5mOGQ3OTIxIDEwMDY0NAotLS0gYS9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weQor
KysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtp
dC5weQpAQCAtMTk0LDcgKzE5NCw3IEBAIGNsYXNzIFdlYktpdFBvcnQoYmFzZS5Qb3J0KToKICAg
ICAgICAgIyBGSVhNRTogV2Ugc2hvdWxkIG9wZW4gcmVzdWx0cyBpbiB0aGUgdmVyc2lvbiBvZiBX
ZWJLaXQgd2UgYnVpbHQuCiAgICAgICAgIHdlYmJyb3dzZXIub3Blbih1cmksIG5ldz0xKQogCi0g
ICAgZGVmIHN0YXJ0X2RyaXZlcihzZWxmLCBpbWFnZV9wYXRoLCBvcHRpb25zKToKKyAgICBkZWYg
Y3JlYXRlX2RyaXZlcihzZWxmLCBpbWFnZV9wYXRoLCBvcHRpb25zKToKICAgICAgICAgcmV0dXJu
IFdlYktpdERyaXZlcihzZWxmLCBpbWFnZV9wYXRoLCBvcHRpb25zKQogCiAgICAgZGVmIHRlc3Rf
YmFzZV9wbGF0Zm9ybV9uYW1lcyhzZWxmKToKQEAgLTM0OSwyNiArMzQ5LDE1IEBAIGNsYXNzIFdl
YktpdERyaXZlcihiYXNlLkRyaXZlcik6CiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgcG9ydCwg
aW1hZ2VfcGF0aCwgZHJpdmVyX29wdGlvbnMpOgogICAgICAgICBzZWxmLl9wb3J0ID0gcG9ydAot
ICAgICAgICBzZWxmLl9kcml2ZXJfb3B0aW9ucyA9IGRyaXZlcl9vcHRpb25zCisgICAgICAgICMg
RklYTUU6IGRyaXZlcl9vcHRpb25zIGlzIG5ldmVyIHVzZWQuCiAgICAgICAgIHNlbGYuX2ltYWdl
X3BhdGggPSBpbWFnZV9wYXRoCiAKKyAgICBkZWYgc3RhcnQoc2VsZik6CiAgICAgICAgIGNvbW1h
bmQgPSBbXQotICAgICAgICAjIEhvb2sgZm9yIGluamVjdGluZyB2YWxncmluZCBvciBvdGhlciBy
dW50aW1lIGluc3RydW1lbnRhdGlvbiwKLSAgICAgICAgIyB1c2VkIGJ5IGUuZy4gdG9vbHMvdmFs
Z3JpbmQvdmFsZ3JpbmRfdGVzdHMucHkuCi0gICAgICAgIHdyYXBwZXIgPSBvcy5lbnZpcm9uLmdl
dCgiQlJPV1NFUl9XUkFQUEVSIiwgTm9uZSkKLSAgICAgICAgaWYgd3JhcHBlciAhPSBOb25lOgot
ICAgICAgICAgICAgY29tbWFuZCArPSBbd3JhcHBlcl0KLSAgICAgICAgaWYgc2VsZi5fcG9ydC5f
b3B0aW9ucy53cmFwcGVyOgotICAgICAgICAgICAgIyBUaGlzIHNwbGl0KCkgaXNuJ3QgcmVhbGx5
IHdoYXQgd2Ugd2FudCAtLSBpdCBpbmNvcnJlY3RseSB3aWxsCi0gICAgICAgICAgICAjIHNwbGl0
IHF1b3RlZCBzdHJpbmdzIHdpdGhpbiB0aGUgd3JhcHBlciBhcmd1bWVudCAtLSBidXQgaW4KLSAg
ICAgICAgICAgICMgcHJhY3RpY2UgaXQgc2hvdWxkbid0IGNvbWUgdXAgYW5kIHRoZSAtLWhlbHAg
b3V0cHV0IHdhcm5zCi0gICAgICAgICAgICAjIGFib3V0IGl0IGFueXdheS4KLSAgICAgICAgICAg
ICMgRklYTUU6IFVzZSBhIHJlYWwgc2hlbGwgcGFyc2VyLgotICAgICAgICAgICAgY29tbWFuZCAr
PSBzZWxmLl9vcHRpb25zLndyYXBwZXIuc3BsaXQoKQotCi0gICAgICAgIGNvbW1hbmQgKz0gW3Bv
cnQuX3BhdGhfdG9fZHJpdmVyKCksICctJ10KLQotICAgICAgICBpZiBpbWFnZV9wYXRoOgorICAg
ICAgICAjIEZJWE1FOiBXZSBzaG91bGQgbm90IGJlIGdyYWJiaW5nIGF0IHNlbGYuX3BvcnQuX29w
dGlvbnMud3JhcHBlciBkaXJlY3RseS4KKyAgICAgICAgY29tbWFuZCArPSBzZWxmLl9jb21tYW5k
X3dyYXBwZXIoc2VsZi5fcG9ydC5fb3B0aW9ucy53cmFwcGVyKQorICAgICAgICBjb21tYW5kICs9
IFtzZWxmLl9wb3J0Ll9wYXRoX3RvX2RyaXZlcigpLCAnLSddCisgICAgICAgIGlmIHNlbGYuX2lt
YWdlX3BhdGg6CiAgICAgICAgICAgICBjb21tYW5kLmFwcGVuZCgnLS1waXhlbC10ZXN0cycpCiAg
ICAgICAgIGVudmlyb25tZW50ID0gb3MuZW52aXJvbgogICAgICAgICBlbnZpcm9ubWVudFsnRFlM
RF9GUkFNRVdPUktfUEFUSCddID0gc2VsZi5fcG9ydC5fYnVpbGRfcGF0aCgpCkBAIC00MDIsOCAr
MzkxLDggQEAgY2xhc3MgV2ViS2l0RHJpdmVyKGJhc2UuRHJpdmVyKToKIAogICAgICAgICBoYXZl
X3NlZW5fY29udGVudF90eXBlID0gRmFsc2UKICAgICAgICAgYWN0dWFsX2ltYWdlX2hhc2ggPSBO
b25lCi0gICAgICAgIG91dHB1dCA9IHUnJwotICAgICAgICBpbWFnZSA9ICcnCisgICAgICAgIG91
dHB1dCA9IHN0cigpICAjIFVzZSBhIGJ5dGUgYXJyYXkgZm9yIG91dHB1dCwgZXZlbiB0aG91Z2gg
aXQgc2hvdWxkIGJlIFVURi04LgorICAgICAgICBpbWFnZSA9IHN0cigpCiAKICAgICAgICAgdGlt
ZW91dCA9IGludCh0aW1lb3V0bXMpIC8gMTAwMC4wCiAgICAgICAgIGRlYWRsaW5lID0gdGltZS50
aW1lKCkgKyB0aW1lb3V0CkBAIC00MTUsOCArNDA0LDExIEBAIGNsYXNzIFdlYktpdERyaXZlcihi
YXNlLkRyaXZlcik6CiAgICAgICAgICAgICAgICAgaGF2ZV9zZWVuX2NvbnRlbnRfdHlwZSk6CiAg
ICAgICAgICAgICAgICAgaGF2ZV9zZWVuX2NvbnRlbnRfdHlwZSA9IFRydWUKICAgICAgICAgICAg
IGVsc2U6Ci0gICAgICAgICAgICAgICAgIyBXZSBleHBlY3QgdGhlIHRleHQgY29udGVudCBmcm9t
IER1bXBSZW5kZXJUcmVlIHRvIGJlIFVURi04Ci0gICAgICAgICAgICAgICAgb3V0cHV0ICs9IGxp
bmUuZGVjb2RlKCJ1dGYtOCIpCisgICAgICAgICAgICAgICAgIyBOb3RlOiBUZXh0IG91dHB1dCBm
cm9tIER1bXBSZW5kZXJUcmVlIGlzIGFsd2F5cyBVVEYtOC4KKyAgICAgICAgICAgICAgICAjIEhv
d2V2ZXIsIHNvbWUgdGVzdHMgKGUuZy4gd2ViYXJjaGl2ZXMpIHNwaXQgb3V0IGJpbmFyeQorICAg
ICAgICAgICAgICAgICMgZGF0YSBpbnN0ZWFkIG9mIHRleHQuICBTbyB0byBtYWtlIHRoaW5ncyBz
aW1wbGUsIHdlCisgICAgICAgICAgICAgICAgIyBhbHdheXMgdHJlYXQgdGhlIG91dHB1dCBhcyBi
aW5hcnkuCisgICAgICAgICAgICAgICAgb3V0cHV0ICs9IGxpbmUKICAgICAgICAgICAgIGxpbmUg
PSBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5yZWFkX2xpbmUodGltZW91dCkKICAgICAgICAgICAgIHRp
bWVvdXQgPSBkZWFkbGluZSAtIHRpbWUudGltZSgpCiAKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Rlc3RfdHlwZXMvdGVzdF90eXBlX2Jhc2Uu
cHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy90ZXN0X3R5cGVz
L3Rlc3RfdHlwZV9iYXNlLnB5CmluZGV4IDRlOGJlMGUuLmNmMGI5ZWMgMTAwNjQ0Ci0tLSBhL1dl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Rlc3RfdHlwZXMvdGVzdF90
eXBlX2Jhc2UucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvdGVzdF90eXBlcy90ZXN0X3R5cGVfYmFzZS5weQpAQCAtMTUzLDcgKzE1Myw3IEBAIGNsYXNz
IFRlc3RUeXBlQmFzZShvYmplY3QpOgogICAgICAgICAiIiIKICAgICAgICAgcmFpc2UgTm90SW1w
bGVtZW50ZWQKIAotICAgIGRlZiBfd3JpdGVfaW50b19maWxlX2F0X3BhdGgoc2VsZiwgZmlsZV9w
YXRoLCBjb250ZW50cywgZW5jb2Rpbmc9InV0Zi04Iik6CisgICAgZGVmIF93cml0ZV9pbnRvX2Zp
bGVfYXRfcGF0aChzZWxmLCBmaWxlX3BhdGgsIGNvbnRlbnRzLCBlbmNvZGluZyk6CiAgICAgICAg
ICIiIlRoaXMgbWV0aG9kIGFzc3VtZXMgdGhhdCBieXRlX2FycmF5IGlzIGFscmVhZHkgZW5jb2Rl
ZAogICAgICAgICBpbnRvIHRoZSByaWdodCBmb3JtYXQuIiIiCiAgICAgICAgIHdpdGggY29kZWNz
Lm9wZW4oZmlsZV9wYXRoLCAidyIsIGVuY29kaW5nPWVuY29kaW5nKSBhcyBmaWxlOgpAQCAtMTkz
LDE2ICsxOTMsMTkgQEAgY2xhc3MgVGVzdFR5cGVCYXNlKG9iamVjdCk6CiAgICAgICAgIGlmIG5v
dCBwcmludF90ZXh0X2RpZmZzOgogICAgICAgICAgICAgcmV0dXJuCiAKKyAgICAgICAgIyBOb3Rl
OiBXZSBwYXNzIGVuY29kaW5nPU5vbmUgZm9yIGFsbCBkaWZmIHdyaXRlcywgYXMgd2UgdHJlYXQg
ZGlmZgorICAgICAgICAjIG91dHB1dCBhcyBiaW5hcnkuICBEaWZmIG91dHB1dCBtYXkgY29udGFp
biBtdWx0aXBsZSBmaWxlcyBpbgorICAgICAgICAjIGNvbmZsaWN0aW5nIGVuY29kaW5ncy4KICAg
ICAgICAgZGlmZiA9IHBvcnQuZGlmZl90ZXh0KGV4cGVjdGVkLCBvdXRwdXQsIGV4cGVjdGVkX2Zp
bGVuYW1lLCBhY3R1YWxfZmlsZW5hbWUpCiAgICAgICAgIGRpZmZfZmlsZW5hbWUgPSBzZWxmLm91
dHB1dF9maWxlbmFtZShmaWxlbmFtZSwgc2VsZi5GSUxFTkFNRV9TVUZGSVhfRElGRiArIGZpbGVf
dHlwZSkKLSAgICAgICAgc2VsZi5fd3JpdGVfaW50b19maWxlX2F0X3BhdGgoZGlmZl9maWxlbmFt
ZSwgZGlmZiwgInV0Zi04IikKKyAgICAgICAgc2VsZi5fd3JpdGVfaW50b19maWxlX2F0X3BhdGgo
ZGlmZl9maWxlbmFtZSwgZGlmZiwgZW5jb2Rpbmc9Tm9uZSkKIAogICAgICAgICAjIFNoZWxsIG91
dCB0byB3ZGlmZiB0byBnZXQgY29sb3JlZCBpbmxpbmUgZGlmZnMuCiAgICAgICAgIHdkaWZmID0g
cG9ydC53ZGlmZl90ZXh0KGV4cGVjdGVkX2ZpbGVuYW1lLCBhY3R1YWxfZmlsZW5hbWUpCiAgICAg
ICAgIHdkaWZmX2ZpbGVuYW1lID0gc2VsZi5vdXRwdXRfZmlsZW5hbWUoZmlsZW5hbWUsIHNlbGYu
RklMRU5BTUVfU1VGRklYX1dESUZGKQotICAgICAgICBzZWxmLl93cml0ZV9pbnRvX2ZpbGVfYXRf
cGF0aCh3ZGlmZl9maWxlbmFtZSwgd2RpZmYsICJ1dGYtOCIpCisgICAgICAgIHNlbGYuX3dyaXRl
X2ludG9fZmlsZV9hdF9wYXRoKHdkaWZmX2ZpbGVuYW1lLCB3ZGlmZiwgZW5jb2Rpbmc9Tm9uZSkK
IAogICAgICAgICAjIFVzZSBXZWJLaXQncyBQcmV0dHlQYXRjaC5yYiB0byBnZXQgYW4gSFRNTCBk
aWZmLgogICAgICAgICBwcmV0dHlfcGF0Y2ggPSBwb3J0LnByZXR0eV9wYXRjaF90ZXh0KGRpZmZf
ZmlsZW5hbWUpCiAgICAgICAgIHByZXR0eV9wYXRjaF9maWxlbmFtZSA9IHNlbGYub3V0cHV0X2Zp
bGVuYW1lKGZpbGVuYW1lLCBzZWxmLkZJTEVOQU1FX1NVRkZJWF9QUkVUVFlfUEFUQ0gpCi0gICAg
ICAgIHNlbGYuX3dyaXRlX2ludG9fZmlsZV9hdF9wYXRoKHByZXR0eV9wYXRjaF9maWxlbmFtZSwg
cHJldHR5X3BhdGNoLCAidXRmLTgiKQorICAgICAgICBzZWxmLl93cml0ZV9pbnRvX2ZpbGVfYXRf
cGF0aChwcmV0dHlfcGF0Y2hfZmlsZW5hbWUsIHByZXR0eV9wYXRjaCwgZW5jb2Rpbmc9Tm9uZSkK
ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Rl
c3RfdHlwZXMvdGV4dF9kaWZmLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvdGVzdF90eXBlcy90ZXh0X2RpZmYucHkKaW5kZXggNDBmMzQ4MS4uYjZhY2U4ZiAx
MDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdGVz
dF90eXBlcy90ZXh0X2RpZmYucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvdGVzdF90eXBlcy90ZXh0X2RpZmYucHkKQEAgLTc1LDggKzc1LDEyIEBAIGNs
YXNzIFRlc3RUZXh0RGlmZih0ZXN0X3R5cGVfYmFzZS5UZXN0VHlwZUJhc2UpOgogICAgIGRlZiBn
ZXRfbm9ybWFsaXplZF90ZXh0KHNlbGYsIGZpbGVuYW1lKToKICAgICAgICAgIyBGSVhNRTogV2Ug
cmVwZWF0IHRoaXMgcGF0dGVybiBvZnRlbiwgd2Ugc2hvdWxkIHNoYXJlIGNvZGUuCiAgICAgICAg
IHRyeToKLSAgICAgICAgICAgIHdpdGggY29kZWNzLm9wZW4oZmlsZW5hbWUsICJyIiwgInV0Zi04
IikgYXMgZmlsZToKKyAgICAgICAgICAgICMgTk9URTogLWV4cGVjdGVkLnR4dCBmaWxlcyBhcmUg
QUxXQVlTIHV0Zi04LiAgSG93ZXZlciwKKyAgICAgICAgICAgICMgd2UgZG8gbm90IGRlY29kZSB0
aGUgb3V0cHV0IGZyb20gRFJULCBzbyB3ZSBzaG91bGQgbm90CisgICAgICAgICAgICAjIGRlY29k
ZSB0aGUgLWV4cGVjdGVkLnR4dCB2YWx1ZXMgZWl0aGVyIHRvIGFsbG93IGNvbXBhcmlzb25zLgor
ICAgICAgICAgICAgd2l0aCBjb2RlY3Mub3BlbihmaWxlbmFtZSwgInIiLCBlbmNvZGluZz1Ob25l
KSBhcyBmaWxlOgogICAgICAgICAgICAgICAgIHRleHQgPSBmaWxlLnJlYWQoKQorICAgICAgICAg
ICAgICAgICMgV2UgY291bGQgYXNzZXJ0IHRoYXQgdGhlIHRleHQgaXMgdmFsaWQgdXRmLTguCiAg
ICAgICAgIGV4Y2VwdCBJT0Vycm9yLCBlOgogICAgICAgICAgICAgaWYgZXJybm8uRU5PRU5UICE9
IGUuZXJybm86CiAgICAgICAgICAgICAgICAgcmFpc2UKQEAgLTkyLDcgKzk2LDEwIEBAIGNsYXNz
IFRlc3RUZXh0RGlmZih0ZXN0X3R5cGVfYmFzZS5UZXN0VHlwZUJhc2UpOgogCiAgICAgICAgICMg
SWYgd2UncmUgZ2VuZXJhdGluZyBhIG5ldyBiYXNlbGluZSwgd2UgcGFzcy4KICAgICAgICAgaWYg
dGVzdF9hcmdzLm5ld19iYXNlbGluZToKLSAgICAgICAgICAgIHNlbGYuX3NhdmVfYmFzZWxpbmVf
ZGF0YShmaWxlbmFtZSwgb3V0cHV0LCAiLnR4dCIsIGVuY29kaW5nPSJ1dGYtOCIpCisgICAgICAg
ICAgICAjIEFsdGhvdWdoIGFsbCB0ZXN0X3NoZWxsL0R1bXBSZW5kZXJUcmVlIG91dHB1dCBzaG91
bGQgYmUgdXRmLTgsCisgICAgICAgICAgICAjIHdlIGRvIG5vdCBldmVyIGRlY29kZSBpdCBpbnNp
ZGUgcnVuLXdlYmtpdC10ZXN0cy4gIEZvciBzb21lIHRlc3RzCisgICAgICAgICAgICAjIER1bXBS
ZW5kZXJUcmVlIG1heSBub3Qgb3V0cHV0IHV0Zi04IHRleHQgKGUuZy4gd2ViYXJjaGl2ZXMpLgor
ICAgICAgICAgICAgc2VsZi5fc2F2ZV9iYXNlbGluZV9kYXRhKGZpbGVuYW1lLCBvdXRwdXQsICIu
dHh0IiwgZW5jb2Rpbmc9Tm9uZSkKICAgICAgICAgICAgIHJldHVybiBmYWlsdXJlcwogCiAgICAg
ICAgICMgTm9ybWFsaXplIHRleHQgdG8gZGlmZgpAQCAtMTA0LDcgKzExMSw3IEBAIGNsYXNzIFRl
c3RUZXh0RGlmZih0ZXN0X3R5cGVfYmFzZS5UZXN0VHlwZUJhc2UpOgogICAgICAgICBpZiBwb3J0
LmNvbXBhcmVfdGV4dChvdXRwdXQsIGV4cGVjdGVkKToKICAgICAgICAgICAgICMgVGV4dCBkb2Vz
bid0IG1hdGNoLCB3cml0ZSBvdXRwdXQgZmlsZXMuCiAgICAgICAgICAgICBzZWxmLndyaXRlX291
dHB1dF9maWxlcyhwb3J0LCBmaWxlbmFtZSwgIi50eHQiLCBvdXRwdXQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZCwgZW5jb2Rpbmc9InV0Zi04IiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkLCBlbmNvZGluZz1Ob25lLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRfdGV4dF9kaWZmcz1UcnVl
KQogCiAgICAgICAgICAgICBpZiBleHBlY3RlZCA9PSAnJzoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>54394</attachid>
            <date>2010-04-27 01:26:08 -0700</date>
            <delta_ts>2010-04-27 01:28:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-37987-20100427012607.patch</filename>
            <type>text/plain</type>
            <size>26291</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCAzMjUyMjVhOGY2YmRjNWQzMjdkNzdlZjlkNDcwYjMxYjA4MDI4NDY2Li40YzU2M2Ey
ZGIxNDY5ZDg0N2QzMWM4ZGNlNTRmMWFjMDMwYzAyYzFiIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAgQEAK
KzIwMTAtMDQtMjcgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtjaHJvbWl1bV0gbmV3LXJ1bi13
ZWJraXQtdGVzdHMgaGFuZ3Mgb24gQ2hyb21pdW0gQm90cyAoT1MgWCBhbmQgTGludXgpCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNzk4NworCisgICAg
ICAgIEFmdGVyIGZ1cnRoZXIgcmVzZWFyY2gsIEkgYmVsaWV2ZSB0aGUgaGFuZyBpcyBjYXVzZWQg
Ynk6CisgICAgICAgIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUyMzIwCisgICAgICAgIEJh
c2ljYWxseSBQb3BlbigpIGlzIG5vdCByZWVudHJhbnQuCisgICAgICAgIFRoZSB3b3JrYXJvdW5k
IGlzIHRvIHBhc3MgY2xvc2VfZmRzPVRydWUgdG8gUG9wZW4oKSBvbiBNYWMvTGludXguCisKKyAg
ICAgICAgSSBmaXhlZCBvdXIgbWFpbiBQb3BlbiB3cmFwcGVyICJFeGVjdXRpdmUucnVuX2NvbW1h
bmQiIHRvIHVzZSBjbG9zZV9mZHM9VHJ1ZQorICAgICAgICB3aGVuIGFwcHJvcHJpYXRlLgorCisg
ICAgICAgIEkgYXVkaXRlZCBhbGwgcGxhY2VzIHdlIGNhbGwgUG9wZW4oKSBhbmQgZWl0aGVyIG1v
dmVkIHRoZW0gdG8gcnVuX2NvbW1hbmQKKyAgICAgICAgb3IgbGVmdCBhIEZJWE1FIHRoYXQgdGhl
eSBhcmUgbm90IHRocmVhZCBzYWZlLiAgQSBmZXcgcGxhY2VzIEkgYWRkZWQgdGhlCisgICAgICAg
IGNsb3NlX2ZkcyB3b3JrYXJvdW5kIHRoZXJlIGFuZCBsZWZ0IGFuIGV4cGxhbml0b3J5IG5vdGUu
CisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY21fdW5pdHRl
c3QucHk6CisgICAgICAgICAtIEFkZGVkIG5vdGUgdGhhdCB0aGlzIFBvcGVuIHVzZSBpcyBub3Qg
dGhyZWFkc2FmZS4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZXhl
Y3V0aXZlLnB5OgorICAgICAgICAgLSBGaXhlZCBvdXIgRXhlY3V0aXZlLnJ1bl8qIHRvIHdvcmth
cm91bmQgcHl0aG9uIGJ1ZyAyMzIwLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9u
L3N5c3RlbS91c2VyLnB5OgorICAgICAgICAgXyBBZGRlZCBub3RlIHRoYXQgdGhpcyBQb3BlbiB1
c2UgaXMgbm90IHRocmVhZHNhZmUuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvbGF5b3V0X3BhY2thZ2UvanNvbl9yZXN1bHRzX2dlbmVyYXRvci5weTogZGl0dG8uCisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9hcGFjaGVfaHR0cF9z
ZXJ2ZXIucHk6IGRpdHRvLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvYmFzZS5weToKKyAgICAgICAgIC0gQ2hhbmdlIHdkaWZmIGJhY2sgdG8gdXNpbmcgcnVu
X2NvbW1hbmQgbm93IHRoYXQgd2UgYmVsaWV2ZSBpdAorICAgICAgICAgICB0byBiZSB0aHJlYWRz
YWZlLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21p
dW0ucHk6CisgICAgICAgICAtIEZpeCB0byB1c2UgRXhlY3V0aXZlIGluIHBsYWNlcy4KKyAgICAg
ICAgIC0gUGFzcyBzZWxmLl9leGVjdXRpdmUgZG93biB0byB0aGUgRHJpdmVyIGZvciBlYXNpZXIg
dW5pdCB0ZXN0aW5nLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvY2hyb21pdW1fd2luLnB5OgorICAgICAgICAgLSBSZS1mYWN0b3IgdG8gdXNlIGEgX2tpbGxf
YWxsIG1ldGhvZC4KKyAgICAgICAgIC0gTWFkZSB0aGUgX2tpbGxfYWxsIG1ldGhvZCB1c2UgcnVu
X2NvbW1hbmQgdG8gYmUgdGhyZWFkc2FmZS4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L2h0dHBfc2VydmVyLnB5OgorICAgICAgICAgLSBBZGQgRklYTUUgYWJv
dXQgdXNpbmcgRXhlY3V0aXZlLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvc2VydmVyX3Byb2Nlc3MucHk6CisgICAgICAgICAtIFVzZSBFeGVjdXRpdmUgdG8g
YmUgdGhyZWFkc2FmZS4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L3dlYmtpdC5weToKKyAgICAgICAgIC0gUGFzcyBzZWxmLl9leGVjdXRpdmUgZG93biB0byB0
aGUgRHJpdmVyLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
d2Vic29ja2V0X3NlcnZlci5weToKKyAgICAgICAgIC0gQWRkIG5vdGUgYWJvdXQgUG9wZW4gbm90
IGJlaW5nIHRocmVhZHNhZmUuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHMucHk6CisgICAgICAgICAtIE1vdmUg
b25lIGNhbGxlciB0byBydW5fY29tbWFuZCBhZGQgbm90ZXMgYWJvdXQgbW92aW5nIG90aGVycy4K
KwogMjAxMC0wNC0yNiAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtX3VuaXR0ZXN0LnB5IGIvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtX3VuaXR0ZXN0LnB5CmluZGV4IGI0
YmU2YmJhODE4ZjFiZGY1NGQzM2NiYWJhNDNlN2EzOTA5N2U4YWEuLmE0ZTZmMTYzZTYyNjI5YTVk
Njg1YzYwNjhiZThiMjUzMzRhNjg5Y2IgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbV91bml0dGVzdC5weQorKysgYi9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY21fdW5pdHRlc3QucHkKQEAgLTU0
LDYgKzU0LDcgQEAgZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQg
RXhlY3V0aXZlLCBydW5fY29tbWFuZCwgU2NyaXB0RXJyb3IKICMgRklYTUU6IFRoaXMgc2hvdWxk
IGJlIHVuaWZpZWQgaW50byBvbmUgb2YgdGhlIGV4ZWN1dGl2ZS5weSBjb21tYW5kcyEKICMgQ2Fs
bGVycyBjb3VsZCB1c2UgcnVuX2FuZF90aHJvd19pZl9mYWlsKGFyZ3MsIGN3ZD1jd2QsIHF1aWV0
PVRydWUpCiBkZWYgcnVuX3NpbGVudChhcmdzLCBjd2Q9Tm9uZSk6CisgICAgIyBOb3RlOiBOb3Qg
dGhyZWFkIHNhZmU6IGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUyMzIwCiAgICAgcHJvY2Vz
cyA9IHN1YnByb2Nlc3MuUG9wZW4oYXJncywgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwgc3RkZXJy
PXN1YnByb2Nlc3MuUElQRSwgY3dkPWN3ZCkKICAgICBwcm9jZXNzLmNvbW11bmljYXRlKCkgIyBp
Z25vcmUgb3V0cHV0CiAgICAgZXhpdF9jb2RlID0gcHJvY2Vzcy53YWl0KCkKZGlmZiAtLWdpdCBh
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9leGVjdXRpdmUucHkg
Yi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZXhlY3V0aXZlLnB5
CmluZGV4IDk5YmNmMjQ3OTIxNTg4ODI2Y2JkNmI3NjkzNWQ1NThiNzQyZDNlYzAuLjVjMWQyOGNh
NmY1YWU0NWNlYmFhZDMzMDAxOGJjM2I2YzNjNmNiMWUgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9leGVjdXRpdmUucHkKKysrIGIvV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2V4ZWN1dGl2ZS5weQpAQCAtODcs
MTEgKzg3LDIwIEBAIGRlZiBydW5fY29tbWFuZCgqYXJncywgKiprd2FyZ3MpOgogCiBjbGFzcyBF
eGVjdXRpdmUob2JqZWN0KToKIAorICAgIGRlZiBfc2hvdWxkX2Nsb3NlX2ZkcyhzZWxmKToKKyAg
ICAgICAgIyBXZSBuZWVkIHRvIHBhc3MgY2xvc2VfZmRzPVRydWUgdG8gd29yayBhcm91bmQgUHl0
aG9uIGJ1ZyAjMjMyMAorICAgICAgICAjIChvdGhlcndpc2Ugd2UgY2FuIGhhbmcgd2hlbiB3ZSBr
aWxsIER1bXBSZW5kZXJUcmVlIHdoZW4gd2UgYXJlIHJ1bm5pbmcKKyAgICAgICAgIyBtdWx0aXBs
ZSB0aHJlYWRzKS4gU2VlIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUyMzIwIC4KKyAgICAg
ICAgIyBOb3RlIHRoYXQgY2xvc2VfZmRzIGlzbid0IHN1cHBvcnRlZCBvbiBXaW5kb3dzLCBidXQg
dGhpcyBidWcgb25seQorICAgICAgICAjIHNob3dzIHVwIG9uIE1hYyBhbmQgTGludXguCisgICAg
ICAgIHJldHVybiBzeXMucGxhdGZvcm0gbm90IGluICgnd2luMzInLCAnY3lnd2luJykKKwogICAg
IGRlZiBfcnVuX2NvbW1hbmRfd2l0aF90ZWVkX291dHB1dChzZWxmLCBhcmdzLCB0ZWVkX291dHB1
dCk6CiAgICAgICAgIGFyZ3MgPSBtYXAodW5pY29kZSwgYXJncykgICMgUG9wZW4gd2lsbCB0aHJv
dyBhbiBleGNlcHRpb24gaWYgYXJncyBhcmUgbm9uLXN0cmluZ3MgKGxpa2UgaW50KCkpCiAgICAg
ICAgIGNoaWxkX3Byb2Nlc3MgPSBzdWJwcm9jZXNzLlBvcGVuKGFyZ3MsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlNU
RE9VVCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPXN1
YnByb2Nlc3MuU1RET1VULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjbG9zZV9mZHM9c2VsZi5fc2hvdWxkX2Nsb3NlX2ZkcygpKQogCiAgICAgICAgICMgVXNlIG91
ciBvd24gY3VzdG9tIHdhaXQgbG9vcCBiZWNhdXNlIFBvcGVuIGlnbm9yZXMgYSB0ZWUnZAogICAg
ICAgICAjIHN0ZGVyci9zdGRvdXQuCkBAIC0xNzcsNiArMTg2LDkgQEAgY2xhc3MgRXhlY3V0aXZl
KG9iamVjdCk6CiAKICAgICBkZWYgX2NvbXB1dGVfc3RkaW4oc2VsZiwgaW5wdXQpOgogICAgICAg
ICAiIiJSZXR1cm5zIChzdGRpbiwgc3RyaW5nX3RvX2NvbW11bmljYXRlKSIiIgorICAgICAgICAj
IEZJWE1FOiBXZSBzaG91bGQgYmUgcmV0dXJuaW5nIC9kZXYvbnVsbCBmb3Igc3RkaW4KKyAgICAg
ICAgIyBvciBjbG9zaW5nIHN0ZGluIGFmdGVyIHByb2Nlc3MgY3JlYXRpb24gdG8gcHJldmVudAor
ICAgICAgICAjIGNoaWxkIHByb2Nlc3NlcyBmcm9tIGdldHRpbmcgaW5wdXQgZnJvbSB0aGUgdXNl
ci4KICAgICAgICAgaWYgbm90IGlucHV0OgogICAgICAgICAgICAgcmV0dXJuIChOb25lLCBOb25l
KQogICAgICAgICBpZiBoYXNhdHRyKGlucHV0LCAicmVhZCIpOiAgIyBDaGVjayBpZiB0aGUgaW5w
dXQgaXMgYSBmaWxlLgpAQCAtMjAwLDYgKzIxMiw3IEBAIGNsYXNzIEV4ZWN1dGl2ZShvYmplY3Qp
OgogICAgICAgICAgICAgICAgICAgICByZXR1cm5fZXhpdF9jb2RlPUZhbHNlLAogICAgICAgICAg
ICAgICAgICAgICByZXR1cm5fc3RkZXJyPVRydWUsCiAgICAgICAgICAgICAgICAgICAgIGRlY29k
ZV9vdXRwdXQ9VHJ1ZSk6CisgICAgICAgICIiIlBvcGVuIHdyYXBwZXIgZm9yIGNvbnZlbmllbmNl
IGFuZCB0byB3b3JrIGFyb3VuZCBweXRob24gYnVncy4iIiIKICAgICAgICAgYXJncyA9IG1hcCh1
bmljb2RlLCBhcmdzKSAgIyBQb3BlbiB3aWxsIHRocm93IGFuIGV4Y2VwdGlvbiBpZiBhcmdzIGFy
ZSBub24tc3RyaW5ncyAobGlrZSBpbnQoKSkKICAgICAgICAgc3RkaW4sIHN0cmluZ190b19jb21t
dW5pY2F0ZSA9IHNlbGYuX2NvbXB1dGVfc3RkaW4oaW5wdXQpCiAgICAgICAgIHN0ZGVyciA9IHN1
YnByb2Nlc3MuU1RET1VUIGlmIHJldHVybl9zdGRlcnIgZWxzZSBOb25lCkBAIC0yMDgsNyArMjIx
LDggQEAgY2xhc3MgRXhlY3V0aXZlKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0ZGluPXN0ZGluLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdGRlcnI9c3RkZXJyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
d2Q9Y3dkKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjd2Q9Y3dkLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZV9mZHM9c2VsZi5fc2hvdWxkX2Ns
b3NlX2ZkcygpKQogICAgICAgICBvdXRwdXQgPSBwcm9jZXNzLmNvbW11bmljYXRlKHN0cmluZ190
b19jb21tdW5pY2F0ZSlbMF0KICAgICAgICAgIyBydW5fY29tbWFuZCBhdXRvbWF0aWNhbGx5IGRl
Y29kZXMgdG8gdW5pY29kZSgpIHVubGVzcyBleHBsaWNpdGx5IHRvbGQgbm90IHRvLgogICAgICAg
ICBpZiBkZWNvZGVfb3V0cHV0OgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vc3lzdGVtL3VzZXIucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9zeXN0ZW0vdXNlci5weQppbmRleCAwNzZmOTY1MzY4MDJiYWRhMmM1ZWQ2ZmM5ODZk
MTkxYTFjYjQyNmU3Li4xMmNjNTI0ODY2MmIxMzM5MDJkYmI0ZTQyZTRkYWIwNDEzZjA1NDE2IDEw
MDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vdXNl
ci5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vdXNl
ci5weQpAQCAtNjcsNiArNjcsNyBAQCBjbGFzcyBVc2VyKG9iamVjdCk6CiAgICAgZGVmIHBhZ2Uo
c2VsZiwgbWVzc2FnZSk6CiAgICAgICAgIHBhZ2VyID0gb3MuZW52aXJvbi5nZXQoIlBBR0VSIikg
b3IgImxlc3MiCiAgICAgICAgIHRyeToKKyAgICAgICAgICAgICMgTm90ZTogTm90IHRocmVhZCBz
YWZlOiBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMjMyMAogICAgICAgICAgICAgY2hpbGRf
cHJvY2VzcyA9IHN1YnByb2Nlc3MuUG9wZW4oW3BhZ2VyXSwgc3RkaW49c3VicHJvY2Vzcy5QSVBF
KQogICAgICAgICAgICAgY2hpbGRfcHJvY2Vzcy5jb21tdW5pY2F0ZShpbnB1dD1tZXNzYWdlKQog
ICAgICAgICBleGNlcHQgSU9FcnJvciwgZToKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2pzb25fcmVzdWx0c19nZW5l
cmF0b3IucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlv
dXRfcGFja2FnZS9qc29uX3Jlc3VsdHNfZ2VuZXJhdG9yLnB5CmluZGV4IGEzMDg2ZDliZjEwNTQx
ODljYWI2NmZkYTNkNDllNmViZmQ0ODI3ZDEuLjA5OTNjYmRkN2IwNDM1ZTRmYTExNjA1NGE3ZjYw
MWJkYjE5OTgzY2YgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2pzb25fcmVzdWx0c19nZW5lcmF0b3IucHkKKysrIGIv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2Uv
anNvbl9yZXN1bHRzX2dlbmVyYXRvci5weQpAQCAtMTI1LDYgKzEyNSw3IEBAIGNsYXNzIEpTT05S
ZXN1bHRzR2VuZXJhdG9yKG9iamVjdCk6CiAgICAgICAgICAgICByZXN1bHRzX2ZpbGUud3JpdGUo
anNvbikKICAgICAgICAgICAgIHJlc3VsdHNfZmlsZS5jbG9zZSgpCiAKKyAgICAjIEZJWE1FOiBD
YWxsZXJzIHNob3VsZCB1c2Ugc2NtLnB5IGluc3RlYWQuCiAgICAgZGVmIF9nZXRfc3ZuX3Jldmlz
aW9uKHNlbGYsIGluX2RpcmVjdG9yeSk6CiAgICAgICAgICIiIlJldHVybnMgdGhlIHN2biByZXZp
c2lvbiBmb3IgdGhlIGdpdmVuIGRpcmVjdG9yeS4KIApAQCAtMTMyLDYgKzEzMyw3IEBAIGNsYXNz
IEpTT05SZXN1bHRzR2VuZXJhdG9yKG9iamVjdCk6CiAgICAgICAgICAgaW5fZGlyZWN0b3J5OiBU
aGUgZGlyZWN0b3J5IHdoZXJlIHN2biBpcyB0byBiZSBydW4uCiAgICAgICAgICIiIgogICAgICAg
ICBpZiBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oaW5fZGlyZWN0b3J5LCAnLnN2bicpKToK
KyAgICAgICAgICAgICMgTm90ZTogTm90IHRocmVhZCBzYWZlOiBodHRwOi8vYnVncy5weXRob24u
b3JnL2lzc3VlMjMyMAogICAgICAgICAgICAgb3V0cHV0ID0gc3VicHJvY2Vzcy5Qb3BlbihbInN2
biIsICJpbmZvIiwgIi0teG1sIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGN3ZD1pbl9kaXJlY3RvcnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNoZWxsPShzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJyksCmRpZmYgLS1naXQgYS9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2FwYWNoZV9odHRwX3NlcnZl
ci5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYXBh
Y2hlX2h0dHBfc2VydmVyLnB5CmluZGV4IDRjNzhmNzc4YjBiZWM4OGMyMjhiOTg1YTlhYTRkZGVi
ZTIxZmRjYTIuLjQ2NjE3ZjY2M2M5M2NjY2EwNzc2YzdhNDA5NzQ3ZjdmMmRlMDc2NjYgMTAwNjQ0
Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYXBh
Y2hlX2h0dHBfc2VydmVyLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvYXBhY2hlX2h0dHBfc2VydmVyLnB5CkBAIC0xOTEsNiArMTkxLDkgQEAg
Y2xhc3MgTGF5b3V0VGVzdEFwYWNoZUh0dHBkKGh0dHBfc2VydmVyX2Jhc2UuSHR0cFNlcnZlckJh
c2UpOgogICAgICAgICAjIFVzZSBzaGVsbD1UcnVlIGJlY2F1c2Ugd2Ugam9pbiB0aGUgYXJndW1l
bnRzIGludG8gYSBzdHJpbmcgZm9yCiAgICAgICAgICMgdGhlIHNha2Ugb2YgV2luZG93L0N5Z3dp
biBhbmQgaXQgbmVlZHMgcXVvdGluZyB0aGF0IGJyZWFrcwogICAgICAgICAjIHNoZWxsPUZhbHNl
LgorICAgICAgICAjIEZJWE1FOiBXZSBzaG91bGQgbm90IG5lZWQgdG8gYmUgam9pbmluZyBzaGVs
bCBhcmd1bWVudHMgaW50byBzdHJpbmdzLgorICAgICAgICAjIHNoZWxsPVRydWUgaXMgYSB0cmFp
bCBvZiB0ZWFycy4KKyAgICAgICAgIyBOb3RlOiBOb3QgdGhyZWFkIHNhZmU6IGh0dHA6Ly9idWdz
LnB5dGhvbi5vcmcvaXNzdWUyMzIwCiAgICAgICAgIHNlbGYuX2h0dHBkX3Byb2MgPSBzdWJwcm9j
ZXNzLlBvcGVuKHNlbGYuX3N0YXJ0X2NtZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSwKICAgICAgICAgICAgIHNoZWxs
PVRydWUpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L2Jhc2UucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L2Jhc2UucHkKaW5kZXggYWM3YTU0NTllZmEyMmUwYjY3ZWE1NDNjMjM5ZTgwYTZm
MjdlMDNhZS4uMWNhNDY1YzMxNmE3OGQwZTQ0YTllMTI2YWIxZDljY2RmYTQwYjAyZSAxMDA2NDQK
LS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNl
LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
YmFzZS5weQpAQCAtNTAsNyArNTAsMTkgQEAgZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4
ZWN1dGl2ZSBpbXBvcnQgRXhlY3V0aXZlLCBTY3JpcHRFcnJvcgogX2xvZyA9IGxvZ3V0aWxzLmdl
dF9sb2dnZXIoX19maWxlX18pCiAKIAotIyBQeXRob24gYnVnIHdvcmthcm91bmQuICBTZWUgUG9y
dC53ZGlmZl90ZXh0KCkgZm9yIGFuIGV4cGxhbmF0aW9uLgorIyBQeXRob24ncyBQb3BlbiBoYXMg
YSBidWcgdGhhdCBjYXVzZXMgYW55IHBpcGVzIG9wZW5lZCB0byBhCisjIHByb2Nlc3MgdGhhdCBj
YW4ndCBiZSBleGVjdXRlZCB0byBiZSBsZWFrZWQuICBTaW5jZSB0aGlzCisjIGNvZGUgaXMgc3Bl
Y2lmaWNhbGx5IGRlc2lnbmVkIHRvIHRvbGVyYXRlIGV4ZWMgZmFpbHVyZXMKKyMgdG8gZ3JhY2Vm
dWxseSBoYW5kbGUgY2FzZXMgd2hlcmUgd2RpZmYgaXMgbm90IGluc3RhbGxlZCwKKyMgdGhlIGJ1
ZyByZXN1bHRzIGluIGEgbWFzc2l2ZSBmaWxlIGRlc2NyaXB0b3IgbGVhay4gQXMgYQorIyB3b3Jr
YXJvdW5kLCBpZiBhbiBleGVjIGZhaWx1cmUgaXMgZXZlciBleHBlcmllbmNlZCBmb3IKKyMgd2Rp
ZmYsIGFzc3VtZSBpdCdzIG5vdCBhdmFpbGFibGUuICBUaGlzIHdpbGwgbGVhayBvbmUKKyMgZmls
ZSBkZXNjcmlwdG9yIGJ1dCB0aGF0J3MgYmV0dGVyIHRoYW4gbGVha2luZyBlYWNoIHRpbWUKKyMg
d2RpZmYgd291bGQgYmUgcnVuLgorIworIyBodHRwOi8vbWFpbC5weXRob24ub3JnL3BpcGVybWFp
bC9weXRob24tbGlzdC8KKyMgICAgMjAwOC1BdWd1c3QvNTA1NzUzLmh0bWwKKyMgaHR0cDovL2J1
Z3MucHl0aG9uLm9yZy9pc3N1ZTMyMTAKIF93ZGlmZl9hdmFpbGFibGUgPSBUcnVlCiBfcHJldHR5
X3BhdGNoX2F2YWlsYWJsZSA9IFRydWUKIApAQCAtNTM1LDM2ICs1NDcsMTEgQEAgY2xhc3MgUG9y
dChvYmplY3QpOgogICAgICAgICAgICAgICAgJy0tZW5kLWluc2VydD0jI1dESUZGX0VORCMjJywK
ICAgICAgICAgICAgICAgIGFjdHVhbF9maWxlbmFtZSwKICAgICAgICAgICAgICAgIGV4cGVjdGVk
X2ZpbGVuYW1lXQotICAgICAgICAjIEZJWE1FOiBXaHkgbm90IGp1c3QgY2hlY2sgb3MuZXhpc3Rz
KGV4ZWN1dGFibGUpIG9uY2U/Ci0gICAgICAgIGdsb2JhbCBfd2RpZmZfYXZhaWxhYmxlCisgICAg
ICAgIGdsb2JhbCBfd2RpZmZfYXZhaWxhYmxlICAjIFNlZSBleHBsYWluYXRpb24gYXQgdG9wIG9m
IGZpbGUuCiAgICAgICAgIHJlc3VsdCA9ICcnCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgICMg
UHl0aG9uJ3MgUG9wZW4gaGFzIGEgYnVnIHRoYXQgY2F1c2VzIGFueSBwaXBlcyBvcGVuZWQgdG8g
YQotICAgICAgICAgICAgIyBwcm9jZXNzIHRoYXQgY2FuJ3QgYmUgZXhlY3V0ZWQgdG8gYmUgbGVh
a2VkLiAgU2luY2UgdGhpcwotICAgICAgICAgICAgIyBjb2RlIGlzIHNwZWNpZmljYWxseSBkZXNp
Z25lZCB0byB0b2xlcmF0ZSBleGVjIGZhaWx1cmVzCi0gICAgICAgICAgICAjIHRvIGdyYWNlZnVs
bHkgaGFuZGxlIGNhc2VzIHdoZXJlIHdkaWZmIGlzIG5vdCBpbnN0YWxsZWQsCi0gICAgICAgICAg
ICAjIHRoZSBidWcgcmVzdWx0cyBpbiBhIG1hc3NpdmUgZmlsZSBkZXNjcmlwdG9yIGxlYWsuIEFz
IGEKLSAgICAgICAgICAgICMgd29ya2Fyb3VuZCwgaWYgYW4gZXhlYyBmYWlsdXJlIGlzIGV2ZXIg
ZXhwZXJpZW5jZWQgZm9yCi0gICAgICAgICAgICAjIHdkaWZmLCBhc3N1bWUgaXQncyBub3QgYXZh
aWxhYmxlLiAgVGhpcyB3aWxsIGxlYWsgb25lCi0gICAgICAgICAgICAjIGZpbGUgZGVzY3JpcHRv
ciBidXQgdGhhdCdzIGJldHRlciB0aGFuIGxlYWtpbmcgZWFjaCB0aW1lCi0gICAgICAgICAgICAj
IHdkaWZmIHdvdWxkIGJlIHJ1bi4KLSAgICAgICAgICAgICMKLSAgICAgICAgICAgICMgaHR0cDov
L21haWwucHl0aG9uLm9yZy9waXBlcm1haWwvcHl0aG9uLWxpc3QvCi0gICAgICAgICAgICAjICAg
IDIwMDgtQXVndXN0LzUwNTc1My5odG1sCi0gICAgICAgICAgICAjIGh0dHA6Ly9idWdzLnB5dGhv
bi5vcmcvaXNzdWUzMjEwCi0gICAgICAgICAgICAjCi0gICAgICAgICAgICAjIEl0IGFsc28gaGFz
IGEgdGhyZWFkaW5nIGJ1Zywgc28gd2UgZG9uJ3Qgb3V0cHV0IHdkaWZmIGlmCi0gICAgICAgICAg
ICAjIHRoZSBQb3BlbiByYWlzZXMgYSBWYWx1ZUVycm9yLgotICAgICAgICAgICAgIyBodHRwOi8v
YnVncy5weXRob24ub3JnL2lzc3VlMTIzNgogICAgICAgICAgICAgaWYgX3dkaWZmX2F2YWlsYWJs
ZToKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgICMgRklYTUU6IFVz
ZSBFeGVjdXRpdmUoKSBoZXJlLgotICAgICAgICAgICAgICAgICAgICB3ZGlmZiA9IHN1YnByb2Nl
c3MuUG9wZW4oY21kLAotICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3Mu
UElQRSkuY29tbXVuaWNhdGUoKVswXQotICAgICAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9y
LCBlOgotICAgICAgICAgICAgICAgICAgICAjIFdvcmtpbmcgYXJvdW5kIGEgcmFjZSBpbiBQeXRo
b24gMi40J3MgaW1wbGVtZW50YXRpb24KLSAgICAgICAgICAgICAgICAgICAgIyBvZiBQb3Blbigp
LgotICAgICAgICAgICAgICAgICAgICB3ZGlmZiA9ICcnCisgICAgICAgICAgICAgICAgd2RpZmYg
PSBzZWxmLl9leGVjdXRpdmUucnVuX2NvbW1hbmQoY21kLCBkZWNvZGVfb3V0cHV0PUZhbHNlKQog
ICAgICAgICAgICAgICAgIHdkaWZmID0gY2dpLmVzY2FwZSh3ZGlmZikKICAgICAgICAgICAgICAg
ICB3ZGlmZiA9IHdkaWZmLnJlcGxhY2UoJyMjV0RJRkZfREVMIyMnLCAnPHNwYW4gY2xhc3M9ZGVs
PicpCiAgICAgICAgICAgICAgICAgd2RpZmYgPSB3ZGlmZi5yZXBsYWNlKCcjI1dESUZGX0FERCMj
JywgJzxzcGFuIGNsYXNzPWFkZD4nKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weSBiL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkKaW5kZXggYmZkNWI4YzA4
MTk4ZTY2NGRkMzY0YmJjYmVkN2E2NGQ1ZDFjZWJhZS4uMTM3YmFmMGJjMWE0OTRlOTU3ZWM1M2Nj
NmFiZmFkYTllNWFlMWE1NCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5CkBAIC00NCw2ICs0NCw4IEBA
IGltcG9ydCB3ZWJicm93c2VyCiBpbXBvcnQgYmFzZQogaW1wb3J0IGh0dHBfc2VydmVyCiAKK2Zy
b20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IEV4ZWN1dGl2ZQorCiAj
IEZJWE1FOiBUbyB1c2UgdGhlIERSVC1iYXNlZCB2ZXJzaW9uIG9mIHRoaXMgZmlsZSwgd2UgbmVl
ZCB0byBiZSBhYmxlIHRvCiAjIHJ1biB0aGUgd2Via2l0IGNvZGUsIHdoaWNoIHVzZXMgc2VydmVy
X3Byb2Nlc3MsIHdoaWNoIHJlcXVpcmVzIFVOSVgtc3R5bGUKICMgbm9uLWJsb2NraW5nIEkvTyB3
aXRoIHNlbGVjdHMoKSwgd2hpY2ggcmVxdWlyZXMgZmNudGwoKSB3aGljaCBkb2Vzbid0IGV4aXN0
CkBAIC04MCw4ICs4Miw4IEBAIGRlZiBjaGVja19maWxlX2V4aXN0cyhwYXRoX3RvX2ZpbGUsIGZp
bGVfZGVzY3JpcHRpb24sIG92ZXJyaWRlX3N0ZXA9Tm9uZSwKIGNsYXNzIENocm9taXVtUG9ydChi
YXNlLlBvcnQpOgogICAgICIiIkFic3RyYWN0IGJhc2UgY2xhc3MgZm9yIENocm9taXVtIGltcGxl
bWVudGF0aW9ucyBvZiB0aGUgUG9ydCBjbGFzcy4iIiIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxm
LCBwb3J0X25hbWU9Tm9uZSwgb3B0aW9ucz1Ob25lKToKLSAgICAgICAgYmFzZS5Qb3J0Ll9faW5p
dF9fKHNlbGYsIHBvcnRfbmFtZSwgb3B0aW9ucykKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcG9y
dF9uYW1lPU5vbmUsIG9wdGlvbnM9Tm9uZSwgKiprd2FyZ3MpOgorICAgICAgICBiYXNlLlBvcnQu
X19pbml0X18oc2VsZiwgcG9ydF9uYW1lLCBvcHRpb25zLCAqKmt3YXJncykKICAgICAgICAgc2Vs
Zi5fY2hyb21pdW1fYmFzZV9kaXIgPSBOb25lCiAKICAgICBkZWYgYmFzZWxpbmVfcGF0aChzZWxm
KToKQEAgLTExOCwxMCArMTIwLDggQEAgY2xhc3MgQ2hyb21pdW1Qb3J0KGJhc2UuUG9ydCk6CiAg
ICAgICAgIHJldHVybiByZXN1bHQKIAogICAgIGRlZiBjaGVja19zeXNfZGVwcyhzZWxmLCBuZWVk
c19odHRwKToKLSAgICAgICAgZHVtcF9yZW5kZXJfdHJlZV9iaW5hcnlfcGF0aCA9IHNlbGYuX3Bh
dGhfdG9fZHJpdmVyKCkKLSAgICAgICAgcHJvYyA9IHN1YnByb2Nlc3MuUG9wZW4oW2R1bXBfcmVu
ZGVyX3RyZWVfYmluYXJ5X3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICct
LWNoZWNrLWxheW91dC10ZXN0LXN5cy1kZXBzJ10pCi0gICAgICAgIGlmIHByb2Mud2FpdCgpOgor
ICAgICAgICBjbWQgPSBbc2VsZi5fcGF0aF90b19kcml2ZXIoKSwgJy0tY2hlY2stbGF5b3V0LXRl
c3Qtc3lzLWRlcHMnXQorICAgICAgICBpZiBzZWxmLl9leGVjdXRpdmUucnVuX2NvbW1hbmQoY21k
LCByZXR1cm5fZXhpdF9jb2RlPVRydWUpOgogICAgICAgICAgICAgX2xvZy5lcnJvcignU3lzdGVt
IGRlcGVuZGVuY2llcyBjaGVjayBmYWlsZWQuJykKICAgICAgICAgICAgIF9sb2cuZXJyb3IoJ1Rv
IG92ZXJyaWRlLCBpbnZva2Ugd2l0aCAtLW5vY2hlY2stc3lzLWRlcHMnKQogICAgICAgICAgICAg
X2xvZy5lcnJvcignJykKQEAgLTE3NiwxOCArMTc2LDIwIEBAIGNsYXNzIENocm9taXVtUG9ydChi
YXNlLlBvcnQpOgogICAgICAgICAgICAgIyBGSVhNRTogVGhpcyBzaG91bGQgdXNlIFVzZXIub3Bl
bl91cmwKICAgICAgICAgICAgIHdlYmJyb3dzZXIub3Blbih1cmksIG5ldz0xKQogICAgICAgICBl
bHNlOgorICAgICAgICAgICAgIyBOb3RlOiBOb3QgdGhyZWFkIHNhZmU6IGh0dHA6Ly9idWdzLnB5
dGhvbi5vcmcvaXNzdWUyMzIwCiAgICAgICAgICAgICBzdWJwcm9jZXNzLlBvcGVuKFtzZWxmLl9w
YXRoX3RvX2RyaXZlcigpLCB1cmldKQogCiAgICAgZGVmIGNyZWF0ZV9kcml2ZXIoc2VsZiwgaW1h
Z2VfcGF0aCwgb3B0aW9ucyk6CiAgICAgICAgICIiIlN0YXJ0cyBhIG5ldyBEcml2ZXIgYW5kIHJl
dHVybnMgYSBoYW5kbGUgdG8gaXQuIiIiCiAgICAgICAgIGlmIHNlbGYuX29wdGlvbnMudXNlX2Ry
dDoKLSAgICAgICAgICAgIHJldHVybiB3ZWJraXQuV2ViS2l0RHJpdmVyKHNlbGYsIGltYWdlX3Bh
dGgsIG9wdGlvbnMpCi0gICAgICAgIHJldHVybiBDaHJvbWl1bURyaXZlcihzZWxmLCBpbWFnZV9w
YXRoLCBvcHRpb25zKQorICAgICAgICAgICAgcmV0dXJuIHdlYmtpdC5XZWJLaXREcml2ZXIoc2Vs
ZiwgaW1hZ2VfcGF0aCwgb3B0aW9ucywgZXhlY3R1aXZlPXNlbGYuX2V4ZWN1dGl2ZSkKKyAgICAg
ICAgcmV0dXJuIENocm9taXVtRHJpdmVyKHNlbGYsIGltYWdlX3BhdGgsIG9wdGlvbnMsIGV4ZWN0
dWl2ZT1zZWxmLl9leGVjdXRpdmUpCiAKICAgICBkZWYgc3RhcnRfaGVscGVyKHNlbGYpOgogICAg
ICAgICBoZWxwZXJfcGF0aCA9IHNlbGYuX3BhdGhfdG9faGVscGVyKCkKICAgICAgICAgaWYgaGVs
cGVyX3BhdGg6CiAgICAgICAgICAgICBfbG9nLmRlYnVnKCJTdGFydGluZyBsYXlvdXQgaGVscGVy
ICVzIiAlIGhlbHBlcl9wYXRoKQorICAgICAgICAgICAgIyBOb3RlOiBOb3QgdGhyZWFkIHNhZmU6
IGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUyMzIwCiAgICAgICAgICAgICBzZWxmLl9oZWxw
ZXIgPSBzdWJwcm9jZXNzLlBvcGVuKFtoZWxwZXJfcGF0aF0sCiAgICAgICAgICAgICAgICAgc3Rk
aW49c3VicHJvY2Vzcy5QSVBFLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLCBzdGRlcnI9Tm9uZSkK
ICAgICAgICAgICAgIGlzX3JlYWR5ID0gc2VsZi5faGVscGVyLnN0ZG91dC5yZWFkbGluZSgpCkBA
IC0yNzMsNyArMjc1LDcgQEAgY2xhc3MgQ2hyb21pdW1Qb3J0KGJhc2UuUG9ydCk6CiBjbGFzcyBD
aHJvbWl1bURyaXZlcihiYXNlLkRyaXZlcik6CiAgICAgIiIiQWJzdHJhY3QgaW50ZXJmYWNlIGZv
ciB0ZXN0X3NoZWxsLiIiIgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHBvcnQsIGltYWdlX3Bh
dGgsIG9wdGlvbnMpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwb3J0LCBpbWFnZV9wYXRoLCBv
cHRpb25zLCBleGVjdXRpdmU9RXhlY3V0aXZlKCkpOgogICAgICAgICBzZWxmLl9wb3J0ID0gcG9y
dAogICAgICAgICBzZWxmLl9jb25maWd1cmF0aW9uID0gcG9ydC5fb3B0aW9ucy5jb25maWd1cmF0
aW9uCiAgICAgICAgICMgRklYTUU6IF9vcHRpb25zIGlzIHZlcnkgY29uZnVzaW5nLCBiZWNhdXNl
IGl0J3Mgbm90IGFuIE9wdGlvbnMoKSBlbGVtZW50LgpAQCAtMjgxLDYgKzI4Myw3IEBAIGNsYXNz
IENocm9taXVtRHJpdmVyKGJhc2UuRHJpdmVyKToKICAgICAgICAgIyBiZSBwYXNzZWQgaW50byAu
c3RhcnQoKQogICAgICAgICBzZWxmLl9vcHRpb25zID0gb3B0aW9ucwogICAgICAgICBzZWxmLl9p
bWFnZV9wYXRoID0gaW1hZ2VfcGF0aAorICAgICAgICBzZWxmLl9leGVjdXRpdmUgPSBleGVjdXRp
dmUKIAogICAgIGRlZiBzdGFydChzZWxmKToKICAgICAgICAgIyBGSVhNRTogU2hvdWxkIGJlIGFu
IGVycm9yIHRvIGNhbGwgdGhpcyBtZXRob2QgdHdpY2UuCkBAIC00MDIsOCArNDA1LDQgQEAgY2xh
c3MgQ2hyb21pdW1Ecml2ZXIoYmFzZS5Ecml2ZXIpOgogICAgICAgICAgICAgICAgIGlmIHNlbGYu
X3Byb2MucG9sbCgpIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgICAgIF9sb2cud2FybmluZygn
c3RvcHBpbmcgdGVzdCBkcml2ZXIgdGltZWQgb3V0LCAnCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAna2lsbGluZyBpdCcpCi0gICAgICAgICAgICAgICAgICAgICMgRklYTUU6IFRo
aXMgc2hvdWxkIHVzZSBFeGVjdXRpdmUuCi0gICAgICAgICAgICAgICAgICAgIG51bGwgPSBvcGVu
KG9zLmRldm51bGwsICJ3IikgICMgRG9lcyB0aGlzIG5lZWQgYW4gZW5jb2Rpbmc/Ci0gICAgICAg
ICAgICAgICAgICAgIHN1YnByb2Nlc3MuUG9wZW4oWyJraWxsIiwgIi05IiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIoc2VsZi5fcHJvYy5waWQpXSwgc3RkZXJyPW51
bGwpCi0gICAgICAgICAgICAgICAgICAgIG51bGwuY2xvc2UoKQorICAgICAgICAgICAgICAgICAg
ICBzZWxmLl9leGVjdXRpdmUua2lsbF9wcm9jZXNzKHNlbGYuX3Byb2MucGlkKQpkaWZmIC0tZ2l0
IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1
bV93aW4ucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L2Nocm9taXVtX3dpbi5weQppbmRleCAyZTNkZTg1NWU5NTA0ZWM4NmM2YmM2MjUyNTM4NWMxYTQz
ZDZmN2M0Li41NWU2ODk2MjUyMzQ4NmJmM2RlOWY2YzJjZTg1NGFjYTM0NGFmMjMwIDEwMDY0NAot
LS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9t
aXVtX3dpbi5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L2Nocm9taXVtX3dpbi5weQpAQCAtMTQ0LDYgKzE0NCwxMCBAQCBjbGFzcyBDaHJvbWl1
bVdpblBvcnQoY2hyb21pdW0uQ2hyb21pdW1Qb3J0KToKICAgICAgICAgcmV0dXJuIHNlbGYucGF0
aF9mcm9tX2Nocm9taXVtX2Jhc2UoJ3RoaXJkX3BhcnR5JywgJ2N5Z3dpbicsICdiaW4nLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd2RpZmYuZXhlJykKIAor
ICAgIGRlZiBfa2lsbF9hbGwoc2VsZiwgcHJvY2Vzc19uYW1lKToKKyAgICAgICAgY21kID0gWyd0
YXNra2lsbC5leGUnLCAnL2YnLCAnL2ltJywgcHJvY2Vzc19uYW1lXQorICAgICAgICBzZWxmLl9l
eGVjdXRpdmUucnVuX2NvbW1hbmQoY21kKQorCiAgICAgZGVmIF9zaHV0X2Rvd25faHR0cF9zZXJ2
ZXIoc2VsZiwgc2VydmVyX3BpZCk6CiAgICAgICAgICIiIlNodXQgZG93biB0aGUgbGlnaHR0cGQg
d2ViIHNlcnZlci4gQmxvY2tzIHVudGlsIGl0J3MgZnVsbHkKICAgICAgICAgc2h1dCBkb3duLgpA
QCAtMTUxLDExICsxNTUsNyBAQCBjbGFzcyBDaHJvbWl1bVdpblBvcnQoY2hyb21pdW0uQ2hyb21p
dW1Qb3J0KToKICAgICAgICAgQXJnczoKICAgICAgICAgICAgIHNlcnZlcl9waWQ6IFRoZSBwcm9j
ZXNzIElEIG9mIHRoZSBydW5uaW5nIHNlcnZlci4KICAgICAgICAgIiIiCi0gICAgICAgIHN1YnBy
b2Nlc3MuUG9wZW4oKCd0YXNra2lsbC5leGUnLCAnL2YnLCAnL2ltJywgJ0xpZ2h0VFBELmV4ZScp
LAotICAgICAgICAgICAgICAgICAgICAgICAgc3RkaW49b3Blbihvcy5kZXZudWxsLCAncicpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUpLndhaXQoKQotICAgICAgICBz
dWJwcm9jZXNzLlBvcGVuKCgndGFza2tpbGwuZXhlJywgJy9mJywgJy9pbScsICdodHRwZC5leGUn
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGluPW9wZW4ob3MuZGV2bnVsbCwgJ3InKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKS53YWl0KCkKKyAgICAgICAg
IyBGSVhNRTogV2h5IGFyZSB3ZSBpZ25vcmluZyBzZXJ2ZXJfcGlkIGFuZCBjYWxsaW5nCisgICAg
ICAgICMgX2tpbGxfYWxsIGluc3RlYWQgb2YgRXhlY3V0aXZlLmtpbGxfcHJvY2VzcyhwaWQpPwor
ICAgICAgICBzZWxmLl9raWxsX2FsbCgiTGlnaHRUUEQuZXhlIikKKyAgICAgICAgc2VsZi5fa2ls
bF9hbGwoImh0dHBkLmV4ZSIpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L2h0dHBfc2VydmVyLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9odHRwX3NlcnZlci5weQppbmRleCA1OTQzYzY4
NTViYzE2YmQ2NWZkOTk5ZWZiN2E1ZGQxMmYzMTYwZjJlLi4xNDc5YzYxODExMTgwMDBlYjZlYjMy
YmUyYTIyMjMxNjBiNTQ3MWNjIDEwMDc1NQotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L2h0dHBfc2VydmVyLnB5CisrKyBiL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvaHR0cF9zZXJ2ZXIucHkKQEAgLTIxMCw5
ICsyMTAsMTEgQEAgY2xhc3MgTGlnaHR0cGQoaHR0cF9zZXJ2ZXJfYmFzZS5IdHRwU2VydmVyQmFz
ZSk6CiAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInIGFuZCBzZWxmLl9yZWdpc3Rl
cl9jeWd3aW46CiAgICAgICAgICAgICBzZXR1cF9tb3VudCA9IHNlbGYuX3BvcnRfb2JqLnBhdGhf
ZnJvbV9jaHJvbWl1bV9iYXNlKCd0aGlyZF9wYXJ0eScsCiAgICAgICAgICAgICAgICAgJ2N5Z3dp
bicsICdzZXR1cF9tb3VudC5iYXQnKQorICAgICAgICAgICAgIyBGSVhNRTogU2hvdWxkIHVzZSBF
eGVjdXRpdmUucnVuX2NvbW1hbmQKICAgICAgICAgICAgIHN1YnByb2Nlc3MuUG9wZW4oc2V0dXBf
bW91bnQpLndhaXQoKQogCiAgICAgICAgIF9sb2cuZGVidWcoJ1N0YXJ0aW5nIGh0dHAgc2VydmVy
JykKKyAgICAgICAgIyBGSVhNRTogU2hvdWxkIHVzZSBFeGVjdXRpdmUucnVuX2NvbW1hbmQKICAg
ICAgICAgc2VsZi5fcHJvY2VzcyA9IHN1YnByb2Nlc3MuUG9wZW4oc3RhcnRfY21kLCBlbnY9ZW52
KQogCiAgICAgICAgICMgV2FpdCBmb3Igc2VydmVyIHRvIHN0YXJ0LgpkaWZmIC0tZ2l0IGEvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9zZXJ2ZXJfcHJvY2Vz
cy5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvc2Vy
dmVyX3Byb2Nlc3MucHkKaW5kZXggNzA1NzNhOTk3MzUzZGZjMmVmNDY3MmI1NTY4YTUyY2VhMjcy
YmQzZS4uY2Y0ZjRhMjZjZmYyMzhjZDExNjY4NDM4ZWU1ZGJiYjllOGZmNjlhZCAxMDA2NDQKLS0t
IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9zZXJ2ZXJf
cHJvY2Vzcy5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L3NlcnZlcl9wcm9jZXNzLnB5CkBAIC0zOCw2ICszOCw4IEBAIGltcG9ydCBzdWJwcm9j
ZXNzCiBpbXBvcnQgc3lzCiBpbXBvcnQgdGltZQogCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0
ZW0uZXhlY3V0aXZlIGltcG9ydCBFeGVjdXRpdmUKKwogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2Vy
KCJ3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC5zZXJ2ZXJfcHJvY2VzcyIpCiAKIApAQCAtNDgs
MTIgKzUwLDEzIEBAIGNsYXNzIFNlcnZlclByb2Nlc3M6CiAgICAgaW5kZWZpbml0ZWx5LiBUaGUg
Y2xhc3MgYWxzbyBoYW5kbGVzIHRyYW5zcGFyZW50bHkgcmVzdGFydGluZyBwcm9jZXNzZXMKICAg
ICBhcyBuZWNlc3NhcnkgdG8ga2VlcCBpc3N1aW5nIGNvbW1hbmRzLiIiIgogCi0gICAgZGVmIF9f
aW5pdF9fKHNlbGYsIHBvcnRfb2JqLCBuYW1lLCBjbWQsIGVudj1Ob25lKToKKyAgICBkZWYgX19p
bml0X18oc2VsZiwgcG9ydF9vYmosIG5hbWUsIGNtZCwgZW52PU5vbmUsIGV4ZWN1dGl2ZT1FeGVj
dXRpdmUoKSk6CiAgICAgICAgIHNlbGYuX3BvcnQgPSBwb3J0X29iagogICAgICAgICBzZWxmLl9u
YW1lID0gbmFtZQogICAgICAgICBzZWxmLl9jbWQgPSBjbWQKICAgICAgICAgc2VsZi5fZW52ID0g
ZW52CiAgICAgICAgIHNlbGYuX3Jlc2V0KCkKKyAgICAgICAgc2VsZi5fZXhlY3V0aXZlID0gZXhl
Y3V0aXZlCiAKICAgICBkZWYgX3Jlc2V0KHNlbGYpOgogICAgICAgICBzZWxmLl9wcm9jID0gTm9u
ZQpAQCAtNjYsNiArNjksNyBAQCBjbGFzcyBTZXJ2ZXJQcm9jZXNzOgogICAgICAgICBpZiBzZWxm
Ll9wcm9jOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiJXMgYWxyZWFkeSBydW5uaW5n
IiAlIHNlbGYuX25hbWUpCiAgICAgICAgIHNlbGYuX3Jlc2V0KCkKKyAgICAgICAgIyBjbG9zZV9m
ZHMgaXMgYSB3b3JrYXJvdW5kIGZvciBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMjMyMAog
ICAgICAgICBjbG9zZV9mZHMgPSBzeXMucGxhdGZvcm0gbm90IGluICgnd2luMzInLCAnY3lnd2lu
JykKICAgICAgICAgc2VsZi5fcHJvYyA9IHN1YnByb2Nlc3MuUG9wZW4oc2VsZi5fY21kLCBzdGRp
bj1zdWJwcm9jZXNzLlBJUEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCkBAIC0yMTUsMTAgKzIxOSw2IEBAIGNsYXNzIFNlcnZl
clByb2Nlc3M6CiAgICAgICAgICAgICBpZiBzZWxmLl9wcm9jLnBvbGwoKSBpcyBOb25lOgogICAg
ICAgICAgICAgICAgIF9sb2cud2FybmluZygnc3RvcHBpbmcgJXMgdGltZWQgb3V0LCBraWxsaW5n
IGl0JyAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX25hbWUpCi0gICAgICAg
ICAgICAgICAgIyBGSVhNRTogVGhpcyBzaG91bGQgdXNlIEV4ZWN1dGl2ZS4KLSAgICAgICAgICAg
ICAgICBudWxsID0gb3Blbihvcy5kZXZudWxsLCAidyIpCi0gICAgICAgICAgICAgICAgc3VicHJv
Y2Vzcy5Qb3BlbihbImtpbGwiLCAiLTkiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0cihzZWxmLl9wcm9jLnBpZCldLCBzdGRlcnI9bnVsbCkKLSAgICAgICAgICAgICAgICBu
dWxsLmNsb3NlKCkKKyAgICAgICAgICAgICAgICBzZWxmLl9leGVjdXRpdmUua2lsbF9wcm9jZXNz
KHNlbGYuX3Byb2MucGlkKQogICAgICAgICAgICAgICAgIF9sb2cud2FybmluZygna2lsbGVkJykK
ICAgICAgICAgc2VsZi5fcmVzZXQoKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXQucHkgYi9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weQppbmRleCBmOGQ3OTIxNGEyOGRm
MjJkNjFhY2I5NWNlOWUyNGE4NDExMDFiOTcyLi5jNDhlNDUwNjg0Y2U0YjcyN2UyYTI0OGY1NGI5
Mzg0ZWZhOTMzOThmIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weQpAQCAtNDUsNiArNDUsOCBAQCBpbXBvcnQg
c3lzCiBpbXBvcnQgdGltZQogaW1wb3J0IHdlYmJyb3dzZXIKIAorZnJvbSB3ZWJraXRweS5jb21t
b24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgRXhlY3V0aXZlCisKIGltcG9ydCB3ZWJraXRweS5j
b21tb24uc3lzdGVtLm9zcGF0aCBhcyBvc3BhdGgKIGltcG9ydCB3ZWJraXRweS5sYXlvdXRfdGVz
dHMucG9ydC5iYXNlIGFzIGJhc2UKIGltcG9ydCB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC5z
ZXJ2ZXJfcHJvY2VzcyBhcyBzZXJ2ZXJfcHJvY2VzcwpAQCAtNTUsOCArNTcsOCBAQCBfbG9nID0g
bG9nZ2luZy5nZXRMb2dnZXIoIndlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0LndlYmtpdCIpCiBj
bGFzcyBXZWJLaXRQb3J0KGJhc2UuUG9ydCk6CiAgICAgIiIiV2ViS2l0IGltcGxlbWVudGF0aW9u
IG9mIHRoZSBQb3J0IGNsYXNzLiIiIgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHBvcnRfbmFt
ZT1Ob25lLCBvcHRpb25zPU5vbmUpOgotICAgICAgICBiYXNlLlBvcnQuX19pbml0X18oc2VsZiwg
cG9ydF9uYW1lLCBvcHRpb25zKQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwb3J0X25hbWU9Tm9u
ZSwgb3B0aW9ucz1Ob25lLCAqKmt3YXJncyk6CisgICAgICAgIGJhc2UuUG9ydC5fX2luaXRfXyhz
ZWxmLCBwb3J0X25hbWUsIG9wdGlvbnMsICoqa3dhcmdzKQogICAgICAgICBzZWxmLl9jYWNoZWRf
YnVpbGRfcm9vdCA9IE5vbmUKICAgICAgICAgc2VsZi5fY2FjaGVkX2FwYWNoZV9wYXRoID0gTm9u
ZQogCkBAIC0xOTUsNyArMTk3LDcgQEAgY2xhc3MgV2ViS2l0UG9ydChiYXNlLlBvcnQpOgogICAg
ICAgICB3ZWJicm93c2VyLm9wZW4odXJpLCBuZXc9MSkKIAogICAgIGRlZiBjcmVhdGVfZHJpdmVy
KHNlbGYsIGltYWdlX3BhdGgsIG9wdGlvbnMpOgotICAgICAgICByZXR1cm4gV2ViS2l0RHJpdmVy
KHNlbGYsIGltYWdlX3BhdGgsIG9wdGlvbnMpCisgICAgICAgIHJldHVybiBXZWJLaXREcml2ZXIo
c2VsZiwgaW1hZ2VfcGF0aCwgb3B0aW9ucywgZXhlY3V0aXZlPXNlbGYuX2V4ZWN1dGl2ZSkKIAog
ICAgIGRlZiB0ZXN0X2Jhc2VfcGxhdGZvcm1fbmFtZXMoc2VsZik6CiAgICAgICAgICMgQXQgdGhl
IG1vbWVudCB3ZSBkb24ndCB1c2UgdGVzdCBwbGF0Zm9ybSBuYW1lcywgYnV0IHdlIGhhdmUKQEAg
LTM0Nyw3ICszNDksNyBAQCBjbGFzcyBXZWJLaXRQb3J0KGJhc2UuUG9ydCk6CiBjbGFzcyBXZWJL
aXREcml2ZXIoYmFzZS5Ecml2ZXIpOgogICAgICIiIldlYktpdCBpbXBsZW1lbnRhdGlvbiBvZiB0
aGUgRHVtcFJlbmRlclRyZWUgaW50ZXJmYWNlLiIiIgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYs
IHBvcnQsIGltYWdlX3BhdGgsIGRyaXZlcl9vcHRpb25zKToKKyAgICBkZWYgX19pbml0X18oc2Vs
ZiwgcG9ydCwgaW1hZ2VfcGF0aCwgZHJpdmVyX29wdGlvbnMsIGV4ZWN1dGl2ZT1FeGVjdXRpdmUo
KSk6CiAgICAgICAgIHNlbGYuX3BvcnQgPSBwb3J0CiAgICAgICAgICMgRklYTUU6IGRyaXZlcl9v
cHRpb25zIGlzIG5ldmVyIHVzZWQuCiAgICAgICAgIHNlbGYuX2ltYWdlX3BhdGggPSBpbWFnZV9w
YXRoCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L3dlYnNvY2tldF9zZXJ2ZXIucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L3dlYnNvY2tldF9zZXJ2ZXIucHkKaW5kZXggZWQ2ZDg3MWY4NTQ2
ODNmZmFiMDQ0YWMxMjc1NDY1YTQwMmY4Y2JjMy4uMjliN2NhMzQ5OTUyZjc0YmI4NzAzZDY1ZGJl
ZDA5YWFhNzA1NjRlZSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC93ZWJzb2NrZXRfc2VydmVyLnB5CisrKyBiL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Vic29ja2V0X3NlcnZlci5weQpAQCAt
MjA3LDYgKzIwNyw3IEBAIGNsYXNzIFB5V2ViU29ja2V0KGh0dHBfc2VydmVyLkxpZ2h0dHBkKToK
ICAgICAgICAgICAgICAgICAgICBzZWxmLl9zZXJ2ZXJfbmFtZSwgc2VsZi5fcG9ydCkpCiAgICAg
ICAgIF9sb2cuZGVidWcoJ2NtZGxpbmU6ICVzJyAlICcgJy5qb2luKHN0YXJ0X2NtZCkpCiAgICAg
ICAgICMgRklYTUU6IFdlIHNob3VsZCBkaXJlY3QgdGhpcyBjYWxsIHRocm91Z2ggRXhlY3V0aXZl
IGZvciB0ZXN0aW5nLgorICAgICAgICAjIE5vdGU6IE5vdCB0aHJlYWQgc2FmZTogaHR0cDovL2J1
Z3MucHl0aG9uLm9yZy9pc3N1ZTIzMjAKICAgICAgICAgc2VsZi5fcHJvY2VzcyA9IHN1YnByb2Nl
c3MuUG9wZW4oc3RhcnRfY21kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdGRpbj1vcGVuKG9zLmRldm51bGwsICdyJyksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zZWxmLl93c291dCwKZGlmZiAtLWdpdCBhL1dlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3JlYmFzZWxpbmVfY2hyb21pdW1f
d2Via2l0X3Rlc3RzLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHMucHkKaW5kZXggMTYzMzU0YjAyODVl
ODAxN2ViNDBkNGQyMTc3OGU2MzUxMjE2YWVmZC4uNDRiZmY2MmE1MTRkYjlhZGZjM2Y1NzVlNGQ3
ZjMyMTMwMzUwNDE2ZSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHMucHkKKysrIGIvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcmViYXNlbGluZV9jaHJvbWl1
bV93ZWJraXRfdGVzdHMucHkKQEAgLTk2LDcgKzk2LDkgQEAgZGVmIHJ1bl9zaGVsbF93aXRoX3Jl
dHVybl9jb2RlKGNvbW1hbmQsIHByaW50X291dHB1dD1GYWxzZSk6CiAgICAgIiIiCiAKICAgICAj
IFVzZSBhIHNoZWxsIGZvciBzdWJjb21tYW5kcyBvbiBXaW5kb3dzIHRvIGdldCBhIFBBVEggc2Vh
cmNoLgorICAgICMgRklYTUU6IHNoZWxsPVRydWUgaXMgYSB0cmFpbCBvZiB0ZWFycywgYW5kIHNo
b3VsZCBiZSByZW1vdmVkLgogICAgIHVzZV9zaGVsbCA9IHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRo
KCd3aW4nKQorICAgICMgTm90ZTogTm90IHRocmVhZCBzYWZlOiBodHRwOi8vYnVncy5weXRob24u
b3JnL2lzc3VlMjMyMAogICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKGNvbW1hbmQsIHN0ZG91dD1z
dWJwcm9jZXNzLlBJUEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPXN1YnByb2Nl
c3MuU1RET1VULCBzaGVsbD11c2Vfc2hlbGwpCiAgICAgaWYgcHJpbnRfb3V0cHV0OgpAQCAtMjgx
LDEwICsyODMsMTAgQEAgY2xhc3MgUmViYXNlbGluZXIob2JqZWN0KToKICAgICBkZWYgZ2V0X3Jl
YmFzZWxpbmluZ190ZXN0cyhzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuX3JlYmFzZWxpbmlu
Z190ZXN0cwogCisgICAgIyBGSVhNRTogQ2FsbGVycyBzaG91bGQgdXNlIHNjbS5weSBpbnN0ZWFk
LgogICAgIGRlZiBfZ2V0X3JlcG9fdHlwZShzZWxmKToKICAgICAgICAgIiIiR2V0IHRoZSByZXBv
c2l0b3J5IHR5cGUgdGhhdCBjbGllbnQgaXMgdXNpbmcuIiIiCi0gICAgICAgIG91dHB1dCwgcmV0
dXJuX2NvZGUgPSBydW5fc2hlbGxfd2l0aF9yZXR1cm5fY29kZShbJ3N2bicsICdpbmZvJ10sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBG
YWxzZSkKKyAgICAgICAgcmV0dXJuX2NvZGUgPSBydW5fY29tbWFuZChbJ3N2bicsICdpbmZvJ10s
IHJldHVybl9leGl0X2NvZGU9VHJ1ZSkKICAgICAgICAgaWYgcmV0dXJuX2NvZGUgPT0gMDoKICAg
ICAgICAgICAgIHJldHVybiBSRVBPX1NWTgogCkBAIC02MDgsNiArNjEwLDcgQEAgY2xhc3MgUmVi
YXNlbGluZXIob2JqZWN0KToKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIF9sb2cuaW5mbygn
Tm8gdGVzdCB3YXMgcmViYXNlbGluZWQgc28gbm90aGluZyB0byByZW1vdmUuJykKIAorICAgICMg
RklYTUU6IENhbGxlcnMgc2hvdWxkIG1vdmUgdG8gU0NNLmFkZCBpbnN0ZWFkLgogICAgIGRlZiBf
c3ZuX2FkZChzZWxmLCBmaWxlbmFtZSk6CiAgICAgICAgICIiIkFkZCB0aGUgZmlsZSB0byBTVk4g
cmVwb3NpdG9yeS4KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>54395</attachid>
            <date>2010-04-27 01:28:32 -0700</date>
            <delta_ts>2010-04-27 10:50:13 -0700</delta_ts>
            <desc>Add mising import</desc>
            <filename>bug-37987-20100427012830.patch</filename>
            <type>text/plain</type>
            <size>26514</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCAzMjUyMjVhOGY2YmRjNWQzMjdkNzdlZjlkNDcwYjMxYjA4MDI4NDY2Li40YzU2M2Ey
ZGIxNDY5ZDg0N2QzMWM4ZGNlNTRmMWFjMDMwYzAyYzFiIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAgQEAK
KzIwMTAtMDQtMjcgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtjaHJvbWl1bV0gbmV3LXJ1bi13
ZWJraXQtdGVzdHMgaGFuZ3Mgb24gQ2hyb21pdW0gQm90cyAoT1MgWCBhbmQgTGludXgpCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNzk4NworCisgICAg
ICAgIEFmdGVyIGZ1cnRoZXIgcmVzZWFyY2gsIEkgYmVsaWV2ZSB0aGUgaGFuZyBpcyBjYXVzZWQg
Ynk6CisgICAgICAgIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUyMzIwCisgICAgICAgIEJh
c2ljYWxseSBQb3BlbigpIGlzIG5vdCByZWVudHJhbnQuCisgICAgICAgIFRoZSB3b3JrYXJvdW5k
IGlzIHRvIHBhc3MgY2xvc2VfZmRzPVRydWUgdG8gUG9wZW4oKSBvbiBNYWMvTGludXguCisKKyAg
ICAgICAgSSBmaXhlZCBvdXIgbWFpbiBQb3BlbiB3cmFwcGVyICJFeGVjdXRpdmUucnVuX2NvbW1h
bmQiIHRvIHVzZSBjbG9zZV9mZHM9VHJ1ZQorICAgICAgICB3aGVuIGFwcHJvcHJpYXRlLgorCisg
ICAgICAgIEkgYXVkaXRlZCBhbGwgcGxhY2VzIHdlIGNhbGwgUG9wZW4oKSBhbmQgZWl0aGVyIG1v
dmVkIHRoZW0gdG8gcnVuX2NvbW1hbmQKKyAgICAgICAgb3IgbGVmdCBhIEZJWE1FIHRoYXQgdGhl
eSBhcmUgbm90IHRocmVhZCBzYWZlLiAgQSBmZXcgcGxhY2VzIEkgYWRkZWQgdGhlCisgICAgICAg
IGNsb3NlX2ZkcyB3b3JrYXJvdW5kIHRoZXJlIGFuZCBsZWZ0IGFuIGV4cGxhbml0b3J5IG5vdGUu
CisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY21fdW5pdHRl
c3QucHk6CisgICAgICAgICAtIEFkZGVkIG5vdGUgdGhhdCB0aGlzIFBvcGVuIHVzZSBpcyBub3Qg
dGhyZWFkc2FmZS4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZXhl
Y3V0aXZlLnB5OgorICAgICAgICAgLSBGaXhlZCBvdXIgRXhlY3V0aXZlLnJ1bl8qIHRvIHdvcmth
cm91bmQgcHl0aG9uIGJ1ZyAyMzIwLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9u
L3N5c3RlbS91c2VyLnB5OgorICAgICAgICAgXyBBZGRlZCBub3RlIHRoYXQgdGhpcyBQb3BlbiB1
c2UgaXMgbm90IHRocmVhZHNhZmUuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvbGF5b3V0X3BhY2thZ2UvanNvbl9yZXN1bHRzX2dlbmVyYXRvci5weTogZGl0dG8uCisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9hcGFjaGVfaHR0cF9z
ZXJ2ZXIucHk6IGRpdHRvLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvYmFzZS5weToKKyAgICAgICAgIC0gQ2hhbmdlIHdkaWZmIGJhY2sgdG8gdXNpbmcgcnVu
X2NvbW1hbmQgbm93IHRoYXQgd2UgYmVsaWV2ZSBpdAorICAgICAgICAgICB0byBiZSB0aHJlYWRz
YWZlLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21p
dW0ucHk6CisgICAgICAgICAtIEZpeCB0byB1c2UgRXhlY3V0aXZlIGluIHBsYWNlcy4KKyAgICAg
ICAgIC0gUGFzcyBzZWxmLl9leGVjdXRpdmUgZG93biB0byB0aGUgRHJpdmVyIGZvciBlYXNpZXIg
dW5pdCB0ZXN0aW5nLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvY2hyb21pdW1fd2luLnB5OgorICAgICAgICAgLSBSZS1mYWN0b3IgdG8gdXNlIGEgX2tpbGxf
YWxsIG1ldGhvZC4KKyAgICAgICAgIC0gTWFkZSB0aGUgX2tpbGxfYWxsIG1ldGhvZCB1c2UgcnVu
X2NvbW1hbmQgdG8gYmUgdGhyZWFkc2FmZS4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L2h0dHBfc2VydmVyLnB5OgorICAgICAgICAgLSBBZGQgRklYTUUgYWJv
dXQgdXNpbmcgRXhlY3V0aXZlLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvc2VydmVyX3Byb2Nlc3MucHk6CisgICAgICAgICAtIFVzZSBFeGVjdXRpdmUgdG8g
YmUgdGhyZWFkc2FmZS4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L3dlYmtpdC5weToKKyAgICAgICAgIC0gUGFzcyBzZWxmLl9leGVjdXRpdmUgZG93biB0byB0
aGUgRHJpdmVyLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
d2Vic29ja2V0X3NlcnZlci5weToKKyAgICAgICAgIC0gQWRkIG5vdGUgYWJvdXQgUG9wZW4gbm90
IGJlaW5nIHRocmVhZHNhZmUuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHMucHk6CisgICAgICAgICAtIE1vdmUg
b25lIGNhbGxlciB0byBydW5fY29tbWFuZCBhZGQgbm90ZXMgYWJvdXQgbW92aW5nIG90aGVycy4K
KwogMjAxMC0wNC0yNiAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtX3VuaXR0ZXN0LnB5IGIvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtX3VuaXR0ZXN0LnB5CmluZGV4IGI0
YmU2YmJhODE4ZjFiZGY1NGQzM2NiYWJhNDNlN2EzOTA5N2U4YWEuLmE0ZTZmMTYzZTYyNjI5YTVk
Njg1YzYwNjhiZThiMjUzMzRhNjg5Y2IgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbV91bml0dGVzdC5weQorKysgYi9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY21fdW5pdHRlc3QucHkKQEAgLTU0
LDYgKzU0LDcgQEAgZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQg
RXhlY3V0aXZlLCBydW5fY29tbWFuZCwgU2NyaXB0RXJyb3IKICMgRklYTUU6IFRoaXMgc2hvdWxk
IGJlIHVuaWZpZWQgaW50byBvbmUgb2YgdGhlIGV4ZWN1dGl2ZS5weSBjb21tYW5kcyEKICMgQ2Fs
bGVycyBjb3VsZCB1c2UgcnVuX2FuZF90aHJvd19pZl9mYWlsKGFyZ3MsIGN3ZD1jd2QsIHF1aWV0
PVRydWUpCiBkZWYgcnVuX3NpbGVudChhcmdzLCBjd2Q9Tm9uZSk6CisgICAgIyBOb3RlOiBOb3Qg
dGhyZWFkIHNhZmU6IGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUyMzIwCiAgICAgcHJvY2Vz
cyA9IHN1YnByb2Nlc3MuUG9wZW4oYXJncywgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwgc3RkZXJy
PXN1YnByb2Nlc3MuUElQRSwgY3dkPWN3ZCkKICAgICBwcm9jZXNzLmNvbW11bmljYXRlKCkgIyBp
Z25vcmUgb3V0cHV0CiAgICAgZXhpdF9jb2RlID0gcHJvY2Vzcy53YWl0KCkKZGlmZiAtLWdpdCBh
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9leGVjdXRpdmUucHkg
Yi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZXhlY3V0aXZlLnB5
CmluZGV4IDk5YmNmMjQ3OTIxNTg4ODI2Y2JkNmI3NjkzNWQ1NThiNzQyZDNlYzAuLjVjMWQyOGNh
NmY1YWU0NWNlYmFhZDMzMDAxOGJjM2I2YzNjNmNiMWUgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9leGVjdXRpdmUucHkKKysrIGIvV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2V4ZWN1dGl2ZS5weQpAQCAtODcs
MTEgKzg3LDIwIEBAIGRlZiBydW5fY29tbWFuZCgqYXJncywgKiprd2FyZ3MpOgogCiBjbGFzcyBF
eGVjdXRpdmUob2JqZWN0KToKIAorICAgIGRlZiBfc2hvdWxkX2Nsb3NlX2ZkcyhzZWxmKToKKyAg
ICAgICAgIyBXZSBuZWVkIHRvIHBhc3MgY2xvc2VfZmRzPVRydWUgdG8gd29yayBhcm91bmQgUHl0
aG9uIGJ1ZyAjMjMyMAorICAgICAgICAjIChvdGhlcndpc2Ugd2UgY2FuIGhhbmcgd2hlbiB3ZSBr
aWxsIER1bXBSZW5kZXJUcmVlIHdoZW4gd2UgYXJlIHJ1bm5pbmcKKyAgICAgICAgIyBtdWx0aXBs
ZSB0aHJlYWRzKS4gU2VlIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUyMzIwIC4KKyAgICAg
ICAgIyBOb3RlIHRoYXQgY2xvc2VfZmRzIGlzbid0IHN1cHBvcnRlZCBvbiBXaW5kb3dzLCBidXQg
dGhpcyBidWcgb25seQorICAgICAgICAjIHNob3dzIHVwIG9uIE1hYyBhbmQgTGludXguCisgICAg
ICAgIHJldHVybiBzeXMucGxhdGZvcm0gbm90IGluICgnd2luMzInLCAnY3lnd2luJykKKwogICAg
IGRlZiBfcnVuX2NvbW1hbmRfd2l0aF90ZWVkX291dHB1dChzZWxmLCBhcmdzLCB0ZWVkX291dHB1
dCk6CiAgICAgICAgIGFyZ3MgPSBtYXAodW5pY29kZSwgYXJncykgICMgUG9wZW4gd2lsbCB0aHJv
dyBhbiBleGNlcHRpb24gaWYgYXJncyBhcmUgbm9uLXN0cmluZ3MgKGxpa2UgaW50KCkpCiAgICAg
ICAgIGNoaWxkX3Byb2Nlc3MgPSBzdWJwcm9jZXNzLlBvcGVuKGFyZ3MsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlNU
RE9VVCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPXN1
YnByb2Nlc3MuU1RET1VULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjbG9zZV9mZHM9c2VsZi5fc2hvdWxkX2Nsb3NlX2ZkcygpKQogCiAgICAgICAgICMgVXNlIG91
ciBvd24gY3VzdG9tIHdhaXQgbG9vcCBiZWNhdXNlIFBvcGVuIGlnbm9yZXMgYSB0ZWUnZAogICAg
ICAgICAjIHN0ZGVyci9zdGRvdXQuCkBAIC0xNzcsNiArMTg2LDkgQEAgY2xhc3MgRXhlY3V0aXZl
KG9iamVjdCk6CiAKICAgICBkZWYgX2NvbXB1dGVfc3RkaW4oc2VsZiwgaW5wdXQpOgogICAgICAg
ICAiIiJSZXR1cm5zIChzdGRpbiwgc3RyaW5nX3RvX2NvbW11bmljYXRlKSIiIgorICAgICAgICAj
IEZJWE1FOiBXZSBzaG91bGQgYmUgcmV0dXJuaW5nIC9kZXYvbnVsbCBmb3Igc3RkaW4KKyAgICAg
ICAgIyBvciBjbG9zaW5nIHN0ZGluIGFmdGVyIHByb2Nlc3MgY3JlYXRpb24gdG8gcHJldmVudAor
ICAgICAgICAjIGNoaWxkIHByb2Nlc3NlcyBmcm9tIGdldHRpbmcgaW5wdXQgZnJvbSB0aGUgdXNl
ci4KICAgICAgICAgaWYgbm90IGlucHV0OgogICAgICAgICAgICAgcmV0dXJuIChOb25lLCBOb25l
KQogICAgICAgICBpZiBoYXNhdHRyKGlucHV0LCAicmVhZCIpOiAgIyBDaGVjayBpZiB0aGUgaW5w
dXQgaXMgYSBmaWxlLgpAQCAtMjAwLDYgKzIxMiw3IEBAIGNsYXNzIEV4ZWN1dGl2ZShvYmplY3Qp
OgogICAgICAgICAgICAgICAgICAgICByZXR1cm5fZXhpdF9jb2RlPUZhbHNlLAogICAgICAgICAg
ICAgICAgICAgICByZXR1cm5fc3RkZXJyPVRydWUsCiAgICAgICAgICAgICAgICAgICAgIGRlY29k
ZV9vdXRwdXQ9VHJ1ZSk6CisgICAgICAgICIiIlBvcGVuIHdyYXBwZXIgZm9yIGNvbnZlbmllbmNl
IGFuZCB0byB3b3JrIGFyb3VuZCBweXRob24gYnVncy4iIiIKICAgICAgICAgYXJncyA9IG1hcCh1
bmljb2RlLCBhcmdzKSAgIyBQb3BlbiB3aWxsIHRocm93IGFuIGV4Y2VwdGlvbiBpZiBhcmdzIGFy
ZSBub24tc3RyaW5ncyAobGlrZSBpbnQoKSkKICAgICAgICAgc3RkaW4sIHN0cmluZ190b19jb21t
dW5pY2F0ZSA9IHNlbGYuX2NvbXB1dGVfc3RkaW4oaW5wdXQpCiAgICAgICAgIHN0ZGVyciA9IHN1
YnByb2Nlc3MuU1RET1VUIGlmIHJldHVybl9zdGRlcnIgZWxzZSBOb25lCkBAIC0yMDgsNyArMjIx
LDggQEAgY2xhc3MgRXhlY3V0aXZlKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0ZGluPXN0ZGluLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdGRlcnI9c3RkZXJyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
d2Q9Y3dkKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjd2Q9Y3dkLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZV9mZHM9c2VsZi5fc2hvdWxkX2Ns
b3NlX2ZkcygpKQogICAgICAgICBvdXRwdXQgPSBwcm9jZXNzLmNvbW11bmljYXRlKHN0cmluZ190
b19jb21tdW5pY2F0ZSlbMF0KICAgICAgICAgIyBydW5fY29tbWFuZCBhdXRvbWF0aWNhbGx5IGRl
Y29kZXMgdG8gdW5pY29kZSgpIHVubGVzcyBleHBsaWNpdGx5IHRvbGQgbm90IHRvLgogICAgICAg
ICBpZiBkZWNvZGVfb3V0cHV0OgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vc3lzdGVtL3VzZXIucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9zeXN0ZW0vdXNlci5weQppbmRleCAwNzZmOTY1MzY4MDJiYWRhMmM1ZWQ2ZmM5ODZk
MTkxYTFjYjQyNmU3Li4xMmNjNTI0ODY2MmIxMzM5MDJkYmI0ZTQyZTRkYWIwNDEzZjA1NDE2IDEw
MDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vdXNl
ci5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vdXNl
ci5weQpAQCAtNjcsNiArNjcsNyBAQCBjbGFzcyBVc2VyKG9iamVjdCk6CiAgICAgZGVmIHBhZ2Uo
c2VsZiwgbWVzc2FnZSk6CiAgICAgICAgIHBhZ2VyID0gb3MuZW52aXJvbi5nZXQoIlBBR0VSIikg
b3IgImxlc3MiCiAgICAgICAgIHRyeToKKyAgICAgICAgICAgICMgTm90ZTogTm90IHRocmVhZCBz
YWZlOiBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMjMyMAogICAgICAgICAgICAgY2hpbGRf
cHJvY2VzcyA9IHN1YnByb2Nlc3MuUG9wZW4oW3BhZ2VyXSwgc3RkaW49c3VicHJvY2Vzcy5QSVBF
KQogICAgICAgICAgICAgY2hpbGRfcHJvY2Vzcy5jb21tdW5pY2F0ZShpbnB1dD1tZXNzYWdlKQog
ICAgICAgICBleGNlcHQgSU9FcnJvciwgZToKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2pzb25fcmVzdWx0c19nZW5l
cmF0b3IucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlv
dXRfcGFja2FnZS9qc29uX3Jlc3VsdHNfZ2VuZXJhdG9yLnB5CmluZGV4IGEzMDg2ZDliZjEwNTQx
ODljYWI2NmZkYTNkNDllNmViZmQ0ODI3ZDEuLjA5OTNjYmRkN2IwNDM1ZTRmYTExNjA1NGE3ZjYw
MWJkYjE5OTgzY2YgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2pzb25fcmVzdWx0c19nZW5lcmF0b3IucHkKKysrIGIv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2Uv
anNvbl9yZXN1bHRzX2dlbmVyYXRvci5weQpAQCAtMTI1LDYgKzEyNSw3IEBAIGNsYXNzIEpTT05S
ZXN1bHRzR2VuZXJhdG9yKG9iamVjdCk6CiAgICAgICAgICAgICByZXN1bHRzX2ZpbGUud3JpdGUo
anNvbikKICAgICAgICAgICAgIHJlc3VsdHNfZmlsZS5jbG9zZSgpCiAKKyAgICAjIEZJWE1FOiBD
YWxsZXJzIHNob3VsZCB1c2Ugc2NtLnB5IGluc3RlYWQuCiAgICAgZGVmIF9nZXRfc3ZuX3Jldmlz
aW9uKHNlbGYsIGluX2RpcmVjdG9yeSk6CiAgICAgICAgICIiIlJldHVybnMgdGhlIHN2biByZXZp
c2lvbiBmb3IgdGhlIGdpdmVuIGRpcmVjdG9yeS4KIApAQCAtMTMyLDYgKzEzMyw3IEBAIGNsYXNz
IEpTT05SZXN1bHRzR2VuZXJhdG9yKG9iamVjdCk6CiAgICAgICAgICAgaW5fZGlyZWN0b3J5OiBU
aGUgZGlyZWN0b3J5IHdoZXJlIHN2biBpcyB0byBiZSBydW4uCiAgICAgICAgICIiIgogICAgICAg
ICBpZiBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oaW5fZGlyZWN0b3J5LCAnLnN2bicpKToK
KyAgICAgICAgICAgICMgTm90ZTogTm90IHRocmVhZCBzYWZlOiBodHRwOi8vYnVncy5weXRob24u
b3JnL2lzc3VlMjMyMAogICAgICAgICAgICAgb3V0cHV0ID0gc3VicHJvY2Vzcy5Qb3BlbihbInN2
biIsICJpbmZvIiwgIi0teG1sIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGN3ZD1pbl9kaXJlY3RvcnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNoZWxsPShzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJyksCmRpZmYgLS1naXQgYS9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2FwYWNoZV9odHRwX3NlcnZl
ci5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYXBh
Y2hlX2h0dHBfc2VydmVyLnB5CmluZGV4IDRjNzhmNzc4YjBiZWM4OGMyMjhiOTg1YTlhYTRkZGVi
ZTIxZmRjYTIuLjQ2NjE3ZjY2M2M5M2NjY2EwNzc2YzdhNDA5NzQ3ZjdmMmRlMDc2NjYgMTAwNjQ0
Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYXBh
Y2hlX2h0dHBfc2VydmVyLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvYXBhY2hlX2h0dHBfc2VydmVyLnB5CkBAIC0xOTEsNiArMTkxLDkgQEAg
Y2xhc3MgTGF5b3V0VGVzdEFwYWNoZUh0dHBkKGh0dHBfc2VydmVyX2Jhc2UuSHR0cFNlcnZlckJh
c2UpOgogICAgICAgICAjIFVzZSBzaGVsbD1UcnVlIGJlY2F1c2Ugd2Ugam9pbiB0aGUgYXJndW1l
bnRzIGludG8gYSBzdHJpbmcgZm9yCiAgICAgICAgICMgdGhlIHNha2Ugb2YgV2luZG93L0N5Z3dp
biBhbmQgaXQgbmVlZHMgcXVvdGluZyB0aGF0IGJyZWFrcwogICAgICAgICAjIHNoZWxsPUZhbHNl
LgorICAgICAgICAjIEZJWE1FOiBXZSBzaG91bGQgbm90IG5lZWQgdG8gYmUgam9pbmluZyBzaGVs
bCBhcmd1bWVudHMgaW50byBzdHJpbmdzLgorICAgICAgICAjIHNoZWxsPVRydWUgaXMgYSB0cmFp
bCBvZiB0ZWFycy4KKyAgICAgICAgIyBOb3RlOiBOb3QgdGhyZWFkIHNhZmU6IGh0dHA6Ly9idWdz
LnB5dGhvbi5vcmcvaXNzdWUyMzIwCiAgICAgICAgIHNlbGYuX2h0dHBkX3Byb2MgPSBzdWJwcm9j
ZXNzLlBvcGVuKHNlbGYuX3N0YXJ0X2NtZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSwKICAgICAgICAgICAgIHNoZWxs
PVRydWUpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L2Jhc2UucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L2Jhc2UucHkKaW5kZXggYWM3YTU0NTllZmEyMmUwYjY3ZWE1NDNjMjM5ZTgwYTZm
MjdlMDNhZS4uMWNhNDY1YzMxNmE3OGQwZTQ0YTllMTI2YWIxZDljY2RmYTQwYjAyZSAxMDA2NDQK
LS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNl
LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
YmFzZS5weQpAQCAtNTAsNyArNTAsMTkgQEAgZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4
ZWN1dGl2ZSBpbXBvcnQgRXhlY3V0aXZlLCBTY3JpcHRFcnJvcgogX2xvZyA9IGxvZ3V0aWxzLmdl
dF9sb2dnZXIoX19maWxlX18pCiAKIAotIyBQeXRob24gYnVnIHdvcmthcm91bmQuICBTZWUgUG9y
dC53ZGlmZl90ZXh0KCkgZm9yIGFuIGV4cGxhbmF0aW9uLgorIyBQeXRob24ncyBQb3BlbiBoYXMg
YSBidWcgdGhhdCBjYXVzZXMgYW55IHBpcGVzIG9wZW5lZCB0byBhCisjIHByb2Nlc3MgdGhhdCBj
YW4ndCBiZSBleGVjdXRlZCB0byBiZSBsZWFrZWQuICBTaW5jZSB0aGlzCisjIGNvZGUgaXMgc3Bl
Y2lmaWNhbGx5IGRlc2lnbmVkIHRvIHRvbGVyYXRlIGV4ZWMgZmFpbHVyZXMKKyMgdG8gZ3JhY2Vm
dWxseSBoYW5kbGUgY2FzZXMgd2hlcmUgd2RpZmYgaXMgbm90IGluc3RhbGxlZCwKKyMgdGhlIGJ1
ZyByZXN1bHRzIGluIGEgbWFzc2l2ZSBmaWxlIGRlc2NyaXB0b3IgbGVhay4gQXMgYQorIyB3b3Jr
YXJvdW5kLCBpZiBhbiBleGVjIGZhaWx1cmUgaXMgZXZlciBleHBlcmllbmNlZCBmb3IKKyMgd2Rp
ZmYsIGFzc3VtZSBpdCdzIG5vdCBhdmFpbGFibGUuICBUaGlzIHdpbGwgbGVhayBvbmUKKyMgZmls
ZSBkZXNjcmlwdG9yIGJ1dCB0aGF0J3MgYmV0dGVyIHRoYW4gbGVha2luZyBlYWNoIHRpbWUKKyMg
d2RpZmYgd291bGQgYmUgcnVuLgorIworIyBodHRwOi8vbWFpbC5weXRob24ub3JnL3BpcGVybWFp
bC9weXRob24tbGlzdC8KKyMgICAgMjAwOC1BdWd1c3QvNTA1NzUzLmh0bWwKKyMgaHR0cDovL2J1
Z3MucHl0aG9uLm9yZy9pc3N1ZTMyMTAKIF93ZGlmZl9hdmFpbGFibGUgPSBUcnVlCiBfcHJldHR5
X3BhdGNoX2F2YWlsYWJsZSA9IFRydWUKIApAQCAtNTM1LDM2ICs1NDcsMTEgQEAgY2xhc3MgUG9y
dChvYmplY3QpOgogICAgICAgICAgICAgICAgJy0tZW5kLWluc2VydD0jI1dESUZGX0VORCMjJywK
ICAgICAgICAgICAgICAgIGFjdHVhbF9maWxlbmFtZSwKICAgICAgICAgICAgICAgIGV4cGVjdGVk
X2ZpbGVuYW1lXQotICAgICAgICAjIEZJWE1FOiBXaHkgbm90IGp1c3QgY2hlY2sgb3MuZXhpc3Rz
KGV4ZWN1dGFibGUpIG9uY2U/Ci0gICAgICAgIGdsb2JhbCBfd2RpZmZfYXZhaWxhYmxlCisgICAg
ICAgIGdsb2JhbCBfd2RpZmZfYXZhaWxhYmxlICAjIFNlZSBleHBsYWluYXRpb24gYXQgdG9wIG9m
IGZpbGUuCiAgICAgICAgIHJlc3VsdCA9ICcnCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgICMg
UHl0aG9uJ3MgUG9wZW4gaGFzIGEgYnVnIHRoYXQgY2F1c2VzIGFueSBwaXBlcyBvcGVuZWQgdG8g
YQotICAgICAgICAgICAgIyBwcm9jZXNzIHRoYXQgY2FuJ3QgYmUgZXhlY3V0ZWQgdG8gYmUgbGVh
a2VkLiAgU2luY2UgdGhpcwotICAgICAgICAgICAgIyBjb2RlIGlzIHNwZWNpZmljYWxseSBkZXNp
Z25lZCB0byB0b2xlcmF0ZSBleGVjIGZhaWx1cmVzCi0gICAgICAgICAgICAjIHRvIGdyYWNlZnVs
bHkgaGFuZGxlIGNhc2VzIHdoZXJlIHdkaWZmIGlzIG5vdCBpbnN0YWxsZWQsCi0gICAgICAgICAg
ICAjIHRoZSBidWcgcmVzdWx0cyBpbiBhIG1hc3NpdmUgZmlsZSBkZXNjcmlwdG9yIGxlYWsuIEFz
IGEKLSAgICAgICAgICAgICMgd29ya2Fyb3VuZCwgaWYgYW4gZXhlYyBmYWlsdXJlIGlzIGV2ZXIg
ZXhwZXJpZW5jZWQgZm9yCi0gICAgICAgICAgICAjIHdkaWZmLCBhc3N1bWUgaXQncyBub3QgYXZh
aWxhYmxlLiAgVGhpcyB3aWxsIGxlYWsgb25lCi0gICAgICAgICAgICAjIGZpbGUgZGVzY3JpcHRv
ciBidXQgdGhhdCdzIGJldHRlciB0aGFuIGxlYWtpbmcgZWFjaCB0aW1lCi0gICAgICAgICAgICAj
IHdkaWZmIHdvdWxkIGJlIHJ1bi4KLSAgICAgICAgICAgICMKLSAgICAgICAgICAgICMgaHR0cDov
L21haWwucHl0aG9uLm9yZy9waXBlcm1haWwvcHl0aG9uLWxpc3QvCi0gICAgICAgICAgICAjICAg
IDIwMDgtQXVndXN0LzUwNTc1My5odG1sCi0gICAgICAgICAgICAjIGh0dHA6Ly9idWdzLnB5dGhv
bi5vcmcvaXNzdWUzMjEwCi0gICAgICAgICAgICAjCi0gICAgICAgICAgICAjIEl0IGFsc28gaGFz
IGEgdGhyZWFkaW5nIGJ1Zywgc28gd2UgZG9uJ3Qgb3V0cHV0IHdkaWZmIGlmCi0gICAgICAgICAg
ICAjIHRoZSBQb3BlbiByYWlzZXMgYSBWYWx1ZUVycm9yLgotICAgICAgICAgICAgIyBodHRwOi8v
YnVncy5weXRob24ub3JnL2lzc3VlMTIzNgogICAgICAgICAgICAgaWYgX3dkaWZmX2F2YWlsYWJs
ZToKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgICMgRklYTUU6IFVz
ZSBFeGVjdXRpdmUoKSBoZXJlLgotICAgICAgICAgICAgICAgICAgICB3ZGlmZiA9IHN1YnByb2Nl
c3MuUG9wZW4oY21kLAotICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3Mu
UElQRSkuY29tbXVuaWNhdGUoKVswXQotICAgICAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9y
LCBlOgotICAgICAgICAgICAgICAgICAgICAjIFdvcmtpbmcgYXJvdW5kIGEgcmFjZSBpbiBQeXRo
b24gMi40J3MgaW1wbGVtZW50YXRpb24KLSAgICAgICAgICAgICAgICAgICAgIyBvZiBQb3Blbigp
LgotICAgICAgICAgICAgICAgICAgICB3ZGlmZiA9ICcnCisgICAgICAgICAgICAgICAgd2RpZmYg
PSBzZWxmLl9leGVjdXRpdmUucnVuX2NvbW1hbmQoY21kLCBkZWNvZGVfb3V0cHV0PUZhbHNlKQog
ICAgICAgICAgICAgICAgIHdkaWZmID0gY2dpLmVzY2FwZSh3ZGlmZikKICAgICAgICAgICAgICAg
ICB3ZGlmZiA9IHdkaWZmLnJlcGxhY2UoJyMjV0RJRkZfREVMIyMnLCAnPHNwYW4gY2xhc3M9ZGVs
PicpCiAgICAgICAgICAgICAgICAgd2RpZmYgPSB3ZGlmZi5yZXBsYWNlKCcjI1dESUZGX0FERCMj
JywgJzxzcGFuIGNsYXNzPWFkZD4nKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weSBiL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkKaW5kZXggYmZkNWI4YzA4
MTk4ZTY2NGRkMzY0YmJjYmVkN2E2NGQ1ZDFjZWJhZS4uMTM3YmFmMGJjMWE0OTRlOTU3ZWM1M2Nj
NmFiZmFkYTllNWFlMWE1NCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5CkBAIC00NCw2ICs0NCw4IEBA
IGltcG9ydCB3ZWJicm93c2VyCiBpbXBvcnQgYmFzZQogaW1wb3J0IGh0dHBfc2VydmVyCiAKK2Zy
b20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IEV4ZWN1dGl2ZQorCiAj
IEZJWE1FOiBUbyB1c2UgdGhlIERSVC1iYXNlZCB2ZXJzaW9uIG9mIHRoaXMgZmlsZSwgd2UgbmVl
ZCB0byBiZSBhYmxlIHRvCiAjIHJ1biB0aGUgd2Via2l0IGNvZGUsIHdoaWNoIHVzZXMgc2VydmVy
X3Byb2Nlc3MsIHdoaWNoIHJlcXVpcmVzIFVOSVgtc3R5bGUKICMgbm9uLWJsb2NraW5nIEkvTyB3
aXRoIHNlbGVjdHMoKSwgd2hpY2ggcmVxdWlyZXMgZmNudGwoKSB3aGljaCBkb2Vzbid0IGV4aXN0
CkBAIC04MCw4ICs4Miw4IEBAIGRlZiBjaGVja19maWxlX2V4aXN0cyhwYXRoX3RvX2ZpbGUsIGZp
bGVfZGVzY3JpcHRpb24sIG92ZXJyaWRlX3N0ZXA9Tm9uZSwKIGNsYXNzIENocm9taXVtUG9ydChi
YXNlLlBvcnQpOgogICAgICIiIkFic3RyYWN0IGJhc2UgY2xhc3MgZm9yIENocm9taXVtIGltcGxl
bWVudGF0aW9ucyBvZiB0aGUgUG9ydCBjbGFzcy4iIiIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxm
LCBwb3J0X25hbWU9Tm9uZSwgb3B0aW9ucz1Ob25lKToKLSAgICAgICAgYmFzZS5Qb3J0Ll9faW5p
dF9fKHNlbGYsIHBvcnRfbmFtZSwgb3B0aW9ucykKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcG9y
dF9uYW1lPU5vbmUsIG9wdGlvbnM9Tm9uZSwgKiprd2FyZ3MpOgorICAgICAgICBiYXNlLlBvcnQu
X19pbml0X18oc2VsZiwgcG9ydF9uYW1lLCBvcHRpb25zLCAqKmt3YXJncykKICAgICAgICAgc2Vs
Zi5fY2hyb21pdW1fYmFzZV9kaXIgPSBOb25lCiAKICAgICBkZWYgYmFzZWxpbmVfcGF0aChzZWxm
KToKQEAgLTExOCwxMCArMTIwLDggQEAgY2xhc3MgQ2hyb21pdW1Qb3J0KGJhc2UuUG9ydCk6CiAg
ICAgICAgIHJldHVybiByZXN1bHQKIAogICAgIGRlZiBjaGVja19zeXNfZGVwcyhzZWxmLCBuZWVk
c19odHRwKToKLSAgICAgICAgZHVtcF9yZW5kZXJfdHJlZV9iaW5hcnlfcGF0aCA9IHNlbGYuX3Bh
dGhfdG9fZHJpdmVyKCkKLSAgICAgICAgcHJvYyA9IHN1YnByb2Nlc3MuUG9wZW4oW2R1bXBfcmVu
ZGVyX3RyZWVfYmluYXJ5X3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICct
LWNoZWNrLWxheW91dC10ZXN0LXN5cy1kZXBzJ10pCi0gICAgICAgIGlmIHByb2Mud2FpdCgpOgor
ICAgICAgICBjbWQgPSBbc2VsZi5fcGF0aF90b19kcml2ZXIoKSwgJy0tY2hlY2stbGF5b3V0LXRl
c3Qtc3lzLWRlcHMnXQorICAgICAgICBpZiBzZWxmLl9leGVjdXRpdmUucnVuX2NvbW1hbmQoY21k
LCByZXR1cm5fZXhpdF9jb2RlPVRydWUpOgogICAgICAgICAgICAgX2xvZy5lcnJvcignU3lzdGVt
IGRlcGVuZGVuY2llcyBjaGVjayBmYWlsZWQuJykKICAgICAgICAgICAgIF9sb2cuZXJyb3IoJ1Rv
IG92ZXJyaWRlLCBpbnZva2Ugd2l0aCAtLW5vY2hlY2stc3lzLWRlcHMnKQogICAgICAgICAgICAg
X2xvZy5lcnJvcignJykKQEAgLTE3NiwxOCArMTc2LDIwIEBAIGNsYXNzIENocm9taXVtUG9ydChi
YXNlLlBvcnQpOgogICAgICAgICAgICAgIyBGSVhNRTogVGhpcyBzaG91bGQgdXNlIFVzZXIub3Bl
bl91cmwKICAgICAgICAgICAgIHdlYmJyb3dzZXIub3Blbih1cmksIG5ldz0xKQogICAgICAgICBl
bHNlOgorICAgICAgICAgICAgIyBOb3RlOiBOb3QgdGhyZWFkIHNhZmU6IGh0dHA6Ly9idWdzLnB5
dGhvbi5vcmcvaXNzdWUyMzIwCiAgICAgICAgICAgICBzdWJwcm9jZXNzLlBvcGVuKFtzZWxmLl9w
YXRoX3RvX2RyaXZlcigpLCB1cmldKQogCiAgICAgZGVmIGNyZWF0ZV9kcml2ZXIoc2VsZiwgaW1h
Z2VfcGF0aCwgb3B0aW9ucyk6CiAgICAgICAgICIiIlN0YXJ0cyBhIG5ldyBEcml2ZXIgYW5kIHJl
dHVybnMgYSBoYW5kbGUgdG8gaXQuIiIiCiAgICAgICAgIGlmIHNlbGYuX29wdGlvbnMudXNlX2Ry
dDoKLSAgICAgICAgICAgIHJldHVybiB3ZWJraXQuV2ViS2l0RHJpdmVyKHNlbGYsIGltYWdlX3Bh
dGgsIG9wdGlvbnMpCi0gICAgICAgIHJldHVybiBDaHJvbWl1bURyaXZlcihzZWxmLCBpbWFnZV9w
YXRoLCBvcHRpb25zKQorICAgICAgICAgICAgcmV0dXJuIHdlYmtpdC5XZWJLaXREcml2ZXIoc2Vs
ZiwgaW1hZ2VfcGF0aCwgb3B0aW9ucywgZXhlY3R1aXZlPXNlbGYuX2V4ZWN1dGl2ZSkKKyAgICAg
ICAgcmV0dXJuIENocm9taXVtRHJpdmVyKHNlbGYsIGltYWdlX3BhdGgsIG9wdGlvbnMsIGV4ZWN0
dWl2ZT1zZWxmLl9leGVjdXRpdmUpCiAKICAgICBkZWYgc3RhcnRfaGVscGVyKHNlbGYpOgogICAg
ICAgICBoZWxwZXJfcGF0aCA9IHNlbGYuX3BhdGhfdG9faGVscGVyKCkKICAgICAgICAgaWYgaGVs
cGVyX3BhdGg6CiAgICAgICAgICAgICBfbG9nLmRlYnVnKCJTdGFydGluZyBsYXlvdXQgaGVscGVy
ICVzIiAlIGhlbHBlcl9wYXRoKQorICAgICAgICAgICAgIyBOb3RlOiBOb3QgdGhyZWFkIHNhZmU6
IGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUyMzIwCiAgICAgICAgICAgICBzZWxmLl9oZWxw
ZXIgPSBzdWJwcm9jZXNzLlBvcGVuKFtoZWxwZXJfcGF0aF0sCiAgICAgICAgICAgICAgICAgc3Rk
aW49c3VicHJvY2Vzcy5QSVBFLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLCBzdGRlcnI9Tm9uZSkK
ICAgICAgICAgICAgIGlzX3JlYWR5ID0gc2VsZi5faGVscGVyLnN0ZG91dC5yZWFkbGluZSgpCkBA
IC0yNzMsNyArMjc1LDcgQEAgY2xhc3MgQ2hyb21pdW1Qb3J0KGJhc2UuUG9ydCk6CiBjbGFzcyBD
aHJvbWl1bURyaXZlcihiYXNlLkRyaXZlcik6CiAgICAgIiIiQWJzdHJhY3QgaW50ZXJmYWNlIGZv
ciB0ZXN0X3NoZWxsLiIiIgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHBvcnQsIGltYWdlX3Bh
dGgsIG9wdGlvbnMpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwb3J0LCBpbWFnZV9wYXRoLCBv
cHRpb25zLCBleGVjdXRpdmU9RXhlY3V0aXZlKCkpOgogICAgICAgICBzZWxmLl9wb3J0ID0gcG9y
dAogICAgICAgICBzZWxmLl9jb25maWd1cmF0aW9uID0gcG9ydC5fb3B0aW9ucy5jb25maWd1cmF0
aW9uCiAgICAgICAgICMgRklYTUU6IF9vcHRpb25zIGlzIHZlcnkgY29uZnVzaW5nLCBiZWNhdXNl
IGl0J3Mgbm90IGFuIE9wdGlvbnMoKSBlbGVtZW50LgpAQCAtMjgxLDYgKzI4Myw3IEBAIGNsYXNz
IENocm9taXVtRHJpdmVyKGJhc2UuRHJpdmVyKToKICAgICAgICAgIyBiZSBwYXNzZWQgaW50byAu
c3RhcnQoKQogICAgICAgICBzZWxmLl9vcHRpb25zID0gb3B0aW9ucwogICAgICAgICBzZWxmLl9p
bWFnZV9wYXRoID0gaW1hZ2VfcGF0aAorICAgICAgICBzZWxmLl9leGVjdXRpdmUgPSBleGVjdXRp
dmUKIAogICAgIGRlZiBzdGFydChzZWxmKToKICAgICAgICAgIyBGSVhNRTogU2hvdWxkIGJlIGFu
IGVycm9yIHRvIGNhbGwgdGhpcyBtZXRob2QgdHdpY2UuCkBAIC00MDIsOCArNDA1LDQgQEAgY2xh
c3MgQ2hyb21pdW1Ecml2ZXIoYmFzZS5Ecml2ZXIpOgogICAgICAgICAgICAgICAgIGlmIHNlbGYu
X3Byb2MucG9sbCgpIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgICAgIF9sb2cud2FybmluZygn
c3RvcHBpbmcgdGVzdCBkcml2ZXIgdGltZWQgb3V0LCAnCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAna2lsbGluZyBpdCcpCi0gICAgICAgICAgICAgICAgICAgICMgRklYTUU6IFRo
aXMgc2hvdWxkIHVzZSBFeGVjdXRpdmUuCi0gICAgICAgICAgICAgICAgICAgIG51bGwgPSBvcGVu
KG9zLmRldm51bGwsICJ3IikgICMgRG9lcyB0aGlzIG5lZWQgYW4gZW5jb2Rpbmc/Ci0gICAgICAg
ICAgICAgICAgICAgIHN1YnByb2Nlc3MuUG9wZW4oWyJraWxsIiwgIi05IiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIoc2VsZi5fcHJvYy5waWQpXSwgc3RkZXJyPW51
bGwpCi0gICAgICAgICAgICAgICAgICAgIG51bGwuY2xvc2UoKQorICAgICAgICAgICAgICAgICAg
ICBzZWxmLl9leGVjdXRpdmUua2lsbF9wcm9jZXNzKHNlbGYuX3Byb2MucGlkKQpkaWZmIC0tZ2l0
IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1
bV93aW4ucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L2Nocm9taXVtX3dpbi5weQppbmRleCAyZTNkZTg1NWU5NTA0ZWM4NmM2YmM2MjUyNTM4NWMxYTQz
ZDZmN2M0Li41NWU2ODk2MjUyMzQ4NmJmM2RlOWY2YzJjZTg1NGFjYTM0NGFmMjMwIDEwMDY0NAot
LS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9t
aXVtX3dpbi5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L2Nocm9taXVtX3dpbi5weQpAQCAtMTQ0LDYgKzE0NCwxMCBAQCBjbGFzcyBDaHJvbWl1
bVdpblBvcnQoY2hyb21pdW0uQ2hyb21pdW1Qb3J0KToKICAgICAgICAgcmV0dXJuIHNlbGYucGF0
aF9mcm9tX2Nocm9taXVtX2Jhc2UoJ3RoaXJkX3BhcnR5JywgJ2N5Z3dpbicsICdiaW4nLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd2RpZmYuZXhlJykKIAor
ICAgIGRlZiBfa2lsbF9hbGwoc2VsZiwgcHJvY2Vzc19uYW1lKToKKyAgICAgICAgY21kID0gWyd0
YXNra2lsbC5leGUnLCAnL2YnLCAnL2ltJywgcHJvY2Vzc19uYW1lXQorICAgICAgICBzZWxmLl9l
eGVjdXRpdmUucnVuX2NvbW1hbmQoY21kKQorCiAgICAgZGVmIF9zaHV0X2Rvd25faHR0cF9zZXJ2
ZXIoc2VsZiwgc2VydmVyX3BpZCk6CiAgICAgICAgICIiIlNodXQgZG93biB0aGUgbGlnaHR0cGQg
d2ViIHNlcnZlci4gQmxvY2tzIHVudGlsIGl0J3MgZnVsbHkKICAgICAgICAgc2h1dCBkb3duLgpA
QCAtMTUxLDExICsxNTUsNyBAQCBjbGFzcyBDaHJvbWl1bVdpblBvcnQoY2hyb21pdW0uQ2hyb21p
dW1Qb3J0KToKICAgICAgICAgQXJnczoKICAgICAgICAgICAgIHNlcnZlcl9waWQ6IFRoZSBwcm9j
ZXNzIElEIG9mIHRoZSBydW5uaW5nIHNlcnZlci4KICAgICAgICAgIiIiCi0gICAgICAgIHN1YnBy
b2Nlc3MuUG9wZW4oKCd0YXNra2lsbC5leGUnLCAnL2YnLCAnL2ltJywgJ0xpZ2h0VFBELmV4ZScp
LAotICAgICAgICAgICAgICAgICAgICAgICAgc3RkaW49b3Blbihvcy5kZXZudWxsLCAncicpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUpLndhaXQoKQotICAgICAgICBz
dWJwcm9jZXNzLlBvcGVuKCgndGFza2tpbGwuZXhlJywgJy9mJywgJy9pbScsICdodHRwZC5leGUn
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGluPW9wZW4ob3MuZGV2bnVsbCwgJ3InKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKS53YWl0KCkKKyAgICAgICAg
IyBGSVhNRTogV2h5IGFyZSB3ZSBpZ25vcmluZyBzZXJ2ZXJfcGlkIGFuZCBjYWxsaW5nCisgICAg
ICAgICMgX2tpbGxfYWxsIGluc3RlYWQgb2YgRXhlY3V0aXZlLmtpbGxfcHJvY2VzcyhwaWQpPwor
ICAgICAgICBzZWxmLl9raWxsX2FsbCgiTGlnaHRUUEQuZXhlIikKKyAgICAgICAgc2VsZi5fa2ls
bF9hbGwoImh0dHBkLmV4ZSIpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L2h0dHBfc2VydmVyLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9odHRwX3NlcnZlci5weQppbmRleCA1OTQzYzY4
NTViYzE2YmQ2NWZkOTk5ZWZiN2E1ZGQxMmYzMTYwZjJlLi4xNDc5YzYxODExMTgwMDBlYjZlYjMy
YmUyYTIyMjMxNjBiNTQ3MWNjIDEwMDc1NQotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L2h0dHBfc2VydmVyLnB5CisrKyBiL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvaHR0cF9zZXJ2ZXIucHkKQEAgLTIxMCw5
ICsyMTAsMTEgQEAgY2xhc3MgTGlnaHR0cGQoaHR0cF9zZXJ2ZXJfYmFzZS5IdHRwU2VydmVyQmFz
ZSk6CiAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInIGFuZCBzZWxmLl9yZWdpc3Rl
cl9jeWd3aW46CiAgICAgICAgICAgICBzZXR1cF9tb3VudCA9IHNlbGYuX3BvcnRfb2JqLnBhdGhf
ZnJvbV9jaHJvbWl1bV9iYXNlKCd0aGlyZF9wYXJ0eScsCiAgICAgICAgICAgICAgICAgJ2N5Z3dp
bicsICdzZXR1cF9tb3VudC5iYXQnKQorICAgICAgICAgICAgIyBGSVhNRTogU2hvdWxkIHVzZSBF
eGVjdXRpdmUucnVuX2NvbW1hbmQKICAgICAgICAgICAgIHN1YnByb2Nlc3MuUG9wZW4oc2V0dXBf
bW91bnQpLndhaXQoKQogCiAgICAgICAgIF9sb2cuZGVidWcoJ1N0YXJ0aW5nIGh0dHAgc2VydmVy
JykKKyAgICAgICAgIyBGSVhNRTogU2hvdWxkIHVzZSBFeGVjdXRpdmUucnVuX2NvbW1hbmQKICAg
ICAgICAgc2VsZi5fcHJvY2VzcyA9IHN1YnByb2Nlc3MuUG9wZW4oc3RhcnRfY21kLCBlbnY9ZW52
KQogCiAgICAgICAgICMgV2FpdCBmb3Igc2VydmVyIHRvIHN0YXJ0LgpkaWZmIC0tZ2l0IGEvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9zZXJ2ZXJfcHJvY2Vz
cy5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvc2Vy
dmVyX3Byb2Nlc3MucHkKaW5kZXggNzA1NzNhOTk3MzUzZGZjMmVmNDY3MmI1NTY4YTUyY2VhMjcy
YmQzZS4uY2Y0ZjRhMjZjZmYyMzhjZDExNjY4NDM4ZWU1ZGJiYjllOGZmNjlhZCAxMDA2NDQKLS0t
IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9zZXJ2ZXJf
cHJvY2Vzcy5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L3NlcnZlcl9wcm9jZXNzLnB5CkBAIC0zOCw2ICszOCw4IEBAIGltcG9ydCBzdWJwcm9j
ZXNzCiBpbXBvcnQgc3lzCiBpbXBvcnQgdGltZQogCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0
ZW0uZXhlY3V0aXZlIGltcG9ydCBFeGVjdXRpdmUKKwogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2Vy
KCJ3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC5zZXJ2ZXJfcHJvY2VzcyIpCiAKIApAQCAtNDgs
MTIgKzUwLDEzIEBAIGNsYXNzIFNlcnZlclByb2Nlc3M6CiAgICAgaW5kZWZpbml0ZWx5LiBUaGUg
Y2xhc3MgYWxzbyBoYW5kbGVzIHRyYW5zcGFyZW50bHkgcmVzdGFydGluZyBwcm9jZXNzZXMKICAg
ICBhcyBuZWNlc3NhcnkgdG8ga2VlcCBpc3N1aW5nIGNvbW1hbmRzLiIiIgogCi0gICAgZGVmIF9f
aW5pdF9fKHNlbGYsIHBvcnRfb2JqLCBuYW1lLCBjbWQsIGVudj1Ob25lKToKKyAgICBkZWYgX19p
bml0X18oc2VsZiwgcG9ydF9vYmosIG5hbWUsIGNtZCwgZW52PU5vbmUsIGV4ZWN1dGl2ZT1FeGVj
dXRpdmUoKSk6CiAgICAgICAgIHNlbGYuX3BvcnQgPSBwb3J0X29iagogICAgICAgICBzZWxmLl9u
YW1lID0gbmFtZQogICAgICAgICBzZWxmLl9jbWQgPSBjbWQKICAgICAgICAgc2VsZi5fZW52ID0g
ZW52CiAgICAgICAgIHNlbGYuX3Jlc2V0KCkKKyAgICAgICAgc2VsZi5fZXhlY3V0aXZlID0gZXhl
Y3V0aXZlCiAKICAgICBkZWYgX3Jlc2V0KHNlbGYpOgogICAgICAgICBzZWxmLl9wcm9jID0gTm9u
ZQpAQCAtNjYsNiArNjksNyBAQCBjbGFzcyBTZXJ2ZXJQcm9jZXNzOgogICAgICAgICBpZiBzZWxm
Ll9wcm9jOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiJXMgYWxyZWFkeSBydW5uaW5n
IiAlIHNlbGYuX25hbWUpCiAgICAgICAgIHNlbGYuX3Jlc2V0KCkKKyAgICAgICAgIyBjbG9zZV9m
ZHMgaXMgYSB3b3JrYXJvdW5kIGZvciBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMjMyMAog
ICAgICAgICBjbG9zZV9mZHMgPSBzeXMucGxhdGZvcm0gbm90IGluICgnd2luMzInLCAnY3lnd2lu
JykKICAgICAgICAgc2VsZi5fcHJvYyA9IHN1YnByb2Nlc3MuUG9wZW4oc2VsZi5fY21kLCBzdGRp
bj1zdWJwcm9jZXNzLlBJUEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCkBAIC0yMTUsMTAgKzIxOSw2IEBAIGNsYXNzIFNlcnZl
clByb2Nlc3M6CiAgICAgICAgICAgICBpZiBzZWxmLl9wcm9jLnBvbGwoKSBpcyBOb25lOgogICAg
ICAgICAgICAgICAgIF9sb2cud2FybmluZygnc3RvcHBpbmcgJXMgdGltZWQgb3V0LCBraWxsaW5n
IGl0JyAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX25hbWUpCi0gICAgICAg
ICAgICAgICAgIyBGSVhNRTogVGhpcyBzaG91bGQgdXNlIEV4ZWN1dGl2ZS4KLSAgICAgICAgICAg
ICAgICBudWxsID0gb3Blbihvcy5kZXZudWxsLCAidyIpCi0gICAgICAgICAgICAgICAgc3VicHJv
Y2Vzcy5Qb3BlbihbImtpbGwiLCAiLTkiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0cihzZWxmLl9wcm9jLnBpZCldLCBzdGRlcnI9bnVsbCkKLSAgICAgICAgICAgICAgICBu
dWxsLmNsb3NlKCkKKyAgICAgICAgICAgICAgICBzZWxmLl9leGVjdXRpdmUua2lsbF9wcm9jZXNz
KHNlbGYuX3Byb2MucGlkKQogICAgICAgICAgICAgICAgIF9sb2cud2FybmluZygna2lsbGVkJykK
ICAgICAgICAgc2VsZi5fcmVzZXQoKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXQucHkgYi9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weQppbmRleCBmOGQ3OTIxNGEyOGRm
MjJkNjFhY2I5NWNlOWUyNGE4NDExMDFiOTcyLi5jNDhlNDUwNjg0Y2U0YjcyN2UyYTI0OGY1NGI5
Mzg0ZWZhOTMzOThmIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weQpAQCAtNDUsNiArNDUsOCBAQCBpbXBvcnQg
c3lzCiBpbXBvcnQgdGltZQogaW1wb3J0IHdlYmJyb3dzZXIKIAorZnJvbSB3ZWJraXRweS5jb21t
b24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgRXhlY3V0aXZlCisKIGltcG9ydCB3ZWJraXRweS5j
b21tb24uc3lzdGVtLm9zcGF0aCBhcyBvc3BhdGgKIGltcG9ydCB3ZWJraXRweS5sYXlvdXRfdGVz
dHMucG9ydC5iYXNlIGFzIGJhc2UKIGltcG9ydCB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC5z
ZXJ2ZXJfcHJvY2VzcyBhcyBzZXJ2ZXJfcHJvY2VzcwpAQCAtNTUsOCArNTcsOCBAQCBfbG9nID0g
bG9nZ2luZy5nZXRMb2dnZXIoIndlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0LndlYmtpdCIpCiBj
bGFzcyBXZWJLaXRQb3J0KGJhc2UuUG9ydCk6CiAgICAgIiIiV2ViS2l0IGltcGxlbWVudGF0aW9u
IG9mIHRoZSBQb3J0IGNsYXNzLiIiIgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHBvcnRfbmFt
ZT1Ob25lLCBvcHRpb25zPU5vbmUpOgotICAgICAgICBiYXNlLlBvcnQuX19pbml0X18oc2VsZiwg
cG9ydF9uYW1lLCBvcHRpb25zKQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwb3J0X25hbWU9Tm9u
ZSwgb3B0aW9ucz1Ob25lLCAqKmt3YXJncyk6CisgICAgICAgIGJhc2UuUG9ydC5fX2luaXRfXyhz
ZWxmLCBwb3J0X25hbWUsIG9wdGlvbnMsICoqa3dhcmdzKQogICAgICAgICBzZWxmLl9jYWNoZWRf
YnVpbGRfcm9vdCA9IE5vbmUKICAgICAgICAgc2VsZi5fY2FjaGVkX2FwYWNoZV9wYXRoID0gTm9u
ZQogCkBAIC0xOTUsNyArMTk3LDcgQEAgY2xhc3MgV2ViS2l0UG9ydChiYXNlLlBvcnQpOgogICAg
ICAgICB3ZWJicm93c2VyLm9wZW4odXJpLCBuZXc9MSkKIAogICAgIGRlZiBjcmVhdGVfZHJpdmVy
KHNlbGYsIGltYWdlX3BhdGgsIG9wdGlvbnMpOgotICAgICAgICByZXR1cm4gV2ViS2l0RHJpdmVy
KHNlbGYsIGltYWdlX3BhdGgsIG9wdGlvbnMpCisgICAgICAgIHJldHVybiBXZWJLaXREcml2ZXIo
c2VsZiwgaW1hZ2VfcGF0aCwgb3B0aW9ucywgZXhlY3V0aXZlPXNlbGYuX2V4ZWN1dGl2ZSkKIAog
ICAgIGRlZiB0ZXN0X2Jhc2VfcGxhdGZvcm1fbmFtZXMoc2VsZik6CiAgICAgICAgICMgQXQgdGhl
IG1vbWVudCB3ZSBkb24ndCB1c2UgdGVzdCBwbGF0Zm9ybSBuYW1lcywgYnV0IHdlIGhhdmUKQEAg
LTM0Nyw3ICszNDksNyBAQCBjbGFzcyBXZWJLaXRQb3J0KGJhc2UuUG9ydCk6CiBjbGFzcyBXZWJL
aXREcml2ZXIoYmFzZS5Ecml2ZXIpOgogICAgICIiIldlYktpdCBpbXBsZW1lbnRhdGlvbiBvZiB0
aGUgRHVtcFJlbmRlclRyZWUgaW50ZXJmYWNlLiIiIgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYs
IHBvcnQsIGltYWdlX3BhdGgsIGRyaXZlcl9vcHRpb25zKToKKyAgICBkZWYgX19pbml0X18oc2Vs
ZiwgcG9ydCwgaW1hZ2VfcGF0aCwgZHJpdmVyX29wdGlvbnMsIGV4ZWN1dGl2ZT1FeGVjdXRpdmUo
KSk6CiAgICAgICAgIHNlbGYuX3BvcnQgPSBwb3J0CiAgICAgICAgICMgRklYTUU6IGRyaXZlcl9v
cHRpb25zIGlzIG5ldmVyIHVzZWQuCiAgICAgICAgIHNlbGYuX2ltYWdlX3BhdGggPSBpbWFnZV9w
YXRoCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L3dlYnNvY2tldF9zZXJ2ZXIucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L3dlYnNvY2tldF9zZXJ2ZXIucHkKaW5kZXggZWQ2ZDg3MWY4NTQ2
ODNmZmFiMDQ0YWMxMjc1NDY1YTQwMmY4Y2JjMy4uMjliN2NhMzQ5OTUyZjc0YmI4NzAzZDY1ZGJl
ZDA5YWFhNzA1NjRlZSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC93ZWJzb2NrZXRfc2VydmVyLnB5CisrKyBiL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Vic29ja2V0X3NlcnZlci5weQpAQCAt
MjA3LDYgKzIwNyw3IEBAIGNsYXNzIFB5V2ViU29ja2V0KGh0dHBfc2VydmVyLkxpZ2h0dHBkKToK
ICAgICAgICAgICAgICAgICAgICBzZWxmLl9zZXJ2ZXJfbmFtZSwgc2VsZi5fcG9ydCkpCiAgICAg
ICAgIF9sb2cuZGVidWcoJ2NtZGxpbmU6ICVzJyAlICcgJy5qb2luKHN0YXJ0X2NtZCkpCiAgICAg
ICAgICMgRklYTUU6IFdlIHNob3VsZCBkaXJlY3QgdGhpcyBjYWxsIHRocm91Z2ggRXhlY3V0aXZl
IGZvciB0ZXN0aW5nLgorICAgICAgICAjIE5vdGU6IE5vdCB0aHJlYWQgc2FmZTogaHR0cDovL2J1
Z3MucHl0aG9uLm9yZy9pc3N1ZTIzMjAKICAgICAgICAgc2VsZi5fcHJvY2VzcyA9IHN1YnByb2Nl
c3MuUG9wZW4oc3RhcnRfY21kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdGRpbj1vcGVuKG9zLmRldm51bGwsICdyJyksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zZWxmLl93c291dCwKZGlmZiAtLWdpdCBhL1dlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3JlYmFzZWxpbmVfY2hyb21pdW1f
d2Via2l0X3Rlc3RzLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHMucHkKaW5kZXggMTYzMzU0YjAyODVl
ODAxN2ViNDBkNGQyMTc3OGU2MzUxMjE2YWVmZC4uMjExY2U5MzIzNTQwOGNkY2ExNGM3ZjRiZTQ5
MDM5Yjc1ZDM2YWZiNCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHMucHkKKysrIGIvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcmViYXNlbGluZV9jaHJvbWl1
bV93ZWJraXRfdGVzdHMucHkKQEAgLTU4LDYgKzU4LDggQEAgaW1wb3J0IHVybGxpYgogaW1wb3J0
IHdlYmJyb3dzZXIKIGltcG9ydCB6aXBmaWxlCiAKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3Rl
bS5leGVjdXRpdmUgaW1wb3J0IHJ1bl9jb21tYW5kCisKIGltcG9ydCBwb3J0CiBmcm9tIGxheW91
dF9wYWNrYWdlIGltcG9ydCB0ZXN0X2V4cGVjdGF0aW9ucwogZnJvbSB0ZXN0X3R5cGVzIGltcG9y
dCBpbWFnZV9kaWZmCkBAIC05Niw3ICs5OCw5IEBAIGRlZiBydW5fc2hlbGxfd2l0aF9yZXR1cm5f
Y29kZShjb21tYW5kLCBwcmludF9vdXRwdXQ9RmFsc2UpOgogICAgICIiIgogCiAgICAgIyBVc2Ug
YSBzaGVsbCBmb3Igc3ViY29tbWFuZHMgb24gV2luZG93cyB0byBnZXQgYSBQQVRIIHNlYXJjaC4K
KyAgICAjIEZJWE1FOiBzaGVsbD1UcnVlIGlzIGEgdHJhaWwgb2YgdGVhcnMsIGFuZCBzaG91bGQg
YmUgcmVtb3ZlZC4KICAgICB1c2Vfc2hlbGwgPSBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnd2lu
JykKKyAgICAjIE5vdGU6IE5vdCB0aHJlYWQgc2FmZTogaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9p
c3N1ZTIzMjAKICAgICBwID0gc3VicHJvY2Vzcy5Qb3Blbihjb21tYW5kLCBzdGRvdXQ9c3VicHJv
Y2Vzcy5QSVBFLAogICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlNU
RE9VVCwgc2hlbGw9dXNlX3NoZWxsKQogICAgIGlmIHByaW50X291dHB1dDoKQEAgLTI4MSwxMCAr
Mjg1LDEwIEBAIGNsYXNzIFJlYmFzZWxpbmVyKG9iamVjdCk6CiAgICAgZGVmIGdldF9yZWJhc2Vs
aW5pbmdfdGVzdHMoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLl9yZWJhc2VsaW5pbmdfdGVz
dHMKIAorICAgICMgRklYTUU6IENhbGxlcnMgc2hvdWxkIHVzZSBzY20ucHkgaW5zdGVhZC4KICAg
ICBkZWYgX2dldF9yZXBvX3R5cGUoc2VsZik6CiAgICAgICAgICIiIkdldCB0aGUgcmVwb3NpdG9y
eSB0eXBlIHRoYXQgY2xpZW50IGlzIHVzaW5nLiIiIgotICAgICAgICBvdXRwdXQsIHJldHVybl9j
b2RlID0gcnVuX3NoZWxsX3dpdGhfcmV0dXJuX2NvZGUoWydzdm4nLCAnaW5mbyddLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmFsc2Up
CisgICAgICAgIHJldHVybl9jb2RlID0gcnVuX2NvbW1hbmQoWydzdm4nLCAnaW5mbyddLCByZXR1
cm5fZXhpdF9jb2RlPVRydWUpCiAgICAgICAgIGlmIHJldHVybl9jb2RlID09IDA6CiAgICAgICAg
ICAgICByZXR1cm4gUkVQT19TVk4KIApAQCAtNjA4LDYgKzYxMiw3IEBAIGNsYXNzIFJlYmFzZWxp
bmVyKG9iamVjdCk6CiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBfbG9nLmluZm8oJ05vIHRl
c3Qgd2FzIHJlYmFzZWxpbmVkIHNvIG5vdGhpbmcgdG8gcmVtb3ZlLicpCiAKKyAgICAjIEZJWE1F
OiBDYWxsZXJzIHNob3VsZCBtb3ZlIHRvIFNDTS5hZGQgaW5zdGVhZC4KICAgICBkZWYgX3N2bl9h
ZGQoc2VsZiwgZmlsZW5hbWUpOgogICAgICAgICAiIiJBZGQgdGhlIGZpbGUgdG8gU1ZOIHJlcG9z
aXRvcnkuCiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>