<?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>47220</bug_id>
          
          <creation_ts>2010-10-05 15:37:11 -0700</creation_ts>
          <short_desc>new-run-webkit-tests - enable cygwin support for chromium win</short_desc>
          <delta_ts>2010-10-18 17:41:17 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>47595</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Pranke">dpranke</reporter>
          <assigned_to name="Dirk Pranke">dpranke</assigned_to>
          <cc>abarth</cc>
    
    <cc>aroben</cc>
    
    <cc>eric</cc>
    
    <cc>ojan</cc>
    
    <cc>pkasting</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>289926</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-10-05 15:37:11 -0700</bug_when>
    <thetext>new-run-webkit-tests - enable cygwin support for chromium win</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289928</commentid>
    <comment_count>1</comment_count>
      <attachid>69852</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-10-05 15:37:43 -0700</bug_when>
    <thetext>Created attachment 69852
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289930</commentid>
    <comment_count>2</comment_count>
      <attachid>69852</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-10-05 15:38:45 -0700</bug_when>
    <thetext>Comment on attachment 69852
Patch

work in progress ... not ready for review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289998</commentid>
    <comment_count>3</comment_count>
      <attachid>69870</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-10-05 17:45:21 -0700</bug_when>
    <thetext>Created attachment 69870
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291856</commentid>
    <comment_count>4</comment_count>
      <attachid>69870</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-10-08 14:19:12 -0700</bug_when>
    <thetext>Comment on attachment 69870
Patch

whoops ... definitely not intended for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292257</commentid>
    <comment_count>5</comment_count>
      <attachid>70387</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-10-09 22:08:28 -0700</bug_when>
    <thetext>Created attachment 70387
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292258</commentid>
    <comment_count>6</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-10-09 22:10:00 -0700</bug_when>
    <thetext>right, this patch should actually be the &quot;right&quot; way to do it.

Note that running under cygwin appears to be substantially slower than running under win32, so I wouldn&apos;t recommend it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292853</commentid>
    <comment_count>7</comment_count>
      <attachid>70387</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-10-11 21:10:38 -0700</bug_when>
    <thetext>Comment on attachment 70387
Patch

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

Please see nits above, but generally looks fine.

&gt; WebKitTools/Scripts/webkitpy/common/system/path.py:41
&gt; +def cygpath(path, executive):

I&apos;m generally scared of free functions, but it certainly fits the pattern of the file, and I&apos;m not sure I have a better option to suggest.

&gt; WebKitTools/Scripts/webkitpy/common/system/path.py:45
&gt; +    # FIXME: this may not be correct in every situation, but forking
&gt; +    # cygpath is very slow and seems to contribute to deadlocking issues
&gt; +    # with threads.

The deadlock issue is a risk any time we fork a process from a non-main thread.  If I remember correctly, it&apos;s a race regarding the list of open pipes in subprocess?  So yes, it contributes, but we should be specific as to why or just not mention it at all, like:
FIXME: Forking to execute cygpath is slow, so we use a short-cut for some paths.

&gt; WebKitTools/Scripts/webkitpy/common/system/path.py:50
&gt; +    return executive.run_command([&apos;cygpath&apos;, &apos;-wa&apos;, path],

I wonder how often we execute this.  This might explain part of the slowness you see for CYGWIN NRWT.

&gt; WebKitTools/Scripts/webkitpy/layout_tests/port/chromium.py:151
&gt; +            cmd = [executable, &apos;--diff&apos;,
&gt; +                   self._convert_path(expected_filename),
&gt; +                   self._convert_path(actual_filename),
&gt; +                   self._convert_path(diff_filename)]

This seems like were likely to get this wrong. :)

We could add some code to executive which looked for / in argument names and ran the cygpath stuff automatically unless we passed a no_automatic_cygpath=false or something.  Maybe that&apos;s too magical?

Also (and I&apos;m not sure this is worth it, but I should mention).  It might make sense to stick them all in a tuple and use map(self._convert_path, tuple) depending.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292920</commentid>
    <comment_count>8</comment_count>
      <attachid>70387</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-10-12 06:35:32 -0700</bug_when>
    <thetext>Comment on attachment 70387
Patch

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

&gt;&gt; WebKitTools/Scripts/webkitpy/common/system/path.py:50
&gt;&gt; +    return executive.run_command([&apos;cygpath&apos;, &apos;-wa&apos;, path],
&gt; 
&gt; I wonder how often we execute this.  This might explain part of the slowness you see for CYGWIN NRWT.

old-run-webkit-tests keeps a couple of persistent cygpath processes around, feeding them paths on stdin and reading the converted paths from stdout. When we implemented this it sped things up substantially. You can see the code we use here: &lt;http://trac.webkit.org/browser/trunk/WebKitTools/Scripts/old-run-webkit-tests?rev=69385#L1694&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>293138</commentid>
    <comment_count>9</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-10-12 15:28:51 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 70387 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=70387&amp;action=review
&gt; 
&gt; Please see nits above, but generally looks fine.
&gt; 
&gt; &gt; WebKitTools/Scripts/webkitpy/common/system/path.py:41
&gt; &gt; +def cygpath(path, executive):
&gt; 
&gt; I&apos;m generally scared of free functions, but it certainly fits the pattern of the file, and I&apos;m not sure I have a better option to suggest.
&gt;

Okay. I&apos;ll leave it as is.
 
&gt; &gt; WebKitTools/Scripts/webkitpy/common/system/path.py:45
&gt; &gt; +    # FIXME: this may not be correct in every situation, but forking
&gt; &gt; +    # cygpath is very slow and seems to contribute to deadlocking issues
&gt; &gt; +    # with threads.
&gt; 
&gt; The deadlock issue is a risk any time we fork a process from a non-main thread.  If I remember correctly, it&apos;s a race regarding the list of open pipes in subprocess?  So yes, it contributes, but we should be specific as to why or just not mention it at all, like:
&gt; FIXME: Forking to execute cygpath is slow, so we use a short-cut for some paths.
&gt; 

Will update accordingly.

&gt; &gt; WebKitTools/Scripts/webkitpy/common/system/path.py:50
&gt; &gt; +    return executive.run_command([&apos;cygpath&apos;, &apos;-wa&apos;, path],
&gt; 
&gt; I wonder how often we execute this.  This might explain part of the slowness you see for CYGWIN NRWT.
&gt; 

This gets called once per test to convert the test file name into a file:// URI; until I rearranged the code in the TestInfo constructor, this was getting called all up front, leading to a horrendous startup cost. 

So, it certainly makes things slow, but I think just generally speaking cygwin is substantially slower than native windows.

In addition, it&apos;s called whenever we need to do an ImageDiff (which is not very frequent).

&gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/port/chromium.py:151
&gt; &gt; +            cmd = [executable, &apos;--diff&apos;,
&gt; &gt; +                   self._convert_path(expected_filename),
&gt; &gt; +                   self._convert_path(actual_filename),
&gt; &gt; +                   self._convert_path(diff_filename)]
&gt; 
&gt; This seems like were likely to get this wrong. :)
&gt; 
&gt; We could add some code to executive which looked for / in argument names and ran the cygpath stuff automatically unless we passed a no_automatic_cygpath=false or something.  Maybe that&apos;s too magical?
&gt; 

We only want to call this routine when we&apos;re launching a win32 process directly and need to convert filenames. I would be worried about trying to do anything &quot;clever&quot; that would try to guess at when the right time to do this is or how to do the tokenizing safely. 

I will add a comment explaining what&apos;s going on here, but apart from that I think it&apos;s best to leave the code as simple and straightforward.

&gt; Also (and I&apos;m not sure this is worth it, but I should mention).  It might make sense to stick them all in a tuple and use map(self._convert_path, tuple) depending.

I think using a map will just obscure things in this case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>293140</commentid>
    <comment_count>10</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-10-12 15:30:52 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 70387 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=70387&amp;action=review
&gt; 
&gt; &gt;&gt; WebKitTools/Scripts/webkitpy/common/system/path.py:50
&gt; &gt;&gt; +    return executive.run_command([&apos;cygpath&apos;, &apos;-wa&apos;, path],
&gt; &gt; 
&gt; &gt; I wonder how often we execute this.  This might explain part of the slowness you see for CYGWIN NRWT.
&gt; 
&gt; old-run-webkit-tests keeps a couple of persistent cygpath processes around, feeding them paths on stdin and reading the converted paths from stdout. When we implemented this it sped things up substantially. You can see the code we use here: &lt;http://trac.webkit.org/browser/trunk/WebKitTools/Scripts/old-run-webkit-tests?rev=69385#L1694&gt;.

That&apos;s definitely an alternative. It&apos;s still gonna be slower than just doing the conversion directly in the python code, of course, but it&apos;s also safer.

It&apos;s unclear to me how important supporting this code path is, how unsafe it is, and how performance-sensitive it is. Chromium-win isn&apos;t normally run under cygwin, so this doesn&apos;t matter to the bots. 

For regular webkit win, I wonder if it&apos;s better to run the bots directly under Win32 as well, rather than trying to tune the cywin path?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>293164</commentid>
    <comment_count>11</comment_count>
      <attachid>70569</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-10-12 16:11:12 -0700</bug_when>
    <thetext>Created attachment 70569
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>293225</commentid>
    <comment_count>12</comment_count>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2010-10-12 17:46:25 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #8)
&gt; &gt; old-run-webkit-tests keeps a couple of persistent cygpath processes around, feeding them paths on stdin and reading the converted paths from stdout.
&gt; 
&gt; That&apos;s definitely an alternative. It&apos;s still gonna be slower than just doing the conversion directly in the python code, of course, but it&apos;s also safer.
&gt; 
&gt; It&apos;s unclear to me how important supporting this code path is, how unsafe it is, and how performance-sensitive it is. Chromium-win isn&apos;t normally run under cygwin, so this doesn&apos;t matter to the bots.

If it&apos;s just people like me running manually, then the safety factor of consistently using the cygpath pipe method seems more valuable than the &quot;greatest possible raw speed&quot; route.  But like you I&apos;m uncertain whether that&apos;s the only audience.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>293261</commentid>
    <comment_count>13</comment_count>
      <attachid>70581</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-10-12 21:24:10 -0700</bug_when>
    <thetext>Created attachment 70581
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>293264</commentid>
    <comment_count>14</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-10-12 21:40:11 -0700</bug_when>
    <thetext>Committed r69638: &lt;http://trac.webkit.org/changeset/69638&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>293265</commentid>
    <comment_count>15</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-10-12 21:41:36 -0700</bug_when>
    <thetext>note that I fixed the changelog in the last version of the patch before I landed it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>293373</commentid>
    <comment_count>16</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-10-13 05:50:06 -0700</bug_when>
    <thetext>This seems to have broken Apple&apos;s Windows bots: http://build.webkit.org/builders/Windows%20Release%20%28Tests%29/builds/5098/steps/webkitpy-test/logs/stdio</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>293917</commentid>
    <comment_count>17</comment_count>
      <attachid>70702</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-10-13 20:12:07 -0700</bug_when>
    <thetext>Created attachment 70702
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>293918</commentid>
    <comment_count>18</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-10-13 20:12:55 -0700</bug_when>
    <thetext>fix was rolled out, so reopening.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>293920</commentid>
    <comment_count>19</comment_count>
      <attachid>70702</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-10-13 20:17:33 -0700</bug_when>
    <thetext>Comment on attachment 70702
Patch

This is a revised version of the patch that implements a slow, conservative version, a fast version, and a version with a long-running cygpath process open.

It&apos;s a bit unclear which version is the best. The fast version is, well, fast, but may not work correctly in some cygwin configurations. The slow version is slow (test-webkitpy is almost 2x slower). The long-running cygpath version seems to work fine but python coughs up an error at the end of running test-webkitpy that I can&apos;t track down a reason for.

The error is something like:

Exception AttributeError: &quot;&apos;NoneType&apos; object has no attribute &apos;error&apos;&quot; in &lt;bound
 method Popen.__del__ of &lt;subprocess.Popen object at 0x7e6e966c&gt;&gt; ignored

which makes me think something odd is happening during cleanup at process exit. This doesn&apos;t seem to happen except when running test-webkitpy, which changes the logging system in such a way as to make me think that this message is normally suppressed.

At any rate, It would be great if I can get some feedback on the different approaches. Adam, in particular it would be great if you can confirm that this patch works on your system and the benchmarking results are similar to mine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294924</commentid>
    <comment_count>20</comment_count>
      <attachid>70702</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-10-15 14:34:18 -0700</bug_when>
    <thetext>Comment on attachment 70702
Patch

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

I&apos;m generally a fan of this change.  I feel like there is a bit much going on for my little brain to follow it all, but that may still be OK.

Paths forward:
1. Use the magic of git (commit -i perhaps?) to split out the simple changes here and just get them rubberstamped and landed.
2. Land pretty-much as is and iterate from there.

If 1. sounds easy to you, lets do that.  Otherwise I could be convinced on #2.

If you want to go down #2, post a patch for review with the nits fixed and I&apos;ll r+ it.  Patches tend to be easier to understand on a second reading anyway.

Thanks!

&gt; WebKitTools/Scripts/webkitpy/common/system/path.py:78
&gt; +_cygpath_global_lock = None
&gt; +_cygpath_global_object = None

Can we make these class members and have them still be global?  Then you can use self. or cls. to access them instead of global.

&gt; WebKitTools/Scripts/webkitpy/common/system/path.py:81
&gt; +def cygpath(path):

This method is a bit difficult to process at this size.  I wonder if there is something which coudl be broken out of this?

&gt; WebKitTools/Scripts/webkitpy/layout_tests/deduplicate_tests_unittest.py:210
&gt; +if __name__ == &apos;__main__&apos;:
&gt; +    unittest.main()

We&apos;ve slowly been removing these and just running individual modules using &quot;test-webkitpy webkitpy.layout_tests.deduplicate_tests_unittest&quot; for example.

&gt; WebKitTools/Scripts/webkitpy/layout_tests/port/chromium.py:354
&gt; +    def _convert_path(self, path):

Why is _convert_path a port thing?  Seems it&apos;s a FileSystem thing.  Maybe just a path() method in a common.filesystem.py?  Doesn&apos;t have to be in this patch, but just thinking about the proper long term place for this.  Especially with your previous tool.filesystem() proposal for handling mocking open, exists, etc. (Which Adam and I both are *huge* fans of.)

Oh, I guess we have a path module already.  Maybe the free-function goes there?  (I&apos;m failing to come up with a good (ideally short) name...

&gt; WebKitTools/Scripts/webkitpy/layout_tests/port/chromium.py:381
&gt; +            # See note above in diff_image() for why we need
&gt; +            # _convert_path().

Did we just miss the 80c boundary? ;)

&gt; WebKitTools/Scripts/webkitpy/layout_tests/port/chromium.py:382
&gt; +            driver_args.append(&quot;--pixel-tests=&quot; +

I wonder if we should have a fancy Args class which knows how to handle things like this.  A special append_path, method for example.  Donno.  Just a thought for the future.

&gt; WebKitTools/Scripts/webkitpy/layout_tests/port/chromium_unittest.py:182
&gt; +                else:
&gt; +                    return &apos;&apos;

WebKit has a policy of avoiding else after return (at least for our C++ code, and I think it should apply to python as well).

&gt; WebKitTools/Scripts/webkitpy/layout_tests/port/http_lock_unittest.py:46
&gt; +            os.unlink(self.guard_lock_file)

Seems this should have been _guard_lock_file (but obviously that&apos;s a separate change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>295100</commentid>
    <comment_count>21</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-10-15 19:39:09 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; (From update of attachment 70702 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=70702&amp;action=review
&gt; 
&gt; I&apos;m generally a fan of this change.  I feel like there is a bit much going on for my little brain to follow it all, but that may still be OK.
&gt; 
&gt; Paths forward:
&gt; 1. Use the magic of git (commit -i perhaps?) to split out the simple changes here and just get them rubberstamped and landed.
&gt; 2. Land pretty-much as is and iterate from there.
&gt; 
&gt; If 1. sounds easy to you, lets do that.  Otherwise I could be convinced on #2.
&gt; 
&gt; If you want to go down #2, post a patch for review with the nits fixed and I&apos;ll r+ it.  Patches tend to be easier to understand on a second reading anyway.
&gt; 
&gt; Thanks!
&gt; 

As we discussed in person, this version of the patch was intended to demonstrate the alternatives; I didn&apos;t want to land it as-is. We figured out how to make the long_running variant run cleanly but using an atexit() method, so we&apos;ll go with that.

&gt; &gt; WebKitTools/Scripts/webkitpy/common/system/path.py:78
&gt; &gt; +_cygpath_global_lock = None
&gt; &gt; +_cygpath_global_object = None
&gt; 
&gt; Can we make these class members and have them still be global?  Then you can use self. or cls. to access them instead of global.
&gt;

Done.
 
&gt; &gt; WebKitTools/Scripts/webkitpy/common/system/path.py:81
&gt; &gt; +def cygpath(path):
&gt; 
&gt; This method is a bit difficult to process at this size.  I wonder if there is something which coudl be broken out of this?
&gt;

It&apos;s much smaller now.
 
&gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/deduplicate_tests_unittest.py:210
&gt; &gt; +if __name__ == &apos;__main__&apos;:
&gt; &gt; +    unittest.main()
&gt; 
&gt; We&apos;ve slowly been removing these and just running individual modules using &quot;test-webkitpy webkitpy.layout_tests.deduplicate_tests_unittest&quot; for example.
&gt;

I use this all the time, so quit deleting them :)
 
&gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/port/chromium.py:354
&gt; &gt; +    def _convert_path(self, path):
&gt; 
&gt; Why is _convert_path a port thing?  Seems it&apos;s a FileSystem thing.  Maybe just a path() method in a common.filesystem.py?

_convert_path is sort of a chromium-specific thing, because it&apos;s saying for this particular usage, convert cygwin paths but nothing else. The path module doesn&apos;t have that sort of logic in it, and I&apos;m not sure if it makes sense to do so (i.e., what are we converting to? why are we leaving win32 alone? etc.)

&gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/port/chromium.py:381
&gt; &gt; +            # See note above in diff_image() for why we need
&gt; &gt; +            # _convert_path().
&gt; 
&gt; Did we just miss the 80c boundary? ;)
&gt;

No, automatic text wrapping. Fixed.
 
&gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/port/chromium.py:382
&gt; &gt; +            driver_args.append(&quot;--pixel-tests=&quot; +
&gt; 
&gt; I wonder if we should have a fancy Args class which knows how to handle things like this.  A special append_path, method for example.  Donno.  Just a thought for the future.
&gt;

Maybe. I don&apos;t feel strongly about it one way or another.
 
&gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/port/chromium_unittest.py:182
&gt; &gt; +                else:
&gt; &gt; +                    return &apos;&apos;
&gt; 
&gt; WebKit has a policy of avoiding else after return (at least for our C++ code, and I think it should apply to python as well).
&gt;

Yeah, I normally try to do this, but old habits die very hard.
 
&gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/port/http_lock_unittest.py:46
&gt; &gt; +            os.unlink(self.guard_lock_file)
&gt; 
&gt; Seems this should have been _guard_lock_file (but obviously that&apos;s a separate change.

Agreed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>295101</commentid>
    <comment_count>22</comment_count>
      <attachid>70945</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-10-15 19:44:53 -0700</bug_when>
    <thetext>Created attachment 70945
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>295102</commentid>
    <comment_count>23</comment_count>
      <attachid>70946</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-10-15 19:53:26 -0700</bug_when>
    <thetext>Created attachment 70946
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>295802</commentid>
    <comment_count>24</comment_count>
      <attachid>71094</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-10-18 15:44:43 -0700</bug_when>
    <thetext>Created attachment 71094
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>295829</commentid>
    <comment_count>25</comment_count>
      <attachid>71094</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-10-18 16:26:18 -0700</bug_when>
    <thetext>Comment on attachment 71094
Patch

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

I&apos;d like to see a new version using with_statement.  Otherwise I think this is fine.

The _Cygpath class is a bit big (does management of a singleton, as well as the nuts and bolts of talking to the process), but it&apos;s about to get a lot cleaner with &quot;with&quot;, so it may not matter.

&gt; WebKitTools/Scripts/webkitpy/common/system/path.py:53
&gt; +    lock = None

Shouldn&apos;t this be _lock?  I guess the class is already _, but hte lock seems internal.

&gt; WebKitTools/Scripts/webkitpy/common/system/path.py:58
&gt; +        if _CygPath.lock:

I would have early returned isntead.

&gt; WebKitTools/Scripts/webkitpy/common/system/path.py:59
&gt; +            _CygPath.lock.acquire()

using &quot;with&quot; here would make the locking cleaner.  No need for the try/finally then.

&gt; WebKitTools/Scripts/webkitpy/common/system/path.py:72
&gt; +        _CygPath.lock.acquire()
&gt; +        if not _CygPath.singleton:

&quot;with&quot; again would make this easier.

&gt; WebKitTools/Scripts/webkitpy/common/system/path.py:81
&gt; +        result = None
&gt; +        try:
&gt; +            result = _CygPath.singleton.convert(path)
&gt; +        finally:
&gt; +            _CygPath.lock.release()

with allows you to just return directly too.

&gt; WebKitTools/Scripts/webkitpy/common/system/path.py:86
&gt; +        self._child_process = None

Naming this _child might be sufficiently clear, and would save some typing.  Your call.

&gt; WebKitTools/Scripts/webkitpy/common/system/path.py:94
&gt; +                                               close_fds=False)

close_fds defaults to false.

&gt; WebKitTools/Scripts/webkitpy/common/system/path_unittest.py:38
&gt; +        if platform == &apos;cygwin&apos; and sys.platform != &apos;cygwin&apos;:
&gt; +            return

Sad we can&apos;t require python 2.7: http://docs.python.org/library/unittest.html#skipping-tests-and-expected-failures

&gt; WebKitTools/Scripts/webkitpy/layout_tests/port/http_lock_unittest.py:44
&gt;      def clean_all_lockfile(self):

sigh.  This is not english, obviously not your fault.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>295846</commentid>
    <comment_count>26</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-10-18 17:02:16 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; (From update of attachment 71094 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=71094&amp;action=review
&gt; 
&gt; I&apos;d like to see a new version using with_statement.  Otherwise I think this is fine.
&gt; 

Will do. I didn&apos;t realize you could use a lock in a with_statement.

&gt; The _Cygpath class is a bit big (does management of a singleton, as well as the nuts and bolts of talking to the process), but it&apos;s about to get a lot cleaner with &quot;with&quot;, so it may not matter.
&gt;

I originally had all of the singleton logic in global variables and free functions, but you said you wanted them to be class or static variables instead, so I changed this. I figured it would be best to keep as much of the logic together in a single area. What would you suggest? Two different classes? A mix of objects and global variables and free functions?
 
&gt; &gt; WebKitTools/Scripts/webkitpy/common/system/path.py:53
&gt; &gt; +    lock = None
&gt; 
&gt; Shouldn&apos;t this be _lock?  I guess the class is already _, but hte lock seems internal.
&gt;

This was left over from when convert_using_singleton() was a free function. Yes, I guess I can make this internal now.
 
&gt; &gt; WebKitTools/Scripts/webkitpy/common/system/path.py:58
&gt; &gt; +        if _CygPath.lock:
&gt; 
&gt; I would have early returned isntead.
&gt; 

Okay.

&gt; &gt; WebKitTools/Scripts/webkitpy/common/system/path.py:59
&gt; &gt; +            _CygPath.lock.acquire()
&gt; 
&gt; using &quot;with&quot; here would make the locking cleaner.  No need for the try/finally then.
&gt;

Will do.
 
&gt; &gt; WebKitTools/Scripts/webkitpy/common/system/path.py:72
&gt; &gt; +        _CygPath.lock.acquire()
&gt; &gt; +        if not _CygPath.singleton:
&gt; 
&gt; &quot;with&quot; again would make this easier.
&gt;

Will do.
 
&gt; &gt; WebKitTools/Scripts/webkitpy/common/system/path.py:81
&gt; &gt; +        result = None
&gt; &gt; +        try:
&gt; &gt; +            result = _CygPath.singleton.convert(path)
&gt; &gt; +        finally:
&gt; &gt; +            _CygPath.lock.release()
&gt; 
&gt; with allows you to just return directly too.
&gt;

Will do.
 
&gt; &gt; WebKitTools/Scripts/webkitpy/common/system/path.py:86
&gt; &gt; +        self._child_process = None
&gt; 
&gt; Naming this _child might be sufficiently clear, and would save some typing.  Your call.
&gt;

And here I thought you always liked longer variable names ...
 
&gt; &gt; WebKitTools/Scripts/webkitpy/common/system/path.py:94
&gt; &gt; +                                               close_fds=False)
&gt; 
&gt; close_fds defaults to false.
&gt;

Hm. Thought it defaulted to true, but you&apos;re right.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>295848</commentid>
    <comment_count>27</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-10-18 17:07:36 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; &gt; The _Cygpath class is a bit big (does management of a singleton, as well as the nuts and bolts of talking to the process), but it&apos;s about to get a lot cleaner with &quot;with&quot;, so it may not matter.
&gt; &gt;
&gt; 
&gt; I originally had all of the singleton logic in global variables and free functions, but you said you wanted them to be class or static variables instead, so I changed this. I figured it would be best to keep as much of the logic together in a single area. What would you suggest? Two different classes? A mix of objects and global variables and free functions?

I&apos;m not sure it matters.  The with thing was the biggie.  Fix that and I think the rest doesn&apos;t matter.

&gt; &gt; &gt; WebKitTools/Scripts/webkitpy/common/system/path.py:86
&gt; &gt; &gt; +        self._child_process = None
&gt; &gt; 
&gt; &gt; Naming this _child might be sufficiently clear, and would save some typing.  Your call.
&gt; &gt;
&gt; 
&gt; And here I thought you always liked longer variable names ...

:( I&apos;m certainly not trying to send mixed-signals.  Maybe typing self._child_process all the time is an artifact of class mis-design.  I&apos;m not sure.

I think we&apos;ve probably beat this horse dead enough.  I can tell what the patch i doing, it&apos;s an improvement, I think we&apos;re making the code better and we should let you move forward onto other things which might depend on this. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>295849</commentid>
    <comment_count>28</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-10-18 17:13:44 -0700</bug_when>
    <thetext>(In reply to comment #27)
&gt; (In reply to comment #26)
&gt; &gt; &gt; The _Cygpath class is a bit big (does management of a singleton, as well as the nuts and bolts of talking to the process), but it&apos;s about to get a lot cleaner with &quot;with&quot;, so it may not matter.
&gt; &gt; &gt;
&gt; &gt; 
&gt; &gt; I originally had all of the singleton logic in global variables and free functions, but you said you wanted them to be class or static variables instead, so I changed this. I figured it would be best to keep as much of the logic together in a single area. What would you suggest? Two different classes? A mix of objects and global variables and free functions?
&gt; 
&gt; I&apos;m not sure it matters.  The with thing was the biggie.  Fix that and I think the rest doesn&apos;t matter.
&gt; 

I agree it doesn&apos;t really matter. Still, the better I understand your design inclinations the fewer review iterations I might need in the future.

&gt; &gt; &gt; &gt; WebKitTools/Scripts/webkitpy/common/system/path.py:86
&gt; &gt; &gt; &gt; +        self._child_process = None
&gt; &gt; &gt; 
&gt; &gt; &gt; Naming this _child might be sufficiently clear, and would save some typing.  Your call.
&gt; &gt; &gt;
&gt; &gt; 
&gt; &gt; And here I thought you always liked longer variable names ...
&gt; 
&gt; :( I&apos;m certainly not trying to send mixed-signals.  Maybe typing self._child_process all the time is an artifact of class mis-design.  I&apos;m not sure.
&gt; 

This was half meant as a joke :) However, I do actually think that _child_process is clearer than _child, since _child could be a lot of things. In other words, I think the type (process) is more important that the name (child). If I was to use a shorter name, I would&apos;ve called it _proc, not _child.

&gt; I think we&apos;ve probably beat this horse dead enough.  I can tell what the patch i doing, it&apos;s an improvement, I think we&apos;re making the code better and we should let you move forward onto other things which might depend on this. :)

:) Patch coming up shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>295853</commentid>
    <comment_count>29</comment_count>
      <attachid>71104</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-10-18 17:19:40 -0700</bug_when>
    <thetext>Created attachment 71104
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>295855</commentid>
    <comment_count>30</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-10-18 17:21:10 -0700</bug_when>
    <thetext>(In reply to comment #28)
&gt; I agree it doesn&apos;t really matter. Still, the better I understand your design inclinations the fewer review iterations I might need in the future.

Yes, I think that the class in question could probably be split into two classes.  One to manage the lock and the process and another to do the actual talking to the process (and hiding the details of dealing with subprocess).

I think the lock stuff could almost warrent its own 3rd class, but with the &quot;with&quot; changes I bet it will be tiny enough to not matter.

The _Cygpath class would handle the lock, and have a pointer to the _CygpathProcess which would know how to talk to the actual process.

Or at least that&apos;s a design I might have explored were I writign this patch.  Without actually sitting down to write it, it&apos;s hard to know if such a design would be over-kill or not.

Hopefully that provided some insight.  Again, I think we&apos;ll just move-forward with this as-is and if we come back to the CYGWIN stuff and have eto add a bunch more complexity, we&apos;ll split this class then.

&gt; This was half meant as a joke :) However, I do actually think that _child_process is clearer than _child, since _child could be a lot of things. In other words, I think the type (process) is more important that the name (child). If I was to use a shorter name, I would&apos;ve called it _proc, not _child.

OK.  _child_process is certainly fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>295856</commentid>
    <comment_count>31</comment_count>
      <attachid>71104</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-10-18 17:22:56 -0700</bug_when>
    <thetext>Comment on attachment 71104
Patch

LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>295864</commentid>
    <comment_count>32</comment_count>
      <attachid>71104</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-10-18 17:41:09 -0700</bug_when>
    <thetext>Comment on attachment 71104
Patch

Clearing flags on attachment: 71104

Committed r70012: &lt;http://trac.webkit.org/changeset/70012&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>295865</commentid>
    <comment_count>33</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-10-18 17:41:17 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69852</attachid>
            <date>2010-10-05 15:37:43 -0700</date>
            <delta_ts>2010-10-05 17:45:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47220-20101005153742.patch</filename>
            <type>text/plain</type>
            <size>4196</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvY2hyb21pdW0ucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L2Nocm9taXVtLnB5CmluZGV4IGE3MjYyN2ExNmE3ZmE1NGM0ODgzYzQzOTI5NWE3MDNl
OTVmM2I4ZDcuLjgxZTBhNDUwNmFiNGMyMjMwZWM5NzJhMWRhMTRjODIyMWI3ZGI4Y2IgMTAwNjQ0
Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hy
b21pdW0ucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9jaHJvbWl1bS5weQpAQCAtNzksNiArNzksMjAgQEAgZGVmIGNoZWNrX2ZpbGVfZXhpc3Rz
KHBhdGhfdG9fZmlsZSwgZmlsZV9kZXNjcmlwdGlvbiwgb3ZlcnJpZGVfc3RlcD1Ob25lLAogICAg
IHJldHVybiBUcnVlCiAKIAorZGVmIF9jeWdwYXRoKHBhdGgpOgorICAgIGlmIHN5cy5wbGF0Zm9y
bSA9PSAnY3lnd2luJyBhbmQgcGF0aC5zdGFydHN3aXRoKCcvY3lnZHJpdmUnKToKKyAgICAgICAg
cGF0aCA9IHBhdGgucmVwbGFjZSgnL2N5Z2RyaXZlLycsJycpLnJlcGxhY2UoJy8nLCdcXCcpCisg
ICAgICAgIHBhdGggPSBwYXRoWzA6MV0gKyAnOlxcJyArIHBhdGhbMjpdCisgICAgcmV0dXJuIHBh
dGgKKworCitkZWYgX2N5Z3VyaShwYXRoKToKKyAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2N5Z3dp
bicgYW5kIHBhdGguc3RhcnRzd2l0aCgnZmlsZTovLy9jeWdkcml2ZScpOgorICAgICAgICBwYXRo
ID0gcGF0aC5yZXBsYWNlKCdmaWxlOi8vL2N5Z2RyaXZlLycsJ2ZpbGU6Ly8vJykKKyAgICAgICAg
cGF0aCA9IHBhdGhbMDo5XSArICc6LycgKyBwYXRoWzEwOl0KKyAgICByZXR1cm4gcGF0aAorCisK
IGNsYXNzIENocm9taXVtUG9ydChiYXNlLlBvcnQpOgogICAgICIiIkFic3RyYWN0IGJhc2UgY2xh
c3MgZm9yIENocm9taXVtIGltcGxlbWVudGF0aW9ucyBvZiB0aGUgUG9ydCBjbGFzcy4iIiIKIApA
QCAtMTM5LDEwICsxNTMsMTEgQEAgY2xhc3MgQ2hyb21pdW1Qb3J0KGJhc2UuUG9ydCk6CiAgICAg
ICAgIGFjdHVhbF90bXBmaWxlID0gdGVtcGZpbGUuTmFtZWRUZW1wb3JhcnlGaWxlKCkKICAgICAg
ICAgYWN0dWFsX3RtcGZpbGUud3JpdGUoYWN0dWFsX2NvbnRlbnRzKQogICAgICAgICBpZiBkaWZm
X2ZpbGVuYW1lOgotICAgICAgICAgICAgY21kID0gW2V4ZWN1dGFibGUsICctLWRpZmYnLCBleHBl
Y3RlZF90bXBmaWxlLm5hbWUsCi0gICAgICAgICAgICAgICAgICAgYWN0dWFsX3RtcGZpbGUubmFt
ZSwgZGlmZl9maWxlbmFtZV0KKyAgICAgICAgICAgIGNtZCA9IFtleGVjdXRhYmxlLCAnLS1kaWZm
JywgX2N5Z3BhdGgoZXhwZWN0ZWRfdG1wZmlsZS5uYW1lKSwKKyAgICAgICAgICAgICAgICAgICBf
Y3lncGF0aChhY3R1YWxfdG1wZmlsZS5uYW1lKSwgX2N5Z3BhdGgoZGlmZl9maWxlbmFtZSldCiAg
ICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBjbWQgPSBbZXhlY3V0YWJsZSwgZXhwZWN0ZWRfdG1w
ZmlsZS5uYW1lLCBhY3R1YWxfdG1wZmlsZS5uYW1lXQorICAgICAgICAgICAgY21kID0gW2V4ZWN1
dGFibGUsIF9jeWdwYXRoKGV4cGVjdGVkX3RtcGZpbGUubmFtZSksCisgICAgICAgICAgICAgICAg
ICAgX2N5Z3BhdGgoYWN0dWFsX3RtcGZpbGUubmFtZSldCiAKICAgICAgICAgcmVzdWx0ID0gVHJ1
ZQogICAgICAgICB0cnk6CkBAIC0zNDQsNyArMzU5LDcgQEAgY2xhc3MgQ2hyb21pdW1Ecml2ZXIo
YmFzZS5Ecml2ZXIpOgogICAgIGRlZiBfZHJpdmVyX2FyZ3Moc2VsZik6CiAgICAgICAgIGRyaXZl
cl9hcmdzID0gW10KICAgICAgICAgaWYgc2VsZi5faW1hZ2VfcGF0aDoKLSAgICAgICAgICAgIGRy
aXZlcl9hcmdzLmFwcGVuZCgiLS1waXhlbC10ZXN0cz0iICsgc2VsZi5faW1hZ2VfcGF0aCkKKyAg
ICAgICAgICAgIGRyaXZlcl9hcmdzLmFwcGVuZCgiLS1waXhlbC10ZXN0cz0iICsgX2N5Z3BhdGgo
c2VsZi5faW1hZ2VfcGF0aCkpCiAKICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy51c2VfZHJ0Ogog
ICAgICAgICAgICAgZHJpdmVyX2FyZ3MuYXBwZW5kKCctLXRlc3Qtc2hlbGwnKQpAQCAtNDA1LDcg
KzQyMCw3IEBAIGNsYXNzIENocm9taXVtRHJpdmVyKGJhc2UuRHJpdmVyKToKICAgICAgICAgICAg
IHJldHVybiAoTm9uZSwgVHJ1ZSkKIAogICAgIGRlZiBfdGVzdF9zaGVsbF9jb21tYW5kKHNlbGYs
IHVyaSwgdGltZW91dG1zLCBjaGVja3N1bSk6Ci0gICAgICAgIGNtZCA9IHVyaQorICAgICAgICBj
bWQgPSBfY3lndXJpKHVyaSkKICAgICAgICAgaWYgdGltZW91dG1zOgogICAgICAgICAgICAgY21k
ICs9ICcgJyArIHN0cih0aW1lb3V0bXMpCiAgICAgICAgIGlmIGNoZWNrc3VtOgpkaWZmIC0tZ2l0
IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1
bV91bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvY2hyb21pdW1fdW5pdHRlc3QucHkKaW5kZXggYTRhOWVhNjA2NmM2ZmEzMDUxOTQ2ZmUy
YWRiNmI2N2Q1YzNjYjAxNy4uYmU1NWEwZTI1NTM4ZjM1MjkyMzVmYzdmYzEyMTE5Mzk1OWFkYmI0
ZSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9jaHJvbWl1bV91bml0dGVzdC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3VuaXR0ZXN0LnB5CkBAIC0yNiwxMyArMjYs
MTUgQEAKICMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKK2ltcG9ydCBvcworaW1wb3J0
IFN0cmluZ0lPCitpbXBvcnQgc3lzCitpbXBvcnQgdW5pdHRlc3QKKwogaW1wb3J0IGNocm9taXVt
CiBpbXBvcnQgY2hyb21pdW1fbGludXgKIGltcG9ydCBjaHJvbWl1bV9tYWMKIGltcG9ydCBjaHJv
bWl1bV93aW4KLWltcG9ydCB1bml0dGVzdAotaW1wb3J0IFN0cmluZ0lPCi1pbXBvcnQgb3MKIAog
ZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5Lm1vY2sgaW1wb3J0IE1vY2sKIApAQCAtMTU2LDUgKzE1
OCwyNCBAQCBERUZFUiBMSU5VWCBXSU4gOiBmYXN0L2pzL3ZlcnktZ29vZC5qcyA9IFRJTUVPVVQg
UEFTUyIiIgogICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhvcHRpb25zLmNvbmZpZ3VyYXRpb24s
ICdkZWZhdWx0JykKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBvcnQuZGVmYXVsdF9jb25maWd1
cmF0aW9uX2NhbGxlZCkKIAorCitjbGFzcyBTdGFuZGFsb25lRnVuY3Rpb25zVGVzdCh1bml0dGVz
dC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfX2N5Z3BhdGgoc2VsZik6CisgICAgICAgIGlmIHN5
cy5wbGF0Zm9ybSA9PSAnY3lnd2luJzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2hy
b21pdW0uX2N5Z3BhdGgoIi9jeWdkcml2ZS9jL2Zvby9iYXIudHh0IiksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJjOlxcZm9vXFxiYXIudHh0IikKKyAgICAgICAgZWxzZToKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2hyb21pdW0uX2N5Z3BhdGgoIi9jeWdkcml2ZS9jL2Zv
by9iYXIudHh0IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvY3lnZHJpdmUvYy9m
b28vYmFyLnR4dCIpCisKKyAgICBkZWYgdGVzdF9fY3lndXJpKHNlbGYpOgorICAgICAgICBpZiBz
eXMucGxhdGZvcm0gPT0gJ2N5Z3dpbic6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNo
cm9taXVtLl9jeWd1cmkoImZpbGU6Ly8vY3lnZHJpdmUvYy9mb28vYmFyLnR4dCIpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiZmlsZTovLy9jOi9mb28vYmFyLnR4dCIpCisgICAgICAg
IGVsc2U6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNocm9taXVtLl9jeWd1cmkoImZp
bGU6Ly8vY3lnZHJpdmUvYy9mb28vYmFyLnR4dCIpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiZmlsZTovLy9jeWdkcml2ZS9jL2Zvby9iYXIudHh0IikKKworCiBpZiBfX25hbWVfXyA9
PSAnX19tYWluX18nOgogICAgIHVuaXR0ZXN0Lm1haW4oKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69870</attachid>
            <date>2010-10-05 17:45:21 -0700</date>
            <delta_ts>2010-10-09 22:08:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47220-20101005174520.patch</filename>
            <type>text/plain</type>
            <size>5090</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCAzZThiZTcxNDBmMGZjNGQ3NWVhNTE4NWNjY2ViZmRiYWVjZGM0ZDEzLi5jMGEwOWNi
Zjc4ZmRkNzA4YTlhZWQwZjY0NWJhNzczMmIzZjVkNzQwIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTAtMTAtMDUgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgbmV3LXJ1bi13ZWJraXQt
dGVzdHMgLSBlbmFibGUgY3lnd2luIHN1cHBvcnQgZm9yIGNocm9taXVtIHdpbgorCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzIyMAorCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weToKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3VuaXR0ZXN0
LnB5OgorCiAyMDEwLTEwLTA0ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFVucmV2aWV3ZWQsIGJ1aWxkIGZpeC4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkgYi9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5CmluZGV4
IGE3MjYyN2ExNmE3ZmE1NGM0ODgzYzQzOTI5NWE3MDNlOTVmM2I4ZDcuLjY3NzQ4Mjg1NGJmMTll
OGU3YzcxNjdmZTliZDljOWRiYTBlYWNhODggMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkKKysrIGIvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weQpAQCAtNzks
NiArNzksMjAgQEAgZGVmIGNoZWNrX2ZpbGVfZXhpc3RzKHBhdGhfdG9fZmlsZSwgZmlsZV9kZXNj
cmlwdGlvbiwgb3ZlcnJpZGVfc3RlcD1Ob25lLAogICAgIHJldHVybiBUcnVlCiAKIAorZGVmIF9j
eWdwYXRoKHBhdGgpOgorICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnY3lnd2luJyBhbmQgcGF0aC5z
dGFydHN3aXRoKCcvY3lnZHJpdmUnKToKKyAgICAgICAgcGF0aCA9IHBhdGgucmVwbGFjZSgnL2N5
Z2RyaXZlLycsICcnKS5yZXBsYWNlKCcvJywgJ1xcJykKKyAgICAgICAgcGF0aCA9IHBhdGhbMDox
XSArICc6XFwnICsgcGF0aFsyOl0KKyAgICByZXR1cm4gcGF0aAorCisKK2RlZiBfY3lndXJpKHBh
dGgpOgorICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnY3lnd2luJyBhbmQgcGF0aC5zdGFydHN3aXRo
KCdmaWxlOi8vL2N5Z2RyaXZlJyk6CisgICAgICAgIHBhdGggPSBwYXRoLnJlcGxhY2UoJ2ZpbGU6
Ly8vY3lnZHJpdmUvJywgJ2ZpbGU6Ly8vJykKKyAgICAgICAgcGF0aCA9IHBhdGhbMDo5XSArICc6
LycgKyBwYXRoWzEwOl0KKyAgICByZXR1cm4gcGF0aAorCisKIGNsYXNzIENocm9taXVtUG9ydChi
YXNlLlBvcnQpOgogICAgICIiIkFic3RyYWN0IGJhc2UgY2xhc3MgZm9yIENocm9taXVtIGltcGxl
bWVudGF0aW9ucyBvZiB0aGUgUG9ydCBjbGFzcy4iIiIKIApAQCAtMTM5LDEwICsxNTMsMTEgQEAg
Y2xhc3MgQ2hyb21pdW1Qb3J0KGJhc2UuUG9ydCk6CiAgICAgICAgIGFjdHVhbF90bXBmaWxlID0g
dGVtcGZpbGUuTmFtZWRUZW1wb3JhcnlGaWxlKCkKICAgICAgICAgYWN0dWFsX3RtcGZpbGUud3Jp
dGUoYWN0dWFsX2NvbnRlbnRzKQogICAgICAgICBpZiBkaWZmX2ZpbGVuYW1lOgotICAgICAgICAg
ICAgY21kID0gW2V4ZWN1dGFibGUsICctLWRpZmYnLCBleHBlY3RlZF90bXBmaWxlLm5hbWUsCi0g
ICAgICAgICAgICAgICAgICAgYWN0dWFsX3RtcGZpbGUubmFtZSwgZGlmZl9maWxlbmFtZV0KKyAg
ICAgICAgICAgIGNtZCA9IFtleGVjdXRhYmxlLCAnLS1kaWZmJywgX2N5Z3BhdGgoZXhwZWN0ZWRf
dG1wZmlsZS5uYW1lKSwKKyAgICAgICAgICAgICAgICAgICBfY3lncGF0aChhY3R1YWxfdG1wZmls
ZS5uYW1lKSwgX2N5Z3BhdGgoZGlmZl9maWxlbmFtZSldCiAgICAgICAgIGVsc2U6Ci0gICAgICAg
ICAgICBjbWQgPSBbZXhlY3V0YWJsZSwgZXhwZWN0ZWRfdG1wZmlsZS5uYW1lLCBhY3R1YWxfdG1w
ZmlsZS5uYW1lXQorICAgICAgICAgICAgY21kID0gW2V4ZWN1dGFibGUsIF9jeWdwYXRoKGV4cGVj
dGVkX3RtcGZpbGUubmFtZSksCisgICAgICAgICAgICAgICAgICAgX2N5Z3BhdGgoYWN0dWFsX3Rt
cGZpbGUubmFtZSldCiAKICAgICAgICAgcmVzdWx0ID0gVHJ1ZQogICAgICAgICB0cnk6CkBAIC0z
NDQsNyArMzU5LDcgQEAgY2xhc3MgQ2hyb21pdW1Ecml2ZXIoYmFzZS5Ecml2ZXIpOgogICAgIGRl
ZiBfZHJpdmVyX2FyZ3Moc2VsZik6CiAgICAgICAgIGRyaXZlcl9hcmdzID0gW10KICAgICAgICAg
aWYgc2VsZi5faW1hZ2VfcGF0aDoKLSAgICAgICAgICAgIGRyaXZlcl9hcmdzLmFwcGVuZCgiLS1w
aXhlbC10ZXN0cz0iICsgc2VsZi5faW1hZ2VfcGF0aCkKKyAgICAgICAgICAgIGRyaXZlcl9hcmdz
LmFwcGVuZCgiLS1waXhlbC10ZXN0cz0iICsgX2N5Z3BhdGgoc2VsZi5faW1hZ2VfcGF0aCkpCiAK
ICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy51c2VfZHJ0OgogICAgICAgICAgICAgZHJpdmVyX2Fy
Z3MuYXBwZW5kKCctLXRlc3Qtc2hlbGwnKQpAQCAtNDA1LDcgKzQyMCw2IEBAIGNsYXNzIENocm9t
aXVtRHJpdmVyKGJhc2UuRHJpdmVyKToKICAgICAgICAgICAgIHJldHVybiAoTm9uZSwgVHJ1ZSkK
IAogICAgIGRlZiBfdGVzdF9zaGVsbF9jb21tYW5kKHNlbGYsIHVyaSwgdGltZW91dG1zLCBjaGVj
a3N1bSk6Ci0gICAgICAgIGNtZCA9IHVyaQogICAgICAgICBpZiB0aW1lb3V0bXM6CiAgICAgICAg
ICAgICBjbWQgKz0gJyAnICsgc3RyKHRpbWVvdXRtcykKICAgICAgICAgaWYgY2hlY2tzdW06CkBA
IC00MjMsNiArNDM3LDcgQEAgY2xhc3MgQ2hyb21pdW1Ecml2ZXIoYmFzZS5Ecml2ZXIpOgogCiAg
ICAgICAgIHN0YXJ0X3RpbWUgPSB0aW1lLnRpbWUoKQogCisgICAgICAgIHVyaSA9IF9jeWd1cmko
dXJpKQogICAgICAgICBjbWQgPSBzZWxmLl90ZXN0X3NoZWxsX2NvbW1hbmQodXJpLCB0aW1lb3V0
bXMsIGNoZWNrc3VtKQogICAgICAgICAobGluZSwgY3Jhc2gpID0gc2VsZi5fd3JpdGVfY29tbWFu
ZF9hbmRfcmVhZF9saW5lKGlucHV0PWNtZCkKIApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV91bml0dGVzdC5weSBiL1dl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fdW5p
dHRlc3QucHkKaW5kZXggYTRhOWVhNjA2NmM2ZmEzMDUxOTQ2ZmUyYWRiNmI2N2Q1YzNjYjAxNy4u
YmU1NWEwZTI1NTM4ZjM1MjkyMzVmYzdmYzEyMTE5Mzk1OWFkYmI0ZSAxMDA2NDQKLS0tIGEvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV91bml0
dGVzdC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L2Nocm9taXVtX3VuaXR0ZXN0LnB5CkBAIC0yNiwxMyArMjYsMTUgQEAKICMgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAKK2ltcG9ydCBvcworaW1wb3J0IFN0cmluZ0lPCitpbXBvcnQg
c3lzCitpbXBvcnQgdW5pdHRlc3QKKwogaW1wb3J0IGNocm9taXVtCiBpbXBvcnQgY2hyb21pdW1f
bGludXgKIGltcG9ydCBjaHJvbWl1bV9tYWMKIGltcG9ydCBjaHJvbWl1bV93aW4KLWltcG9ydCB1
bml0dGVzdAotaW1wb3J0IFN0cmluZ0lPCi1pbXBvcnQgb3MKIAogZnJvbSB3ZWJraXRweS50aGly
ZHBhcnR5Lm1vY2sgaW1wb3J0IE1vY2sKIApAQCAtMTU2LDUgKzE1OCwyNCBAQCBERUZFUiBMSU5V
WCBXSU4gOiBmYXN0L2pzL3ZlcnktZ29vZC5qcyA9IFRJTUVPVVQgUEFTUyIiIgogICAgICAgICBz
ZWxmLmFzc2VydEVxdWFscyhvcHRpb25zLmNvbmZpZ3VyYXRpb24sICdkZWZhdWx0JykKICAgICAg
ICAgc2VsZi5hc3NlcnRUcnVlKHBvcnQuZGVmYXVsdF9jb25maWd1cmF0aW9uX2NhbGxlZCkKIAor
CitjbGFzcyBTdGFuZGFsb25lRnVuY3Rpb25zVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAg
ZGVmIHRlc3RfX2N5Z3BhdGgoc2VsZik6CisgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnY3ln
d2luJzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2hyb21pdW0uX2N5Z3BhdGgoIi9j
eWdkcml2ZS9jL2Zvby9iYXIudHh0IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJj
OlxcZm9vXFxiYXIudHh0IikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoY2hyb21pdW0uX2N5Z3BhdGgoIi9jeWdkcml2ZS9jL2Zvby9iYXIudHh0IiksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICIvY3lnZHJpdmUvYy9mb28vYmFyLnR4dCIpCisKKyAg
ICBkZWYgdGVzdF9fY3lndXJpKHNlbGYpOgorICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2N5
Z3dpbic6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNocm9taXVtLl9jeWd1cmkoImZp
bGU6Ly8vY3lnZHJpdmUvYy9mb28vYmFyLnR4dCIpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiZmlsZTovLy9jOi9mb28vYmFyLnR4dCIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGNocm9taXVtLl9jeWd1cmkoImZpbGU6Ly8vY3lnZHJpdmUvYy9m
b28vYmFyLnR4dCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZTovLy9jeWdk
cml2ZS9jL2Zvby9iYXIudHh0IikKKworCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAg
IHVuaXR0ZXN0Lm1haW4oKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70387</attachid>
            <date>2010-10-09 22:08:28 -0700</date>
            <delta_ts>2010-10-12 16:11:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47220-20101009220827.patch</filename>
            <type>text/plain</type>
            <size>12117</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCAwYmRlYjgwMWI5MzIzNzQ4NTJmZjgxYWQ1M2M2Y2VhY2Y5Y2FhNjZkLi44ZmFlNTM2
NjE4MGFlNmY1ZmY1M2YwN2ExYjM0MzlhODMwMGNiMWQ3IDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAK
KzIwMTAtMTAtMDkgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBlbmFi
bGVzIG5ldy1ydW4td2Via2l0LXRlc3RzIChpbiBwYXJ0aWN1bGFyIHRoZQorICAgICAgICBjaHJv
bWl1bS13aW4gcG9ydCkgdG8gcnVuIHVuZGVyIEN5Z3dpbiBhcyB3ZWxsIGFzIFdpbjMyLiBNb3N0
bHkKKyAgICAgICAgdGhpcyBqdXN0IHJlcXVpcmVkIHNvbWUgY29udmVyc2lvbnMgZnJvbSBjeWd3
aW4gcGF0aHMgdG8gV2luMzIKKyAgICAgICAgcGF0aHMgd2hlbiB3ZSBzcGF3biBvZmYgV2luMzIg
YmluYXJpZXMgbGlrZSB0ZXN0X3NoZWxsLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD00NzIyMAorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9j
b21tb24vc3lzdGVtL3BhdGgucHk6CisgICAgICAgIC0gRXhwb3NlIHRoZSBjeWdwYXRoKCkgZnVu
Y3Rpb24gZm9yIHBhdGggY29udmVyc2lvbgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9kdW1wX3JlbmRlcl90cmVlX3RocmVhZC5w
eToKKyAgICAgICAgLSBzaGlmdCBmaWxlbmFtZS0+dXJpIGNvbnZlcnNpb24gaW4gdGhlIFRlc3RJ
bmZvIG9iamVjdHMgdG8gdGhlCisgICAgICAgICAgZHVtcF9yZW5kZXJfdHJlZSB0aHJlYWQKKwor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weToKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5Ogor
ICAgICAgICAtIHVzZSBjeWdwYXRoKCkKKwogMjAxMC0xMC0wNyAgRGlyayBQcmFua2UgIDxkcHJh
bmtlQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpkaWZm
IC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3BhdGgu
cHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vcGF0aC5weQpp
bmRleCA5MzcyNDdlZjBhY2MxOTE5ZGUwZWQ3ZTZiNzBkNGNhODE3MWM3MTEwLi4zNzZkMmE4MmJk
ZDRmNmJmN2U4OWYyNmZiNDdmMDI2M2EyYjNjMjAxIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vcGF0aC5weQorKysgYi9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vcGF0aC5weQpAQCAtMzgsNiArMzgsMTkgQEAg
ZGVmIGFic3BhdGhfdG9fdXJpKHBhdGgsIGV4ZWN1dGl2ZSwgcGxhdGZvcm09Tm9uZSk6CiAgICAg
cmV0dXJuICJmaWxlOiIgKyBfZXNjYXBlKF9jb252ZXJ0X3BhdGgocGF0aCwgZXhlY3V0aXZlLCBw
bGF0Zm9ybSkpCiAKIAorZGVmIGN5Z3BhdGgocGF0aCwgZXhlY3V0aXZlKToKKyAgICAiIiJDb252
ZXJ0cyBhIGN5Z3dpbiBwYXRoIHRvIFdpbmRvd3MgcGF0aC4iIiIKKyAgICAjIEZJWE1FOiB0aGlz
IG1heSBub3QgYmUgY29ycmVjdCBpbiBldmVyeSBzaXR1YXRpb24sIGJ1dCBmb3JraW5nCisgICAg
IyBjeWdwYXRoIGlzIHZlcnkgc2xvdyBhbmQgc2VlbXMgdG8gY29udHJpYnV0ZSB0byBkZWFkbG9j
a2luZyBpc3N1ZXMKKyAgICAjIHdpdGggdGhyZWFkcy4KKyAgICBpZiBwYXRoLnN0YXJ0c3dpdGgo
Ii9jeWdkcml2ZSIpOgorICAgICAgICBwYXRoID0gcGF0aFsxMF0gKyAiOiIgKyBwYXRoWzExOl0K
KyAgICAgICAgcGF0aCA9IHBhdGgucmVwbGFjZSgiLyIsICJcXCIpCisgICAgICAgIHJldHVybiBw
YXRoCisgICAgcmV0dXJuIGV4ZWN1dGl2ZS5ydW5fY29tbWFuZChbJ2N5Z3BhdGgnLCAnLXdhJywg
cGF0aF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGVfb3V0cHV0PUZh
bHNlKS5yc3RyaXAoKQorCisKIGRlZiBfZXNjYXBlKHBhdGgpOgogICAgICIiIkhhbmRsZSBhbnkg
Y2hhcmFjdGVycyBpbiB0aGUgcGF0aCB0aGF0IHNob3VsZCBiZSBlc2NhcGVkLiIiIgogICAgICMg
RklYTUU6IHdlYiBicm93c2VycyBkb24ndCBhcHBlYXIgdG8gYmxpbmRseSBxdW90ZSBldmVyeSBj
aGFyYWN0ZXIKQEAgLTUyLDcgKzY1LDcgQEAgZGVmIF9jb252ZXJ0X3BhdGgocGF0aCwgZXhlY3V0
aXZlLCBwbGF0Zm9ybSk6CiAgICAgaWYgcGxhdGZvcm0gPT0gJ3dpbjMyJzoKICAgICAgICAgcmV0
dXJuIF93aW5wYXRoX3RvX3VyaShwYXRoKQogICAgIGlmIHBsYXRmb3JtID09ICdjeWd3aW4nOgot
ICAgICAgICByZXR1cm4gX3dpbnBhdGhfdG9fdXJpKF9jeWdwYXRoKHBhdGgsIGV4ZWN1dGl2ZSkp
CisgICAgICAgIHJldHVybiBfd2lucGF0aF90b191cmkoY3lncGF0aChwYXRoLCBleGVjdXRpdmUp
KQogICAgIHJldHVybiBfdW5peHlwYXRoX3RvX3VyaShwYXRoKQogCiAKQEAgLTYwLDEzICs3Myw2
IEBAIGRlZiBfd2lucGF0aF90b191cmkocGF0aCk6CiAgICAgIiIiQ29udmVydHMgYSB3aW5kb3cg
YWJzb2x1dGUgcGF0aCB0byBhIGZpbGU6IFVSTC4iIiIKICAgICByZXR1cm4gIi8vLyIgKyBwYXRo
LnJlcGxhY2UoIlxcIiwgIi8iKQogCi0KLWRlZiBfY3lncGF0aChwYXRoLCBleGVjdXRpdmUpOgot
ICAgICIiIkNvbnZlcnRzIGEgY3lnd2luIHBhdGggdG8gV2luZG93cyBwYXRoLiIiIgotICAgIHJl
dHVybiBleGVjdXRpdmUucnVuX2NvbW1hbmQoWydjeWdwYXRoJywgJy13YScsIHBhdGhdLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjb2RlX291dHB1dD1GYWxzZSkucnN0cmlw
KCkKLQotCiBkZWYgX3VuaXh5cGF0aF90b191cmkocGF0aCk6CiAgICAgIiIiQ29udmVydHMgYSB1
bml4LXN0eWxlIHBhdGggdG8gYSBmaWxlOiBVUkwuIiIiCiAgICAgcmV0dXJuICIvLyIgKyBwYXRo
CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9s
YXlvdXRfcGFja2FnZS9kdW1wX3JlbmRlcl90cmVlX3RocmVhZC5weSBiL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2R1bXBfcmVuZGVyX3Ry
ZWVfdGhyZWFkLnB5CmluZGV4IGYxZWIwYmZhNWU4ZWU4YjRlMGIwMzdmYmIzMjJlYWVhOTVmNGRi
YmMuLmNkMGVmOGUxN2FlMjgwYjVlYjc4ZWE4NjQ2Mjk3OGIwNmE4ZTU0MzcgMTAwNjQ0Ci0tLSBh
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdl
L2R1bXBfcmVuZGVyX3RyZWVfdGhyZWFkLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2R1bXBfcmVuZGVyX3RyZWVfdGhyZWFk
LnB5CkBAIC04Miw3ICs4Miw3IEBAIGRlZiBfcHJvY2Vzc19vdXRwdXQocG9ydCwgb3B0aW9ucywg
dGVzdF9pbmZvLCB0ZXN0X3R5cGVzLCB0ZXN0X2FyZ3MsCiAgICAgICBwb3J0OiBwb3J0LXNwZWNp
ZmljIGhvb2tzCiAgICAgICBvcHRpb25zOiBjb21tYW5kIGxpbmUgb3B0aW9ucyBhcmd1bWVudCBm
cm9tIG9wdHBhcnNlCiAgICAgICBwcm9jOiBhbiBhY3RpdmUgRHVtcFJlbmRlclRyZWUgcHJvY2Vz
cwotICAgICAgdGVzdF9pbmZvOiBPYmplY3QgY29udGFpbmluZyB0aGUgdGVzdCBmaWxlbmFtZSwg
dXJpIGFuZCB0aW1lb3V0CisgICAgICB0ZXN0X2luZm86IE9iamVjdCBjb250YWluaW5nIHRoZSB0
ZXN0IGZpbGVuYW1lIGFuZCB0aW1lb3V0CiAgICAgICB0ZXN0X3R5cGVzOiBsaXN0IG9mIHRlc3Qg
dHlwZXMgdG8gc3ViamVjdCB0aGUgb3V0cHV0IHRvCiAgICAgICB0ZXN0X2FyZ3M6IGFyZ3VtZW50
cyB0byBiZSBwYXNzZWQgdG8gZWFjaCB0ZXN0CiAKQEAgLTE3MSw3ICsxNzEsNyBAQCBjbGFzcyBT
aW5nbGVUZXN0VGhyZWFkKHRocmVhZGluZy5UaHJlYWQpOgogICAgICAgICBBcmdzOgogICAgICAg
ICAgIHBvcnQ6IG9iamVjdCBpbXBsZW1lbnRpbmcgcG9ydC1zcGVjaWZpYyBob29rcwogICAgICAg
ICAgIG9wdGlvbnM6IGNvbW1hbmQgbGluZSBhcmd1bWVudCBvYmplY3QgZnJvbSBvcHRwYXJzZQot
ICAgICAgICAgIHRlc3RfaW5mbzogT2JqZWN0IGNvbnRhaW5pbmcgdGhlIHRlc3QgZmlsZW5hbWUs
IHVyaSBhbmQgdGltZW91dAorICAgICAgICAgIHRlc3RfaW5mbzogT2JqZWN0IGNvbnRhaW5pbmcg
dGhlIHRlc3QgZmlsZW5hbWUgYW5kIHRpbWVvdXQKICAgICAgICAgICB0ZXN0X3R5cGVzOiBBIGxp
c3Qgb2YgVGVzdFR5cGUgb2JqZWN0cyB0byBydW4gdGhlIHRlc3Qgb3V0cHV0CiAgICAgICAgICAg
ICAgIGFnYWluc3QuCiAgICAgICAgICAgdGVzdF9hcmdzOiBBIFRlc3RBcmd1bWVudHMgb2JqZWN0
IHRvIHBhc3MgdG8gZWFjaCBUZXN0VHlwZS4KQEAgLTE5MiwxMiArMTkyLDEzIEBAIGNsYXNzIFNp
bmdsZVRlc3RUaHJlYWQodGhyZWFkaW5nLlRocmVhZCk6CiAgICAgICAgICMgRklYTUU6IHRoaXMg
aXMgYSBzZXBhcmF0ZSByb3V0aW5lIHRvIHdvcmsgYXJvdW5kIGEgYnVnCiAgICAgICAgICMgaW4g
Y292ZXJhZ2U6IHNlZSBodHRwOi8vYml0YnVja2V0Lm9yZy9uZWQvY292ZXJhZ2VweS9pc3N1ZS84
NS4KICAgICAgICAgdGVzdF9pbmZvID0gc2VsZi5fdGVzdF9pbmZvCisgICAgICAgIHVyaSA9IHNl
bGYuX3BvcnQuZmlsZW5hbWVfdG9fdXJpKHRlc3RfaW5mby5maWxlbmFtZSkKICAgICAgICAgc2Vs
Zi5fZHJpdmVyID0gc2VsZi5fcG9ydC5jcmVhdGVfZHJpdmVyKHNlbGYuX3Rlc3RfYXJncy5wbmdf
cGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
bGYuX29wdGlvbnMpCiAgICAgICAgIHNlbGYuX2RyaXZlci5zdGFydCgpCiAgICAgICAgIHN0YXJ0
ID0gdGltZS50aW1lKCkKICAgICAgICAgY3Jhc2gsIHRpbWVvdXQsIGFjdHVhbF9jaGVja3N1bSwg
b3V0cHV0LCBlcnJvciA9IFwKLSAgICAgICAgICAgIHNlbGYuX2RyaXZlci5ydW5fdGVzdCh0ZXN0
X2luZm8udXJpLnN0cmlwKCksIHRlc3RfaW5mby50aW1lb3V0LAorICAgICAgICAgICAgc2VsZi5f
ZHJpdmVyLnJ1bl90ZXN0KHVyaSwgdGVzdF9pbmZvLnRpbWVvdXQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGVzdF9pbmZvLmltYWdlX2hhc2goKSkKICAgICAgICAgZW5kID0g
dGltZS50aW1lKCkKICAgICAgICAgc2VsZi5fdGVzdF9yZXN1bHQgPSBfcHJvY2Vzc19vdXRwdXQo
c2VsZi5fcG9ydCwgc2VsZi5fb3B0aW9ucywKQEAgLTI1NCw3ICsyNTUsNyBAQCBjbGFzcyBUZXN0
U2hlbGxUaHJlYWQoV2F0Y2hhYmxlVGhyZWFkKToKICAgICAgICAgICBwb3J0OiBpbnRlcmZhY2Ug
dG8gcG9ydC1zcGVjaWZpYyBob29rcwogICAgICAgICAgIG9wdGlvbnM6IGNvbW1hbmQgbGluZSBv
cHRpb25zIGFyZ3VtZW50IGZyb20gb3B0cGFyc2UKICAgICAgICAgICBmaWxlbmFtZV9saXN0X3F1
ZXVlOiBBIHRocmVhZCBzYWZlIFF1ZXVlIGNsYXNzIHRoYXQgY29udGFpbnMgbGlzdHMKLSAgICAg
ICAgICAgICAgb2YgdHVwbGVzIG9mIChmaWxlbmFtZSwgdXJpKSBwYWlycy4KKyAgICAgICAgICAg
ICAgb2YgKGZpbGVuYW1lLCBUZXN0SW5mbykgcGFpcnMuCiAgICAgICAgICAgcmVzdWx0X3F1ZXVl
OiBBIHRocmVhZCBzYWZlIFF1ZXVlIGNsYXNzIHRoYXQgd2lsbCBjb250YWluIHR1cGxlcyBvZgog
ICAgICAgICAgICAgICAodGVzdCwgZmFpbHVyZSBsaXN0cykgZm9yIHRoZSB0ZXN0IHJlc3VsdHMu
CiAgICAgICAgICAgdGVzdF90eXBlczogQSBsaXN0IG9mIFRlc3RUeXBlIG9iamVjdHMgdG8gcnVu
IHRoZSB0ZXN0IG91dHB1dApAQCAtNDIxLDcgKzQyMiw3IEBAIGNsYXNzIFRlc3RTaGVsbFRocmVh
ZChXYXRjaGFibGVUaHJlYWQpOgogICAgICAgICBmaWxlcyBzaW5nbHkuCiAKICAgICAgICAgQXJn
czoKLSAgICAgICAgICB0ZXN0X2luZm86IE9iamVjdCBjb250YWluaW5nIHRoZSB0ZXN0IGZpbGVu
YW1lLCB1cmkgYW5kIHRpbWVvdXQKKyAgICAgICAgICB0ZXN0X2luZm86IE9iamVjdCBjb250YWlu
aW5nIHRoZSB0ZXN0IGZpbGVuYW1lIGFuZCB0aW1lb3V0CiAKICAgICAgICAgUmV0dXJuczoKICAg
ICAgICAgICBBIFRlc3RSZXN1bHQKQEAgLTQ2OSw3ICs0NzAsNyBAQCBjbGFzcyBUZXN0U2hlbGxU
aHJlYWQoV2F0Y2hhYmxlVGhyZWFkKToKICAgICAgICAgIiIiUnVuIGEgc2luZ2xlIHRlc3QgZmls
ZSB1c2luZyBhIHNoYXJlZCBEdW1wUmVuZGVyVHJlZSBwcm9jZXNzLgogCiAgICAgICAgIEFyZ3M6
Ci0gICAgICAgICAgdGVzdF9pbmZvOiBPYmplY3QgY29udGFpbmluZyB0aGUgdGVzdCBmaWxlbmFt
ZSwgdXJpIGFuZCB0aW1lb3V0CisgICAgICAgICAgdGVzdF9pbmZvOiBPYmplY3QgY29udGFpbmlu
ZyB0aGUgdGVzdCBmaWxlbmFtZSBhbmQgdGltZW91dAogCiAgICAgICAgIFJldHVybnM6CiAgICAg
ICAgICAgQSBsaXN0IG9mIFRlc3RGYWlsdXJlIG9iamVjdHMgZGVzY3JpYmluZyB0aGUgZXJyb3Iu
CkBAIC00OTEsOCArNDkyLDkgQEAgY2xhc3MgVGVzdFNoZWxsVGhyZWFkKFdhdGNoYWJsZVRocmVh
ZCk6CiAgICAgICAgICAgICAgX3BhZF90aW1lb3V0KGludCh0ZXN0X2luZm8udGltZW91dCkpKQog
ICAgICAgICBzZWxmLl9uZXh0X3RpbWVvdXQgPSBzdGFydCArIHRocmVhZF90aW1lb3V0CiAKKyAg
ICAgICAgdXJpID0gc2VsZi5fcG9ydC5maWxlbmFtZV90b191cmkodGVzdF9pbmZvLmZpbGVuYW1l
KQogICAgICAgICBjcmFzaCwgdGltZW91dCwgYWN0dWFsX2NoZWNrc3VtLCBvdXRwdXQsIGVycm9y
ID0gXAotICAgICAgICAgICBzZWxmLl9kcml2ZXIucnVuX3Rlc3QodGVzdF9pbmZvLnVyaSwgdGVz
dF9pbmZvLnRpbWVvdXQsIGltYWdlX2hhc2gpCisgICAgICAgICAgIHNlbGYuX2RyaXZlci5ydW5f
dGVzdCh1cmksIHRlc3RfaW5mby50aW1lb3V0LCBpbWFnZV9oYXNoKQogICAgICAgICBlbmQgPSB0
aW1lLnRpbWUoKQogCiAgICAgICAgIHJlc3VsdCA9IF9wcm9jZXNzX291dHB1dChzZWxmLl9wb3J0
LCBzZWxmLl9vcHRpb25zLApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5CmluZGV4IDU2Y2EwY2FjOTdlMjY1N2Y3MWQ5NTBj
NmIxY2I5OWM1Y2EzZDJmYWEuLmRmNzNlZjQ5MTE2ODMwYmNiNjg4NjdmZTZkMmExNWM0MTY0MGVi
YjAgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvYmFzZS5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L2Jhc2UucHkKQEAgLTQ4LDYgKzQ4LDcgQEAgaW1wb3J0IHdlYnNvY2tldF9zZXJ2
ZXIKIAogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtIGltcG9ydCBsb2d1dGlscwogZnJvbSB3
ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgRXhlY3V0aXZlLCBTY3JpcHRF
cnJvcgorZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLnBhdGggaW1wb3J0IGFic3BhdGhfdG9f
dXJpCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0udXNlciBpbXBvcnQgVXNlcgogCiAKQEAg
LTMxMCwxNyArMzExLDcgQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAgICAgICAgICAgICAgIHBy
b3RvY29sID0gImh0dHAiCiAgICAgICAgICAgICByZXR1cm4gIiVzOi8vMTI3LjAuMC4xOiV1LyVz
IiAlIChwcm90b2NvbCwgcG9ydCwgcmVsYXRpdmVfcGF0aCkKIAotICAgICAgICBhYnNwYXRoID0g
b3MucGF0aC5hYnNwYXRoKGZpbGVuYW1lKQotCi0gICAgICAgICMgT24gV2luZG93cywgYWJzb2x1
dGUgcGF0aHMgYXJlIG9mIHRoZSBmb3JtICJjOlxmb28udHh0Ii4gSG93ZXZlciwKLSAgICAgICAg
IyBhbGwgY3VycmVudCBicm93c2VycyAoZXhjZXB0IGZvciBPcGVyYSkgbm9ybWFsaXplIGZpbGUg
VVJMcyBieQotICAgICAgICAjIHByZXBlbmRpbmcgYW4gYWRkaXRpb25hbCAiLyIgYXMgaWYgdGhl
IGFic29sdXRlIHBhdGggd2FzCi0gICAgICAgICMgIi9jOi9mb28udHh0Ii4gVGhpcyBtZWFucyB0
aGF0IGFsbCBmaWxlIFVSTHMgZW5kIHVwIHdpdGggImZpbGU6Ly8vIgotICAgICAgICAjIGF0IHRo
ZSBiZWdpbm5pbmcuCi0gICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgotICAgICAg
ICAgICAgYWJzcGF0aCA9ICcvJyArIGFic3BhdGgucmVwbGFjZSgnXFwnLCAnLycpCi0KLSAgICAg
ICAgcmV0dXJuICJmaWxlOi8vIiArIGFic3BhdGgKKyAgICAgICAgcmV0dXJuIGFic3BhdGhfdG9f
dXJpKG9zLnBhdGguYWJzcGF0aChmaWxlbmFtZSksIHNlbGYuX2V4ZWN1dGl2ZSkKIAogICAgIGRl
ZiB0ZXN0cyhzZWxmLCBwYXRocyk6CiAgICAgICAgICIiIlJldHVybiB0aGUgbGlzdCBvZiB0ZXN0
cyBmb3VuZCAocmVsYXRpdmUgdG8gbGF5b3V0X3Rlc3RzX2RpcigpLiIiIgpkaWZmIC0tZ2l0IGEv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5w
eSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21p
dW0ucHkKaW5kZXggMzAxZDRiMTg5YjA5YzgzZDI3MDZlMzYwYTczZTg4MjNmYzFiMDgwOC4uZDU0
YzhlNTNiZmMxYTRkMDNkMTQ4ZWU5MzYyZTI4ZGI0Njk5OTVjYiAxMDA2NDQKLS0tIGEvV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weQorKysg
Yi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVt
LnB5CkBAIC00MywxMiArNDMsMTMgQEAgaW1wb3J0IHRlbXBmaWxlCiBpbXBvcnQgdGltZQogaW1w
b3J0IHdlYmJyb3dzZXIKIAotaW1wb3J0IGJhc2UKLWltcG9ydCBodHRwX3NlcnZlcgotCiBmcm9t
IHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBFeGVjdXRpdmUKK2Zyb20g
d2Via2l0cHkuY29tbW9uLnN5c3RlbS5wYXRoIGltcG9ydCBhYnNwYXRoX3RvX3VyaSwgY3lncGF0
aAogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubGF5b3V0X3BhY2thZ2UgaW1wb3J0IHRlc3Rf
ZXhwZWN0YXRpb25zCiAKK2ltcG9ydCBiYXNlCitpbXBvcnQgaHR0cF9zZXJ2ZXIKKwogIyBDaHJv
bWl1bSBEUlQgb24gT1NYIHVzZXMgV2ViS2l0RHJpdmVyLgogaWYgc3lzLnBsYXRmb3JtID09ICdk
YXJ3aW4nOgogICAgIGltcG9ydCB3ZWJraXQKQEAgLTE0NCwxMCArMTQ1LDE0IEBAIGNsYXNzIENo
cm9taXVtUG9ydChiYXNlLlBvcnQpOgogICAgICAgICAgICAgZmlsZS53cml0ZShhY3R1YWxfY29u
dGVudHMpCiAKICAgICAgICAgaWYgZGlmZl9maWxlbmFtZToKLSAgICAgICAgICAgIGNtZCA9IFtl
eGVjdXRhYmxlLCAnLS1kaWZmJywgZXhwZWN0ZWRfZmlsZW5hbWUsCi0gICAgICAgICAgICAgICAg
ICAgYWN0dWFsX2ZpbGVuYW1lLCBkaWZmX2ZpbGVuYW1lXQorICAgICAgICAgICAgY21kID0gW2V4
ZWN1dGFibGUsICctLWRpZmYnLAorICAgICAgICAgICAgICAgICAgIHNlbGYuX2NvbnZlcnRfcGF0
aChleHBlY3RlZF9maWxlbmFtZSksCisgICAgICAgICAgICAgICAgICAgc2VsZi5fY29udmVydF9w
YXRoKGFjdHVhbF9maWxlbmFtZSksCisgICAgICAgICAgICAgICAgICAgc2VsZi5fY29udmVydF9w
YXRoKGRpZmZfZmlsZW5hbWUpXQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgY21kID0gW2V4
ZWN1dGFibGUsIGV4cGVjdGVkX2ZpbGVuYW1lLCBhY3R1YWxfZmlsZW5hbWVdCisgICAgICAgICAg
ICBjbWQgPSBbZXhlY3V0YWJsZSwKKyAgICAgICAgICAgICAgICAgICBzZWxmLl9jb252ZXJ0X3Bh
dGgoZXhwZWN0ZWRfZmlsZW5hbWUpLAorICAgICAgICAgICAgICAgICAgIHNlbGYuX2NvbnZlcnRf
cGF0aChhY3R1YWxfZmlsZW5hbWUpXQogCiAgICAgICAgIHJlc3VsdCA9IFRydWUKICAgICAgICAg
dHJ5OgpAQCAtMzQwLDYgKzM0NSwxMiBAQCBjbGFzcyBDaHJvbWl1bVBvcnQoYmFzZS5Qb3J0KToK
ICAgICAgICAgICAgIHBsYXRmb3JtID0gc2VsZi5uYW1lKCkKICAgICAgICAgcmV0dXJuIHNlbGYu
cGF0aF9mcm9tX3dlYmtpdF9iYXNlKCdMYXlvdXRUZXN0cycsICdwbGF0Zm9ybScsIHBsYXRmb3Jt
KQogCisgICAgZGVmIF9jb252ZXJ0X3BhdGgoc2VsZiwgcGF0aCk6CisgICAgICAgICIiIkhhbmRs
ZXMgYW55IGN5Z3dpbi0+d2luMzIgY29udmVyc2lvbiBhcyBuZWNlc3NhcnkuIiIiCisgICAgICAg
IGlmIHN5cy5wbGF0Zm9ybSA9PSAnY3lnd2luJzoKKyAgICAgICAgICAgIHJldHVybiBjeWdwYXRo
KHBhdGgsIHNlbGYuX2V4ZWN1dGl2ZSkKKyAgICAgICAgcmV0dXJuIHBhdGgKKwogICAgIGRlZiBf
cGF0aF90b19pbWFnZV9kaWZmKHNlbGYpOgogICAgICAgICBiaW5hcnlfbmFtZSA9ICdpbWFnZV9k
aWZmJwogICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnVzZV9kcnQ6CkBAIC0zNTksNyArMzcwLDgg
QEAgY2xhc3MgQ2hyb21pdW1Ecml2ZXIoYmFzZS5Ecml2ZXIpOgogICAgIGRlZiBfZHJpdmVyX2Fy
Z3Moc2VsZik6CiAgICAgICAgIGRyaXZlcl9hcmdzID0gW10KICAgICAgICAgaWYgc2VsZi5faW1h
Z2VfcGF0aDoKLSAgICAgICAgICAgIGRyaXZlcl9hcmdzLmFwcGVuZCgiLS1waXhlbC10ZXN0cz0i
ICsgc2VsZi5faW1hZ2VfcGF0aCkKKyAgICAgICAgICAgIGRyaXZlcl9hcmdzLmFwcGVuZCgiLS1w
aXhlbC10ZXN0cz0iICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9wb3J0
Ll9jb252ZXJ0X3BhdGgoc2VsZi5faW1hZ2VfcGF0aCkpCiAKICAgICAgICAgaWYgc2VsZi5fb3B0
aW9ucy51c2VfZHJ0OgogICAgICAgICAgICAgZHJpdmVyX2FyZ3MuYXBwZW5kKCctLXRlc3Qtc2hl
bGwnKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcnVuX3dlYmtpdF90ZXN0cy5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkKaW5kZXggY2Y2MzdlZTYxYmUzMDRjOTE0MWRl
Y2JjMmNlYzg5ZTc1OTI5ZDlkOS4uNTIwN2M5YWYyOTc0NzUwMzBjYjQxODY3ZTRkYzEyNWIzNGMy
NjRhOCAxMDA3NTUKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcnVuX3dlYmtpdF90ZXN0cy5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5CkBAIC05MSwxNCArOTEsMTMgQEAgY2xh
c3MgVGVzdEluZm86CiAgICAgIiIiR3JvdXBzIGluZm9ybWF0aW9uIGFib3V0IGEgdGVzdCBmb3Ig
ZWFzeSBwYXNzaW5nIG9mIGRhdGEuIiIiCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgcG9ydCwg
ZmlsZW5hbWUsIHRpbWVvdXQpOgotICAgICAgICAiIiJHZW5lcmF0ZXMgdGhlIFVSSSBhbmQgc3Rv
cmVzIHRoZSBmaWxlbmFtZSBhbmQgdGltZW91dCBmb3IgdGhpcyB0ZXN0LgorICAgICAgICAiIiIK
ICAgICAgICAgQXJnczoKICAgICAgICAgICBmaWxlbmFtZTogRnVsbCBwYXRoIHRvIHRoZSB0ZXN0
LgotICAgICAgICAgIHRpbWVvdXQ6IFRpbWVvdXQgZm9yIHJ1bm5pbmcgdGhlIHRlc3QgaW4gVGVz
dFNoZWxsLgorICAgICAgICAgIHRpbWVvdXQ6IFRpbWVvdXQgZm9yIHJ1bm5pbmcgdGhlIHRlc3Qg
aW4gRFJULgogICAgICAgICAgICIiIgogICAgICAgICBzZWxmLmZpbGVuYW1lID0gZmlsZW5hbWUK
ICAgICAgICAgc2VsZi5fcG9ydCA9IHBvcnQKLSAgICAgICAgc2VsZi51cmkgPSBwb3J0LmZpbGVu
YW1lX3RvX3VyaShmaWxlbmFtZSkKICAgICAgICAgc2VsZi50aW1lb3V0ID0gdGltZW91dAogICAg
ICAgICBzZWxmLl9pbWFnZV9jaGVja3N1bSA9IC0xCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70569</attachid>
            <date>2010-10-12 16:11:12 -0700</date>
            <delta_ts>2010-10-12 21:24:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47220-20101012161111.patch</filename>
            <type>text/plain</type>
            <size>14192</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA1MDFhODY2MDY3YjU0YzliM2M0YjcwZjVkZjhiZjI1NjgzNzc5YTUwLi4wNjhiYjY4
OTcyODk1MWEwODVhYzQzMjY5NjFjMmMzNTY5N2E2YTM5IDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTkgQEAK
KzIwMTAtMTAtMTEgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCisKKyAgICAgICAgVGhpcyBwYXRjaCBlbmFibGVz
IG5ldy1ydW4td2Via2l0LXRlc3RzIChpbiBwYXJ0aWN1bGFyIHRoZQorICAgICAgICBjaHJvbWl1
bS13aW4gcG9ydCkgdG8gcnVuIHVuZGVyIEN5Z3dpbiBhcyB3ZWxsIGFzIFdpbjMyLiBNb3N0bHkK
KyAgICAgICAgdGhpcyBqdXN0IHJlcXVpcmVkIHNvbWUgY29udmVyc2lvbnMgZnJvbSBjeWd3aW4g
cGF0aHMgdG8gV2luMzIKKyAgICAgICAgcGF0aHMgd2hlbiB3ZSBzcGF3biBvZmYgV2luMzIgYmlu
YXJpZXMgbGlrZSB0ZXN0X3NoZWxsLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD00NzIyMAorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21t
b24vc3lzdGVtL3BhdGgucHk6CisgICAgICAgIC0gRXhwb3NlIHRoZSBjeWdwYXRoKCkgZnVuY3Rp
b24gZm9yIHBhdGggY29udmVyc2lvbgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9kdW1wX3JlbmRlcl90cmVlX3RocmVhZC5weToK
KyAgICAgICAgLSBzaGlmdCBmaWxlbmFtZS0+dXJpIGNvbnZlcnNpb24gaW4gdGhlIFRlc3RJbmZv
IG9iamVjdHMgdG8gdGhlCisgICAgICAgICAgZHVtcF9yZW5kZXJfdHJlZSB0aHJlYWQKKworICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weToKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5OgorICAg
ICAgICAtIHVzZSBjeWdwYXRoKCkKKworMjAxMC0xMC0wNyAgQW50b25pbyBHb21lcyAgPGFnb21l
c0ByaW0uY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAg
ICBbTWFjXSBbRFJUXSBpbXBsZW1lbnQgc2V0U3BhdGlhbE5hdmlnYXRpb25FbmFibGVkCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzI5MQorCisgICAg
ICAgIEltcGxlbWVudGVkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRTcGF0aWFsTmF2aWdhdGlv
bkVuYWJsZWQgZm9yIE1hYydzIERSVAorICAgICAgICBzbyBpdCBjYW4gdHJhY2sgcmVncmVzc2lv
biBvbiB0aGUgZXhpc3RpbmcgaW1wbGVtZW50YXRpb24gYW5kIGZ1dHVyZSBpbXByb3ZlbWVudHMK
KyAgICAgICAgd2UgYXJlIG1ha2luZy4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9M
YXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVy
OjpzZXRTcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQpOgorCisyMDEwLTEwLTA5ICBEaXJrIFByYW5r
ZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIENoYW5nZSBuZXctcnVuLXdlYmtpdC10ZXN0cyB0byBiYWlsIG91
dCB3aGVuIGFsbCB0aGUgdGhyZWFkcyBhcmUKKyAgICAgICAgd2VkZ2VkOyB0aGUgcHJldmlvdXMg
YmVoYXZpb3VyIHdvdWxkIGxvb3AgZm9yZXZlciBwcmludGluZworICAgICAgICB0aHJlYWQgc3Rh
Y2tzIHVudGlsIHRoZSBidWlsZGJvdCAob3IgdGhlIHVzZXIpIGFib3J0ZWQgdGhlCisgICAgICAg
IHByb2Nlc3MuCisKKyAgICAgICAgV2Ugbm93IHRyeSB0byBiYWlsIG91dCwgYnV0IHRoaXMgd29u
J3QgbmVjZXNzYXJpbHkgd29yayBiZWNhdXNlCisgICAgICAgIHNvbWUgcGxhdGZvcm1zIHdvbid0
IGV4aXQgaWYgdGhlcmUgYXJlIHN0aWxsIGxpdmUgdGhyZWFkcy4gQXQKKyAgICAgICAgbGVhc3Qg
d2UnbGwgc3RvcCBvdXRwdXR0aW5nIHRoaW5ncyBhbmQgbG9nIGVycm9ycywgc28gaXQnbGwgYmUK
KyAgICAgICAgZWFzaWVyIHRvIGZpZ3VyZSBvdXQgd2h5IHRoZSB0ZXN0IHdhcyBhYm9ydGVkLgor
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzQ2NQor
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0
cy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0
X3Rlc3RzX3VuaXR0ZXN0LnB5OgorCiAyMDEwLTEwLTA3ICBBbnRvbmlvIEdvbWVzICA8YWdvbWVz
QHJpbS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgpkaWZmIC0tZ2l0
IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3BhdGgucHkgYi9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vcGF0aC5weQppbmRleCA5
MzcyNDdlZjBhY2MxOTE5ZGUwZWQ3ZTZiNzBkNGNhODE3MWM3MTEwLi41MjgyMTBhMDYzOTE4OTg0
MzZlNjQ2MTU0NjllNjg4ZmVkZmMxM2ZhIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vcGF0aC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vcGF0aC5weQpAQCAtMzgsNiArMzgsMjEgQEAgZGVmIGFi
c3BhdGhfdG9fdXJpKHBhdGgsIGV4ZWN1dGl2ZSwgcGxhdGZvcm09Tm9uZSk6CiAgICAgcmV0dXJu
ICJmaWxlOiIgKyBfZXNjYXBlKF9jb252ZXJ0X3BhdGgocGF0aCwgZXhlY3V0aXZlLCBwbGF0Zm9y
bSkpCiAKIAorZGVmIGN5Z3BhdGgocGF0aCwgZXhlY3V0aXZlKToKKyAgICAiIiJDb252ZXJ0cyBh
IGN5Z3dpbiBwYXRoIHRvIFdpbmRvd3MgcGF0aC4iIiIKKyAgICAjIEZJWE1FOiB0aGlzIG1heSBu
b3QgYmUgY29ycmVjdCBpbiBldmVyeSBzaXR1YXRpb24sIGJ1dCBmb3JraW5nCisgICAgIyBjeWdw
YXRoIGlzIHZlcnkgc2xvdy4gTW9yZSBpbXBvcnRhbnRseSwgdGhlcmUgaXMgYSBidWcgaW4gUHl0
aG9uCisgICAgIyB3aGVyZSBsYXVuY2hpbmcgc3VicHJvY2Vzc2VzIGFuZCBjb21tdW5pY2F0aW5n
IHdpdGggUElQRXMgKHdoaWNoCisgICAgIyBpcyB3aGF0IHJ1bl9jb21tYW5kKCkgZG9lcykgY2Fu
IGxlYWQgdG8gZGVhZGxvY2tzIHdoZW4gcnVubmluZyBpbgorICAgICMgbXVsdGlwbGUgdGhyZWFk
cy4KKyAgICBpZiBwYXRoLnN0YXJ0c3dpdGgoIi9jeWdkcml2ZSIpOgorICAgICAgICBwYXRoID0g
cGF0aFsxMF0gKyAiOiIgKyBwYXRoWzExOl0KKyAgICAgICAgcGF0aCA9IHBhdGgucmVwbGFjZSgi
LyIsICJcXCIpCisgICAgICAgIHJldHVybiBwYXRoCisgICAgcmV0dXJuIGV4ZWN1dGl2ZS5ydW5f
Y29tbWFuZChbJ2N5Z3BhdGgnLCAnLXdhJywgcGF0aF0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkZWNvZGVfb3V0cHV0PUZhbHNlKS5yc3RyaXAoKQorCisKIGRlZiBfZXNjYXBl
KHBhdGgpOgogICAgICIiIkhhbmRsZSBhbnkgY2hhcmFjdGVycyBpbiB0aGUgcGF0aCB0aGF0IHNo
b3VsZCBiZSBlc2NhcGVkLiIiIgogICAgICMgRklYTUU6IHdlYiBicm93c2VycyBkb24ndCBhcHBl
YXIgdG8gYmxpbmRseSBxdW90ZSBldmVyeSBjaGFyYWN0ZXIKQEAgLTUyLDcgKzY3LDcgQEAgZGVm
IF9jb252ZXJ0X3BhdGgocGF0aCwgZXhlY3V0aXZlLCBwbGF0Zm9ybSk6CiAgICAgaWYgcGxhdGZv
cm0gPT0gJ3dpbjMyJzoKICAgICAgICAgcmV0dXJuIF93aW5wYXRoX3RvX3VyaShwYXRoKQogICAg
IGlmIHBsYXRmb3JtID09ICdjeWd3aW4nOgotICAgICAgICByZXR1cm4gX3dpbnBhdGhfdG9fdXJp
KF9jeWdwYXRoKHBhdGgsIGV4ZWN1dGl2ZSkpCisgICAgICAgIHJldHVybiBfd2lucGF0aF90b191
cmkoY3lncGF0aChwYXRoLCBleGVjdXRpdmUpKQogICAgIHJldHVybiBfdW5peHlwYXRoX3RvX3Vy
aShwYXRoKQogCiAKQEAgLTYwLDEzICs3NSw2IEBAIGRlZiBfd2lucGF0aF90b191cmkocGF0aCk6
CiAgICAgIiIiQ29udmVydHMgYSB3aW5kb3cgYWJzb2x1dGUgcGF0aCB0byBhIGZpbGU6IFVSTC4i
IiIKICAgICByZXR1cm4gIi8vLyIgKyBwYXRoLnJlcGxhY2UoIlxcIiwgIi8iKQogCi0KLWRlZiBf
Y3lncGF0aChwYXRoLCBleGVjdXRpdmUpOgotICAgICIiIkNvbnZlcnRzIGEgY3lnd2luIHBhdGgg
dG8gV2luZG93cyBwYXRoLiIiIgotICAgIHJldHVybiBleGVjdXRpdmUucnVuX2NvbW1hbmQoWydj
eWdwYXRoJywgJy13YScsIHBhdGhdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZGVjb2RlX291dHB1dD1GYWxzZSkucnN0cmlwKCkKLQotCiBkZWYgX3VuaXh5cGF0aF90b191cmko
cGF0aCk6CiAgICAgIiIiQ29udmVydHMgYSB1bml4LXN0eWxlIHBhdGggdG8gYSBmaWxlOiBVUkwu
IiIiCiAgICAgcmV0dXJuICIvLyIgKyBwYXRoCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9kdW1wX3JlbmRlcl90cmVl
X3RocmVhZC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xh
eW91dF9wYWNrYWdlL2R1bXBfcmVuZGVyX3RyZWVfdGhyZWFkLnB5CmluZGV4IGYxZWIwYmZhNWU4
ZWU4YjRlMGIwMzdmYmIzMjJlYWVhOTVmNGRiYmMuLmNkMGVmOGUxN2FlMjgwYjVlYjc4ZWE4NjQ2
Mjk3OGIwNmE4ZTU0MzcgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2R1bXBfcmVuZGVyX3RyZWVfdGhyZWFkLnB5Cisr
KyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNr
YWdlL2R1bXBfcmVuZGVyX3RyZWVfdGhyZWFkLnB5CkBAIC04Miw3ICs4Miw3IEBAIGRlZiBfcHJv
Y2Vzc19vdXRwdXQocG9ydCwgb3B0aW9ucywgdGVzdF9pbmZvLCB0ZXN0X3R5cGVzLCB0ZXN0X2Fy
Z3MsCiAgICAgICBwb3J0OiBwb3J0LXNwZWNpZmljIGhvb2tzCiAgICAgICBvcHRpb25zOiBjb21t
YW5kIGxpbmUgb3B0aW9ucyBhcmd1bWVudCBmcm9tIG9wdHBhcnNlCiAgICAgICBwcm9jOiBhbiBh
Y3RpdmUgRHVtcFJlbmRlclRyZWUgcHJvY2VzcwotICAgICAgdGVzdF9pbmZvOiBPYmplY3QgY29u
dGFpbmluZyB0aGUgdGVzdCBmaWxlbmFtZSwgdXJpIGFuZCB0aW1lb3V0CisgICAgICB0ZXN0X2lu
Zm86IE9iamVjdCBjb250YWluaW5nIHRoZSB0ZXN0IGZpbGVuYW1lIGFuZCB0aW1lb3V0CiAgICAg
ICB0ZXN0X3R5cGVzOiBsaXN0IG9mIHRlc3QgdHlwZXMgdG8gc3ViamVjdCB0aGUgb3V0cHV0IHRv
CiAgICAgICB0ZXN0X2FyZ3M6IGFyZ3VtZW50cyB0byBiZSBwYXNzZWQgdG8gZWFjaCB0ZXN0CiAK
QEAgLTE3MSw3ICsxNzEsNyBAQCBjbGFzcyBTaW5nbGVUZXN0VGhyZWFkKHRocmVhZGluZy5UaHJl
YWQpOgogICAgICAgICBBcmdzOgogICAgICAgICAgIHBvcnQ6IG9iamVjdCBpbXBsZW1lbnRpbmcg
cG9ydC1zcGVjaWZpYyBob29rcwogICAgICAgICAgIG9wdGlvbnM6IGNvbW1hbmQgbGluZSBhcmd1
bWVudCBvYmplY3QgZnJvbSBvcHRwYXJzZQotICAgICAgICAgIHRlc3RfaW5mbzogT2JqZWN0IGNv
bnRhaW5pbmcgdGhlIHRlc3QgZmlsZW5hbWUsIHVyaSBhbmQgdGltZW91dAorICAgICAgICAgIHRl
c3RfaW5mbzogT2JqZWN0IGNvbnRhaW5pbmcgdGhlIHRlc3QgZmlsZW5hbWUgYW5kIHRpbWVvdXQK
ICAgICAgICAgICB0ZXN0X3R5cGVzOiBBIGxpc3Qgb2YgVGVzdFR5cGUgb2JqZWN0cyB0byBydW4g
dGhlIHRlc3Qgb3V0cHV0CiAgICAgICAgICAgICAgIGFnYWluc3QuCiAgICAgICAgICAgdGVzdF9h
cmdzOiBBIFRlc3RBcmd1bWVudHMgb2JqZWN0IHRvIHBhc3MgdG8gZWFjaCBUZXN0VHlwZS4KQEAg
LTE5MiwxMiArMTkyLDEzIEBAIGNsYXNzIFNpbmdsZVRlc3RUaHJlYWQodGhyZWFkaW5nLlRocmVh
ZCk6CiAgICAgICAgICMgRklYTUU6IHRoaXMgaXMgYSBzZXBhcmF0ZSByb3V0aW5lIHRvIHdvcmsg
YXJvdW5kIGEgYnVnCiAgICAgICAgICMgaW4gY292ZXJhZ2U6IHNlZSBodHRwOi8vYml0YnVja2V0
Lm9yZy9uZWQvY292ZXJhZ2VweS9pc3N1ZS84NS4KICAgICAgICAgdGVzdF9pbmZvID0gc2VsZi5f
dGVzdF9pbmZvCisgICAgICAgIHVyaSA9IHNlbGYuX3BvcnQuZmlsZW5hbWVfdG9fdXJpKHRlc3Rf
aW5mby5maWxlbmFtZSkKICAgICAgICAgc2VsZi5fZHJpdmVyID0gc2VsZi5fcG9ydC5jcmVhdGVf
ZHJpdmVyKHNlbGYuX3Rlc3RfYXJncy5wbmdfcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMpCiAgICAgICAgIHNlbGYuX2Ry
aXZlci5zdGFydCgpCiAgICAgICAgIHN0YXJ0ID0gdGltZS50aW1lKCkKICAgICAgICAgY3Jhc2gs
IHRpbWVvdXQsIGFjdHVhbF9jaGVja3N1bSwgb3V0cHV0LCBlcnJvciA9IFwKLSAgICAgICAgICAg
IHNlbGYuX2RyaXZlci5ydW5fdGVzdCh0ZXN0X2luZm8udXJpLnN0cmlwKCksIHRlc3RfaW5mby50
aW1lb3V0LAorICAgICAgICAgICAgc2VsZi5fZHJpdmVyLnJ1bl90ZXN0KHVyaSwgdGVzdF9pbmZv
LnRpbWVvdXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9pbmZvLmlt
YWdlX2hhc2goKSkKICAgICAgICAgZW5kID0gdGltZS50aW1lKCkKICAgICAgICAgc2VsZi5fdGVz
dF9yZXN1bHQgPSBfcHJvY2Vzc19vdXRwdXQoc2VsZi5fcG9ydCwgc2VsZi5fb3B0aW9ucywKQEAg
LTI1NCw3ICsyNTUsNyBAQCBjbGFzcyBUZXN0U2hlbGxUaHJlYWQoV2F0Y2hhYmxlVGhyZWFkKToK
ICAgICAgICAgICBwb3J0OiBpbnRlcmZhY2UgdG8gcG9ydC1zcGVjaWZpYyBob29rcwogICAgICAg
ICAgIG9wdGlvbnM6IGNvbW1hbmQgbGluZSBvcHRpb25zIGFyZ3VtZW50IGZyb20gb3B0cGFyc2UK
ICAgICAgICAgICBmaWxlbmFtZV9saXN0X3F1ZXVlOiBBIHRocmVhZCBzYWZlIFF1ZXVlIGNsYXNz
IHRoYXQgY29udGFpbnMgbGlzdHMKLSAgICAgICAgICAgICAgb2YgdHVwbGVzIG9mIChmaWxlbmFt
ZSwgdXJpKSBwYWlycy4KKyAgICAgICAgICAgICAgb2YgKGZpbGVuYW1lLCBUZXN0SW5mbykgcGFp
cnMuCiAgICAgICAgICAgcmVzdWx0X3F1ZXVlOiBBIHRocmVhZCBzYWZlIFF1ZXVlIGNsYXNzIHRo
YXQgd2lsbCBjb250YWluIHR1cGxlcyBvZgogICAgICAgICAgICAgICAodGVzdCwgZmFpbHVyZSBs
aXN0cykgZm9yIHRoZSB0ZXN0IHJlc3VsdHMuCiAgICAgICAgICAgdGVzdF90eXBlczogQSBsaXN0
IG9mIFRlc3RUeXBlIG9iamVjdHMgdG8gcnVuIHRoZSB0ZXN0IG91dHB1dApAQCAtNDIxLDcgKzQy
Miw3IEBAIGNsYXNzIFRlc3RTaGVsbFRocmVhZChXYXRjaGFibGVUaHJlYWQpOgogICAgICAgICBm
aWxlcyBzaW5nbHkuCiAKICAgICAgICAgQXJnczoKLSAgICAgICAgICB0ZXN0X2luZm86IE9iamVj
dCBjb250YWluaW5nIHRoZSB0ZXN0IGZpbGVuYW1lLCB1cmkgYW5kIHRpbWVvdXQKKyAgICAgICAg
ICB0ZXN0X2luZm86IE9iamVjdCBjb250YWluaW5nIHRoZSB0ZXN0IGZpbGVuYW1lIGFuZCB0aW1l
b3V0CiAKICAgICAgICAgUmV0dXJuczoKICAgICAgICAgICBBIFRlc3RSZXN1bHQKQEAgLTQ2OSw3
ICs0NzAsNyBAQCBjbGFzcyBUZXN0U2hlbGxUaHJlYWQoV2F0Y2hhYmxlVGhyZWFkKToKICAgICAg
ICAgIiIiUnVuIGEgc2luZ2xlIHRlc3QgZmlsZSB1c2luZyBhIHNoYXJlZCBEdW1wUmVuZGVyVHJl
ZSBwcm9jZXNzLgogCiAgICAgICAgIEFyZ3M6Ci0gICAgICAgICAgdGVzdF9pbmZvOiBPYmplY3Qg
Y29udGFpbmluZyB0aGUgdGVzdCBmaWxlbmFtZSwgdXJpIGFuZCB0aW1lb3V0CisgICAgICAgICAg
dGVzdF9pbmZvOiBPYmplY3QgY29udGFpbmluZyB0aGUgdGVzdCBmaWxlbmFtZSBhbmQgdGltZW91
dAogCiAgICAgICAgIFJldHVybnM6CiAgICAgICAgICAgQSBsaXN0IG9mIFRlc3RGYWlsdXJlIG9i
amVjdHMgZGVzY3JpYmluZyB0aGUgZXJyb3IuCkBAIC00OTEsOCArNDkyLDkgQEAgY2xhc3MgVGVz
dFNoZWxsVGhyZWFkKFdhdGNoYWJsZVRocmVhZCk6CiAgICAgICAgICAgICAgX3BhZF90aW1lb3V0
KGludCh0ZXN0X2luZm8udGltZW91dCkpKQogICAgICAgICBzZWxmLl9uZXh0X3RpbWVvdXQgPSBz
dGFydCArIHRocmVhZF90aW1lb3V0CiAKKyAgICAgICAgdXJpID0gc2VsZi5fcG9ydC5maWxlbmFt
ZV90b191cmkodGVzdF9pbmZvLmZpbGVuYW1lKQogICAgICAgICBjcmFzaCwgdGltZW91dCwgYWN0
dWFsX2NoZWNrc3VtLCBvdXRwdXQsIGVycm9yID0gXAotICAgICAgICAgICBzZWxmLl9kcml2ZXIu
cnVuX3Rlc3QodGVzdF9pbmZvLnVyaSwgdGVzdF9pbmZvLnRpbWVvdXQsIGltYWdlX2hhc2gpCisg
ICAgICAgICAgIHNlbGYuX2RyaXZlci5ydW5fdGVzdCh1cmksIHRlc3RfaW5mby50aW1lb3V0LCBp
bWFnZV9oYXNoKQogICAgICAgICBlbmQgPSB0aW1lLnRpbWUoKQogCiAgICAgICAgIHJlc3VsdCA9
IF9wcm9jZXNzX291dHB1dChzZWxmLl9wb3J0LCBzZWxmLl9vcHRpb25zLApkaWZmIC0tZ2l0IGEv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5IGIv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5Cmlu
ZGV4IDU2Y2EwY2FjOTdlMjY1N2Y3MWQ5NTBjNmIxY2I5OWM1Y2EzZDJmYWEuLmRmNzNlZjQ5MTE2
ODMwYmNiNjg4NjdmZTZkMmExNWM0MTY0MGViYjAgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQorKysgYi9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkKQEAgLTQ4LDYgKzQ4
LDcgQEAgaW1wb3J0IHdlYnNvY2tldF9zZXJ2ZXIKIAogZnJvbSB3ZWJraXRweS5jb21tb24uc3lz
dGVtIGltcG9ydCBsb2d1dGlscwogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2
ZSBpbXBvcnQgRXhlY3V0aXZlLCBTY3JpcHRFcnJvcgorZnJvbSB3ZWJraXRweS5jb21tb24uc3lz
dGVtLnBhdGggaW1wb3J0IGFic3BhdGhfdG9fdXJpCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0
ZW0udXNlciBpbXBvcnQgVXNlcgogCiAKQEAgLTMxMCwxNyArMzExLDcgQEAgY2xhc3MgUG9ydChv
YmplY3QpOgogICAgICAgICAgICAgICAgIHByb3RvY29sID0gImh0dHAiCiAgICAgICAgICAgICBy
ZXR1cm4gIiVzOi8vMTI3LjAuMC4xOiV1LyVzIiAlIChwcm90b2NvbCwgcG9ydCwgcmVsYXRpdmVf
cGF0aCkKIAotICAgICAgICBhYnNwYXRoID0gb3MucGF0aC5hYnNwYXRoKGZpbGVuYW1lKQotCi0g
ICAgICAgICMgT24gV2luZG93cywgYWJzb2x1dGUgcGF0aHMgYXJlIG9mIHRoZSBmb3JtICJjOlxm
b28udHh0Ii4gSG93ZXZlciwKLSAgICAgICAgIyBhbGwgY3VycmVudCBicm93c2VycyAoZXhjZXB0
IGZvciBPcGVyYSkgbm9ybWFsaXplIGZpbGUgVVJMcyBieQotICAgICAgICAjIHByZXBlbmRpbmcg
YW4gYWRkaXRpb25hbCAiLyIgYXMgaWYgdGhlIGFic29sdXRlIHBhdGggd2FzCi0gICAgICAgICMg
Ii9jOi9mb28udHh0Ii4gVGhpcyBtZWFucyB0aGF0IGFsbCBmaWxlIFVSTHMgZW5kIHVwIHdpdGgg
ImZpbGU6Ly8vIgotICAgICAgICAjIGF0IHRoZSBiZWdpbm5pbmcuCi0gICAgICAgIGlmIHN5cy5w
bGF0Zm9ybSA9PSAnd2luMzInOgotICAgICAgICAgICAgYWJzcGF0aCA9ICcvJyArIGFic3BhdGgu
cmVwbGFjZSgnXFwnLCAnLycpCi0KLSAgICAgICAgcmV0dXJuICJmaWxlOi8vIiArIGFic3BhdGgK
KyAgICAgICAgcmV0dXJuIGFic3BhdGhfdG9fdXJpKG9zLnBhdGguYWJzcGF0aChmaWxlbmFtZSks
IHNlbGYuX2V4ZWN1dGl2ZSkKIAogICAgIGRlZiB0ZXN0cyhzZWxmLCBwYXRocyk6CiAgICAgICAg
ICIiIlJldHVybiB0aGUgbGlzdCBvZiB0ZXN0cyBmb3VuZCAocmVsYXRpdmUgdG8gbGF5b3V0X3Rl
c3RzX2RpcigpLiIiIgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkKaW5kZXggMzAxZDRiMTg5YjA5YzgzZDI3
MDZlMzYwYTczZTg4MjNmYzFiMDgwOC4uMWY3ODRkYzNiODc1MDc5M2Y2MWQ2OTM5MDY2ZjRhYjY3
NDE2NjkzNiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9jaHJvbWl1bS5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5CkBAIC00MywxMiArNDMsMTMgQEAgaW1wb3J0
IHRlbXBmaWxlCiBpbXBvcnQgdGltZQogaW1wb3J0IHdlYmJyb3dzZXIKIAotaW1wb3J0IGJhc2UK
LWltcG9ydCBodHRwX3NlcnZlcgotCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0
aXZlIGltcG9ydCBFeGVjdXRpdmUKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5wYXRoIGlt
cG9ydCBhYnNwYXRoX3RvX3VyaSwgY3lncGF0aAogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMu
bGF5b3V0X3BhY2thZ2UgaW1wb3J0IHRlc3RfZXhwZWN0YXRpb25zCiAKK2ltcG9ydCBiYXNlCitp
bXBvcnQgaHR0cF9zZXJ2ZXIKKwogIyBDaHJvbWl1bSBEUlQgb24gT1NYIHVzZXMgV2ViS2l0RHJp
dmVyLgogaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nOgogICAgIGltcG9ydCB3ZWJraXQKQEAg
LTE0MywxMSArMTQ0LDIxIEBAIGNsYXNzIENocm9taXVtUG9ydChiYXNlLlBvcnQpOgogICAgICAg
ICB3aXRoIG9wZW4oYWN0dWFsX2ZpbGVuYW1lLCAndytiJykgYXMgZmlsZToKICAgICAgICAgICAg
IGZpbGUud3JpdGUoYWN0dWFsX2NvbnRlbnRzKQogCisgICAgICAgICMgV2UgdXNlIGNvbnZlcnRf
cGF0aCBpZiB0aGVyZSdzIGEgY2hhbmNlIHRoYXQgdGhlIGxhdW5jaGVkCisgICAgICAgICMgZXhl
Y3V0YWJsZSBuZWVkcyBmaWxlbmFtZSBhcmd1bWVudHMgaW4gYSBkaWZmZXJlbnQgZm9ybWF0IHRo
YW4KKyAgICAgICAgIyB0aGUgbm9ybWFsIGZvcm1hdCBwcm92aWRlZCBieSB0aGUgcHl0aG9uIHJ1
bnRpbWUuIFRoZSBtYWluCisgICAgICAgICMgZXhhbXBsZSBvZiB0aGlzIGlzIHJ1bm5pbmcgdW5k
ZXIgQ3lnd2luIG9uIFdpbmRvd3MgYnV0CisgICAgICAgICMgbGF1bmNoaW5nIGEgV2luMzIgYmlu
YXJ5LCB3aGVyZSB3ZSBuZWVkIHRvIGNvbnZlcnQgdGhlIHBhdGgKKyAgICAgICAgIyBmcm9tIC9j
eWdkcml2ZS9jL2Zvby50eHQgdG8gYzpcZm9vLnR4dC4KICAgICAgICAgaWYgZGlmZl9maWxlbmFt
ZToKLSAgICAgICAgICAgIGNtZCA9IFtleGVjdXRhYmxlLCAnLS1kaWZmJywgZXhwZWN0ZWRfZmls
ZW5hbWUsCi0gICAgICAgICAgICAgICAgICAgYWN0dWFsX2ZpbGVuYW1lLCBkaWZmX2ZpbGVuYW1l
XQorICAgICAgICAgICAgY21kID0gW2V4ZWN1dGFibGUsICctLWRpZmYnLAorICAgICAgICAgICAg
ICAgICAgIHNlbGYuX2NvbnZlcnRfcGF0aChleHBlY3RlZF9maWxlbmFtZSksCisgICAgICAgICAg
ICAgICAgICAgc2VsZi5fY29udmVydF9wYXRoKGFjdHVhbF9maWxlbmFtZSksCisgICAgICAgICAg
ICAgICAgICAgc2VsZi5fY29udmVydF9wYXRoKGRpZmZfZmlsZW5hbWUpXQogICAgICAgICBlbHNl
OgotICAgICAgICAgICAgY21kID0gW2V4ZWN1dGFibGUsIGV4cGVjdGVkX2ZpbGVuYW1lLCBhY3R1
YWxfZmlsZW5hbWVdCisgICAgICAgICAgICBjbWQgPSBbZXhlY3V0YWJsZSwKKyAgICAgICAgICAg
ICAgICAgICBzZWxmLl9jb252ZXJ0X3BhdGgoZXhwZWN0ZWRfZmlsZW5hbWUpLAorICAgICAgICAg
ICAgICAgICAgIHNlbGYuX2NvbnZlcnRfcGF0aChhY3R1YWxfZmlsZW5hbWUpXQogCiAgICAgICAg
IHJlc3VsdCA9IFRydWUKICAgICAgICAgdHJ5OgpAQCAtMzQwLDYgKzM1MSwxMyBAQCBjbGFzcyBD
aHJvbWl1bVBvcnQoYmFzZS5Qb3J0KToKICAgICAgICAgICAgIHBsYXRmb3JtID0gc2VsZi5uYW1l
KCkKICAgICAgICAgcmV0dXJuIHNlbGYucGF0aF9mcm9tX3dlYmtpdF9iYXNlKCdMYXlvdXRUZXN0
cycsICdwbGF0Zm9ybScsIHBsYXRmb3JtKQogCisgICAgZGVmIF9jb252ZXJ0X3BhdGgoc2VsZiwg
cGF0aCk6CisgICAgICAgICIiIkhhbmRsZXMgZmlsZW5hbWUgY29udmVyc2lvbiBmb3Igc3VicHJv
Y2VzcyBjb21tYW5kIGxpbmUgYXJncy4iIiIKKyAgICAgICAgIyBTZWUgbm90ZSBhYm92ZSBpbiBk
aWZmX2ltYWdlKCkgZm9yIHdoeSB3ZSBuZWVkIHRoaXMuCisgICAgICAgIGlmIHN5cy5wbGF0Zm9y
bSA9PSAnY3lnd2luJzoKKyAgICAgICAgICAgIHJldHVybiBjeWdwYXRoKHBhdGgsIHNlbGYuX2V4
ZWN1dGl2ZSkKKyAgICAgICAgcmV0dXJuIHBhdGgKKwogICAgIGRlZiBfcGF0aF90b19pbWFnZV9k
aWZmKHNlbGYpOgogICAgICAgICBiaW5hcnlfbmFtZSA9ICdpbWFnZV9kaWZmJwogICAgICAgICBp
ZiBzZWxmLl9vcHRpb25zLnVzZV9kcnQ6CkBAIC0zNTksNyArMzc3LDEwIEBAIGNsYXNzIENocm9t
aXVtRHJpdmVyKGJhc2UuRHJpdmVyKToKICAgICBkZWYgX2RyaXZlcl9hcmdzKHNlbGYpOgogICAg
ICAgICBkcml2ZXJfYXJncyA9IFtdCiAgICAgICAgIGlmIHNlbGYuX2ltYWdlX3BhdGg6Ci0gICAg
ICAgICAgICBkcml2ZXJfYXJncy5hcHBlbmQoIi0tcGl4ZWwtdGVzdHM9IiArIHNlbGYuX2ltYWdl
X3BhdGgpCisgICAgICAgICAgICAjIFNlZSBub3RlIGFib3ZlIGluIGRpZmZfaW1hZ2UoKSBmb3Ig
d2h5IHdlIG5lZWQKKyAgICAgICAgICAgICMgX2NvbnZlcnRfcGF0aCgpLgorICAgICAgICAgICAg
ZHJpdmVyX2FyZ3MuYXBwZW5kKCItLXBpeGVsLXRlc3RzPSIgKworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNlbGYuX3BvcnQuX2NvbnZlcnRfcGF0aChzZWxmLl9pbWFnZV9wYXRoKSkK
IAogICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnVzZV9kcnQ6CiAgICAgICAgICAgICBkcml2ZXJf
YXJncy5hcHBlbmQoJy0tdGVzdC1zaGVsbCcpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5IGIvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weQppbmRl
eCA3YzVlNzhmZjQ4MzU0NWQzNGM3NmMzYWJhNGVlMWNlYjRhYzU4ZTZlLi5jMTgxMjI3Yzc0NzE0
Zjg4NjgyY2Q4ZGExNWQzOTg0ZWJmOTM1MmMwIDEwMDc1NQotLS0gYS9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5CisrKyBiL1dlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkK
QEAgLTkxLDE0ICs5MSwxMyBAQCBjbGFzcyBUZXN0SW5mbzoKICAgICAiIiJHcm91cHMgaW5mb3Jt
YXRpb24gYWJvdXQgYSB0ZXN0IGZvciBlYXN5IHBhc3Npbmcgb2YgZGF0YS4iIiIKIAogICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBwb3J0LCBmaWxlbmFtZSwgdGltZW91dCk6Ci0gICAgICAgICIiIkdl
bmVyYXRlcyB0aGUgVVJJIGFuZCBzdG9yZXMgdGhlIGZpbGVuYW1lIGFuZCB0aW1lb3V0IGZvciB0
aGlzIHRlc3QuCisgICAgICAgICIiIgogICAgICAgICBBcmdzOgogICAgICAgICAgIGZpbGVuYW1l
OiBGdWxsIHBhdGggdG8gdGhlIHRlc3QuCi0gICAgICAgICAgdGltZW91dDogVGltZW91dCBmb3Ig
cnVubmluZyB0aGUgdGVzdCBpbiBUZXN0U2hlbGwuCisgICAgICAgICAgdGltZW91dDogVGltZW91
dCBmb3IgcnVubmluZyB0aGUgdGVzdCBpbiBEUlQuCiAgICAgICAgICAgIiIiCiAgICAgICAgIHNl
bGYuZmlsZW5hbWUgPSBmaWxlbmFtZQogICAgICAgICBzZWxmLl9wb3J0ID0gcG9ydAotICAgICAg
ICBzZWxmLnVyaSA9IHBvcnQuZmlsZW5hbWVfdG9fdXJpKGZpbGVuYW1lKQogICAgICAgICBzZWxm
LnRpbWVvdXQgPSB0aW1lb3V0CiAgICAgICAgIHNlbGYuX2ltYWdlX2NoZWNrc3VtID0gLTEKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70581</attachid>
            <date>2010-10-12 21:24:10 -0700</date>
            <delta_ts>2010-10-13 20:12:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47220-20101012212409.patch</filename>
            <type>text/plain</type>
            <size>16317</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA0MmE1YjUxM2RlZDM2Mjc4YmI4ZGY5ZTM4ZDU2YTcxNDk0NTkwMmI2Li5iYWRlNTIx
ODk1NGE0MzA1MmE3ZTRhMTJjMjhmZDE0NTE0NDNjNTBhIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTkgQEAK
KzIwMTAtMTAtMTIgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCisKKyAgICAgICAgVGhpcyBwYXRjaCBlbmFibGVz
IG5ldy1ydW4td2Via2l0LXRlc3RzIChpbiBwYXJ0aWN1bGFyIHRoZQorICAgICAgICBjaHJvbWl1
bS13aW4gcG9ydCkgdG8gcnVuIHVuZGVyIEN5Z3dpbiBhcyB3ZWxsIGFzIFdpbjMyLiBNb3N0bHkK
KyAgICAgICAgdGhpcyBqdXN0IHJlcXVpcmVkIHNvbWUgY29udmVyc2lvbnMgZnJvbSBjeWd3aW4g
cGF0aHMgdG8gV2luMzIKKyAgICAgICAgcGF0aHMgd2hlbiB3ZSBzcGF3biBvZmYgV2luMzIgYmlu
YXJpZXMgbGlrZSB0ZXN0X3NoZWxsLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD00NzIyMAorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21t
b24vc3lzdGVtL3BhdGgucHk6CisgICAgICAgIC0gRXhwb3NlIHRoZSBjeWdwYXRoKCkgZnVuY3Rp
b24gZm9yIHBhdGggY29udmVyc2lvbgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9kdW1wX3JlbmRlcl90cmVlX3RocmVhZC5weToK
KyAgICAgICAgLSBzaGlmdCBmaWxlbmFtZS0+dXJpIGNvbnZlcnNpb24gaW4gdGhlIFRlc3RJbmZv
IG9iamVjdHMgdG8gdGhlCisgICAgICAgICAgZHVtcF9yZW5kZXJfdHJlZSB0aHJlYWQKKworICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weToKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5OgorICAg
ICAgICAtIHVzZSBjeWdwYXRoKCkKKworMjAxMC0xMC0wNyAgQW50b25pbyBHb21lcyAgPGFnb21l
c0ByaW0uY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAg
ICBbTWFjXSBbRFJUXSBpbXBsZW1lbnQgc2V0U3BhdGlhbE5hdmlnYXRpb25FbmFibGVkCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzI5MQorCisgICAg
ICAgIEltcGxlbWVudGVkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRTcGF0aWFsTmF2aWdhdGlv
bkVuYWJsZWQgZm9yIE1hYydzIERSVAorICAgICAgICBzbyBpdCBjYW4gdHJhY2sgcmVncmVzc2lv
biBvbiB0aGUgZXhpc3RpbmcgaW1wbGVtZW50YXRpb24gYW5kIGZ1dHVyZSBpbXByb3ZlbWVudHMK
KyAgICAgICAgd2UgYXJlIG1ha2luZy4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9M
YXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVy
OjpzZXRTcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQpOgorCisyMDEwLTEwLTA5ICBEaXJrIFByYW5r
ZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIENoYW5nZSBuZXctcnVuLXdlYmtpdC10ZXN0cyB0byBiYWlsIG91
dCB3aGVuIGFsbCB0aGUgdGhyZWFkcyBhcmUKKyAgICAgICAgd2VkZ2VkOyB0aGUgcHJldmlvdXMg
YmVoYXZpb3VyIHdvdWxkIGxvb3AgZm9yZXZlciBwcmludGluZworICAgICAgICB0aHJlYWQgc3Rh
Y2tzIHVudGlsIHRoZSBidWlsZGJvdCAob3IgdGhlIHVzZXIpIGFib3J0ZWQgdGhlCisgICAgICAg
IHByb2Nlc3MuCisKKyAgICAgICAgV2Ugbm93IHRyeSB0byBiYWlsIG91dCwgYnV0IHRoaXMgd29u
J3QgbmVjZXNzYXJpbHkgd29yayBiZWNhdXNlCisgICAgICAgIHNvbWUgcGxhdGZvcm1zIHdvbid0
IGV4aXQgaWYgdGhlcmUgYXJlIHN0aWxsIGxpdmUgdGhyZWFkcy4gQXQKKyAgICAgICAgbGVhc3Qg
d2UnbGwgc3RvcCBvdXRwdXR0aW5nIHRoaW5ncyBhbmQgbG9nIGVycm9ycywgc28gaXQnbGwgYmUK
KyAgICAgICAgZWFzaWVyIHRvIGZpZ3VyZSBvdXQgd2h5IHRoZSB0ZXN0IHdhcyBhYm9ydGVkLgor
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzQ2NQor
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0
cy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0
X3Rlc3RzX3VuaXR0ZXN0LnB5OgorCiAyMDEwLTEwLTExICBBZGFtIEJhcnRoICA8YWJhcnRoQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZC4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9wYXRoLnB5IGIvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3BhdGgucHkKaW5kZXggOTM3MjQ3ZWYwYWNjMTkx
OWRlMGVkN2U2YjcwZDRjYTgxNzFjNzExMC4uNTI4MjEwYTA2MzkxODk4NDM2ZTY0NjE1NDY5ZTY4
OGZlZGZjMTNmYSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21t
b24vc3lzdGVtL3BhdGgucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21t
b24vc3lzdGVtL3BhdGgucHkKQEAgLTM4LDYgKzM4LDIxIEBAIGRlZiBhYnNwYXRoX3RvX3VyaShw
YXRoLCBleGVjdXRpdmUsIHBsYXRmb3JtPU5vbmUpOgogICAgIHJldHVybiAiZmlsZToiICsgX2Vz
Y2FwZShfY29udmVydF9wYXRoKHBhdGgsIGV4ZWN1dGl2ZSwgcGxhdGZvcm0pKQogCiAKK2RlZiBj
eWdwYXRoKHBhdGgsIGV4ZWN1dGl2ZSk6CisgICAgIiIiQ29udmVydHMgYSBjeWd3aW4gcGF0aCB0
byBXaW5kb3dzIHBhdGguIiIiCisgICAgIyBGSVhNRTogdGhpcyBtYXkgbm90IGJlIGNvcnJlY3Qg
aW4gZXZlcnkgc2l0dWF0aW9uLCBidXQgZm9ya2luZworICAgICMgY3lncGF0aCBpcyB2ZXJ5IHNs
b3cuIE1vcmUgaW1wb3J0YW50bHksIHRoZXJlIGlzIGEgYnVnIGluIFB5dGhvbgorICAgICMgd2hl
cmUgbGF1bmNoaW5nIHN1YnByb2Nlc3NlcyBhbmQgY29tbXVuaWNhdGluZyB3aXRoIFBJUEVzICh3
aGljaAorICAgICMgaXMgd2hhdCBydW5fY29tbWFuZCgpIGRvZXMpIGNhbiBsZWFkIHRvIGRlYWRs
b2NrcyB3aGVuIHJ1bm5pbmcgaW4KKyAgICAjIG11bHRpcGxlIHRocmVhZHMuCisgICAgaWYgcGF0
aC5zdGFydHN3aXRoKCIvY3lnZHJpdmUiKToKKyAgICAgICAgcGF0aCA9IHBhdGhbMTBdICsgIjoi
ICsgcGF0aFsxMTpdCisgICAgICAgIHBhdGggPSBwYXRoLnJlcGxhY2UoIi8iLCAiXFwiKQorICAg
ICAgICByZXR1cm4gcGF0aAorICAgIHJldHVybiBleGVjdXRpdmUucnVuX2NvbW1hbmQoWydjeWdw
YXRoJywgJy13YScsIHBhdGhdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVj
b2RlX291dHB1dD1GYWxzZSkucnN0cmlwKCkKKworCiBkZWYgX2VzY2FwZShwYXRoKToKICAgICAi
IiJIYW5kbGUgYW55IGNoYXJhY3RlcnMgaW4gdGhlIHBhdGggdGhhdCBzaG91bGQgYmUgZXNjYXBl
ZC4iIiIKICAgICAjIEZJWE1FOiB3ZWIgYnJvd3NlcnMgZG9uJ3QgYXBwZWFyIHRvIGJsaW5kbHkg
cXVvdGUgZXZlcnkgY2hhcmFjdGVyCkBAIC01Miw3ICs2Nyw3IEBAIGRlZiBfY29udmVydF9wYXRo
KHBhdGgsIGV4ZWN1dGl2ZSwgcGxhdGZvcm0pOgogICAgIGlmIHBsYXRmb3JtID09ICd3aW4zMic6
CiAgICAgICAgIHJldHVybiBfd2lucGF0aF90b191cmkocGF0aCkKICAgICBpZiBwbGF0Zm9ybSA9
PSAnY3lnd2luJzoKLSAgICAgICAgcmV0dXJuIF93aW5wYXRoX3RvX3VyaShfY3lncGF0aChwYXRo
LCBleGVjdXRpdmUpKQorICAgICAgICByZXR1cm4gX3dpbnBhdGhfdG9fdXJpKGN5Z3BhdGgocGF0
aCwgZXhlY3V0aXZlKSkKICAgICByZXR1cm4gX3VuaXh5cGF0aF90b191cmkocGF0aCkKIAogCkBA
IC02MCwxMyArNzUsNiBAQCBkZWYgX3dpbnBhdGhfdG9fdXJpKHBhdGgpOgogICAgICIiIkNvbnZl
cnRzIGEgd2luZG93IGFic29sdXRlIHBhdGggdG8gYSBmaWxlOiBVUkwuIiIiCiAgICAgcmV0dXJu
ICIvLy8iICsgcGF0aC5yZXBsYWNlKCJcXCIsICIvIikKIAotCi1kZWYgX2N5Z3BhdGgocGF0aCwg
ZXhlY3V0aXZlKToKLSAgICAiIiJDb252ZXJ0cyBhIGN5Z3dpbiBwYXRoIHRvIFdpbmRvd3MgcGF0
aC4iIiIKLSAgICByZXR1cm4gZXhlY3V0aXZlLnJ1bl9jb21tYW5kKFsnY3lncGF0aCcsICctd2En
LCBwYXRoXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY29kZV9vdXRwdXQ9
RmFsc2UpLnJzdHJpcCgpCi0KLQogZGVmIF91bml4eXBhdGhfdG9fdXJpKHBhdGgpOgogICAgICIi
IkNvbnZlcnRzIGEgdW5peC1zdHlsZSBwYXRoIHRvIGEgZmlsZTogVVJMLiIiIgogICAgIHJldHVy
biAiLy8iICsgcGF0aApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvZHVtcF9yZW5kZXJfdHJlZV90aHJlYWQucHkgYi9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9k
dW1wX3JlbmRlcl90cmVlX3RocmVhZC5weQppbmRleCBmMWViMGJmYTVlOGVlOGI0ZTBiMDM3ZmJi
MzIyZWFlYTk1ZjRkYmJjLi5jZDBlZjhlMTdhZTI4MGI1ZWI3OGVhODY0NjI5NzhiMDZhOGU1NDM3
IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9s
YXlvdXRfcGFja2FnZS9kdW1wX3JlbmRlcl90cmVlX3RocmVhZC5weQorKysgYi9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9kdW1wX3JlbmRl
cl90cmVlX3RocmVhZC5weQpAQCAtODIsNyArODIsNyBAQCBkZWYgX3Byb2Nlc3Nfb3V0cHV0KHBv
cnQsIG9wdGlvbnMsIHRlc3RfaW5mbywgdGVzdF90eXBlcywgdGVzdF9hcmdzLAogICAgICAgcG9y
dDogcG9ydC1zcGVjaWZpYyBob29rcwogICAgICAgb3B0aW9uczogY29tbWFuZCBsaW5lIG9wdGlv
bnMgYXJndW1lbnQgZnJvbSBvcHRwYXJzZQogICAgICAgcHJvYzogYW4gYWN0aXZlIER1bXBSZW5k
ZXJUcmVlIHByb2Nlc3MKLSAgICAgIHRlc3RfaW5mbzogT2JqZWN0IGNvbnRhaW5pbmcgdGhlIHRl
c3QgZmlsZW5hbWUsIHVyaSBhbmQgdGltZW91dAorICAgICAgdGVzdF9pbmZvOiBPYmplY3QgY29u
dGFpbmluZyB0aGUgdGVzdCBmaWxlbmFtZSBhbmQgdGltZW91dAogICAgICAgdGVzdF90eXBlczog
bGlzdCBvZiB0ZXN0IHR5cGVzIHRvIHN1YmplY3QgdGhlIG91dHB1dCB0bwogICAgICAgdGVzdF9h
cmdzOiBhcmd1bWVudHMgdG8gYmUgcGFzc2VkIHRvIGVhY2ggdGVzdAogCkBAIC0xNzEsNyArMTcx
LDcgQEAgY2xhc3MgU2luZ2xlVGVzdFRocmVhZCh0aHJlYWRpbmcuVGhyZWFkKToKICAgICAgICAg
QXJnczoKICAgICAgICAgICBwb3J0OiBvYmplY3QgaW1wbGVtZW50aW5nIHBvcnQtc3BlY2lmaWMg
aG9va3MKICAgICAgICAgICBvcHRpb25zOiBjb21tYW5kIGxpbmUgYXJndW1lbnQgb2JqZWN0IGZy
b20gb3B0cGFyc2UKLSAgICAgICAgICB0ZXN0X2luZm86IE9iamVjdCBjb250YWluaW5nIHRoZSB0
ZXN0IGZpbGVuYW1lLCB1cmkgYW5kIHRpbWVvdXQKKyAgICAgICAgICB0ZXN0X2luZm86IE9iamVj
dCBjb250YWluaW5nIHRoZSB0ZXN0IGZpbGVuYW1lIGFuZCB0aW1lb3V0CiAgICAgICAgICAgdGVz
dF90eXBlczogQSBsaXN0IG9mIFRlc3RUeXBlIG9iamVjdHMgdG8gcnVuIHRoZSB0ZXN0IG91dHB1
dAogICAgICAgICAgICAgICBhZ2FpbnN0LgogICAgICAgICAgIHRlc3RfYXJnczogQSBUZXN0QXJn
dW1lbnRzIG9iamVjdCB0byBwYXNzIHRvIGVhY2ggVGVzdFR5cGUuCkBAIC0xOTIsMTIgKzE5Miwx
MyBAQCBjbGFzcyBTaW5nbGVUZXN0VGhyZWFkKHRocmVhZGluZy5UaHJlYWQpOgogICAgICAgICAj
IEZJWE1FOiB0aGlzIGlzIGEgc2VwYXJhdGUgcm91dGluZSB0byB3b3JrIGFyb3VuZCBhIGJ1Zwog
ICAgICAgICAjIGluIGNvdmVyYWdlOiBzZWUgaHR0cDovL2JpdGJ1Y2tldC5vcmcvbmVkL2NvdmVy
YWdlcHkvaXNzdWUvODUuCiAgICAgICAgIHRlc3RfaW5mbyA9IHNlbGYuX3Rlc3RfaW5mbworICAg
ICAgICB1cmkgPSBzZWxmLl9wb3J0LmZpbGVuYW1lX3RvX3VyaSh0ZXN0X2luZm8uZmlsZW5hbWUp
CiAgICAgICAgIHNlbGYuX2RyaXZlciA9IHNlbGYuX3BvcnQuY3JlYXRlX2RyaXZlcihzZWxmLl90
ZXN0X2FyZ3MucG5nX3BhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZWxmLl9vcHRpb25zKQogICAgICAgICBzZWxmLl9kcml2ZXIuc3RhcnQoKQog
ICAgICAgICBzdGFydCA9IHRpbWUudGltZSgpCiAgICAgICAgIGNyYXNoLCB0aW1lb3V0LCBhY3R1
YWxfY2hlY2tzdW0sIG91dHB1dCwgZXJyb3IgPSBcCi0gICAgICAgICAgICBzZWxmLl9kcml2ZXIu
cnVuX3Rlc3QodGVzdF9pbmZvLnVyaS5zdHJpcCgpLCB0ZXN0X2luZm8udGltZW91dCwKKyAgICAg
ICAgICAgIHNlbGYuX2RyaXZlci5ydW5fdGVzdCh1cmksIHRlc3RfaW5mby50aW1lb3V0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfaW5mby5pbWFnZV9oYXNoKCkpCiAg
ICAgICAgIGVuZCA9IHRpbWUudGltZSgpCiAgICAgICAgIHNlbGYuX3Rlc3RfcmVzdWx0ID0gX3By
b2Nlc3Nfb3V0cHV0KHNlbGYuX3BvcnQsIHNlbGYuX29wdGlvbnMsCkBAIC0yNTQsNyArMjU1LDcg
QEAgY2xhc3MgVGVzdFNoZWxsVGhyZWFkKFdhdGNoYWJsZVRocmVhZCk6CiAgICAgICAgICAgcG9y
dDogaW50ZXJmYWNlIHRvIHBvcnQtc3BlY2lmaWMgaG9va3MKICAgICAgICAgICBvcHRpb25zOiBj
b21tYW5kIGxpbmUgb3B0aW9ucyBhcmd1bWVudCBmcm9tIG9wdHBhcnNlCiAgICAgICAgICAgZmls
ZW5hbWVfbGlzdF9xdWV1ZTogQSB0aHJlYWQgc2FmZSBRdWV1ZSBjbGFzcyB0aGF0IGNvbnRhaW5z
IGxpc3RzCi0gICAgICAgICAgICAgIG9mIHR1cGxlcyBvZiAoZmlsZW5hbWUsIHVyaSkgcGFpcnMu
CisgICAgICAgICAgICAgIG9mIChmaWxlbmFtZSwgVGVzdEluZm8pIHBhaXJzLgogICAgICAgICAg
IHJlc3VsdF9xdWV1ZTogQSB0aHJlYWQgc2FmZSBRdWV1ZSBjbGFzcyB0aGF0IHdpbGwgY29udGFp
biB0dXBsZXMgb2YKICAgICAgICAgICAgICAgKHRlc3QsIGZhaWx1cmUgbGlzdHMpIGZvciB0aGUg
dGVzdCByZXN1bHRzLgogICAgICAgICAgIHRlc3RfdHlwZXM6IEEgbGlzdCBvZiBUZXN0VHlwZSBv
YmplY3RzIHRvIHJ1biB0aGUgdGVzdCBvdXRwdXQKQEAgLTQyMSw3ICs0MjIsNyBAQCBjbGFzcyBU
ZXN0U2hlbGxUaHJlYWQoV2F0Y2hhYmxlVGhyZWFkKToKICAgICAgICAgZmlsZXMgc2luZ2x5Lgog
CiAgICAgICAgIEFyZ3M6Ci0gICAgICAgICAgdGVzdF9pbmZvOiBPYmplY3QgY29udGFpbmluZyB0
aGUgdGVzdCBmaWxlbmFtZSwgdXJpIGFuZCB0aW1lb3V0CisgICAgICAgICAgdGVzdF9pbmZvOiBP
YmplY3QgY29udGFpbmluZyB0aGUgdGVzdCBmaWxlbmFtZSBhbmQgdGltZW91dAogCiAgICAgICAg
IFJldHVybnM6CiAgICAgICAgICAgQSBUZXN0UmVzdWx0CkBAIC00NjksNyArNDcwLDcgQEAgY2xh
c3MgVGVzdFNoZWxsVGhyZWFkKFdhdGNoYWJsZVRocmVhZCk6CiAgICAgICAgICIiIlJ1biBhIHNp
bmdsZSB0ZXN0IGZpbGUgdXNpbmcgYSBzaGFyZWQgRHVtcFJlbmRlclRyZWUgcHJvY2Vzcy4KIAog
ICAgICAgICBBcmdzOgotICAgICAgICAgIHRlc3RfaW5mbzogT2JqZWN0IGNvbnRhaW5pbmcgdGhl
IHRlc3QgZmlsZW5hbWUsIHVyaSBhbmQgdGltZW91dAorICAgICAgICAgIHRlc3RfaW5mbzogT2Jq
ZWN0IGNvbnRhaW5pbmcgdGhlIHRlc3QgZmlsZW5hbWUgYW5kIHRpbWVvdXQKIAogICAgICAgICBS
ZXR1cm5zOgogICAgICAgICAgIEEgbGlzdCBvZiBUZXN0RmFpbHVyZSBvYmplY3RzIGRlc2NyaWJp
bmcgdGhlIGVycm9yLgpAQCAtNDkxLDggKzQ5Miw5IEBAIGNsYXNzIFRlc3RTaGVsbFRocmVhZChX
YXRjaGFibGVUaHJlYWQpOgogICAgICAgICAgICAgIF9wYWRfdGltZW91dChpbnQodGVzdF9pbmZv
LnRpbWVvdXQpKSkKICAgICAgICAgc2VsZi5fbmV4dF90aW1lb3V0ID0gc3RhcnQgKyB0aHJlYWRf
dGltZW91dAogCisgICAgICAgIHVyaSA9IHNlbGYuX3BvcnQuZmlsZW5hbWVfdG9fdXJpKHRlc3Rf
aW5mby5maWxlbmFtZSkKICAgICAgICAgY3Jhc2gsIHRpbWVvdXQsIGFjdHVhbF9jaGVja3N1bSwg
b3V0cHV0LCBlcnJvciA9IFwKLSAgICAgICAgICAgc2VsZi5fZHJpdmVyLnJ1bl90ZXN0KHRlc3Rf
aW5mby51cmksIHRlc3RfaW5mby50aW1lb3V0LCBpbWFnZV9oYXNoKQorICAgICAgICAgICBzZWxm
Ll9kcml2ZXIucnVuX3Rlc3QodXJpLCB0ZXN0X2luZm8udGltZW91dCwgaW1hZ2VfaGFzaCkKICAg
ICAgICAgZW5kID0gdGltZS50aW1lKCkKIAogICAgICAgICByZXN1bHQgPSBfcHJvY2Vzc19vdXRw
dXQoc2VsZi5fcG9ydCwgc2VsZi5fb3B0aW9ucywKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weSBiL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQppbmRleCA1NmNhMGNhYzk3
ZTI2NTdmNzFkOTUwYzZiMWNiOTljNWNhM2QyZmFhLi5iMDZjYjkyNDEzMWM5MmRjZDU2MTJiYmYy
NTAzNmY3MDU1OGQyNTFkIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5CkBAIC00OCw2ICs0OCw3IEBAIGltcG9ydCB3
ZWJzb2NrZXRfc2VydmVyCiAKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQgbG9n
dXRpbHMKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IEV4ZWN1
dGl2ZSwgU2NyaXB0RXJyb3IKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5wYXRoIGltcG9y
dCBhYnNwYXRoX3RvX3VyaQogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLnVzZXIgaW1wb3J0
IFVzZXIKIAogCkBAIC0zMTAsMTcgKzMxMSw3IEBAIGNsYXNzIFBvcnQob2JqZWN0KToKICAgICAg
ICAgICAgICAgICBwcm90b2NvbCA9ICJodHRwIgogICAgICAgICAgICAgcmV0dXJuICIlczovLzEy
Ny4wLjAuMToldS8lcyIgJSAocHJvdG9jb2wsIHBvcnQsIHJlbGF0aXZlX3BhdGgpCiAKLSAgICAg
ICAgYWJzcGF0aCA9IG9zLnBhdGguYWJzcGF0aChmaWxlbmFtZSkKLQotICAgICAgICAjIE9uIFdp
bmRvd3MsIGFic29sdXRlIHBhdGhzIGFyZSBvZiB0aGUgZm9ybSAiYzpcZm9vLnR4dCIuIEhvd2V2
ZXIsCi0gICAgICAgICMgYWxsIGN1cnJlbnQgYnJvd3NlcnMgKGV4Y2VwdCBmb3IgT3BlcmEpIG5v
cm1hbGl6ZSBmaWxlIFVSTHMgYnkKLSAgICAgICAgIyBwcmVwZW5kaW5nIGFuIGFkZGl0aW9uYWwg
Ii8iIGFzIGlmIHRoZSBhYnNvbHV0ZSBwYXRoIHdhcwotICAgICAgICAjICIvYzovZm9vLnR4dCIu
IFRoaXMgbWVhbnMgdGhhdCBhbGwgZmlsZSBVUkxzIGVuZCB1cCB3aXRoICJmaWxlOi8vLyIKLSAg
ICAgICAgIyBhdCB0aGUgYmVnaW5uaW5nLgotICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ3dp
bjMyJzoKLSAgICAgICAgICAgIGFic3BhdGggPSAnLycgKyBhYnNwYXRoLnJlcGxhY2UoJ1xcJywg
Jy8nKQotCi0gICAgICAgIHJldHVybiAiZmlsZTovLyIgKyBhYnNwYXRoCisgICAgICAgIHJldHVy
biBhYnNwYXRoX3RvX3VyaShvcy5wYXRoLmFic3BhdGgoZmlsZW5hbWUpLCBzZWxmLl9leGVjdXRp
dmUpCiAKICAgICBkZWYgdGVzdHMoc2VsZiwgcGF0aHMpOgogICAgICAgICAiIiJSZXR1cm4gdGhl
IGxpc3Qgb2YgdGVzdHMgZm91bmQgKHJlbGF0aXZlIHRvIGxheW91dF90ZXN0c19kaXIoKS4iIiIK
QEAgLTM2OSw5ICszNjAsMTIgQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAgICAgICAiIiIKICAg
ICAgICAgdGVzdCA9IHVyaQogICAgICAgICBpZiB1cmkuc3RhcnRzd2l0aCgiZmlsZTovLy8iKToK
KyAgICAgICAgICAgICMgRklYTUU6IG5lZWQgYW4gaW52ZXJzZSBvZiB1cmlfdG9fYWJzcGF0aCgp
CiAgICAgICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKICAgICAgICAgICAgICAg
ICB0ZXN0ID0gdGVzdC5yZXBsYWNlKCdmaWxlOi8vLycsICcnKQogICAgICAgICAgICAgICAgIHRl
c3QgPSB0ZXN0LnJlcGxhY2UoJy8nLCAnXFwnKQorICAgICAgICAgICAgZWxpZiBzeXMucGxhdGZv
cm0gPT0gJ2N5Z3dpbic6CisgICAgICAgICAgICAgICAgdGVzdCA9ICcvY3lnZHJpdmUvJyArIHVy
aVs4XSArICcvJyArIHVyaVsxMTpdCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAg
IHRlc3QgPSB0ZXN0LnJlcGxhY2UoJ2ZpbGU6Ly8nLCAnJykKICAgICAgICAgICAgIHJldHVybiBz
ZWxmLnJlbGF0aXZlX3Rlc3RfZmlsZW5hbWUodGVzdCkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZV91bml0dGVzdC5weSBiL1dl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZV91bml0dGVz
dC5weQppbmRleCBlNjZjNjRkYmU4N2RkNDdlYjg2MTE3ZGFjMjhkZTQzZTY0NDUxOGEzLi5kOWNi
NDY3OGMzNWRkYjQ0OTY1MzM4YjFlNWUxNGYwMmIyOTM1MGQzIDEwMDY0NAotLS0gYS9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2VfdW5pdHRlc3QucHkK
KysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNl
X3VuaXR0ZXN0LnB5CkBAIC0zNCw2ICszNCw3IEBAIGltcG9ydCB0ZW1wZmlsZQogaW1wb3J0IHVu
aXR0ZXN0CiAKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IEV4
ZWN1dGl2ZSwgU2NyaXB0RXJyb3IKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5wYXRoIGlt
cG9ydCBhYnNwYXRoX3RvX3VyaQogZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5Lm1vY2sgaW1wb3J0
IE1vY2sKIAogCkBAIC0yMjcsMjUgKzIyOCwxMSBAQCBjbGFzcyBQb3J0VGVzdCh1bml0dGVzdC5U
ZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnY3NzMi4xJyBpbiBkaXJzKQogCiAg
ICAgZGVmIHRlc3RfZmlsZW5hbWVfdG9fdXJpKHNlbGYpOgotCiAgICAgICAgIHBvcnQgPSBiYXNl
LlBvcnQoKQogICAgICAgICBsYXlvdXRfdGVzdF9kaXIgPSBwb3J0LmxheW91dF90ZXN0c19kaXIo
KQogICAgICAgICB0ZXN0X2ZpbGUgPSBvcy5wYXRoLmpvaW4obGF5b3V0X3Rlc3RfZGlyLCAiZm9v
IiwgImJhci5odG1sIikKLQotICAgICAgICAjIE9uIFdpbmRvd3MsIGFic29sdXRlIHBhdGhzIGFy
ZSBvZiB0aGUgZm9ybSAiYzpcZm9vLnR4dCIuIEhvd2V2ZXIsCi0gICAgICAgICMgYWxsIGN1cnJl
bnQgYnJvd3NlcnMgKGV4Y2VwdCBmb3IgT3BlcmEpIG5vcm1hbGl6ZSBmaWxlIFVSTHMgYnkKLSAg
ICAgICAgIyBwcmVwZW5kaW5nIGFuIGFkZGl0aW9uYWwgIi8iIGFzIGlmIHRoZSBhYnNvbHV0ZSBw
YXRoIHdhcwotICAgICAgICAjICIvYzovZm9vLnR4dCIuIFRoaXMgbWVhbnMgdGhhdCBhbGwgZmls
ZSBVUkxzIGVuZCB1cCB3aXRoICJmaWxlOi8vLyIKLSAgICAgICAgIyBhdCB0aGUgYmVnaW5uaW5n
LgotICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKLSAgICAgICAgICAgIHByZWZp
eCA9ICJmaWxlOi8vLyIKLSAgICAgICAgICAgIHBhdGggPSB0ZXN0X2ZpbGUucmVwbGFjZSgiXFwi
LCAiLyIpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBwcmVmaXggPSAiZmlsZTovLyIKLSAg
ICAgICAgICAgIHBhdGggPSB0ZXN0X2ZpbGUKLQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBv
cnQuZmlsZW5hbWVfdG9fdXJpKHRlc3RfZmlsZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
cHJlZml4ICsgcGF0aCkKKyAgICAgICAgICAgICAgICAgICAgICAgICBhYnNwYXRoX3RvX3VyaSh0
ZXN0X2ZpbGUsIEV4ZWN1dGl2ZSgpKSkKIAogCiAKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkgYi9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5CmluZGV4IDMw
MWQ0YjE4OWIwOWM4M2QyNzA2ZTM2MGE3M2U4ODIzZmMxYjA4MDguLjFmNzg0ZGMzYjg3NTA3OTNm
NjFkNjkzOTA2NmY0YWI2NzQxNjY5MzYgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkKKysrIGIvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weQpAQCAtNDMsMTIg
KzQzLDEzIEBAIGltcG9ydCB0ZW1wZmlsZQogaW1wb3J0IHRpbWUKIGltcG9ydCB3ZWJicm93c2Vy
CiAKLWltcG9ydCBiYXNlCi1pbXBvcnQgaHR0cF9zZXJ2ZXIKLQogZnJvbSB3ZWJraXRweS5jb21t
b24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgRXhlY3V0aXZlCitmcm9tIHdlYmtpdHB5LmNvbW1v
bi5zeXN0ZW0ucGF0aCBpbXBvcnQgYWJzcGF0aF90b191cmksIGN5Z3BhdGgKIGZyb20gd2Via2l0
cHkubGF5b3V0X3Rlc3RzLmxheW91dF9wYWNrYWdlIGltcG9ydCB0ZXN0X2V4cGVjdGF0aW9ucwog
CitpbXBvcnQgYmFzZQoraW1wb3J0IGh0dHBfc2VydmVyCisKICMgQ2hyb21pdW0gRFJUIG9uIE9T
WCB1c2VzIFdlYktpdERyaXZlci4KIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKICAgICBp
bXBvcnQgd2Via2l0CkBAIC0xNDMsMTEgKzE0NCwyMSBAQCBjbGFzcyBDaHJvbWl1bVBvcnQoYmFz
ZS5Qb3J0KToKICAgICAgICAgd2l0aCBvcGVuKGFjdHVhbF9maWxlbmFtZSwgJ3crYicpIGFzIGZp
bGU6CiAgICAgICAgICAgICBmaWxlLndyaXRlKGFjdHVhbF9jb250ZW50cykKIAorICAgICAgICAj
IFdlIHVzZSBjb252ZXJ0X3BhdGggaWYgdGhlcmUncyBhIGNoYW5jZSB0aGF0IHRoZSBsYXVuY2hl
ZAorICAgICAgICAjIGV4ZWN1dGFibGUgbmVlZHMgZmlsZW5hbWUgYXJndW1lbnRzIGluIGEgZGlm
ZmVyZW50IGZvcm1hdCB0aGFuCisgICAgICAgICMgdGhlIG5vcm1hbCBmb3JtYXQgcHJvdmlkZWQg
YnkgdGhlIHB5dGhvbiBydW50aW1lLiBUaGUgbWFpbgorICAgICAgICAjIGV4YW1wbGUgb2YgdGhp
cyBpcyBydW5uaW5nIHVuZGVyIEN5Z3dpbiBvbiBXaW5kb3dzIGJ1dAorICAgICAgICAjIGxhdW5j
aGluZyBhIFdpbjMyIGJpbmFyeSwgd2hlcmUgd2UgbmVlZCB0byBjb252ZXJ0IHRoZSBwYXRoCisg
ICAgICAgICMgZnJvbSAvY3lnZHJpdmUvYy9mb28udHh0IHRvIGM6XGZvby50eHQuCiAgICAgICAg
IGlmIGRpZmZfZmlsZW5hbWU6Ci0gICAgICAgICAgICBjbWQgPSBbZXhlY3V0YWJsZSwgJy0tZGlm
ZicsIGV4cGVjdGVkX2ZpbGVuYW1lLAotICAgICAgICAgICAgICAgICAgIGFjdHVhbF9maWxlbmFt
ZSwgZGlmZl9maWxlbmFtZV0KKyAgICAgICAgICAgIGNtZCA9IFtleGVjdXRhYmxlLCAnLS1kaWZm
JywKKyAgICAgICAgICAgICAgICAgICBzZWxmLl9jb252ZXJ0X3BhdGgoZXhwZWN0ZWRfZmlsZW5h
bWUpLAorICAgICAgICAgICAgICAgICAgIHNlbGYuX2NvbnZlcnRfcGF0aChhY3R1YWxfZmlsZW5h
bWUpLAorICAgICAgICAgICAgICAgICAgIHNlbGYuX2NvbnZlcnRfcGF0aChkaWZmX2ZpbGVuYW1l
KV0KICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGNtZCA9IFtleGVjdXRhYmxlLCBleHBlY3Rl
ZF9maWxlbmFtZSwgYWN0dWFsX2ZpbGVuYW1lXQorICAgICAgICAgICAgY21kID0gW2V4ZWN1dGFi
bGUsCisgICAgICAgICAgICAgICAgICAgc2VsZi5fY29udmVydF9wYXRoKGV4cGVjdGVkX2ZpbGVu
YW1lKSwKKyAgICAgICAgICAgICAgICAgICBzZWxmLl9jb252ZXJ0X3BhdGgoYWN0dWFsX2ZpbGVu
YW1lKV0KIAogICAgICAgICByZXN1bHQgPSBUcnVlCiAgICAgICAgIHRyeToKQEAgLTM0MCw2ICsz
NTEsMTMgQEAgY2xhc3MgQ2hyb21pdW1Qb3J0KGJhc2UuUG9ydCk6CiAgICAgICAgICAgICBwbGF0
Zm9ybSA9IHNlbGYubmFtZSgpCiAgICAgICAgIHJldHVybiBzZWxmLnBhdGhfZnJvbV93ZWJraXRf
YmFzZSgnTGF5b3V0VGVzdHMnLCAncGxhdGZvcm0nLCBwbGF0Zm9ybSkKIAorICAgIGRlZiBfY29u
dmVydF9wYXRoKHNlbGYsIHBhdGgpOgorICAgICAgICAiIiJIYW5kbGVzIGZpbGVuYW1lIGNvbnZl
cnNpb24gZm9yIHN1YnByb2Nlc3MgY29tbWFuZCBsaW5lIGFyZ3MuIiIiCisgICAgICAgICMgU2Vl
IG5vdGUgYWJvdmUgaW4gZGlmZl9pbWFnZSgpIGZvciB3aHkgd2UgbmVlZCB0aGlzLgorICAgICAg
ICBpZiBzeXMucGxhdGZvcm0gPT0gJ2N5Z3dpbic6CisgICAgICAgICAgICByZXR1cm4gY3lncGF0
aChwYXRoLCBzZWxmLl9leGVjdXRpdmUpCisgICAgICAgIHJldHVybiBwYXRoCisKICAgICBkZWYg
X3BhdGhfdG9faW1hZ2VfZGlmZihzZWxmKToKICAgICAgICAgYmluYXJ5X25hbWUgPSAnaW1hZ2Vf
ZGlmZicKICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy51c2VfZHJ0OgpAQCAtMzU5LDcgKzM3Nywx
MCBAQCBjbGFzcyBDaHJvbWl1bURyaXZlcihiYXNlLkRyaXZlcik6CiAgICAgZGVmIF9kcml2ZXJf
YXJncyhzZWxmKToKICAgICAgICAgZHJpdmVyX2FyZ3MgPSBbXQogICAgICAgICBpZiBzZWxmLl9p
bWFnZV9wYXRoOgotICAgICAgICAgICAgZHJpdmVyX2FyZ3MuYXBwZW5kKCItLXBpeGVsLXRlc3Rz
PSIgKyBzZWxmLl9pbWFnZV9wYXRoKQorICAgICAgICAgICAgIyBTZWUgbm90ZSBhYm92ZSBpbiBk
aWZmX2ltYWdlKCkgZm9yIHdoeSB3ZSBuZWVkCisgICAgICAgICAgICAjIF9jb252ZXJ0X3BhdGgo
KS4KKyAgICAgICAgICAgIGRyaXZlcl9hcmdzLmFwcGVuZCgiLS1waXhlbC10ZXN0cz0iICsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9wb3J0Ll9jb252ZXJ0X3BhdGgoc2Vs
Zi5faW1hZ2VfcGF0aCkpCiAKICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy51c2VfZHJ0OgogICAg
ICAgICAgICAgZHJpdmVyX2FyZ3MuYXBwZW5kKCctLXRlc3Qtc2hlbGwnKQpkaWZmIC0tZ2l0IGEv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0
cy5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJr
aXRfdGVzdHMucHkKaW5kZXggY2Y2MzdlZTYxYmUzMDRjOTE0MWRlY2JjMmNlYzg5ZTc1OTI5ZDlk
OS4uNTIwN2M5YWYyOTc0NzUwMzBjYjQxODY3ZTRkYzEyNWIzNGMyNjRhOCAxMDA3NTUKLS0tIGEv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0
cy5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5f
d2Via2l0X3Rlc3RzLnB5CkBAIC05MSwxNCArOTEsMTMgQEAgY2xhc3MgVGVzdEluZm86CiAgICAg
IiIiR3JvdXBzIGluZm9ybWF0aW9uIGFib3V0IGEgdGVzdCBmb3IgZWFzeSBwYXNzaW5nIG9mIGRh
dGEuIiIiCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgcG9ydCwgZmlsZW5hbWUsIHRpbWVvdXQp
OgotICAgICAgICAiIiJHZW5lcmF0ZXMgdGhlIFVSSSBhbmQgc3RvcmVzIHRoZSBmaWxlbmFtZSBh
bmQgdGltZW91dCBmb3IgdGhpcyB0ZXN0LgorICAgICAgICAiIiIKICAgICAgICAgQXJnczoKICAg
ICAgICAgICBmaWxlbmFtZTogRnVsbCBwYXRoIHRvIHRoZSB0ZXN0LgotICAgICAgICAgIHRpbWVv
dXQ6IFRpbWVvdXQgZm9yIHJ1bm5pbmcgdGhlIHRlc3QgaW4gVGVzdFNoZWxsLgorICAgICAgICAg
IHRpbWVvdXQ6IFRpbWVvdXQgZm9yIHJ1bm5pbmcgdGhlIHRlc3QgaW4gRFJULgogICAgICAgICAg
ICIiIgogICAgICAgICBzZWxmLmZpbGVuYW1lID0gZmlsZW5hbWUKICAgICAgICAgc2VsZi5fcG9y
dCA9IHBvcnQKLSAgICAgICAgc2VsZi51cmkgPSBwb3J0LmZpbGVuYW1lX3RvX3VyaShmaWxlbmFt
ZSkKICAgICAgICAgc2VsZi50aW1lb3V0ID0gdGltZW91dAogICAgICAgICBzZWxmLl9pbWFnZV9j
aGVja3N1bSA9IC0xCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70702</attachid>
            <date>2010-10-13 20:12:07 -0700</date>
            <delta_ts>2010-10-15 19:44:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47220-20101013201205.patch</filename>
            <type>text/plain</type>
            <size>24538</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBlMTZmNGIyNmVmNmQ5NTc1ODY5ZmExZTdlYjI4MDFkMmMxMzBiNDRiLi5kMTEzM2Iw
M2I5ZmQyMjVjYTI2MDJhMjgxM2E0YTRlMTE5ZDM3MTgyIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAK
KzIwMTAtMTAtMTMgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmUtc3VibWl0IGEgcmV2
aXNlZCB2ZXJzaW9uIG9mIHI2OTYzOCAtIGVuYWJsaW5nIG5ldy1ydW4td2Via2l0LXRlc3RzCisg
ICAgICAgIHVuZGVyIGN5Z3dpbi4gVGhlIGluaXRpYWwgdmVyc2lvbiBoYWQgYSBidWcgaW4gYmFz
ZTp1cmlfdG9fdGVzdF9uYW1lCisgICAgICAgIHRoYXQgd2FzIGNhdXNpbmcgdGVzdHMgdG8gZmFp
bC4gVGhpcyB2ZXJzaW9uIGNvcnJlY3RzIHRoYXQgYnVnLCBidXQKKyAgICAgICAgYWxzbyBwb3Rl
bnRpYWxseSBtYWtlcyB0aGUgY29kZSBzYWZlciBieSBjYWxsaW5nIGN5Z3BhdGggbW9yZQorICAg
ICAgICByZWxpYWJseSwgYW5kIGxlYXZpbmcgYSBsb25nLXJ1bm5pbmcgY3lncGF0aCBwcm9jZXNz
IG9wZW4uIEl0J3Mgbm90CisgICAgICAgIGNvbXBsZXRlbHkgY2xlYXIgeWV0IHdoaWNoIGltcGxl
bWVudGF0aW9uIGlzIHRoZSBiZXN0IGNob2ljZSBzbworICAgICAgICBJJ20gbGVhdmluZyBtdWx0
aXBsZSBpbiBzbyB3ZSBjYW4gZXhwZXJpbWVudC4KKworICAgICAgICBUaGlzIHBhdGNoIGFsc28g
Y29ycmVjdHMgYSBjb3VwbGUgb2YgbWlub3IgYnVncyBpbiBodHRwX2xvY2tfdW5pdHRlc3QsCisg
ICAgICAgIGNocm9taXVtX3VuaXR0ZXN0LCBhbmQgZGVkcHVsaWNhdGVfdGVzdHNfdW5pdHRlc3Qg
dGhhdCBzaG93ZWQgdXAKKyAgICAgICAgd2hpbGUgdGVzdGluZyB0aGlzLgorCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzIyMAorCisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3BhdGgucHk6CisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3BhdGhfdW5pdHRlc3QucHk6CisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvZGVkdXBsaWNhdGVfdGVzdHNfdW5pdHRlc3QucHk6
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2Uv
ZHVtcF9yZW5kZXJfdHJlZV90aHJlYWQucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvYmFzZV91bml0dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fdW5pdHRlc3QucHk6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9odHRwX2xvY2tfdW5pdHRlc3QucHk6
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0
cy5weToKKwogMjAxMC0xMC0xMiAgWXV0YSBLaXRhbXVyYSAgPHl1dGFrQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBVbnJldmlld2VkLiBBZGQgWXV0YSBLaXRhbXVyYSAoeXV0YWspIHRvIHRoZSBj
b21taXR0ZXJzIGxpc3QuCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9zeXN0ZW0vcGF0aC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29t
bW9uL3N5c3RlbS9wYXRoLnB5CmluZGV4IDkzNzI0N2VmMGFjYzE5MTlkZTBlZDdlNmI3MGQ0Y2E4
MTcxYzcxMTAuLjA4M2ZiMWQxM2JkYzFjNTZmYjViNjUxNTBiZTY2ZTQ0OTExM2U4MDggMTAwNjQ0
Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9wYXRoLnB5
CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9wYXRoLnB5
CkBAIC0yNywxNSArMjcsMTAyIEBACiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKICIiImdlbmVyaWMgcm91dGlu
ZXMgdG8gY29udmVydCBwbGF0Zm9ybS1zcGVjaWZpYyBwYXRocyB0byBVUklzLiIiIgoraW1wb3J0
IHN1YnByb2Nlc3MKIGltcG9ydCBzeXMKK2ltcG9ydCB0aHJlYWRpbmcKIGltcG9ydCB1cmxsaWIK
IAogCi1kZWYgYWJzcGF0aF90b191cmkocGF0aCwgZXhlY3V0aXZlLCBwbGF0Zm9ybT1Ob25lKToK
K2RlZiBhYnNwYXRoX3RvX3VyaShwYXRoLCBwbGF0Zm9ybT1Ob25lKToKICAgICAiIiJDb252ZXJ0
cyBhIHBsYXRmb3JtLXNwZWNpZmljIGFic29sdXRlIHBhdGggdG8gYSBmaWxlOiBVUkwuIiIiCiAg
ICAgaWYgcGxhdGZvcm0gaXMgTm9uZToKICAgICAgICAgcGxhdGZvcm0gPSBzeXMucGxhdGZvcm0K
LSAgICByZXR1cm4gImZpbGU6IiArIF9lc2NhcGUoX2NvbnZlcnRfcGF0aChwYXRoLCBleGVjdXRp
dmUsIHBsYXRmb3JtKSkKKyAgICByZXR1cm4gImZpbGU6IiArIF9lc2NhcGUoX2NvbnZlcnRfcGF0
aChwYXRoLCBwbGF0Zm9ybSkpCisKKworIyBOb3RlIHRoYXQgdGhpcyBvYmplY3QgaXMgbm90IHRo
cmVhZHNhZmUgYW5kIHNob3VsZCBvbmx5IGJlCisjIGNhbGxlZCB1bmRlciBwcm90ZWN0aW9uIG9m
IGEgZ2xvYmFsIGxvY2sgKGFzIGlzIGRvbmUgaW4gY3lncGF0aCgpKQorY2xhc3MgX0N5Z1BhdGgo
b2JqZWN0KToKKyAgICAiIiJNYW5hZ2VzIGEgbG9uZy1ydW5uaW5nICdjeWdwYXRoJyBwcm9jZXNz
IGZvciBmaWxlIGNvbnZlcnNpb24uIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAg
ICBzZWxmLl9jaGlsZF9wcm9jZXNzID0gTm9uZQorCisgICAgZGVmIHN0YXJ0KHNlbGYpOgorICAg
ICAgICBhc3NlcnQoc2VsZi5fY2hpbGRfcHJvY2VzcyBpcyBOb25lKQorICAgICAgICBhcmdzID0g
WydjeWdwYXRoJywgJy1mJywgJy0nLCAnLXdhJ10KKyAgICAgICAgc2VsZi5fY2hpbGRfcHJvY2Vz
cyA9IHN1YnByb2Nlc3MuUG9wZW4oYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RkaW49c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZV9mZHM9
RmFsc2UpCisKKyAgICBkZWYgaXNfcnVubmluZyhzZWxmKToKKyAgICAgICAgaWYgbm90IHNlbGYu
X2NoaWxkX3Byb2Nlc3M6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgcmV0dXJu
IHNlbGYuX2NoaWxkX3Byb2Nlc3MucmV0dXJuY29kZSBpcyBOb25lCisKKyAgICBkZWYgc3RvcChz
ZWxmKToKKyAgICAgICAgaWYgc2VsZi5fY2hpbGRfcHJvY2VzczoKKyAgICAgICAgICAgIHNlbGYu
X2NoaWxkX3Byb2Nlc3Muc3RkaW4uY2xvc2UoKQorICAgICAgICAgICAgc2VsZi5fY2hpbGRfcHJv
Y2Vzcy53YWl0KCkKKyAgICAgICAgc2VsZi5fY2hpbGRfcHJvY2VzcyA9IE5vbmUKKworICAgIGRl
ZiBjb252ZXJ0KHNlbGYsIHBhdGgpOgorICAgICAgICBpZiBub3Qgc2VsZi5pc19ydW5uaW5nKCk6
CisgICAgICAgICAgICBzZWxmLnN0YXJ0KCkKKyAgICAgICAgc2VsZi5fY2hpbGRfcHJvY2Vzcy5z
dGRpbi53cml0ZSgiJXNcclxuIiAlIHBhdGgpCisgICAgICAgIHNlbGYuX2NoaWxkX3Byb2Nlc3Mu
c3RkaW4uZmx1c2goKQorICAgICAgICByZXR1cm4gc2VsZi5fY2hpbGRfcHJvY2Vzcy5zdGRvdXQu
cmVhZGxpbmUoKS5yc3RyaXAoKQorCisKK19jeWdwYXRoX2dsb2JhbF9sb2NrID0gTm9uZQorX2N5
Z3BhdGhfZ2xvYmFsX29iamVjdCA9IE5vbmUKKworCitkZWYgY3lncGF0aChwYXRoKToKKyAgICAi
IiJDb252ZXJ0cyBhIGN5Z3dpbiBwYXRoIHRvIFdpbmRvd3MgcGF0aC4iIiIKKworICAgICMgRklY
TUU6IGZvcmtpbmcgY3lncGF0aCB0byBkbyB0aGUgY29udmVyc2lvbiBpcyBzbG93LgorICAgICMg
V2UgY2FuIHdvcmsgYXJvdW5kIHRoaXMgYnkgc2V0dGluZyBsb25nX3J1bm5pbmcgdG8gVHJ1ZSwg
d2hpY2gKKyAgICAjIGZvcmtzIGEgc2luZ2xlIGxvbmctcnVubmluZyBwcm9jZXNzLCBidXQgd2Ug
Z2V0IHdlaXJkIGVycm9ycyB3aGVuCisgICAgIyBleGl0aW5nIHB5dGhvbiAoaXQgc2VlbXMgbGlr
ZSB0aGUgZ2FyYmFnZSBjb2xsZWN0b3IgaXMgZ2V0dGluZworICAgICMgY29uZnVzZWQgaW4gY2xl
YW51cCBidXQgSSBoYXZlbid0IGJlZW4gYWJsZSB0byBkZWJ1ZyBpdCB0byB2ZXJpZnkpLgorICAg
ICMgSWYgd2UgdHVybiBvbiBmYXN0X2hhY2ssIHdlIHByb2JhYmx5IGdldCB0aGUgYmVzdCBvZiBi
b3RoIHdvcmxkcworICAgICMgYnV0IHRoaXMgbWF5IHByb2R1Y2UgaW5jb3JyZWN0IHJlc3VsdHMg
aW4gc29tZSBjeWd3aW4gY29uZmlndXJhdGlvbnMuCisgICAgbG9uZ19ydW5uaW5nID0gVHJ1ZQor
ICAgIGZhc3RfaGFjayA9IEZhbHNlCisgICAgaWYgZmFzdF9oYWNrIGFuZCBwYXRoLnN0YXJ0c3dp
dGgoIi9jeWdkcml2ZSIpOgorICAgICAgICBwYXRoID0gcGF0aFsxMF0udXBwZXIoKSArICI6IiAr
IHBhdGhbMTE6XQorICAgICAgICBwYXRoID0gcGF0aC5yZXBsYWNlKCIvIiwgIlxcIikKKyAgICAg
ICAgcmV0dXJuIHBhdGgucnN0cmlwKCkKKworICAgIHJlc3VsdCA9IE5vbmUKKyAgICBnbG9iYWwg
X2N5Z3BhdGhfZ2xvYmFsX2xvY2sKKyAgICBpZiBub3QgX2N5Z3BhdGhfZ2xvYmFsX2xvY2s6Cisg
ICAgICAgIF9jeWdwYXRoX2dsb2JhbF9sb2NrID0gdGhyZWFkaW5nLkxvY2soKQorICAgIF9jeWdw
YXRoX2dsb2JhbF9sb2NrLmFjcXVpcmUoKQorICAgIHRyeToKKyAgICAgICAgaWYgbG9uZ19ydW5u
aW5nOgorICAgICAgICAgICAgZ2xvYmFsIF9jeWdwYXRoX2dsb2JhbF9vYmplY3QKKyAgICAgICAg
ICAgIGlmIG5vdCBfY3lncGF0aF9nbG9iYWxfb2JqZWN0OgorICAgICAgICAgICAgICAgIF9jeWdw
YXRoX2dsb2JhbF9vYmplY3QgPSBfQ3lnUGF0aCgpCisgICAgICAgICAgICByZXN1bHQgPSBfY3ln
cGF0aF9nbG9iYWxfb2JqZWN0LmNvbnZlcnQocGF0aCkKKyAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgIHJlc3VsdCA9IHN1YnByb2Nlc3MuUG9wZW4oWydjeWdwYXRoJywgJy13YScsIHBhdGhdLAor
ICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpLmNvbW11bmljYXRlKClbMF0u
cnN0cmlwKCkKKyAgICBmaW5hbGx5OgorICAgICAgICBfY3lncGF0aF9nbG9iYWxfbG9jay5yZWxl
YXNlKCkKKyAgICByZXR1cm4gcmVzdWx0CisKKworZGVmIF9zdG9wX2dsb2JhbF9jeWdwYXRoKCk6
CisgICAgZ2xvYmFsIF9jeWdwYXRoX2dsb2JhbF9sb2NrCisgICAgaWYgX2N5Z3BhdGhfZ2xvYmFs
X2xvY2s6CisgICAgICAgIF9jeWdwYXRoX2dsb2JhbF9sb2NrLmFjcXVpcmUoKQorICAgICAgICB0
cnk6CisgICAgICAgICAgICBpZiBfY3lncGF0aF9nbG9iYWxfb2JqZWN0OgorICAgICAgICAgICAg
ICAgIF9jeWdwYXRoX2dsb2JhbF9vYmplY3Quc3RvcCgpCisgICAgICAgIGZpbmFsbHk6CisgICAg
ICAgICAgICBfY3lncGF0aF9nbG9iYWxfbG9jay5yZWxlYXNlKCkKIAogCiBkZWYgX2VzY2FwZShw
YXRoKToKQEAgLTQ3LDEyICsxMzQsMTIgQEAgZGVmIF9lc2NhcGUocGF0aCk6CiAgICAgcmV0dXJu
IHVybGxpYi5xdW90ZShwYXRoLCBzYWZlPScvKzonKQogCiAKLWRlZiBfY29udmVydF9wYXRoKHBh
dGgsIGV4ZWN1dGl2ZSwgcGxhdGZvcm0pOgorZGVmIF9jb252ZXJ0X3BhdGgocGF0aCwgcGxhdGZv
cm0pOgogICAgICIiIkhhbmRsZXMgYW55IG9zLXNwZWNpZmljIHBhdGggc2VwYXJhdG9ycywgbWFw
cGluZ3MsIGV0Yy4iIiIKICAgICBpZiBwbGF0Zm9ybSA9PSAnd2luMzInOgogICAgICAgICByZXR1
cm4gX3dpbnBhdGhfdG9fdXJpKHBhdGgpCiAgICAgaWYgcGxhdGZvcm0gPT0gJ2N5Z3dpbic6Ci0g
ICAgICAgIHJldHVybiBfd2lucGF0aF90b191cmkoX2N5Z3BhdGgocGF0aCwgZXhlY3V0aXZlKSkK
KyAgICAgICAgcmV0dXJuIF93aW5wYXRoX3RvX3VyaShjeWdwYXRoKHBhdGgpKQogICAgIHJldHVy
biBfdW5peHlwYXRoX3RvX3VyaShwYXRoKQogCiAKQEAgLTYwLDEzICsxNDcsNiBAQCBkZWYgX3dp
bnBhdGhfdG9fdXJpKHBhdGgpOgogICAgICIiIkNvbnZlcnRzIGEgd2luZG93IGFic29sdXRlIHBh
dGggdG8gYSBmaWxlOiBVUkwuIiIiCiAgICAgcmV0dXJuICIvLy8iICsgcGF0aC5yZXBsYWNlKCJc
XCIsICIvIikKIAotCi1kZWYgX2N5Z3BhdGgocGF0aCwgZXhlY3V0aXZlKToKLSAgICAiIiJDb252
ZXJ0cyBhIGN5Z3dpbiBwYXRoIHRvIFdpbmRvd3MgcGF0aC4iIiIKLSAgICByZXR1cm4gZXhlY3V0
aXZlLnJ1bl9jb21tYW5kKFsnY3lncGF0aCcsICctd2EnLCBwYXRoXSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRlY29kZV9vdXRwdXQ9RmFsc2UpLnJzdHJpcCgpCi0KLQogZGVm
IF91bml4eXBhdGhfdG9fdXJpKHBhdGgpOgogICAgICIiIkNvbnZlcnRzIGEgdW5peC1zdHlsZSBw
YXRoIHRvIGEgZmlsZTogVVJMLiIiIgogICAgIHJldHVybiAiLy8iICsgcGF0aApkaWZmIC0tZ2l0
IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3BhdGhfdW5pdHRl
c3QucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vcGF0aF91
bml0dGVzdC5weQppbmRleCAzYzEwMjFkY2FkN2Q1YTdhOGVkMjQ1ZDM0ZGZiMTE1NzhkYTRiYTU4
Li5kZGRjNDc3NGRlMjQ0N2I2ODJmZGJiZDA0ZWE5MTM2NTAwM2M1ZGRkIDEwMDY0NAotLS0gYS9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vcGF0aF91bml0dGVzdC5w
eQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vcGF0aF91
bml0dGVzdC5weQpAQCAtMjcsMzkgKzI3LDMxIEBACiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIGltcG9ydCB1
bml0dGVzdAoraW1wb3J0IHN5cwogCiBpbXBvcnQgcGF0aAogCi0KIGNsYXNzIEFic3BhdGhUZXN0
KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgcnVuX2NvbW1hbmQoc2VsZiwgYXJncywgKipr
d2FyZ3MpOgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3NbMF0sICdjeWdwYXRoJykKLSAg
ICAgICAgcmV0dXJuIHNlbGYuY3lncGF0aF9yZXN1bHQKLQogICAgIGRlZiBhc3NlcnRNYXRjaChz
ZWxmLCB0ZXN0X3BhdGgsIGV4cGVjdGVkX3VyaSwKLSAgICAgICAgICAgICAgICAgICAgcGxhdGZv
cm0sIGN5Z3BhdGhfcmVzdWx0PU5vbmUpOgotICAgICAgICBpZiBwbGF0Zm9ybSA9PSAnY3lnd2lu
JzoKLSAgICAgICAgICAgIHNlbGYuY3lncGF0aF9yZXN1bHQgPSBjeWdwYXRoX3Jlc3VsdAotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHBhdGguYWJzcGF0aF90b191cmkodGVzdF9wYXRoLCBleGVj
dXRpdmU9c2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHBsYXRmb3JtPXBsYXRmb3JtKSwKKyAgICAgICAgICAgICAgICAgICAgcGxhdGZvcm09Tm9uZSk6
CisgICAgICAgIGlmIHBsYXRmb3JtID09ICdjeWd3aW4nIGFuZCBzeXMucGxhdGZvcm0gIT0gJ2N5
Z3dpbic6CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXRo
LmFic3BhdGhfdG9fdXJpKHRlc3RfcGF0aCwgcGxhdGZvcm09cGxhdGZvcm0pLAogICAgICAgICAg
ICAgICAgICAgICAgICAgIGV4cGVjdGVkX3VyaSkKIAogICAgIGRlZiB0ZXN0X2Fic3BhdGhfdG9f
dXJpX2N5Z3dpbihzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRNYXRjaCgnL2N5Z2RyaXZlL2Mv
Zm9vL2Jhci5odG1sJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnZmlsZTovLy9jOi9mb28v
YmFyLmh0bWwnLAotICAgICAgICAgICAgICAgICAgICAgICAgIHBsYXRmb3JtPSdjeWd3aW4nLAot
ICAgICAgICAgICAgICAgICAgICAgICAgIGN5Z3BhdGhfcmVzdWx0PSdjOlxcZm9vXFxiYXIuaHRt
bFxuJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAnZmlsZTovLy9DOi9mb28vYmFyLmh0bWwn
LAorICAgICAgICAgICAgICAgICAgICAgICAgIHBsYXRmb3JtPSdjeWd3aW4nKQogICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHBhdGguYWJzcGF0aF90b191cmkoJy9jeWdkcml2ZS9jL2Zvby9iYXIu
aHRtbCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVj
dXRpdmU9c2VsZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHBsYXRmb3JtPSdjeWd3aW4nKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAnZmlsZTovLy9j
Oi9mb28vYmFyLmh0bWwnKQorICAgICAgICAgICAgICAgICAgICAgICAgICdmaWxlOi8vL0M6L2Zv
by9iYXIuaHRtbCcpCiAKICAgICBkZWYgdGVzdF9hYnNwYXRoX3RvX3VyaV9kYXJ3aW4oc2VsZik6
CiAgICAgICAgIHNlbGYuYXNzZXJ0TWF0Y2goJy9mb28vYmFyLmh0bWwnLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICdmaWxlOi8vL2Zvby9iYXIuaHRtbCcsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgcGxhdGZvcm09J2RhcndpbicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGF0aC5h
YnNwYXRoX3RvX3VyaSgiL2Zvby9iYXIuaHRtbCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBleGVjdXRpdmU9c2VsZiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHBsYXRmb3JtPSdkYXJ3aW4nKSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAiZmlsZTovLy9mb28vYmFyLmh0bWwiKQogCkBAIC02OCw3ICs2MCw2IEBA
IGNsYXNzIEFic3BhdGhUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgICAgICAgICAg
ICAgICAgICAnZmlsZTovLy9mb28vYmFyLmh0bWwnLAogICAgICAgICAgICAgICAgICAgICAgICAg
IHBsYXRmb3JtPSdkYXJ3aW4nKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhdGguYWJzcGF0
aF90b191cmkoIi9mb28vYmFyLmh0bWwiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZXhlY3V0aXZlPXNlbGYsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwbGF0Zm9ybT0nbGludXgyJyksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgImZpbGU6Ly8vZm9vL2Jhci5odG1sIikKIApAQCAtNzcsNyArNjgsNiBAQCBjbGFz
cyBBYnNwYXRoVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ2ZpbGU6Ly8vYzovZm9vL2Jhci5odG1sJywKICAgICAgICAgICAgICAgICAgICAgICAgICBw
bGF0Zm9ybT0nd2luMzInKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhdGguYWJzcGF0aF90
b191cmkoImM6XFxmb29cXGJhci5odG1sIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGV4ZWN1dGl2ZT1zZWxmLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcGxhdGZvcm09J3dpbjMyJyksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgImZpbGU6Ly8vYzovZm9vL2Jhci5odG1sIikKIApAQCAtOTEsMTAgKzgxLDExIEBA
IGNsYXNzIEFic3BhdGhUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgICAgICAjIE5vdGUg
dGhhdCB5b3UgY2FuJ3QgaGF2ZSAnPycgaW4gYSBmaWxlbmFtZSBvbiB3aW5kb3dzLgogICAgICAg
ICBzZWxmLmFzc2VydE1hdGNoKCcvY3lnZHJpdmUvYy9mb28vYmFyICsgYmF6JS5odG1sJywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAnZmlsZTovLy9jOi9mb28vYmFyJTIwKyUyMGJheiUyNS5o
dG1sJywKLSAgICAgICAgICAgICAgICAgICAgICAgICBwbGF0Zm9ybT0nY3lnd2luJywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICBjeWdwYXRoX3Jlc3VsdD0nYzpcXGZvb1xcYmFyICsgYmF6JS5o
dG1sXG4nKQorICAgICAgICAgICAgICAgICAgICAgICAgICdmaWxlOi8vL0M6L2Zvby9iYXIlMjAr
JTIwYmF6JTI1Lmh0bWwnLAorICAgICAgICAgICAgICAgICAgICAgICAgIHBsYXRmb3JtPSdjeWd3
aW4nKQogCisgICAgZGVmIHRlc3Rfc3RvcF9nbG9iYWxfY3lncGF0aChzZWxmKToKKyAgICAgICAg
cGF0aC5fc3RvcF9nbG9iYWxfY3lncGF0aCgpCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6
CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9kZWR1cGxpY2F0ZV90ZXN0c191bml0dGVzdC5weSBiL1dlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2RlZHVwbGljYXRlX3Rlc3RzX3Vu
aXR0ZXN0LnB5CmluZGV4IGJiOTYwNGY1YzUwMmJhYmY3MTMyYjAwMDcwOTkyMzhlZjU1OThhOWEu
LjMwOWJmOGQ5ZTdhYjFhMDhjYTNkZGRlYjg2MTQ4YzZjYWNkMTMyYWMgMTAwNjQ0Ci0tLSBhL1dl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2RlZHVwbGljYXRlX3Rlc3Rz
X3VuaXR0ZXN0LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL2RlZHVwbGljYXRlX3Rlc3RzX3VuaXR0ZXN0LnB5CkBAIC0yMDUsMyArMjA1LDYgQEAgY2xh
c3MgTGlzdER1cGxpY2F0ZXNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgZm9yIGV4
cGVjdGVkLCBpbnB1dHMgaW4gdGVzdF9jYXNlczoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWxzKGV4cGVjdGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVkdXBsaWNhdGVf
dGVzdHMuZ2V0X3JlbGF0aXZlX3Rlc3RfcGF0aCgqaW5wdXRzKSkKKworaWYgX19uYW1lX18gPT0g
J19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2R1bXBfcmVuZGVy
X3RyZWVfdGhyZWFkLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvbGF5b3V0X3BhY2thZ2UvZHVtcF9yZW5kZXJfdHJlZV90aHJlYWQucHkKaW5kZXggZTBmZDFi
NmJiZDZlZTg5NTU0MmJmMjgwM2UxNmQ4Yjc5MGQyNjczOC4uZDZlN2JjNDgyYzFjNWY5MGZkOGEw
OWY3ODQ3MzdkNjA2YjZhODg4ZSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvZHVtcF9yZW5kZXJfdHJlZV90aHJlYWQu
cHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0
X3BhY2thZ2UvZHVtcF9yZW5kZXJfdHJlZV90aHJlYWQucHkKQEAgLTgzLDcgKzgzLDcgQEAgZGVm
IF9wcm9jZXNzX291dHB1dChwb3J0LCBvcHRpb25zLCB0ZXN0X2luZm8sIHRlc3RfdHlwZXMsIHRl
c3RfYXJncywKICAgICAgIHBvcnQ6IHBvcnQtc3BlY2lmaWMgaG9va3MKICAgICAgIG9wdGlvbnM6
IGNvbW1hbmQgbGluZSBvcHRpb25zIGFyZ3VtZW50IGZyb20gb3B0cGFyc2UKICAgICAgIHByb2M6
IGFuIGFjdGl2ZSBEdW1wUmVuZGVyVHJlZSBwcm9jZXNzCi0gICAgICB0ZXN0X2luZm86IE9iamVj
dCBjb250YWluaW5nIHRoZSB0ZXN0IGZpbGVuYW1lLCB1cmkgYW5kIHRpbWVvdXQKKyAgICAgIHRl
c3RfaW5mbzogT2JqZWN0IGNvbnRhaW5pbmcgdGhlIHRlc3QgZmlsZW5hbWUgYW5kIHRpbWVvdXQK
ICAgICAgIHRlc3RfdHlwZXM6IGxpc3Qgb2YgdGVzdCB0eXBlcyB0byBzdWJqZWN0IHRoZSBvdXRw
dXQgdG8KICAgICAgIHRlc3RfYXJnczogYXJndW1lbnRzIHRvIGJlIHBhc3NlZCB0byBlYWNoIHRl
c3QKIApAQCAtMTcyLDcgKzE3Miw3IEBAIGNsYXNzIFNpbmdsZVRlc3RUaHJlYWQodGhyZWFkaW5n
LlRocmVhZCk6CiAgICAgICAgIEFyZ3M6CiAgICAgICAgICAgcG9ydDogb2JqZWN0IGltcGxlbWVu
dGluZyBwb3J0LXNwZWNpZmljIGhvb2tzCiAgICAgICAgICAgb3B0aW9uczogY29tbWFuZCBsaW5l
IGFyZ3VtZW50IG9iamVjdCBmcm9tIG9wdHBhcnNlCi0gICAgICAgICAgdGVzdF9pbmZvOiBPYmpl
Y3QgY29udGFpbmluZyB0aGUgdGVzdCBmaWxlbmFtZSwgdXJpIGFuZCB0aW1lb3V0CisgICAgICAg
ICAgdGVzdF9pbmZvOiBPYmplY3QgY29udGFpbmluZyB0aGUgdGVzdCBmaWxlbmFtZSBhbmQgdGlt
ZW91dAogICAgICAgICAgIHRlc3RfdHlwZXM6IEEgbGlzdCBvZiBUZXN0VHlwZSBvYmplY3RzIHRv
IHJ1biB0aGUgdGVzdCBvdXRwdXQKICAgICAgICAgICAgICAgYWdhaW5zdC4KICAgICAgICAgICB0
ZXN0X2FyZ3M6IEEgVGVzdEFyZ3VtZW50cyBvYmplY3QgdG8gcGFzcyB0byBlYWNoIFRlc3RUeXBl
LgpAQCAtMTkzLDEyICsxOTMsMTMgQEAgY2xhc3MgU2luZ2xlVGVzdFRocmVhZCh0aHJlYWRpbmcu
VGhyZWFkKToKICAgICAgICAgIyBGSVhNRTogdGhpcyBpcyBhIHNlcGFyYXRlIHJvdXRpbmUgdG8g
d29yayBhcm91bmQgYSBidWcKICAgICAgICAgIyBpbiBjb3ZlcmFnZTogc2VlIGh0dHA6Ly9iaXRi
dWNrZXQub3JnL25lZC9jb3ZlcmFnZXB5L2lzc3VlLzg1LgogICAgICAgICB0ZXN0X2luZm8gPSBz
ZWxmLl90ZXN0X2luZm8KKyAgICAgICAgdXJpID0gc2VsZi5fcG9ydC5maWxlbmFtZV90b191cmko
dGVzdF9pbmZvLmZpbGVuYW1lKQogICAgICAgICBzZWxmLl9kcml2ZXIgPSBzZWxmLl9wb3J0LmNy
ZWF0ZV9kcml2ZXIoc2VsZi5fdGVzdF9hcmdzLnBuZ19wYXRoLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fb3B0aW9ucykKICAgICAgICAgc2Vs
Zi5fZHJpdmVyLnN0YXJ0KCkKICAgICAgICAgc3RhcnQgPSB0aW1lLnRpbWUoKQogICAgICAgICBj
cmFzaCwgdGltZW91dCwgYWN0dWFsX2NoZWNrc3VtLCBvdXRwdXQsIGVycm9yID0gXAotICAgICAg
ICAgICAgc2VsZi5fZHJpdmVyLnJ1bl90ZXN0KHRlc3RfaW5mby51cmkuc3RyaXAoKSwgdGVzdF9p
bmZvLnRpbWVvdXQsCisgICAgICAgICAgICBzZWxmLl9kcml2ZXIucnVuX3Rlc3QodXJpLCB0ZXN0
X2luZm8udGltZW91dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2lu
Zm8uaW1hZ2VfaGFzaCgpKQogICAgICAgICBlbmQgPSB0aW1lLnRpbWUoKQogICAgICAgICBzZWxm
Ll90ZXN0X3Jlc3VsdCA9IF9wcm9jZXNzX291dHB1dChzZWxmLl9wb3J0LCBzZWxmLl9vcHRpb25z
LApAQCAtMjU1LDcgKzI1Niw3IEBAIGNsYXNzIFRlc3RTaGVsbFRocmVhZChXYXRjaGFibGVUaHJl
YWQpOgogICAgICAgICAgIHBvcnQ6IGludGVyZmFjZSB0byBwb3J0LXNwZWNpZmljIGhvb2tzCiAg
ICAgICAgICAgb3B0aW9uczogY29tbWFuZCBsaW5lIG9wdGlvbnMgYXJndW1lbnQgZnJvbSBvcHRw
YXJzZQogICAgICAgICAgIGZpbGVuYW1lX2xpc3RfcXVldWU6IEEgdGhyZWFkIHNhZmUgUXVldWUg
Y2xhc3MgdGhhdCBjb250YWlucyBsaXN0cwotICAgICAgICAgICAgICBvZiB0dXBsZXMgb2YgKGZp
bGVuYW1lLCB1cmkpIHBhaXJzLgorICAgICAgICAgICAgICBvZiAoZmlsZW5hbWUsIFRlc3RJbmZv
KSBwYWlycy4KICAgICAgICAgICByZXN1bHRfcXVldWU6IEEgdGhyZWFkIHNhZmUgUXVldWUgY2xh
c3MgdGhhdCB3aWxsIGNvbnRhaW4gdHVwbGVzIG9mCiAgICAgICAgICAgICAgICh0ZXN0LCBmYWls
dXJlIGxpc3RzKSBmb3IgdGhlIHRlc3QgcmVzdWx0cy4KICAgICAgICAgICB0ZXN0X3R5cGVzOiBB
IGxpc3Qgb2YgVGVzdFR5cGUgb2JqZWN0cyB0byBydW4gdGhlIHRlc3Qgb3V0cHV0CkBAIC00NTks
NyArNDYwLDcgQEAgY2xhc3MgVGVzdFNoZWxsVGhyZWFkKFdhdGNoYWJsZVRocmVhZCk6CiAgICAg
ICAgIGZpbGVzIHNpbmdseS4KIAogICAgICAgICBBcmdzOgotICAgICAgICAgIHRlc3RfaW5mbzog
T2JqZWN0IGNvbnRhaW5pbmcgdGhlIHRlc3QgZmlsZW5hbWUsIHVyaSBhbmQgdGltZW91dAorICAg
ICAgICAgIHRlc3RfaW5mbzogT2JqZWN0IGNvbnRhaW5pbmcgdGhlIHRlc3QgZmlsZW5hbWUgYW5k
IHRpbWVvdXQKIAogICAgICAgICBSZXR1cm5zOgogICAgICAgICAgIEEgVGVzdFJlc3VsdApAQCAt
NTA3LDcgKzUwOCw3IEBAIGNsYXNzIFRlc3RTaGVsbFRocmVhZChXYXRjaGFibGVUaHJlYWQpOgog
ICAgICAgICAiIiJSdW4gYSBzaW5nbGUgdGVzdCBmaWxlIHVzaW5nIGEgc2hhcmVkIER1bXBSZW5k
ZXJUcmVlIHByb2Nlc3MuCiAKICAgICAgICAgQXJnczoKLSAgICAgICAgICB0ZXN0X2luZm86IE9i
amVjdCBjb250YWluaW5nIHRoZSB0ZXN0IGZpbGVuYW1lLCB1cmkgYW5kIHRpbWVvdXQKKyAgICAg
ICAgICB0ZXN0X2luZm86IE9iamVjdCBjb250YWluaW5nIHRoZSB0ZXN0IGZpbGVuYW1lIGFuZCB0
aW1lb3V0CiAKICAgICAgICAgUmV0dXJuczoKICAgICAgICAgICBBIGxpc3Qgb2YgVGVzdEZhaWx1
cmUgb2JqZWN0cyBkZXNjcmliaW5nIHRoZSBlcnJvci4KQEAgLTUyOSw4ICs1MzAsOSBAQCBjbGFz
cyBUZXN0U2hlbGxUaHJlYWQoV2F0Y2hhYmxlVGhyZWFkKToKICAgICAgICAgICAgICBfcGFkX3Rp
bWVvdXQoaW50KHRlc3RfaW5mby50aW1lb3V0KSkpCiAgICAgICAgIHNlbGYuX25leHRfdGltZW91
dCA9IHN0YXJ0ICsgdGhyZWFkX3RpbWVvdXQKIAorICAgICAgICB1cmkgPSBzZWxmLl9wb3J0LmZp
bGVuYW1lX3RvX3VyaSh0ZXN0X2luZm8uZmlsZW5hbWUpCiAgICAgICAgIGNyYXNoLCB0aW1lb3V0
LCBhY3R1YWxfY2hlY2tzdW0sIG91dHB1dCwgZXJyb3IgPSBcCi0gICAgICAgICAgIHNlbGYuX2Ry
aXZlci5ydW5fdGVzdCh0ZXN0X2luZm8udXJpLCB0ZXN0X2luZm8udGltZW91dCwgaW1hZ2VfaGFz
aCkKKyAgICAgICAgICAgc2VsZi5fZHJpdmVyLnJ1bl90ZXN0KHVyaSwgdGVzdF9pbmZvLnRpbWVv
dXQsIGltYWdlX2hhc2gpCiAgICAgICAgIGVuZCA9IHRpbWUudGltZSgpCiAKICAgICAgICAgcmVz
dWx0ID0gX3Byb2Nlc3Nfb3V0cHV0KHNlbGYuX3BvcnQsIHNlbGYuX29wdGlvbnMsCmRpZmYgLS1n
aXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2Uu
cHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2Uu
cHkKaW5kZXggMzhiOTgyYjU1MWQ4MjA3NjAxNTA0M2Y4OTkwMTI2ZjEyNmE0OGM5YS4uNTNhMzM2
YTFmMjgxZGI5M2JjYThhY2EzNWEwOGI2NWM4MDFiMmFkNyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5CisrKyBiL1dlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQpAQCAtNDks
NiArNDksNyBAQCBpbXBvcnQgd2Vic29ja2V0X3NlcnZlcgogCiBmcm9tIHdlYmtpdHB5LmNvbW1v
bi5zeXN0ZW0gaW1wb3J0IGxvZ3V0aWxzCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhl
Y3V0aXZlIGltcG9ydCBFeGVjdXRpdmUsIFNjcmlwdEVycm9yCitmcm9tIHdlYmtpdHB5LmNvbW1v
bi5zeXN0ZW0ucGF0aCBpbXBvcnQgYWJzcGF0aF90b191cmkKIGZyb20gd2Via2l0cHkuY29tbW9u
LnN5c3RlbS51c2VyIGltcG9ydCBVc2VyCiAKIApAQCAtMzEyLDE3ICszMTMsNyBAQCBjbGFzcyBQ
b3J0KG9iamVjdCk6CiAgICAgICAgICAgICAgICAgcHJvdG9jb2wgPSAiaHR0cCIKICAgICAgICAg
ICAgIHJldHVybiAiJXM6Ly8xMjcuMC4wLjE6JXUvJXMiICUgKHByb3RvY29sLCBwb3J0LCByZWxh
dGl2ZV9wYXRoKQogCi0gICAgICAgIGFic3BhdGggPSBvcy5wYXRoLmFic3BhdGgoZmlsZW5hbWUp
Ci0KLSAgICAgICAgIyBPbiBXaW5kb3dzLCBhYnNvbHV0ZSBwYXRocyBhcmUgb2YgdGhlIGZvcm0g
ImM6XGZvby50eHQiLiBIb3dldmVyLAotICAgICAgICAjIGFsbCBjdXJyZW50IGJyb3dzZXJzIChl
eGNlcHQgZm9yIE9wZXJhKSBub3JtYWxpemUgZmlsZSBVUkxzIGJ5Ci0gICAgICAgICMgcHJlcGVu
ZGluZyBhbiBhZGRpdGlvbmFsICIvIiBhcyBpZiB0aGUgYWJzb2x1dGUgcGF0aCB3YXMKLSAgICAg
ICAgIyAiL2M6L2Zvby50eHQiLiBUaGlzIG1lYW5zIHRoYXQgYWxsIGZpbGUgVVJMcyBlbmQgdXAg
d2l0aCAiZmlsZTovLy8iCi0gICAgICAgICMgYXQgdGhlIGJlZ2lubmluZy4KLSAgICAgICAgaWYg
c3lzLnBsYXRmb3JtID09ICd3aW4zMic6Ci0gICAgICAgICAgICBhYnNwYXRoID0gJy8nICsgYWJz
cGF0aC5yZXBsYWNlKCdcXCcsICcvJykKLQotICAgICAgICByZXR1cm4gImZpbGU6Ly8iICsgYWJz
cGF0aAorICAgICAgICByZXR1cm4gYWJzcGF0aF90b191cmkob3MucGF0aC5hYnNwYXRoKGZpbGVu
YW1lKSkKIAogICAgIGRlZiB0ZXN0cyhzZWxmLCBwYXRocyk6CiAgICAgICAgICIiIlJldHVybiB0
aGUgbGlzdCBvZiB0ZXN0cyBmb3VuZCAocmVsYXRpdmUgdG8gbGF5b3V0X3Rlc3RzX2RpcigpLiIi
IgpAQCAtMzcxLDEyICszNjIsOCBAQCBjbGFzcyBQb3J0KG9iamVjdCk6CiAgICAgICAgICIiIgog
ICAgICAgICB0ZXN0ID0gdXJpCiAgICAgICAgIGlmIHVyaS5zdGFydHN3aXRoKCJmaWxlOi8vLyIp
OgotICAgICAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6Ci0gICAgICAgICAgICAg
ICAgdGVzdCA9IHRlc3QucmVwbGFjZSgnZmlsZTovLy8nLCAnJykKLSAgICAgICAgICAgICAgICB0
ZXN0ID0gdGVzdC5yZXBsYWNlKCcvJywgJ1xcJykKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAg
ICAgICAgICAgdGVzdCA9IHRlc3QucmVwbGFjZSgnZmlsZTovLycsICcnKQotICAgICAgICAgICAg
cmV0dXJuIHNlbGYucmVsYXRpdmVfdGVzdF9maWxlbmFtZSh0ZXN0KQorICAgICAgICAgICAgcHJl
Zml4ID0gYWJzcGF0aF90b191cmkoc2VsZi5sYXlvdXRfdGVzdHNfZGlyKCkpICsgIi8iCisgICAg
ICAgICAgICByZXR1cm4gdGVzdFtsZW4ocHJlZml4KTpdCiAKICAgICAgICAgaWYgdXJpLnN0YXJ0
c3dpdGgoImh0dHA6Ly8xMjcuMC4wLjE6ODg4MC8iKToKICAgICAgICAgICAgICMgd2Vic29ja2V0
IHRlc3RzCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L2Jhc2VfdW5pdHRlc3QucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L2Jhc2VfdW5pdHRlc3QucHkKaW5kZXggZTY2YzY0ZGJlODdkZDQ3
ZWI4NjExN2RhYzI4ZGU0M2U2NDQ1MThhMy4uZjc1MGZiZTRjZmU5YmMyMGJlNTZkZWY3MDU0MDZm
YmNkZjM0ODkxMCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9iYXNlX3VuaXR0ZXN0LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZV91bml0dGVzdC5weQpAQCAtMzQsNiArMzQs
NyBAQCBpbXBvcnQgdGVtcGZpbGUKIGltcG9ydCB1bml0dGVzdAogCiBmcm9tIHdlYmtpdHB5LmNv
bW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBFeGVjdXRpdmUsIFNjcmlwdEVycm9yCitmcm9t
IHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0IHBhdGgKIGZyb20gd2Via2l0cHkudGhpcmRw
YXJ0eS5tb2NrIGltcG9ydCBNb2NrCiAKIApAQCAtMjI3LDI2ICsyMjgsMTEgQEAgY2xhc3MgUG9y
dFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBzZWxmLmFzc2VydFRydWUoJ2NzczIu
MScgaW4gZGlycykKIAogICAgIGRlZiB0ZXN0X2ZpbGVuYW1lX3RvX3VyaShzZWxmKToKLQogICAg
ICAgICBwb3J0ID0gYmFzZS5Qb3J0KCkKICAgICAgICAgbGF5b3V0X3Rlc3RfZGlyID0gcG9ydC5s
YXlvdXRfdGVzdHNfZGlyKCkKICAgICAgICAgdGVzdF9maWxlID0gb3MucGF0aC5qb2luKGxheW91
dF90ZXN0X2RpciwgImZvbyIsICJiYXIuaHRtbCIpCi0KLSAgICAgICAgIyBPbiBXaW5kb3dzLCBh
YnNvbHV0ZSBwYXRocyBhcmUgb2YgdGhlIGZvcm0gImM6XGZvby50eHQiLiBIb3dldmVyLAotICAg
ICAgICAjIGFsbCBjdXJyZW50IGJyb3dzZXJzIChleGNlcHQgZm9yIE9wZXJhKSBub3JtYWxpemUg
ZmlsZSBVUkxzIGJ5Ci0gICAgICAgICMgcHJlcGVuZGluZyBhbiBhZGRpdGlvbmFsICIvIiBhcyBp
ZiB0aGUgYWJzb2x1dGUgcGF0aCB3YXMKLSAgICAgICAgIyAiL2M6L2Zvby50eHQiLiBUaGlzIG1l
YW5zIHRoYXQgYWxsIGZpbGUgVVJMcyBlbmQgdXAgd2l0aCAiZmlsZTovLy8iCi0gICAgICAgICMg
YXQgdGhlIGJlZ2lubmluZy4KLSAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6Ci0g
ICAgICAgICAgICBwcmVmaXggPSAiZmlsZTovLy8iCi0gICAgICAgICAgICBwYXRoID0gdGVzdF9m
aWxlLnJlcGxhY2UoIlxcIiwgIi8iKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcHJlZml4
ID0gImZpbGU6Ly8iCi0gICAgICAgICAgICBwYXRoID0gdGVzdF9maWxlCi0KICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChwb3J0LmZpbGVuYW1lX3RvX3VyaSh0ZXN0X2ZpbGUpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgIHByZWZpeCArIHBhdGgpCi0KKyAgICAgICAgICAgICAgICAgICAgICAg
ICBwYXRoLmFic3BhdGhfdG9fdXJpKHRlc3RfZmlsZSkpCiAKIAogY2xhc3MgVmlydHVhbFRlc3Qo
dW5pdHRlc3QuVGVzdENhc2UpOgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkKaW5kZXggMzAxZDRiMTg5YjA5
YzgzZDI3MDZlMzYwYTczZTg4MjNmYzFiMDgwOC4uNDg4YjQ0NTczMzI0OWJkOTlmN2JmNmYyNGM5
YzgyOWIxZmI1MjE3YiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5CkBAIC00MywxMiArNDMsMTMgQEAg
aW1wb3J0IHRlbXBmaWxlCiBpbXBvcnQgdGltZQogaW1wb3J0IHdlYmJyb3dzZXIKIAotaW1wb3J0
IGJhc2UKLWltcG9ydCBodHRwX3NlcnZlcgotCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0u
ZXhlY3V0aXZlIGltcG9ydCBFeGVjdXRpdmUKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5w
YXRoIGltcG9ydCBjeWdwYXRoCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFj
a2FnZSBpbXBvcnQgdGVzdF9leHBlY3RhdGlvbnMKIAoraW1wb3J0IGJhc2UKK2ltcG9ydCBodHRw
X3NlcnZlcgorCiAjIENocm9taXVtIERSVCBvbiBPU1ggdXNlcyBXZWJLaXREcml2ZXIuCiBpZiBz
eXMucGxhdGZvcm0gPT0gJ2Rhcndpbic6CiAgICAgaW1wb3J0IHdlYmtpdApAQCAtMTQzLDExICsx
NDQsMjEgQEAgY2xhc3MgQ2hyb21pdW1Qb3J0KGJhc2UuUG9ydCk6CiAgICAgICAgIHdpdGggb3Bl
bihhY3R1YWxfZmlsZW5hbWUsICd3K2InKSBhcyBmaWxlOgogICAgICAgICAgICAgZmlsZS53cml0
ZShhY3R1YWxfY29udGVudHMpCiAKKyAgICAgICAgIyBXZSB1c2UgY29udmVydF9wYXRoIGlmIHRo
ZXJlJ3MgYSBjaGFuY2UgdGhhdCB0aGUgbGF1bmNoZWQKKyAgICAgICAgIyBleGVjdXRhYmxlIG5l
ZWRzIGZpbGVuYW1lIGFyZ3VtZW50cyBpbiBhIGRpZmZlcmVudCBmb3JtYXQgdGhhbgorICAgICAg
ICAjIHRoZSBub3JtYWwgZm9ybWF0IHByb3ZpZGVkIGJ5IHRoZSBweXRob24gcnVudGltZS4gVGhl
IG1haW4KKyAgICAgICAgIyBleGFtcGxlIG9mIHRoaXMgaXMgcnVubmluZyB1bmRlciBDeWd3aW4g
b24gV2luZG93cyBidXQKKyAgICAgICAgIyBsYXVuY2hpbmcgYSBXaW4zMiBiaW5hcnksIHdoZXJl
IHdlIG5lZWQgdG8gY29udmVydCB0aGUgcGF0aAorICAgICAgICAjIGZyb20gL2N5Z2RyaXZlL2Mv
Zm9vLnR4dCB0byBjOlxmb28udHh0LgogICAgICAgICBpZiBkaWZmX2ZpbGVuYW1lOgotICAgICAg
ICAgICAgY21kID0gW2V4ZWN1dGFibGUsICctLWRpZmYnLCBleHBlY3RlZF9maWxlbmFtZSwKLSAg
ICAgICAgICAgICAgICAgICBhY3R1YWxfZmlsZW5hbWUsIGRpZmZfZmlsZW5hbWVdCisgICAgICAg
ICAgICBjbWQgPSBbZXhlY3V0YWJsZSwgJy0tZGlmZicsCisgICAgICAgICAgICAgICAgICAgc2Vs
Zi5fY29udmVydF9wYXRoKGV4cGVjdGVkX2ZpbGVuYW1lKSwKKyAgICAgICAgICAgICAgICAgICBz
ZWxmLl9jb252ZXJ0X3BhdGgoYWN0dWFsX2ZpbGVuYW1lKSwKKyAgICAgICAgICAgICAgICAgICBz
ZWxmLl9jb252ZXJ0X3BhdGgoZGlmZl9maWxlbmFtZSldCiAgICAgICAgIGVsc2U6Ci0gICAgICAg
ICAgICBjbWQgPSBbZXhlY3V0YWJsZSwgZXhwZWN0ZWRfZmlsZW5hbWUsIGFjdHVhbF9maWxlbmFt
ZV0KKyAgICAgICAgICAgIGNtZCA9IFtleGVjdXRhYmxlLAorICAgICAgICAgICAgICAgICAgIHNl
bGYuX2NvbnZlcnRfcGF0aChleHBlY3RlZF9maWxlbmFtZSksCisgICAgICAgICAgICAgICAgICAg
c2VsZi5fY29udmVydF9wYXRoKGFjdHVhbF9maWxlbmFtZSldCiAKICAgICAgICAgcmVzdWx0ID0g
VHJ1ZQogICAgICAgICB0cnk6CkBAIC0zNDAsNiArMzUxLDEzIEBAIGNsYXNzIENocm9taXVtUG9y
dChiYXNlLlBvcnQpOgogICAgICAgICAgICAgcGxhdGZvcm0gPSBzZWxmLm5hbWUoKQogICAgICAg
ICByZXR1cm4gc2VsZi5wYXRoX2Zyb21fd2Via2l0X2Jhc2UoJ0xheW91dFRlc3RzJywgJ3BsYXRm
b3JtJywgcGxhdGZvcm0pCiAKKyAgICBkZWYgX2NvbnZlcnRfcGF0aChzZWxmLCBwYXRoKToKKyAg
ICAgICAgIiIiSGFuZGxlcyBmaWxlbmFtZSBjb252ZXJzaW9uIGZvciBzdWJwcm9jZXNzIGNvbW1h
bmQgbGluZSBhcmdzLiIiIgorICAgICAgICAjIFNlZSBub3RlIGFib3ZlIGluIGRpZmZfaW1hZ2Uo
KSBmb3Igd2h5IHdlIG5lZWQgdGhpcy4KKyAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICdjeWd3
aW4nOgorICAgICAgICAgICAgcmV0dXJuIGN5Z3BhdGgocGF0aCkKKyAgICAgICAgcmV0dXJuIHBh
dGgKKwogICAgIGRlZiBfcGF0aF90b19pbWFnZV9kaWZmKHNlbGYpOgogICAgICAgICBiaW5hcnlf
bmFtZSA9ICdpbWFnZV9kaWZmJwogICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnVzZV9kcnQ6CkBA
IC0zNTksNyArMzc3LDEwIEBAIGNsYXNzIENocm9taXVtRHJpdmVyKGJhc2UuRHJpdmVyKToKICAg
ICBkZWYgX2RyaXZlcl9hcmdzKHNlbGYpOgogICAgICAgICBkcml2ZXJfYXJncyA9IFtdCiAgICAg
ICAgIGlmIHNlbGYuX2ltYWdlX3BhdGg6Ci0gICAgICAgICAgICBkcml2ZXJfYXJncy5hcHBlbmQo
Ii0tcGl4ZWwtdGVzdHM9IiArIHNlbGYuX2ltYWdlX3BhdGgpCisgICAgICAgICAgICAjIFNlZSBu
b3RlIGFib3ZlIGluIGRpZmZfaW1hZ2UoKSBmb3Igd2h5IHdlIG5lZWQKKyAgICAgICAgICAgICMg
X2NvbnZlcnRfcGF0aCgpLgorICAgICAgICAgICAgZHJpdmVyX2FyZ3MuYXBwZW5kKCItLXBpeGVs
LXRlc3RzPSIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3BvcnQuX2Nv
bnZlcnRfcGF0aChzZWxmLl9pbWFnZV9wYXRoKSkKIAogICAgICAgICBpZiBzZWxmLl9vcHRpb25z
LnVzZV9kcnQ6CiAgICAgICAgICAgICBkcml2ZXJfYXJncy5hcHBlbmQoJy0tdGVzdC1zaGVsbCcp
CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L2Nocm9taXVtX3VuaXR0ZXN0LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV91bml0dGVzdC5weQppbmRleCBlMzg1OGYwYzRmYzY3
MmIzODliYzkxODhmOWFkNjA2OGUxMWNlZTY2Li43Y2YwNWQyMGNmMmIyYzM2OWU0OWUzMTdmODE2
NDNlMmE0ZGI3ZWU4IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3VuaXR0ZXN0LnB5CisrKyBiL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fdW5pdHRlc3QucHkKQEAg
LTE3Niw3ICsxNzYsMTAgQEAgREVGRVIgTElOVVggV0lOIDogZmFzdC9qcy92ZXJ5LWdvb2QuanMg
PSBUSU1FT1VUIFBBU1MiIiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5fZXhp
dF9jb2RlPUZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybl9zdGRlcnI9
VHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGVfb3V0cHV0PUZhbHNlKToK
LSAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fcmVzdWx0CisgICAgICAgICAgICAgICAgaWYg
cmV0dXJuX2V4aXRfY29kZToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3Jlc3Vs
dAorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAnJwog
CiAgICAgICAgIG9wdGlvbnMgPSBFbXB0eU9wdGlvbnMoKQogICAgICAgICBwb3J0ID0gQ2hyb21p
dW1Qb3J0VGVzdC5UZXN0TGludXhQb3J0KG9wdGlvbnMpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2h0dHBfbG9ja191bml0dGVzdC5w
eSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvaHR0cF9s
b2NrX3VuaXR0ZXN0LnB5CmluZGV4IGYyZTRjZTU3Y2JkMWExZDA0NDIzYWYwNTZlOTYxMGYxMDc5
NWUwZmEuLjg1Yzc2MGFjNWZhMDQzNjk5MWQ0ODYzODcxMjBjODdmYmQ2MmM5MDQgMTAwNjQ0Ci0t
LSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvaHR0cF9s
b2NrX3VuaXR0ZXN0LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvaHR0cF9sb2NrX3VuaXR0ZXN0LnB5CkBAIC00Myw3ICs0Myw3IEBAIGNsYXNz
IEh0dHBMb2NrVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgY2xlYW5fYWxsX2xv
Y2tmaWxlKHNlbGYpOgogICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhzZWxmLmd1YXJkX2xvY2tf
ZmlsZSk6Ci0gICAgICAgICAgICBvcy51bmxpbmsoZ3VhcmRfbG9ja19maWxlKQorICAgICAgICAg
ICAgb3MudW5saW5rKHNlbGYuZ3VhcmRfbG9ja19maWxlKQogICAgICAgICBsb2NrX2xpc3QgPSBn
bG9iLmdsb2Ioc2VsZi5sb2NrX2ZpbGVfcGF0aF9wcmVmaXggKyAnKicpCiAgICAgICAgIGZvciBm
aWxlX25hbWUgaW4gbG9ja19saXN0OgogICAgICAgICAgICAgb3MudW5saW5rKGZpbGVfbmFtZSkK
ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1
bl93ZWJraXRfdGVzdHMucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5CmluZGV4IDljYzc4OTVmM2FhOGUzOGE3YTYxMzM4MTk4
MDYyYTY1ZjIzYzZjOTQuLmVmYWM3ZjI2ZWU0ZmIxZTYxOGVmM2IxN2JhODQyYWI4NDdhZjQwYTIg
MTAwNzU1Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1
bl93ZWJraXRfdGVzdHMucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weQpAQCAtOTEsMTQgKzkxLDEzIEBAIGNsYXNzIFRl
c3RJbmZvOgogICAgICIiIkdyb3VwcyBpbmZvcm1hdGlvbiBhYm91dCBhIHRlc3QgZm9yIGVhc3kg
cGFzc2luZyBvZiBkYXRhLiIiIgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBvcnQsIGZpbGVu
YW1lLCB0aW1lb3V0KToKLSAgICAgICAgIiIiR2VuZXJhdGVzIHRoZSBVUkkgYW5kIHN0b3JlcyB0
aGUgZmlsZW5hbWUgYW5kIHRpbWVvdXQgZm9yIHRoaXMgdGVzdC4KKyAgICAgICAgIiIiCiAgICAg
ICAgIEFyZ3M6CiAgICAgICAgICAgZmlsZW5hbWU6IEZ1bGwgcGF0aCB0byB0aGUgdGVzdC4KLSAg
ICAgICAgICB0aW1lb3V0OiBUaW1lb3V0IGZvciBydW5uaW5nIHRoZSB0ZXN0IGluIFRlc3RTaGVs
bC4KKyAgICAgICAgICB0aW1lb3V0OiBUaW1lb3V0IGZvciBydW5uaW5nIHRoZSB0ZXN0IGluIERS
VC4KICAgICAgICAgICAiIiIKICAgICAgICAgc2VsZi5maWxlbmFtZSA9IGZpbGVuYW1lCiAgICAg
ICAgIHNlbGYuX3BvcnQgPSBwb3J0Ci0gICAgICAgIHNlbGYudXJpID0gcG9ydC5maWxlbmFtZV90
b191cmkoZmlsZW5hbWUpCiAgICAgICAgIHNlbGYudGltZW91dCA9IHRpbWVvdXQKICAgICAgICAg
c2VsZi5faW1hZ2VfY2hlY2tzdW0gPSAtMQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70945</attachid>
            <date>2010-10-15 19:44:53 -0700</date>
            <delta_ts>2010-10-15 19:53:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47220-20101015194451.patch</filename>
            <type>text/plain</type>
            <size>16722</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBlOWJkMzEwN2U1MTgzYTIxYThhMmFmNWE3NjE1YmU2ODI2M2RjMmQ3Li5lZjQ0NjJl
ZWNjOTM2NzI3OWEzMWMxYmZmNWE3YzY4NjcwYmY1M2M0IDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDI1ICsxLDI5IEBA
Ci0yMDEwLTEwLTEyICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgorMjAxMC0x
MC0xMyAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4KIAotICAgICAgICBSZXZp
ZXdlZCBieSBFcmljIFNlaWRlbC4KKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgUmUtc3VibWl0IGEgcmV2aXNlZCB2ZXJzaW9uIG9mIHI2OTYzOCAtIGVuYWJs
aW5nIG5ldy1ydW4td2Via2l0LXRlc3RzCisgICAgICAgIHVuZGVyIGN5Z3dpbi4gVGhlIGluaXRp
YWwgdmVyc2lvbiBoYWQgYSBidWcgaW4gYmFzZTp1cmlfdG9fdGVzdF9uYW1lCisgICAgICAgIHRo
YXQgd2FzIGNhdXNpbmcgdGVzdHMgdG8gZmFpbC4gVGhpcyB2ZXJzaW9uIGNvcnJlY3RzIHRoYXQg
YnVnLCBidXQKKyAgICAgICAgYWxzbyBtYWtlcyB0aGUgY29kZSBzYWZlciBieSBjYWxsaW5nIGN5
Z3BhdGggbW9yZSByZWxpYWJseSwgYW5kCisgICAgICAgIGxlYXZpbmcgYSBsb25nLXJ1bm5pbmcg
Y3lncGF0aCBwcm9jZXNzIG9wZW4uCiAKLSAgICAgICAgVGhpcyBwYXRjaCBlbmFibGVzIG5ldy1y
dW4td2Via2l0LXRlc3RzIChpbiBwYXJ0aWN1bGFyIHRoZQotICAgICAgICBjaHJvbWl1bS13aW4g
cG9ydCkgdG8gcnVuIHVuZGVyIEN5Z3dpbiBhcyB3ZWxsIGFzIFdpbjMyLiBNb3N0bHkKLSAgICAg
ICAgdGhpcyBqdXN0IHJlcXVpcmVkIHNvbWUgY29udmVyc2lvbnMgZnJvbSBjeWd3aW4gcGF0aHMg
dG8gV2luMzIKLSAgICAgICAgcGF0aHMgd2hlbiB3ZSBzcGF3biBvZmYgV2luMzIgYmluYXJpZXMg
bGlrZSB0ZXN0X3NoZWxsLgorICAgICAgICBUaGlzIHBhdGNoIGFsc28gY29ycmVjdHMgYSBjb3Vw
bGUgb2YgbWlub3IgYnVncyBpbiBodHRwX2xvY2tfdW5pdHRlc3QsCisgICAgICAgIGNocm9taXVt
X3VuaXR0ZXN0LCBhbmQgZGVkcHVsaWNhdGVfdGVzdHNfdW5pdHRlc3QgdGhhdCBzaG93ZWQgdXAK
KyAgICAgICAgd2hpbGUgdGVzdGluZyB0aGlzLgogCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzIyMAogCiAgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9jb21tb24vc3lzdGVtL3BhdGgucHk6Ci0gICAgICAgIC0gRXhwb3NlIHRoZSBjeWdwYXRoKCkg
ZnVuY3Rpb24gZm9yIHBhdGggY29udmVyc2lvbgotCi0gICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9zeXN0ZW0vcGF0aF91bml0dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9kZWR1cGxpY2F0ZV90ZXN0c191bml0dGVzdC5weToKICAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9kdW1w
X3JlbmRlcl90cmVlX3RocmVhZC5weToKLSAgICAgICAgLSBzaGlmdCBmaWxlbmFtZS0+dXJpIGNv
bnZlcnNpb24gaW4gdGhlIFRlc3RJbmZvIG9iamVjdHMgdG8gdGhlCi0gICAgICAgICAgZHVtcF9y
ZW5kZXJfdHJlZSB0aHJlYWQKLQogICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvYmFzZS5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L2Jhc2VfdW5pdHRlc3QucHk6CiAgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weToKLSAgICAgICAgLSB1c2UgY3lncGF0aCgpCisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV91bml0dGVz
dC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2h0dHBf
bG9ja191bml0dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9ydW5fd2Via2l0X3Rlc3RzLnB5OgogCiAyMDEwLTEwLTEyICBZdXRhIEtpdGFtdXJhICA8eXV0
YWtAY2hyb21pdW0ub3JnPgogCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2NvbW1vbi9zeXN0ZW0vcGF0aC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL3N5c3RlbS9wYXRoLnB5CmluZGV4IDUyODIxMGEwNjM5MTg5ODQzNmU2NDYxNTQ2OWU2
ODhmZWRmYzEzZmEuLjNkNDcyNjUzMWY0MWMzM2U2OTUwMjkyMjllMzhhNTNhMGRhNzVjMDEgMTAw
NjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9wYXRo
LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9wYXRo
LnB5CkBAIC0yNywzMCArMjcsODUgQEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogIiIiZ2VuZXJpYyByb3V0
aW5lcyB0byBjb252ZXJ0IHBsYXRmb3JtLXNwZWNpZmljIHBhdGhzIHRvIFVSSXMuIiIiCitpbXBv
cnQgYXRleGl0CitpbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IHN5cworaW1wb3J0IHRocmVhZGlu
ZwogaW1wb3J0IHVybGxpYgogCiAKLWRlZiBhYnNwYXRoX3RvX3VyaShwYXRoLCBleGVjdXRpdmUs
IHBsYXRmb3JtPU5vbmUpOgorZGVmIGFic3BhdGhfdG9fdXJpKHBhdGgsIHBsYXRmb3JtPU5vbmUp
OgogICAgICIiIkNvbnZlcnRzIGEgcGxhdGZvcm0tc3BlY2lmaWMgYWJzb2x1dGUgcGF0aCB0byBh
IGZpbGU6IFVSTC4iIiIKICAgICBpZiBwbGF0Zm9ybSBpcyBOb25lOgogICAgICAgICBwbGF0Zm9y
bSA9IHN5cy5wbGF0Zm9ybQotICAgIHJldHVybiAiZmlsZToiICsgX2VzY2FwZShfY29udmVydF9w
YXRoKHBhdGgsIGV4ZWN1dGl2ZSwgcGxhdGZvcm0pKQorICAgIHJldHVybiAiZmlsZToiICsgX2Vz
Y2FwZShfY29udmVydF9wYXRoKHBhdGgsIHBsYXRmb3JtKSkKIAogCi1kZWYgY3lncGF0aChwYXRo
LCBleGVjdXRpdmUpOgorIyBOb3RlIHRoYXQgdGhpcyBvYmplY3QgaXMgbm90IHRocmVhZHNhZmUg
YW5kIG11c3Qgb25seSBiZSBjYWxsZWQKKyMgZnJvbSBtdWx0aXBsZSB0aHJlYWRzIHVuZGVyIHBy
b3RlY3Rpb24gb2YgYSBsb2NrIChhcyBpcyBkb25lIGluIGN5Z3BhdGgoKSkKK2NsYXNzIF9DeWdQ
YXRoKG9iamVjdCk6CisgICAgIiIiTWFuYWdlcyBhIGxvbmctcnVubmluZyAnY3lncGF0aCcgcHJv
Y2VzcyBmb3IgZmlsZSBjb252ZXJzaW9uLiIiIgorICAgIGxvY2sgPSBOb25lCisgICAgc2luZ2xl
dG9uID0gTm9uZQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBzZWxmLl9jaGls
ZF9wcm9jZXNzID0gTm9uZQorCisgICAgZGVmIHN0YXJ0KHNlbGYpOgorICAgICAgICBhc3NlcnQo
c2VsZi5fY2hpbGRfcHJvY2VzcyBpcyBOb25lKQorICAgICAgICBhcmdzID0gWydjeWdwYXRoJywg
Jy1mJywgJy0nLCAnLXdhJ10KKyAgICAgICAgc2VsZi5fY2hpbGRfcHJvY2VzcyA9IHN1YnByb2Nl
c3MuUG9wZW4oYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RkaW49c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZV9mZHM9RmFsc2UpCisKKyAg
ICBkZWYgaXNfcnVubmluZyhzZWxmKToKKyAgICAgICAgaWYgbm90IHNlbGYuX2NoaWxkX3Byb2Nl
c3M6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgcmV0dXJuIHNlbGYuX2NoaWxk
X3Byb2Nlc3MucmV0dXJuY29kZSBpcyBOb25lCisKKyAgICBkZWYgc3RvcChzZWxmKToKKyAgICAg
ICAgaWYgc2VsZi5fY2hpbGRfcHJvY2VzczoKKyAgICAgICAgICAgIHNlbGYuX2NoaWxkX3Byb2Nl
c3Muc3RkaW4uY2xvc2UoKQorICAgICAgICAgICAgc2VsZi5fY2hpbGRfcHJvY2Vzcy53YWl0KCkK
KyAgICAgICAgc2VsZi5fY2hpbGRfcHJvY2VzcyA9IE5vbmUKKworICAgIGRlZiBjb252ZXJ0KHNl
bGYsIHBhdGgpOgorICAgICAgICBpZiBub3Qgc2VsZi5pc19ydW5uaW5nKCk6CisgICAgICAgICAg
ICBzZWxmLnN0YXJ0KCkKKyAgICAgICAgc2VsZi5fY2hpbGRfcHJvY2Vzcy5zdGRpbi53cml0ZSgi
JXNcclxuIiAlIHBhdGgpCisgICAgICAgIHNlbGYuX2NoaWxkX3Byb2Nlc3Muc3RkaW4uZmx1c2go
KQorICAgICAgICByZXR1cm4gc2VsZi5fY2hpbGRfcHJvY2Vzcy5zdGRvdXQucmVhZGxpbmUoKS5y
c3RyaXAoKQorCisKK2RlZiBjeWdwYXRoKHBhdGgpOgogICAgICIiIkNvbnZlcnRzIGEgY3lnd2lu
IHBhdGggdG8gV2luZG93cyBwYXRoLiIiIgotICAgICMgRklYTUU6IHRoaXMgbWF5IG5vdCBiZSBj
b3JyZWN0IGluIGV2ZXJ5IHNpdHVhdGlvbiwgYnV0IGZvcmtpbmcKLSAgICAjIGN5Z3BhdGggaXMg
dmVyeSBzbG93LiBNb3JlIGltcG9ydGFudGx5LCB0aGVyZSBpcyBhIGJ1ZyBpbiBQeXRob24KLSAg
ICAjIHdoZXJlIGxhdW5jaGluZyBzdWJwcm9jZXNzZXMgYW5kIGNvbW11bmljYXRpbmcgd2l0aCBQ
SVBFcyAod2hpY2gKLSAgICAjIGlzIHdoYXQgcnVuX2NvbW1hbmQoKSBkb2VzKSBjYW4gbGVhZCB0
byBkZWFkbG9ja3Mgd2hlbiBydW5uaW5nIGluCi0gICAgIyBtdWx0aXBsZSB0aHJlYWRzLgotICAg
IGlmIHBhdGguc3RhcnRzd2l0aCgiL2N5Z2RyaXZlIik6Ci0gICAgICAgIHBhdGggPSBwYXRoWzEw
XSArICI6IiArIHBhdGhbMTE6XQotICAgICAgICBwYXRoID0gcGF0aC5yZXBsYWNlKCIvIiwgIlxc
IikKLSAgICAgICAgcmV0dXJuIHBhdGgKLSAgICByZXR1cm4gZXhlY3V0aXZlLnJ1bl9jb21tYW5k
KFsnY3lncGF0aCcsICctd2EnLCBwYXRoXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRlY29kZV9vdXRwdXQ9RmFsc2UpLnJzdHJpcCgpCisgICAgaWYgbm90IF9DeWdQYXRoLmxv
Y2s6CisgICAgICAgIF9DeWdQYXRoLmxvY2sgPSB0aHJlYWRpbmcuTG9jaygpCisKKyAgICBfQ3ln
UGF0aC5sb2NrLmFjcXVpcmUoKQorICAgIGlmIG5vdCBfQ3lnUGF0aC5zaW5nbGV0b246CisgICAg
ICAgIF9DeWdQYXRoLnNpbmdsZXRvbiA9IF9DeWdQYXRoKCkKKyAgICAgICAgIyBNYWtlIHN1cmUg
dGhlIGN5Z3BhdGggc3VicHJvY2VzcyBhbHdheXMgZ2V0cyBzaHV0ZG93biBjbGVhbmx5LgorICAg
ICAgICBhdGV4aXQucmVnaXN0ZXIoX3N0b3BfY3lncGF0aF9zdWJwcm9jZXNzKQorCisgICAgcmVz
dWx0ID0gTm9uZQorICAgIHRyeToKKyAgICAgICAgcmVzdWx0ID0gX0N5Z1BhdGguc2luZ2xldG9u
LmNvbnZlcnQocGF0aCkKKyAgICBmaW5hbGx5OgorICAgICAgICBfQ3lnUGF0aC5sb2NrLnJlbGVh
c2UoKQorCisgICAgcmV0dXJuIHJlc3VsdAorCisKK2RlZiBfc3RvcF9jeWdwYXRoX3N1YnByb2Nl
c3MoKToKKyAgICBpZiBfQ3lnUGF0aC5sb2NrOgorICAgICAgICBfQ3lnUGF0aC5sb2NrLmFjcXVp
cmUoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBpZiBfQ3lnUGF0aC5zaW5nbGV0b246Cisg
ICAgICAgICAgICAgICAgX0N5Z1BhdGguc2luZ2xldG9uLnN0b3AoKQorICAgICAgICBmaW5hbGx5
OgorICAgICAgICAgICAgX0N5Z1BhdGgubG9jay5yZWxlYXNlKCkKIAogCiBkZWYgX2VzY2FwZShw
YXRoKToKQEAgLTYyLDEyICsxMTcsMTIgQEAgZGVmIF9lc2NhcGUocGF0aCk6CiAgICAgcmV0dXJu
IHVybGxpYi5xdW90ZShwYXRoLCBzYWZlPScvKzonKQogCiAKLWRlZiBfY29udmVydF9wYXRoKHBh
dGgsIGV4ZWN1dGl2ZSwgcGxhdGZvcm0pOgorZGVmIF9jb252ZXJ0X3BhdGgocGF0aCwgcGxhdGZv
cm0pOgogICAgICIiIkhhbmRsZXMgYW55IG9zLXNwZWNpZmljIHBhdGggc2VwYXJhdG9ycywgbWFw
cGluZ3MsIGV0Yy4iIiIKICAgICBpZiBwbGF0Zm9ybSA9PSAnd2luMzInOgogICAgICAgICByZXR1
cm4gX3dpbnBhdGhfdG9fdXJpKHBhdGgpCiAgICAgaWYgcGxhdGZvcm0gPT0gJ2N5Z3dpbic6Ci0g
ICAgICAgIHJldHVybiBfd2lucGF0aF90b191cmkoY3lncGF0aChwYXRoLCBleGVjdXRpdmUpKQor
ICAgICAgICByZXR1cm4gX3dpbnBhdGhfdG9fdXJpKGN5Z3BhdGgocGF0aCkpCiAgICAgcmV0dXJu
IF91bml4eXBhdGhfdG9fdXJpKHBhdGgpCiAKIApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3BhdGhfdW5pdHRlc3QucHkgYi9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vcGF0aF91bml0dGVzdC5weQppbmRleCAz
YzEwMjFkY2FkN2Q1YTdhOGVkMjQ1ZDM0ZGZiMTE1NzhkYTRiYTU4Li5kNjdhN2EwODI5YmQ1NWQ0
MWViMjM1NGExYmFjNWZkYmQ3MDhiMmZkIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vcGF0aF91bml0dGVzdC5weQorKysgYi9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vcGF0aF91bml0dGVzdC5weQpAQCAtMjcs
MzkgKzI3LDMxIEBACiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIGltcG9ydCB1bml0dGVzdAoraW1wb3J0IHN5
cwogCiBpbXBvcnQgcGF0aAogCi0KIGNsYXNzIEFic3BhdGhUZXN0KHVuaXR0ZXN0LlRlc3RDYXNl
KToKLSAgICBkZWYgcnVuX2NvbW1hbmQoc2VsZiwgYXJncywgKiprd2FyZ3MpOgotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGFyZ3NbMF0sICdjeWdwYXRoJykKLSAgICAgICAgcmV0dXJuIHNlbGYu
Y3lncGF0aF9yZXN1bHQKLQogICAgIGRlZiBhc3NlcnRNYXRjaChzZWxmLCB0ZXN0X3BhdGgsIGV4
cGVjdGVkX3VyaSwKLSAgICAgICAgICAgICAgICAgICAgcGxhdGZvcm0sIGN5Z3BhdGhfcmVzdWx0
PU5vbmUpOgotICAgICAgICBpZiBwbGF0Zm9ybSA9PSAnY3lnd2luJzoKLSAgICAgICAgICAgIHNl
bGYuY3lncGF0aF9yZXN1bHQgPSBjeWdwYXRoX3Jlc3VsdAotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHBhdGguYWJzcGF0aF90b191cmkodGVzdF9wYXRoLCBleGVjdXRpdmU9c2VsZiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYXRmb3JtPXBsYXRmb3Jt
KSwKKyAgICAgICAgICAgICAgICAgICAgcGxhdGZvcm09Tm9uZSk6CisgICAgICAgIGlmIHBsYXRm
b3JtID09ICdjeWd3aW4nIGFuZCBzeXMucGxhdGZvcm0gIT0gJ2N5Z3dpbic6CisgICAgICAgICAg
ICByZXR1cm4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXRoLmFic3BhdGhfdG9fdXJpKHRl
c3RfcGF0aCwgcGxhdGZvcm09cGxhdGZvcm0pLAogICAgICAgICAgICAgICAgICAgICAgICAgIGV4
cGVjdGVkX3VyaSkKIAogICAgIGRlZiB0ZXN0X2Fic3BhdGhfdG9fdXJpX2N5Z3dpbihzZWxmKToK
ICAgICAgICAgc2VsZi5hc3NlcnRNYXRjaCgnL2N5Z2RyaXZlL2MvZm9vL2Jhci5odG1sJywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAnZmlsZTovLy9jOi9mb28vYmFyLmh0bWwnLAotICAgICAg
ICAgICAgICAgICAgICAgICAgIHBsYXRmb3JtPSdjeWd3aW4nLAotICAgICAgICAgICAgICAgICAg
ICAgICAgIGN5Z3BhdGhfcmVzdWx0PSdjOlxcZm9vXFxiYXIuaHRtbFxuJykKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAnZmlsZTovLy9DOi9mb28vYmFyLmh0bWwnLAorICAgICAgICAgICAgICAg
ICAgICAgICAgIHBsYXRmb3JtPSdjeWd3aW4nKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBh
dGguYWJzcGF0aF90b191cmkoJy9jeWdkcml2ZS9jL2Zvby9iYXIuaHRtbCcsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjdXRpdmU9c2VsZiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYXRmb3JtPSdjeWd3aW4n
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAnZmlsZTovLy9jOi9mb28vYmFyLmh0bWwnKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICdmaWxlOi8vL0M6L2Zvby9iYXIuaHRtbCcpCiAKICAg
ICBkZWYgdGVzdF9hYnNwYXRoX3RvX3VyaV9kYXJ3aW4oc2VsZik6CiAgICAgICAgIHNlbGYuYXNz
ZXJ0TWF0Y2goJy9mb28vYmFyLmh0bWwnLAogICAgICAgICAgICAgICAgICAgICAgICAgICdmaWxl
Oi8vL2Zvby9iYXIuaHRtbCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhdGZvcm09J2Rh
cndpbicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGF0aC5hYnNwYXRoX3RvX3VyaSgiL2Zv
by9iYXIuaHRtbCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBleGVjdXRpdmU9c2VsZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHBsYXRmb3JtPSdkYXJ3aW4nKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAiZmls
ZTovLy9mb28vYmFyLmh0bWwiKQogCkBAIC02OCw3ICs2MCw2IEBAIGNsYXNzIEFic3BhdGhUZXN0
KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgICAgICAgICAgICAgICAgICAnZmlsZTovLy9m
b28vYmFyLmh0bWwnLAogICAgICAgICAgICAgICAgICAgICAgICAgIHBsYXRmb3JtPSdkYXJ3aW4n
KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhdGguYWJzcGF0aF90b191cmkoIi9mb28vYmFy
Lmh0bWwiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhl
Y3V0aXZlPXNlbGYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwbGF0Zm9ybT0nbGludXgyJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGU6Ly8v
Zm9vL2Jhci5odG1sIikKIApAQCAtNzcsNyArNjgsNiBAQCBjbGFzcyBBYnNwYXRoVGVzdCh1bml0
dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpbGU6Ly8vYzovZm9v
L2Jhci5odG1sJywKICAgICAgICAgICAgICAgICAgICAgICAgICBwbGF0Zm9ybT0nd2luMzInKQog
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhdGguYWJzcGF0aF90b191cmkoImM6XFxmb29cXGJh
ci5odG1sIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4
ZWN1dGl2ZT1zZWxmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcGxhdGZvcm09J3dpbjMyJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGU6Ly8v
YzovZm9vL2Jhci5odG1sIikKIApAQCAtOTEsMTAgKzgxLDE5IEBAIGNsYXNzIEFic3BhdGhUZXN0
KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgICAgICAjIE5vdGUgdGhhdCB5b3UgY2FuJ3QgaGF2
ZSAnPycgaW4gYSBmaWxlbmFtZSBvbiB3aW5kb3dzLgogICAgICAgICBzZWxmLmFzc2VydE1hdGNo
KCcvY3lnZHJpdmUvYy9mb28vYmFyICsgYmF6JS5odG1sJywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAnZmlsZTovLy9jOi9mb28vYmFyJTIwKyUyMGJheiUyNS5odG1sJywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICBwbGF0Zm9ybT0nY3lnd2luJywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICBjeWdwYXRoX3Jlc3VsdD0nYzpcXGZvb1xcYmFyICsgYmF6JS5odG1sXG4nKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICdmaWxlOi8vL0M6L2Zvby9iYXIlMjArJTIwYmF6JTI1Lmh0bWwnLAor
ICAgICAgICAgICAgICAgICAgICAgICAgIHBsYXRmb3JtPSdjeWd3aW4nKQorCisgICAgZGVmIHRl
c3Rfc3RvcF9jeWdwYXRoX3N1YnByb2Nlc3Moc2VsZik6CisgICAgICAgICMgQ2FsbCBjeWdwYXRo
IHRvIGVuc3VyZSB0aGUgc3VicHJvY2VzcyBpcyBydW5uaW5nLgorICAgICAgICBwYXRoLmN5Z3Bh
dGgoIi9jeWdkcml2ZS9jL2Zvby50eHQiKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocGF0aC5f
Q3lnUGF0aC5zaW5nbGV0b24uaXNfcnVubmluZygpKQorCisgICAgICAgICMgc3RvcCBpdC4KKyAg
ICAgICAgcGF0aC5fc3RvcF9jeWdwYXRoX3N1YnByb2Nlc3MoKQogCisgICAgICAgICMgZW5zdXJl
IHRoYXQgaXQncyBzdG9wcGVkLgorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHBhdGguX0N5Z1Bh
dGguc2luZ2xldG9uLmlzX3J1bm5pbmcoKSkKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoK
ICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL2RlZHVwbGljYXRlX3Rlc3RzX3VuaXR0ZXN0LnB5IGIvV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvZGVkdXBsaWNhdGVfdGVzdHNfdW5p
dHRlc3QucHkKaW5kZXggYmI5NjA0ZjVjNTAyYmFiZjcxMzJiMDAwNzA5OTIzOGVmNTU5OGE5YS4u
MzA5YmY4ZDllN2FiMWEwOGNhM2RkZGViODYxNDhjNmNhY2QxMzJhYyAxMDA2NDQKLS0tIGEvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvZGVkdXBsaWNhdGVfdGVzdHNf
dW5pdHRlc3QucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvZGVkdXBsaWNhdGVfdGVzdHNfdW5pdHRlc3QucHkKQEAgLTIwNSwzICsyMDUsNiBAQCBjbGFz
cyBMaXN0RHVwbGljYXRlc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBmb3IgZXhw
ZWN0ZWQsIGlucHV0cyBpbiB0ZXN0X2Nhc2VzOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bHMoZXhwZWN0ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWR1cGxpY2F0ZV90
ZXN0cy5nZXRfcmVsYXRpdmVfdGVzdF9wYXRoKCppbnB1dHMpKQorCitpZiBfX25hbWVfXyA9PSAn
X19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5IGIvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5CmluZGV4IDA0MmYwYWFm
Yzk3MWU0MDhmYWYxNTI4MmQ5NjgzMzIyMjI5NTc0OGIuLjUzYTMzNmExZjI4MWRiOTNiY2E4YWNh
MzVhMDhiNjVjODAxYjJhZDcgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkKQEAgLTMxMyw3ICszMTMsNyBAQCBjbGFz
cyBQb3J0KG9iamVjdCk6CiAgICAgICAgICAgICAgICAgcHJvdG9jb2wgPSAiaHR0cCIKICAgICAg
ICAgICAgIHJldHVybiAiJXM6Ly8xMjcuMC4wLjE6JXUvJXMiICUgKHByb3RvY29sLCBwb3J0LCBy
ZWxhdGl2ZV9wYXRoKQogCi0gICAgICAgIHJldHVybiBhYnNwYXRoX3RvX3VyaShvcy5wYXRoLmFi
c3BhdGgoZmlsZW5hbWUpLCBzZWxmLl9leGVjdXRpdmUpCisgICAgICAgIHJldHVybiBhYnNwYXRo
X3RvX3VyaShvcy5wYXRoLmFic3BhdGgoZmlsZW5hbWUpKQogCiAgICAgZGVmIHRlc3RzKHNlbGYs
IHBhdGhzKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSBsaXN0IG9mIHRlc3RzIGZvdW5kIChyZWxh
dGl2ZSB0byBsYXlvdXRfdGVzdHNfZGlyKCkuIiIiCkBAIC0zNjIsMTUgKzM2Miw4IEBAIGNsYXNz
IFBvcnQob2JqZWN0KToKICAgICAgICAgIiIiCiAgICAgICAgIHRlc3QgPSB1cmkKICAgICAgICAg
aWYgdXJpLnN0YXJ0c3dpdGgoImZpbGU6Ly8vIik6Ci0gICAgICAgICAgICAjIEZJWE1FOiBuZWVk
IGFuIGludmVyc2Ugb2YgdXJpX3RvX2Fic3BhdGgoKQotICAgICAgICAgICAgaWYgc3lzLnBsYXRm
b3JtID09ICd3aW4zMic6Ci0gICAgICAgICAgICAgICAgdGVzdCA9IHRlc3QucmVwbGFjZSgnZmls
ZTovLy8nLCAnJykKLSAgICAgICAgICAgICAgICB0ZXN0ID0gdGVzdC5yZXBsYWNlKCcvJywgJ1xc
JykKLSAgICAgICAgICAgIGVsaWYgc3lzLnBsYXRmb3JtID09ICdjeWd3aW4nOgotICAgICAgICAg
ICAgICAgIHRlc3QgPSAnL2N5Z2RyaXZlLycgKyB1cmlbOF0gKyAnLycgKyB1cmlbMTE6XQotICAg
ICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICB0ZXN0ID0gdGVzdC5yZXBsYWNlKCdmaWxl
Oi8vJywgJycpCi0gICAgICAgICAgICByZXR1cm4gc2VsZi5yZWxhdGl2ZV90ZXN0X2ZpbGVuYW1l
KHRlc3QpCisgICAgICAgICAgICBwcmVmaXggPSBhYnNwYXRoX3RvX3VyaShzZWxmLmxheW91dF90
ZXN0c19kaXIoKSkgKyAiLyIKKyAgICAgICAgICAgIHJldHVybiB0ZXN0W2xlbihwcmVmaXgpOl0K
IAogICAgICAgICBpZiB1cmkuc3RhcnRzd2l0aCgiaHR0cDovLzEyNy4wLjAuMTo4ODgwLyIpOgog
ICAgICAgICAgICAgIyB3ZWJzb2NrZXQgdGVzdHMKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZV91bml0dGVzdC5weSBiL1dlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZV91bml0dGVzdC5w
eQppbmRleCBkOWNiNDY3OGMzNWRkYjQ0OTY1MzM4YjFlNWUxNGYwMmIyOTM1MGQzLi5mNzUwZmJl
NGNmZTliYzIwYmU1NmRlZjcwNTQwNmZiY2RmMzQ4OTEwIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2VfdW5pdHRlc3QucHkKKysr
IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlX3Vu
aXR0ZXN0LnB5CkBAIC0zNCw3ICszNCw3IEBAIGltcG9ydCB0ZW1wZmlsZQogaW1wb3J0IHVuaXR0
ZXN0CiAKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IEV4ZWN1
dGl2ZSwgU2NyaXB0RXJyb3IKLWZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5wYXRoIGltcG9y
dCBhYnNwYXRoX3RvX3VyaQorZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtIGltcG9ydCBwYXRo
CiBmcm9tIHdlYmtpdHB5LnRoaXJkcGFydHkubW9jayBpbXBvcnQgTW9jawogCiAKQEAgLTIzMiw4
ICsyMzIsNyBAQCBjbGFzcyBQb3J0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIGxh
eW91dF90ZXN0X2RpciA9IHBvcnQubGF5b3V0X3Rlc3RzX2RpcigpCiAgICAgICAgIHRlc3RfZmls
ZSA9IG9zLnBhdGguam9pbihsYXlvdXRfdGVzdF9kaXIsICJmb28iLCAiYmFyLmh0bWwiKQogICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQuZmlsZW5hbWVfdG9fdXJpKHRlc3RfZmlsZSksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgYWJzcGF0aF90b191cmkodGVzdF9maWxlLCBFeGVjdXRp
dmUoKSkpCi0KKyAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmFic3BhdGhfdG9fdXJpKHRl
c3RfZmlsZSkpCiAKIAogY2xhc3MgVmlydHVhbFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgpkaWZm
IC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9j
aHJvbWl1bS5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvY2hyb21pdW0ucHkKaW5kZXggMWY3ODRkYzNiODc1MDc5M2Y2MWQ2OTM5MDY2ZjRhYjY3NDE2
NjkzNi4uMTRjMjRjMzVjOWZjZDVlZjI2OWQ4YjgzYzQ3Yjk4MDIxNjgwMDJhMiAxMDA2NDQKLS0t
IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1
bS5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L2Nocm9taXVtLnB5CkBAIC00NCw3ICs0NCw3IEBAIGltcG9ydCB0aW1lCiBpbXBvcnQgd2ViYnJv
d3NlcgogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBFeGVj
dXRpdmUKLWZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5wYXRoIGltcG9ydCBhYnNwYXRoX3Rv
X3VyaSwgY3lncGF0aAorZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLnBhdGggaW1wb3J0IGN5
Z3BhdGgKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmxheW91dF9wYWNrYWdlIGltcG9ydCB0
ZXN0X2V4cGVjdGF0aW9ucwogCiBpbXBvcnQgYmFzZQpAQCAtMzU1LDcgKzM1NSw3IEBAIGNsYXNz
IENocm9taXVtUG9ydChiYXNlLlBvcnQpOgogICAgICAgICAiIiJIYW5kbGVzIGZpbGVuYW1lIGNv
bnZlcnNpb24gZm9yIHN1YnByb2Nlc3MgY29tbWFuZCBsaW5lIGFyZ3MuIiIiCiAgICAgICAgICMg
U2VlIG5vdGUgYWJvdmUgaW4gZGlmZl9pbWFnZSgpIGZvciB3aHkgd2UgbmVlZCB0aGlzLgogICAg
ICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2N5Z3dpbic6Ci0gICAgICAgICAgICByZXR1cm4gY3ln
cGF0aChwYXRoLCBzZWxmLl9leGVjdXRpdmUpCisgICAgICAgICAgICByZXR1cm4gY3lncGF0aChw
YXRoKQogICAgICAgICByZXR1cm4gcGF0aAogCiAgICAgZGVmIF9wYXRoX3RvX2ltYWdlX2RpZmYo
c2VsZik6CkBAIC0zNzcsOCArMzc3LDcgQEAgY2xhc3MgQ2hyb21pdW1Ecml2ZXIoYmFzZS5Ecml2
ZXIpOgogICAgIGRlZiBfZHJpdmVyX2FyZ3Moc2VsZik6CiAgICAgICAgIGRyaXZlcl9hcmdzID0g
W10KICAgICAgICAgaWYgc2VsZi5faW1hZ2VfcGF0aDoKLSAgICAgICAgICAgICMgU2VlIG5vdGUg
YWJvdmUgaW4gZGlmZl9pbWFnZSgpIGZvciB3aHkgd2UgbmVlZAotICAgICAgICAgICAgIyBfY29u
dmVydF9wYXRoKCkuCisgICAgICAgICAgICAjIFNlZSBub3RlIGFib3ZlIGluIGRpZmZfaW1hZ2Uo
KSBmb3Igd2h5IHdlIG5lZWQgX2NvbnZlcnRfcGF0aCgpLgogICAgICAgICAgICAgZHJpdmVyX2Fy
Z3MuYXBwZW5kKCItLXBpeGVsLXRlc3RzPSIgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNlbGYuX3BvcnQuX2NvbnZlcnRfcGF0aChzZWxmLl9pbWFnZV9wYXRoKSkKIApkaWZmIC0t
Z2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJv
bWl1bV91bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvY2hyb21pdW1fdW5pdHRlc3QucHkKaW5kZXggZTM4NThmMGM0ZmM2NzJiMzg5YmM5
MTg4ZjlhZDYwNjhlMTFjZWU2Ni4uMmU5NDYxYTNmNDcwYWIxYTI4ZGY4ZWU4YTUyMzk3MmZjM2Y4
ZjUyOSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9jaHJvbWl1bV91bml0dGVzdC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3VuaXR0ZXN0LnB5CkBAIC0xNzYsNyAr
MTc2LDkgQEAgREVGRVIgTElOVVggV0lOIDogZmFzdC9qcy92ZXJ5LWdvb2QuanMgPSBUSU1FT1VU
IFBBU1MiIiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5fZXhpdF9jb2RlPUZh
bHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybl9zdGRlcnI9VHJ1ZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGVfb3V0cHV0PUZhbHNlKToKLSAgICAgICAg
ICAgICAgICByZXR1cm4gc2VsZi5fcmVzdWx0CisgICAgICAgICAgICAgICAgaWYgcmV0dXJuX2V4
aXRfY29kZToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3Jlc3VsdAorICAgICAg
ICAgICAgICAgIHJldHVybiAnJwogCiAgICAgICAgIG9wdGlvbnMgPSBFbXB0eU9wdGlvbnMoKQog
ICAgICAgICBwb3J0ID0gQ2hyb21pdW1Qb3J0VGVzdC5UZXN0TGludXhQb3J0KG9wdGlvbnMpCmRp
ZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L2h0dHBfbG9ja191bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvaHR0cF9sb2NrX3VuaXR0ZXN0LnB5CmluZGV4IGYyZTRjZTU3Y2JkMWEx
ZDA0NDIzYWYwNTZlOTYxMGYxMDc5NWUwZmEuLjg1Yzc2MGFjNWZhMDQzNjk5MWQ0ODYzODcxMjBj
ODdmYmQ2MmM5MDQgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvaHR0cF9sb2NrX3VuaXR0ZXN0LnB5CisrKyBiL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvaHR0cF9sb2NrX3VuaXR0ZXN0LnB5CkBA
IC00Myw3ICs0Myw3IEBAIGNsYXNzIEh0dHBMb2NrVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAK
ICAgICBkZWYgY2xlYW5fYWxsX2xvY2tmaWxlKHNlbGYpOgogICAgICAgICBpZiBvcy5wYXRoLmV4
aXN0cyhzZWxmLmd1YXJkX2xvY2tfZmlsZSk6Ci0gICAgICAgICAgICBvcy51bmxpbmsoZ3VhcmRf
bG9ja19maWxlKQorICAgICAgICAgICAgb3MudW5saW5rKHNlbGYuZ3VhcmRfbG9ja19maWxlKQog
ICAgICAgICBsb2NrX2xpc3QgPSBnbG9iLmdsb2Ioc2VsZi5sb2NrX2ZpbGVfcGF0aF9wcmVmaXgg
KyAnKicpCiAgICAgICAgIGZvciBmaWxlX25hbWUgaW4gbG9ja19saXN0OgogICAgICAgICAgICAg
b3MudW5saW5rKGZpbGVfbmFtZSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70946</attachid>
            <date>2010-10-15 19:53:26 -0700</date>
            <delta_ts>2010-10-18 15:44:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47220-20101015195325.patch</filename>
            <type>text/plain</type>
            <size>16790</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBlOWJkMzEwN2U1MTgzYTIxYThhMmFmNWE3NjE1YmU2ODI2M2RjMmQ3Li5lZjQ0NjJl
ZWNjOTM2NzI3OWEzMWMxYmZmNWE3YzY4NjcwYmY1M2M0IDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDI1ICsxLDI5IEBA
Ci0yMDEwLTEwLTEyICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgorMjAxMC0x
MC0xMyAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4KIAotICAgICAgICBSZXZp
ZXdlZCBieSBFcmljIFNlaWRlbC4KKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgUmUtc3VibWl0IGEgcmV2aXNlZCB2ZXJzaW9uIG9mIHI2OTYzOCAtIGVuYWJs
aW5nIG5ldy1ydW4td2Via2l0LXRlc3RzCisgICAgICAgIHVuZGVyIGN5Z3dpbi4gVGhlIGluaXRp
YWwgdmVyc2lvbiBoYWQgYSBidWcgaW4gYmFzZTp1cmlfdG9fdGVzdF9uYW1lCisgICAgICAgIHRo
YXQgd2FzIGNhdXNpbmcgdGVzdHMgdG8gZmFpbC4gVGhpcyB2ZXJzaW9uIGNvcnJlY3RzIHRoYXQg
YnVnLCBidXQKKyAgICAgICAgYWxzbyBtYWtlcyB0aGUgY29kZSBzYWZlciBieSBjYWxsaW5nIGN5
Z3BhdGggbW9yZSByZWxpYWJseSwgYW5kCisgICAgICAgIGxlYXZpbmcgYSBsb25nLXJ1bm5pbmcg
Y3lncGF0aCBwcm9jZXNzIG9wZW4uCiAKLSAgICAgICAgVGhpcyBwYXRjaCBlbmFibGVzIG5ldy1y
dW4td2Via2l0LXRlc3RzIChpbiBwYXJ0aWN1bGFyIHRoZQotICAgICAgICBjaHJvbWl1bS13aW4g
cG9ydCkgdG8gcnVuIHVuZGVyIEN5Z3dpbiBhcyB3ZWxsIGFzIFdpbjMyLiBNb3N0bHkKLSAgICAg
ICAgdGhpcyBqdXN0IHJlcXVpcmVkIHNvbWUgY29udmVyc2lvbnMgZnJvbSBjeWd3aW4gcGF0aHMg
dG8gV2luMzIKLSAgICAgICAgcGF0aHMgd2hlbiB3ZSBzcGF3biBvZmYgV2luMzIgYmluYXJpZXMg
bGlrZSB0ZXN0X3NoZWxsLgorICAgICAgICBUaGlzIHBhdGNoIGFsc28gY29ycmVjdHMgYSBjb3Vw
bGUgb2YgbWlub3IgYnVncyBpbiBodHRwX2xvY2tfdW5pdHRlc3QsCisgICAgICAgIGNocm9taXVt
X3VuaXR0ZXN0LCBhbmQgZGVkcHVsaWNhdGVfdGVzdHNfdW5pdHRlc3QgdGhhdCBzaG93ZWQgdXAK
KyAgICAgICAgd2hpbGUgdGVzdGluZyB0aGlzLgogCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzIyMAogCiAgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9jb21tb24vc3lzdGVtL3BhdGgucHk6Ci0gICAgICAgIC0gRXhwb3NlIHRoZSBjeWdwYXRoKCkg
ZnVuY3Rpb24gZm9yIHBhdGggY29udmVyc2lvbgotCi0gICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9zeXN0ZW0vcGF0aF91bml0dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9kZWR1cGxpY2F0ZV90ZXN0c191bml0dGVzdC5weToKICAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9kdW1w
X3JlbmRlcl90cmVlX3RocmVhZC5weToKLSAgICAgICAgLSBzaGlmdCBmaWxlbmFtZS0+dXJpIGNv
bnZlcnNpb24gaW4gdGhlIFRlc3RJbmZvIG9iamVjdHMgdG8gdGhlCi0gICAgICAgICAgZHVtcF9y
ZW5kZXJfdHJlZSB0aHJlYWQKLQogICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvYmFzZS5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L2Jhc2VfdW5pdHRlc3QucHk6CiAgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weToKLSAgICAgICAgLSB1c2UgY3lncGF0aCgpCisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV91bml0dGVz
dC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2h0dHBf
bG9ja191bml0dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9ydW5fd2Via2l0X3Rlc3RzLnB5OgogCiAyMDEwLTEwLTEyICBZdXRhIEtpdGFtdXJhICA8eXV0
YWtAY2hyb21pdW0ub3JnPgogCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2NvbW1vbi9zeXN0ZW0vcGF0aC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL3N5c3RlbS9wYXRoLnB5CmluZGV4IDUyODIxMGEwNjM5MTg5ODQzNmU2NDYxNTQ2OWU2
ODhmZWRmYzEzZmEuLjMzNDY1NTIzZGMzYjMyMTQyN2Q3ZjY4OWQ1YTk3NWZiZTRmZDA5NjUgMTAw
NjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9wYXRo
LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9wYXRo
LnB5CkBAIC0yNywzMCArMjcsODcgQEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogIiIiZ2VuZXJpYyByb3V0
aW5lcyB0byBjb252ZXJ0IHBsYXRmb3JtLXNwZWNpZmljIHBhdGhzIHRvIFVSSXMuIiIiCitpbXBv
cnQgYXRleGl0CitpbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IHN5cworaW1wb3J0IHRocmVhZGlu
ZwogaW1wb3J0IHVybGxpYgogCiAKLWRlZiBhYnNwYXRoX3RvX3VyaShwYXRoLCBleGVjdXRpdmUs
IHBsYXRmb3JtPU5vbmUpOgorZGVmIGFic3BhdGhfdG9fdXJpKHBhdGgsIHBsYXRmb3JtPU5vbmUp
OgogICAgICIiIkNvbnZlcnRzIGEgcGxhdGZvcm0tc3BlY2lmaWMgYWJzb2x1dGUgcGF0aCB0byBh
IGZpbGU6IFVSTC4iIiIKICAgICBpZiBwbGF0Zm9ybSBpcyBOb25lOgogICAgICAgICBwbGF0Zm9y
bSA9IHN5cy5wbGF0Zm9ybQotICAgIHJldHVybiAiZmlsZToiICsgX2VzY2FwZShfY29udmVydF9w
YXRoKHBhdGgsIGV4ZWN1dGl2ZSwgcGxhdGZvcm0pKQorICAgIHJldHVybiAiZmlsZToiICsgX2Vz
Y2FwZShfY29udmVydF9wYXRoKHBhdGgsIHBsYXRmb3JtKSkKIAogCi1kZWYgY3lncGF0aChwYXRo
LCBleGVjdXRpdmUpOgorIyBOb3RlIHRoYXQgdGhpcyBvYmplY3QgaXMgbm90IHRocmVhZHNhZmUg
YW5kIG11c3Qgb25seSBiZSBjYWxsZWQKKyMgZnJvbSBtdWx0aXBsZSB0aHJlYWRzIHVuZGVyIHBy
b3RlY3Rpb24gb2YgYSBsb2NrIChhcyBpcyBkb25lIGluIGN5Z3BhdGgoKSkKK2NsYXNzIF9DeWdQ
YXRoKG9iamVjdCk6CisgICAgIiIiTWFuYWdlcyBhIGxvbmctcnVubmluZyAnY3lncGF0aCcgcHJv
Y2VzcyBmb3IgZmlsZSBjb252ZXJzaW9uLiIiIgorICAgIGxvY2sgPSBOb25lCisgICAgc2luZ2xl
dG9uID0gTm9uZQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBzdG9wX2N5Z3BhdGhfc3Vi
cHJvY2VzcygpOgorICAgICAgICBpZiBfQ3lnUGF0aC5sb2NrOgorICAgICAgICAgICAgX0N5Z1Bh
dGgubG9jay5hY3F1aXJlKCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpZiBf
Q3lnUGF0aC5zaW5nbGV0b246CisgICAgICAgICAgICAgICAgICAgIF9DeWdQYXRoLnNpbmdsZXRv
bi5zdG9wKCkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgX0N5Z1BhdGgu
bG9jay5yZWxlYXNlKCkKKworICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgc2VsZi5f
Y2hpbGRfcHJvY2VzcyA9IE5vbmUKKworICAgIGRlZiBzdGFydChzZWxmKToKKyAgICAgICAgYXNz
ZXJ0KHNlbGYuX2NoaWxkX3Byb2Nlc3MgaXMgTm9uZSkKKyAgICAgICAgYXJncyA9IFsnY3lncGF0
aCcsICctZicsICctJywgJy13YSddCisgICAgICAgIHNlbGYuX2NoaWxkX3Byb2Nlc3MgPSBzdWJw
cm9jZXNzLlBvcGVuKGFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0ZGluPXN1YnByb2Nlc3MuUElQRSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VfZmRzPUZhbHNlKQor
CisgICAgZGVmIGlzX3J1bm5pbmcoc2VsZik6CisgICAgICAgIGlmIG5vdCBzZWxmLl9jaGlsZF9w
cm9jZXNzOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHJldHVybiBzZWxmLl9j
aGlsZF9wcm9jZXNzLnJldHVybmNvZGUgaXMgTm9uZQorCisgICAgZGVmIHN0b3Aoc2VsZik6Cisg
ICAgICAgIGlmIHNlbGYuX2NoaWxkX3Byb2Nlc3M6CisgICAgICAgICAgICBzZWxmLl9jaGlsZF9w
cm9jZXNzLnN0ZGluLmNsb3NlKCkKKyAgICAgICAgICAgIHNlbGYuX2NoaWxkX3Byb2Nlc3Mud2Fp
dCgpCisgICAgICAgIHNlbGYuX2NoaWxkX3Byb2Nlc3MgPSBOb25lCisKKyAgICBkZWYgY29udmVy
dChzZWxmLCBwYXRoKToKKyAgICAgICAgaWYgbm90IHNlbGYuaXNfcnVubmluZygpOgorICAgICAg
ICAgICAgc2VsZi5zdGFydCgpCisgICAgICAgIHNlbGYuX2NoaWxkX3Byb2Nlc3Muc3RkaW4ud3Jp
dGUoIiVzXHJcbiIgJSBwYXRoKQorICAgICAgICBzZWxmLl9jaGlsZF9wcm9jZXNzLnN0ZGluLmZs
dXNoKCkKKyAgICAgICAgcmV0dXJuIHNlbGYuX2NoaWxkX3Byb2Nlc3Muc3Rkb3V0LnJlYWRsaW5l
KCkucnN0cmlwKCkKKworCitkZWYgY3lncGF0aChwYXRoKToKICAgICAiIiJDb252ZXJ0cyBhIGN5
Z3dpbiBwYXRoIHRvIFdpbmRvd3MgcGF0aC4iIiIKLSAgICAjIEZJWE1FOiB0aGlzIG1heSBub3Qg
YmUgY29ycmVjdCBpbiBldmVyeSBzaXR1YXRpb24sIGJ1dCBmb3JraW5nCi0gICAgIyBjeWdwYXRo
IGlzIHZlcnkgc2xvdy4gTW9yZSBpbXBvcnRhbnRseSwgdGhlcmUgaXMgYSBidWcgaW4gUHl0aG9u
Ci0gICAgIyB3aGVyZSBsYXVuY2hpbmcgc3VicHJvY2Vzc2VzIGFuZCBjb21tdW5pY2F0aW5nIHdp
dGggUElQRXMgKHdoaWNoCi0gICAgIyBpcyB3aGF0IHJ1bl9jb21tYW5kKCkgZG9lcykgY2FuIGxl
YWQgdG8gZGVhZGxvY2tzIHdoZW4gcnVubmluZyBpbgotICAgICMgbXVsdGlwbGUgdGhyZWFkcy4K
LSAgICBpZiBwYXRoLnN0YXJ0c3dpdGgoIi9jeWdkcml2ZSIpOgotICAgICAgICBwYXRoID0gcGF0
aFsxMF0gKyAiOiIgKyBwYXRoWzExOl0KLSAgICAgICAgcGF0aCA9IHBhdGgucmVwbGFjZSgiLyIs
ICJcXCIpCi0gICAgICAgIHJldHVybiBwYXRoCi0gICAgcmV0dXJuIGV4ZWN1dGl2ZS5ydW5fY29t
bWFuZChbJ2N5Z3BhdGgnLCAnLXdhJywgcGF0aF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkZWNvZGVfb3V0cHV0PUZhbHNlKS5yc3RyaXAoKQorICAgIGlmIG5vdCBfQ3lnUGF0
aC5sb2NrOgorICAgICAgICBfQ3lnUGF0aC5sb2NrID0gdGhyZWFkaW5nLkxvY2soKQorCisgICAg
X0N5Z1BhdGgubG9jay5hY3F1aXJlKCkKKyAgICBpZiBub3QgX0N5Z1BhdGguc2luZ2xldG9uOgor
ICAgICAgICBfQ3lnUGF0aC5zaW5nbGV0b24gPSBfQ3lnUGF0aCgpCisgICAgICAgICMgTWFrZSBz
dXJlIHRoZSBjeWdwYXRoIHN1YnByb2Nlc3MgYWx3YXlzIGdldHMgc2h1dGRvd24gY2xlYW5seS4K
KyAgICAgICAgYXRleGl0LnJlZ2lzdGVyKF9DeWdQYXRoLnN0b3BfY3lncGF0aF9zdWJwcm9jZXNz
KQorCisgICAgcmVzdWx0ID0gTm9uZQorICAgIHRyeToKKyAgICAgICAgcmVzdWx0ID0gX0N5Z1Bh
dGguc2luZ2xldG9uLmNvbnZlcnQocGF0aCkKKyAgICBmaW5hbGx5OgorICAgICAgICBfQ3lnUGF0
aC5sb2NrLnJlbGVhc2UoKQorCisgICAgcmV0dXJuIHJlc3VsdAorCisKIAogCiBkZWYgX2VzY2Fw
ZShwYXRoKToKQEAgLTYyLDEyICsxMTksMTIgQEAgZGVmIF9lc2NhcGUocGF0aCk6CiAgICAgcmV0
dXJuIHVybGxpYi5xdW90ZShwYXRoLCBzYWZlPScvKzonKQogCiAKLWRlZiBfY29udmVydF9wYXRo
KHBhdGgsIGV4ZWN1dGl2ZSwgcGxhdGZvcm0pOgorZGVmIF9jb252ZXJ0X3BhdGgocGF0aCwgcGxh
dGZvcm0pOgogICAgICIiIkhhbmRsZXMgYW55IG9zLXNwZWNpZmljIHBhdGggc2VwYXJhdG9ycywg
bWFwcGluZ3MsIGV0Yy4iIiIKICAgICBpZiBwbGF0Zm9ybSA9PSAnd2luMzInOgogICAgICAgICBy
ZXR1cm4gX3dpbnBhdGhfdG9fdXJpKHBhdGgpCiAgICAgaWYgcGxhdGZvcm0gPT0gJ2N5Z3dpbic6
Ci0gICAgICAgIHJldHVybiBfd2lucGF0aF90b191cmkoY3lncGF0aChwYXRoLCBleGVjdXRpdmUp
KQorICAgICAgICByZXR1cm4gX3dpbnBhdGhfdG9fdXJpKGN5Z3BhdGgocGF0aCkpCiAgICAgcmV0
dXJuIF91bml4eXBhdGhfdG9fdXJpKHBhdGgpCiAKIApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3BhdGhfdW5pdHRlc3QucHkgYi9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vcGF0aF91bml0dGVzdC5weQppbmRl
eCAzYzEwMjFkY2FkN2Q1YTdhOGVkMjQ1ZDM0ZGZiMTE1NzhkYTRiYTU4Li4wNzJiZDg4ZjYyNThl
YjgyYjkxMjMwNmVhYTQ4YjEzMWFhOGIzY2RhIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vcGF0aF91bml0dGVzdC5weQorKysgYi9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vcGF0aF91bml0dGVzdC5weQpAQCAt
MjcsMzkgKzI3LDMxIEBACiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIGltcG9ydCB1bml0dGVzdAoraW1wb3J0
IHN5cwogCiBpbXBvcnQgcGF0aAogCi0KIGNsYXNzIEFic3BhdGhUZXN0KHVuaXR0ZXN0LlRlc3RD
YXNlKToKLSAgICBkZWYgcnVuX2NvbW1hbmQoc2VsZiwgYXJncywgKiprd2FyZ3MpOgotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGFyZ3NbMF0sICdjeWdwYXRoJykKLSAgICAgICAgcmV0dXJuIHNl
bGYuY3lncGF0aF9yZXN1bHQKLQogICAgIGRlZiBhc3NlcnRNYXRjaChzZWxmLCB0ZXN0X3BhdGgs
IGV4cGVjdGVkX3VyaSwKLSAgICAgICAgICAgICAgICAgICAgcGxhdGZvcm0sIGN5Z3BhdGhfcmVz
dWx0PU5vbmUpOgotICAgICAgICBpZiBwbGF0Zm9ybSA9PSAnY3lnd2luJzoKLSAgICAgICAgICAg
IHNlbGYuY3lncGF0aF9yZXN1bHQgPSBjeWdwYXRoX3Jlc3VsdAotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHBhdGguYWJzcGF0aF90b191cmkodGVzdF9wYXRoLCBleGVjdXRpdmU9c2VsZiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYXRmb3JtPXBsYXRm
b3JtKSwKKyAgICAgICAgICAgICAgICAgICAgcGxhdGZvcm09Tm9uZSk6CisgICAgICAgIGlmIHBs
YXRmb3JtID09ICdjeWd3aW4nIGFuZCBzeXMucGxhdGZvcm0gIT0gJ2N5Z3dpbic6CisgICAgICAg
ICAgICByZXR1cm4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXRoLmFic3BhdGhfdG9fdXJp
KHRlc3RfcGF0aCwgcGxhdGZvcm09cGxhdGZvcm0pLAogICAgICAgICAgICAgICAgICAgICAgICAg
IGV4cGVjdGVkX3VyaSkKIAogICAgIGRlZiB0ZXN0X2Fic3BhdGhfdG9fdXJpX2N5Z3dpbihzZWxm
KToKICAgICAgICAgc2VsZi5hc3NlcnRNYXRjaCgnL2N5Z2RyaXZlL2MvZm9vL2Jhci5odG1sJywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAnZmlsZTovLy9jOi9mb28vYmFyLmh0bWwnLAotICAg
ICAgICAgICAgICAgICAgICAgICAgIHBsYXRmb3JtPSdjeWd3aW4nLAotICAgICAgICAgICAgICAg
ICAgICAgICAgIGN5Z3BhdGhfcmVzdWx0PSdjOlxcZm9vXFxiYXIuaHRtbFxuJykKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAnZmlsZTovLy9DOi9mb28vYmFyLmh0bWwnLAorICAgICAgICAgICAg
ICAgICAgICAgICAgIHBsYXRmb3JtPSdjeWd3aW4nKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHBhdGguYWJzcGF0aF90b191cmkoJy9jeWdkcml2ZS9jL2Zvby9iYXIuaHRtbCcsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjdXRpdmU9c2VsZiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYXRmb3JtPSdjeWd3
aW4nKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAnZmlsZTovLy9jOi9mb28vYmFyLmh0bWwn
KQorICAgICAgICAgICAgICAgICAgICAgICAgICdmaWxlOi8vL0M6L2Zvby9iYXIuaHRtbCcpCiAK
ICAgICBkZWYgdGVzdF9hYnNwYXRoX3RvX3VyaV9kYXJ3aW4oc2VsZik6CiAgICAgICAgIHNlbGYu
YXNzZXJ0TWF0Y2goJy9mb28vYmFyLmh0bWwnLAogICAgICAgICAgICAgICAgICAgICAgICAgICdm
aWxlOi8vL2Zvby9iYXIuaHRtbCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhdGZvcm09
J2RhcndpbicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGF0aC5hYnNwYXRoX3RvX3VyaSgi
L2Zvby9iYXIuaHRtbCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBleGVjdXRpdmU9c2VsZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHBsYXRmb3JtPSdkYXJ3aW4nKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAi
ZmlsZTovLy9mb28vYmFyLmh0bWwiKQogCkBAIC02OCw3ICs2MCw2IEBAIGNsYXNzIEFic3BhdGhU
ZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgICAgICAgICAgICAgICAgICAnZmlsZTov
Ly9mb28vYmFyLmh0bWwnLAogICAgICAgICAgICAgICAgICAgICAgICAgIHBsYXRmb3JtPSdkYXJ3
aW4nKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhdGguYWJzcGF0aF90b191cmkoIi9mb28v
YmFyLmh0bWwiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZXhlY3V0aXZlPXNlbGYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwbGF0Zm9ybT0nbGludXgyJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGU6
Ly8vZm9vL2Jhci5odG1sIikKIApAQCAtNzcsNyArNjgsNiBAQCBjbGFzcyBBYnNwYXRoVGVzdCh1
bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpbGU6Ly8vYzov
Zm9vL2Jhci5odG1sJywKICAgICAgICAgICAgICAgICAgICAgICAgICBwbGF0Zm9ybT0nd2luMzIn
KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhdGguYWJzcGF0aF90b191cmkoImM6XFxmb29c
XGJhci5odG1sIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGV4ZWN1dGl2ZT1zZWxmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcGxhdGZvcm09J3dpbjMyJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGU6
Ly8vYzovZm9vL2Jhci5odG1sIikKIApAQCAtOTEsMTAgKzgxLDE5IEBAIGNsYXNzIEFic3BhdGhU
ZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgICAgICAjIE5vdGUgdGhhdCB5b3UgY2FuJ3Qg
aGF2ZSAnPycgaW4gYSBmaWxlbmFtZSBvbiB3aW5kb3dzLgogICAgICAgICBzZWxmLmFzc2VydE1h
dGNoKCcvY3lnZHJpdmUvYy9mb28vYmFyICsgYmF6JS5odG1sJywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAnZmlsZTovLy9jOi9mb28vYmFyJTIwKyUyMGJheiUyNS5odG1sJywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICBwbGF0Zm9ybT0nY3lnd2luJywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICBjeWdwYXRoX3Jlc3VsdD0nYzpcXGZvb1xcYmFyICsgYmF6JS5odG1sXG4nKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICdmaWxlOi8vL0M6L2Zvby9iYXIlMjArJTIwYmF6JTI1Lmh0bWwn
LAorICAgICAgICAgICAgICAgICAgICAgICAgIHBsYXRmb3JtPSdjeWd3aW4nKQorCisgICAgZGVm
IHRlc3Rfc3RvcF9jeWdwYXRoX3N1YnByb2Nlc3Moc2VsZik6CisgICAgICAgICMgQ2FsbCBjeWdw
YXRoIHRvIGVuc3VyZSB0aGUgc3VicHJvY2VzcyBpcyBydW5uaW5nLgorICAgICAgICBwYXRoLmN5
Z3BhdGgoIi9jeWdkcml2ZS9jL2Zvby50eHQiKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocGF0
aC5fQ3lnUGF0aC5zaW5nbGV0b24uaXNfcnVubmluZygpKQorCisgICAgICAgICMgc3RvcCBpdC4K
KyAgICAgICAgcGF0aC5fQ3lnUGF0aC5zdG9wX2N5Z3BhdGhfc3VicHJvY2VzcygpCiAKKyAgICAg
ICAgIyBlbnN1cmUgdGhhdCBpdCdzIHN0b3BwZWQuCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uo
cGF0aC5fQ3lnUGF0aC5zaW5nbGV0b24uaXNfcnVubmluZygpKQogCiBpZiBfX25hbWVfXyA9PSAn
X19tYWluX18nOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvZGVkdXBsaWNhdGVfdGVzdHNfdW5pdHRlc3Qu
cHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9kZWR1cGxpY2F0
ZV90ZXN0c191bml0dGVzdC5weQppbmRleCBiYjk2MDRmNWM1MDJiYWJmNzEzMmIwMDA3MDk5MjM4
ZWY1NTk4YTlhLi4zMDliZjhkOWU3YWIxYTA4Y2EzZGRkZWI4NjE0OGM2Y2FjZDEzMmFjIDEwMDY0
NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9kZWR1cGxp
Y2F0ZV90ZXN0c191bml0dGVzdC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9kZWR1cGxpY2F0ZV90ZXN0c191bml0dGVzdC5weQpAQCAtMjA1LDMgKzIw
NSw2IEBAIGNsYXNzIExpc3REdXBsaWNhdGVzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAg
ICAgIGZvciBleHBlY3RlZCwgaW5wdXRzIGluIHRlc3RfY2FzZXM6CiAgICAgICAgICAgICBzZWxm
LmFzc2VydEVxdWFscyhleHBlY3RlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRl
ZHVwbGljYXRlX3Rlc3RzLmdldF9yZWxhdGl2ZV90ZXN0X3BhdGgoKmlucHV0cykpCisKK2lmIF9f
bmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkgYi9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkKaW5k
ZXggMDQyZjBhYWZjOTcxZTQwOGZhZjE1MjgyZDk2ODMzMjIyMjk1NzQ4Yi4uNTNhMzM2YTFmMjgx
ZGI5M2JjYThhY2EzNWEwOGI2NWM4MDFiMmFkNyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5CisrKyBiL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQpAQCAtMzEzLDcgKzMx
Myw3IEBAIGNsYXNzIFBvcnQob2JqZWN0KToKICAgICAgICAgICAgICAgICBwcm90b2NvbCA9ICJo
dHRwIgogICAgICAgICAgICAgcmV0dXJuICIlczovLzEyNy4wLjAuMToldS8lcyIgJSAocHJvdG9j
b2wsIHBvcnQsIHJlbGF0aXZlX3BhdGgpCiAKLSAgICAgICAgcmV0dXJuIGFic3BhdGhfdG9fdXJp
KG9zLnBhdGguYWJzcGF0aChmaWxlbmFtZSksIHNlbGYuX2V4ZWN1dGl2ZSkKKyAgICAgICAgcmV0
dXJuIGFic3BhdGhfdG9fdXJpKG9zLnBhdGguYWJzcGF0aChmaWxlbmFtZSkpCiAKICAgICBkZWYg
dGVzdHMoc2VsZiwgcGF0aHMpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIGxpc3Qgb2YgdGVzdHMg
Zm91bmQgKHJlbGF0aXZlIHRvIGxheW91dF90ZXN0c19kaXIoKS4iIiIKQEAgLTM2MiwxNSArMzYy
LDggQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAgICAgICAiIiIKICAgICAgICAgdGVzdCA9IHVy
aQogICAgICAgICBpZiB1cmkuc3RhcnRzd2l0aCgiZmlsZTovLy8iKToKLSAgICAgICAgICAgICMg
RklYTUU6IG5lZWQgYW4gaW52ZXJzZSBvZiB1cmlfdG9fYWJzcGF0aCgpCi0gICAgICAgICAgICBp
ZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKLSAgICAgICAgICAgICAgICB0ZXN0ID0gdGVzdC5y
ZXBsYWNlKCdmaWxlOi8vLycsICcnKQotICAgICAgICAgICAgICAgIHRlc3QgPSB0ZXN0LnJlcGxh
Y2UoJy8nLCAnXFwnKQotICAgICAgICAgICAgZWxpZiBzeXMucGxhdGZvcm0gPT0gJ2N5Z3dpbic6
Ci0gICAgICAgICAgICAgICAgdGVzdCA9ICcvY3lnZHJpdmUvJyArIHVyaVs4XSArICcvJyArIHVy
aVsxMTpdCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHRlc3QgPSB0ZXN0LnJl
cGxhY2UoJ2ZpbGU6Ly8nLCAnJykKLSAgICAgICAgICAgIHJldHVybiBzZWxmLnJlbGF0aXZlX3Rl
c3RfZmlsZW5hbWUodGVzdCkKKyAgICAgICAgICAgIHByZWZpeCA9IGFic3BhdGhfdG9fdXJpKHNl
bGYubGF5b3V0X3Rlc3RzX2RpcigpKSArICIvIgorICAgICAgICAgICAgcmV0dXJuIHRlc3RbbGVu
KHByZWZpeCk6XQogCiAgICAgICAgIGlmIHVyaS5zdGFydHN3aXRoKCJodHRwOi8vMTI3LjAuMC4x
Ojg4ODAvIik6CiAgICAgICAgICAgICAjIHdlYnNvY2tldCB0ZXN0cwpkaWZmIC0tZ2l0IGEvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlX3VuaXR0ZXN0
LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNl
X3VuaXR0ZXN0LnB5CmluZGV4IGQ5Y2I0Njc4YzM1ZGRiNDQ5NjUzMzhiMWU1ZTE0ZjAyYjI5MzUw
ZDMuLmY3NTBmYmU0Y2ZlOWJjMjBiZTU2ZGVmNzA1NDA2ZmJjZGYzNDg5MTAgMTAwNjQ0Ci0tLSBh
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZV91bml0
dGVzdC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L2Jhc2VfdW5pdHRlc3QucHkKQEAgLTM0LDcgKzM0LDcgQEAgaW1wb3J0IHRlbXBmaWxlCiBp
bXBvcnQgdW5pdHRlc3QKIAogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBp
bXBvcnQgRXhlY3V0aXZlLCBTY3JpcHRFcnJvcgotZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVt
LnBhdGggaW1wb3J0IGFic3BhdGhfdG9fdXJpCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0g
aW1wb3J0IHBhdGgKIGZyb20gd2Via2l0cHkudGhpcmRwYXJ0eS5tb2NrIGltcG9ydCBNb2NrCiAK
IApAQCAtMjMyLDggKzIzMiw3IEBAIGNsYXNzIFBvcnRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToK
ICAgICAgICAgbGF5b3V0X3Rlc3RfZGlyID0gcG9ydC5sYXlvdXRfdGVzdHNfZGlyKCkKICAgICAg
ICAgdGVzdF9maWxlID0gb3MucGF0aC5qb2luKGxheW91dF90ZXN0X2RpciwgImZvbyIsICJiYXIu
aHRtbCIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5maWxlbmFtZV90b191cmkodGVz
dF9maWxlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBhYnNwYXRoX3RvX3VyaSh0ZXN0X2Zp
bGUsIEV4ZWN1dGl2ZSgpKSkKLQorICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguYWJzcGF0
aF90b191cmkodGVzdF9maWxlKSkKIAogCiBjbGFzcyBWaXJ0dWFsVGVzdCh1bml0dGVzdC5UZXN0
Q2FzZSk6CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L2Nocm9taXVtLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weQppbmRleCAxZjc4NGRjM2I4NzUwNzkzZjYxZDY5Mzkw
NjZmNGFiNjc0MTY2OTM2Li4xNGMyNGMzNWM5ZmNkNWVmMjY5ZDhiODNjNDdiOTgwMjE2ODAwMmEy
IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L2Nocm9taXVtLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkKQEAgLTQ0LDcgKzQ0LDcgQEAgaW1wb3J0IHRpbWUKIGlt
cG9ydCB3ZWJicm93c2VyCiAKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUg
aW1wb3J0IEV4ZWN1dGl2ZQotZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLnBhdGggaW1wb3J0
IGFic3BhdGhfdG9fdXJpLCBjeWdwYXRoCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ucGF0
aCBpbXBvcnQgY3lncGF0aAogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubGF5b3V0X3BhY2th
Z2UgaW1wb3J0IHRlc3RfZXhwZWN0YXRpb25zCiAKIGltcG9ydCBiYXNlCkBAIC0zNTUsNyArMzU1
LDcgQEAgY2xhc3MgQ2hyb21pdW1Qb3J0KGJhc2UuUG9ydCk6CiAgICAgICAgICIiIkhhbmRsZXMg
ZmlsZW5hbWUgY29udmVyc2lvbiBmb3Igc3VicHJvY2VzcyBjb21tYW5kIGxpbmUgYXJncy4iIiIK
ICAgICAgICAgIyBTZWUgbm90ZSBhYm92ZSBpbiBkaWZmX2ltYWdlKCkgZm9yIHdoeSB3ZSBuZWVk
IHRoaXMuCiAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnY3lnd2luJzoKLSAgICAgICAgICAg
IHJldHVybiBjeWdwYXRoKHBhdGgsIHNlbGYuX2V4ZWN1dGl2ZSkKKyAgICAgICAgICAgIHJldHVy
biBjeWdwYXRoKHBhdGgpCiAgICAgICAgIHJldHVybiBwYXRoCiAKICAgICBkZWYgX3BhdGhfdG9f
aW1hZ2VfZGlmZihzZWxmKToKQEAgLTM3Nyw4ICszNzcsNyBAQCBjbGFzcyBDaHJvbWl1bURyaXZl
cihiYXNlLkRyaXZlcik6CiAgICAgZGVmIF9kcml2ZXJfYXJncyhzZWxmKToKICAgICAgICAgZHJp
dmVyX2FyZ3MgPSBbXQogICAgICAgICBpZiBzZWxmLl9pbWFnZV9wYXRoOgotICAgICAgICAgICAg
IyBTZWUgbm90ZSBhYm92ZSBpbiBkaWZmX2ltYWdlKCkgZm9yIHdoeSB3ZSBuZWVkCi0gICAgICAg
ICAgICAjIF9jb252ZXJ0X3BhdGgoKS4KKyAgICAgICAgICAgICMgU2VlIG5vdGUgYWJvdmUgaW4g
ZGlmZl9pbWFnZSgpIGZvciB3aHkgd2UgbmVlZCBfY29udmVydF9wYXRoKCkuCiAgICAgICAgICAg
ICBkcml2ZXJfYXJncy5hcHBlbmQoIi0tcGl4ZWwtdGVzdHM9IiArCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2VsZi5fcG9ydC5fY29udmVydF9wYXRoKHNlbGYuX2ltYWdlX3BhdGgp
KQogCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L2Nocm9taXVtX3VuaXR0ZXN0LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV91bml0dGVzdC5weQppbmRleCBlMzg1OGYwYzRm
YzY3MmIzODliYzkxODhmOWFkNjA2OGUxMWNlZTY2Li4yZTk0NjFhM2Y0NzBhYjFhMjhkZjhlZThh
NTIzOTcyZmMzZjhmNTI5IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3VuaXR0ZXN0LnB5CisrKyBiL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fdW5pdHRlc3QucHkK
QEAgLTE3Niw3ICsxNzYsOSBAQCBERUZFUiBMSU5VWCBXSU4gOiBmYXN0L2pzL3ZlcnktZ29vZC5q
cyA9IFRJTUVPVVQgUEFTUyIiIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybl9l
eGl0X2NvZGU9RmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuX3N0ZGVy
cj1UcnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY29kZV9vdXRwdXQ9RmFsc2Up
OgotICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9yZXN1bHQKKyAgICAgICAgICAgICAgICBp
ZiByZXR1cm5fZXhpdF9jb2RlOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fcmVz
dWx0CisgICAgICAgICAgICAgICAgcmV0dXJuICcnCiAKICAgICAgICAgb3B0aW9ucyA9IEVtcHR5
T3B0aW9ucygpCiAgICAgICAgIHBvcnQgPSBDaHJvbWl1bVBvcnRUZXN0LlRlc3RMaW51eFBvcnQo
b3B0aW9ucykKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvaHR0cF9sb2NrX3VuaXR0ZXN0LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9odHRwX2xvY2tfdW5pdHRlc3QucHkKaW5kZXggZjJl
NGNlNTdjYmQxYTFkMDQ0MjNhZjA1NmU5NjEwZjEwNzk1ZTBmYS4uODVjNzYwYWM1ZmEwNDM2OTkx
ZDQ4NjM4NzEyMGM4N2ZiZDYyYzkwNCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9odHRwX2xvY2tfdW5pdHRlc3QucHkKKysrIGIvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9odHRwX2xvY2tfdW5p
dHRlc3QucHkKQEAgLTQzLDcgKzQzLDcgQEAgY2xhc3MgSHR0cExvY2tUZXN0KHVuaXR0ZXN0LlRl
c3RDYXNlKToKIAogICAgIGRlZiBjbGVhbl9hbGxfbG9ja2ZpbGUoc2VsZik6CiAgICAgICAgIGlm
IG9zLnBhdGguZXhpc3RzKHNlbGYuZ3VhcmRfbG9ja19maWxlKToKLSAgICAgICAgICAgIG9zLnVu
bGluayhndWFyZF9sb2NrX2ZpbGUpCisgICAgICAgICAgICBvcy51bmxpbmsoc2VsZi5ndWFyZF9s
b2NrX2ZpbGUpCiAgICAgICAgIGxvY2tfbGlzdCA9IGdsb2IuZ2xvYihzZWxmLmxvY2tfZmlsZV9w
YXRoX3ByZWZpeCArICcqJykKICAgICAgICAgZm9yIGZpbGVfbmFtZSBpbiBsb2NrX2xpc3Q6CiAg
ICAgICAgICAgICBvcy51bmxpbmsoZmlsZV9uYW1lKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71094</attachid>
            <date>2010-10-18 15:44:43 -0700</date>
            <delta_ts>2010-10-18 17:19:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47220-20101018154442.patch</filename>
            <type>text/plain</type>
            <size>16864</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA5ZjY4ZTNlZDExNzVhNTI0Y2MyOTI3MzJlZjlmNThjMTJiNzNmZjkyLi4xZmU4NWM0
ZTczYzFhZjJkMTAwYWU0OGRiNDBkZWIyNmQ4NjliODYyIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAK
KzIwMTAtMTAtMTggIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmUtc3VibWl0IGEgcmV2
aXNlZCB2ZXJzaW9uIG9mIHI2OTYzOCAtIGVuYWJsaW5nIG5ldy1ydW4td2Via2l0LXRlc3RzCisg
ICAgICAgIHVuZGVyIGN5Z3dpbi4gVGhlIGluaXRpYWwgdmVyc2lvbiBoYWQgYSBidWcgaW4gYmFz
ZTp1cmlfdG9fdGVzdF9uYW1lCisgICAgICAgIHRoYXQgd2FzIGNhdXNpbmcgdGVzdHMgdG8gZmFp
bC4gVGhpcyB2ZXJzaW9uIGNvcnJlY3RzIHRoYXQgYnVnLCBidXQKKyAgICAgICAgYWxzbyBtYWtl
cyB0aGUgY29kZSBzYWZlciBieSBjYWxsaW5nIGN5Z3BhdGggbW9yZSByZWxpYWJseSwgYW5kCisg
ICAgICAgIGxlYXZpbmcgYSBsb25nLXJ1bm5pbmcgY3lncGF0aCBwcm9jZXNzIG9wZW4uCisKKyAg
ICAgICAgVGhpcyBwYXRjaCBhbHNvIGNvcnJlY3RzIGEgY291cGxlIG9mIG1pbm9yIGJ1Z3MgaW4g
aHR0cF9sb2NrX3VuaXR0ZXN0LAorICAgICAgICBjaHJvbWl1bV91bml0dGVzdCwgYW5kIGRlZHB1
bGljYXRlX3Rlc3RzX3VuaXR0ZXN0IHRoYXQgc2hvd2VkIHVwCisgICAgICAgIHdoaWxlIHRlc3Rp
bmcgdGhpcy4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NDcyMjAKKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9wYXRo
LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9wYXRoX3VuaXR0
ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2RlZHVwbGlj
YXRlX3Rlc3RzX3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL2xheW91dF9wYWNrYWdlL2R1bXBfcmVuZGVyX3RyZWVfdGhyZWFkLnB5OgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weToKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2VfdW5pdHRlc3QucHk6Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weToK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3Vu
aXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
aHR0cF9sb2NrX3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHk6CisKIDIwMTAtMTAtMTggIEFuZGVycyBDYXJsc3Nv
biAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggYnVpbGQuCmRpZmYgLS1naXQg
YS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vcGF0aC5weSBiL1dl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9wYXRoLnB5CmluZGV4IDkz
NzI0N2VmMGFjYzE5MTlkZTBlZDdlNmI3MGQ0Y2E4MTcxYzcxMTAuLjlhNmQ1ODNhMzgxNzc1Yjgz
M2M1MjFkYTJiYmVjMzI5NjBiZTY5NmUgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvY29tbW9uL3N5c3RlbS9wYXRoLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvY29tbW9uL3N5c3RlbS9wYXRoLnB5CkBAIC0yNywxNSArMjcsODkgQEAKICMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KIAogIiIiZ2VuZXJpYyByb3V0aW5lcyB0byBjb252ZXJ0IHBsYXRmb3JtLXNwZWNp
ZmljIHBhdGhzIHRvIFVSSXMuIiIiCitpbXBvcnQgYXRleGl0CitpbXBvcnQgc3VicHJvY2Vzcwog
aW1wb3J0IHN5cworaW1wb3J0IHRocmVhZGluZwogaW1wb3J0IHVybGxpYgogCiAKLWRlZiBhYnNw
YXRoX3RvX3VyaShwYXRoLCBleGVjdXRpdmUsIHBsYXRmb3JtPU5vbmUpOgorZGVmIGFic3BhdGhf
dG9fdXJpKHBhdGgsIHBsYXRmb3JtPU5vbmUpOgogICAgICIiIkNvbnZlcnRzIGEgcGxhdGZvcm0t
c3BlY2lmaWMgYWJzb2x1dGUgcGF0aCB0byBhIGZpbGU6IFVSTC4iIiIKICAgICBpZiBwbGF0Zm9y
bSBpcyBOb25lOgogICAgICAgICBwbGF0Zm9ybSA9IHN5cy5wbGF0Zm9ybQotICAgIHJldHVybiAi
ZmlsZToiICsgX2VzY2FwZShfY29udmVydF9wYXRoKHBhdGgsIGV4ZWN1dGl2ZSwgcGxhdGZvcm0p
KQorICAgIHJldHVybiAiZmlsZToiICsgX2VzY2FwZShfY29udmVydF9wYXRoKHBhdGgsIHBsYXRm
b3JtKSkKKworCitkZWYgY3lncGF0aChwYXRoKToKKyAgICAiIiJDb252ZXJ0cyBhIGN5Z3dpbiBw
YXRoIHRvIFdpbmRvd3MgcGF0aC4iIiIKKyAgICByZXR1cm4gX0N5Z1BhdGguY29udmVydF91c2lu
Z19zaW5nbGV0b24ocGF0aCkKKworCisjIE5vdGUgdGhhdCB0aGlzIG9iamVjdCBpcyBub3QgdGhy
ZWFkc2FmZSBhbmQgbXVzdCBvbmx5IGJlIGNhbGxlZAorIyBmcm9tIG11bHRpcGxlIHRocmVhZHMg
dW5kZXIgcHJvdGVjdGlvbiBvZiBhIGxvY2sgKGFzIGlzIGRvbmUgaW4gY3lncGF0aCgpKQorY2xh
c3MgX0N5Z1BhdGgob2JqZWN0KToKKyAgICAiIiJNYW5hZ2VzIGEgbG9uZy1ydW5uaW5nICdjeWdw
YXRoJyBwcm9jZXNzIGZvciBmaWxlIGNvbnZlcnNpb24uIiIiCisgICAgbG9jayA9IE5vbmUKKyAg
ICBzaW5nbGV0b24gPSBOb25lCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIHN0b3BfY3ln
cGF0aF9zdWJwcm9jZXNzKCk6CisgICAgICAgIGlmIF9DeWdQYXRoLmxvY2s6CisgICAgICAgICAg
ICBfQ3lnUGF0aC5sb2NrLmFjcXVpcmUoKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAg
ICAgIGlmIF9DeWdQYXRoLnNpbmdsZXRvbjoKKyAgICAgICAgICAgICAgICAgICAgX0N5Z1BhdGgu
c2luZ2xldG9uLnN0b3AoKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBf
Q3lnUGF0aC5sb2NrLnJlbGVhc2UoKQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBjb252
ZXJ0X3VzaW5nX3NpbmdsZXRvbihwYXRoKToKKyAgICAgICAgaWYgbm90IF9DeWdQYXRoLmxvY2s6
CisgICAgICAgICAgICBfQ3lnUGF0aC5sb2NrID0gdGhyZWFkaW5nLkxvY2soKQorCisgICAgICAg
IF9DeWdQYXRoLmxvY2suYWNxdWlyZSgpCisgICAgICAgIGlmIG5vdCBfQ3lnUGF0aC5zaW5nbGV0
b246CisgICAgICAgICAgICBfQ3lnUGF0aC5zaW5nbGV0b24gPSBfQ3lnUGF0aCgpCisgICAgICAg
ICAgICAjIE1ha2Ugc3VyZSB0aGUgY3lncGF0aCBzdWJwcm9jZXNzIGFsd2F5cyBnZXRzIHNodXRk
b3duIGNsZWFubHkuCisgICAgICAgICAgICBhdGV4aXQucmVnaXN0ZXIoX0N5Z1BhdGguc3RvcF9j
eWdwYXRoX3N1YnByb2Nlc3MpCisKKyAgICAgICAgcmVzdWx0ID0gTm9uZQorICAgICAgICB0cnk6
CisgICAgICAgICAgICByZXN1bHQgPSBfQ3lnUGF0aC5zaW5nbGV0b24uY29udmVydChwYXRoKQor
ICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgX0N5Z1BhdGgubG9jay5yZWxlYXNlKCkKKwor
ICAgICAgICByZXR1cm4gcmVzdWx0CisKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAg
IHNlbGYuX2NoaWxkX3Byb2Nlc3MgPSBOb25lCisKKyAgICBkZWYgc3RhcnQoc2VsZik6CisgICAg
ICAgIGFzc2VydChzZWxmLl9jaGlsZF9wcm9jZXNzIGlzIE5vbmUpCisgICAgICAgIGFyZ3MgPSBb
J2N5Z3BhdGgnLCAnLWYnLCAnLScsICctd2EnXQorICAgICAgICBzZWxmLl9jaGlsZF9wcm9jZXNz
ID0gc3VicHJvY2Vzcy5Qb3BlbihhcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGRpbj1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlX2Zkcz1G
YWxzZSkKKworICAgIGRlZiBpc19ydW5uaW5nKHNlbGYpOgorICAgICAgICBpZiBub3Qgc2VsZi5f
Y2hpbGRfcHJvY2VzczoKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICByZXR1cm4g
c2VsZi5fY2hpbGRfcHJvY2Vzcy5yZXR1cm5jb2RlIGlzIE5vbmUKKworICAgIGRlZiBzdG9wKHNl
bGYpOgorICAgICAgICBpZiBzZWxmLl9jaGlsZF9wcm9jZXNzOgorICAgICAgICAgICAgc2VsZi5f
Y2hpbGRfcHJvY2Vzcy5zdGRpbi5jbG9zZSgpCisgICAgICAgICAgICBzZWxmLl9jaGlsZF9wcm9j
ZXNzLndhaXQoKQorICAgICAgICBzZWxmLl9jaGlsZF9wcm9jZXNzID0gTm9uZQorCisgICAgZGVm
IGNvbnZlcnQoc2VsZiwgcGF0aCk6CisgICAgICAgIGlmIG5vdCBzZWxmLmlzX3J1bm5pbmcoKToK
KyAgICAgICAgICAgIHNlbGYuc3RhcnQoKQorICAgICAgICBzZWxmLl9jaGlsZF9wcm9jZXNzLnN0
ZGluLndyaXRlKCIlc1xyXG4iICUgcGF0aCkKKyAgICAgICAgc2VsZi5fY2hpbGRfcHJvY2Vzcy5z
dGRpbi5mbHVzaCgpCisgICAgICAgIHJldHVybiBzZWxmLl9jaGlsZF9wcm9jZXNzLnN0ZG91dC5y
ZWFkbGluZSgpLnJzdHJpcCgpCiAKIAogZGVmIF9lc2NhcGUocGF0aCk6CkBAIC00NywxMiArMTIx
LDEyIEBAIGRlZiBfZXNjYXBlKHBhdGgpOgogICAgIHJldHVybiB1cmxsaWIucXVvdGUocGF0aCwg
c2FmZT0nLys6JykKIAogCi1kZWYgX2NvbnZlcnRfcGF0aChwYXRoLCBleGVjdXRpdmUsIHBsYXRm
b3JtKToKK2RlZiBfY29udmVydF9wYXRoKHBhdGgsIHBsYXRmb3JtKToKICAgICAiIiJIYW5kbGVz
IGFueSBvcy1zcGVjaWZpYyBwYXRoIHNlcGFyYXRvcnMsIG1hcHBpbmdzLCBldGMuIiIiCiAgICAg
aWYgcGxhdGZvcm0gPT0gJ3dpbjMyJzoKICAgICAgICAgcmV0dXJuIF93aW5wYXRoX3RvX3VyaShw
YXRoKQogICAgIGlmIHBsYXRmb3JtID09ICdjeWd3aW4nOgotICAgICAgICByZXR1cm4gX3dpbnBh
dGhfdG9fdXJpKF9jeWdwYXRoKHBhdGgsIGV4ZWN1dGl2ZSkpCisgICAgICAgIHJldHVybiBfd2lu
cGF0aF90b191cmkoY3lncGF0aChwYXRoKSkKICAgICByZXR1cm4gX3VuaXh5cGF0aF90b191cmko
cGF0aCkKIAogCkBAIC02MSwxMiArMTM1LDYgQEAgZGVmIF93aW5wYXRoX3RvX3VyaShwYXRoKToK
ICAgICByZXR1cm4gIi8vLyIgKyBwYXRoLnJlcGxhY2UoIlxcIiwgIi8iKQogCiAKLWRlZiBfY3ln
cGF0aChwYXRoLCBleGVjdXRpdmUpOgotICAgICIiIkNvbnZlcnRzIGEgY3lnd2luIHBhdGggdG8g
V2luZG93cyBwYXRoLiIiIgotICAgIHJldHVybiBleGVjdXRpdmUucnVuX2NvbW1hbmQoWydjeWdw
YXRoJywgJy13YScsIHBhdGhdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVj
b2RlX291dHB1dD1GYWxzZSkucnN0cmlwKCkKLQotCiBkZWYgX3VuaXh5cGF0aF90b191cmkocGF0
aCk6CiAgICAgIiIiQ29udmVydHMgYSB1bml4LXN0eWxlIHBhdGggdG8gYSBmaWxlOiBVUkwuIiIi
CiAgICAgcmV0dXJuICIvLyIgKyBwYXRoCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vcGF0aF91bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9wYXRoX3VuaXR0ZXN0LnB5CmluZGV4IDNjMTAy
MWRjYWQ3ZDVhN2E4ZWQyNDVkMzRkZmIxMTU3OGRhNGJhNTguLmVmZmQxMzNlMWZkM2NkNGY3ZDgx
NjA1Yzg1OTkxYWQ5OTcwMDE2YmQgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL3N5c3RlbS9wYXRoX3VuaXR0ZXN0LnB5CisrKyBiL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9wYXRoX3VuaXR0ZXN0LnB5CkBAIC0yNywzOSAr
MjcsMzQgQEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgc3lzCiAK
IGltcG9ydCBwYXRoCiAKLQogY2xhc3MgQWJzcGF0aFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgot
ICAgIGRlZiBydW5fY29tbWFuZChzZWxmLCBhcmdzLCAqKmt3YXJncyk6Ci0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoYXJnc1swXSwgJ2N5Z3BhdGgnKQotICAgICAgICByZXR1cm4gc2VsZi5jeWdw
YXRoX3Jlc3VsdAotCiAgICAgZGVmIGFzc2VydE1hdGNoKHNlbGYsIHRlc3RfcGF0aCwgZXhwZWN0
ZWRfdXJpLAotICAgICAgICAgICAgICAgICAgICBwbGF0Zm9ybSwgY3lncGF0aF9yZXN1bHQ9Tm9u
ZSk6Ci0gICAgICAgIGlmIHBsYXRmb3JtID09ICdjeWd3aW4nOgotICAgICAgICAgICAgc2VsZi5j
eWdwYXRoX3Jlc3VsdCA9IGN5Z3BhdGhfcmVzdWx0Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
cGF0aC5hYnNwYXRoX3RvX3VyaSh0ZXN0X3BhdGgsIGV4ZWN1dGl2ZT1zZWxmLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhdGZvcm09cGxhdGZvcm0pLAor
ICAgICAgICAgICAgICAgICAgICBwbGF0Zm9ybT1Ob25lKToKKyAgICAgICAgaWYgcGxhdGZvcm0g
PT0gJ2N5Z3dpbicgYW5kIHN5cy5wbGF0Zm9ybSAhPSAnY3lnd2luJzoKKyAgICAgICAgICAgIHJl
dHVybgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhdGguYWJzcGF0aF90b191cmkodGVzdF9w
YXRoLCBwbGF0Zm9ybT1wbGF0Zm9ybSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0
ZWRfdXJpKQogCiAgICAgZGVmIHRlc3RfYWJzcGF0aF90b191cmlfY3lnd2luKHNlbGYpOgorICAg
ICAgICBpZiBzeXMucGxhdGZvcm0gIT0gJ2N5Z3dpbic6CisgICAgICAgICAgICByZXR1cm4KKwog
ICAgICAgICBzZWxmLmFzc2VydE1hdGNoKCcvY3lnZHJpdmUvYy9mb28vYmFyLmh0bWwnLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICdmaWxlOi8vL2M6L2Zvby9iYXIuaHRtbCcsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgcGxhdGZvcm09J2N5Z3dpbicsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgY3lncGF0aF9yZXN1bHQ9J2M6XFxmb29cXGJhci5odG1sXG4nKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICdmaWxlOi8vL0M6L2Zvby9iYXIuaHRtbCcsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgcGxhdGZvcm09J2N5Z3dpbicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGF0
aC5hYnNwYXRoX3RvX3VyaSgnL2N5Z2RyaXZlL2MvZm9vL2Jhci5odG1sJywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWN1dGl2ZT1zZWxmLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhdGZvcm09J2N5Z3dpbicp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICdmaWxlOi8vL2M6L2Zvby9iYXIuaHRtbCcpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpbGU6Ly8vQzovZm9vL2Jhci5odG1sJykKIAogICAg
IGRlZiB0ZXN0X2Fic3BhdGhfdG9fdXJpX2RhcndpbihzZWxmKToKICAgICAgICAgc2VsZi5hc3Nl
cnRNYXRjaCgnL2Zvby9iYXIuaHRtbCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpbGU6
Ly8vZm9vL2Jhci5odG1sJywKICAgICAgICAgICAgICAgICAgICAgICAgICBwbGF0Zm9ybT0nZGFy
d2luJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXRoLmFic3BhdGhfdG9fdXJpKCIvZm9v
L2Jhci5odG1sIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGV4ZWN1dGl2ZT1zZWxmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcGxhdGZvcm09J2RhcndpbicpLAogICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxl
Oi8vL2Zvby9iYXIuaHRtbCIpCiAKQEAgLTY4LDcgKzYzLDYgQEAgY2xhc3MgQWJzcGF0aFRlc3Qo
dW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICAgICAgICAgICAgICAgICAgICdmaWxlOi8vL2Zv
by9iYXIuaHRtbCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhdGZvcm09J2Rhcndpbicp
CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGF0aC5hYnNwYXRoX3RvX3VyaSgiL2Zvby9iYXIu
aHRtbCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVj
dXRpdmU9c2VsZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHBsYXRmb3JtPSdsaW51eDInKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZTovLy9m
b28vYmFyLmh0bWwiKQogCkBAIC03Nyw3ICs3MSw2IEBAIGNsYXNzIEFic3BhdGhUZXN0KHVuaXR0
ZXN0LlRlc3RDYXNlKToKICAgICAgICAgICAgICAgICAgICAgICAgICAnZmlsZTovLy9jOi9mb28v
YmFyLmh0bWwnLAogICAgICAgICAgICAgICAgICAgICAgICAgIHBsYXRmb3JtPSd3aW4zMicpCiAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGF0aC5hYnNwYXRoX3RvX3VyaSgiYzpcXGZvb1xcYmFy
Lmh0bWwiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhl
Y3V0aXZlPXNlbGYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwbGF0Zm9ybT0nd2luMzInKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZTovLy9j
Oi9mb28vYmFyLmh0bWwiKQogCkBAIC05MSwxMCArODQsMjIgQEAgY2xhc3MgQWJzcGF0aFRlc3Qo
dW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgICAgICMgTm90ZSB0aGF0IHlvdSBjYW4ndCBoYXZl
ICc/JyBpbiBhIGZpbGVuYW1lIG9uIHdpbmRvd3MuCiAgICAgICAgIHNlbGYuYXNzZXJ0TWF0Y2go
Jy9jeWdkcml2ZS9jL2Zvby9iYXIgKyBiYXolLmh0bWwnLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICdmaWxlOi8vL2M6L2Zvby9iYXIlMjArJTIwYmF6JTI1Lmh0bWwnLAotICAgICAgICAgICAg
ICAgICAgICAgICAgIHBsYXRmb3JtPSdjeWd3aW4nLAotICAgICAgICAgICAgICAgICAgICAgICAg
IGN5Z3BhdGhfcmVzdWx0PSdjOlxcZm9vXFxiYXIgKyBiYXolLmh0bWxcbicpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgJ2ZpbGU6Ly8vQzovZm9vL2JhciUyMCslMjBiYXolMjUuaHRtbCcsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgcGxhdGZvcm09J2N5Z3dpbicpCisKKyAgICBkZWYgdGVz
dF9zdG9wX2N5Z3BhdGhfc3VicHJvY2VzcyhzZWxmKToKKyAgICAgICAgaWYgc3lzLnBsYXRmb3Jt
ICE9ICdjeWd3aW4nOgorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgIyBDYWxsIGN5Z3Bh
dGggdG8gZW5zdXJlIHRoZSBzdWJwcm9jZXNzIGlzIHJ1bm5pbmcuCisgICAgICAgIHBhdGguY3ln
cGF0aCgiL2N5Z2RyaXZlL2MvZm9vLnR4dCIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwYXRo
Ll9DeWdQYXRoLnNpbmdsZXRvbi5pc19ydW5uaW5nKCkpCisKKyAgICAgICAgIyBzdG9wIGl0Lgor
ICAgICAgICBwYXRoLl9DeWdQYXRoLnN0b3BfY3lncGF0aF9zdWJwcm9jZXNzKCkKIAorICAgICAg
ICAjIGVuc3VyZSB0aGF0IGl0J3Mgc3RvcHBlZC4KKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShw
YXRoLl9DeWdQYXRoLnNpbmdsZXRvbi5pc19ydW5uaW5nKCkpCiAKIGlmIF9fbmFtZV9fID09ICdf
X21haW5fXyc6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9kZWR1cGxpY2F0ZV90ZXN0c191bml0dGVzdC5w
eSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2RlZHVwbGljYXRl
X3Rlc3RzX3VuaXR0ZXN0LnB5CmluZGV4IGJiOTYwNGY1YzUwMmJhYmY3MTMyYjAwMDcwOTkyMzhl
ZjU1OThhOWEuLjMwOWJmOGQ5ZTdhYjFhMDhjYTNkZGRlYjg2MTQ4YzZjYWNkMTMyYWMgMTAwNjQ0
Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2RlZHVwbGlj
YXRlX3Rlc3RzX3VuaXR0ZXN0LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL2RlZHVwbGljYXRlX3Rlc3RzX3VuaXR0ZXN0LnB5CkBAIC0yMDUsMyArMjA1
LDYgQEAgY2xhc3MgTGlzdER1cGxpY2F0ZXNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAg
ICAgZm9yIGV4cGVjdGVkLCBpbnB1dHMgaW4gdGVzdF9jYXNlczoKICAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWxzKGV4cGVjdGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVk
dXBsaWNhdGVfdGVzdHMuZ2V0X3JlbGF0aXZlX3Rlc3RfcGF0aCgqaW5wdXRzKSkKKworaWYgX19u
YW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL1dl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weSBiL1dl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQppbmRl
eCBiMTVlZGIyNDY0NjhiZjgyZGM5NTUyMGU0M2Q0OWRiODgxYmJlOGFlLi5jYjk2OTEzNTgyZDZm
MTc3Y2YyYWJiZGRhODc1ZWU3Y2U2YjYxNzRlIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkKKysrIGIvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5CkBAIC00OSw2ICs0OSw3
IEBAIGltcG9ydCB3ZWJzb2NrZXRfc2VydmVyCiAKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3Rl
bSBpbXBvcnQgbG9ndXRpbHMKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUg
aW1wb3J0IEV4ZWN1dGl2ZSwgU2NyaXB0RXJyb3IKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3Rl
bS5wYXRoIGltcG9ydCBhYnNwYXRoX3RvX3VyaQogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVt
LnVzZXIgaW1wb3J0IFVzZXIKIAogCkBAIC0zMzYsMTcgKzMzNyw3IEBAIGNsYXNzIFBvcnQob2Jq
ZWN0KToKICAgICAgICAgICAgICAgICBwcm90b2NvbCA9ICJodHRwIgogICAgICAgICAgICAgcmV0
dXJuICIlczovLzEyNy4wLjAuMToldS8lcyIgJSAocHJvdG9jb2wsIHBvcnQsIHJlbGF0aXZlX3Bh
dGgpCiAKLSAgICAgICAgYWJzcGF0aCA9IG9zLnBhdGguYWJzcGF0aChmaWxlbmFtZSkKLQotICAg
ICAgICAjIE9uIFdpbmRvd3MsIGFic29sdXRlIHBhdGhzIGFyZSBvZiB0aGUgZm9ybSAiYzpcZm9v
LnR4dCIuIEhvd2V2ZXIsCi0gICAgICAgICMgYWxsIGN1cnJlbnQgYnJvd3NlcnMgKGV4Y2VwdCBm
b3IgT3BlcmEpIG5vcm1hbGl6ZSBmaWxlIFVSTHMgYnkKLSAgICAgICAgIyBwcmVwZW5kaW5nIGFu
IGFkZGl0aW9uYWwgIi8iIGFzIGlmIHRoZSBhYnNvbHV0ZSBwYXRoIHdhcwotICAgICAgICAjICIv
YzovZm9vLnR4dCIuIFRoaXMgbWVhbnMgdGhhdCBhbGwgZmlsZSBVUkxzIGVuZCB1cCB3aXRoICJm
aWxlOi8vLyIKLSAgICAgICAgIyBhdCB0aGUgYmVnaW5uaW5nLgotICAgICAgICBpZiBzeXMucGxh
dGZvcm0gPT0gJ3dpbjMyJzoKLSAgICAgICAgICAgIGFic3BhdGggPSAnLycgKyBhYnNwYXRoLnJl
cGxhY2UoJ1xcJywgJy8nKQotCi0gICAgICAgIHJldHVybiAiZmlsZTovLyIgKyBhYnNwYXRoCisg
ICAgICAgIHJldHVybiBhYnNwYXRoX3RvX3VyaShvcy5wYXRoLmFic3BhdGgoZmlsZW5hbWUpKQog
CiAgICAgZGVmIHRlc3RzKHNlbGYsIHBhdGhzKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSBsaXN0
IG9mIHRlc3RzIGZvdW5kIChyZWxhdGl2ZSB0byBsYXlvdXRfdGVzdHNfZGlyKCkuIiIiCkBAIC0z
OTUsMTIgKzM4Niw4IEBAIGNsYXNzIFBvcnQob2JqZWN0KToKICAgICAgICAgIiIiCiAgICAgICAg
IHRlc3QgPSB1cmkKICAgICAgICAgaWYgdXJpLnN0YXJ0c3dpdGgoImZpbGU6Ly8vIik6Ci0gICAg
ICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKLSAgICAgICAgICAgICAgICB0ZXN0
ID0gdGVzdC5yZXBsYWNlKCdmaWxlOi8vLycsICcnKQotICAgICAgICAgICAgICAgIHRlc3QgPSB0
ZXN0LnJlcGxhY2UoJy8nLCAnXFwnKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAg
ICB0ZXN0ID0gdGVzdC5yZXBsYWNlKCdmaWxlOi8vJywgJycpCi0gICAgICAgICAgICByZXR1cm4g
c2VsZi5yZWxhdGl2ZV90ZXN0X2ZpbGVuYW1lKHRlc3QpCisgICAgICAgICAgICBwcmVmaXggPSBh
YnNwYXRoX3RvX3VyaShzZWxmLmxheW91dF90ZXN0c19kaXIoKSkgKyAiLyIKKyAgICAgICAgICAg
IHJldHVybiB0ZXN0W2xlbihwcmVmaXgpOl0KIAogICAgICAgICBpZiB1cmkuc3RhcnRzd2l0aCgi
aHR0cDovLzEyNy4wLjAuMTo4ODgwLyIpOgogICAgICAgICAgICAgIyB3ZWJzb2NrZXQgdGVzdHMK
ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvYmFzZV91bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvYmFzZV91bml0dGVzdC5weQppbmRleCA0MGViOTg0Y2I5MTRhNTk1MDk2OTkw
MjA4MDlhM2IwZDYwMjJhMTBjLi5iYWVjYWQ5ZDRhYjI1NzFlODc2ZjIxZTM2MzZkNTRjNmQ1YjEw
MTJjIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L2Jhc2VfdW5pdHRlc3QucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlX3VuaXR0ZXN0LnB5CkBAIC0zMyw2ICszMyw3IEBAIGlt
cG9ydCBzeXMKIGltcG9ydCB0ZW1wZmlsZQogaW1wb3J0IHVuaXR0ZXN0CiAKK2Zyb20gd2Via2l0
cHkuY29tbW9uLnN5c3RlbS5wYXRoIGltcG9ydCBhYnNwYXRoX3RvX3VyaQogZnJvbSB3ZWJraXRw
eS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgRXhlY3V0aXZlLCBTY3JpcHRFcnJvcgog
ZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5Lm1vY2sgaW1wb3J0IE1vY2sKIApAQCAtMjQ0LDggKzI0
NSw3IEBAIGNsYXNzIFBvcnRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgICAgIHBh
dGggPSB0ZXN0X2ZpbGUKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQuZmlsZW5hbWVf
dG9fdXJpKHRlc3RfZmlsZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4ICsgcGF0
aCkKLQorICAgICAgICAgICAgICAgICAgICAgICAgIGFic3BhdGhfdG9fdXJpKHRlc3RfZmlsZSkp
CiAKIAogY2xhc3MgVmlydHVhbFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgpkaWZmIC0tZ2l0IGEv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5w
eSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21p
dW0ucHkKaW5kZXggMGZhZTYyZjNhMjMxZTYwZGQ2NjQ5OTJlNzVkMGQxOGQzNWEzYWMyNi4uODM1
NmJkOTBkZmIwNjY1ODNkNjM3MTNjZmJjMzA3NzFiNzY3NjFiNCAxMDA2NDQKLS0tIGEvV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weQorKysg
Yi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVt
LnB5CkBAIC00Myw2ICs0MywxMCBAQCBpbXBvcnQgdGVtcGZpbGUKIGltcG9ydCB0aW1lCiBpbXBv
cnQgd2ViYnJvd3NlcgogCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGlt
cG9ydCBFeGVjdXRpdmUKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5wYXRoIGltcG9ydCBj
eWdwYXRoCitmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZSBpbXBvcnQg
dGVzdF9leHBlY3RhdGlvbnMKKwogaW1wb3J0IGJhc2UKIGltcG9ydCBodHRwX3NlcnZlcgogCkBA
IC0zNDQsNiArMzQ4LDEzIEBAIGNsYXNzIENocm9taXVtUG9ydChiYXNlLlBvcnQpOgogICAgICAg
ICAgICAgcGxhdGZvcm0gPSBzZWxmLm5hbWUoKQogICAgICAgICByZXR1cm4gc2VsZi5wYXRoX2Zy
b21fd2Via2l0X2Jhc2UoJ0xheW91dFRlc3RzJywgJ3BsYXRmb3JtJywgcGxhdGZvcm0pCiAKKyAg
ICBkZWYgX2NvbnZlcnRfcGF0aChzZWxmLCBwYXRoKToKKyAgICAgICAgIiIiSGFuZGxlcyBmaWxl
bmFtZSBjb252ZXJzaW9uIGZvciBzdWJwcm9jZXNzIGNvbW1hbmQgbGluZSBhcmdzLiIiIgorICAg
ICAgICAjIFNlZSBub3RlIGFib3ZlIGluIGRpZmZfaW1hZ2UoKSBmb3Igd2h5IHdlIG5lZWQgdGhp
cy4KKyAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICdjeWd3aW4nOgorICAgICAgICAgICAgcmV0
dXJuIGN5Z3BhdGgocGF0aCkKKyAgICAgICAgcmV0dXJuIHBhdGgKKwogICAgIGRlZiBfcGF0aF90
b19pbWFnZV9kaWZmKHNlbGYpOgogICAgICAgICBiaW5hcnlfbmFtZSA9ICdpbWFnZV9kaWZmJwog
ICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnVzZV9kcnQ6CkBAIC0zNjMsNyArMzc0LDkgQEAgY2xh
c3MgQ2hyb21pdW1Ecml2ZXIoYmFzZS5Ecml2ZXIpOgogICAgIGRlZiBfZHJpdmVyX2FyZ3Moc2Vs
Zik6CiAgICAgICAgIGRyaXZlcl9hcmdzID0gW10KICAgICAgICAgaWYgc2VsZi5faW1hZ2VfcGF0
aDoKLSAgICAgICAgICAgIGRyaXZlcl9hcmdzLmFwcGVuZCgiLS1waXhlbC10ZXN0cz0iICsgc2Vs
Zi5faW1hZ2VfcGF0aCkKKyAgICAgICAgICAgICMgU2VlIG5vdGUgYWJvdmUgaW4gZGlmZl9pbWFn
ZSgpIGZvciB3aHkgd2UgbmVlZCBfY29udmVydF9wYXRoKCkuCisgICAgICAgICAgICBkcml2ZXJf
YXJncy5hcHBlbmQoIi0tcGl4ZWwtdGVzdHM9IiArCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2VsZi5fcG9ydC5fY29udmVydF9wYXRoKHNlbGYuX2ltYWdlX3BhdGgpKQogCiAgICAg
ICAgIGlmIHNlbGYuX29wdGlvbnMudXNlX2RydDoKICAgICAgICAgICAgIGRyaXZlcl9hcmdzLmFw
cGVuZCgnLS10ZXN0LXNoZWxsJykKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fdW5pdHRlc3QucHkgYi9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3VuaXR0ZXN0LnB5
CmluZGV4IGUzODU4ZjBjNGZjNjcyYjM4OWJjOTE4OGY5YWQ2MDY4ZTExY2VlNjYuLjJlOTQ2MWEz
ZjQ3MGFiMWEyOGRmOGVlOGE1MjM5NzJmYzNmOGY1MjkgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fdW5pdHRlc3QucHkK
KysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJv
bWl1bV91bml0dGVzdC5weQpAQCAtMTc2LDcgKzE3Niw5IEBAIERFRkVSIExJTlVYIFdJTiA6IGZh
c3QvanMvdmVyeS1nb29kLmpzID0gVElNRU9VVCBQQVNTIiIiCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuX2V4aXRfY29kZT1GYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm5fc3RkZXJyPVRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVj
b2RlX291dHB1dD1GYWxzZSk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3Jlc3VsdAor
ICAgICAgICAgICAgICAgIGlmIHJldHVybl9leGl0X2NvZGU6CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBzZWxmLl9yZXN1bHQKKyAgICAgICAgICAgICAgICByZXR1cm4gJycKIAogICAgICAg
ICBvcHRpb25zID0gRW1wdHlPcHRpb25zKCkKICAgICAgICAgcG9ydCA9IENocm9taXVtUG9ydFRl
c3QuVGVzdExpbnV4UG9ydChvcHRpb25zKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9odHRwX2xvY2tfdW5pdHRlc3QucHkgYi9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2h0dHBfbG9ja191bml0
dGVzdC5weQppbmRleCBmMmU0Y2U1N2NiZDFhMWQwNDQyM2FmMDU2ZTk2MTBmMTA3OTVlMGZhLi44
NWM3NjBhYzVmYTA0MzY5OTFkNDg2Mzg3MTIwYzg3ZmJkNjJjOTA0IDEwMDY0NAotLS0gYS9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2h0dHBfbG9ja191bml0
dGVzdC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L2h0dHBfbG9ja191bml0dGVzdC5weQpAQCAtNDMsNyArNDMsNyBAQCBjbGFzcyBIdHRwTG9j
a1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIGNsZWFuX2FsbF9sb2NrZmlsZShz
ZWxmKToKICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoc2VsZi5ndWFyZF9sb2NrX2ZpbGUpOgot
ICAgICAgICAgICAgb3MudW5saW5rKGd1YXJkX2xvY2tfZmlsZSkKKyAgICAgICAgICAgIG9zLnVu
bGluayhzZWxmLmd1YXJkX2xvY2tfZmlsZSkKICAgICAgICAgbG9ja19saXN0ID0gZ2xvYi5nbG9i
KHNlbGYubG9ja19maWxlX3BhdGhfcHJlZml4ICsgJyonKQogICAgICAgICBmb3IgZmlsZV9uYW1l
IGluIGxvY2tfbGlzdDoKICAgICAgICAgICAgIG9zLnVubGluayhmaWxlX25hbWUpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71104</attachid>
            <date>2010-10-18 17:19:40 -0700</date>
            <delta_ts>2010-10-18 17:41:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47220-20101018171938.patch</filename>
            <type>text/plain</type>
            <size>16677</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA5ZjY4ZTNlZDExNzVhNTI0Y2MyOTI3MzJlZjlmNThjMTJiNzNmZjkyLi4xZmU4NWM0
ZTczYzFhZjJkMTAwYWU0OGRiNDBkZWIyNmQ4NjliODYyIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAK
KzIwMTAtMTAtMTggIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmUtc3VibWl0IGEgcmV2
aXNlZCB2ZXJzaW9uIG9mIHI2OTYzOCAtIGVuYWJsaW5nIG5ldy1ydW4td2Via2l0LXRlc3RzCisg
ICAgICAgIHVuZGVyIGN5Z3dpbi4gVGhlIGluaXRpYWwgdmVyc2lvbiBoYWQgYSBidWcgaW4gYmFz
ZTp1cmlfdG9fdGVzdF9uYW1lCisgICAgICAgIHRoYXQgd2FzIGNhdXNpbmcgdGVzdHMgdG8gZmFp
bC4gVGhpcyB2ZXJzaW9uIGNvcnJlY3RzIHRoYXQgYnVnLCBidXQKKyAgICAgICAgYWxzbyBtYWtl
cyB0aGUgY29kZSBzYWZlciBieSBjYWxsaW5nIGN5Z3BhdGggbW9yZSByZWxpYWJseSwgYW5kCisg
ICAgICAgIGxlYXZpbmcgYSBsb25nLXJ1bm5pbmcgY3lncGF0aCBwcm9jZXNzIG9wZW4uCisKKyAg
ICAgICAgVGhpcyBwYXRjaCBhbHNvIGNvcnJlY3RzIGEgY291cGxlIG9mIG1pbm9yIGJ1Z3MgaW4g
aHR0cF9sb2NrX3VuaXR0ZXN0LAorICAgICAgICBjaHJvbWl1bV91bml0dGVzdCwgYW5kIGRlZHB1
bGljYXRlX3Rlc3RzX3VuaXR0ZXN0IHRoYXQgc2hvd2VkIHVwCisgICAgICAgIHdoaWxlIHRlc3Rp
bmcgdGhpcy4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NDcyMjAKKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9wYXRo
LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9wYXRoX3VuaXR0
ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2RlZHVwbGlj
YXRlX3Rlc3RzX3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL2xheW91dF9wYWNrYWdlL2R1bXBfcmVuZGVyX3RyZWVfdGhyZWFkLnB5OgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weToKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2VfdW5pdHRlc3QucHk6Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weToK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3Vu
aXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
aHR0cF9sb2NrX3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHk6CisKIDIwMTAtMTAtMTggIEFuZGVycyBDYXJsc3Nv
biAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggYnVpbGQuCmRpZmYgLS1naXQg
YS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vcGF0aC5weSBiL1dl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9wYXRoLnB5CmluZGV4IDkz
NzI0N2VmMGFjYzE5MTlkZTBlZDdlNmI3MGQ0Y2E4MTcxYzcxMTAuLjQzYzY0MTBiYzgwODFkNWI1
NTFiY2JkNWRjYTNmZDVhMDUwMDQ0YTEgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvY29tbW9uL3N5c3RlbS9wYXRoLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvY29tbW9uL3N5c3RlbS9wYXRoLnB5CkBAIC0yNywxNSArMjcsODMgQEAKICMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KIAogIiIiZ2VuZXJpYyByb3V0aW5lcyB0byBjb252ZXJ0IHBsYXRmb3JtLXNwZWNp
ZmljIHBhdGhzIHRvIFVSSXMuIiIiCitmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHdpdGhfc3RhdGVt
ZW50CisKK2ltcG9ydCBhdGV4aXQKK2ltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgc3lzCitpbXBv
cnQgdGhyZWFkaW5nCiBpbXBvcnQgdXJsbGliCiAKIAotZGVmIGFic3BhdGhfdG9fdXJpKHBhdGgs
IGV4ZWN1dGl2ZSwgcGxhdGZvcm09Tm9uZSk6CitkZWYgYWJzcGF0aF90b191cmkocGF0aCwgcGxh
dGZvcm09Tm9uZSk6CiAgICAgIiIiQ29udmVydHMgYSBwbGF0Zm9ybS1zcGVjaWZpYyBhYnNvbHV0
ZSBwYXRoIHRvIGEgZmlsZTogVVJMLiIiIgogICAgIGlmIHBsYXRmb3JtIGlzIE5vbmU6CiAgICAg
ICAgIHBsYXRmb3JtID0gc3lzLnBsYXRmb3JtCi0gICAgcmV0dXJuICJmaWxlOiIgKyBfZXNjYXBl
KF9jb252ZXJ0X3BhdGgocGF0aCwgZXhlY3V0aXZlLCBwbGF0Zm9ybSkpCisgICAgcmV0dXJuICJm
aWxlOiIgKyBfZXNjYXBlKF9jb252ZXJ0X3BhdGgocGF0aCwgcGxhdGZvcm0pKQorCisKK2RlZiBj
eWdwYXRoKHBhdGgpOgorICAgICIiIkNvbnZlcnRzIGEgY3lnd2luIHBhdGggdG8gV2luZG93cyBw
YXRoLiIiIgorICAgIHJldHVybiBfQ3lnUGF0aC5jb252ZXJ0X3VzaW5nX3NpbmdsZXRvbihwYXRo
KQorCisKKyMgTm90ZSB0aGF0IHRoaXMgb2JqZWN0IGlzIG5vdCB0aHJlYWRzYWZlIGFuZCBtdXN0
IG9ubHkgYmUgY2FsbGVkCisjIGZyb20gbXVsdGlwbGUgdGhyZWFkcyB1bmRlciBwcm90ZWN0aW9u
IG9mIGEgbG9jayAoYXMgaXMgZG9uZSBpbiBjeWdwYXRoKCkpCitjbGFzcyBfQ3lnUGF0aChvYmpl
Y3QpOgorICAgICIiIk1hbmFnZXMgYSBsb25nLXJ1bm5pbmcgJ2N5Z3BhdGgnIHByb2Nlc3MgZm9y
IGZpbGUgY29udmVyc2lvbi4iIiIKKyAgICBfbG9jayA9IE5vbmUKKyAgICBfc2luZ2xldG9uID0g
Tm9uZQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBzdG9wX2N5Z3BhdGhfc3VicHJvY2Vz
cygpOgorICAgICAgICBpZiBub3QgX0N5Z1BhdGguX2xvY2s6CisgICAgICAgICAgICByZXR1cm4K
KworICAgICAgICB3aXRoIF9DeWdQYXRoLl9sb2NrOgorICAgICAgICAgICAgaWYgX0N5Z1BhdGgu
X3NpbmdsZXRvbjoKKyAgICAgICAgICAgICAgICBfQ3lnUGF0aC5fc2luZ2xldG9uLnN0b3AoKQor
CisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBjb252ZXJ0X3VzaW5nX3NpbmdsZXRvbihwYXRo
KToKKyAgICAgICAgaWYgbm90IF9DeWdQYXRoLl9sb2NrOgorICAgICAgICAgICAgX0N5Z1BhdGgu
X2xvY2sgPSB0aHJlYWRpbmcuTG9jaygpCisKKyAgICAgICAgd2l0aCBfQ3lnUGF0aC5fbG9jazoK
KyAgICAgICAgICAgIGlmIG5vdCBfQ3lnUGF0aC5fc2luZ2xldG9uOgorICAgICAgICAgICAgICAg
IF9DeWdQYXRoLl9zaW5nbGV0b24gPSBfQ3lnUGF0aCgpCisgICAgICAgICAgICAgICAgIyBNYWtl
IHN1cmUgdGhlIGN5Z3BhdGggc3VicHJvY2VzcyBhbHdheXMgZ2V0cyBzaHV0ZG93biBjbGVhbmx5
LgorICAgICAgICAgICAgICAgIGF0ZXhpdC5yZWdpc3RlcihfQ3lnUGF0aC5zdG9wX2N5Z3BhdGhf
c3VicHJvY2VzcykKKworICAgICAgICAgICAgcmV0dXJuIF9DeWdQYXRoLl9zaW5nbGV0b24uY29u
dmVydChwYXRoKQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBzZWxmLl9jaGls
ZF9wcm9jZXNzID0gTm9uZQorCisgICAgZGVmIHN0YXJ0KHNlbGYpOgorICAgICAgICBhc3NlcnQo
c2VsZi5fY2hpbGRfcHJvY2VzcyBpcyBOb25lKQorICAgICAgICBhcmdzID0gWydjeWdwYXRoJywg
Jy1mJywgJy0nLCAnLXdhJ10KKyAgICAgICAgc2VsZi5fY2hpbGRfcHJvY2VzcyA9IHN1YnByb2Nl
c3MuUG9wZW4oYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RkaW49c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFKQorCisgICAgZGVmIGlz
X3J1bm5pbmcoc2VsZik6CisgICAgICAgIGlmIG5vdCBzZWxmLl9jaGlsZF9wcm9jZXNzOgorICAg
ICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHJldHVybiBzZWxmLl9jaGlsZF9wcm9jZXNz
LnJldHVybmNvZGUgaXMgTm9uZQorCisgICAgZGVmIHN0b3Aoc2VsZik6CisgICAgICAgIGlmIHNl
bGYuX2NoaWxkX3Byb2Nlc3M6CisgICAgICAgICAgICBzZWxmLl9jaGlsZF9wcm9jZXNzLnN0ZGlu
LmNsb3NlKCkKKyAgICAgICAgICAgIHNlbGYuX2NoaWxkX3Byb2Nlc3Mud2FpdCgpCisgICAgICAg
IHNlbGYuX2NoaWxkX3Byb2Nlc3MgPSBOb25lCisKKyAgICBkZWYgY29udmVydChzZWxmLCBwYXRo
KToKKyAgICAgICAgaWYgbm90IHNlbGYuaXNfcnVubmluZygpOgorICAgICAgICAgICAgc2VsZi5z
dGFydCgpCisgICAgICAgIHNlbGYuX2NoaWxkX3Byb2Nlc3Muc3RkaW4ud3JpdGUoIiVzXHJcbiIg
JSBwYXRoKQorICAgICAgICBzZWxmLl9jaGlsZF9wcm9jZXNzLnN0ZGluLmZsdXNoKCkKKyAgICAg
ICAgcmV0dXJuIHNlbGYuX2NoaWxkX3Byb2Nlc3Muc3Rkb3V0LnJlYWRsaW5lKCkucnN0cmlwKCkK
IAogCiBkZWYgX2VzY2FwZShwYXRoKToKQEAgLTQ3LDEyICsxMTUsMTIgQEAgZGVmIF9lc2NhcGUo
cGF0aCk6CiAgICAgcmV0dXJuIHVybGxpYi5xdW90ZShwYXRoLCBzYWZlPScvKzonKQogCiAKLWRl
ZiBfY29udmVydF9wYXRoKHBhdGgsIGV4ZWN1dGl2ZSwgcGxhdGZvcm0pOgorZGVmIF9jb252ZXJ0
X3BhdGgocGF0aCwgcGxhdGZvcm0pOgogICAgICIiIkhhbmRsZXMgYW55IG9zLXNwZWNpZmljIHBh
dGggc2VwYXJhdG9ycywgbWFwcGluZ3MsIGV0Yy4iIiIKICAgICBpZiBwbGF0Zm9ybSA9PSAnd2lu
MzInOgogICAgICAgICByZXR1cm4gX3dpbnBhdGhfdG9fdXJpKHBhdGgpCiAgICAgaWYgcGxhdGZv
cm0gPT0gJ2N5Z3dpbic6Ci0gICAgICAgIHJldHVybiBfd2lucGF0aF90b191cmkoX2N5Z3BhdGgo
cGF0aCwgZXhlY3V0aXZlKSkKKyAgICAgICAgcmV0dXJuIF93aW5wYXRoX3RvX3VyaShjeWdwYXRo
KHBhdGgpKQogICAgIHJldHVybiBfdW5peHlwYXRoX3RvX3VyaShwYXRoKQogCiAKQEAgLTYxLDEy
ICsxMjksNiBAQCBkZWYgX3dpbnBhdGhfdG9fdXJpKHBhdGgpOgogICAgIHJldHVybiAiLy8vIiAr
IHBhdGgucmVwbGFjZSgiXFwiLCAiLyIpCiAKIAotZGVmIF9jeWdwYXRoKHBhdGgsIGV4ZWN1dGl2
ZSk6Ci0gICAgIiIiQ29udmVydHMgYSBjeWd3aW4gcGF0aCB0byBXaW5kb3dzIHBhdGguIiIiCi0g
ICAgcmV0dXJuIGV4ZWN1dGl2ZS5ydW5fY29tbWFuZChbJ2N5Z3BhdGgnLCAnLXdhJywgcGF0aF0s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGVfb3V0cHV0PUZhbHNlKS5y
c3RyaXAoKQotCi0KIGRlZiBfdW5peHlwYXRoX3RvX3VyaShwYXRoKToKICAgICAiIiJDb252ZXJ0
cyBhIHVuaXgtc3R5bGUgcGF0aCB0byBhIGZpbGU6IFVSTC4iIiIKICAgICByZXR1cm4gIi8vIiAr
IHBhdGgKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5
c3RlbS9wYXRoX3VuaXR0ZXN0LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21t
b24vc3lzdGVtL3BhdGhfdW5pdHRlc3QucHkKaW5kZXggM2MxMDIxZGNhZDdkNWE3YThlZDI0NWQz
NGRmYjExNTc4ZGE0YmE1OC4uNGRiZDM4YTFlMmE2YmY1MTRjYzVhYWIzZjFkYmUzNTRmZGE1MmYy
NiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVt
L3BhdGhfdW5pdHRlc3QucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21t
b24vc3lzdGVtL3BhdGhfdW5pdHRlc3QucHkKQEAgLTI3LDM5ICsyNywzNCBAQAogIyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogCiBpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCBzeXMKIAogaW1wb3J0IHBhdGgKIAotCiBj
bGFzcyBBYnNwYXRoVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGVmIHJ1bl9jb21tYW5k
KHNlbGYsIGFyZ3MsICoqa3dhcmdzKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhcmdzWzBd
LCAnY3lncGF0aCcpCi0gICAgICAgIHJldHVybiBzZWxmLmN5Z3BhdGhfcmVzdWx0Ci0KICAgICBk
ZWYgYXNzZXJ0TWF0Y2goc2VsZiwgdGVzdF9wYXRoLCBleHBlY3RlZF91cmksCi0gICAgICAgICAg
ICAgICAgICAgIHBsYXRmb3JtLCBjeWdwYXRoX3Jlc3VsdD1Ob25lKToKLSAgICAgICAgaWYgcGxh
dGZvcm0gPT0gJ2N5Z3dpbic6Ci0gICAgICAgICAgICBzZWxmLmN5Z3BhdGhfcmVzdWx0ID0gY3ln
cGF0aF9yZXN1bHQKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXRoLmFic3BhdGhfdG9fdXJp
KHRlc3RfcGF0aCwgZXhlY3V0aXZlPXNlbGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwbGF0Zm9ybT1wbGF0Zm9ybSksCisgICAgICAgICAgICAgICAgICAg
IHBsYXRmb3JtPU5vbmUpOgorICAgICAgICBpZiBwbGF0Zm9ybSA9PSAnY3lnd2luJyBhbmQgc3lz
LnBsYXRmb3JtICE9ICdjeWd3aW4nOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwocGF0aC5hYnNwYXRoX3RvX3VyaSh0ZXN0X3BhdGgsIHBsYXRmb3JtPXBsYXRm
b3JtKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF91cmkpCiAKICAgICBkZWYg
dGVzdF9hYnNwYXRoX3RvX3VyaV9jeWd3aW4oc2VsZik6CisgICAgICAgIGlmIHN5cy5wbGF0Zm9y
bSAhPSAnY3lnd2luJzoKKyAgICAgICAgICAgIHJldHVybgorCiAgICAgICAgIHNlbGYuYXNzZXJ0
TWF0Y2goJy9jeWdkcml2ZS9jL2Zvby9iYXIuaHRtbCcsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgJ2ZpbGU6Ly8vYzovZm9vL2Jhci5odG1sJywKLSAgICAgICAgICAgICAgICAgICAgICAgICBw
bGF0Zm9ybT0nY3lnd2luJywKLSAgICAgICAgICAgICAgICAgICAgICAgICBjeWdwYXRoX3Jlc3Vs
dD0nYzpcXGZvb1xcYmFyLmh0bWxcbicpCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpbGU6
Ly8vQzovZm9vL2Jhci5odG1sJywKKyAgICAgICAgICAgICAgICAgICAgICAgICBwbGF0Zm9ybT0n
Y3lnd2luJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXRoLmFic3BhdGhfdG9fdXJpKCcv
Y3lnZHJpdmUvYy9mb28vYmFyLmh0bWwnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZXhlY3V0aXZlPXNlbGYsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwbGF0Zm9ybT0nY3lnd2luJyksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgJ2ZpbGU6Ly8vYzovZm9vL2Jhci5odG1sJykKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAnZmlsZTovLy9DOi9mb28vYmFyLmh0bWwnKQogCiAgICAgZGVmIHRlc3RfYWJzcGF0aF90
b191cmlfZGFyd2luKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydE1hdGNoKCcvZm9vL2Jhci5o
dG1sJywKICAgICAgICAgICAgICAgICAgICAgICAgICAnZmlsZTovLy9mb28vYmFyLmh0bWwnLAog
ICAgICAgICAgICAgICAgICAgICAgICAgIHBsYXRmb3JtPSdkYXJ3aW4nKQogICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHBhdGguYWJzcGF0aF90b191cmkoIi9mb28vYmFyLmh0bWwiLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhlY3V0aXZlPXNlbGYsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGF0Zm9ybT0nZGFy
d2luJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGU6Ly8vZm9vL2Jhci5odG1sIikK
IApAQCAtNjgsNyArNjMsNiBAQCBjbGFzcyBBYnNwYXRoVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6
CiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpbGU6Ly8vZm9vL2Jhci5odG1sJywKICAgICAg
ICAgICAgICAgICAgICAgICAgICBwbGF0Zm9ybT0nZGFyd2luJykKICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChwYXRoLmFic3BhdGhfdG9fdXJpKCIvZm9vL2Jhci5odG1sIiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWN1dGl2ZT1zZWxmLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhdGZvcm09J2xpbnV4Micp
LAogICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlOi8vL2Zvby9iYXIuaHRtbCIpCiAKQEAg
LTc3LDcgKzcxLDYgQEAgY2xhc3MgQWJzcGF0aFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAg
ICAgICAgICAgICAgICAgICAgICAgICdmaWxlOi8vL2M6L2Zvby9iYXIuaHRtbCcsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgcGxhdGZvcm09J3dpbjMyJykKICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChwYXRoLmFic3BhdGhfdG9fdXJpKCJjOlxcZm9vXFxiYXIuaHRtbCIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjdXRpdmU9c2VsZiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYXRmb3JtPSd3aW4zMicp
LAogICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlOi8vL2M6L2Zvby9iYXIuaHRtbCIpCiAK
QEAgLTkxLDEwICs4NCwyMiBAQCBjbGFzcyBBYnNwYXRoVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6
CiAKICAgICAgICAgIyBOb3RlIHRoYXQgeW91IGNhbid0IGhhdmUgJz8nIGluIGEgZmlsZW5hbWUg
b24gd2luZG93cy4KICAgICAgICAgc2VsZi5hc3NlcnRNYXRjaCgnL2N5Z2RyaXZlL2MvZm9vL2Jh
ciArIGJheiUuaHRtbCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpbGU6Ly8vYzovZm9v
L2JhciUyMCslMjBiYXolMjUuaHRtbCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcGxhdGZv
cm09J2N5Z3dpbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY3lncGF0aF9yZXN1bHQ9J2M6
XFxmb29cXGJhciArIGJheiUuaHRtbFxuJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAnZmls
ZTovLy9DOi9mb28vYmFyJTIwKyUyMGJheiUyNS5odG1sJywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICBwbGF0Zm9ybT0nY3lnd2luJykKKworICAgIGRlZiB0ZXN0X3N0b3BfY3lncGF0aF9zdWJw
cm9jZXNzKHNlbGYpOgorICAgICAgICBpZiBzeXMucGxhdGZvcm0gIT0gJ2N5Z3dpbic6CisgICAg
ICAgICAgICByZXR1cm4KKworICAgICAgICAjIENhbGwgY3lncGF0aCB0byBlbnN1cmUgdGhlIHN1
YnByb2Nlc3MgaXMgcnVubmluZy4KKyAgICAgICAgcGF0aC5jeWdwYXRoKCIvY3lnZHJpdmUvYy9m
b28udHh0IikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBhdGguX0N5Z1BhdGguX3NpbmdsZXRv
bi5pc19ydW5uaW5nKCkpCisKKyAgICAgICAgIyBTdG9wIGl0LgorICAgICAgICBwYXRoLl9DeWdQ
YXRoLnN0b3BfY3lncGF0aF9zdWJwcm9jZXNzKCkKIAorICAgICAgICAjIEVuc3VyZSB0aGF0IGl0
IGlzIHN0b3BwZWQuCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocGF0aC5fQ3lnUGF0aC5fc2lu
Z2xldG9uLmlzX3J1bm5pbmcoKSkKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB1
bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL2RlZHVwbGljYXRlX3Rlc3RzX3VuaXR0ZXN0LnB5IGIvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvZGVkdXBsaWNhdGVfdGVzdHNfdW5pdHRlc3Qu
cHkKaW5kZXggYmI5NjA0ZjVjNTAyYmFiZjcxMzJiMDAwNzA5OTIzOGVmNTU5OGE5YS4uMzA5YmY4
ZDllN2FiMWEwOGNhM2RkZGViODYxNDhjNmNhY2QxMzJhYyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvZGVkdXBsaWNhdGVfdGVzdHNfdW5pdHRl
c3QucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvZGVk
dXBsaWNhdGVfdGVzdHNfdW5pdHRlc3QucHkKQEAgLTIwNSwzICsyMDUsNiBAQCBjbGFzcyBMaXN0
RHVwbGljYXRlc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBmb3IgZXhwZWN0ZWQs
IGlucHV0cyBpbiB0ZXN0X2Nhc2VzOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZXhw
ZWN0ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWR1cGxpY2F0ZV90ZXN0cy5n
ZXRfcmVsYXRpdmVfdGVzdF9wYXRoKCppbnB1dHMpKQorCitpZiBfX25hbWVfXyA9PSAnX19tYWlu
X18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5CmluZGV4IGIxNWVkYjI0NjQ2OGJm
ODJkYzk1NTIwZTQzZDQ5ZGI4ODFiYmU4YWUuLmNiOTY5MTM1ODJkNmYxNzdjZjJhYmJkZGE4NzVl
ZTdjZTZiNjE3NGUgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkKQEAgLTQ5LDYgKzQ5LDcgQEAgaW1wb3J0IHdlYnNv
Y2tldF9zZXJ2ZXIKIAogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtIGltcG9ydCBsb2d1dGls
cwogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgRXhlY3V0aXZl
LCBTY3JpcHRFcnJvcgorZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLnBhdGggaW1wb3J0IGFi
c3BhdGhfdG9fdXJpCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0udXNlciBpbXBvcnQgVXNl
cgogCiAKQEAgLTMzNiwxNyArMzM3LDcgQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAgICAgICAg
ICAgICAgIHByb3RvY29sID0gImh0dHAiCiAgICAgICAgICAgICByZXR1cm4gIiVzOi8vMTI3LjAu
MC4xOiV1LyVzIiAlIChwcm90b2NvbCwgcG9ydCwgcmVsYXRpdmVfcGF0aCkKIAotICAgICAgICBh
YnNwYXRoID0gb3MucGF0aC5hYnNwYXRoKGZpbGVuYW1lKQotCi0gICAgICAgICMgT24gV2luZG93
cywgYWJzb2x1dGUgcGF0aHMgYXJlIG9mIHRoZSBmb3JtICJjOlxmb28udHh0Ii4gSG93ZXZlciwK
LSAgICAgICAgIyBhbGwgY3VycmVudCBicm93c2VycyAoZXhjZXB0IGZvciBPcGVyYSkgbm9ybWFs
aXplIGZpbGUgVVJMcyBieQotICAgICAgICAjIHByZXBlbmRpbmcgYW4gYWRkaXRpb25hbCAiLyIg
YXMgaWYgdGhlIGFic29sdXRlIHBhdGggd2FzCi0gICAgICAgICMgIi9jOi9mb28udHh0Ii4gVGhp
cyBtZWFucyB0aGF0IGFsbCBmaWxlIFVSTHMgZW5kIHVwIHdpdGggImZpbGU6Ly8vIgotICAgICAg
ICAjIGF0IHRoZSBiZWdpbm5pbmcuCi0gICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzIn
OgotICAgICAgICAgICAgYWJzcGF0aCA9ICcvJyArIGFic3BhdGgucmVwbGFjZSgnXFwnLCAnLycp
Ci0KLSAgICAgICAgcmV0dXJuICJmaWxlOi8vIiArIGFic3BhdGgKKyAgICAgICAgcmV0dXJuIGFi
c3BhdGhfdG9fdXJpKG9zLnBhdGguYWJzcGF0aChmaWxlbmFtZSkpCiAKICAgICBkZWYgdGVzdHMo
c2VsZiwgcGF0aHMpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIGxpc3Qgb2YgdGVzdHMgZm91bmQg
KHJlbGF0aXZlIHRvIGxheW91dF90ZXN0c19kaXIoKS4iIiIKQEAgLTM5NSwxMiArMzg2LDggQEAg
Y2xhc3MgUG9ydChvYmplY3QpOgogICAgICAgICAiIiIKICAgICAgICAgdGVzdCA9IHVyaQogICAg
ICAgICBpZiB1cmkuc3RhcnRzd2l0aCgiZmlsZTovLy8iKToKLSAgICAgICAgICAgIGlmIHN5cy5w
bGF0Zm9ybSA9PSAnd2luMzInOgotICAgICAgICAgICAgICAgIHRlc3QgPSB0ZXN0LnJlcGxhY2Uo
J2ZpbGU6Ly8vJywgJycpCi0gICAgICAgICAgICAgICAgdGVzdCA9IHRlc3QucmVwbGFjZSgnLycs
ICdcXCcpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHRlc3QgPSB0ZXN0LnJl
cGxhY2UoJ2ZpbGU6Ly8nLCAnJykKLSAgICAgICAgICAgIHJldHVybiBzZWxmLnJlbGF0aXZlX3Rl
c3RfZmlsZW5hbWUodGVzdCkKKyAgICAgICAgICAgIHByZWZpeCA9IGFic3BhdGhfdG9fdXJpKHNl
bGYubGF5b3V0X3Rlc3RzX2RpcigpKSArICIvIgorICAgICAgICAgICAgcmV0dXJuIHRlc3RbbGVu
KHByZWZpeCk6XQogCiAgICAgICAgIGlmIHVyaS5zdGFydHN3aXRoKCJodHRwOi8vMTI3LjAuMC4x
Ojg4ODAvIik6CiAgICAgICAgICAgICAjIHdlYnNvY2tldCB0ZXN0cwpkaWZmIC0tZ2l0IGEvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlX3VuaXR0ZXN0
LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNl
X3VuaXR0ZXN0LnB5CmluZGV4IDQwZWI5ODRjYjkxNGE1OTUwOTY5OTAyMDgwOWEzYjBkNjAyMmEx
MGMuLmJhZWNhZDlkNGFiMjU3MWU4NzZmMjFlMzYzNmQ1NGM2ZDViMTAxMmMgMTAwNjQ0Ci0tLSBh
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZV91bml0
dGVzdC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L2Jhc2VfdW5pdHRlc3QucHkKQEAgLTMzLDYgKzMzLDcgQEAgaW1wb3J0IHN5cwogaW1wb3J0
IHRlbXBmaWxlCiBpbXBvcnQgdW5pdHRlc3QKIAorZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVt
LnBhdGggaW1wb3J0IGFic3BhdGhfdG9fdXJpCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0u
ZXhlY3V0aXZlIGltcG9ydCBFeGVjdXRpdmUsIFNjcmlwdEVycm9yCiBmcm9tIHdlYmtpdHB5LnRo
aXJkcGFydHkubW9jayBpbXBvcnQgTW9jawogCkBAIC0yNDQsOCArMjQ1LDcgQEAgY2xhc3MgUG9y
dFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICAgICAgcGF0aCA9IHRlc3RfZmlsZQog
CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5maWxlbmFtZV90b191cmkodGVzdF9maWxl
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXggKyBwYXRoKQotCisgICAgICAgICAg
ICAgICAgICAgICAgICAgYWJzcGF0aF90b191cmkodGVzdF9maWxlKSkKIAogCiBjbGFzcyBWaXJ0
dWFsVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5IGIvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weQppbmRleCAwZmFl
NjJmM2EyMzFlNjBkZDY2NDk5MmU3NWQwZDE4ZDM1YTNhYzI2Li44MzU2YmQ5MGRmYjA2NjU4M2Q2
MzcxM2NmYmMzMDc3MWI3Njc2MWI0IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5CisrKyBiL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkKQEAgLTQzLDYgKzQz
LDEwIEBAIGltcG9ydCB0ZW1wZmlsZQogaW1wb3J0IHRpbWUKIGltcG9ydCB3ZWJicm93c2VyCiAK
K2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IEV4ZWN1dGl2ZQor
ZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLnBhdGggaW1wb3J0IGN5Z3BhdGgKK2Zyb20gd2Vi
a2l0cHkubGF5b3V0X3Rlc3RzLmxheW91dF9wYWNrYWdlIGltcG9ydCB0ZXN0X2V4cGVjdGF0aW9u
cworCiBpbXBvcnQgYmFzZQogaW1wb3J0IGh0dHBfc2VydmVyCiAKQEAgLTM0NCw2ICszNDgsMTMg
QEAgY2xhc3MgQ2hyb21pdW1Qb3J0KGJhc2UuUG9ydCk6CiAgICAgICAgICAgICBwbGF0Zm9ybSA9
IHNlbGYubmFtZSgpCiAgICAgICAgIHJldHVybiBzZWxmLnBhdGhfZnJvbV93ZWJraXRfYmFzZSgn
TGF5b3V0VGVzdHMnLCAncGxhdGZvcm0nLCBwbGF0Zm9ybSkKIAorICAgIGRlZiBfY29udmVydF9w
YXRoKHNlbGYsIHBhdGgpOgorICAgICAgICAiIiJIYW5kbGVzIGZpbGVuYW1lIGNvbnZlcnNpb24g
Zm9yIHN1YnByb2Nlc3MgY29tbWFuZCBsaW5lIGFyZ3MuIiIiCisgICAgICAgICMgU2VlIG5vdGUg
YWJvdmUgaW4gZGlmZl9pbWFnZSgpIGZvciB3aHkgd2UgbmVlZCB0aGlzLgorICAgICAgICBpZiBz
eXMucGxhdGZvcm0gPT0gJ2N5Z3dpbic6CisgICAgICAgICAgICByZXR1cm4gY3lncGF0aChwYXRo
KQorICAgICAgICByZXR1cm4gcGF0aAorCiAgICAgZGVmIF9wYXRoX3RvX2ltYWdlX2RpZmYoc2Vs
Zik6CiAgICAgICAgIGJpbmFyeV9uYW1lID0gJ2ltYWdlX2RpZmYnCiAgICAgICAgIGlmIHNlbGYu
X29wdGlvbnMudXNlX2RydDoKQEAgLTM2Myw3ICszNzQsOSBAQCBjbGFzcyBDaHJvbWl1bURyaXZl
cihiYXNlLkRyaXZlcik6CiAgICAgZGVmIF9kcml2ZXJfYXJncyhzZWxmKToKICAgICAgICAgZHJp
dmVyX2FyZ3MgPSBbXQogICAgICAgICBpZiBzZWxmLl9pbWFnZV9wYXRoOgotICAgICAgICAgICAg
ZHJpdmVyX2FyZ3MuYXBwZW5kKCItLXBpeGVsLXRlc3RzPSIgKyBzZWxmLl9pbWFnZV9wYXRoKQor
ICAgICAgICAgICAgIyBTZWUgbm90ZSBhYm92ZSBpbiBkaWZmX2ltYWdlKCkgZm9yIHdoeSB3ZSBu
ZWVkIF9jb252ZXJ0X3BhdGgoKS4KKyAgICAgICAgICAgIGRyaXZlcl9hcmdzLmFwcGVuZCgiLS1w
aXhlbC10ZXN0cz0iICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9wb3J0
Ll9jb252ZXJ0X3BhdGgoc2VsZi5faW1hZ2VfcGF0aCkpCiAKICAgICAgICAgaWYgc2VsZi5fb3B0
aW9ucy51c2VfZHJ0OgogICAgICAgICAgICAgZHJpdmVyX2FyZ3MuYXBwZW5kKCctLXRlc3Qtc2hl
bGwnKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9jaHJvbWl1bV91bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fdW5pdHRlc3QucHkKaW5kZXggZTM4NThmMGM0
ZmM2NzJiMzg5YmM5MTg4ZjlhZDYwNjhlMTFjZWU2Ni4uMmU5NDYxYTNmNDcwYWIxYTI4ZGY4ZWU4
YTUyMzk3MmZjM2Y4ZjUyOSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV91bml0dGVzdC5weQorKysgYi9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3VuaXR0ZXN0LnB5
CkBAIC0xNzYsNyArMTc2LDkgQEAgREVGRVIgTElOVVggV0lOIDogZmFzdC9qcy92ZXJ5LWdvb2Qu
anMgPSBUSU1FT1VUIFBBU1MiIiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5f
ZXhpdF9jb2RlPUZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybl9zdGRl
cnI9VHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGVfb3V0cHV0PUZhbHNl
KToKLSAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fcmVzdWx0CisgICAgICAgICAgICAgICAg
aWYgcmV0dXJuX2V4aXRfY29kZToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3Jl
c3VsdAorICAgICAgICAgICAgICAgIHJldHVybiAnJwogCiAgICAgICAgIG9wdGlvbnMgPSBFbXB0
eU9wdGlvbnMoKQogICAgICAgICBwb3J0ID0gQ2hyb21pdW1Qb3J0VGVzdC5UZXN0TGludXhQb3J0
KG9wdGlvbnMpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L2h0dHBfbG9ja191bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvaHR0cF9sb2NrX3VuaXR0ZXN0LnB5CmluZGV4IGYy
ZTRjZTU3Y2JkMWExZDA0NDIzYWYwNTZlOTYxMGYxMDc5NWUwZmEuLjg1Yzc2MGFjNWZhMDQzNjk5
MWQ0ODYzODcxMjBjODdmYmQ2MmM5MDQgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvaHR0cF9sb2NrX3VuaXR0ZXN0LnB5CisrKyBiL1dl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvaHR0cF9sb2NrX3Vu
aXR0ZXN0LnB5CkBAIC00Myw3ICs0Myw3IEBAIGNsYXNzIEh0dHBMb2NrVGVzdCh1bml0dGVzdC5U
ZXN0Q2FzZSk6CiAKICAgICBkZWYgY2xlYW5fYWxsX2xvY2tmaWxlKHNlbGYpOgogICAgICAgICBp
ZiBvcy5wYXRoLmV4aXN0cyhzZWxmLmd1YXJkX2xvY2tfZmlsZSk6Ci0gICAgICAgICAgICBvcy51
bmxpbmsoZ3VhcmRfbG9ja19maWxlKQorICAgICAgICAgICAgb3MudW5saW5rKHNlbGYuZ3VhcmRf
bG9ja19maWxlKQogICAgICAgICBsb2NrX2xpc3QgPSBnbG9iLmdsb2Ioc2VsZi5sb2NrX2ZpbGVf
cGF0aF9wcmVmaXggKyAnKicpCiAgICAgICAgIGZvciBmaWxlX25hbWUgaW4gbG9ja19saXN0Ogog
ICAgICAgICAgICAgb3MudW5saW5rKGZpbGVfbmFtZSkK
</data>

          </attachment>
      

    </bug>

</bugzilla>