<?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>57987</bug_id>
          
          <creation_ts>2011-04-06 15:07:17 -0700</creation_ts>
          <short_desc>new-run-webkit-tests: implement support for audio files</short_desc>
          <delta_ts>2011-04-08 13:08:30 -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>58101</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Pranke">dpranke</reporter>
          <assigned_to name="Dirk Pranke">dpranke</assigned_to>
          <cc>crogers</cc>
    
    <cc>dpranke</cc>
    
    <cc>hayato</cc>
    
    <cc>ojan</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>380878</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-04-06 15:07:17 -0700</bug_when>
    <thetext>new-run-webkit-tests: implement support for audio files</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380883</commentid>
    <comment_count>1</comment_count>
      <attachid>88524</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-04-06 15:09:06 -0700</bug_when>
    <thetext>Created attachment 88524
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380884</commentid>
    <comment_count>2</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-04-06 15:11:59 -0700</bug_when>
    <thetext>Okay, I think this patch should do the trick. Chris, I haven&apos;t applied your audio patch locally yet to test it, so I&apos;ll do that now.

Ito-san, all of your refactoring paid off - adding the new failure type was dirt simple :).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380885</commentid>
    <comment_count>3</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-04-06 15:12:29 -0700</bug_when>
    <thetext>Assuming we&apos;re relatively happy with how this is working in NRWT, adding support to ORWT should be pretty easy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380935</commentid>
    <comment_count>4</comment_count>
      <attachid>88524</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-04-06 16:05:00 -0700</bug_when>
    <thetext>Comment on attachment 88524
Patch

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

r- because no tests and until it&apos;s clear whether we have .txt and .wav or just .wav.

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/single_test_runner.py:85
&gt; +            for suffix in [&apos;.txt&apos;, &apos;.checksum&apos;, &apos;.png&apos;, &apos;.wav&apos;]:

Nit: [] to ()

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/single_test_runner.py:241
&gt; +            if expected_audio == &apos;&apos;:

&apos;&apos; or None?  It looks like this will be None if the file is not found.  Maybe just change this to &apos;if not expected_audio:&apos;

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:44
&gt; +(PASS, FAIL, TEXT, IMAGE, IMAGE_PLUS_TEXT, AUDIO, AUDIO_PLUS_TEXT, TIMEOUT,

I thought these tests only generated .wav files (i.e., no text file)?

&gt; Tools/Scripts/webkitpy/layout_tests/port/webkit.py:447
&gt;              elif line.startswith(&apos;Content-Type:&apos;):
&gt; -                pass
&gt; +                content_type = &apos; &apos;.split(line)[1]
&gt; +            elif line.startswith(&apos;Content-Transfer-Encoding:&apos;):

Should Content-Type: and Content-Transfer-Encoding: be consts like Content-Length:?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380940</commentid>
    <comment_count>5</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-04-06 16:09:07 -0700</bug_when>
    <thetext>Can you give some context for this? What would a test that uses audio look like?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380943</commentid>
    <comment_count>6</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-04-06 16:11:24 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Can you give some context for this? What would a test that uses audio look like?

https://bugs.webkit.org/show_bug.cgi?id=57969</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381002</commentid>
    <comment_count>7</comment_count>
      <attachid>88548</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-04-06 17:45:13 -0700</bug_when>
    <thetext>Created attachment 88548
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381008</commentid>
    <comment_count>8</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-04-06 17:52:14 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 88524 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=88524&amp;action=review
&gt; 
&gt; r- because no tests and until it&apos;s clear whether we have .txt and .wav or just .wav.
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/layout_package/single_test_runner.py:85
&gt; &gt; +            for suffix in [&apos;.txt&apos;, &apos;.checksum&apos;, &apos;.png&apos;, &apos;.wav&apos;]:
&gt; 
&gt; Nit: [] to ()
&gt; 

Will change in the third patch.

&gt; &gt; Tools/Scripts/webkitpy/layout_tests/layout_package/single_test_runner.py:241
&gt; &gt; +            if expected_audio == &apos;&apos;:
&gt; 
&gt; &apos;&apos; or None?  It looks like this will be None if the file is not found.  Maybe just change this to &apos;if not expected_audio:&apos;
&gt;

Yup, changed to None.
 
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:44
&gt; &gt; +(PASS, FAIL, TEXT, IMAGE, IMAGE_PLUS_TEXT, AUDIO, AUDIO_PLUS_TEXT, TIMEOUT,
&gt; 
&gt; I thought these tests only generated .wav files (i.e., no text file)?
&gt;

Yup, changed.
 
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/port/webkit.py:447
&gt; &gt;              elif line.startswith(&apos;Content-Type:&apos;):
&gt; &gt; -                pass
&gt; &gt; +                content_type = &apos; &apos;.split(line)[1]
&gt; &gt; +            elif line.startswith(&apos;Content-Transfer-Encoding:&apos;):
&gt; 
&gt; Should Content-Type: and Content-Transfer-Encoding: be consts like Content-Length:?

Yup, changed.

Note the second patch adds a bunch of tests and also shuffles the logic a bit so that tests will pass when we have an audio file but no text file (previously we always assumed we&apos;d get a text file and would report MISSING if it didn&apos;t exist).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381018</commentid>
    <comment_count>9</comment_count>
      <attachid>88553</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-04-06 18:02:54 -0700</bug_when>
    <thetext>Created attachment 88553
more testing, review feedback from tony, update mock_drt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381027</commentid>
    <comment_count>10</comment_count>
      <attachid>88554</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-04-06 18:17:33 -0700</bug_when>
    <thetext>Created attachment 88554
more updates, testing, add note about missing LF after content-length</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381450</commentid>
    <comment_count>11</comment_count>
      <attachid>88554</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-04-07 10:14:41 -0700</bug_when>
    <thetext>Comment on attachment 88554
more updates, testing, add note about missing LF after content-length

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

Close, but seems like we could use one more round.

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/single_test_runner.py:95
&gt; +                                 self._port.expected_checksum(self._filename),
&gt; +                                 audio=self._port.expected_audio(self._filename))

Nit: It seems inconsistent that only audio is named.  Maybe name the other keyword params or remove audio= ?

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/single_test_runner.py:244
&gt; +            if actual_audio and expected_audio is None:

if there&apos;s no actual_audio, but expected_audio is None, shouldn&apos;t that still be a missing audio error?  E.g., _compare_text doesn&apos;t do this check.

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/single_test_runner.py:258
&gt; +        if not output:
&gt; +            return output

Why do we need this?

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:45
&gt; +(PASS, FAIL, TEXT, IMAGE, IMAGE_PLUS_TEXT, AUDIO, TIMEOUT,
&gt; + CRASH, SKIP, WONTFIX, SLOW, REBASELINE, MISSING, FLAKY, NOW, NONE) = range(16)

Nit: The wrapping here seems really arbitrary.

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/test_result_writer.py:69
&gt; +        elif isinstance(failure, test_failures.FailureAudioMismatch):
&gt; +            writer.write_audio_files(driver_output.audio, expected_driver_output.audio)
&gt; +        elif isinstance(failure, test_failures.FailureMissingAudio):
&gt; +            writer.write_audio_files(driver_output.audio, expected_audio=None)

Can we just use an or here?  I think expected_driver_output.audio would be None in the missing case.

&gt; Tools/Scripts/webkitpy/layout_tests/port/mock_drt.py:215
&gt; +        if False and actual_audio:

Did you mean to remove the False here?  How do the tests pass?

&gt; Tools/Scripts/webkitpy/layout_tests/port/webkit.py:420
&gt; +        if block.content_type == &apos;audio/wav&apos;:
&gt; +            audio = block.decoded_content
&gt; +        else:
&gt; +            output = block.decoded_content

I would probably push more of this logic into ContentBlock.  E.g.,
audio = block.get_audio_content()
output = block.get_text_content()

&gt; Tools/Scripts/webkitpy/layout_tests/port/webkit.py:426
&gt; +        if block.content and block.content_type == &apos;image/png&apos;:
&gt; +            image = block.decoded_content
&gt; +            actual_image_hash = block.content_hash

This as well, so you wouldn&apos;t need to pre-declare these variables.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381531</commentid>
    <comment_count>12</comment_count>
      <attachid>88554</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-04-07 11:43:01 -0700</bug_when>
    <thetext>Comment on attachment 88554
more updates, testing, add note about missing LF after content-length

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

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/single_test_runner.py:95
&gt;&gt; +                                 audio=self._port.expected_audio(self._filename))
&gt; 
&gt; Nit: It seems inconsistent that only audio is named.  Maybe name the other keyword params or remove audio= ?

Will fix by adding keyword args to the others; I didn&apos;t want to splice in the audio param and potentially break any other caller that wasn&apos;t using the names, and the constructors takes like twelve arguments (unfortunately).

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/single_test_runner.py:244
&gt;&gt; +            if actual_audio and expected_audio is None:
&gt; 
&gt; if there&apos;s no actual_audio, but expected_audio is None, shouldn&apos;t that still be a missing audio error?  E.g., _compare_text doesn&apos;t do this check.

The routines in the Port class and DriverOutput are not consistent over how None and &apos;&apos; should be interpreted. I was reluctant to try and fix this as part of this patch in order to avoid changing too many things at once. I think maybe I&apos;ll try to clean up the existing code first in a separate patch and then update this accordingly and hopefully that will clarify some of these issues.

That said, if there&apos;s no expected audio, and no actual audio, then the text simply doesn&apos;t use audio and while the audio is &quot;missing&quot;, it&apos;s not an error.

compare_text didn&apos;t have this logic, because before this change, there was *always* audio and hence if it was missing, it was always an error. We get around this by the &quot;if&quot; block above on line 222. A different way to interpret this would be to push the if check into _compare_text and remove the if on line 222, if possible. I&apos;ll see what I can do to try and clean that up.

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/single_test_runner.py:258
&gt;&gt; +            return output
&gt; 
&gt; Why do we need this?

if output == None, the replace() crashes. This is related to the whole None vs. &apos;&apos; confusion, above.

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:45
&gt;&gt; + CRASH, SKIP, WONTFIX, SLOW, REBASELINE, MISSING, FLAKY, NOW, NONE) = range(16)
&gt; 
&gt; Nit: The wrapping here seems really arbitrary.

I&apos;ll see if I can make it slightly less arbitrary.

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/test_result_writer.py:69
&gt;&gt; +            writer.write_audio_files(driver_output.audio, expected_audio=None)
&gt; 
&gt; Can we just use an or here?  I think expected_driver_output.audio would be None in the missing case.

Possibly. I&apos;ll try it and see if there&apos;s some catch that isn&apos;t immediately obvious.

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/port/mock_drt.py:215
&gt;&gt; +        if False and actual_audio:
&gt; 
&gt; Did you mean to remove the False here?  How do the tests pass?

Yes, I meant to remove the False.

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/port/webkit.py:420
&gt;&gt; +            output = block.decoded_content
&gt; 
&gt; I would probably push more of this logic into ContentBlock.  E.g.,
&gt; audio = block.get_audio_content()
&gt; output = block.get_text_content()

I&apos;m not sure I see the advantage here. ContentBlock is at the moment just a struct. A single block can&apos;t have multiple values at once, so both of those routines would have to be if statements that either return the actual content or None, which I don&apos;t think makes things much clearer. Maybe I&apos;m not seeing what you have in mind?

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/port/webkit.py:426
&gt;&gt; +            actual_image_hash = block.content_hash
&gt; 
&gt; This as well, so you wouldn&apos;t need to pre-declare these variables.

You lost me here. How do I get away with not pre-declaring the variables? I need them to be defined so that they can be returned on line 439.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381550</commentid>
    <comment_count>13</comment_count>
      <attachid>88554</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-04-07 11:59:06 -0700</bug_when>
    <thetext>Comment on attachment 88554
more updates, testing, add note about missing LF after content-length

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

&gt;&gt;&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/single_test_runner.py:258
&gt;&gt;&gt; +            return output
&gt;&gt; 
&gt;&gt; Why do we need this?
&gt; 
&gt; if output == None, the replace() crashes. This is related to the whole None vs. &apos;&apos; confusion, above.

I mean, why are we calling _get_normalized_output_text/_compare_text on None?  In the case of audio data, we don&apos;t need to call _compare_text, do we?

&gt;&gt;&gt; Tools/Scripts/webkitpy/layout_tests/port/webkit.py:420
&gt;&gt;&gt; +            output = block.decoded_content
&gt;&gt; 
&gt;&gt; I would probably push more of this logic into ContentBlock.  E.g.,
&gt;&gt; audio = block.get_audio_content()
&gt;&gt; output = block.get_text_content()
&gt; 
&gt; I&apos;m not sure I see the advantage here. ContentBlock is at the moment just a struct. A single block can&apos;t have multiple values at once, so both of those routines would have to be if statements that either return the actual content or None, which I don&apos;t think makes things much clearer. Maybe I&apos;m not seeing what you have in mind?

Right, it would just move the if statement into the class.  It would save having to write audio = None and output = None at the top of this method.  I don&apos;t feel strongly about this change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381557</commentid>
    <comment_count>14</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-04-07 12:06:16 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 88554 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=88554&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/single_test_runner.py:258
&gt; &gt;&gt;&gt; +            return output
&gt; &gt;&gt; 
&gt; &gt;&gt; Why do we need this?
&gt; &gt; 
&gt; &gt; if output == None, the replace() crashes. This is related to the whole None vs. &apos;&apos; confusion, above.
&gt; 
&gt; I mean, why are we calling _get_normalized_output_text/_compare_text on None?  In the case of audio data, we don&apos;t need to call _compare_text, do we?

It&apos;s possible this is a left over result of some intermediate steps in getting this all working. I&apos;ll try to get this all cleaned up as part of the cleanup of the None/&apos;&apos; issue.

&gt; 
&gt; &gt;&gt;&gt; Tools/Scripts/webkitpy/layout_tests/port/webkit.py:420
&gt; &gt;&gt;&gt; +            output = block.decoded_content
&gt; &gt;&gt; 
&gt; &gt;&gt; I would probably push more of this logic into ContentBlock.  E.g.,
&gt; &gt;&gt; audio = block.get_audio_content()
&gt; &gt;&gt; output = block.get_text_content()
&gt; &gt; 
&gt; &gt; I&apos;m not sure I see the advantage here. ContentBlock is at the moment just a struct. A single block can&apos;t have multiple values at once, so both of those routines would have to be if statements that either return the actual content or None, which I don&apos;t think makes things much clearer. Maybe I&apos;m not seeing what you have in mind?
&gt; 
&gt; Right, it would just move the if statement into the class.  It would save having to write audio = None and output = None at the top of this method.  I don&apos;t feel strongly about this change.

I think this wil muddy the purpose of _read_block() and ContentBlock, so I&apos;d prefer to leave it as-is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381937</commentid>
    <comment_count>15</comment_count>
      <attachid>88756</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-04-07 19:29:04 -0700</bug_when>
    <thetext>Created attachment 88756
split into two patches</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381939</commentid>
    <comment_count>16</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-04-07 19:30:46 -0700</bug_when>
    <thetext>Okay, I&apos;ve moved most of the generic cleanup into bug 58101, but I left the refactoring of the reading of blocks of output from DRT in this patch. Theoretically I could split this into yet another patch, but this patch is pretty readable as is and most of the changes make sense in the context of the audio change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>382374</commentid>
    <comment_count>17</comment_count>
      <attachid>88756</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-04-08 10:48:58 -0700</bug_when>
    <thetext>Comment on attachment 88756
split into two patches

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

&gt; Tools/Scripts/webkitpy/layout_tests/port/base.py:882
&gt; +    def __init__(self, text=None, image=None, image_hash=None, audio=None,
&gt; +                 crash=False, test_time=0, timeout=False, error=&apos;&apos;):

Nit: Making all the params named parameters makes things noisier to me and it&apos;s inconsistent with what we do for other functions.  I liked the old way better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>382451</commentid>
    <comment_count>18</comment_count>
      <attachid>88857</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-04-08 12:29:03 -0700</bug_when>
    <thetext>Created attachment 88857
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>382489</commentid>
    <comment_count>19</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-04-08 13:08:30 -0700</bug_when>
    <thetext>Committed r83330: &lt;http://trac.webkit.org/changeset/83330&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88524</attachid>
            <date>2011-04-06 15:09:06 -0700</date>
            <delta_ts>2011-04-06 17:45:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-57987-20110406150904.patch</filename>
            <type>text/plain</type>
            <size>14907</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODMwOTcKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCBlOWU5ZTVjZjg5ZWNlNTA4MTEwMDhhNDIyMTg3NDNmNzJj
MThhNzljLi42NWE0YjlkNGZjM2ZlNmY3MmMyOWJmOTEzZTMzZjMwYWJhZDlmZGQ5IDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYg
QEAKKzIwMTEtMDQtMDYgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgbmV3LXJ1bi13ZWJr
aXQtdGVzdHM6IGltcGxlbWVudCBzdXBwb3J0IGZvciBhdWRpbyBmaWxlcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTc5ODcKKworICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3NpbmdsZV90ZXN0X3J1
bm5lci5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRf
cGFja2FnZS90ZXN0X2V4cGVjdGF0aW9ucy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2ZhaWx1cmVzLnB5OgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weToKKwogMjAxMS0wNC0w
NiAgWmFuIERvYmVyc2VrICA8emFuZG9iZXJzZWtAZ21haWwuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IEVyaWMgU2VpZGVsLgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2Uvc2luZ2xlX3Rlc3RfcnVubmVyLnB5IGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2Uvc2luZ2xlX3Rlc3Rf
cnVubmVyLnB5CmluZGV4IGE4YzcxNmY4ZGMwYzI4ZDkyNjVkODdkNWNhOTVjMWYyYTc5YmIwMzMu
Ljg5MzVhOWQzMzgwNmZjODFlM2Q3ZjEyMzc1Yzc5MTNlM2JlNzkyY2UgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3NpbmdsZV90
ZXN0X3J1bm5lci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9s
YXlvdXRfcGFja2FnZS9zaW5nbGVfdGVzdF9ydW5uZXIucHkKQEAgLTgyLDcgKzgyLDcgQEAgY2xh
c3MgU2luZ2xlVGVzdFJ1bm5lcjoKICAgICAgICAgICAgICMgRm9yIGV4YW1wbGUsIGlmICdmb28u
aHRtbCcgaGFzIHR3byBleHBlY3RhdGlvbiBmaWxlcywgJ2Zvby1leHBlY3RlZC5odG1sJyBhbmQK
ICAgICAgICAgICAgICMgJ2Zvby1leHBlY3RlZC50eHQnLCB3ZSBzaG91bGQgd2FybiB1c2Vycy4g
T25lIHRlc3QgZmlsZSBtdXN0IGJlIHVzZWQgZXhjbHVzaXZlbHkKICAgICAgICAgICAgICMgaW4g
ZWl0aGVyIGxheW91dCB0ZXN0cyBvciByZWZ0ZXN0cywgYnV0IG5vdCBpbiBib3RoLgotICAgICAg
ICAgICAgZm9yIHN1ZmZpeCBpbiBbJy50eHQnLCAnLmNoZWNrc3VtJywgJy5wbmcnXToKKyAgICAg
ICAgICAgIGZvciBzdWZmaXggaW4gWycudHh0JywgJy5jaGVja3N1bScsICcucG5nJywgJy53YXYn
XToKICAgICAgICAgICAgICAgICBleHBlY3RlZF9maWxlbmFtZSA9IHNlbGYuX3BvcnQuZXhwZWN0
ZWRfZmlsZW5hbWUoc2VsZi5fZmlsZW5hbWUsIHN1ZmZpeCkKICAgICAgICAgICAgICAgICBpZiBm
cy5leGlzdHMoZXhwZWN0ZWRfZmlsZW5hbWUpOgogICAgICAgICAgICAgICAgICAgICBfbG9nLmVy
cm9yKCdUaGUgcmVmdGVzdCAoJXMpIGNhbiBub3QgaGF2ZSBhbiBleHBlY3RhdGlvbiBmaWxlICgl
cykuJwpAQCAtMTQyLDYgKzE0Miw5IEBAIGNsYXNzIFNpbmdsZVRlc3RSdW5uZXI6CiAgICAgICAg
ICMgRHVtcFJlbmRlclRyZWUgbWF5IG5vdCBvdXRwdXQgdXRmLTggdGV4dCAoZS5nLiB3ZWJhcmNo
aXZlcykuCiAgICAgICAgIHNlbGYuX3NhdmVfYmFzZWxpbmVfZGF0YShkcml2ZXJfb3V0cHV0LnRl
eHQsICIudHh0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlX25l
d19iYXNlbGluZT1zZWxmLl9vcHRpb25zLm5ld19iYXNlbGluZSkKKyAgICAgICAgaWYgZHJpdmVy
X291dHB1dC5hdWRpbzoKKyAgICAgICAgICAgIHNlbGYuX3NhdmVfYmFzZWxpbmVfZGF0YShkcml2
ZXJfb3V0cHV0LmF1ZGlvLCAnLndhdicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ2VuZXJhdGVfbmV3X2Jhc2VsaW5lPXNlbGYuX29wdGlvbnMubmV3X2Jhc2VsaW5lKQog
ICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnBpeGVsX3Rlc3RzIGFuZCBkcml2ZXJfb3V0cHV0Lmlt
YWdlX2hhc2g6CiAgICAgICAgICAgICBzZWxmLl9zYXZlX2Jhc2VsaW5lX2RhdGEoZHJpdmVyX291
dHB1dC5pbWFnZSwgIi5wbmciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGdlbmVyYXRlX25ld19iYXNlbGluZT1zZWxmLl9vcHRpb25zLm5ld19iYXNlbGluZSkKQEAgLTIx
Niw2ICsyMTksNyBAQCBjbGFzcyBTaW5nbGVUZXN0UnVubmVyOgogICAgICAgICAgICAgcmV0dXJu
IFRlc3RSZXN1bHQoc2VsZi5fZmlsZW5hbWUsIGZhaWx1cmVzLCBkcml2ZXJfb3V0cHV0LnRlc3Rf
dGltZSkKIAogICAgICAgICBmYWlsdXJlcy5leHRlbmQoc2VsZi5fY29tcGFyZV90ZXh0KGRyaXZl
cl9vdXRwdXQudGV4dCwgZXhwZWN0ZWRfZHJpdmVyX291dHB1dC50ZXh0KSkKKyAgICAgICAgZmFp
bHVyZXMuZXh0ZW5kKHNlbGYuX2NvbXBhcmVfYXVkaW8oZHJpdmVyX291dHB1dC5hdWRpbywgZXhw
ZWN0ZWRfZHJpdmVyX291dHB1dC5hdWRpbykpCiAgICAgICAgIGlmIHNlbGYuX29wdGlvbnMucGl4
ZWxfdGVzdHM6CiAgICAgICAgICAgICBmYWlsdXJlcy5leHRlbmQoc2VsZi5fY29tcGFyZV9pbWFn
ZShkcml2ZXJfb3V0cHV0LCBleHBlY3RlZF9kcml2ZXJfb3V0cHV0KSkKICAgICAgICAgcmV0dXJu
IFRlc3RSZXN1bHQoc2VsZi5fZmlsZW5hbWUsIGZhaWx1cmVzLCBkcml2ZXJfb3V0cHV0LnRlc3Rf
dGltZSkKQEAgLTIzMSw2ICsyMzUsMTUgQEAgY2xhc3MgU2luZ2xlVGVzdFJ1bm5lcjoKICAgICAg
ICAgICAgICAgICBmYWlsdXJlcy5hcHBlbmQodGVzdF9mYWlsdXJlcy5GYWlsdXJlVGV4dE1pc21h
dGNoKCkpCiAgICAgICAgIHJldHVybiBmYWlsdXJlcwogCisgICAgZGVmIF9jb21wYXJlX2F1ZGlv
KHNlbGYsIGFjdHVhbF9hdWRpbywgZXhwZWN0ZWRfYXVkaW8pOgorICAgICAgICBmYWlsdXJlcyA9
IFtdCisgICAgICAgIGlmIHNlbGYuX3BvcnQuY29tcGFyZV9hdWRpbyhhY3R1YWxfYXVkaW8sIGV4
cGVjdGVkX2F1ZGlvKToKKyAgICAgICAgICAgIGlmIGV4cGVjdGVkX2F1ZGlvID09ICcnOgorICAg
ICAgICAgICAgICAgIGZhaWx1cmVzLmFwcGVuZCh0ZXN0X2ZhaWx1cmVzLkZhaWx1cmVNaXNzaW5n
QXVkaW8oKSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZmFpbHVyZXMuYXBw
ZW5kKHRlc3RfZmFpbHVyZXMuRmFpbHVyZUF1ZGlvTWlzbWF0Y2goKSkKKyAgICAgICAgcmV0dXJu
IGZhaWx1cmVzCisKICAgICBkZWYgX2dldF9ub3JtYWxpemVkX291dHB1dF90ZXh0KHNlbGYsIG91
dHB1dCk6CiAgICAgICAgICIiIlJldHVybnMgdGhlIG5vcm1hbGl6ZWQgdGV4dCBvdXRwdXQsIGku
ZS4gdGhlIG91dHB1dCBpbiB3aGljaAogICAgICAgICB0aGUgZW5kLW9mLWxpbmUgY2hhcmFjdGVy
cyBhcmUgbm9ybWFsaXplZCB0byAiXG4iLiIiIgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9leHBlY3RhdGlvbnMucHkg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0
X2V4cGVjdGF0aW9ucy5weQppbmRleCBhZDUwYWRlYWNkOWI4MDcyODMwOGQxYzUwODlhNGM4ZGUy
NTAyZTY4Li5iMTA1NjQ2NGM0OTk3MGI4ZDA1MDk5N2JjMmNhZTMzMGI5OTE0OWNhIDEwMDY0NAot
LS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90
ZXN0X2V4cGVjdGF0aW9ucy5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2V4cGVjdGF0aW9ucy5weQpAQCAtNDEsOCArNDEsOCBA
QCBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoIndlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRf
cGFja2FnZS4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgInRlc3RfZXhwZWN0YXRpb25zIikK
IAogIyBUZXN0IGV4cGVjdGF0aW9uIGFuZCBtb2RpZmllciBjb25zdGFudHMuCi0oUEFTUywgRkFJ
TCwgVEVYVCwgSU1BR0UsIElNQUdFX1BMVVNfVEVYVCwgVElNRU9VVCwgQ1JBU0gsIFNLSVAsIFdP
TlRGSVgsCi0gU0xPVywgUkVCQVNFTElORSwgTUlTU0lORywgRkxBS1ksIE5PVywgTk9ORSkgPSBy
YW5nZSgxNSkKKyhQQVNTLCBGQUlMLCBURVhULCBJTUFHRSwgSU1BR0VfUExVU19URVhULCBBVURJ
TywgQVVESU9fUExVU19URVhULCBUSU1FT1VULAorIENSQVNILCBTS0lQLCBXT05URklYLCBTTE9X
LCBSRUJBU0VMSU5FLCBNSVNTSU5HLCBGTEFLWSwgTk9XLCBOT05FKSA9IHJhbmdlKDE3KQogCiAj
IFRlc3QgZXhwZWN0YXRpb24gZmlsZSB1cGRhdGUgYWN0aW9uIGNvbnN0YW50cwogKE5PX0NIQU5H
RSwgUkVNT1ZFX1RFU1QsIFJFTU9WRV9QTEFURk9STSwgQUREX1BMQVRGT1JNU19FWENFUFRfVEhJ
UykgPSByYW5nZSg0KQpAQCAtMTIwLDcgKzEyMCwxMCBAQCBjbGFzcyBUZXN0RXhwZWN0YXRpb25z
OgogICAgICAgICAgICAgICAgIHNlbGYuX2V4cGVjdGVkX2ZhaWx1cmVzLmdldF90ZXN0X3NldChS
RUJBU0VMSU5FLCBJTUFHRSkgfAogICAgICAgICAgICAgICAgIHNlbGYuX2V4cGVjdGVkX2ZhaWx1
cmVzLmdldF90ZXN0X3NldChSRUJBU0VMSU5FLCBURVhUKSB8CiAgICAgICAgICAgICAgICAgc2Vs
Zi5fZXhwZWN0ZWRfZmFpbHVyZXMuZ2V0X3Rlc3Rfc2V0KFJFQkFTRUxJTkUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElNQUdFX1BMVVNfVEVY
VCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IElNQUdFX1BMVVNfVEVYVCkgfAorICAgICAgICAgICAgICAgIHNlbGYuX2V4cGVjdGVkX2ZhaWx1
cmVzLmdldF90ZXN0X3NldChSRUJBU0VMSU5FLCBBVURJTykgfAorICAgICAgICAgICAgICAgIHNl
bGYuX2V4cGVjdGVkX2ZhaWx1cmVzLmdldF90ZXN0X3NldChSRUJBU0VMSU5FLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBVURJT19QTFVTX1RF
WFQpKQogCiAgICAgZGVmIGdldF9vcHRpb25zKHNlbGYsIHRlc3QpOgogICAgICAgICByZXR1cm4g
c2VsZi5fZXhwZWN0ZWRfZmFpbHVyZXMuZ2V0X29wdGlvbnModGVzdCkKQEAgLTI0NCwxMSArMjQ3
LDExIEBAIGNsYXNzIFRlc3RFeHBlY3RhdGlvbnNGaWxlOgogCiAgICAgTm90ZXM6CiAgICAgICAt
QSB0ZXN0IGNhbm5vdCBiZSBib3RoIFNMT1cgYW5kIFRJTUVPVVQKLSAgICAgIC1BIHRlc3Qgc2hv
dWxkIG9ubHkgYmUgb25lIG9mIElNQUdFLCBURVhULCBJTUFHRStURVhULCBvciBGQUlMLiBGQUlM
IGlzCi0gICAgICAgYSBtaWdyYXRvcnkgc3RhdGUgdGhhdCBjdXJyZW50bHkgbWVhbnMgZWl0aGVy
IElNQUdFLCBURVhULCBvcgotICAgICAgIElNQUdFK1RFWFQuIE9uY2Ugd2UgaGF2ZSBmaW5pc2hl
ZCBtaWdyYXRpbmcgdGhlIGV4cGVjdGF0aW9ucywgd2Ugd2lsbAotICAgICAgIGNoYW5nZSBGQUlM
IHRvIGhhdmUgdGhlIG1lYW5pbmcgb2YgSU1BR0UrVEVYVCBhbmQgcmVtb3ZlIHRoZSBJTUFHRStU
RVhUCi0gICAgICAgaWRlbnRpZmllci4KKyAgICAgIC1BIHRlc3Qgc2hvdWxkIG9ubHkgYmUgb25l
IG9mIElNQUdFLCBURVhULCBJTUFHRStURVhULCBBVURJTywgQVVESU8rVEVYVCwKKyAgICAgICBv
ciBGQUlMLiBGQUlMIGlzIGEgbGVnYWN5IHZhbHVlIHRoYXQgY3VycmVudGx5IG1lYW5zIGVpdGhl
ciBJTUFHRSwKKyAgICAgICBURVhULCBvciBJTUFHRStURVhULiBPbmNlIHdlIGhhdmUgZmluaXNo
ZWQgbWlncmF0aW5nIHRoZSBleHBlY3RhdGlvbnMsCisgICAgICAgd2Ugc2hvdWxkIGNoYW5nZSBG
QUlMIHRvIGhhdmUgdGhlIG1lYW5pbmcgb2YgSU1BR0UrVEVYVCBhbmQgcmVtb3ZlIHRoZQorICAg
ICAgIElNQUdFK1RFWFQgaWRlbnRpZmllci4KICAgICAgIC1BIHRlc3QgY2FuIGJlIGluY2x1ZGVk
IHR3aWNlLCBidXQgbm90IHZpYSB0aGUgc2FtZSBwYXRoLgogICAgICAgLUlmIGEgdGVzdCBpcyBp
bmNsdWRlZCB0d2ljZSwgdGhlbiB0aGUgbW9yZSBwcmVjaXNlIHBhdGggd2lucy4KICAgICAgIC1D
UkFTSCB0ZXN0cyBjYW5ub3QgYmUgV09OVEZJWApAQCAtMjU5LDYgKzI2Miw4IEBAIGNsYXNzIFRl
c3RFeHBlY3RhdGlvbnNGaWxlOgogICAgICAgICAgICAgICAgICAgICAndGV4dCc6IFRFWFQsCiAg
ICAgICAgICAgICAgICAgICAgICdpbWFnZSc6IElNQUdFLAogICAgICAgICAgICAgICAgICAgICAn
aW1hZ2UrdGV4dCc6IElNQUdFX1BMVVNfVEVYVCwKKyAgICAgICAgICAgICAgICAgICAgJ2F1ZGlv
JzogQVVESU8sCisgICAgICAgICAgICAgICAgICAgICdhdWRpbyt0ZXh0JzogQVVESU9fUExVU19U
RVhULAogICAgICAgICAgICAgICAgICAgICAndGltZW91dCc6IFRJTUVPVVQsCiAgICAgICAgICAg
ICAgICAgICAgICdjcmFzaCc6IENSQVNILAogICAgICAgICAgICAgICAgICAgICAnbWlzc2luZyc6
IE1JU1NJTkd9CkBAIC0yNzEsNiArMjc2LDkgQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9uc0ZpbGU6
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElNQUdFOiAoJ2ltYWdlIG1pc21hdGNo
JywgJ2ltYWdlIG1pc21hdGNoJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElN
QUdFX1BMVVNfVEVYVDogKCdpbWFnZSBhbmQgdGV4dCBtaXNtYXRjaCcsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbWFnZSBhbmQgdGV4dCBtaXNt
YXRjaCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBVURJTzogKCdhdWRpbyBt
aXNtYXRjaCcsICdhdWRpbyBtaXNtYXRjaCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBBVURJT19QTFVTX1RFWFQ6ICgnYXVkaW8gYW5kIHRleHQgbWlzbWF0Y2gnLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXVkaW8gYW5kIHRl
eHQgbWlzbWF0Y2gnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1JBU0g6ICgn
RHVtcFJlbmRlclRyZWUgY3Jhc2gnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdEdW1wUmVuZGVyVHJlZSBjcmFzaGVzJyksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFRJTUVPVVQ6ICgndGVzdCB0aW1lZCBvdXQnLCAndGVzdHMgdGltZWQgb3V0Jyks
CkBAIC0yNzgsNyArMjg2LDcgQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9uc0ZpbGU6CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbm8gZXhwZWN0ZWQgcmVzdWx0cyBm
b3VuZCcpfQogCiAgICAgRVhQRUNUQVRJT05fT1JERVIgPSAoUEFTUywgQ1JBU0gsIFRJTUVPVVQs
IE1JU1NJTkcsIElNQUdFX1BMVVNfVEVYVCwKLSAgICAgICBURVhULCBJTUFHRSwgRkFJTCwgU0tJ
UCkKKyAgICAgICBURVhULCBJTUFHRSwgQVVESU9fUExVU19URVhULCBBVURJTywgRkFJTCwgU0tJ
UCkKIAogICAgIEJVSUxEX1RZUEVTID0gKCdkZWJ1ZycsICdyZWxlYXNlJykKIApkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVz
dF9mYWlsdXJlcy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91
dF9wYWNrYWdlL3Rlc3RfZmFpbHVyZXMucHkKaW5kZXggMWZhZDc3MjQ2Yjg1ZTYyZDAwZjM1YTA1
ZmQyY2M2OWIyM2U0OTZmMi4uYWQxMThkZmQ1MWIxYzc0Njg0MmY3NGZiYjFhYWQyY2IxNGQwNGRi
NSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0
X3BhY2thZ2UvdGVzdF9mYWlsdXJlcy5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2ZhaWx1cmVzLnB5CkBAIC02Miw4ICs2Miwx
MSBAQCBkZWYgZGV0ZXJtaW5lX3Jlc3VsdF90eXBlKGZhaWx1cmVfbGlzdCk6CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRmFpbHVyZUltYWdlSGFzaE1pc21hdGNoIGluIGZhaWx1cmVfdHlw
ZXMpCiAgICAgICAgIGlzX3JlZnRlc3RfZmFpbHVyZSA9IChGYWlsdXJlUmVmdGVzdE1pc21hdGNo
IGluIGZhaWx1cmVfdHlwZXMgb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZhaWx1
cmVSZWZ0ZXN0TWlzbWF0Y2hEaWROb3RPY2N1ciBpbiBmYWlsdXJlX3R5cGVzKQorICAgICAgICBp
c19hdWRpb19mYWlsdXJlID0gKEZhaWx1cmVBdWRpb01pc21hdGNoIGluIGZhaWx1cmVfdHlwZXMp
CiAgICAgICAgIGlmIGlzX3RleHRfZmFpbHVyZSBhbmQgaXNfaW1hZ2VfZmFpbHVyZToKICAgICAg
ICAgICAgIHJldHVybiB0ZXN0X2V4cGVjdGF0aW9ucy5JTUFHRV9QTFVTX1RFWFQKKyAgICAgICAg
ZWxpZiBpc190ZXh0X2ZhaWx1cmUgYW5kIGlzX2F1ZGlvX2ZhaWx1cmU6CisgICAgICAgICAgICBy
ZXR1cm4gdGVzdF9leHBlY3RhdGlvbnMuQVVESU9fUExVU19URVhUCiAgICAgICAgIGVsaWYgaXNf
dGV4dF9mYWlsdXJlOgogICAgICAgICAgICAgcmV0dXJuIHRlc3RfZXhwZWN0YXRpb25zLlRFWFQK
ICAgICAgICAgZWxpZiBpc19pbWFnZV9mYWlsdXJlIG9yIGlzX3JlZnRlc3RfZmFpbHVyZToKQEAg
LTMzMSw2ICszMzQsMjggQEAgY2xhc3MgRmFpbHVyZVJlZnRlc3RNaXNtYXRjaERpZE5vdE9jY3Vy
KENvbXBhcmlzb25UZXN0RmFpbHVyZSk6CiAgICAgICAgIHJldHVybiAnICcuam9pbihsaW5rcykK
IAogCitjbGFzcyBGYWlsdXJlTWlzc2luZ0F1ZGlvKENvbXBhcmlzb25UZXN0RmFpbHVyZSk6Cisg
ICAgIiIiQWN0dWFsIHJlc3VsdCBpbWFnZSB3YXMgbWlzc2luZy4iIiIKKyAgICBPVVRfRklMRU5B
TUVTID0gKCItYWN0dWFsLndhdiIsKQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBtZXNz
YWdlKCk6CisgICAgICAgIHJldHVybiAiTm8gZXhwZWN0ZWQgaW1hZ2UgZm91bmQiCisKKyAgICBk
ZWYgcmVzdWx0X2h0bWxfb3V0cHV0KHNlbGYsIGZpbGVuYW1lKToKKyAgICAgICAgcmV0dXJuICgi
PHN0cm9uZz4lczwvc3Ryb25nPiIgJSBzZWxmLm1lc3NhZ2UoKSArCisgICAgICAgICAgICAgICAg
c2VsZi5vdXRwdXRfbGlua3MoZmlsZW5hbWUsIHNlbGYuT1VUX0ZJTEVOQU1FUykpCisKKworY2xh
c3MgRmFpbHVyZUF1ZGlvTWlzbWF0Y2goQ29tcGFyaXNvblRlc3RGYWlsdXJlKToKKyAgICAiIiJB
dWRpbyBmaWxlcyBkaWRuJ3QgbWF0Y2guIiIiCisgICAgT1VUX0ZJTEVOQU1FUyA9ICgiLWFjdHVh
bC53YXYiLCAiLWV4cGVjdGVkLndhdiIpCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIG1l
c3NhZ2UoKToKKyAgICAgICAgcmV0dXJuICJBdWRpbyBtaXNtYXRjaCIKKworCiAjIENvbnZlbmll
bnQgY29sbGVjdGlvbiBvZiBhbGwgZmFpbHVyZSBjbGFzc2VzIGZvciBhbnl0aGluZyB0aGF0IG1p
Z2h0CiAjIG5lZWQgdG8gZW51bWVyYXRlIG92ZXIgdGhlbSBhbGwuCiBBTExfRkFJTFVSRV9DTEFT
U0VTID0gKEZhaWx1cmVUaW1lb3V0LCBGYWlsdXJlQ3Jhc2gsIEZhaWx1cmVNaXNzaW5nUmVzdWx0
LApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9i
YXNlLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5
CmluZGV4IGMyMDQ4NmM4MDZiZTJmMzg0ZmY1ZDg0ZmQ1MzE2Mzk2YTNlZjljZjYuLjg5Mzg2MjYy
YjFkZDEwY2YxYTIzM2UwMzE2NWUzNDE1MjQwYWIxYmEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQorKysgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkKQEAgLTIwNiw2ICsyMDYsMTAgQEAg
Y2xhc3MgUG9ydChvYmplY3QpOgogICAgICAgICBpbnRlcmZhY2Ugc28gdGhhdCBpdCBjYW4gYmUg
b3ZlcnJpZGVuIGZvciB0ZXN0aW5nIHB1cnBvc2VzLiIiIgogICAgICAgICByZXR1cm4gZXhwZWN0
ZWRfdGV4dCAhPSBhY3R1YWxfdGV4dAogCisgICAgZGVmIGNvbXBhcmVfYXVkaW8oc2VsZiwgZXhw
ZWN0ZWRfYXVkaW8sIGFjdHVhbF9hdWRpbyk6CisgICAgICAgICIiIlJldHVybiB3aGV0aGVyIHRo
ZSB0d28gYXVkaW8gZmlsZXMgYXJlICpub3QqIGVxdWFsLiIiIgorICAgICAgICByZXR1cm4gZXhw
ZWN0ZWRfYXVkaW8gIT0gYWN0dWFsX2F1ZGlvCisKICAgICBkZWYgZGlmZl9pbWFnZShzZWxmLCBl
eHBlY3RlZF9jb250ZW50cywgYWN0dWFsX2NvbnRlbnRzLAogICAgICAgICAgICAgICAgICAgIGRp
ZmZfZmlsZW5hbWU9Tm9uZSwgdG9sZXJhbmNlPTApOgogICAgICAgICAiIiJDb21wYXJlIHR3byBp
bWFnZXMgYW5kIHByb2R1Y2UgYSBkZWx0YSBpbWFnZSBmaWxlLgpAQCAtMzUxLDYgKzM1NSwxMiBA
QCBjbGFzcyBQb3J0KG9iamVjdCk6CiAgICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgICBy
ZXR1cm4gc2VsZi5fZmlsZXN5c3RlbS5yZWFkX2JpbmFyeV9maWxlKHBhdGgpCiAKKyAgICBkZWYg
ZXhwZWN0ZWRfYXVkaW8oc2VsZiwgdGVzdCk6CisgICAgICAgIHBhdGggPSBzZWxmLmV4cGVjdGVk
X2ZpbGUodGVzdCwgJy53YXYnKQorICAgICAgICBpZiBub3Qgc2VsZi5wYXRoX2V4aXN0cyhwYXRo
KToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIHJldHVybiBzZWxmLl9maWxlc3lz
dGVtLnJlYWRfYmluYXJ5X2ZpbGUocGF0aCkKKwogICAgIGRlZiBleHBlY3RlZF90ZXh0KHNlbGYs
IHRlc3QpOgogICAgICAgICAiIiJSZXR1cm5zIHRoZSB0ZXh0IG91dHB1dCB3ZSBleHBlY3QgdGhl
IHRlc3QgdG8gcHJvZHVjZS4KICAgICAgICAgRW5kLW9mLWxpbmUgY2hhcmFjdGVycyBhcmUgbm9y
bWFsaXplZCB0byAnXG4nLiIiIgpAQCAtODY4LDcgKzg3OCw4IEBAIGNsYXNzIERyaXZlck91dHB1
dChvYmplY3QpOgogICAgICIiIkdyb3VwcyBpbmZvcm1hdGlvbiBhYm91dCBhIG91dHB1dCBmcm9t
IGRyaXZlciBmb3IgZWFzeSBwYXNzaW5nIG9mIGRhdGEuIiIiCiAKICAgICBkZWYgX19pbml0X18o
c2VsZiwgdGV4dCwgaW1hZ2UsIGltYWdlX2hhc2gsCi0gICAgICAgICAgICAgICAgIGNyYXNoPUZh
bHNlLCB0ZXN0X3RpbWU9Tm9uZSwgdGltZW91dD1GYWxzZSwgZXJyb3I9JycpOgorICAgICAgICAg
ICAgICAgICBjcmFzaD1GYWxzZSwgdGVzdF90aW1lPU5vbmUsIHRpbWVvdXQ9RmFsc2UsIGVycm9y
PScnLAorICAgICAgICAgICAgICAgICBhdWRpbz1Ob25lKToKICAgICAgICAgIiIiSW5pdGlhbGl6
ZXMgYSBUZXN0T3V0cHV0IG9iamVjdC4KIAogICAgICAgICBBcmdzOgpAQCAtODc5LDYgKzg5MCw3
IEBAIGNsYXNzIERyaXZlck91dHB1dChvYmplY3QpOgogICAgICAgICAgIHRlc3RfdGltZTogYSB0
aW1lIHdoaWNoIHRoZSB0ZXN0IGhhcyB0YWtlbgogICAgICAgICAgIHRpbWVvdXQ6IGEgYm9vbGVh
biBpbmRpY2F0aW5nIHdoZWh0ZXIgdGhlIHRlc3QgdGltZWQgb3V0CiAgICAgICAgICAgZXJyb3I6
IGFueSB1bmV4cGVjdGVkIG9yIGFkZGl0aW9uYWwgKG9yIGVycm9yKSB0ZXh0IG91dHB1dAorICAg
ICAgICAgIGF1ZGlvOiBjb250ZW50cyBvZiBhbiBhdWRpbyBzdHJlYW0sIGlmIGFueSAoaW4gV0FW
IGZvcm1hdCkKICAgICAgICAgIiIiCiAgICAgICAgIHNlbGYudGV4dCA9IHRleHQKICAgICAgICAg
c2VsZi5pbWFnZSA9IGltYWdlCkBAIC04ODcsNiArODk5LDcgQEAgY2xhc3MgRHJpdmVyT3V0cHV0
KG9iamVjdCk6CiAgICAgICAgIHNlbGYudGVzdF90aW1lID0gdGVzdF90aW1lCiAgICAgICAgIHNl
bGYudGltZW91dCA9IHRpbWVvdXQKICAgICAgICAgc2VsZi5lcnJvciA9IGVycm9yCisgICAgICAg
IHNlbGYuYXVkaW8gPSBhdWRpbwogCiAKIGNsYXNzIERyaXZlcjoKZGlmZiAtLWdpdCBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5IGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXQucHkKaW5kZXggMDUyMjYzMTQ5
NDBjZTllMWZkMmEyY2JhMjg1ZTI1YTJjNmY3MDhiMi4uNDhmNmM1ZDRmYWI0ZDBkYzM0YjhkNjE4
NjkxNjUzYTYyZTA0NmJmYyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC93ZWJraXQucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC93ZWJraXQucHkKQEAgLTMwLDcgKzMwLDcgQEAKIAogIiIiV2ViS2l0IGlt
cGxlbWVudGF0aW9ucyBvZiB0aGUgUG9ydCBpbnRlcmZhY2UuIiIiCiAKLQoraW1wb3J0IGJhc2U2
NAogaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBvcGVyYXRvcgogaW1wb3J0IG9zCkBAIC00MTAsNiAr
NDEwLDcgQEAgY2xhc3MgV2ViS2l0RHJpdmVyKGJhc2UuRHJpdmVyKToKICAgICAgICAgYWN0dWFs
X2ltYWdlX2hhc2ggPSBOb25lCiAgICAgICAgIG91dHB1dCA9IHN0cigpICAjIFVzZSBhIGJ5dGUg
YXJyYXkgZm9yIG91dHB1dCwgZXZlbiB0aG91Z2ggaXQgc2hvdWxkIGJlIFVURi04LgogICAgICAg
ICBpbWFnZSA9IHN0cigpCisgICAgICAgIGF1ZGlvID0gc3RyKCkKIAogICAgICAgICB0aW1lb3V0
ID0gaW50KGRyaXZlcl9pbnB1dC50aW1lb3V0KSAvIDEwMDAuMAogICAgICAgICBkZWFkbGluZSA9
IHRpbWUudGltZSgpICsgdGltZW91dApAQCAtNDM0LDEzICs0MzUsMTcgQEAgY2xhc3MgV2ViS2l0
RHJpdmVyKGJhc2UuRHJpdmVyKToKICAgICAgICAgSEFTSF9IRUFERVIgPSAnQWN0dWFsSGFzaDog
JwogICAgICAgICBMRU5HVEhfSEVBREVSID0gJ0NvbnRlbnQtTGVuZ3RoOiAnCiAgICAgICAgIGxp
bmUgPSBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5yZWFkX2xpbmUodGltZW91dCkKKyAgICAgICAgY29u
dGVudF90eXBlID0gTm9uZQorICAgICAgICBjb250ZW50X3RyYW5zZmVyX2VuY29kaW5nID0gTm9u
ZQogICAgICAgICB3aGlsZSAobm90IHNlbGYuX3NlcnZlcl9wcm9jZXNzLnRpbWVkX291dAogICAg
ICAgICAgICAgICAgYW5kIG5vdCBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5jcmFzaGVkCiAgICAgICAg
ICAgICAgICBhbmQgbGluZS5yc3RyaXAoKSAhPSAiI0VPRiIpOgogICAgICAgICAgICAgaWYgbGlu
ZS5zdGFydHN3aXRoKEhBU0hfSEVBREVSKToKICAgICAgICAgICAgICAgICBhY3R1YWxfaW1hZ2Vf
aGFzaCA9IGxpbmVbbGVuKEhBU0hfSEVBREVSKTpdLnN0cmlwKCkKICAgICAgICAgICAgIGVsaWYg
bGluZS5zdGFydHN3aXRoKCdDb250ZW50LVR5cGU6Jyk6Ci0gICAgICAgICAgICAgICAgcGFzcwor
ICAgICAgICAgICAgICAgIGNvbnRlbnRfdHlwZSA9ICcgJy5zcGxpdChsaW5lKVsxXQorICAgICAg
ICAgICAgZWxpZiBsaW5lLnN0YXJ0c3dpdGgoJ0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6Jyk6
CisgICAgICAgICAgICAgICAgY29udGVudF90cmFuc2Zlcl9lbmNvZGluZyA9ICcgJy5zcGxpdChs
aW5lKVsxXQogICAgICAgICAgICAgZWxpZiBsaW5lLnN0YXJ0c3dpdGgoTEVOR1RIX0hFQURFUik6
CiAgICAgICAgICAgICAgICAgdGltZW91dCA9IGRlYWRsaW5lIC0gdGltZS50aW1lKCkKICAgICAg
ICAgICAgICAgICBjb250ZW50X2xlbmd0aCA9IGludChsaW5lW2xlbihMRU5HVEhfSEVBREVSKTpd
KQpAQCAtNDU4LDExICs0NjMsMjEgQEAgY2xhc3MgV2ViS2l0RHJpdmVyKGJhc2UuRHJpdmVyKToK
ICAgICAgICAgIyBGSVhNRTogVGhpcyBzZWVtcyBsaWtlIHRoZSB3cm9uZyBzZWN0aW9uIG9mIGNv
ZGUgdG8gYmUgZG9pbmcKICAgICAgICAgIyB0aGlzIHJlc2V0IGluLgogICAgICAgICBzZWxmLl9z
ZXJ2ZXJfcHJvY2Vzcy5lcnJvciA9ICIiCisKKyAgICAgICAgaWYgY29udGVudF90cmFuc2Zlcl9l
bmNvZGluZyA9PSAnYmFzZTY0JzoKKyAgICAgICAgICAgIGltYWdlID0gYmFzZTY0LmI2NGRlY29k
ZShpbWFnZSkKKworICAgICAgICBpZiBjb250ZW50X3R5cGUgPT0gJ2F1ZGlvL3dhdic6CisgICAg
ICAgICAgICBhdWRpbyA9IGltYWdlCisgICAgICAgICAgICBpbWFnZSA9IHN0cigpCisgICAgICAg
ICAgICBhY3R1YWxfaW1hZ2VfaGFzaCA9IE5vbmUKKyAgICAgICAgICAgICMgRklYTUU6IFNob3Vk
IHdlIG51bGwgb3V0IHRoZSB0ZXh0PworCiAgICAgICAgIHJldHVybiBiYXNlLkRyaXZlck91dHB1
dChvdXRwdXQsIGltYWdlLCBhY3R1YWxfaW1hZ2VfaGFzaCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNlbGYuX3NlcnZlcl9wcm9jZXNzLmNyYXNoZWQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0aW1lLnRpbWUoKSAtIHN0YXJ0X3RpbWUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy50aW1lZF9vdXQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcikKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGVycm9yLCBhdWRpbykKIAogICAgIGRlZiBzdG9wKHNlbGYpOgogICAg
ICAgICBpZiBzZWxmLl9zZXJ2ZXJfcHJvY2VzczoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88548</attachid>
            <date>2011-04-06 17:45:13 -0700</date>
            <delta_ts>2011-04-06 18:02:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-57987-20110406174512.patch</filename>
            <type>text/plain</type>
            <size>26976</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODMwOTcKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCBlOWU5ZTVjZjg5ZWNlNTA4MTEwMDhhNDIyMTg3NDNmNzJj
MThhNzljLi44ZjEzZTUzODkxM2IwODdiY2FkYWVkZGYxYWViMDljYTk2NTQ3MGNhIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAg
QEAKKzIwMTEtMDQtMDYgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgbmV3LXJ1bi13ZWJr
aXQtdGVzdHM6IGltcGxlbWVudCBzdXBwb3J0IGZvciBhdWRpbyB0ZXN0cy4KKworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTc5ODcKKworICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2pzb25fbGF5b3V0
X3Jlc3VsdHNfZ2VuZXJhdG9yLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL2xheW91dF9wYWNrYWdlL3NpbmdsZV90ZXN0X3J1bm5lci5weToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2V4cGVjdGF0
aW9ucy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRf
cGFja2FnZS90ZXN0X2ZhaWx1cmVzLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfcmVzdWx0X3dyaXRlci5weToKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHk6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0LnB5OgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5OgorCiAyMDExLTA0LTA2
ICBaYW4gRG9iZXJzZWsgIDx6YW5kb2JlcnNla0BnbWFpbC5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgRXJpYyBTZWlkZWwuCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9qc29uX2xheW91dF9yZXN1bHRzX2dlbmVyYXRvci5w
eSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2pz
b25fbGF5b3V0X3Jlc3VsdHNfZ2VuZXJhdG9yLnB5CmluZGV4IDE5YjAyZTg1NjYzN2I3NjM1NjAz
ZjhhYTY3MWMwN2QzNGIwY2FlNDguLmRiYjE2YzAzZTI2MzMzNTA5NDEyMGVjZWFlOGM3MDY3ZDhk
NzgwZjEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xh
eW91dF9wYWNrYWdlL2pzb25fbGF5b3V0X3Jlc3VsdHNfZ2VuZXJhdG9yLnB5CisrKyBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2pzb25fbGF5b3V0
X3Jlc3VsdHNfZ2VuZXJhdG9yLnB5CkBAIC01MCw2ICs1MCw3IEBAIGNsYXNzIEpTT05MYXlvdXRS
ZXN1bHRzR2VuZXJhdG9yKGpzb25fcmVzdWx0c19nZW5lcmF0b3IuSlNPTlJlc3VsdHNHZW5lcmF0
b3JCYXNlCiAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfZXhwZWN0YXRpb25zLklNQUdFOiAi
SSIsCiAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfZXhwZWN0YXRpb25zLlRFWFQ6ICJGIiwK
ICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9leHBlY3RhdGlvbnMuTUlTU0lORzogIk8iLAor
ICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2V4cGVjdGF0aW9ucy5BVURJTzogIkEiLAogICAg
ICAgICAgICAgICAgICAgICAgICB0ZXN0X2V4cGVjdGF0aW9ucy5JTUFHRV9QTFVTX1RFWFQ6ICJa
In0KIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwb3J0LCBidWlsZGVyX25hbWUsIGJ1aWxkX25h
bWUsIGJ1aWxkX251bWJlciwKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3NpbmdsZV90ZXN0X3J1bm5lci5weSBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3NpbmdsZV90ZXN0X3J1
bm5lci5weQppbmRleCBhOGM3MTZmOGRjMGMyOGQ5MjY1ZDg3ZDVjYTk1YzFmMmE3OWJiMDMzLi4y
ZGVkZDhmNzAwZDIwMGE5MmU4NjgzOWExYTg4NDBhZWM2OGFkZGFiIDEwMDY0NAotLS0gYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9zaW5nbGVfdGVz
dF9ydW5uZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5
b3V0X3BhY2thZ2Uvc2luZ2xlX3Rlc3RfcnVubmVyLnB5CkBAIC04Miw3ICs4Miw3IEBAIGNsYXNz
IFNpbmdsZVRlc3RSdW5uZXI6CiAgICAgICAgICAgICAjIEZvciBleGFtcGxlLCBpZiAnZm9vLmh0
bWwnIGhhcyB0d28gZXhwZWN0YXRpb24gZmlsZXMsICdmb28tZXhwZWN0ZWQuaHRtbCcgYW5kCiAg
ICAgICAgICAgICAjICdmb28tZXhwZWN0ZWQudHh0Jywgd2Ugc2hvdWxkIHdhcm4gdXNlcnMuIE9u
ZSB0ZXN0IGZpbGUgbXVzdCBiZSB1c2VkIGV4Y2x1c2l2ZWx5CiAgICAgICAgICAgICAjIGluIGVp
dGhlciBsYXlvdXQgdGVzdHMgb3IgcmVmdGVzdHMsIGJ1dCBub3QgaW4gYm90aC4KLSAgICAgICAg
ICAgIGZvciBzdWZmaXggaW4gWycudHh0JywgJy5jaGVja3N1bScsICcucG5nJ106CisgICAgICAg
ICAgICBmb3Igc3VmZml4IGluIFsnLnR4dCcsICcuY2hlY2tzdW0nLCAnLnBuZycsICcud2F2J106
CiAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfZmlsZW5hbWUgPSBzZWxmLl9wb3J0LmV4cGVjdGVk
X2ZpbGVuYW1lKHNlbGYuX2ZpbGVuYW1lLCBzdWZmaXgpCiAgICAgICAgICAgICAgICAgaWYgZnMu
ZXhpc3RzKGV4cGVjdGVkX2ZpbGVuYW1lKToKICAgICAgICAgICAgICAgICAgICAgX2xvZy5lcnJv
cignVGhlIHJlZnRlc3QgKCVzKSBjYW4gbm90IGhhdmUgYW4gZXhwZWN0YXRpb24gZmlsZSAoJXMp
LicKQEAgLTkxLDcgKzkxLDggQEAgY2xhc3MgU2luZ2xlVGVzdFJ1bm5lcjoKICAgICBkZWYgX2V4
cGVjdGVkX2RyaXZlcl9vdXRwdXQoc2VsZik6CiAgICAgICAgIHJldHVybiBiYXNlLkRyaXZlck91
dHB1dChzZWxmLl9wb3J0LmV4cGVjdGVkX3RleHQoc2VsZi5fZmlsZW5hbWUpLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcG9ydC5leHBlY3RlZF9pbWFnZShzZWxmLl9m
aWxlbmFtZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9wb3J0LmV4
cGVjdGVkX2NoZWNrc3VtKHNlbGYuX2ZpbGVuYW1lKSkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNlbGYuX3BvcnQuZXhwZWN0ZWRfY2hlY2tzdW0oc2VsZi5fZmlsZW5hbWUpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW89c2VsZi5fcG9ydC5leHBlY3Rl
ZF9hdWRpbyhzZWxmLl9maWxlbmFtZSkpCiAKICAgICBkZWYgX3Nob3VsZF9mZXRjaF9leHBlY3Rl
ZF9jaGVja3N1bShzZWxmKToKICAgICAgICAgcmV0dXJuIChzZWxmLl9vcHRpb25zLnBpeGVsX3Rl
c3RzIGFuZApAQCAtMTQyLDYgKzE0Myw5IEBAIGNsYXNzIFNpbmdsZVRlc3RSdW5uZXI6CiAgICAg
ICAgICMgRHVtcFJlbmRlclRyZWUgbWF5IG5vdCBvdXRwdXQgdXRmLTggdGV4dCAoZS5nLiB3ZWJh
cmNoaXZlcykuCiAgICAgICAgIHNlbGYuX3NhdmVfYmFzZWxpbmVfZGF0YShkcml2ZXJfb3V0cHV0
LnRleHQsICIudHh0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRl
X25ld19iYXNlbGluZT1zZWxmLl9vcHRpb25zLm5ld19iYXNlbGluZSkKKyAgICAgICAgaWYgZHJp
dmVyX291dHB1dC5hdWRpbzoKKyAgICAgICAgICAgIHNlbGYuX3NhdmVfYmFzZWxpbmVfZGF0YShk
cml2ZXJfb3V0cHV0LmF1ZGlvLCAnLndhdicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZ2VuZXJhdGVfbmV3X2Jhc2VsaW5lPXNlbGYuX29wdGlvbnMubmV3X2Jhc2VsaW5l
KQogICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnBpeGVsX3Rlc3RzIGFuZCBkcml2ZXJfb3V0cHV0
LmltYWdlX2hhc2g6CiAgICAgICAgICAgICBzZWxmLl9zYXZlX2Jhc2VsaW5lX2RhdGEoZHJpdmVy
X291dHB1dC5pbWFnZSwgIi5wbmciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGdlbmVyYXRlX25ld19iYXNlbGluZT1zZWxmLl9vcHRpb25zLm5ld19iYXNlbGluZSkKQEAg
LTIxNSw3ICsyMTksMTAgQEAgY2xhc3MgU2luZ2xlVGVzdFJ1bm5lcjoKICAgICAgICAgICAgICMg
SW4gY2FzZSBvZiB0aW1lb3V0cywgd2UgY29udGludWUgc2luY2Ugd2Ugc3RpbGwgd2FudCB0byBz
ZWUgdGhlIHRleHQgYW5kIGltYWdlIG91dHB1dC4KICAgICAgICAgICAgIHJldHVybiBUZXN0UmVz
dWx0KHNlbGYuX2ZpbGVuYW1lLCBmYWlsdXJlcywgZHJpdmVyX291dHB1dC50ZXN0X3RpbWUpCiAK
LSAgICAgICAgZmFpbHVyZXMuZXh0ZW5kKHNlbGYuX2NvbXBhcmVfdGV4dChkcml2ZXJfb3V0cHV0
LnRleHQsIGV4cGVjdGVkX2RyaXZlcl9vdXRwdXQudGV4dCkpCisgICAgICAgIGlmIGRyaXZlcl9v
dXRwdXQuYXVkaW86CisgICAgICAgICAgICBmYWlsdXJlcy5leHRlbmQoc2VsZi5fY29tcGFyZV9h
dWRpbyhkcml2ZXJfb3V0cHV0LmF1ZGlvLCBleHBlY3RlZF9kcml2ZXJfb3V0cHV0LmF1ZGlvKSkK
KyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGZhaWx1cmVzLmV4dGVuZChzZWxmLl9jb21wYXJl
X3RleHQoZHJpdmVyX291dHB1dC50ZXh0LCBleHBlY3RlZF9kcml2ZXJfb3V0cHV0LnRleHQpKQog
ICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnBpeGVsX3Rlc3RzOgogICAgICAgICAgICAgZmFpbHVy
ZXMuZXh0ZW5kKHNlbGYuX2NvbXBhcmVfaW1hZ2UoZHJpdmVyX291dHB1dCwgZXhwZWN0ZWRfZHJp
dmVyX291dHB1dCkpCiAgICAgICAgIHJldHVybiBUZXN0UmVzdWx0KHNlbGYuX2ZpbGVuYW1lLCBm
YWlsdXJlcywgZHJpdmVyX291dHB1dC50ZXN0X3RpbWUpCkBAIC0yMzEsNiArMjM4LDE1IEBAIGNs
YXNzIFNpbmdsZVRlc3RSdW5uZXI6CiAgICAgICAgICAgICAgICAgZmFpbHVyZXMuYXBwZW5kKHRl
c3RfZmFpbHVyZXMuRmFpbHVyZVRleHRNaXNtYXRjaCgpKQogICAgICAgICByZXR1cm4gZmFpbHVy
ZXMKIAorICAgIGRlZiBfY29tcGFyZV9hdWRpbyhzZWxmLCBhY3R1YWxfYXVkaW8sIGV4cGVjdGVk
X2F1ZGlvKToKKyAgICAgICAgZmFpbHVyZXMgPSBbXQorICAgICAgICBpZiBzZWxmLl9wb3J0LmNv
bXBhcmVfYXVkaW8oYWN0dWFsX2F1ZGlvLCBleHBlY3RlZF9hdWRpbyk6CisgICAgICAgICAgICBp
ZiBhY3R1YWxfYXVkaW8gYW5kIGV4cGVjdGVkX2F1ZGlvIGlzIE5vbmU6CisgICAgICAgICAgICAg
ICAgZmFpbHVyZXMuYXBwZW5kKHRlc3RfZmFpbHVyZXMuRmFpbHVyZU1pc3NpbmdBdWRpbygpKQor
ICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBmYWlsdXJlcy5hcHBlbmQodGVzdF9m
YWlsdXJlcy5GYWlsdXJlQXVkaW9NaXNtYXRjaCgpKQorICAgICAgICByZXR1cm4gZmFpbHVyZXMK
KwogICAgIGRlZiBfZ2V0X25vcm1hbGl6ZWRfb3V0cHV0X3RleHQoc2VsZiwgb3V0cHV0KToKICAg
ICAgICAgIiIiUmV0dXJucyB0aGUgbm9ybWFsaXplZCB0ZXh0IG91dHB1dCwgaS5lLiB0aGUgb3V0
cHV0IGluIHdoaWNoCiAgICAgICAgIHRoZSBlbmQtb2YtbGluZSBjaGFyYWN0ZXJzIGFyZSBub3Jt
YWxpemVkIHRvICJcbiIuIiIiCkBAIC0yMzgsNiArMjU0LDggQEAgY2xhc3MgU2luZ2xlVGVzdFJ1
bm5lcjoKICAgICAgICAgIyBjaGFuZ2VkIHRvICJcclxuIiBieSBvdXIgc3lzdGVtIChQeXRob24v
Q3lnd2luKSwgcmVzdWx0aW5nIGluCiAgICAgICAgICMgIlxyXHJcbiIsIHdoZW4sIGluIGZhY3Qs
IHdlIHdhbnRlZCB0byBjb21wYXJlIHRoZSB0ZXh0IG91dHB1dCB3aXRoCiAgICAgICAgICMgdGhl
IG5vcm1hbGl6ZWQgdGV4dCBleHBlY3RhdGlvbiBmaWxlcy4KKyAgICAgICAgaWYgbm90IG91dHB1
dDoKKyAgICAgICAgICAgIHJldHVybiBvdXRwdXQKICAgICAgICAgcmV0dXJuIG91dHB1dC5yZXBs
YWNlKCJcclxyXG4iLCAiXHJcbiIpLnJlcGxhY2UoIlxyXG4iLCAiXG4iKQogCiAgICAgZGVmIF9j
b21wYXJlX2ltYWdlKHNlbGYsIGRyaXZlcl9vdXRwdXQsIGV4cGVjdGVkX2RyaXZlcl9vdXRwdXRz
KToKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91
dF9wYWNrYWdlL3Rlc3RfZXhwZWN0YXRpb25zLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9leHBlY3RhdGlvbnMucHkKaW5kZXggYWQ1
MGFkZWFjZDliODA3MjgzMDhkMWM1MDg5YTRjOGRlMjUwMmU2OC4uN2M0YWY0M2JmMzJlNTc0MGVh
MjM5YTJkNWEzNzI1MTFmY2QxYThmMSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9leHBlY3RhdGlvbnMucHkKKysrIGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9l
eHBlY3RhdGlvbnMucHkKQEAgLTQxLDggKzQxLDggQEAgX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2Vy
KCJ3ZWJraXRweS5sYXlvdXRfdGVzdHMubGF5b3V0X3BhY2thZ2UuIgogICAgICAgICAgICAgICAg
ICAgICAgICAgICJ0ZXN0X2V4cGVjdGF0aW9ucyIpCiAKICMgVGVzdCBleHBlY3RhdGlvbiBhbmQg
bW9kaWZpZXIgY29uc3RhbnRzLgotKFBBU1MsIEZBSUwsIFRFWFQsIElNQUdFLCBJTUFHRV9QTFVT
X1RFWFQsIFRJTUVPVVQsIENSQVNILCBTS0lQLCBXT05URklYLAotIFNMT1csIFJFQkFTRUxJTkUs
IE1JU1NJTkcsIEZMQUtZLCBOT1csIE5PTkUpID0gcmFuZ2UoMTUpCisoUEFTUywgRkFJTCwgVEVY
VCwgSU1BR0UsIElNQUdFX1BMVVNfVEVYVCwgQVVESU8sIFRJTUVPVVQsCisgQ1JBU0gsIFNLSVAs
IFdPTlRGSVgsIFNMT1csIFJFQkFTRUxJTkUsIE1JU1NJTkcsIEZMQUtZLCBOT1csIE5PTkUpID0g
cmFuZ2UoMTYpCiAKICMgVGVzdCBleHBlY3RhdGlvbiBmaWxlIHVwZGF0ZSBhY3Rpb24gY29uc3Rh
bnRzCiAoTk9fQ0hBTkdFLCBSRU1PVkVfVEVTVCwgUkVNT1ZFX1BMQVRGT1JNLCBBRERfUExBVEZP
Uk1TX0VYQ0VQVF9USElTKSA9IHJhbmdlKDQpCkBAIC0xMjAsNyArMTIwLDggQEAgY2xhc3MgVGVz
dEV4cGVjdGF0aW9uczoKICAgICAgICAgICAgICAgICBzZWxmLl9leHBlY3RlZF9mYWlsdXJlcy5n
ZXRfdGVzdF9zZXQoUkVCQVNFTElORSwgSU1BR0UpIHwKICAgICAgICAgICAgICAgICBzZWxmLl9l
eHBlY3RlZF9mYWlsdXJlcy5nZXRfdGVzdF9zZXQoUkVCQVNFTElORSwgVEVYVCkgfAogICAgICAg
ICAgICAgICAgIHNlbGYuX2V4cGVjdGVkX2ZhaWx1cmVzLmdldF90ZXN0X3NldChSRUJBU0VMSU5F
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJ
TUFHRV9QTFVTX1RFWFQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBJTUFHRV9QTFVTX1RFWFQpIHwKKyAgICAgICAgICAgICAgICBzZWxmLl9l
eHBlY3RlZF9mYWlsdXJlcy5nZXRfdGVzdF9zZXQoUkVCQVNFTElORSwgQVVESU8pKQogCiAgICAg
ZGVmIGdldF9vcHRpb25zKHNlbGYsIHRlc3QpOgogICAgICAgICByZXR1cm4gc2VsZi5fZXhwZWN0
ZWRfZmFpbHVyZXMuZ2V0X29wdGlvbnModGVzdCkKQEAgLTI0NCwxMSArMjQ1LDExIEBAIGNsYXNz
IFRlc3RFeHBlY3RhdGlvbnNGaWxlOgogCiAgICAgTm90ZXM6CiAgICAgICAtQSB0ZXN0IGNhbm5v
dCBiZSBib3RoIFNMT1cgYW5kIFRJTUVPVVQKLSAgICAgIC1BIHRlc3Qgc2hvdWxkIG9ubHkgYmUg
b25lIG9mIElNQUdFLCBURVhULCBJTUFHRStURVhULCBvciBGQUlMLiBGQUlMIGlzCi0gICAgICAg
YSBtaWdyYXRvcnkgc3RhdGUgdGhhdCBjdXJyZW50bHkgbWVhbnMgZWl0aGVyIElNQUdFLCBURVhU
LCBvcgotICAgICAgIElNQUdFK1RFWFQuIE9uY2Ugd2UgaGF2ZSBmaW5pc2hlZCBtaWdyYXRpbmcg
dGhlIGV4cGVjdGF0aW9ucywgd2Ugd2lsbAotICAgICAgIGNoYW5nZSBGQUlMIHRvIGhhdmUgdGhl
IG1lYW5pbmcgb2YgSU1BR0UrVEVYVCBhbmQgcmVtb3ZlIHRoZSBJTUFHRStURVhUCi0gICAgICAg
aWRlbnRpZmllci4KKyAgICAgIC1BIHRlc3Qgc2hvdWxkIG9ubHkgYmUgb25lIG9mIElNQUdFLCBU
RVhULCBJTUFHRStURVhULCBBVURJTywgb3IgRkFJTC4KKyAgICAgICBGQUlMIGlzIGEgbGVnYWN5
IHZhbHVlIHRoYXQgY3VycmVudGx5IG1lYW5zIGVpdGhlciBJTUFHRSwKKyAgICAgICBURVhULCBv
ciBJTUFHRStURVhULiBPbmNlIHdlIGhhdmUgZmluaXNoZWQgbWlncmF0aW5nIHRoZSBleHBlY3Rh
dGlvbnMsCisgICAgICAgd2Ugc2hvdWxkIGNoYW5nZSBGQUlMIHRvIGhhdmUgdGhlIG1lYW5pbmcg
b2YgSU1BR0UrVEVYVCBhbmQgcmVtb3ZlIHRoZQorICAgICAgIElNQUdFK1RFWFQgaWRlbnRpZmll
ci4KICAgICAgIC1BIHRlc3QgY2FuIGJlIGluY2x1ZGVkIHR3aWNlLCBidXQgbm90IHZpYSB0aGUg
c2FtZSBwYXRoLgogICAgICAgLUlmIGEgdGVzdCBpcyBpbmNsdWRlZCB0d2ljZSwgdGhlbiB0aGUg
bW9yZSBwcmVjaXNlIHBhdGggd2lucy4KICAgICAgIC1DUkFTSCB0ZXN0cyBjYW5ub3QgYmUgV09O
VEZJWApAQCAtMjU5LDYgKzI2MCw3IEBAIGNsYXNzIFRlc3RFeHBlY3RhdGlvbnNGaWxlOgogICAg
ICAgICAgICAgICAgICAgICAndGV4dCc6IFRFWFQsCiAgICAgICAgICAgICAgICAgICAgICdpbWFn
ZSc6IElNQUdFLAogICAgICAgICAgICAgICAgICAgICAnaW1hZ2UrdGV4dCc6IElNQUdFX1BMVVNf
VEVYVCwKKyAgICAgICAgICAgICAgICAgICAgJ2F1ZGlvJzogQVVESU8sCiAgICAgICAgICAgICAg
ICAgICAgICd0aW1lb3V0JzogVElNRU9VVCwKICAgICAgICAgICAgICAgICAgICAgJ2NyYXNoJzog
Q1JBU0gsCiAgICAgICAgICAgICAgICAgICAgICdtaXNzaW5nJzogTUlTU0lOR30KQEAgLTI3MSw2
ICsyNzMsNyBAQCBjbGFzcyBUZXN0RXhwZWN0YXRpb25zRmlsZToKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgSU1BR0U6ICgnaW1hZ2UgbWlzbWF0Y2gnLCAnaW1hZ2UgbWlzbWF0Y2gn
KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU1BR0VfUExVU19URVhUOiAoJ2lt
YWdlIGFuZCB0ZXh0IG1pc21hdGNoJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ2ltYWdlIGFuZCB0ZXh0IG1pc21hdGNoJyksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEFVRElPOiAoJ2F1ZGlvIG1pc21hdGNoJywgJ2F1ZGlvIG1p
c21hdGNoJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENSQVNIOiAoJ0R1bXBS
ZW5kZXJUcmVlIGNyYXNoJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnRHVtcFJlbmRlclRyZWUgY3Jhc2hlcycpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBUSU1FT1VUOiAoJ3Rlc3QgdGltZWQgb3V0JywgJ3Rlc3RzIHRpbWVkIG91dCcpLApAQCAt
Mjc4LDcgKzI4MSw3IEBAIGNsYXNzIFRlc3RFeHBlY3RhdGlvbnNGaWxlOgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25vIGV4cGVjdGVkIHJlc3VsdHMgZm91bmQn
KX0KIAogICAgIEVYUEVDVEFUSU9OX09SREVSID0gKFBBU1MsIENSQVNILCBUSU1FT1VULCBNSVNT
SU5HLCBJTUFHRV9QTFVTX1RFWFQsCi0gICAgICAgVEVYVCwgSU1BR0UsIEZBSUwsIFNLSVApCisg
ICAgICAgVEVYVCwgSU1BR0UsIEFVRElPLCBGQUlMLCBTS0lQKQogCiAgICAgQlVJTERfVFlQRVMg
PSAoJ2RlYnVnJywgJ3JlbGVhc2UnKQogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2ZhaWx1cmVzLnB5IGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9mYWlsdXJl
cy5weQppbmRleCAxZmFkNzcyNDZiODVlNjJkMDBmMzVhMDVmZDJjYzY5YjIzZTQ5NmYyLi5mMTI3
YzJiYmUzNDgxYjJlMzQxOTM1NzgzYTIyYTY5MDY4ZWI1Yjk4IDEwMDY0NAotLS0gYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2ZhaWx1cmVz
LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNr
YWdlL3Rlc3RfZmFpbHVyZXMucHkKQEAgLTU0LDcgKzU0LDggQEAgZGVmIGRldGVybWluZV9yZXN1
bHRfdHlwZShmYWlsdXJlX2xpc3QpOgogICAgICAgICByZXR1cm4gdGVzdF9leHBlY3RhdGlvbnMu
VElNRU9VVAogICAgIGVsaWYgKEZhaWx1cmVNaXNzaW5nUmVzdWx0IGluIGZhaWx1cmVfdHlwZXMg
b3IKICAgICAgICAgICBGYWlsdXJlTWlzc2luZ0ltYWdlIGluIGZhaWx1cmVfdHlwZXMgb3IKLSAg
ICAgICAgICBGYWlsdXJlTWlzc2luZ0ltYWdlSGFzaCBpbiBmYWlsdXJlX3R5cGVzKToKKyAgICAg
ICAgICBGYWlsdXJlTWlzc2luZ0ltYWdlSGFzaCBpbiBmYWlsdXJlX3R5cGVzIG9yCisgICAgICAg
ICAgRmFpbHVyZU1pc3NpbmdBdWRpbyBpbiBmYWlsdXJlX3R5cGVzKToKICAgICAgICAgcmV0dXJu
IHRlc3RfZXhwZWN0YXRpb25zLk1JU1NJTkcKICAgICBlbHNlOgogICAgICAgICBpc190ZXh0X2Zh
aWx1cmUgPSBGYWlsdXJlVGV4dE1pc21hdGNoIGluIGZhaWx1cmVfdHlwZXMKQEAgLTYyLDEyICs2
MywxNSBAQCBkZWYgZGV0ZXJtaW5lX3Jlc3VsdF90eXBlKGZhaWx1cmVfbGlzdCk6CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRmFpbHVyZUltYWdlSGFzaE1pc21hdGNoIGluIGZhaWx1cmVf
dHlwZXMpCiAgICAgICAgIGlzX3JlZnRlc3RfZmFpbHVyZSA9IChGYWlsdXJlUmVmdGVzdE1pc21h
dGNoIGluIGZhaWx1cmVfdHlwZXMgb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZh
aWx1cmVSZWZ0ZXN0TWlzbWF0Y2hEaWROb3RPY2N1ciBpbiBmYWlsdXJlX3R5cGVzKQorICAgICAg
ICBpc19hdWRpb19mYWlsdXJlID0gKEZhaWx1cmVBdWRpb01pc21hdGNoIGluIGZhaWx1cmVfdHlw
ZXMpCiAgICAgICAgIGlmIGlzX3RleHRfZmFpbHVyZSBhbmQgaXNfaW1hZ2VfZmFpbHVyZToKICAg
ICAgICAgICAgIHJldHVybiB0ZXN0X2V4cGVjdGF0aW9ucy5JTUFHRV9QTFVTX1RFWFQKICAgICAg
ICAgZWxpZiBpc190ZXh0X2ZhaWx1cmU6CiAgICAgICAgICAgICByZXR1cm4gdGVzdF9leHBlY3Rh
dGlvbnMuVEVYVAogICAgICAgICBlbGlmIGlzX2ltYWdlX2ZhaWx1cmUgb3IgaXNfcmVmdGVzdF9m
YWlsdXJlOgogICAgICAgICAgICAgcmV0dXJuIHRlc3RfZXhwZWN0YXRpb25zLklNQUdFCisgICAg
ICAgIGVsaWYgaXNfYXVkaW9fZmFpbHVyZToKKyAgICAgICAgICAgIHJldHVybiB0ZXN0X2V4cGVj
dGF0aW9ucy5BVURJTwogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJv
cigidW5jbGFzc2lmaWFibGUgc2V0IG9mIGZhaWx1cmVzOiAiCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICsgc3RyKGZhaWx1cmVfdHlwZXMpKQpAQCAtMzMxLDYgKzMzNSwyOCBAQCBjbGFz
cyBGYWlsdXJlUmVmdGVzdE1pc21hdGNoRGlkTm90T2NjdXIoQ29tcGFyaXNvblRlc3RGYWlsdXJl
KToKICAgICAgICAgcmV0dXJuICcgJy5qb2luKGxpbmtzKQogCiAKK2NsYXNzIEZhaWx1cmVNaXNz
aW5nQXVkaW8oQ29tcGFyaXNvblRlc3RGYWlsdXJlKToKKyAgICAiIiJBY3R1YWwgcmVzdWx0IGlt
YWdlIHdhcyBtaXNzaW5nLiIiIgorICAgIE9VVF9GSUxFTkFNRVMgPSAoIi1hY3R1YWwud2F2Iiwp
CisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIG1lc3NhZ2UoKToKKyAgICAgICAgcmV0dXJu
ICJObyBleHBlY3RlZCBhdWRpbyBmb3VuZCIKKworICAgIGRlZiByZXN1bHRfaHRtbF9vdXRwdXQo
c2VsZiwgZmlsZW5hbWUpOgorICAgICAgICByZXR1cm4gKCI8c3Ryb25nPiVzPC9zdHJvbmc+IiAl
IHNlbGYubWVzc2FnZSgpICsKKyAgICAgICAgICAgICAgICBzZWxmLm91dHB1dF9saW5rcyhmaWxl
bmFtZSwgc2VsZi5PVVRfRklMRU5BTUVTKSkKKworCitjbGFzcyBGYWlsdXJlQXVkaW9NaXNtYXRj
aChDb21wYXJpc29uVGVzdEZhaWx1cmUpOgorICAgICIiIkF1ZGlvIGZpbGVzIGRpZG4ndCBtYXRj
aC4iIiIKKyAgICBPVVRfRklMRU5BTUVTID0gKCItYWN0dWFsLndhdiIsICItZXhwZWN0ZWQud2F2
IikKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgbWVzc2FnZSgpOgorICAgICAgICByZXR1
cm4gIkF1ZGlvIG1pc21hdGNoIgorCisKICMgQ29udmVuaWVudCBjb2xsZWN0aW9uIG9mIGFsbCBm
YWlsdXJlIGNsYXNzZXMgZm9yIGFueXRoaW5nIHRoYXQgbWlnaHQKICMgbmVlZCB0byBlbnVtZXJh
dGUgb3ZlciB0aGVtIGFsbC4KIEFMTF9GQUlMVVJFX0NMQVNTRVMgPSAoRmFpbHVyZVRpbWVvdXQs
IEZhaWx1cmVDcmFzaCwgRmFpbHVyZU1pc3NpbmdSZXN1bHQsCmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X3Jlc3VsdF93
cml0ZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFj
a2FnZS90ZXN0X3Jlc3VsdF93cml0ZXIucHkKaW5kZXggZTIwOTUwMzBmZTg0MDY5YzRhODM1Zjdi
YzIyMGQ2ZDJkMDkzYTI5My4uNWE5NWEzMTg5NjQ3NWUyZWVkNDcyYjgzNjcyNmU3ODA1Njg5NTBk
NiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0
X3BhY2thZ2UvdGVzdF9yZXN1bHRfd3JpdGVyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfcmVzdWx0X3dyaXRlci5weQpAQCAt
NjMsNiArNjMsMTAgQEAgZGVmIHdyaXRlX3Rlc3RfcmVzdWx0KHBvcnQsIHJvb3Rfb3V0cHV0X2Rp
ciwgZmlsZW5hbWUsIGRyaXZlcl9vdXRwdXQsCiAgICAgICAgICAgICBpZiBub3QgaW1hZ2VzX2Fy
ZV9kaWZmZXJlbnQ6CiAgICAgICAgICAgICAgICAgY2hlY2tzdW1zX21pc21hdGNoX2J1dF9pbWFn
ZXNfYXJlX3NhbWUgPSBUcnVlCiAgICAgICAgICAgICAgICAgaW1hZ2VoYXNoX21pc21hdGNoX2Zh
aWx1cmUgPSBmYWlsdXJlCisgICAgICAgIGVsaWYgaXNpbnN0YW5jZShmYWlsdXJlLCB0ZXN0X2Zh
aWx1cmVzLkZhaWx1cmVBdWRpb01pc21hdGNoKToKKyAgICAgICAgICAgIHdyaXRlci53cml0ZV9h
dWRpb19maWxlcyhkcml2ZXJfb3V0cHV0LmF1ZGlvLCBleHBlY3RlZF9kcml2ZXJfb3V0cHV0LmF1
ZGlvKQorICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZmFpbHVyZSwgdGVzdF9mYWlsdXJlcy5GYWls
dXJlTWlzc2luZ0F1ZGlvKToKKyAgICAgICAgICAgIHdyaXRlci53cml0ZV9hdWRpb19maWxlcyhk
cml2ZXJfb3V0cHV0LmF1ZGlvLCBleHBlY3RlZF9hdWRpbz1Ob25lKQogICAgICAgICBlbGlmIGlz
aW5zdGFuY2UoZmFpbHVyZSwgdGVzdF9mYWlsdXJlcy5GYWlsdXJlQ3Jhc2gpOgogICAgICAgICAg
ICAgaWYgZmFpbHVyZS5yZWZlcmVuY2VfZmlsZW5hbWU6CiAgICAgICAgICAgICAgICAgd3JpdGVy
LndyaXRlX2NyYXNoX3JlcG9ydChleHBlY3RlZF9kcml2ZXJfb3V0cHV0LmVycm9yKQpAQCAtMTg3
LDYgKzE5MSw5IEBAIGNsYXNzIFRlc3RSZXN1bHRXcml0ZXIob2JqZWN0KToKICAgICAgICAgcHJl
dHR5X3BhdGNoX2ZpbGVuYW1lID0gc2VsZi5vdXRwdXRfZmlsZW5hbWUoc2VsZi5GSUxFTkFNRV9T
VUZGSVhfUFJFVFRZX1BBVENIKQogICAgICAgICBmcy53cml0ZV9iaW5hcnlfZmlsZShwcmV0dHlf
cGF0Y2hfZmlsZW5hbWUsIHByZXR0eV9wYXRjaCkKIAorICAgIGRlZiB3cml0ZV9hdWRpb19maWxl
cyhzZWxmLCBhY3R1YWxfYXVkaW8sIGV4cGVjdGVkX2F1ZGlvKToKKyAgICAgICAgc2VsZi53cml0
ZV9vdXRwdXRfZmlsZXMoJy53YXYnLCBhY3R1YWxfYXVkaW8sIGV4cGVjdGVkX2F1ZGlvKQorCiAg
ICAgZGVmIHdyaXRlX2ltYWdlX2ZpbGVzKHNlbGYsIGFjdHVhbF9pbWFnZSwgZXhwZWN0ZWRfaW1h
Z2UpOgogICAgICAgICBzZWxmLndyaXRlX291dHB1dF9maWxlcygnLnBuZycsIGFjdHVhbF9pbWFn
ZSwgZXhwZWN0ZWRfaW1hZ2UpCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvYmFzZS5weQppbmRleCBjMjA0ODZjODA2YmUyZjM4NGZmNWQ4NGZkNTMxNjM5
NmEzZWY5Y2Y2Li4wMDY0Y2M1MGZkZTZkNjczMDI0YTVhZDkxYTZhOTJlNzU4MGVjNzIzIDEwMDY0
NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkK
KysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5CkBA
IC0yMDYsNiArMjA2LDEwIEBAIGNsYXNzIFBvcnQob2JqZWN0KToKICAgICAgICAgaW50ZXJmYWNl
IHNvIHRoYXQgaXQgY2FuIGJlIG92ZXJyaWRlbiBmb3IgdGVzdGluZyBwdXJwb3Nlcy4iIiIKICAg
ICAgICAgcmV0dXJuIGV4cGVjdGVkX3RleHQgIT0gYWN0dWFsX3RleHQKIAorICAgIGRlZiBjb21w
YXJlX2F1ZGlvKHNlbGYsIGV4cGVjdGVkX2F1ZGlvLCBhY3R1YWxfYXVkaW8pOgorICAgICAgICAi
IiJSZXR1cm4gd2hldGhlciB0aGUgdHdvIGF1ZGlvIGZpbGVzIGFyZSAqbm90KiBlcXVhbC4iIiIK
KyAgICAgICAgcmV0dXJuIGV4cGVjdGVkX2F1ZGlvICE9IGFjdHVhbF9hdWRpbworCiAgICAgZGVm
IGRpZmZfaW1hZ2Uoc2VsZiwgZXhwZWN0ZWRfY29udGVudHMsIGFjdHVhbF9jb250ZW50cywKICAg
ICAgICAgICAgICAgICAgICBkaWZmX2ZpbGVuYW1lPU5vbmUsIHRvbGVyYW5jZT0wKToKICAgICAg
ICAgIiIiQ29tcGFyZSB0d28gaW1hZ2VzIGFuZCBwcm9kdWNlIGEgZGVsdGEgaW1hZ2UgZmlsZS4K
QEAgLTM1MSw2ICszNTUsMTIgQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAgICAgICAgICAgcmV0
dXJuIE5vbmUKICAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbGVzeXN0ZW0ucmVhZF9iaW5hcnlfZmls
ZShwYXRoKQogCisgICAgZGVmIGV4cGVjdGVkX2F1ZGlvKHNlbGYsIHRlc3QpOgorICAgICAgICBw
YXRoID0gc2VsZi5leHBlY3RlZF9maWxlbmFtZSh0ZXN0LCAnLndhdicpCisgICAgICAgIGlmIG5v
dCBzZWxmLnBhdGhfZXhpc3RzKHBhdGgpOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAg
ICAgcmV0dXJuIHNlbGYuX2ZpbGVzeXN0ZW0ucmVhZF9iaW5hcnlfZmlsZShwYXRoKQorCiAgICAg
ZGVmIGV4cGVjdGVkX3RleHQoc2VsZiwgdGVzdCk6CiAgICAgICAgICIiIlJldHVybnMgdGhlIHRl
eHQgb3V0cHV0IHdlIGV4cGVjdCB0aGUgdGVzdCB0byBwcm9kdWNlLgogICAgICAgICBFbmQtb2Yt
bGluZSBjaGFyYWN0ZXJzIGFyZSBub3JtYWxpemVkIHRvICdcbicuIiIiCkBAIC04NjgsNyArODc4
LDggQEAgY2xhc3MgRHJpdmVyT3V0cHV0KG9iamVjdCk6CiAgICAgIiIiR3JvdXBzIGluZm9ybWF0
aW9uIGFib3V0IGEgb3V0cHV0IGZyb20gZHJpdmVyIGZvciBlYXN5IHBhc3Npbmcgb2YgZGF0YS4i
IiIKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0ZXh0LCBpbWFnZSwgaW1hZ2VfaGFzaCwKLSAg
ICAgICAgICAgICAgICAgY3Jhc2g9RmFsc2UsIHRlc3RfdGltZT1Ob25lLCB0aW1lb3V0PUZhbHNl
LCBlcnJvcj0nJyk6CisgICAgICAgICAgICAgICAgIGNyYXNoPUZhbHNlLCB0ZXN0X3RpbWU9Tm9u
ZSwgdGltZW91dD1GYWxzZSwgZXJyb3I9JycsCisgICAgICAgICAgICAgICAgIGF1ZGlvPU5vbmUp
OgogICAgICAgICAiIiJJbml0aWFsaXplcyBhIFRlc3RPdXRwdXQgb2JqZWN0LgogCiAgICAgICAg
IEFyZ3M6CkBAIC04NzksNiArODkwLDcgQEAgY2xhc3MgRHJpdmVyT3V0cHV0KG9iamVjdCk6CiAg
ICAgICAgICAgdGVzdF90aW1lOiBhIHRpbWUgd2hpY2ggdGhlIHRlc3QgaGFzIHRha2VuCiAgICAg
ICAgICAgdGltZW91dDogYSBib29sZWFuIGluZGljYXRpbmcgd2hlaHRlciB0aGUgdGVzdCB0aW1l
ZCBvdXQKICAgICAgICAgICBlcnJvcjogYW55IHVuZXhwZWN0ZWQgb3IgYWRkaXRpb25hbCAob3Ig
ZXJyb3IpIHRleHQgb3V0cHV0CisgICAgICAgICAgYXVkaW86IGNvbnRlbnRzIG9mIGFuIGF1ZGlv
IHN0cmVhbSwgaWYgYW55IChpbiBXQVYgZm9ybWF0KQogICAgICAgICAiIiIKICAgICAgICAgc2Vs
Zi50ZXh0ID0gdGV4dAogICAgICAgICBzZWxmLmltYWdlID0gaW1hZ2UKQEAgLTg4Nyw2ICs4OTks
NyBAQCBjbGFzcyBEcml2ZXJPdXRwdXQob2JqZWN0KToKICAgICAgICAgc2VsZi50ZXN0X3RpbWUg
PSB0ZXN0X3RpbWUKICAgICAgICAgc2VsZi50aW1lb3V0ID0gdGltZW91dAogICAgICAgICBzZWxm
LmVycm9yID0gZXJyb3IKKyAgICAgICAgc2VsZi5hdWRpbyA9IGF1ZGlvCiAKIAogY2xhc3MgRHJp
dmVyOgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC90ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0
LnB5CmluZGV4IDMwYjQzM2VlNzMzMDgzNjY2Yzc5NDhhZWQwZDJiZmJjM2E5ZjI3NmQuLmQwYzk0
YjQzYjJhNWQ0NmYzNWUzMjVjZmJmZWNhNmUxYzA3NDNlNGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdC5weQorKysgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3QucHkKQEAgLTY2LDYgKzY2LDggQEAg
Y2xhc3MgVGVzdEluc3RhbmNlOgogICAgICAgICBzZWxmLmV4cGVjdGVkX2NoZWNrc3VtID0gc2Vs
Zi5hY3R1YWxfY2hlY2tzdW0KICAgICAgICAgc2VsZi5leHBlY3RlZF9pbWFnZSA9IHNlbGYuYWN0
dWFsX2ltYWdlCiAKKyAgICAgICAgc2VsZi5hY3R1YWxfYXVkaW8gPSBOb25lCisgICAgICAgIHNl
bGYuZXhwZWN0ZWRfYXVkaW8gPSBOb25lCiAKICMgVGhpcyBpcyBhbiBpbi1tZW1vcnkgbGlzdCBv
ZiB0ZXN0cywgd2hhdCB3ZSB3YW50IHRoZW0gdG8gcHJvZHVjZSwgYW5kCiAjIHdoYXQgd2Ugd2Fu
dCB0byBjbGFpbSBhcmUgdGhlIGV4cGVjdGVkIHJlc3VsdHMuCkBAIC0xMTEsMTEgKzExMywyMCBA
QCBkZWYgdW5pdF90ZXN0X2xpc3QoKToKICAgICB0ZXN0cy5hZGQoJ2ZhaWx1cmVzL2V4cGVjdGVk
L2ltYWdlX2NoZWNrc3VtLmh0bWwnLAogICAgICAgICAgICAgICBhY3R1YWxfY2hlY2tzdW09J2lt
YWdlX2NoZWNrc3VtX2ZhaWwtY2hlY2tzdW0nLAogICAgICAgICAgICAgICBhY3R1YWxfaW1hZ2U9
J2ltYWdlX2NoZWNrc3VtX2ZhaWwtcG5nJykKKyAgICB0ZXN0cy5hZGQoJ2ZhaWx1cmVzL2V4cGVj
dGVkL2F1ZGlvLmh0bWwnLAorICAgICAgICAgICAgICBhY3R1YWxfYXVkaW89J2F1ZGlvX2ZhaWwt
d2F2JywgZXhwZWN0ZWRfYXVkaW89J2F1ZGlvLXdhdicsCisgICAgICAgICAgICAgIGFjdHVhbF90
ZXh0PU5vbmUsIGV4cGVjdGVkX3RleHQ9Tm9uZSwKKyAgICAgICAgICAgICAgYWN0dWFsX2ltYWdl
PU5vbmUsIGV4cGVjdGVkX2ltYWdlPU5vbmUsCisgICAgICAgICAgICAgIGFjdHVhbF9jaGVja3N1
bT1Ob25lLCBleHBlY3RlZF9jaGVja3N1bT1Ob25lKQogICAgIHRlc3RzLmFkZCgnZmFpbHVyZXMv
ZXhwZWN0ZWQva2V5Ym9hcmQuaHRtbCcsIGtleWJvYXJkPVRydWUpCiAgICAgdGVzdHMuYWRkKCdm
YWlsdXJlcy9leHBlY3RlZC9taXNzaW5nX2NoZWNrLmh0bWwnLAogICAgICAgICAgICAgICBleHBl
Y3RlZF9jaGVja3N1bT1Ob25lLAogICAgICAgICAgICAgICBleHBlY3RlZF9pbWFnZT1Ob25lKQog
ICAgIHRlc3RzLmFkZCgnZmFpbHVyZXMvZXhwZWN0ZWQvbWlzc2luZ19pbWFnZS5odG1sJywgZXhw
ZWN0ZWRfaW1hZ2U9Tm9uZSkKKyAgICB0ZXN0cy5hZGQoJ2ZhaWx1cmVzL2V4cGVjdGVkL21pc3Np
bmdfYXVkaW8uaHRtbCcsIGV4cGVjdGVkX2F1ZGlvPU5vbmUsCisgICAgICAgICAgICAgIGFjdHVh
bF90ZXh0PU5vbmUsIGV4cGVjdGVkX3RleHQ9Tm9uZSwKKyAgICAgICAgICAgICAgYWN0dWFsX2lt
YWdlPU5vbmUsIGV4cGVjdGVkX2ltYWdlPU5vbmUsCisgICAgICAgICAgICAgIGFjdHVhbF9jaGVj
a3N1bT1Ob25lLCBleHBlY3RlZF9jaGVja3N1bT1Ob25lKQogICAgIHRlc3RzLmFkZCgnZmFpbHVy
ZXMvZXhwZWN0ZWQvbWlzc2luZ190ZXh0Lmh0bWwnLCBleHBlY3RlZF90ZXh0PU5vbmUpCiAgICAg
dGVzdHMuYWRkKCdmYWlsdXJlcy9leHBlY3RlZC9uZXdsaW5lc19sZWFkaW5nLmh0bWwnLAogICAg
ICAgICAgICAgICBleHBlY3RlZF90ZXh0PSJcbmZvb1xuIiwgYWN0dWFsX3RleHQ9ImZvb1xuIikK
QEAgLTEzNCw2ICsxNDUsMTEgQEAgZGVmIHVuaXRfdGVzdF9saXN0KCk6CiAgICAgdGVzdHMuYWRk
KCdodHRwL3Rlc3RzL3NzbC90ZXh0Lmh0bWwnKQogICAgIHRlc3RzLmFkZCgncGFzc2VzL2Vycm9y
Lmh0bWwnLCBlcnJvcj0nc3R1ZmYgZ29pbmcgdG8gc3RkZXJyJykKICAgICB0ZXN0cy5hZGQoJ3Bh
c3Nlcy9pbWFnZS5odG1sJykKKyAgICB0ZXN0cy5hZGQoJ3Bhc3Nlcy9hdWRpby5odG1sJywKKyAg
ICAgICAgICAgICAgYWN0dWFsX2F1ZGlvPSdhdWRpby13YXYnLCBleHBlY3RlZF9hdWRpbz0nYXVk
aW8td2F2JywKKyAgICAgICAgICAgICAgYWN0dWFsX3RleHQ9Tm9uZSwgZXhwZWN0ZWRfdGV4dD1O
b25lLAorICAgICAgICAgICAgICBhY3R1YWxfaW1hZ2U9Tm9uZSwgZXhwZWN0ZWRfaW1hZ2U9Tm9u
ZSwKKyAgICAgICAgICAgICAgYWN0dWFsX2NoZWNrc3VtPU5vbmUsIGV4cGVjdGVkX2NoZWNrc3Vt
PU5vbmUpCiAgICAgdGVzdHMuYWRkKCdwYXNzZXMvcGxhdGZvcm1faW1hZ2UuaHRtbCcpCiAgICAg
dGVzdHMuYWRkKCdwYXNzZXMvY2hlY2tzdW1faW5faW1hZ2UuaHRtbCcsCiAgICAgICAgICAgICAg
IGV4cGVjdGVkX2NoZWNrc3VtPU5vbmUsCkBAIC0xODQsMjAgKzIwMCwyNyBAQCBkZWYgdW5pdF90
ZXN0X2ZpbGVzeXN0ZW0oZmlsZXM9Tm9uZSk6CiAgICAgICAgIGFkZF9maWxlKGZpbGVzLCB0ZXN0
LCAnLmh0bWwnLCAnJykKICAgICAgICAgaWYgdGVzdC5pc19yZWZ0ZXN0OgogICAgICAgICAgICAg
Y29udGludWUKKyAgICAgICAgaWYgdGVzdC5hY3R1YWxfYXVkaW86CisgICAgICAgICAgICBhZGRf
ZmlsZShmaWxlcywgdGVzdCwgJy1leHBlY3RlZC53YXYnLCB0ZXN0LmV4cGVjdGVkX2F1ZGlvKQor
ICAgICAgICAgICAgY29udGludWUKKwogICAgICAgICBhZGRfZmlsZShmaWxlcywgdGVzdCwgJy1l
eHBlY3RlZC50eHQnLCB0ZXN0LmV4cGVjdGVkX3RleHQpCiAgICAgICAgIGFkZF9maWxlKGZpbGVz
LCB0ZXN0LCAnLWV4cGVjdGVkLmNoZWNrc3VtJywgdGVzdC5leHBlY3RlZF9jaGVja3N1bSkKICAg
ICAgICAgYWRkX2ZpbGUoZmlsZXMsIHRlc3QsICctZXhwZWN0ZWQucG5nJywgdGVzdC5leHBlY3Rl
ZF9pbWFnZSkKIAorCiAgICAgIyBBZGQgdGhlIHRlc3RfZXhwZWN0YXRpb25zIGZpbGUuCiAgICAg
ZmlsZXNbTEFZT1VUX1RFU1RfRElSICsgJy9wbGF0Zm9ybS90ZXN0L3Rlc3RfZXhwZWN0YXRpb25z
LnR4dCddID0gIiIiCiBXT05URklYIDogZmFpbHVyZXMvZXhwZWN0ZWQvY2hlY2tzdW0uaHRtbCA9
IElNQUdFCiBXT05URklYIDogZmFpbHVyZXMvZXhwZWN0ZWQvY3Jhc2guaHRtbCA9IENSQVNICiAv
LyBUaGlzIG9uZSBhY3R1YWxseSBwYXNzZXMgYmVjYXVzZSB0aGUgY2hlY2tzdW1zIHdpbGwgbWF0
Y2guCiBXT05URklYIDogZmFpbHVyZXMvZXhwZWN0ZWQvaW1hZ2UuaHRtbCA9IFBBU1MKK1dPTlRG
SVggOiBmYWlsdXJlcy9leHBlY3RlZC9hdWRpby5odG1sID0gQVVESU8KIFdPTlRGSVggOiBmYWls
dXJlcy9leHBlY3RlZC9pbWFnZV9jaGVja3N1bS5odG1sID0gSU1BR0UKIFdPTlRGSVggOiBmYWls
dXJlcy9leHBlY3RlZC9taXNtYXRjaC5odG1sID0gSU1BR0UKIFdPTlRGSVggOiBmYWlsdXJlcy9l
eHBlY3RlZC9taXNzaW5nX2NoZWNrLmh0bWwgPSBNSVNTSU5HIFBBU1MKIFdPTlRGSVggOiBmYWls
dXJlcy9leHBlY3RlZC9taXNzaW5nX2ltYWdlLmh0bWwgPSBNSVNTSU5HIFBBU1MKK1dPTlRGSVgg
OiBmYWlsdXJlcy9leHBlY3RlZC9taXNzaW5nX2F1ZGlvLmh0bWwgPSBNSVNTSU5HIFBBU1MKIFdP
TlRGSVggOiBmYWlsdXJlcy9leHBlY3RlZC9taXNzaW5nX3RleHQuaHRtbCA9IE1JU1NJTkcgUEFT
UwogV09OVEZJWCA6IGZhaWx1cmVzL2V4cGVjdGVkL25ld2xpbmVzX2xlYWRpbmcuaHRtbCA9IFRF
WFQKIFdPTlRGSVggOiBmYWlsdXJlcy9leHBlY3RlZC9uZXdsaW5lc190cmFpbGluZy5odG1sID0g
VEVYVApAQCAtNDE1LDcgKzQzOCw3IEBAIGNsYXNzIFRlc3REcml2ZXIoYmFzZS5Ecml2ZXIpOgog
ICAgICAgICByZXR1cm4gYmFzZS5Ecml2ZXJPdXRwdXQodGVzdC5hY3R1YWxfdGV4dCwgdGVzdC5h
Y3R1YWxfaW1hZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0LmFjdHVh
bF9jaGVja3N1bSwgdGVzdC5jcmFzaCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRpbWUudGltZSgpIC0gc3RhcnRfdGltZSwgdGVzdC50aW1lb3V0LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGVzdC5lcnJvcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRlc3QuZXJyb3IsIHRlc3QuYWN0dWFsX2F1ZGlvKQogCiAgICAgZGVmIHN0YXJ0KHNl
bGYpOgogICAgICAgICBwYXNzCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvd2Via2l0LnB5CmluZGV4IDA1MjI2MzE0OTQwY2U5ZTFmZDJhMmNiYTI4NWUy
NWEyYzZmNzA4YjIuLmM2NjgwOGNjMDQzMTcyOTJiNDEwNWJjYmViN2FjOTA4MDVlOTU5NTUgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0
LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0
LnB5CkBAIC0zMCw3ICszMCw3IEBACiAKICIiIldlYktpdCBpbXBsZW1lbnRhdGlvbnMgb2YgdGhl
IFBvcnQgaW50ZXJmYWNlLiIiIgogCi0KK2ltcG9ydCBiYXNlNjQKIGltcG9ydCBsb2dnaW5nCiBp
bXBvcnQgb3BlcmF0b3IKIGltcG9ydCBvcwpAQCAtNDA2LDQ3ICs0MDYsMjQgQEAgY2xhc3MgV2Vi
S2l0RHJpdmVyKGJhc2UuRHJpdmVyKToKICAgICAgICAgc3RhcnRfdGltZSA9IHRpbWUudGltZSgp
CiAgICAgICAgIHNlbGYuX3NlcnZlcl9wcm9jZXNzLndyaXRlKGNvbW1hbmQpCiAKLSAgICAgICAg
aGF2ZV9zZWVuX2NvbnRlbnRfdHlwZSA9IEZhbHNlCisgICAgICAgIG91dHB1dCA9IE5vbmUgICMg
VXNlIGEgYnl0ZSBhcnJheSBmb3Igb3V0cHV0LCBldmVuIHRob3VnaCBpdCBzaG91bGQgYmUgVVRG
LTguCiAgICAgICAgIGFjdHVhbF9pbWFnZV9oYXNoID0gTm9uZQotICAgICAgICBvdXRwdXQgPSBz
dHIoKSAgIyBVc2UgYSBieXRlIGFycmF5IGZvciBvdXRwdXQsIGV2ZW4gdGhvdWdoIGl0IHNob3Vs
ZCBiZSBVVEYtOC4KICAgICAgICAgaW1hZ2UgPSBzdHIoKQorICAgICAgICBhdWRpbyA9IE5vbmUK
KyAgICAgICAgZGVhZGxpbmUgPSB0aW1lLnRpbWUoKSArIGludChkcml2ZXJfaW5wdXQudGltZW91
dCkgLyAxMDAwLjAKIAotICAgICAgICB0aW1lb3V0ID0gaW50KGRyaXZlcl9pbnB1dC50aW1lb3V0
KSAvIDEwMDAuMAotICAgICAgICBkZWFkbGluZSA9IHRpbWUudGltZSgpICsgdGltZW91dAotICAg
ICAgICBsaW5lID0gc2VsZi5fc2VydmVyX3Byb2Nlc3MucmVhZF9saW5lKHRpbWVvdXQpCi0gICAg
ICAgIHdoaWxlIChub3Qgc2VsZi5fc2VydmVyX3Byb2Nlc3MudGltZWRfb3V0Ci0gICAgICAgICAg
ICAgICBhbmQgbm90IHNlbGYuX3NlcnZlcl9wcm9jZXNzLmNyYXNoZWQKLSAgICAgICAgICAgICAg
IGFuZCBsaW5lLnJzdHJpcCgpICE9ICIjRU9GIik6Ci0gICAgICAgICAgICBpZiAobGluZS5zdGFy
dHN3aXRoKCdDb250ZW50LVR5cGU6JykgYW5kIG5vdAotICAgICAgICAgICAgICAgIGhhdmVfc2Vl
bl9jb250ZW50X3R5cGUpOgotICAgICAgICAgICAgICAgIGhhdmVfc2Vlbl9jb250ZW50X3R5cGUg
PSBUcnVlCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICMgTm90ZTogVGV4dCBv
dXRwdXQgZnJvbSBEdW1wUmVuZGVyVHJlZSBpcyBhbHdheXMgVVRGLTguCi0gICAgICAgICAgICAg
ICAgIyBIb3dldmVyLCBzb21lIHRlc3RzIChlLmcuIHdlYmFyY2hpdmVzKSBzcGl0IG91dCBiaW5h
cnkKLSAgICAgICAgICAgICAgICAjIGRhdGEgaW5zdGVhZCBvZiB0ZXh0LiAgU28gdG8gbWFrZSB0
aGluZ3Mgc2ltcGxlLCB3ZQotICAgICAgICAgICAgICAgICMgYWx3YXlzIHRyZWF0IHRoZSBvdXRw
dXQgYXMgYmluYXJ5LgotICAgICAgICAgICAgICAgIG91dHB1dCArPSBsaW5lCi0gICAgICAgICAg
ICBsaW5lID0gc2VsZi5fc2VydmVyX3Byb2Nlc3MucmVhZF9saW5lKHRpbWVvdXQpCi0gICAgICAg
ICAgICB0aW1lb3V0ID0gZGVhZGxpbmUgLSB0aW1lLnRpbWUoKQorICAgICAgICAjIEZpcnN0IGJs
b2NrIGlzIGVpdGhlciB0ZXh0IG9yIGF1ZGlvCisgICAgICAgIGJsb2NrID0gc2VsZi5fcmVhZF9i
bG9jayhkZWFkbGluZSkKKyAgICAgICAgaWYgYmxvY2suY29udGVudF90eXBlID09ICdhdWRpby93
YXYnOgorICAgICAgICAgICAgYXVkaW8gPSBibG9jay5kZWNvZGVkX2NvbnRlbnQKKyAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgIG91dHB1dCA9IGJsb2NrLmRlY29kZWRfY29udGVudAogCiAgICAg
ICAgICMgTm93IHJlYWQgYSBzZWNvbmQgYmxvY2sgb2YgdGV4dCBmb3IgdGhlIG9wdGlvbmFsIGlt
YWdlIGRhdGEKLSAgICAgICAgcmVtYWluaW5nX2xlbmd0aCA9IC0xCi0gICAgICAgIEhBU0hfSEVB
REVSID0gJ0FjdHVhbEhhc2g6ICcKLSAgICAgICAgTEVOR1RIX0hFQURFUiA9ICdDb250ZW50LUxl
bmd0aDogJwotICAgICAgICBsaW5lID0gc2VsZi5fc2VydmVyX3Byb2Nlc3MucmVhZF9saW5lKHRp
bWVvdXQpCi0gICAgICAgIHdoaWxlIChub3Qgc2VsZi5fc2VydmVyX3Byb2Nlc3MudGltZWRfb3V0
Ci0gICAgICAgICAgICAgICBhbmQgbm90IHNlbGYuX3NlcnZlcl9wcm9jZXNzLmNyYXNoZWQKLSAg
ICAgICAgICAgICAgIGFuZCBsaW5lLnJzdHJpcCgpICE9ICIjRU9GIik6Ci0gICAgICAgICAgICBp
ZiBsaW5lLnN0YXJ0c3dpdGgoSEFTSF9IRUFERVIpOgotICAgICAgICAgICAgICAgIGFjdHVhbF9p
bWFnZV9oYXNoID0gbGluZVtsZW4oSEFTSF9IRUFERVIpOl0uc3RyaXAoKQotICAgICAgICAgICAg
ZWxpZiBsaW5lLnN0YXJ0c3dpdGgoJ0NvbnRlbnQtVHlwZTonKToKLSAgICAgICAgICAgICAgICBw
YXNzCi0gICAgICAgICAgICBlbGlmIGxpbmUuc3RhcnRzd2l0aChMRU5HVEhfSEVBREVSKToKLSAg
ICAgICAgICAgICAgICB0aW1lb3V0ID0gZGVhZGxpbmUgLSB0aW1lLnRpbWUoKQotICAgICAgICAg
ICAgICAgIGNvbnRlbnRfbGVuZ3RoID0gaW50KGxpbmVbbGVuKExFTkdUSF9IRUFERVIpOl0pCi0g
ICAgICAgICAgICAgICAgaW1hZ2UgPSBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5yZWFkKHRpbWVvdXQs
IGNvbnRlbnRfbGVuZ3RoKQotICAgICAgICAgICAgdGltZW91dCA9IGRlYWRsaW5lIC0gdGltZS50
aW1lKCkKLSAgICAgICAgICAgIGxpbmUgPSBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5yZWFkX2xpbmUo
dGltZW91dCkKKyAgICAgICAgYmxvY2sgPSBzZWxmLl9yZWFkX2Jsb2NrKGRlYWRsaW5lKQorICAg
ICAgICBpZiBibG9jay5jb250ZW50IGFuZCBibG9jay5jb250ZW50X3R5cGUgPT0gJ2ltYWdlL3Bu
Zyc6CisgICAgICAgICAgICBpbWFnZSA9IGJsb2NrLmRlY29kZWRfY29udGVudAorICAgICAgICAg
ICAgYWN0dWFsX2ltYWdlX2hhc2ggPSBibG9jay5jb250ZW50X2hhc2gKIAogICAgICAgICBlcnJv
cl9saW5lcyA9IHNlbGYuX3NlcnZlcl9wcm9jZXNzLmVycm9yLnNwbGl0bGluZXMoKQogICAgICAg
ICAjIEZJWE1FOiBUaGlzIGlzIGEgaGFjay4gIEl0IGlzIHVuY2xlYXIgd2h5IHNvbWV0aW1lcwpA
QCAtNDU4LDEzICs0MzUsNjEgQEAgY2xhc3MgV2ViS2l0RHJpdmVyKGJhc2UuRHJpdmVyKToKICAg
ICAgICAgIyBGSVhNRTogVGhpcyBzZWVtcyBsaWtlIHRoZSB3cm9uZyBzZWN0aW9uIG9mIGNvZGUg
dG8gYmUgZG9pbmcKICAgICAgICAgIyB0aGlzIHJlc2V0IGluLgogICAgICAgICBzZWxmLl9zZXJ2
ZXJfcHJvY2Vzcy5lcnJvciA9ICIiCisKICAgICAgICAgcmV0dXJuIGJhc2UuRHJpdmVyT3V0cHV0
KG91dHB1dCwgaW1hZ2UsIGFjdHVhbF9pbWFnZV9oYXNoLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2VsZi5fc2VydmVyX3Byb2Nlc3MuY3Jhc2hlZCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRpbWUudGltZSgpIC0gc3RhcnRfdGltZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3NlcnZlcl9wcm9jZXNzLnRpbWVkX291dCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZXJyb3IsIGF1ZGlvKQorCisgICAgZGVmIF9yZWFkX2Jsb2NrKHNlbGYs
IGRlYWRsaW5lKToKKyAgICAgICAgTEVOR1RIX0hFQURFUiA9ICdDb250ZW50LUxlbmd0aDogJwor
ICAgICAgICBIQVNIX0hFQURFUiA9ICdBY3R1YWxIYXNoOiAnCisgICAgICAgIFRZUEVfSEVBREVS
ID0gJ0NvbnRlbnQtVHlwZTogJworICAgICAgICBFTkNPRElOR19IRUFERVIgPSAnQ29udGVudC1U
cmFuc2Zlci1FbmNvZGluZzogJworICAgICAgICBjb250ZW50X3R5cGUgPSBOb25lCisgICAgICAg
IGVuY29kaW5nID0gTm9uZQorICAgICAgICBjb250ZW50X2hhc2ggPSBOb25lCisgICAgICAgIGNv
bnRlbnRfbGVuZ3RoID0gTm9uZQorICAgICAgICBjb250ZW50ID0gJycKKyAgICAgICAgdGltZW91
dCA9IGRlYWRsaW5lIC0gdGltZS50aW1lKCkKKyAgICAgICAgbGluZSA9IHNlbGYuX3NlcnZlcl9w
cm9jZXNzLnJlYWRfbGluZSh0aW1lb3V0KQorICAgICAgICB3aGlsZSAobm90IHNlbGYuX3NlcnZl
cl9wcm9jZXNzLnRpbWVkX291dAorICAgICAgICAgICAgICAgYW5kIG5vdCBzZWxmLl9zZXJ2ZXJf
cHJvY2Vzcy5jcmFzaGVkCisgICAgICAgICAgICAgICBhbmQgbGluZS5yc3RyaXAoKSAhPSAiI0VP
RiIpOgorICAgICAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKFRZUEVfSEVBREVSKSBhbmQgY29u
dGVudF90eXBlIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgY29udGVudF90eXBlID0gbGluZS5z
cGxpdCgpWzFdCisgICAgICAgICAgICBlbGlmIGxpbmUuc3RhcnRzd2l0aChFTkNPRElOR19IRUFE
RVIpIGFuZCBlbmNvZGluZyBpcyBOb25lOgorICAgICAgICAgICAgICAgIGVuY29kaW5nID0gbGlu
ZS5zcGxpdCgpWzFdCisgICAgICAgICAgICBlbGlmIGxpbmUuc3RhcnRzd2l0aChMRU5HVEhfSEVB
REVSKSBhbmQgY29udGVudF9sZW5ndGggaXMgTm9uZToKKyAgICAgICAgICAgICAgICB0aW1lb3V0
ID0gZGVhZGxpbmUgLSB0aW1lLnRpbWUoKQorICAgICAgICAgICAgICAgIGNvbnRlbnRfbGVuZ3Ro
ID0gaW50KGxpbmVbbGVuKExFTkdUSF9IRUFERVIpOl0pCisgICAgICAgICAgICAgICAgY29udGVu
dCA9IHNlbGYuX3NlcnZlcl9wcm9jZXNzLnJlYWQodGltZW91dCwgY29udGVudF9sZW5ndGgpCisg
ICAgICAgICAgICBlbGlmIGxpbmUuc3RhcnRzd2l0aChIQVNIX0hFQURFUik6CisgICAgICAgICAg
ICAgICAgY29udGVudF9oYXNoID0gbGluZS5zcGxpdCgpWzFdCisgICAgICAgICAgICBlbHNlOgor
ICAgICAgICAgICAgICAgICMgTm90ZTogVGV4dCBvdXRwdXQgZnJvbSBEdW1wUmVuZGVyVHJlZSBp
cyBhbHdheXMgVVRGLTguCisgICAgICAgICAgICAgICAgIyBIb3dldmVyLCBzb21lIHRlc3RzIChl
LmcuIHdlYmFyY2hpdmVzKSBzcGl0IG91dCBiaW5hcnkKKyAgICAgICAgICAgICAgICAjIGRhdGEg
aW5zdGVhZCBvZiB0ZXh0LiAgU28gdG8gbWFrZSB0aGluZ3Mgc2ltcGxlLCB3ZQorICAgICAgICAg
ICAgICAgICMgYWx3YXlzIHRyZWF0IHRoZSBvdXRwdXQgYXMgYmluYXJ5LgorICAgICAgICAgICAg
ICAgIGNvbnRlbnQgKz0gbGluZQorICAgICAgICAgICAgbGluZSA9IHNlbGYuX3NlcnZlcl9wcm9j
ZXNzLnJlYWRfbGluZSh0aW1lb3V0KQorICAgICAgICAgICAgdGltZW91dCA9IGRlYWRsaW5lIC0g
dGltZS50aW1lKCkKKyAgICAgICAgcmV0dXJuIENvbnRlbnRCbG9jayhjb250ZW50X3R5cGUsIGVu
Y29kaW5nLCBjb250ZW50X2hhc2gsIGNvbnRlbnQpCiAKICAgICBkZWYgc3RvcChzZWxmKToKICAg
ICAgICAgaWYgc2VsZi5fc2VydmVyX3Byb2Nlc3M6CiAgICAgICAgICAgICBzZWxmLl9zZXJ2ZXJf
cHJvY2Vzcy5zdG9wKCkKICAgICAgICAgICAgIHNlbGYuX3NlcnZlcl9wcm9jZXNzID0gTm9uZQor
CisKK2NsYXNzIENvbnRlbnRCbG9jayhvYmplY3QpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBj
b250ZW50X3R5cGUsIGVuY29kaW5nLCBjb250ZW50X2hhc2gsIGNvbnRlbnQpOgorICAgICAgICBz
ZWxmLmNvbnRlbnRfdHlwZSA9IGNvbnRlbnRfdHlwZQorICAgICAgICBzZWxmLmVuY29kaW5nID0g
ZW5jb2RpbmcKKyAgICAgICAgc2VsZi5jb250ZW50X2hhc2ggPSBjb250ZW50X2hhc2gKKyAgICAg
ICAgc2VsZi5jb250ZW50ID0gY29udGVudAorICAgICAgICBpZiBzZWxmLmVuY29kaW5nID09ICdi
YXNlNjQnOgorICAgICAgICAgICAgc2VsZi5kZWNvZGVkX2NvbnRlbnQgPSBiYXNlNjQuYjY0ZGVj
b2RlKGNvbnRlbnQpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmRlY29kZWRfY29u
dGVudCA9IGNvbnRlbnQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88553</attachid>
            <date>2011-04-06 18:02:54 -0700</date>
            <delta_ts>2011-04-06 18:17:30 -0700</delta_ts>
            <desc>more testing, review feedback from tony, update mock_drt</desc>
            <filename>bug-57987-20110406180253.patch</filename>
            <type>text/plain</type>
            <size>29413</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODMwOTcKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCBlOWU5ZTVjZjg5ZWNlNTA4MTEwMDhhNDIyMTg3NDNmNzJj
MThhNzljLi5lODMyODFhNjg4NWY4N2NkYzIzNzE5M2Q4YjQ4M2FhYWNhYzE1YmI4IDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEg
QEAKKzIwMTEtMDQtMDYgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgbmV3LXJ1bi13ZWJr
aXQtdGVzdHM6IGltcGxlbWVudCBzdXBwb3J0IGZvciBhdWRpbyB0ZXN0cy4KKworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTc5ODcKKworICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2pzb25fbGF5b3V0
X3Jlc3VsdHNfZ2VuZXJhdG9yLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL2xheW91dF9wYWNrYWdlL3NpbmdsZV90ZXN0X3J1bm5lci5weToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2V4cGVjdGF0
aW9ucy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRf
cGFja2FnZS90ZXN0X2ZhaWx1cmVzLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfcmVzdWx0X3dyaXRlci5weToKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHk6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0LnB5OgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbW9ja19kcnQucHk6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXQucHk6CisKIDIwMTEtMDQt
MDYgIFphbiBEb2JlcnNlayAgPHphbmRvYmVyc2VrQGdtYWlsLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBFcmljIFNlaWRlbC4KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2pzb25fbGF5b3V0X3Jlc3VsdHNfZ2VuZXJhdG9y
LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2Uv
anNvbl9sYXlvdXRfcmVzdWx0c19nZW5lcmF0b3IucHkKaW5kZXggMTliMDJlODU2NjM3Yjc2MzU2
MDNmOGFhNjcxYzA3ZDM0YjBjYWU0OC4uZGJiMTZjMDNlMjYzMzM1MDk0MTIwZWNlYWU4YzcwNjdk
OGQ3ODBmMSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
bGF5b3V0X3BhY2thZ2UvanNvbl9sYXlvdXRfcmVzdWx0c19nZW5lcmF0b3IucHkKKysrIGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvanNvbl9sYXlv
dXRfcmVzdWx0c19nZW5lcmF0b3IucHkKQEAgLTUwLDYgKzUwLDcgQEAgY2xhc3MgSlNPTkxheW91
dFJlc3VsdHNHZW5lcmF0b3IoanNvbl9yZXN1bHRzX2dlbmVyYXRvci5KU09OUmVzdWx0c0dlbmVy
YXRvckJhc2UKICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9leHBlY3RhdGlvbnMuSU1BR0U6
ICJJIiwKICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9leHBlY3RhdGlvbnMuVEVYVDogIkYi
LAogICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2V4cGVjdGF0aW9ucy5NSVNTSU5HOiAiTyIs
CisgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfZXhwZWN0YXRpb25zLkFVRElPOiAiQSIsCiAg
ICAgICAgICAgICAgICAgICAgICAgIHRlc3RfZXhwZWN0YXRpb25zLklNQUdFX1BMVVNfVEVYVDog
IloifQogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBvcnQsIGJ1aWxkZXJfbmFtZSwgYnVpbGRf
bmFtZSwgYnVpbGRfbnVtYmVyLApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2Uvc2luZ2xlX3Rlc3RfcnVubmVyLnB5IGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2Uvc2luZ2xlX3Rlc3Rf
cnVubmVyLnB5CmluZGV4IGE4YzcxNmY4ZGMwYzI4ZDkyNjVkODdkNWNhOTVjMWYyYTc5YmIwMzMu
LjZkZWM0OGViMjM3ZTg3YTY5ZmFmNDEyZDZhYjI0MDYzMzhkYzBmMGQgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3NpbmdsZV90
ZXN0X3J1bm5lci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9s
YXlvdXRfcGFja2FnZS9zaW5nbGVfdGVzdF9ydW5uZXIucHkKQEAgLTgyLDcgKzgyLDcgQEAgY2xh
c3MgU2luZ2xlVGVzdFJ1bm5lcjoKICAgICAgICAgICAgICMgRm9yIGV4YW1wbGUsIGlmICdmb28u
aHRtbCcgaGFzIHR3byBleHBlY3RhdGlvbiBmaWxlcywgJ2Zvby1leHBlY3RlZC5odG1sJyBhbmQK
ICAgICAgICAgICAgICMgJ2Zvby1leHBlY3RlZC50eHQnLCB3ZSBzaG91bGQgd2FybiB1c2Vycy4g
T25lIHRlc3QgZmlsZSBtdXN0IGJlIHVzZWQgZXhjbHVzaXZlbHkKICAgICAgICAgICAgICMgaW4g
ZWl0aGVyIGxheW91dCB0ZXN0cyBvciByZWZ0ZXN0cywgYnV0IG5vdCBpbiBib3RoLgotICAgICAg
ICAgICAgZm9yIHN1ZmZpeCBpbiBbJy50eHQnLCAnLmNoZWNrc3VtJywgJy5wbmcnXToKKyAgICAg
ICAgICAgIGZvciBzdWZmaXggaW4gKCcudHh0JywgJy5jaGVja3N1bScsICcucG5nJywgJy53YXYn
KToKICAgICAgICAgICAgICAgICBleHBlY3RlZF9maWxlbmFtZSA9IHNlbGYuX3BvcnQuZXhwZWN0
ZWRfZmlsZW5hbWUoc2VsZi5fZmlsZW5hbWUsIHN1ZmZpeCkKICAgICAgICAgICAgICAgICBpZiBm
cy5leGlzdHMoZXhwZWN0ZWRfZmlsZW5hbWUpOgogICAgICAgICAgICAgICAgICAgICBfbG9nLmVy
cm9yKCdUaGUgcmVmdGVzdCAoJXMpIGNhbiBub3QgaGF2ZSBhbiBleHBlY3RhdGlvbiBmaWxlICgl
cykuJwpAQCAtOTEsNyArOTEsOCBAQCBjbGFzcyBTaW5nbGVUZXN0UnVubmVyOgogICAgIGRlZiBf
ZXhwZWN0ZWRfZHJpdmVyX291dHB1dChzZWxmKToKICAgICAgICAgcmV0dXJuIGJhc2UuRHJpdmVy
T3V0cHV0KHNlbGYuX3BvcnQuZXhwZWN0ZWRfdGV4dChzZWxmLl9maWxlbmFtZSksCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9wb3J0LmV4cGVjdGVkX2ltYWdlKHNlbGYu
X2ZpbGVuYW1lKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3BvcnQu
ZXhwZWN0ZWRfY2hlY2tzdW0oc2VsZi5fZmlsZW5hbWUpKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2VsZi5fcG9ydC5leHBlY3RlZF9jaGVja3N1bShzZWxmLl9maWxlbmFtZSks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpbz1zZWxmLl9wb3J0LmV4cGVj
dGVkX2F1ZGlvKHNlbGYuX2ZpbGVuYW1lKSkKIAogICAgIGRlZiBfc2hvdWxkX2ZldGNoX2V4cGVj
dGVkX2NoZWNrc3VtKHNlbGYpOgogICAgICAgICByZXR1cm4gKHNlbGYuX29wdGlvbnMucGl4ZWxf
dGVzdHMgYW5kCkBAIC0xNDIsNiArMTQzLDkgQEAgY2xhc3MgU2luZ2xlVGVzdFJ1bm5lcjoKICAg
ICAgICAgIyBEdW1wUmVuZGVyVHJlZSBtYXkgbm90IG91dHB1dCB1dGYtOCB0ZXh0IChlLmcuIHdl
YmFyY2hpdmVzKS4KICAgICAgICAgc2VsZi5fc2F2ZV9iYXNlbGluZV9kYXRhKGRyaXZlcl9vdXRw
dXQudGV4dCwgIi50eHQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJh
dGVfbmV3X2Jhc2VsaW5lPXNlbGYuX29wdGlvbnMubmV3X2Jhc2VsaW5lKQorICAgICAgICBpZiBk
cml2ZXJfb3V0cHV0LmF1ZGlvOgorICAgICAgICAgICAgc2VsZi5fc2F2ZV9iYXNlbGluZV9kYXRh
KGRyaXZlcl9vdXRwdXQuYXVkaW8sICcud2F2JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBnZW5lcmF0ZV9uZXdfYmFzZWxpbmU9c2VsZi5fb3B0aW9ucy5uZXdfYmFzZWxp
bmUpCiAgICAgICAgIGlmIHNlbGYuX29wdGlvbnMucGl4ZWxfdGVzdHMgYW5kIGRyaXZlcl9vdXRw
dXQuaW1hZ2VfaGFzaDoKICAgICAgICAgICAgIHNlbGYuX3NhdmVfYmFzZWxpbmVfZGF0YShkcml2
ZXJfb3V0cHV0LmltYWdlLCAiLnBuZyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ2VuZXJhdGVfbmV3X2Jhc2VsaW5lPXNlbGYuX29wdGlvbnMubmV3X2Jhc2VsaW5lKQpA
QCAtMjE1LDcgKzIxOSwxMCBAQCBjbGFzcyBTaW5nbGVUZXN0UnVubmVyOgogICAgICAgICAgICAg
IyBJbiBjYXNlIG9mIHRpbWVvdXRzLCB3ZSBjb250aW51ZSBzaW5jZSB3ZSBzdGlsbCB3YW50IHRv
IHNlZSB0aGUgdGV4dCBhbmQgaW1hZ2Ugb3V0cHV0LgogICAgICAgICAgICAgcmV0dXJuIFRlc3RS
ZXN1bHQoc2VsZi5fZmlsZW5hbWUsIGZhaWx1cmVzLCBkcml2ZXJfb3V0cHV0LnRlc3RfdGltZSkK
IAotICAgICAgICBmYWlsdXJlcy5leHRlbmQoc2VsZi5fY29tcGFyZV90ZXh0KGRyaXZlcl9vdXRw
dXQudGV4dCwgZXhwZWN0ZWRfZHJpdmVyX291dHB1dC50ZXh0KSkKKyAgICAgICAgaWYgZHJpdmVy
X291dHB1dC5hdWRpbzoKKyAgICAgICAgICAgIGZhaWx1cmVzLmV4dGVuZChzZWxmLl9jb21wYXJl
X2F1ZGlvKGRyaXZlcl9vdXRwdXQuYXVkaW8sIGV4cGVjdGVkX2RyaXZlcl9vdXRwdXQuYXVkaW8p
KQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZmFpbHVyZXMuZXh0ZW5kKHNlbGYuX2NvbXBh
cmVfdGV4dChkcml2ZXJfb3V0cHV0LnRleHQsIGV4cGVjdGVkX2RyaXZlcl9vdXRwdXQudGV4dCkp
CiAgICAgICAgIGlmIHNlbGYuX29wdGlvbnMucGl4ZWxfdGVzdHM6CiAgICAgICAgICAgICBmYWls
dXJlcy5leHRlbmQoc2VsZi5fY29tcGFyZV9pbWFnZShkcml2ZXJfb3V0cHV0LCBleHBlY3RlZF9k
cml2ZXJfb3V0cHV0KSkKICAgICAgICAgcmV0dXJuIFRlc3RSZXN1bHQoc2VsZi5fZmlsZW5hbWUs
IGZhaWx1cmVzLCBkcml2ZXJfb3V0cHV0LnRlc3RfdGltZSkKQEAgLTIzMSw2ICsyMzgsMTUgQEAg
Y2xhc3MgU2luZ2xlVGVzdFJ1bm5lcjoKICAgICAgICAgICAgICAgICBmYWlsdXJlcy5hcHBlbmQo
dGVzdF9mYWlsdXJlcy5GYWlsdXJlVGV4dE1pc21hdGNoKCkpCiAgICAgICAgIHJldHVybiBmYWls
dXJlcwogCisgICAgZGVmIF9jb21wYXJlX2F1ZGlvKHNlbGYsIGFjdHVhbF9hdWRpbywgZXhwZWN0
ZWRfYXVkaW8pOgorICAgICAgICBmYWlsdXJlcyA9IFtdCisgICAgICAgIGlmIHNlbGYuX3BvcnQu
Y29tcGFyZV9hdWRpbyhhY3R1YWxfYXVkaW8sIGV4cGVjdGVkX2F1ZGlvKToKKyAgICAgICAgICAg
IGlmIGFjdHVhbF9hdWRpbyBhbmQgZXhwZWN0ZWRfYXVkaW8gaXMgTm9uZToKKyAgICAgICAgICAg
ICAgICBmYWlsdXJlcy5hcHBlbmQodGVzdF9mYWlsdXJlcy5GYWlsdXJlTWlzc2luZ0F1ZGlvKCkp
CisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGZhaWx1cmVzLmFwcGVuZCh0ZXN0
X2ZhaWx1cmVzLkZhaWx1cmVBdWRpb01pc21hdGNoKCkpCisgICAgICAgIHJldHVybiBmYWlsdXJl
cworCiAgICAgZGVmIF9nZXRfbm9ybWFsaXplZF9vdXRwdXRfdGV4dChzZWxmLCBvdXRwdXQpOgog
ICAgICAgICAiIiJSZXR1cm5zIHRoZSBub3JtYWxpemVkIHRleHQgb3V0cHV0LCBpLmUuIHRoZSBv
dXRwdXQgaW4gd2hpY2gKICAgICAgICAgdGhlIGVuZC1vZi1saW5lIGNoYXJhY3RlcnMgYXJlIG5v
cm1hbGl6ZWQgdG8gIlxuIi4iIiIKQEAgLTIzOCw2ICsyNTQsOCBAQCBjbGFzcyBTaW5nbGVUZXN0
UnVubmVyOgogICAgICAgICAjIGNoYW5nZWQgdG8gIlxyXG4iIGJ5IG91ciBzeXN0ZW0gKFB5dGhv
bi9DeWd3aW4pLCByZXN1bHRpbmcgaW4KICAgICAgICAgIyAiXHJcclxuIiwgd2hlbiwgaW4gZmFj
dCwgd2Ugd2FudGVkIHRvIGNvbXBhcmUgdGhlIHRleHQgb3V0cHV0IHdpdGgKICAgICAgICAgIyB0
aGUgbm9ybWFsaXplZCB0ZXh0IGV4cGVjdGF0aW9uIGZpbGVzLgorICAgICAgICBpZiBub3Qgb3V0
cHV0OgorICAgICAgICAgICAgcmV0dXJuIG91dHB1dAogICAgICAgICByZXR1cm4gb3V0cHV0LnJl
cGxhY2UoIlxyXHJcbiIsICJcclxuIikucmVwbGFjZSgiXHJcbiIsICJcbiIpCiAKICAgICBkZWYg
X2NvbXBhcmVfaW1hZ2Uoc2VsZiwgZHJpdmVyX291dHB1dCwgZXhwZWN0ZWRfZHJpdmVyX291dHB1
dHMpOgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5
b3V0X3BhY2thZ2UvdGVzdF9leHBlY3RhdGlvbnMucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2V4cGVjdGF0aW9ucy5weQppbmRleCBh
ZDUwYWRlYWNkOWI4MDcyODMwOGQxYzUwODlhNGM4ZGUyNTAyZTY4Li43YzRhZjQzYmYzMmU1NzQw
ZWEyMzlhMmQ1YTM3MjUxMWZjZDFhOGYxIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2V4cGVjdGF0aW9ucy5weQorKysg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0
X2V4cGVjdGF0aW9ucy5weQpAQCAtNDEsOCArNDEsOCBAQCBfbG9nID0gbG9nZ2luZy5nZXRMb2dn
ZXIoIndlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZS4iCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgInRlc3RfZXhwZWN0YXRpb25zIikKIAogIyBUZXN0IGV4cGVjdGF0aW9uIGFu
ZCBtb2RpZmllciBjb25zdGFudHMuCi0oUEFTUywgRkFJTCwgVEVYVCwgSU1BR0UsIElNQUdFX1BM
VVNfVEVYVCwgVElNRU9VVCwgQ1JBU0gsIFNLSVAsIFdPTlRGSVgsCi0gU0xPVywgUkVCQVNFTElO
RSwgTUlTU0lORywgRkxBS1ksIE5PVywgTk9ORSkgPSByYW5nZSgxNSkKKyhQQVNTLCBGQUlMLCBU
RVhULCBJTUFHRSwgSU1BR0VfUExVU19URVhULCBBVURJTywgVElNRU9VVCwKKyBDUkFTSCwgU0tJ
UCwgV09OVEZJWCwgU0xPVywgUkVCQVNFTElORSwgTUlTU0lORywgRkxBS1ksIE5PVywgTk9ORSkg
PSByYW5nZSgxNikKIAogIyBUZXN0IGV4cGVjdGF0aW9uIGZpbGUgdXBkYXRlIGFjdGlvbiBjb25z
dGFudHMKIChOT19DSEFOR0UsIFJFTU9WRV9URVNULCBSRU1PVkVfUExBVEZPUk0sIEFERF9QTEFU
Rk9STVNfRVhDRVBUX1RISVMpID0gcmFuZ2UoNCkKQEAgLTEyMCw3ICsxMjAsOCBAQCBjbGFzcyBU
ZXN0RXhwZWN0YXRpb25zOgogICAgICAgICAgICAgICAgIHNlbGYuX2V4cGVjdGVkX2ZhaWx1cmVz
LmdldF90ZXN0X3NldChSRUJBU0VMSU5FLCBJTUFHRSkgfAogICAgICAgICAgICAgICAgIHNlbGYu
X2V4cGVjdGVkX2ZhaWx1cmVzLmdldF90ZXN0X3NldChSRUJBU0VMSU5FLCBURVhUKSB8CiAgICAg
ICAgICAgICAgICAgc2VsZi5fZXhwZWN0ZWRfZmFpbHVyZXMuZ2V0X3Rlc3Rfc2V0KFJFQkFTRUxJ
TkUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IElNQUdFX1BMVVNfVEVYVCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIElNQUdFX1BMVVNfVEVYVCkgfAorICAgICAgICAgICAgICAgIHNlbGYu
X2V4cGVjdGVkX2ZhaWx1cmVzLmdldF90ZXN0X3NldChSRUJBU0VMSU5FLCBBVURJTykpCiAKICAg
ICBkZWYgZ2V0X29wdGlvbnMoc2VsZiwgdGVzdCk6CiAgICAgICAgIHJldHVybiBzZWxmLl9leHBl
Y3RlZF9mYWlsdXJlcy5nZXRfb3B0aW9ucyh0ZXN0KQpAQCAtMjQ0LDExICsyNDUsMTEgQEAgY2xh
c3MgVGVzdEV4cGVjdGF0aW9uc0ZpbGU6CiAKICAgICBOb3RlczoKICAgICAgIC1BIHRlc3QgY2Fu
bm90IGJlIGJvdGggU0xPVyBhbmQgVElNRU9VVAotICAgICAgLUEgdGVzdCBzaG91bGQgb25seSBi
ZSBvbmUgb2YgSU1BR0UsIFRFWFQsIElNQUdFK1RFWFQsIG9yIEZBSUwuIEZBSUwgaXMKLSAgICAg
ICBhIG1pZ3JhdG9yeSBzdGF0ZSB0aGF0IGN1cnJlbnRseSBtZWFucyBlaXRoZXIgSU1BR0UsIFRF
WFQsIG9yCi0gICAgICAgSU1BR0UrVEVYVC4gT25jZSB3ZSBoYXZlIGZpbmlzaGVkIG1pZ3JhdGlu
ZyB0aGUgZXhwZWN0YXRpb25zLCB3ZSB3aWxsCi0gICAgICAgY2hhbmdlIEZBSUwgdG8gaGF2ZSB0
aGUgbWVhbmluZyBvZiBJTUFHRStURVhUIGFuZCByZW1vdmUgdGhlIElNQUdFK1RFWFQKLSAgICAg
ICBpZGVudGlmaWVyLgorICAgICAgLUEgdGVzdCBzaG91bGQgb25seSBiZSBvbmUgb2YgSU1BR0Us
IFRFWFQsIElNQUdFK1RFWFQsIEFVRElPLCBvciBGQUlMLgorICAgICAgIEZBSUwgaXMgYSBsZWdh
Y3kgdmFsdWUgdGhhdCBjdXJyZW50bHkgbWVhbnMgZWl0aGVyIElNQUdFLAorICAgICAgIFRFWFQs
IG9yIElNQUdFK1RFWFQuIE9uY2Ugd2UgaGF2ZSBmaW5pc2hlZCBtaWdyYXRpbmcgdGhlIGV4cGVj
dGF0aW9ucywKKyAgICAgICB3ZSBzaG91bGQgY2hhbmdlIEZBSUwgdG8gaGF2ZSB0aGUgbWVhbmlu
ZyBvZiBJTUFHRStURVhUIGFuZCByZW1vdmUgdGhlCisgICAgICAgSU1BR0UrVEVYVCBpZGVudGlm
aWVyLgogICAgICAgLUEgdGVzdCBjYW4gYmUgaW5jbHVkZWQgdHdpY2UsIGJ1dCBub3QgdmlhIHRo
ZSBzYW1lIHBhdGguCiAgICAgICAtSWYgYSB0ZXN0IGlzIGluY2x1ZGVkIHR3aWNlLCB0aGVuIHRo
ZSBtb3JlIHByZWNpc2UgcGF0aCB3aW5zLgogICAgICAgLUNSQVNIIHRlc3RzIGNhbm5vdCBiZSBX
T05URklYCkBAIC0yNTksNiArMjYwLDcgQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9uc0ZpbGU6CiAg
ICAgICAgICAgICAgICAgICAgICd0ZXh0JzogVEVYVCwKICAgICAgICAgICAgICAgICAgICAgJ2lt
YWdlJzogSU1BR0UsCiAgICAgICAgICAgICAgICAgICAgICdpbWFnZSt0ZXh0JzogSU1BR0VfUExV
U19URVhULAorICAgICAgICAgICAgICAgICAgICAnYXVkaW8nOiBBVURJTywKICAgICAgICAgICAg
ICAgICAgICAgJ3RpbWVvdXQnOiBUSU1FT1VULAogICAgICAgICAgICAgICAgICAgICAnY3Jhc2gn
OiBDUkFTSCwKICAgICAgICAgICAgICAgICAgICAgJ21pc3NpbmcnOiBNSVNTSU5HfQpAQCAtMjcx
LDYgKzI3Myw3IEBAIGNsYXNzIFRlc3RFeHBlY3RhdGlvbnNGaWxlOgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBJTUFHRTogKCdpbWFnZSBtaXNtYXRjaCcsICdpbWFnZSBtaXNtYXRj
aCcpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTUFHRV9QTFVTX1RFWFQ6ICgn
aW1hZ2UgYW5kIHRleHQgbWlzbWF0Y2gnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnaW1hZ2UgYW5kIHRleHQgbWlzbWF0Y2gnKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQVVESU86ICgnYXVkaW8gbWlzbWF0Y2gnLCAnYXVkaW8g
bWlzbWF0Y2gnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1JBU0g6ICgnRHVt
cFJlbmRlclRyZWUgY3Jhc2gnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICdEdW1wUmVuZGVyVHJlZSBjcmFzaGVzJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFRJTUVPVVQ6ICgndGVzdCB0aW1lZCBvdXQnLCAndGVzdHMgdGltZWQgb3V0JyksCkBA
IC0yNzgsNyArMjgxLDcgQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9uc0ZpbGU6CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbm8gZXhwZWN0ZWQgcmVzdWx0cyBmb3Vu
ZCcpfQogCiAgICAgRVhQRUNUQVRJT05fT1JERVIgPSAoUEFTUywgQ1JBU0gsIFRJTUVPVVQsIE1J
U1NJTkcsIElNQUdFX1BMVVNfVEVYVCwKLSAgICAgICBURVhULCBJTUFHRSwgRkFJTCwgU0tJUCkK
KyAgICAgICBURVhULCBJTUFHRSwgQVVESU8sIEZBSUwsIFNLSVApCiAKICAgICBCVUlMRF9UWVBF
UyA9ICgnZGVidWcnLCAncmVsZWFzZScpCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZmFpbHVyZXMucHkgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2ZhaWx1
cmVzLnB5CmluZGV4IDFmYWQ3NzI0NmI4NWU2MmQwMGYzNWEwNWZkMmNjNjliMjNlNDk2ZjIuLmYx
MjdjMmJiZTM0ODFiMmUzNDE5MzU3ODNhMjJhNjkwNjhlYjViOTggMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZmFpbHVy
ZXMucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3Bh
Y2thZ2UvdGVzdF9mYWlsdXJlcy5weQpAQCAtNTQsNyArNTQsOCBAQCBkZWYgZGV0ZXJtaW5lX3Jl
c3VsdF90eXBlKGZhaWx1cmVfbGlzdCk6CiAgICAgICAgIHJldHVybiB0ZXN0X2V4cGVjdGF0aW9u
cy5USU1FT1VUCiAgICAgZWxpZiAoRmFpbHVyZU1pc3NpbmdSZXN1bHQgaW4gZmFpbHVyZV90eXBl
cyBvcgogICAgICAgICAgIEZhaWx1cmVNaXNzaW5nSW1hZ2UgaW4gZmFpbHVyZV90eXBlcyBvcgot
ICAgICAgICAgIEZhaWx1cmVNaXNzaW5nSW1hZ2VIYXNoIGluIGZhaWx1cmVfdHlwZXMpOgorICAg
ICAgICAgIEZhaWx1cmVNaXNzaW5nSW1hZ2VIYXNoIGluIGZhaWx1cmVfdHlwZXMgb3IKKyAgICAg
ICAgICBGYWlsdXJlTWlzc2luZ0F1ZGlvIGluIGZhaWx1cmVfdHlwZXMpOgogICAgICAgICByZXR1
cm4gdGVzdF9leHBlY3RhdGlvbnMuTUlTU0lORwogICAgIGVsc2U6CiAgICAgICAgIGlzX3RleHRf
ZmFpbHVyZSA9IEZhaWx1cmVUZXh0TWlzbWF0Y2ggaW4gZmFpbHVyZV90eXBlcwpAQCAtNjIsMTIg
KzYzLDE1IEBAIGRlZiBkZXRlcm1pbmVfcmVzdWx0X3R5cGUoZmFpbHVyZV9saXN0KToKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBGYWlsdXJlSW1hZ2VIYXNoTWlzbWF0Y2ggaW4gZmFpbHVy
ZV90eXBlcykKICAgICAgICAgaXNfcmVmdGVzdF9mYWlsdXJlID0gKEZhaWx1cmVSZWZ0ZXN0TWlz
bWF0Y2ggaW4gZmFpbHVyZV90eXBlcyBvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RmFpbHVyZVJlZnRlc3RNaXNtYXRjaERpZE5vdE9jY3VyIGluIGZhaWx1cmVfdHlwZXMpCisgICAg
ICAgIGlzX2F1ZGlvX2ZhaWx1cmUgPSAoRmFpbHVyZUF1ZGlvTWlzbWF0Y2ggaW4gZmFpbHVyZV90
eXBlcykKICAgICAgICAgaWYgaXNfdGV4dF9mYWlsdXJlIGFuZCBpc19pbWFnZV9mYWlsdXJlOgog
ICAgICAgICAgICAgcmV0dXJuIHRlc3RfZXhwZWN0YXRpb25zLklNQUdFX1BMVVNfVEVYVAogICAg
ICAgICBlbGlmIGlzX3RleHRfZmFpbHVyZToKICAgICAgICAgICAgIHJldHVybiB0ZXN0X2V4cGVj
dGF0aW9ucy5URVhUCiAgICAgICAgIGVsaWYgaXNfaW1hZ2VfZmFpbHVyZSBvciBpc19yZWZ0ZXN0
X2ZhaWx1cmU6CiAgICAgICAgICAgICByZXR1cm4gdGVzdF9leHBlY3RhdGlvbnMuSU1BR0UKKyAg
ICAgICAgZWxpZiBpc19hdWRpb19mYWlsdXJlOgorICAgICAgICAgICAgcmV0dXJuIHRlc3RfZXhw
ZWN0YXRpb25zLkFVRElPCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVy
cm9yKCJ1bmNsYXNzaWZpYWJsZSBzZXQgb2YgZmFpbHVyZXM6ICIKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKyBzdHIoZmFpbHVyZV90eXBlcykpCkBAIC0zMzEsNiArMzM1LDI4IEBAIGNs
YXNzIEZhaWx1cmVSZWZ0ZXN0TWlzbWF0Y2hEaWROb3RPY2N1cihDb21wYXJpc29uVGVzdEZhaWx1
cmUpOgogICAgICAgICByZXR1cm4gJyAnLmpvaW4obGlua3MpCiAKIAorY2xhc3MgRmFpbHVyZU1p
c3NpbmdBdWRpbyhDb21wYXJpc29uVGVzdEZhaWx1cmUpOgorICAgICIiIkFjdHVhbCByZXN1bHQg
aW1hZ2Ugd2FzIG1pc3NpbmcuIiIiCisgICAgT1VUX0ZJTEVOQU1FUyA9ICgiLWFjdHVhbC53YXYi
LCkKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgbWVzc2FnZSgpOgorICAgICAgICByZXR1
cm4gIk5vIGV4cGVjdGVkIGF1ZGlvIGZvdW5kIgorCisgICAgZGVmIHJlc3VsdF9odG1sX291dHB1
dChzZWxmLCBmaWxlbmFtZSk6CisgICAgICAgIHJldHVybiAoIjxzdHJvbmc+JXM8L3N0cm9uZz4i
ICUgc2VsZi5tZXNzYWdlKCkgKworICAgICAgICAgICAgICAgIHNlbGYub3V0cHV0X2xpbmtzKGZp
bGVuYW1lLCBzZWxmLk9VVF9GSUxFTkFNRVMpKQorCisKK2NsYXNzIEZhaWx1cmVBdWRpb01pc21h
dGNoKENvbXBhcmlzb25UZXN0RmFpbHVyZSk6CisgICAgIiIiQXVkaW8gZmlsZXMgZGlkbid0IG1h
dGNoLiIiIgorICAgIE9VVF9GSUxFTkFNRVMgPSAoIi1hY3R1YWwud2F2IiwgIi1leHBlY3RlZC53
YXYiKQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBtZXNzYWdlKCk6CisgICAgICAgIHJl
dHVybiAiQXVkaW8gbWlzbWF0Y2giCisKKwogIyBDb252ZW5pZW50IGNvbGxlY3Rpb24gb2YgYWxs
IGZhaWx1cmUgY2xhc3NlcyBmb3IgYW55dGhpbmcgdGhhdCBtaWdodAogIyBuZWVkIHRvIGVudW1l
cmF0ZSBvdmVyIHRoZW0gYWxsLgogQUxMX0ZBSUxVUkVfQ0xBU1NFUyA9IChGYWlsdXJlVGltZW91
dCwgRmFpbHVyZUNyYXNoLCBGYWlsdXJlTWlzc2luZ1Jlc3VsdCwKZGlmZiAtLWdpdCBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfcmVzdWx0
X3dyaXRlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9w
YWNrYWdlL3Rlc3RfcmVzdWx0X3dyaXRlci5weQppbmRleCBlMjA5NTAzMGZlODQwNjljNGE4MzVm
N2JjMjIwZDZkMmQwOTNhMjkzLi41YTk1YTMxODk2NDc1ZTJlZWQ0NzJiODM2NzI2ZTc4MDU2ODk1
MGQ2IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlv
dXRfcGFja2FnZS90ZXN0X3Jlc3VsdF93cml0ZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9yZXN1bHRfd3JpdGVyLnB5CkBA
IC02Myw2ICs2MywxMCBAQCBkZWYgd3JpdGVfdGVzdF9yZXN1bHQocG9ydCwgcm9vdF9vdXRwdXRf
ZGlyLCBmaWxlbmFtZSwgZHJpdmVyX291dHB1dCwKICAgICAgICAgICAgIGlmIG5vdCBpbWFnZXNf
YXJlX2RpZmZlcmVudDoKICAgICAgICAgICAgICAgICBjaGVja3N1bXNfbWlzbWF0Y2hfYnV0X2lt
YWdlc19hcmVfc2FtZSA9IFRydWUKICAgICAgICAgICAgICAgICBpbWFnZWhhc2hfbWlzbWF0Y2hf
ZmFpbHVyZSA9IGZhaWx1cmUKKyAgICAgICAgZWxpZiBpc2luc3RhbmNlKGZhaWx1cmUsIHRlc3Rf
ZmFpbHVyZXMuRmFpbHVyZUF1ZGlvTWlzbWF0Y2gpOgorICAgICAgICAgICAgd3JpdGVyLndyaXRl
X2F1ZGlvX2ZpbGVzKGRyaXZlcl9vdXRwdXQuYXVkaW8sIGV4cGVjdGVkX2RyaXZlcl9vdXRwdXQu
YXVkaW8pCisgICAgICAgIGVsaWYgaXNpbnN0YW5jZShmYWlsdXJlLCB0ZXN0X2ZhaWx1cmVzLkZh
aWx1cmVNaXNzaW5nQXVkaW8pOgorICAgICAgICAgICAgd3JpdGVyLndyaXRlX2F1ZGlvX2ZpbGVz
KGRyaXZlcl9vdXRwdXQuYXVkaW8sIGV4cGVjdGVkX2F1ZGlvPU5vbmUpCiAgICAgICAgIGVsaWYg
aXNpbnN0YW5jZShmYWlsdXJlLCB0ZXN0X2ZhaWx1cmVzLkZhaWx1cmVDcmFzaCk6CiAgICAgICAg
ICAgICBpZiBmYWlsdXJlLnJlZmVyZW5jZV9maWxlbmFtZToKICAgICAgICAgICAgICAgICB3cml0
ZXIud3JpdGVfY3Jhc2hfcmVwb3J0KGV4cGVjdGVkX2RyaXZlcl9vdXRwdXQuZXJyb3IpCkBAIC0x
ODcsNiArMTkxLDkgQEAgY2xhc3MgVGVzdFJlc3VsdFdyaXRlcihvYmplY3QpOgogICAgICAgICBw
cmV0dHlfcGF0Y2hfZmlsZW5hbWUgPSBzZWxmLm91dHB1dF9maWxlbmFtZShzZWxmLkZJTEVOQU1F
X1NVRkZJWF9QUkVUVFlfUEFUQ0gpCiAgICAgICAgIGZzLndyaXRlX2JpbmFyeV9maWxlKHByZXR0
eV9wYXRjaF9maWxlbmFtZSwgcHJldHR5X3BhdGNoKQogCisgICAgZGVmIHdyaXRlX2F1ZGlvX2Zp
bGVzKHNlbGYsIGFjdHVhbF9hdWRpbywgZXhwZWN0ZWRfYXVkaW8pOgorICAgICAgICBzZWxmLndy
aXRlX291dHB1dF9maWxlcygnLndhdicsIGFjdHVhbF9hdWRpbywgZXhwZWN0ZWRfYXVkaW8pCisK
ICAgICBkZWYgd3JpdGVfaW1hZ2VfZmlsZXMoc2VsZiwgYWN0dWFsX2ltYWdlLCBleHBlY3RlZF9p
bWFnZSk6CiAgICAgICAgIHNlbGYud3JpdGVfb3V0cHV0X2ZpbGVzKCcucG5nJywgYWN0dWFsX2lt
YWdlLCBleHBlY3RlZF9pbWFnZSkKIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9iYXNlLnB5CmluZGV4IGMyMDQ4NmM4MDZiZTJmMzg0ZmY1ZDg0ZmQ1MzE2
Mzk2YTNlZjljZjYuLjAwNjRjYzUwZmRlNmQ2NzMwMjRhNWFkOTFhNmE5MmU3NTgwZWM3MjMgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5w
eQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkK
QEAgLTIwNiw2ICsyMDYsMTAgQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAgICAgICBpbnRlcmZh
Y2Ugc28gdGhhdCBpdCBjYW4gYmUgb3ZlcnJpZGVuIGZvciB0ZXN0aW5nIHB1cnBvc2VzLiIiIgog
ICAgICAgICByZXR1cm4gZXhwZWN0ZWRfdGV4dCAhPSBhY3R1YWxfdGV4dAogCisgICAgZGVmIGNv
bXBhcmVfYXVkaW8oc2VsZiwgZXhwZWN0ZWRfYXVkaW8sIGFjdHVhbF9hdWRpbyk6CisgICAgICAg
ICIiIlJldHVybiB3aGV0aGVyIHRoZSB0d28gYXVkaW8gZmlsZXMgYXJlICpub3QqIGVxdWFsLiIi
IgorICAgICAgICByZXR1cm4gZXhwZWN0ZWRfYXVkaW8gIT0gYWN0dWFsX2F1ZGlvCisKICAgICBk
ZWYgZGlmZl9pbWFnZShzZWxmLCBleHBlY3RlZF9jb250ZW50cywgYWN0dWFsX2NvbnRlbnRzLAog
ICAgICAgICAgICAgICAgICAgIGRpZmZfZmlsZW5hbWU9Tm9uZSwgdG9sZXJhbmNlPTApOgogICAg
ICAgICAiIiJDb21wYXJlIHR3byBpbWFnZXMgYW5kIHByb2R1Y2UgYSBkZWx0YSBpbWFnZSBmaWxl
LgpAQCAtMzUxLDYgKzM1NSwxMiBAQCBjbGFzcyBQb3J0KG9iamVjdCk6CiAgICAgICAgICAgICBy
ZXR1cm4gTm9uZQogICAgICAgICByZXR1cm4gc2VsZi5fZmlsZXN5c3RlbS5yZWFkX2JpbmFyeV9m
aWxlKHBhdGgpCiAKKyAgICBkZWYgZXhwZWN0ZWRfYXVkaW8oc2VsZiwgdGVzdCk6CisgICAgICAg
IHBhdGggPSBzZWxmLmV4cGVjdGVkX2ZpbGVuYW1lKHRlc3QsICcud2F2JykKKyAgICAgICAgaWYg
bm90IHNlbGYucGF0aF9leGlzdHMocGF0aCk6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAg
ICAgICByZXR1cm4gc2VsZi5fZmlsZXN5c3RlbS5yZWFkX2JpbmFyeV9maWxlKHBhdGgpCisKICAg
ICBkZWYgZXhwZWN0ZWRfdGV4dChzZWxmLCB0ZXN0KToKICAgICAgICAgIiIiUmV0dXJucyB0aGUg
dGV4dCBvdXRwdXQgd2UgZXhwZWN0IHRoZSB0ZXN0IHRvIHByb2R1Y2UuCiAgICAgICAgIEVuZC1v
Zi1saW5lIGNoYXJhY3RlcnMgYXJlIG5vcm1hbGl6ZWQgdG8gJ1xuJy4iIiIKQEAgLTg2OCw3ICs4
NzgsOCBAQCBjbGFzcyBEcml2ZXJPdXRwdXQob2JqZWN0KToKICAgICAiIiJHcm91cHMgaW5mb3Jt
YXRpb24gYWJvdXQgYSBvdXRwdXQgZnJvbSBkcml2ZXIgZm9yIGVhc3kgcGFzc2luZyBvZiBkYXRh
LiIiIgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRleHQsIGltYWdlLCBpbWFnZV9oYXNoLAot
ICAgICAgICAgICAgICAgICBjcmFzaD1GYWxzZSwgdGVzdF90aW1lPU5vbmUsIHRpbWVvdXQ9RmFs
c2UsIGVycm9yPScnKToKKyAgICAgICAgICAgICAgICAgY3Jhc2g9RmFsc2UsIHRlc3RfdGltZT1O
b25lLCB0aW1lb3V0PUZhbHNlLCBlcnJvcj0nJywKKyAgICAgICAgICAgICAgICAgYXVkaW89Tm9u
ZSk6CiAgICAgICAgICIiIkluaXRpYWxpemVzIGEgVGVzdE91dHB1dCBvYmplY3QuCiAKICAgICAg
ICAgQXJnczoKQEAgLTg3OSw2ICs4OTAsNyBAQCBjbGFzcyBEcml2ZXJPdXRwdXQob2JqZWN0KToK
ICAgICAgICAgICB0ZXN0X3RpbWU6IGEgdGltZSB3aGljaCB0aGUgdGVzdCBoYXMgdGFrZW4KICAg
ICAgICAgICB0aW1lb3V0OiBhIGJvb2xlYW4gaW5kaWNhdGluZyB3aGVodGVyIHRoZSB0ZXN0IHRp
bWVkIG91dAogICAgICAgICAgIGVycm9yOiBhbnkgdW5leHBlY3RlZCBvciBhZGRpdGlvbmFsIChv
ciBlcnJvcikgdGV4dCBvdXRwdXQKKyAgICAgICAgICBhdWRpbzogY29udGVudHMgb2YgYW4gYXVk
aW8gc3RyZWFtLCBpZiBhbnkgKGluIFdBViBmb3JtYXQpCiAgICAgICAgICIiIgogICAgICAgICBz
ZWxmLnRleHQgPSB0ZXh0CiAgICAgICAgIHNlbGYuaW1hZ2UgPSBpbWFnZQpAQCAtODg3LDYgKzg5
OSw3IEBAIGNsYXNzIERyaXZlck91dHB1dChvYmplY3QpOgogICAgICAgICBzZWxmLnRlc3RfdGlt
ZSA9IHRlc3RfdGltZQogICAgICAgICBzZWxmLnRpbWVvdXQgPSB0aW1lb3V0CiAgICAgICAgIHNl
bGYuZXJyb3IgPSBlcnJvcgorICAgICAgICBzZWxmLmF1ZGlvID0gYXVkaW8KIAogCiBjbGFzcyBE
cml2ZXI6CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L21vY2tfZHJ0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9tb2NrX2RydC5weQppbmRleCAxMTQ3ODQ2ZDYwOTUwODQ0YjU1M2MwZWYwMzcwMTJjZGFjNjFm
NDhkLi5hMzE5MWQ1OGIzYjVhMDkzOTRjM2NmNDA4NTdjMzZlMjAyMTkzMTg1IDEwMDY0NAotLS0g
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L21vY2tfZHJ0LnB5Cisr
KyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbW9ja19kcnQucHkK
QEAgLTMyLDYgKzMyLDcgQEAgVGhpcyBpcyBhbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUG9ydCBp
bnRlcmZhY2UgdGhhdCBvdmVycmlkZXMgb3RoZXIKIHBvcnRzIGFuZCBjaGFuZ2VzIHRoZSBEcml2
ZXIgYmluYXJ5IHRvICJNb2NrRFJUIi4KICIiIgogCitpbXBvcnQgYmFzZTY0CiBpbXBvcnQgbG9n
Z2luZwogaW1wb3J0IG9wdHBhcnNlCiBpbXBvcnQgb3MKQEAgLTIwNiwxNSArMjA3LDIzIEBAIGNs
YXNzIE1vY2tEUlQob2JqZWN0KToKICAgICAgICAgICAgIHRlc3RfcGF0aCA9IHRlc3RfaW5wdXQu
dXJpCiAKICAgICAgICAgYWN0dWFsX3RleHQgPSBwb3J0LmV4cGVjdGVkX3RleHQodGVzdF9wYXRo
KQorICAgICAgICBhY3R1YWxfYXVkaW8gPSBwb3J0LmV4cGVjdGVkX2F1ZGlvKHRlc3RfcGF0aCkK
ICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5waXhlbF90ZXN0cyBhbmQgdGVzdF9pbnB1dC5jaGVj
a3N1bToKICAgICAgICAgICAgIGFjdHVhbF9jaGVja3N1bSA9IHBvcnQuZXhwZWN0ZWRfY2hlY2tz
dW0odGVzdF9wYXRoKQogICAgICAgICAgICAgYWN0dWFsX2ltYWdlID0gcG9ydC5leHBlY3RlZF9p
bWFnZSh0ZXN0X3BhdGgpCiAKLSAgICAgICAgc2VsZi5fc3Rkb3V0LndyaXRlKCdDb250ZW50LVR5
cGU6IHRleHQvcGxhaW5cbicpCisgICAgICAgIGlmIEZhbHNlIGFuZCBhY3R1YWxfYXVkaW86Cisg
ICAgICAgICAgICBzZWxmLl9zdGRvdXQud3JpdGUoJ0NvbnRlbnQtVHlwZTogYXVkaW8vd2F2XG4n
KQorICAgICAgICAgICAgc2VsZi5fc3Rkb3V0LndyaXRlKCdDb250ZW50LVRyYW5zZmVyLUVuY29k
aW5nOiBiYXNlNjRcbicpCisgICAgICAgICAgICBvdXRwdXQgPSBiYXNlNjQuYjY0ZW5jb2RlKGFj
dHVhbF9hdWRpbykKKyAgICAgICAgICAgIHNlbGYuX3N0ZG91dC53cml0ZSgnQ29udGVudC1MZW5n
dGg6ICVzXG5cbicgJSBsZW4ob3V0cHV0KSkKKyAgICAgICAgICAgIHNlbGYuX3N0ZG91dC53cml0
ZShvdXRwdXQpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLl9zdGRvdXQud3JpdGUo
J0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpblxuJykKKyAgICAgICAgICAgICMgRklYTUU6IE5vdGUg
dGhhdCB3ZSBkb24ndCBlbnN1cmUgdGhlcmUgaXMgYSB0cmFpbGluZyBuZXdsaW5lIQorICAgICAg
ICAgICAgIyBUaGlzIG1pcnJvcnMgYWN0dWFsIChNYWMpIERSVCBiZWhhdmlvciBidXQgaXMgYSBi
dWcuCisgICAgICAgICAgICBzZWxmLl9zdGRvdXQud3JpdGUoYWN0dWFsX3RleHQpCiAKLSAgICAg
ICAgIyBGSVhNRTogTm90ZSB0aGF0IHdlIGRvbid0IGVuc3VyZSB0aGVyZSBpcyBhIHRyYWlsaW5n
IG5ld2xpbmUhCi0gICAgICAgICMgVGhpcyBtaXJyb3JzIGFjdHVhbCAoTWFjKSBEUlQgYmVoYXZp
b3IgYnV0IGlzIGEgYnVnLgotICAgICAgICBzZWxmLl9zdGRvdXQud3JpdGUoYWN0dWFsX3RleHQp
CiAgICAgICAgIHNlbGYuX3N0ZG91dC53cml0ZSgnI0VPRlxuJykKIAogICAgICAgICBpZiBzZWxm
Ll9vcHRpb25zLnBpeGVsX3Rlc3RzIGFuZCB0ZXN0X2lucHV0LmNoZWNrc3VtOgpkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0LnB5IGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0LnB5CmluZGV4IDMwYjQz
M2VlNzMzMDgzNjY2Yzc5NDhhZWQwZDJiZmJjM2E5ZjI3NmQuLmMzMWFjMTgwNmE2ZGNjMDc2ZjEy
ODE4MjU1NTY5NjM5OWFkMTkxNzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvdGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L3Rlc3QucHkKQEAgLTMwLDYgKzMwLDcgQEAKICIiIkR1bW15IFBvcnQg
aW1wbGVtZW50YXRpb24gdXNlZCBmb3IgdGVzdGluZy4iIiIKIGZyb20gX19mdXR1cmVfXyBpbXBv
cnQgd2l0aF9zdGF0ZW1lbnQKIAoraW1wb3J0IGJhc2U2NAogaW1wb3J0IHRpbWUKIAogZnJvbSB3
ZWJraXRweS5jb21tb24uc3lzdGVtIGltcG9ydCBmaWxlc3lzdGVtX21vY2sKQEAgLTY2LDYgKzY3
LDggQEAgY2xhc3MgVGVzdEluc3RhbmNlOgogICAgICAgICBzZWxmLmV4cGVjdGVkX2NoZWNrc3Vt
ID0gc2VsZi5hY3R1YWxfY2hlY2tzdW0KICAgICAgICAgc2VsZi5leHBlY3RlZF9pbWFnZSA9IHNl
bGYuYWN0dWFsX2ltYWdlCiAKKyAgICAgICAgc2VsZi5hY3R1YWxfYXVkaW8gPSBOb25lCisgICAg
ICAgIHNlbGYuZXhwZWN0ZWRfYXVkaW8gPSBOb25lCiAKICMgVGhpcyBpcyBhbiBpbi1tZW1vcnkg
bGlzdCBvZiB0ZXN0cywgd2hhdCB3ZSB3YW50IHRoZW0gdG8gcHJvZHVjZSwgYW5kCiAjIHdoYXQg
d2Ugd2FudCB0byBjbGFpbSBhcmUgdGhlIGV4cGVjdGVkIHJlc3VsdHMuCkBAIC0xMTEsMTEgKzEx
NCwyMCBAQCBkZWYgdW5pdF90ZXN0X2xpc3QoKToKICAgICB0ZXN0cy5hZGQoJ2ZhaWx1cmVzL2V4
cGVjdGVkL2ltYWdlX2NoZWNrc3VtLmh0bWwnLAogICAgICAgICAgICAgICBhY3R1YWxfY2hlY2tz
dW09J2ltYWdlX2NoZWNrc3VtX2ZhaWwtY2hlY2tzdW0nLAogICAgICAgICAgICAgICBhY3R1YWxf
aW1hZ2U9J2ltYWdlX2NoZWNrc3VtX2ZhaWwtcG5nJykKKyAgICB0ZXN0cy5hZGQoJ2ZhaWx1cmVz
L2V4cGVjdGVkL2F1ZGlvLmh0bWwnLAorICAgICAgICAgICAgICBhY3R1YWxfYXVkaW89YmFzZTY0
LmI2NGVuY29kZSgnYXVkaW9fZmFpbC13YXYnKSwgZXhwZWN0ZWRfYXVkaW89J2F1ZGlvLXdhdics
CisgICAgICAgICAgICAgIGFjdHVhbF90ZXh0PU5vbmUsIGV4cGVjdGVkX3RleHQ9Tm9uZSwKKyAg
ICAgICAgICAgICAgYWN0dWFsX2ltYWdlPU5vbmUsIGV4cGVjdGVkX2ltYWdlPU5vbmUsCisgICAg
ICAgICAgICAgIGFjdHVhbF9jaGVja3N1bT1Ob25lLCBleHBlY3RlZF9jaGVja3N1bT1Ob25lKQog
ICAgIHRlc3RzLmFkZCgnZmFpbHVyZXMvZXhwZWN0ZWQva2V5Ym9hcmQuaHRtbCcsIGtleWJvYXJk
PVRydWUpCiAgICAgdGVzdHMuYWRkKCdmYWlsdXJlcy9leHBlY3RlZC9taXNzaW5nX2NoZWNrLmh0
bWwnLAogICAgICAgICAgICAgICBleHBlY3RlZF9jaGVja3N1bT1Ob25lLAogICAgICAgICAgICAg
ICBleHBlY3RlZF9pbWFnZT1Ob25lKQogICAgIHRlc3RzLmFkZCgnZmFpbHVyZXMvZXhwZWN0ZWQv
bWlzc2luZ19pbWFnZS5odG1sJywgZXhwZWN0ZWRfaW1hZ2U9Tm9uZSkKKyAgICB0ZXN0cy5hZGQo
J2ZhaWx1cmVzL2V4cGVjdGVkL21pc3NpbmdfYXVkaW8uaHRtbCcsIGV4cGVjdGVkX2F1ZGlvPU5v
bmUsCisgICAgICAgICAgICAgIGFjdHVhbF90ZXh0PU5vbmUsIGV4cGVjdGVkX3RleHQ9Tm9uZSwK
KyAgICAgICAgICAgICAgYWN0dWFsX2ltYWdlPU5vbmUsIGV4cGVjdGVkX2ltYWdlPU5vbmUsCisg
ICAgICAgICAgICAgIGFjdHVhbF9jaGVja3N1bT1Ob25lLCBleHBlY3RlZF9jaGVja3N1bT1Ob25l
KQogICAgIHRlc3RzLmFkZCgnZmFpbHVyZXMvZXhwZWN0ZWQvbWlzc2luZ190ZXh0Lmh0bWwnLCBl
eHBlY3RlZF90ZXh0PU5vbmUpCiAgICAgdGVzdHMuYWRkKCdmYWlsdXJlcy9leHBlY3RlZC9uZXds
aW5lc19sZWFkaW5nLmh0bWwnLAogICAgICAgICAgICAgICBleHBlY3RlZF90ZXh0PSJcbmZvb1xu
IiwgYWN0dWFsX3RleHQ9ImZvb1xuIikKQEAgLTEzNCw2ICsxNDYsMTEgQEAgZGVmIHVuaXRfdGVz
dF9saXN0KCk6CiAgICAgdGVzdHMuYWRkKCdodHRwL3Rlc3RzL3NzbC90ZXh0Lmh0bWwnKQogICAg
IHRlc3RzLmFkZCgncGFzc2VzL2Vycm9yLmh0bWwnLCBlcnJvcj0nc3R1ZmYgZ29pbmcgdG8gc3Rk
ZXJyJykKICAgICB0ZXN0cy5hZGQoJ3Bhc3Nlcy9pbWFnZS5odG1sJykKKyAgICB0ZXN0cy5hZGQo
J3Bhc3Nlcy9hdWRpby5odG1sJywKKyAgICAgICAgICAgICAgYWN0dWFsX2F1ZGlvPWJhc2U2NC5i
NjRlbmNvZGUoJ2F1ZGlvLXdhdicpLCBleHBlY3RlZF9hdWRpbz0nYXVkaW8td2F2JywKKyAgICAg
ICAgICAgICAgYWN0dWFsX3RleHQ9Tm9uZSwgZXhwZWN0ZWRfdGV4dD1Ob25lLAorICAgICAgICAg
ICAgICBhY3R1YWxfaW1hZ2U9Tm9uZSwgZXhwZWN0ZWRfaW1hZ2U9Tm9uZSwKKyAgICAgICAgICAg
ICAgYWN0dWFsX2NoZWNrc3VtPU5vbmUsIGV4cGVjdGVkX2NoZWNrc3VtPU5vbmUpCiAgICAgdGVz
dHMuYWRkKCdwYXNzZXMvcGxhdGZvcm1faW1hZ2UuaHRtbCcpCiAgICAgdGVzdHMuYWRkKCdwYXNz
ZXMvY2hlY2tzdW1faW5faW1hZ2UuaHRtbCcsCiAgICAgICAgICAgICAgIGV4cGVjdGVkX2NoZWNr
c3VtPU5vbmUsCkBAIC0xODQsMjAgKzIwMSwyNyBAQCBkZWYgdW5pdF90ZXN0X2ZpbGVzeXN0ZW0o
ZmlsZXM9Tm9uZSk6CiAgICAgICAgIGFkZF9maWxlKGZpbGVzLCB0ZXN0LCAnLmh0bWwnLCAnJykK
ICAgICAgICAgaWYgdGVzdC5pc19yZWZ0ZXN0OgogICAgICAgICAgICAgY29udGludWUKKyAgICAg
ICAgaWYgdGVzdC5hY3R1YWxfYXVkaW86CisgICAgICAgICAgICBhZGRfZmlsZShmaWxlcywgdGVz
dCwgJy1leHBlY3RlZC53YXYnLCB0ZXN0LmV4cGVjdGVkX2F1ZGlvKQorICAgICAgICAgICAgY29u
dGludWUKKwogICAgICAgICBhZGRfZmlsZShmaWxlcywgdGVzdCwgJy1leHBlY3RlZC50eHQnLCB0
ZXN0LmV4cGVjdGVkX3RleHQpCiAgICAgICAgIGFkZF9maWxlKGZpbGVzLCB0ZXN0LCAnLWV4cGVj
dGVkLmNoZWNrc3VtJywgdGVzdC5leHBlY3RlZF9jaGVja3N1bSkKICAgICAgICAgYWRkX2ZpbGUo
ZmlsZXMsIHRlc3QsICctZXhwZWN0ZWQucG5nJywgdGVzdC5leHBlY3RlZF9pbWFnZSkKIAorCiAg
ICAgIyBBZGQgdGhlIHRlc3RfZXhwZWN0YXRpb25zIGZpbGUuCiAgICAgZmlsZXNbTEFZT1VUX1RF
U1RfRElSICsgJy9wbGF0Zm9ybS90ZXN0L3Rlc3RfZXhwZWN0YXRpb25zLnR4dCddID0gIiIiCiBX
T05URklYIDogZmFpbHVyZXMvZXhwZWN0ZWQvY2hlY2tzdW0uaHRtbCA9IElNQUdFCiBXT05URklY
IDogZmFpbHVyZXMvZXhwZWN0ZWQvY3Jhc2guaHRtbCA9IENSQVNICiAvLyBUaGlzIG9uZSBhY3R1
YWxseSBwYXNzZXMgYmVjYXVzZSB0aGUgY2hlY2tzdW1zIHdpbGwgbWF0Y2guCiBXT05URklYIDog
ZmFpbHVyZXMvZXhwZWN0ZWQvaW1hZ2UuaHRtbCA9IFBBU1MKK1dPTlRGSVggOiBmYWlsdXJlcy9l
eHBlY3RlZC9hdWRpby5odG1sID0gQVVESU8KIFdPTlRGSVggOiBmYWlsdXJlcy9leHBlY3RlZC9p
bWFnZV9jaGVja3N1bS5odG1sID0gSU1BR0UKIFdPTlRGSVggOiBmYWlsdXJlcy9leHBlY3RlZC9t
aXNtYXRjaC5odG1sID0gSU1BR0UKIFdPTlRGSVggOiBmYWlsdXJlcy9leHBlY3RlZC9taXNzaW5n
X2NoZWNrLmh0bWwgPSBNSVNTSU5HIFBBU1MKIFdPTlRGSVggOiBmYWlsdXJlcy9leHBlY3RlZC9t
aXNzaW5nX2ltYWdlLmh0bWwgPSBNSVNTSU5HIFBBU1MKK1dPTlRGSVggOiBmYWlsdXJlcy9leHBl
Y3RlZC9taXNzaW5nX2F1ZGlvLmh0bWwgPSBNSVNTSU5HIFBBU1MKIFdPTlRGSVggOiBmYWlsdXJl
cy9leHBlY3RlZC9taXNzaW5nX3RleHQuaHRtbCA9IE1JU1NJTkcgUEFTUwogV09OVEZJWCA6IGZh
aWx1cmVzL2V4cGVjdGVkL25ld2xpbmVzX2xlYWRpbmcuaHRtbCA9IFRFWFQKIFdPTlRGSVggOiBm
YWlsdXJlcy9leHBlY3RlZC9uZXdsaW5lc190cmFpbGluZy5odG1sID0gVEVYVApAQCAtNDEyLDEw
ICs0MzYsMTUgQEAgY2xhc3MgVGVzdERyaXZlcihiYXNlLkRyaXZlcik6CiAgICAgICAgICAgICBy
YWlzZSBWYWx1ZUVycm9yKCdleGNlcHRpb24gZnJvbSAnICsgdGVzdF9uYW1lKQogICAgICAgICBp
ZiB0ZXN0Lmhhbmc6CiAgICAgICAgICAgICB0aW1lLnNsZWVwKChmbG9hdCh0ZXN0X2lucHV0LnRp
bWVvdXQpICogNCkgLyAxMDAwLjApCisKKyAgICAgICAgYXVkaW8gPSBOb25lCisgICAgICAgIGlm
IHRlc3QuYWN0dWFsX2F1ZGlvOgorICAgICAgICAgICAgYXVkaW8gPSBiYXNlNjQuYjY0ZGVjb2Rl
KHRlc3QuYWN0dWFsX2F1ZGlvKQogICAgICAgICByZXR1cm4gYmFzZS5Ecml2ZXJPdXRwdXQodGVz
dC5hY3R1YWxfdGV4dCwgdGVzdC5hY3R1YWxfaW1hZ2UsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0ZXN0LmFjdHVhbF9jaGVja3N1bSwgdGVzdC5jcmFzaCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRpbWUudGltZSgpIC0gc3RhcnRfdGltZSwgdGVzdC50aW1l
b3V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdC5lcnJvcikKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3QuZXJyb3IsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhdWRpbykKIAogICAgIGRlZiBzdGFydChzZWxmKToKICAgICAgICAg
cGFzcwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC93ZWJraXQucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dl
YmtpdC5weQppbmRleCAwNTIyNjMxNDk0MGNlOWUxZmQyYTJjYmEyODVlMjVhMmM2ZjcwOGIyLi5j
NjY4MDhjYzA0MzE3MjkyYjQxMDViY2JlYjdhYzkwODA1ZTk1OTU1IDEwMDY0NAotLS0gYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weQorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weQpAQCAtMzAsNyAr
MzAsNyBAQAogCiAiIiJXZWJLaXQgaW1wbGVtZW50YXRpb25zIG9mIHRoZSBQb3J0IGludGVyZmFj
ZS4iIiIKIAotCitpbXBvcnQgYmFzZTY0CiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IG9wZXJhdG9y
CiBpbXBvcnQgb3MKQEAgLTQwNiw0NyArNDA2LDI0IEBAIGNsYXNzIFdlYktpdERyaXZlcihiYXNl
LkRyaXZlcik6CiAgICAgICAgIHN0YXJ0X3RpbWUgPSB0aW1lLnRpbWUoKQogICAgICAgICBzZWxm
Ll9zZXJ2ZXJfcHJvY2Vzcy53cml0ZShjb21tYW5kKQogCi0gICAgICAgIGhhdmVfc2Vlbl9jb250
ZW50X3R5cGUgPSBGYWxzZQorICAgICAgICBvdXRwdXQgPSBOb25lICAjIFVzZSBhIGJ5dGUgYXJy
YXkgZm9yIG91dHB1dCwgZXZlbiB0aG91Z2ggaXQgc2hvdWxkIGJlIFVURi04LgogICAgICAgICBh
Y3R1YWxfaW1hZ2VfaGFzaCA9IE5vbmUKLSAgICAgICAgb3V0cHV0ID0gc3RyKCkgICMgVXNlIGEg
Ynl0ZSBhcnJheSBmb3Igb3V0cHV0LCBldmVuIHRob3VnaCBpdCBzaG91bGQgYmUgVVRGLTguCiAg
ICAgICAgIGltYWdlID0gc3RyKCkKKyAgICAgICAgYXVkaW8gPSBOb25lCisgICAgICAgIGRlYWRs
aW5lID0gdGltZS50aW1lKCkgKyBpbnQoZHJpdmVyX2lucHV0LnRpbWVvdXQpIC8gMTAwMC4wCiAK
LSAgICAgICAgdGltZW91dCA9IGludChkcml2ZXJfaW5wdXQudGltZW91dCkgLyAxMDAwLjAKLSAg
ICAgICAgZGVhZGxpbmUgPSB0aW1lLnRpbWUoKSArIHRpbWVvdXQKLSAgICAgICAgbGluZSA9IHNl
bGYuX3NlcnZlcl9wcm9jZXNzLnJlYWRfbGluZSh0aW1lb3V0KQotICAgICAgICB3aGlsZSAobm90
IHNlbGYuX3NlcnZlcl9wcm9jZXNzLnRpbWVkX291dAotICAgICAgICAgICAgICAgYW5kIG5vdCBz
ZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5jcmFzaGVkCi0gICAgICAgICAgICAgICBhbmQgbGluZS5yc3Ry
aXAoKSAhPSAiI0VPRiIpOgotICAgICAgICAgICAgaWYgKGxpbmUuc3RhcnRzd2l0aCgnQ29udGVu
dC1UeXBlOicpIGFuZCBub3QKLSAgICAgICAgICAgICAgICBoYXZlX3NlZW5fY29udGVudF90eXBl
KToKLSAgICAgICAgICAgICAgICBoYXZlX3NlZW5fY29udGVudF90eXBlID0gVHJ1ZQotICAgICAg
ICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAjIE5vdGU6IFRleHQgb3V0cHV0IGZyb20gRHVt
cFJlbmRlclRyZWUgaXMgYWx3YXlzIFVURi04LgotICAgICAgICAgICAgICAgICMgSG93ZXZlciwg
c29tZSB0ZXN0cyAoZS5nLiB3ZWJhcmNoaXZlcykgc3BpdCBvdXQgYmluYXJ5Ci0gICAgICAgICAg
ICAgICAgIyBkYXRhIGluc3RlYWQgb2YgdGV4dC4gIFNvIHRvIG1ha2UgdGhpbmdzIHNpbXBsZSwg
d2UKLSAgICAgICAgICAgICAgICAjIGFsd2F5cyB0cmVhdCB0aGUgb3V0cHV0IGFzIGJpbmFyeS4K
LSAgICAgICAgICAgICAgICBvdXRwdXQgKz0gbGluZQotICAgICAgICAgICAgbGluZSA9IHNlbGYu
X3NlcnZlcl9wcm9jZXNzLnJlYWRfbGluZSh0aW1lb3V0KQotICAgICAgICAgICAgdGltZW91dCA9
IGRlYWRsaW5lIC0gdGltZS50aW1lKCkKKyAgICAgICAgIyBGaXJzdCBibG9jayBpcyBlaXRoZXIg
dGV4dCBvciBhdWRpbworICAgICAgICBibG9jayA9IHNlbGYuX3JlYWRfYmxvY2soZGVhZGxpbmUp
CisgICAgICAgIGlmIGJsb2NrLmNvbnRlbnRfdHlwZSA9PSAnYXVkaW8vd2F2JzoKKyAgICAgICAg
ICAgIGF1ZGlvID0gYmxvY2suZGVjb2RlZF9jb250ZW50CisgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICBvdXRwdXQgPSBibG9jay5kZWNvZGVkX2NvbnRlbnQKIAogICAgICAgICAjIE5vdyByZWFk
IGEgc2Vjb25kIGJsb2NrIG9mIHRleHQgZm9yIHRoZSBvcHRpb25hbCBpbWFnZSBkYXRhCi0gICAg
ICAgIHJlbWFpbmluZ19sZW5ndGggPSAtMQotICAgICAgICBIQVNIX0hFQURFUiA9ICdBY3R1YWxI
YXNoOiAnCi0gICAgICAgIExFTkdUSF9IRUFERVIgPSAnQ29udGVudC1MZW5ndGg6ICcKLSAgICAg
ICAgbGluZSA9IHNlbGYuX3NlcnZlcl9wcm9jZXNzLnJlYWRfbGluZSh0aW1lb3V0KQotICAgICAg
ICB3aGlsZSAobm90IHNlbGYuX3NlcnZlcl9wcm9jZXNzLnRpbWVkX291dAotICAgICAgICAgICAg
ICAgYW5kIG5vdCBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5jcmFzaGVkCi0gICAgICAgICAgICAgICBh
bmQgbGluZS5yc3RyaXAoKSAhPSAiI0VPRiIpOgotICAgICAgICAgICAgaWYgbGluZS5zdGFydHN3
aXRoKEhBU0hfSEVBREVSKToKLSAgICAgICAgICAgICAgICBhY3R1YWxfaW1hZ2VfaGFzaCA9IGxp
bmVbbGVuKEhBU0hfSEVBREVSKTpdLnN0cmlwKCkKLSAgICAgICAgICAgIGVsaWYgbGluZS5zdGFy
dHN3aXRoKCdDb250ZW50LVR5cGU6Jyk6Ci0gICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAg
ICAgZWxpZiBsaW5lLnN0YXJ0c3dpdGgoTEVOR1RIX0hFQURFUik6Ci0gICAgICAgICAgICAgICAg
dGltZW91dCA9IGRlYWRsaW5lIC0gdGltZS50aW1lKCkKLSAgICAgICAgICAgICAgICBjb250ZW50
X2xlbmd0aCA9IGludChsaW5lW2xlbihMRU5HVEhfSEVBREVSKTpdKQotICAgICAgICAgICAgICAg
IGltYWdlID0gc2VsZi5fc2VydmVyX3Byb2Nlc3MucmVhZCh0aW1lb3V0LCBjb250ZW50X2xlbmd0
aCkKLSAgICAgICAgICAgIHRpbWVvdXQgPSBkZWFkbGluZSAtIHRpbWUudGltZSgpCi0gICAgICAg
ICAgICBsaW5lID0gc2VsZi5fc2VydmVyX3Byb2Nlc3MucmVhZF9saW5lKHRpbWVvdXQpCisgICAg
ICAgIGJsb2NrID0gc2VsZi5fcmVhZF9ibG9jayhkZWFkbGluZSkKKyAgICAgICAgaWYgYmxvY2su
Y29udGVudCBhbmQgYmxvY2suY29udGVudF90eXBlID09ICdpbWFnZS9wbmcnOgorICAgICAgICAg
ICAgaW1hZ2UgPSBibG9jay5kZWNvZGVkX2NvbnRlbnQKKyAgICAgICAgICAgIGFjdHVhbF9pbWFn
ZV9oYXNoID0gYmxvY2suY29udGVudF9oYXNoCiAKICAgICAgICAgZXJyb3JfbGluZXMgPSBzZWxm
Ll9zZXJ2ZXJfcHJvY2Vzcy5lcnJvci5zcGxpdGxpbmVzKCkKICAgICAgICAgIyBGSVhNRTogVGhp
cyBpcyBhIGhhY2suICBJdCBpcyB1bmNsZWFyIHdoeSBzb21ldGltZXMKQEAgLTQ1OCwxMyArNDM1
LDYxIEBAIGNsYXNzIFdlYktpdERyaXZlcihiYXNlLkRyaXZlcik6CiAgICAgICAgICMgRklYTUU6
IFRoaXMgc2VlbXMgbGlrZSB0aGUgd3Jvbmcgc2VjdGlvbiBvZiBjb2RlIHRvIGJlIGRvaW5nCiAg
ICAgICAgICMgdGhpcyByZXNldCBpbi4KICAgICAgICAgc2VsZi5fc2VydmVyX3Byb2Nlc3MuZXJy
b3IgPSAiIgorCiAgICAgICAgIHJldHVybiBiYXNlLkRyaXZlck91dHB1dChvdXRwdXQsIGltYWdl
LCBhY3R1YWxfaW1hZ2VfaGFzaCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
bGYuX3NlcnZlcl9wcm9jZXNzLmNyYXNoZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0aW1lLnRpbWUoKSAtIHN0YXJ0X3RpbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy50aW1lZF9vdXQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBlcnJvcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGVycm9yLCBhdWRpbykKKworICAgIGRlZiBfcmVhZF9ibG9jayhzZWxmLCBkZWFkbGluZSk6Cisg
ICAgICAgIExFTkdUSF9IRUFERVIgPSAnQ29udGVudC1MZW5ndGg6ICcKKyAgICAgICAgSEFTSF9I
RUFERVIgPSAnQWN0dWFsSGFzaDogJworICAgICAgICBUWVBFX0hFQURFUiA9ICdDb250ZW50LVR5
cGU6ICcKKyAgICAgICAgRU5DT0RJTkdfSEVBREVSID0gJ0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rp
bmc6ICcKKyAgICAgICAgY29udGVudF90eXBlID0gTm9uZQorICAgICAgICBlbmNvZGluZyA9IE5v
bmUKKyAgICAgICAgY29udGVudF9oYXNoID0gTm9uZQorICAgICAgICBjb250ZW50X2xlbmd0aCA9
IE5vbmUKKyAgICAgICAgY29udGVudCA9ICcnCisgICAgICAgIHRpbWVvdXQgPSBkZWFkbGluZSAt
IHRpbWUudGltZSgpCisgICAgICAgIGxpbmUgPSBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5yZWFkX2xp
bmUodGltZW91dCkKKyAgICAgICAgd2hpbGUgKG5vdCBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy50aW1l
ZF9vdXQKKyAgICAgICAgICAgICAgIGFuZCBub3Qgc2VsZi5fc2VydmVyX3Byb2Nlc3MuY3Jhc2hl
ZAorICAgICAgICAgICAgICAgYW5kIGxpbmUucnN0cmlwKCkgIT0gIiNFT0YiKToKKyAgICAgICAg
ICAgIGlmIGxpbmUuc3RhcnRzd2l0aChUWVBFX0hFQURFUikgYW5kIGNvbnRlbnRfdHlwZSBpcyBO
b25lOgorICAgICAgICAgICAgICAgIGNvbnRlbnRfdHlwZSA9IGxpbmUuc3BsaXQoKVsxXQorICAg
ICAgICAgICAgZWxpZiBsaW5lLnN0YXJ0c3dpdGgoRU5DT0RJTkdfSEVBREVSKSBhbmQgZW5jb2Rp
bmcgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBlbmNvZGluZyA9IGxpbmUuc3BsaXQoKVsxXQor
ICAgICAgICAgICAgZWxpZiBsaW5lLnN0YXJ0c3dpdGgoTEVOR1RIX0hFQURFUikgYW5kIGNvbnRl
bnRfbGVuZ3RoIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgdGltZW91dCA9IGRlYWRsaW5lIC0g
dGltZS50aW1lKCkKKyAgICAgICAgICAgICAgICBjb250ZW50X2xlbmd0aCA9IGludChsaW5lW2xl
bihMRU5HVEhfSEVBREVSKTpdKQorICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBzZWxmLl9zZXJ2
ZXJfcHJvY2Vzcy5yZWFkKHRpbWVvdXQsIGNvbnRlbnRfbGVuZ3RoKQorICAgICAgICAgICAgZWxp
ZiBsaW5lLnN0YXJ0c3dpdGgoSEFTSF9IRUFERVIpOgorICAgICAgICAgICAgICAgIGNvbnRlbnRf
aGFzaCA9IGxpbmUuc3BsaXQoKVsxXQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAg
ICAjIE5vdGU6IFRleHQgb3V0cHV0IGZyb20gRHVtcFJlbmRlclRyZWUgaXMgYWx3YXlzIFVURi04
LgorICAgICAgICAgICAgICAgICMgSG93ZXZlciwgc29tZSB0ZXN0cyAoZS5nLiB3ZWJhcmNoaXZl
cykgc3BpdCBvdXQgYmluYXJ5CisgICAgICAgICAgICAgICAgIyBkYXRhIGluc3RlYWQgb2YgdGV4
dC4gIFNvIHRvIG1ha2UgdGhpbmdzIHNpbXBsZSwgd2UKKyAgICAgICAgICAgICAgICAjIGFsd2F5
cyB0cmVhdCB0aGUgb3V0cHV0IGFzIGJpbmFyeS4KKyAgICAgICAgICAgICAgICBjb250ZW50ICs9
IGxpbmUKKyAgICAgICAgICAgIGxpbmUgPSBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5yZWFkX2xpbmUo
dGltZW91dCkKKyAgICAgICAgICAgIHRpbWVvdXQgPSBkZWFkbGluZSAtIHRpbWUudGltZSgpCisg
ICAgICAgIHJldHVybiBDb250ZW50QmxvY2soY29udGVudF90eXBlLCBlbmNvZGluZywgY29udGVu
dF9oYXNoLCBjb250ZW50KQogCiAgICAgZGVmIHN0b3Aoc2VsZik6CiAgICAgICAgIGlmIHNlbGYu
X3NlcnZlcl9wcm9jZXNzOgogICAgICAgICAgICAgc2VsZi5fc2VydmVyX3Byb2Nlc3Muc3RvcCgp
CiAgICAgICAgICAgICBzZWxmLl9zZXJ2ZXJfcHJvY2VzcyA9IE5vbmUKKworCitjbGFzcyBDb250
ZW50QmxvY2sob2JqZWN0KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgY29udGVudF90eXBlLCBl
bmNvZGluZywgY29udGVudF9oYXNoLCBjb250ZW50KToKKyAgICAgICAgc2VsZi5jb250ZW50X3R5
cGUgPSBjb250ZW50X3R5cGUKKyAgICAgICAgc2VsZi5lbmNvZGluZyA9IGVuY29kaW5nCisgICAg
ICAgIHNlbGYuY29udGVudF9oYXNoID0gY29udGVudF9oYXNoCisgICAgICAgIHNlbGYuY29udGVu
dCA9IGNvbnRlbnQKKyAgICAgICAgaWYgc2VsZi5lbmNvZGluZyA9PSAnYmFzZTY0JzoKKyAgICAg
ICAgICAgIHNlbGYuZGVjb2RlZF9jb250ZW50ID0gYmFzZTY0LmI2NGRlY29kZShjb250ZW50KQor
ICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5kZWNvZGVkX2NvbnRlbnQgPSBjb250ZW50
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88554</attachid>
            <date>2011-04-06 18:17:33 -0700</date>
            <delta_ts>2011-04-07 19:29:01 -0700</delta_ts>
            <desc>more updates, testing, add note about missing LF after content-length</desc>
            <filename>bug-57987-20110406181732.patch</filename>
            <type>text/plain</type>
            <size>29832</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODMwOTcKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCBlOWU5ZTVjZjg5ZWNlNTA4MTEwMDhhNDIyMTg3NDNmNzJj
MThhNzljLi5lODMyODFhNjg4NWY4N2NkYzIzNzE5M2Q4YjQ4M2FhYWNhYzE1YmI4IDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEg
QEAKKzIwMTEtMDQtMDYgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgbmV3LXJ1bi13ZWJr
aXQtdGVzdHM6IGltcGxlbWVudCBzdXBwb3J0IGZvciBhdWRpbyB0ZXN0cy4KKworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTc5ODcKKworICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2pzb25fbGF5b3V0
X3Jlc3VsdHNfZ2VuZXJhdG9yLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL2xheW91dF9wYWNrYWdlL3NpbmdsZV90ZXN0X3J1bm5lci5weToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2V4cGVjdGF0
aW9ucy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRf
cGFja2FnZS90ZXN0X2ZhaWx1cmVzLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfcmVzdWx0X3dyaXRlci5weToKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHk6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0LnB5OgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbW9ja19kcnQucHk6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXQucHk6CisKIDIwMTEtMDQt
MDYgIFphbiBEb2JlcnNlayAgPHphbmRvYmVyc2VrQGdtYWlsLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBFcmljIFNlaWRlbC4KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2pzb25fbGF5b3V0X3Jlc3VsdHNfZ2VuZXJhdG9y
LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2Uv
anNvbl9sYXlvdXRfcmVzdWx0c19nZW5lcmF0b3IucHkKaW5kZXggMTliMDJlODU2NjM3Yjc2MzU2
MDNmOGFhNjcxYzA3ZDM0YjBjYWU0OC4uZGJiMTZjMDNlMjYzMzM1MDk0MTIwZWNlYWU4YzcwNjdk
OGQ3ODBmMSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
bGF5b3V0X3BhY2thZ2UvanNvbl9sYXlvdXRfcmVzdWx0c19nZW5lcmF0b3IucHkKKysrIGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvanNvbl9sYXlv
dXRfcmVzdWx0c19nZW5lcmF0b3IucHkKQEAgLTUwLDYgKzUwLDcgQEAgY2xhc3MgSlNPTkxheW91
dFJlc3VsdHNHZW5lcmF0b3IoanNvbl9yZXN1bHRzX2dlbmVyYXRvci5KU09OUmVzdWx0c0dlbmVy
YXRvckJhc2UKICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9leHBlY3RhdGlvbnMuSU1BR0U6
ICJJIiwKICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9leHBlY3RhdGlvbnMuVEVYVDogIkYi
LAogICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2V4cGVjdGF0aW9ucy5NSVNTSU5HOiAiTyIs
CisgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfZXhwZWN0YXRpb25zLkFVRElPOiAiQSIsCiAg
ICAgICAgICAgICAgICAgICAgICAgIHRlc3RfZXhwZWN0YXRpb25zLklNQUdFX1BMVVNfVEVYVDog
IloifQogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBvcnQsIGJ1aWxkZXJfbmFtZSwgYnVpbGRf
bmFtZSwgYnVpbGRfbnVtYmVyLApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2Uvc2luZ2xlX3Rlc3RfcnVubmVyLnB5IGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2Uvc2luZ2xlX3Rlc3Rf
cnVubmVyLnB5CmluZGV4IGE4YzcxNmY4ZGMwYzI4ZDkyNjVkODdkNWNhOTVjMWYyYTc5YmIwMzMu
LjZkZWM0OGViMjM3ZTg3YTY5ZmFmNDEyZDZhYjI0MDYzMzhkYzBmMGQgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3NpbmdsZV90
ZXN0X3J1bm5lci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9s
YXlvdXRfcGFja2FnZS9zaW5nbGVfdGVzdF9ydW5uZXIucHkKQEAgLTgyLDcgKzgyLDcgQEAgY2xh
c3MgU2luZ2xlVGVzdFJ1bm5lcjoKICAgICAgICAgICAgICMgRm9yIGV4YW1wbGUsIGlmICdmb28u
aHRtbCcgaGFzIHR3byBleHBlY3RhdGlvbiBmaWxlcywgJ2Zvby1leHBlY3RlZC5odG1sJyBhbmQK
ICAgICAgICAgICAgICMgJ2Zvby1leHBlY3RlZC50eHQnLCB3ZSBzaG91bGQgd2FybiB1c2Vycy4g
T25lIHRlc3QgZmlsZSBtdXN0IGJlIHVzZWQgZXhjbHVzaXZlbHkKICAgICAgICAgICAgICMgaW4g
ZWl0aGVyIGxheW91dCB0ZXN0cyBvciByZWZ0ZXN0cywgYnV0IG5vdCBpbiBib3RoLgotICAgICAg
ICAgICAgZm9yIHN1ZmZpeCBpbiBbJy50eHQnLCAnLmNoZWNrc3VtJywgJy5wbmcnXToKKyAgICAg
ICAgICAgIGZvciBzdWZmaXggaW4gKCcudHh0JywgJy5jaGVja3N1bScsICcucG5nJywgJy53YXYn
KToKICAgICAgICAgICAgICAgICBleHBlY3RlZF9maWxlbmFtZSA9IHNlbGYuX3BvcnQuZXhwZWN0
ZWRfZmlsZW5hbWUoc2VsZi5fZmlsZW5hbWUsIHN1ZmZpeCkKICAgICAgICAgICAgICAgICBpZiBm
cy5leGlzdHMoZXhwZWN0ZWRfZmlsZW5hbWUpOgogICAgICAgICAgICAgICAgICAgICBfbG9nLmVy
cm9yKCdUaGUgcmVmdGVzdCAoJXMpIGNhbiBub3QgaGF2ZSBhbiBleHBlY3RhdGlvbiBmaWxlICgl
cykuJwpAQCAtOTEsNyArOTEsOCBAQCBjbGFzcyBTaW5nbGVUZXN0UnVubmVyOgogICAgIGRlZiBf
ZXhwZWN0ZWRfZHJpdmVyX291dHB1dChzZWxmKToKICAgICAgICAgcmV0dXJuIGJhc2UuRHJpdmVy
T3V0cHV0KHNlbGYuX3BvcnQuZXhwZWN0ZWRfdGV4dChzZWxmLl9maWxlbmFtZSksCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9wb3J0LmV4cGVjdGVkX2ltYWdlKHNlbGYu
X2ZpbGVuYW1lKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3BvcnQu
ZXhwZWN0ZWRfY2hlY2tzdW0oc2VsZi5fZmlsZW5hbWUpKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2VsZi5fcG9ydC5leHBlY3RlZF9jaGVja3N1bShzZWxmLl9maWxlbmFtZSks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpbz1zZWxmLl9wb3J0LmV4cGVj
dGVkX2F1ZGlvKHNlbGYuX2ZpbGVuYW1lKSkKIAogICAgIGRlZiBfc2hvdWxkX2ZldGNoX2V4cGVj
dGVkX2NoZWNrc3VtKHNlbGYpOgogICAgICAgICByZXR1cm4gKHNlbGYuX29wdGlvbnMucGl4ZWxf
dGVzdHMgYW5kCkBAIC0xNDIsNiArMTQzLDkgQEAgY2xhc3MgU2luZ2xlVGVzdFJ1bm5lcjoKICAg
ICAgICAgIyBEdW1wUmVuZGVyVHJlZSBtYXkgbm90IG91dHB1dCB1dGYtOCB0ZXh0IChlLmcuIHdl
YmFyY2hpdmVzKS4KICAgICAgICAgc2VsZi5fc2F2ZV9iYXNlbGluZV9kYXRhKGRyaXZlcl9vdXRw
dXQudGV4dCwgIi50eHQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJh
dGVfbmV3X2Jhc2VsaW5lPXNlbGYuX29wdGlvbnMubmV3X2Jhc2VsaW5lKQorICAgICAgICBpZiBk
cml2ZXJfb3V0cHV0LmF1ZGlvOgorICAgICAgICAgICAgc2VsZi5fc2F2ZV9iYXNlbGluZV9kYXRh
KGRyaXZlcl9vdXRwdXQuYXVkaW8sICcud2F2JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBnZW5lcmF0ZV9uZXdfYmFzZWxpbmU9c2VsZi5fb3B0aW9ucy5uZXdfYmFzZWxp
bmUpCiAgICAgICAgIGlmIHNlbGYuX29wdGlvbnMucGl4ZWxfdGVzdHMgYW5kIGRyaXZlcl9vdXRw
dXQuaW1hZ2VfaGFzaDoKICAgICAgICAgICAgIHNlbGYuX3NhdmVfYmFzZWxpbmVfZGF0YShkcml2
ZXJfb3V0cHV0LmltYWdlLCAiLnBuZyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ2VuZXJhdGVfbmV3X2Jhc2VsaW5lPXNlbGYuX29wdGlvbnMubmV3X2Jhc2VsaW5lKQpA
QCAtMjE1LDcgKzIxOSwxMCBAQCBjbGFzcyBTaW5nbGVUZXN0UnVubmVyOgogICAgICAgICAgICAg
IyBJbiBjYXNlIG9mIHRpbWVvdXRzLCB3ZSBjb250aW51ZSBzaW5jZSB3ZSBzdGlsbCB3YW50IHRv
IHNlZSB0aGUgdGV4dCBhbmQgaW1hZ2Ugb3V0cHV0LgogICAgICAgICAgICAgcmV0dXJuIFRlc3RS
ZXN1bHQoc2VsZi5fZmlsZW5hbWUsIGZhaWx1cmVzLCBkcml2ZXJfb3V0cHV0LnRlc3RfdGltZSkK
IAotICAgICAgICBmYWlsdXJlcy5leHRlbmQoc2VsZi5fY29tcGFyZV90ZXh0KGRyaXZlcl9vdXRw
dXQudGV4dCwgZXhwZWN0ZWRfZHJpdmVyX291dHB1dC50ZXh0KSkKKyAgICAgICAgaWYgZHJpdmVy
X291dHB1dC5hdWRpbzoKKyAgICAgICAgICAgIGZhaWx1cmVzLmV4dGVuZChzZWxmLl9jb21wYXJl
X2F1ZGlvKGRyaXZlcl9vdXRwdXQuYXVkaW8sIGV4cGVjdGVkX2RyaXZlcl9vdXRwdXQuYXVkaW8p
KQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZmFpbHVyZXMuZXh0ZW5kKHNlbGYuX2NvbXBh
cmVfdGV4dChkcml2ZXJfb3V0cHV0LnRleHQsIGV4cGVjdGVkX2RyaXZlcl9vdXRwdXQudGV4dCkp
CiAgICAgICAgIGlmIHNlbGYuX29wdGlvbnMucGl4ZWxfdGVzdHM6CiAgICAgICAgICAgICBmYWls
dXJlcy5leHRlbmQoc2VsZi5fY29tcGFyZV9pbWFnZShkcml2ZXJfb3V0cHV0LCBleHBlY3RlZF9k
cml2ZXJfb3V0cHV0KSkKICAgICAgICAgcmV0dXJuIFRlc3RSZXN1bHQoc2VsZi5fZmlsZW5hbWUs
IGZhaWx1cmVzLCBkcml2ZXJfb3V0cHV0LnRlc3RfdGltZSkKQEAgLTIzMSw2ICsyMzgsMTUgQEAg
Y2xhc3MgU2luZ2xlVGVzdFJ1bm5lcjoKICAgICAgICAgICAgICAgICBmYWlsdXJlcy5hcHBlbmQo
dGVzdF9mYWlsdXJlcy5GYWlsdXJlVGV4dE1pc21hdGNoKCkpCiAgICAgICAgIHJldHVybiBmYWls
dXJlcwogCisgICAgZGVmIF9jb21wYXJlX2F1ZGlvKHNlbGYsIGFjdHVhbF9hdWRpbywgZXhwZWN0
ZWRfYXVkaW8pOgorICAgICAgICBmYWlsdXJlcyA9IFtdCisgICAgICAgIGlmIHNlbGYuX3BvcnQu
Y29tcGFyZV9hdWRpbyhhY3R1YWxfYXVkaW8sIGV4cGVjdGVkX2F1ZGlvKToKKyAgICAgICAgICAg
IGlmIGFjdHVhbF9hdWRpbyBhbmQgZXhwZWN0ZWRfYXVkaW8gaXMgTm9uZToKKyAgICAgICAgICAg
ICAgICBmYWlsdXJlcy5hcHBlbmQodGVzdF9mYWlsdXJlcy5GYWlsdXJlTWlzc2luZ0F1ZGlvKCkp
CisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGZhaWx1cmVzLmFwcGVuZCh0ZXN0
X2ZhaWx1cmVzLkZhaWx1cmVBdWRpb01pc21hdGNoKCkpCisgICAgICAgIHJldHVybiBmYWlsdXJl
cworCiAgICAgZGVmIF9nZXRfbm9ybWFsaXplZF9vdXRwdXRfdGV4dChzZWxmLCBvdXRwdXQpOgog
ICAgICAgICAiIiJSZXR1cm5zIHRoZSBub3JtYWxpemVkIHRleHQgb3V0cHV0LCBpLmUuIHRoZSBv
dXRwdXQgaW4gd2hpY2gKICAgICAgICAgdGhlIGVuZC1vZi1saW5lIGNoYXJhY3RlcnMgYXJlIG5v
cm1hbGl6ZWQgdG8gIlxuIi4iIiIKQEAgLTIzOCw2ICsyNTQsOCBAQCBjbGFzcyBTaW5nbGVUZXN0
UnVubmVyOgogICAgICAgICAjIGNoYW5nZWQgdG8gIlxyXG4iIGJ5IG91ciBzeXN0ZW0gKFB5dGhv
bi9DeWd3aW4pLCByZXN1bHRpbmcgaW4KICAgICAgICAgIyAiXHJcclxuIiwgd2hlbiwgaW4gZmFj
dCwgd2Ugd2FudGVkIHRvIGNvbXBhcmUgdGhlIHRleHQgb3V0cHV0IHdpdGgKICAgICAgICAgIyB0
aGUgbm9ybWFsaXplZCB0ZXh0IGV4cGVjdGF0aW9uIGZpbGVzLgorICAgICAgICBpZiBub3Qgb3V0
cHV0OgorICAgICAgICAgICAgcmV0dXJuIG91dHB1dAogICAgICAgICByZXR1cm4gb3V0cHV0LnJl
cGxhY2UoIlxyXHJcbiIsICJcclxuIikucmVwbGFjZSgiXHJcbiIsICJcbiIpCiAKICAgICBkZWYg
X2NvbXBhcmVfaW1hZ2Uoc2VsZiwgZHJpdmVyX291dHB1dCwgZXhwZWN0ZWRfZHJpdmVyX291dHB1
dHMpOgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5
b3V0X3BhY2thZ2UvdGVzdF9leHBlY3RhdGlvbnMucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2V4cGVjdGF0aW9ucy5weQppbmRleCBh
ZDUwYWRlYWNkOWI4MDcyODMwOGQxYzUwODlhNGM4ZGUyNTAyZTY4Li43YzRhZjQzYmYzMmU1NzQw
ZWEyMzlhMmQ1YTM3MjUxMWZjZDFhOGYxIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2V4cGVjdGF0aW9ucy5weQorKysg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0
X2V4cGVjdGF0aW9ucy5weQpAQCAtNDEsOCArNDEsOCBAQCBfbG9nID0gbG9nZ2luZy5nZXRMb2dn
ZXIoIndlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZS4iCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgInRlc3RfZXhwZWN0YXRpb25zIikKIAogIyBUZXN0IGV4cGVjdGF0aW9uIGFu
ZCBtb2RpZmllciBjb25zdGFudHMuCi0oUEFTUywgRkFJTCwgVEVYVCwgSU1BR0UsIElNQUdFX1BM
VVNfVEVYVCwgVElNRU9VVCwgQ1JBU0gsIFNLSVAsIFdPTlRGSVgsCi0gU0xPVywgUkVCQVNFTElO
RSwgTUlTU0lORywgRkxBS1ksIE5PVywgTk9ORSkgPSByYW5nZSgxNSkKKyhQQVNTLCBGQUlMLCBU
RVhULCBJTUFHRSwgSU1BR0VfUExVU19URVhULCBBVURJTywgVElNRU9VVCwKKyBDUkFTSCwgU0tJ
UCwgV09OVEZJWCwgU0xPVywgUkVCQVNFTElORSwgTUlTU0lORywgRkxBS1ksIE5PVywgTk9ORSkg
PSByYW5nZSgxNikKIAogIyBUZXN0IGV4cGVjdGF0aW9uIGZpbGUgdXBkYXRlIGFjdGlvbiBjb25z
dGFudHMKIChOT19DSEFOR0UsIFJFTU9WRV9URVNULCBSRU1PVkVfUExBVEZPUk0sIEFERF9QTEFU
Rk9STVNfRVhDRVBUX1RISVMpID0gcmFuZ2UoNCkKQEAgLTEyMCw3ICsxMjAsOCBAQCBjbGFzcyBU
ZXN0RXhwZWN0YXRpb25zOgogICAgICAgICAgICAgICAgIHNlbGYuX2V4cGVjdGVkX2ZhaWx1cmVz
LmdldF90ZXN0X3NldChSRUJBU0VMSU5FLCBJTUFHRSkgfAogICAgICAgICAgICAgICAgIHNlbGYu
X2V4cGVjdGVkX2ZhaWx1cmVzLmdldF90ZXN0X3NldChSRUJBU0VMSU5FLCBURVhUKSB8CiAgICAg
ICAgICAgICAgICAgc2VsZi5fZXhwZWN0ZWRfZmFpbHVyZXMuZ2V0X3Rlc3Rfc2V0KFJFQkFTRUxJ
TkUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IElNQUdFX1BMVVNfVEVYVCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIElNQUdFX1BMVVNfVEVYVCkgfAorICAgICAgICAgICAgICAgIHNlbGYu
X2V4cGVjdGVkX2ZhaWx1cmVzLmdldF90ZXN0X3NldChSRUJBU0VMSU5FLCBBVURJTykpCiAKICAg
ICBkZWYgZ2V0X29wdGlvbnMoc2VsZiwgdGVzdCk6CiAgICAgICAgIHJldHVybiBzZWxmLl9leHBl
Y3RlZF9mYWlsdXJlcy5nZXRfb3B0aW9ucyh0ZXN0KQpAQCAtMjQ0LDExICsyNDUsMTEgQEAgY2xh
c3MgVGVzdEV4cGVjdGF0aW9uc0ZpbGU6CiAKICAgICBOb3RlczoKICAgICAgIC1BIHRlc3QgY2Fu
bm90IGJlIGJvdGggU0xPVyBhbmQgVElNRU9VVAotICAgICAgLUEgdGVzdCBzaG91bGQgb25seSBi
ZSBvbmUgb2YgSU1BR0UsIFRFWFQsIElNQUdFK1RFWFQsIG9yIEZBSUwuIEZBSUwgaXMKLSAgICAg
ICBhIG1pZ3JhdG9yeSBzdGF0ZSB0aGF0IGN1cnJlbnRseSBtZWFucyBlaXRoZXIgSU1BR0UsIFRF
WFQsIG9yCi0gICAgICAgSU1BR0UrVEVYVC4gT25jZSB3ZSBoYXZlIGZpbmlzaGVkIG1pZ3JhdGlu
ZyB0aGUgZXhwZWN0YXRpb25zLCB3ZSB3aWxsCi0gICAgICAgY2hhbmdlIEZBSUwgdG8gaGF2ZSB0
aGUgbWVhbmluZyBvZiBJTUFHRStURVhUIGFuZCByZW1vdmUgdGhlIElNQUdFK1RFWFQKLSAgICAg
ICBpZGVudGlmaWVyLgorICAgICAgLUEgdGVzdCBzaG91bGQgb25seSBiZSBvbmUgb2YgSU1BR0Us
IFRFWFQsIElNQUdFK1RFWFQsIEFVRElPLCBvciBGQUlMLgorICAgICAgIEZBSUwgaXMgYSBsZWdh
Y3kgdmFsdWUgdGhhdCBjdXJyZW50bHkgbWVhbnMgZWl0aGVyIElNQUdFLAorICAgICAgIFRFWFQs
IG9yIElNQUdFK1RFWFQuIE9uY2Ugd2UgaGF2ZSBmaW5pc2hlZCBtaWdyYXRpbmcgdGhlIGV4cGVj
dGF0aW9ucywKKyAgICAgICB3ZSBzaG91bGQgY2hhbmdlIEZBSUwgdG8gaGF2ZSB0aGUgbWVhbmlu
ZyBvZiBJTUFHRStURVhUIGFuZCByZW1vdmUgdGhlCisgICAgICAgSU1BR0UrVEVYVCBpZGVudGlm
aWVyLgogICAgICAgLUEgdGVzdCBjYW4gYmUgaW5jbHVkZWQgdHdpY2UsIGJ1dCBub3QgdmlhIHRo
ZSBzYW1lIHBhdGguCiAgICAgICAtSWYgYSB0ZXN0IGlzIGluY2x1ZGVkIHR3aWNlLCB0aGVuIHRo
ZSBtb3JlIHByZWNpc2UgcGF0aCB3aW5zLgogICAgICAgLUNSQVNIIHRlc3RzIGNhbm5vdCBiZSBX
T05URklYCkBAIC0yNTksNiArMjYwLDcgQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9uc0ZpbGU6CiAg
ICAgICAgICAgICAgICAgICAgICd0ZXh0JzogVEVYVCwKICAgICAgICAgICAgICAgICAgICAgJ2lt
YWdlJzogSU1BR0UsCiAgICAgICAgICAgICAgICAgICAgICdpbWFnZSt0ZXh0JzogSU1BR0VfUExV
U19URVhULAorICAgICAgICAgICAgICAgICAgICAnYXVkaW8nOiBBVURJTywKICAgICAgICAgICAg
ICAgICAgICAgJ3RpbWVvdXQnOiBUSU1FT1VULAogICAgICAgICAgICAgICAgICAgICAnY3Jhc2gn
OiBDUkFTSCwKICAgICAgICAgICAgICAgICAgICAgJ21pc3NpbmcnOiBNSVNTSU5HfQpAQCAtMjcx
LDYgKzI3Myw3IEBAIGNsYXNzIFRlc3RFeHBlY3RhdGlvbnNGaWxlOgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBJTUFHRTogKCdpbWFnZSBtaXNtYXRjaCcsICdpbWFnZSBtaXNtYXRj
aCcpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTUFHRV9QTFVTX1RFWFQ6ICgn
aW1hZ2UgYW5kIHRleHQgbWlzbWF0Y2gnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnaW1hZ2UgYW5kIHRleHQgbWlzbWF0Y2gnKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQVVESU86ICgnYXVkaW8gbWlzbWF0Y2gnLCAnYXVkaW8g
bWlzbWF0Y2gnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1JBU0g6ICgnRHVt
cFJlbmRlclRyZWUgY3Jhc2gnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICdEdW1wUmVuZGVyVHJlZSBjcmFzaGVzJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFRJTUVPVVQ6ICgndGVzdCB0aW1lZCBvdXQnLCAndGVzdHMgdGltZWQgb3V0JyksCkBA
IC0yNzgsNyArMjgxLDcgQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9uc0ZpbGU6CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbm8gZXhwZWN0ZWQgcmVzdWx0cyBmb3Vu
ZCcpfQogCiAgICAgRVhQRUNUQVRJT05fT1JERVIgPSAoUEFTUywgQ1JBU0gsIFRJTUVPVVQsIE1J
U1NJTkcsIElNQUdFX1BMVVNfVEVYVCwKLSAgICAgICBURVhULCBJTUFHRSwgRkFJTCwgU0tJUCkK
KyAgICAgICBURVhULCBJTUFHRSwgQVVESU8sIEZBSUwsIFNLSVApCiAKICAgICBCVUlMRF9UWVBF
UyA9ICgnZGVidWcnLCAncmVsZWFzZScpCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZmFpbHVyZXMucHkgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2ZhaWx1
cmVzLnB5CmluZGV4IDFmYWQ3NzI0NmI4NWU2MmQwMGYzNWEwNWZkMmNjNjliMjNlNDk2ZjIuLmYx
MjdjMmJiZTM0ODFiMmUzNDE5MzU3ODNhMjJhNjkwNjhlYjViOTggMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZmFpbHVy
ZXMucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3Bh
Y2thZ2UvdGVzdF9mYWlsdXJlcy5weQpAQCAtNTQsNyArNTQsOCBAQCBkZWYgZGV0ZXJtaW5lX3Jl
c3VsdF90eXBlKGZhaWx1cmVfbGlzdCk6CiAgICAgICAgIHJldHVybiB0ZXN0X2V4cGVjdGF0aW9u
cy5USU1FT1VUCiAgICAgZWxpZiAoRmFpbHVyZU1pc3NpbmdSZXN1bHQgaW4gZmFpbHVyZV90eXBl
cyBvcgogICAgICAgICAgIEZhaWx1cmVNaXNzaW5nSW1hZ2UgaW4gZmFpbHVyZV90eXBlcyBvcgot
ICAgICAgICAgIEZhaWx1cmVNaXNzaW5nSW1hZ2VIYXNoIGluIGZhaWx1cmVfdHlwZXMpOgorICAg
ICAgICAgIEZhaWx1cmVNaXNzaW5nSW1hZ2VIYXNoIGluIGZhaWx1cmVfdHlwZXMgb3IKKyAgICAg
ICAgICBGYWlsdXJlTWlzc2luZ0F1ZGlvIGluIGZhaWx1cmVfdHlwZXMpOgogICAgICAgICByZXR1
cm4gdGVzdF9leHBlY3RhdGlvbnMuTUlTU0lORwogICAgIGVsc2U6CiAgICAgICAgIGlzX3RleHRf
ZmFpbHVyZSA9IEZhaWx1cmVUZXh0TWlzbWF0Y2ggaW4gZmFpbHVyZV90eXBlcwpAQCAtNjIsMTIg
KzYzLDE1IEBAIGRlZiBkZXRlcm1pbmVfcmVzdWx0X3R5cGUoZmFpbHVyZV9saXN0KToKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBGYWlsdXJlSW1hZ2VIYXNoTWlzbWF0Y2ggaW4gZmFpbHVy
ZV90eXBlcykKICAgICAgICAgaXNfcmVmdGVzdF9mYWlsdXJlID0gKEZhaWx1cmVSZWZ0ZXN0TWlz
bWF0Y2ggaW4gZmFpbHVyZV90eXBlcyBvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RmFpbHVyZVJlZnRlc3RNaXNtYXRjaERpZE5vdE9jY3VyIGluIGZhaWx1cmVfdHlwZXMpCisgICAg
ICAgIGlzX2F1ZGlvX2ZhaWx1cmUgPSAoRmFpbHVyZUF1ZGlvTWlzbWF0Y2ggaW4gZmFpbHVyZV90
eXBlcykKICAgICAgICAgaWYgaXNfdGV4dF9mYWlsdXJlIGFuZCBpc19pbWFnZV9mYWlsdXJlOgog
ICAgICAgICAgICAgcmV0dXJuIHRlc3RfZXhwZWN0YXRpb25zLklNQUdFX1BMVVNfVEVYVAogICAg
ICAgICBlbGlmIGlzX3RleHRfZmFpbHVyZToKICAgICAgICAgICAgIHJldHVybiB0ZXN0X2V4cGVj
dGF0aW9ucy5URVhUCiAgICAgICAgIGVsaWYgaXNfaW1hZ2VfZmFpbHVyZSBvciBpc19yZWZ0ZXN0
X2ZhaWx1cmU6CiAgICAgICAgICAgICByZXR1cm4gdGVzdF9leHBlY3RhdGlvbnMuSU1BR0UKKyAg
ICAgICAgZWxpZiBpc19hdWRpb19mYWlsdXJlOgorICAgICAgICAgICAgcmV0dXJuIHRlc3RfZXhw
ZWN0YXRpb25zLkFVRElPCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVy
cm9yKCJ1bmNsYXNzaWZpYWJsZSBzZXQgb2YgZmFpbHVyZXM6ICIKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKyBzdHIoZmFpbHVyZV90eXBlcykpCkBAIC0zMzEsNiArMzM1LDI4IEBAIGNs
YXNzIEZhaWx1cmVSZWZ0ZXN0TWlzbWF0Y2hEaWROb3RPY2N1cihDb21wYXJpc29uVGVzdEZhaWx1
cmUpOgogICAgICAgICByZXR1cm4gJyAnLmpvaW4obGlua3MpCiAKIAorY2xhc3MgRmFpbHVyZU1p
c3NpbmdBdWRpbyhDb21wYXJpc29uVGVzdEZhaWx1cmUpOgorICAgICIiIkFjdHVhbCByZXN1bHQg
aW1hZ2Ugd2FzIG1pc3NpbmcuIiIiCisgICAgT1VUX0ZJTEVOQU1FUyA9ICgiLWFjdHVhbC53YXYi
LCkKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgbWVzc2FnZSgpOgorICAgICAgICByZXR1
cm4gIk5vIGV4cGVjdGVkIGF1ZGlvIGZvdW5kIgorCisgICAgZGVmIHJlc3VsdF9odG1sX291dHB1
dChzZWxmLCBmaWxlbmFtZSk6CisgICAgICAgIHJldHVybiAoIjxzdHJvbmc+JXM8L3N0cm9uZz4i
ICUgc2VsZi5tZXNzYWdlKCkgKworICAgICAgICAgICAgICAgIHNlbGYub3V0cHV0X2xpbmtzKGZp
bGVuYW1lLCBzZWxmLk9VVF9GSUxFTkFNRVMpKQorCisKK2NsYXNzIEZhaWx1cmVBdWRpb01pc21h
dGNoKENvbXBhcmlzb25UZXN0RmFpbHVyZSk6CisgICAgIiIiQXVkaW8gZmlsZXMgZGlkbid0IG1h
dGNoLiIiIgorICAgIE9VVF9GSUxFTkFNRVMgPSAoIi1hY3R1YWwud2F2IiwgIi1leHBlY3RlZC53
YXYiKQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBtZXNzYWdlKCk6CisgICAgICAgIHJl
dHVybiAiQXVkaW8gbWlzbWF0Y2giCisKKwogIyBDb252ZW5pZW50IGNvbGxlY3Rpb24gb2YgYWxs
IGZhaWx1cmUgY2xhc3NlcyBmb3IgYW55dGhpbmcgdGhhdCBtaWdodAogIyBuZWVkIHRvIGVudW1l
cmF0ZSBvdmVyIHRoZW0gYWxsLgogQUxMX0ZBSUxVUkVfQ0xBU1NFUyA9IChGYWlsdXJlVGltZW91
dCwgRmFpbHVyZUNyYXNoLCBGYWlsdXJlTWlzc2luZ1Jlc3VsdCwKZGlmZiAtLWdpdCBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfcmVzdWx0
X3dyaXRlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9w
YWNrYWdlL3Rlc3RfcmVzdWx0X3dyaXRlci5weQppbmRleCBlMjA5NTAzMGZlODQwNjljNGE4MzVm
N2JjMjIwZDZkMmQwOTNhMjkzLi41YTk1YTMxODk2NDc1ZTJlZWQ0NzJiODM2NzI2ZTc4MDU2ODk1
MGQ2IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlv
dXRfcGFja2FnZS90ZXN0X3Jlc3VsdF93cml0ZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9yZXN1bHRfd3JpdGVyLnB5CkBA
IC02Myw2ICs2MywxMCBAQCBkZWYgd3JpdGVfdGVzdF9yZXN1bHQocG9ydCwgcm9vdF9vdXRwdXRf
ZGlyLCBmaWxlbmFtZSwgZHJpdmVyX291dHB1dCwKICAgICAgICAgICAgIGlmIG5vdCBpbWFnZXNf
YXJlX2RpZmZlcmVudDoKICAgICAgICAgICAgICAgICBjaGVja3N1bXNfbWlzbWF0Y2hfYnV0X2lt
YWdlc19hcmVfc2FtZSA9IFRydWUKICAgICAgICAgICAgICAgICBpbWFnZWhhc2hfbWlzbWF0Y2hf
ZmFpbHVyZSA9IGZhaWx1cmUKKyAgICAgICAgZWxpZiBpc2luc3RhbmNlKGZhaWx1cmUsIHRlc3Rf
ZmFpbHVyZXMuRmFpbHVyZUF1ZGlvTWlzbWF0Y2gpOgorICAgICAgICAgICAgd3JpdGVyLndyaXRl
X2F1ZGlvX2ZpbGVzKGRyaXZlcl9vdXRwdXQuYXVkaW8sIGV4cGVjdGVkX2RyaXZlcl9vdXRwdXQu
YXVkaW8pCisgICAgICAgIGVsaWYgaXNpbnN0YW5jZShmYWlsdXJlLCB0ZXN0X2ZhaWx1cmVzLkZh
aWx1cmVNaXNzaW5nQXVkaW8pOgorICAgICAgICAgICAgd3JpdGVyLndyaXRlX2F1ZGlvX2ZpbGVz
KGRyaXZlcl9vdXRwdXQuYXVkaW8sIGV4cGVjdGVkX2F1ZGlvPU5vbmUpCiAgICAgICAgIGVsaWYg
aXNpbnN0YW5jZShmYWlsdXJlLCB0ZXN0X2ZhaWx1cmVzLkZhaWx1cmVDcmFzaCk6CiAgICAgICAg
ICAgICBpZiBmYWlsdXJlLnJlZmVyZW5jZV9maWxlbmFtZToKICAgICAgICAgICAgICAgICB3cml0
ZXIud3JpdGVfY3Jhc2hfcmVwb3J0KGV4cGVjdGVkX2RyaXZlcl9vdXRwdXQuZXJyb3IpCkBAIC0x
ODcsNiArMTkxLDkgQEAgY2xhc3MgVGVzdFJlc3VsdFdyaXRlcihvYmplY3QpOgogICAgICAgICBw
cmV0dHlfcGF0Y2hfZmlsZW5hbWUgPSBzZWxmLm91dHB1dF9maWxlbmFtZShzZWxmLkZJTEVOQU1F
X1NVRkZJWF9QUkVUVFlfUEFUQ0gpCiAgICAgICAgIGZzLndyaXRlX2JpbmFyeV9maWxlKHByZXR0
eV9wYXRjaF9maWxlbmFtZSwgcHJldHR5X3BhdGNoKQogCisgICAgZGVmIHdyaXRlX2F1ZGlvX2Zp
bGVzKHNlbGYsIGFjdHVhbF9hdWRpbywgZXhwZWN0ZWRfYXVkaW8pOgorICAgICAgICBzZWxmLndy
aXRlX291dHB1dF9maWxlcygnLndhdicsIGFjdHVhbF9hdWRpbywgZXhwZWN0ZWRfYXVkaW8pCisK
ICAgICBkZWYgd3JpdGVfaW1hZ2VfZmlsZXMoc2VsZiwgYWN0dWFsX2ltYWdlLCBleHBlY3RlZF9p
bWFnZSk6CiAgICAgICAgIHNlbGYud3JpdGVfb3V0cHV0X2ZpbGVzKCcucG5nJywgYWN0dWFsX2lt
YWdlLCBleHBlY3RlZF9pbWFnZSkKIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9iYXNlLnB5CmluZGV4IGMyMDQ4NmM4MDZiZTJmMzg0ZmY1ZDg0ZmQ1MzE2
Mzk2YTNlZjljZjYuLjAwNjRjYzUwZmRlNmQ2NzMwMjRhNWFkOTFhNmE5MmU3NTgwZWM3MjMgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5w
eQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkK
QEAgLTIwNiw2ICsyMDYsMTAgQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAgICAgICBpbnRlcmZh
Y2Ugc28gdGhhdCBpdCBjYW4gYmUgb3ZlcnJpZGVuIGZvciB0ZXN0aW5nIHB1cnBvc2VzLiIiIgog
ICAgICAgICByZXR1cm4gZXhwZWN0ZWRfdGV4dCAhPSBhY3R1YWxfdGV4dAogCisgICAgZGVmIGNv
bXBhcmVfYXVkaW8oc2VsZiwgZXhwZWN0ZWRfYXVkaW8sIGFjdHVhbF9hdWRpbyk6CisgICAgICAg
ICIiIlJldHVybiB3aGV0aGVyIHRoZSB0d28gYXVkaW8gZmlsZXMgYXJlICpub3QqIGVxdWFsLiIi
IgorICAgICAgICByZXR1cm4gZXhwZWN0ZWRfYXVkaW8gIT0gYWN0dWFsX2F1ZGlvCisKICAgICBk
ZWYgZGlmZl9pbWFnZShzZWxmLCBleHBlY3RlZF9jb250ZW50cywgYWN0dWFsX2NvbnRlbnRzLAog
ICAgICAgICAgICAgICAgICAgIGRpZmZfZmlsZW5hbWU9Tm9uZSwgdG9sZXJhbmNlPTApOgogICAg
ICAgICAiIiJDb21wYXJlIHR3byBpbWFnZXMgYW5kIHByb2R1Y2UgYSBkZWx0YSBpbWFnZSBmaWxl
LgpAQCAtMzUxLDYgKzM1NSwxMiBAQCBjbGFzcyBQb3J0KG9iamVjdCk6CiAgICAgICAgICAgICBy
ZXR1cm4gTm9uZQogICAgICAgICByZXR1cm4gc2VsZi5fZmlsZXN5c3RlbS5yZWFkX2JpbmFyeV9m
aWxlKHBhdGgpCiAKKyAgICBkZWYgZXhwZWN0ZWRfYXVkaW8oc2VsZiwgdGVzdCk6CisgICAgICAg
IHBhdGggPSBzZWxmLmV4cGVjdGVkX2ZpbGVuYW1lKHRlc3QsICcud2F2JykKKyAgICAgICAgaWYg
bm90IHNlbGYucGF0aF9leGlzdHMocGF0aCk6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAg
ICAgICByZXR1cm4gc2VsZi5fZmlsZXN5c3RlbS5yZWFkX2JpbmFyeV9maWxlKHBhdGgpCisKICAg
ICBkZWYgZXhwZWN0ZWRfdGV4dChzZWxmLCB0ZXN0KToKICAgICAgICAgIiIiUmV0dXJucyB0aGUg
dGV4dCBvdXRwdXQgd2UgZXhwZWN0IHRoZSB0ZXN0IHRvIHByb2R1Y2UuCiAgICAgICAgIEVuZC1v
Zi1saW5lIGNoYXJhY3RlcnMgYXJlIG5vcm1hbGl6ZWQgdG8gJ1xuJy4iIiIKQEAgLTg2OCw3ICs4
NzgsOCBAQCBjbGFzcyBEcml2ZXJPdXRwdXQob2JqZWN0KToKICAgICAiIiJHcm91cHMgaW5mb3Jt
YXRpb24gYWJvdXQgYSBvdXRwdXQgZnJvbSBkcml2ZXIgZm9yIGVhc3kgcGFzc2luZyBvZiBkYXRh
LiIiIgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRleHQsIGltYWdlLCBpbWFnZV9oYXNoLAot
ICAgICAgICAgICAgICAgICBjcmFzaD1GYWxzZSwgdGVzdF90aW1lPU5vbmUsIHRpbWVvdXQ9RmFs
c2UsIGVycm9yPScnKToKKyAgICAgICAgICAgICAgICAgY3Jhc2g9RmFsc2UsIHRlc3RfdGltZT1O
b25lLCB0aW1lb3V0PUZhbHNlLCBlcnJvcj0nJywKKyAgICAgICAgICAgICAgICAgYXVkaW89Tm9u
ZSk6CiAgICAgICAgICIiIkluaXRpYWxpemVzIGEgVGVzdE91dHB1dCBvYmplY3QuCiAKICAgICAg
ICAgQXJnczoKQEAgLTg3OSw2ICs4OTAsNyBAQCBjbGFzcyBEcml2ZXJPdXRwdXQob2JqZWN0KToK
ICAgICAgICAgICB0ZXN0X3RpbWU6IGEgdGltZSB3aGljaCB0aGUgdGVzdCBoYXMgdGFrZW4KICAg
ICAgICAgICB0aW1lb3V0OiBhIGJvb2xlYW4gaW5kaWNhdGluZyB3aGVodGVyIHRoZSB0ZXN0IHRp
bWVkIG91dAogICAgICAgICAgIGVycm9yOiBhbnkgdW5leHBlY3RlZCBvciBhZGRpdGlvbmFsIChv
ciBlcnJvcikgdGV4dCBvdXRwdXQKKyAgICAgICAgICBhdWRpbzogY29udGVudHMgb2YgYW4gYXVk
aW8gc3RyZWFtLCBpZiBhbnkgKGluIFdBViBmb3JtYXQpCiAgICAgICAgICIiIgogICAgICAgICBz
ZWxmLnRleHQgPSB0ZXh0CiAgICAgICAgIHNlbGYuaW1hZ2UgPSBpbWFnZQpAQCAtODg3LDYgKzg5
OSw3IEBAIGNsYXNzIERyaXZlck91dHB1dChvYmplY3QpOgogICAgICAgICBzZWxmLnRlc3RfdGlt
ZSA9IHRlc3RfdGltZQogICAgICAgICBzZWxmLnRpbWVvdXQgPSB0aW1lb3V0CiAgICAgICAgIHNl
bGYuZXJyb3IgPSBlcnJvcgorICAgICAgICBzZWxmLmF1ZGlvID0gYXVkaW8KIAogCiBjbGFzcyBE
cml2ZXI6CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L21vY2tfZHJ0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9tb2NrX2RydC5weQppbmRleCAxMTQ3ODQ2ZDYwOTUwODQ0YjU1M2MwZWYwMzcwMTJjZGFjNjFm
NDhkLi43N2ExMTA3MGM1MjQyMGJmYjYxMjZlMmYxMzEzNGFkNWVkNDYwMTJjIDEwMDY0NAotLS0g
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L21vY2tfZHJ0LnB5Cisr
KyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbW9ja19kcnQucHkK
QEAgLTMyLDYgKzMyLDcgQEAgVGhpcyBpcyBhbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUG9ydCBp
bnRlcmZhY2UgdGhhdCBvdmVycmlkZXMgb3RoZXIKIHBvcnRzIGFuZCBjaGFuZ2VzIHRoZSBEcml2
ZXIgYmluYXJ5IHRvICJNb2NrRFJUIi4KICIiIgogCitpbXBvcnQgYmFzZTY0CiBpbXBvcnQgbG9n
Z2luZwogaW1wb3J0IG9wdHBhcnNlCiBpbXBvcnQgb3MKQEAgLTIwNiwxNSArMjA3LDIzIEBAIGNs
YXNzIE1vY2tEUlQob2JqZWN0KToKICAgICAgICAgICAgIHRlc3RfcGF0aCA9IHRlc3RfaW5wdXQu
dXJpCiAKICAgICAgICAgYWN0dWFsX3RleHQgPSBwb3J0LmV4cGVjdGVkX3RleHQodGVzdF9wYXRo
KQorICAgICAgICBhY3R1YWxfYXVkaW8gPSBwb3J0LmV4cGVjdGVkX2F1ZGlvKHRlc3RfcGF0aCkK
ICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5waXhlbF90ZXN0cyBhbmQgdGVzdF9pbnB1dC5jaGVj
a3N1bToKICAgICAgICAgICAgIGFjdHVhbF9jaGVja3N1bSA9IHBvcnQuZXhwZWN0ZWRfY2hlY2tz
dW0odGVzdF9wYXRoKQogICAgICAgICAgICAgYWN0dWFsX2ltYWdlID0gcG9ydC5leHBlY3RlZF9p
bWFnZSh0ZXN0X3BhdGgpCiAKLSAgICAgICAgc2VsZi5fc3Rkb3V0LndyaXRlKCdDb250ZW50LVR5
cGU6IHRleHQvcGxhaW5cbicpCisgICAgICAgIGlmIEZhbHNlIGFuZCBhY3R1YWxfYXVkaW86Cisg
ICAgICAgICAgICBzZWxmLl9zdGRvdXQud3JpdGUoJ0NvbnRlbnQtVHlwZTogYXVkaW8vd2F2XG4n
KQorICAgICAgICAgICAgc2VsZi5fc3Rkb3V0LndyaXRlKCdDb250ZW50LVRyYW5zZmVyLUVuY29k
aW5nOiBiYXNlNjRcbicpCisgICAgICAgICAgICBvdXRwdXQgPSBiYXNlNjQuYjY0ZW5jb2RlKGFj
dHVhbF9hdWRpbykKKyAgICAgICAgICAgIHNlbGYuX3N0ZG91dC53cml0ZSgnQ29udGVudC1MZW5n
dGg6ICVzXG4nICUgbGVuKG91dHB1dCkpCisgICAgICAgICAgICBzZWxmLl9zdGRvdXQud3JpdGUo
b3V0cHV0KQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5fc3Rkb3V0LndyaXRlKCdD
b250ZW50LVR5cGU6IHRleHQvcGxhaW5cbicpCisgICAgICAgICAgICAjIEZJWE1FOiBOb3RlIHRo
YXQgd2UgZG9uJ3QgZW5zdXJlIHRoZXJlIGlzIGEgdHJhaWxpbmcgbmV3bGluZSEKKyAgICAgICAg
ICAgICMgVGhpcyBtaXJyb3JzIGFjdHVhbCAoTWFjKSBEUlQgYmVoYXZpb3IgYnV0IGlzIGEgYnVn
LgorICAgICAgICAgICAgc2VsZi5fc3Rkb3V0LndyaXRlKGFjdHVhbF90ZXh0KQogCi0gICAgICAg
ICMgRklYTUU6IE5vdGUgdGhhdCB3ZSBkb24ndCBlbnN1cmUgdGhlcmUgaXMgYSB0cmFpbGluZyBu
ZXdsaW5lIQotICAgICAgICAjIFRoaXMgbWlycm9ycyBhY3R1YWwgKE1hYykgRFJUIGJlaGF2aW9y
IGJ1dCBpcyBhIGJ1Zy4KLSAgICAgICAgc2VsZi5fc3Rkb3V0LndyaXRlKGFjdHVhbF90ZXh0KQog
ICAgICAgICBzZWxmLl9zdGRvdXQud3JpdGUoJyNFT0ZcbicpCiAKICAgICAgICAgaWYgc2VsZi5f
b3B0aW9ucy5waXhlbF90ZXN0cyBhbmQgdGVzdF9pbnB1dC5jaGVja3N1bToKQEAgLTIyMyw3ICsy
MzIsNyBAQCBjbGFzcyBNb2NrRFJUKG9iamVjdCk6CiAgICAgICAgICAgICBzZWxmLl9zdGRvdXQu
d3JpdGUoJ0V4cGVjdGVkSGFzaDogJXNcbicgJSB0ZXN0X2lucHV0LmNoZWNrc3VtKQogICAgICAg
ICAgICAgaWYgYWN0dWFsX2NoZWNrc3VtICE9IHRlc3RfaW5wdXQuY2hlY2tzdW06CiAgICAgICAg
ICAgICAgICAgc2VsZi5fc3Rkb3V0LndyaXRlKCdDb250ZW50LVR5cGU6IGltYWdlL3BuZ1xuJykK
LSAgICAgICAgICAgICAgICBzZWxmLl9zdGRvdXQud3JpdGUoJ0NvbnRlbnQtTGVuZ3RoOiAlc1xu
XG4nICUgbGVuKGFjdHVhbF9pbWFnZSkpCisgICAgICAgICAgICAgICAgc2VsZi5fc3Rkb3V0Lndy
aXRlKCdDb250ZW50LUxlbmd0aDogJXNcbicgJSBsZW4oYWN0dWFsX2ltYWdlKSkKICAgICAgICAg
ICAgICAgICBzZWxmLl9zdGRvdXQud3JpdGUoYWN0dWFsX2ltYWdlKQogICAgICAgICBzZWxmLl9z
dGRvdXQud3JpdGUoJyNFT0ZcbicpCiAgICAgICAgIHNlbGYuX3N0ZG91dC5mbHVzaCgpCmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3QucHkg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3QucHkKaW5kZXgg
MzBiNDMzZWU3MzMwODM2NjZjNzk0OGFlZDBkMmJmYmMzYTlmMjc2ZC4uYzMxYWMxODA2YTZkY2Mw
NzZmMTI4MTgyNTU1Njk2Mzk5YWQxOTE3MiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdC5weQpAQCAtMzAsNiArMzAsNyBAQAogIiIiRHVtbXkg
UG9ydCBpbXBsZW1lbnRhdGlvbiB1c2VkIGZvciB0ZXN0aW5nLiIiIgogZnJvbSBfX2Z1dHVyZV9f
IGltcG9ydCB3aXRoX3N0YXRlbWVudAogCitpbXBvcnQgYmFzZTY0CiBpbXBvcnQgdGltZQogCiBm
cm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0IGZpbGVzeXN0ZW1fbW9jawpAQCAtNjYs
NiArNjcsOCBAQCBjbGFzcyBUZXN0SW5zdGFuY2U6CiAgICAgICAgIHNlbGYuZXhwZWN0ZWRfY2hl
Y2tzdW0gPSBzZWxmLmFjdHVhbF9jaGVja3N1bQogICAgICAgICBzZWxmLmV4cGVjdGVkX2ltYWdl
ID0gc2VsZi5hY3R1YWxfaW1hZ2UKIAorICAgICAgICBzZWxmLmFjdHVhbF9hdWRpbyA9IE5vbmUK
KyAgICAgICAgc2VsZi5leHBlY3RlZF9hdWRpbyA9IE5vbmUKIAogIyBUaGlzIGlzIGFuIGluLW1l
bW9yeSBsaXN0IG9mIHRlc3RzLCB3aGF0IHdlIHdhbnQgdGhlbSB0byBwcm9kdWNlLCBhbmQKICMg
d2hhdCB3ZSB3YW50IHRvIGNsYWltIGFyZSB0aGUgZXhwZWN0ZWQgcmVzdWx0cy4KQEAgLTExMSwx
MSArMTE0LDIwIEBAIGRlZiB1bml0X3Rlc3RfbGlzdCgpOgogICAgIHRlc3RzLmFkZCgnZmFpbHVy
ZXMvZXhwZWN0ZWQvaW1hZ2VfY2hlY2tzdW0uaHRtbCcsCiAgICAgICAgICAgICAgIGFjdHVhbF9j
aGVja3N1bT0naW1hZ2VfY2hlY2tzdW1fZmFpbC1jaGVja3N1bScsCiAgICAgICAgICAgICAgIGFj
dHVhbF9pbWFnZT0naW1hZ2VfY2hlY2tzdW1fZmFpbC1wbmcnKQorICAgIHRlc3RzLmFkZCgnZmFp
bHVyZXMvZXhwZWN0ZWQvYXVkaW8uaHRtbCcsCisgICAgICAgICAgICAgIGFjdHVhbF9hdWRpbz1i
YXNlNjQuYjY0ZW5jb2RlKCdhdWRpb19mYWlsLXdhdicpLCBleHBlY3RlZF9hdWRpbz0nYXVkaW8t
d2F2JywKKyAgICAgICAgICAgICAgYWN0dWFsX3RleHQ9Tm9uZSwgZXhwZWN0ZWRfdGV4dD1Ob25l
LAorICAgICAgICAgICAgICBhY3R1YWxfaW1hZ2U9Tm9uZSwgZXhwZWN0ZWRfaW1hZ2U9Tm9uZSwK
KyAgICAgICAgICAgICAgYWN0dWFsX2NoZWNrc3VtPU5vbmUsIGV4cGVjdGVkX2NoZWNrc3VtPU5v
bmUpCiAgICAgdGVzdHMuYWRkKCdmYWlsdXJlcy9leHBlY3RlZC9rZXlib2FyZC5odG1sJywga2V5
Ym9hcmQ9VHJ1ZSkKICAgICB0ZXN0cy5hZGQoJ2ZhaWx1cmVzL2V4cGVjdGVkL21pc3NpbmdfY2hl
Y2suaHRtbCcsCiAgICAgICAgICAgICAgIGV4cGVjdGVkX2NoZWNrc3VtPU5vbmUsCiAgICAgICAg
ICAgICAgIGV4cGVjdGVkX2ltYWdlPU5vbmUpCiAgICAgdGVzdHMuYWRkKCdmYWlsdXJlcy9leHBl
Y3RlZC9taXNzaW5nX2ltYWdlLmh0bWwnLCBleHBlY3RlZF9pbWFnZT1Ob25lKQorICAgIHRlc3Rz
LmFkZCgnZmFpbHVyZXMvZXhwZWN0ZWQvbWlzc2luZ19hdWRpby5odG1sJywgZXhwZWN0ZWRfYXVk
aW89Tm9uZSwKKyAgICAgICAgICAgICAgYWN0dWFsX3RleHQ9Tm9uZSwgZXhwZWN0ZWRfdGV4dD1O
b25lLAorICAgICAgICAgICAgICBhY3R1YWxfaW1hZ2U9Tm9uZSwgZXhwZWN0ZWRfaW1hZ2U9Tm9u
ZSwKKyAgICAgICAgICAgICAgYWN0dWFsX2NoZWNrc3VtPU5vbmUsIGV4cGVjdGVkX2NoZWNrc3Vt
PU5vbmUpCiAgICAgdGVzdHMuYWRkKCdmYWlsdXJlcy9leHBlY3RlZC9taXNzaW5nX3RleHQuaHRt
bCcsIGV4cGVjdGVkX3RleHQ9Tm9uZSkKICAgICB0ZXN0cy5hZGQoJ2ZhaWx1cmVzL2V4cGVjdGVk
L25ld2xpbmVzX2xlYWRpbmcuaHRtbCcsCiAgICAgICAgICAgICAgIGV4cGVjdGVkX3RleHQ9Ilxu
Zm9vXG4iLCBhY3R1YWxfdGV4dD0iZm9vXG4iKQpAQCAtMTM0LDYgKzE0NiwxMSBAQCBkZWYgdW5p
dF90ZXN0X2xpc3QoKToKICAgICB0ZXN0cy5hZGQoJ2h0dHAvdGVzdHMvc3NsL3RleHQuaHRtbCcp
CiAgICAgdGVzdHMuYWRkKCdwYXNzZXMvZXJyb3IuaHRtbCcsIGVycm9yPSdzdHVmZiBnb2luZyB0
byBzdGRlcnInKQogICAgIHRlc3RzLmFkZCgncGFzc2VzL2ltYWdlLmh0bWwnKQorICAgIHRlc3Rz
LmFkZCgncGFzc2VzL2F1ZGlvLmh0bWwnLAorICAgICAgICAgICAgICBhY3R1YWxfYXVkaW89YmFz
ZTY0LmI2NGVuY29kZSgnYXVkaW8td2F2JyksIGV4cGVjdGVkX2F1ZGlvPSdhdWRpby13YXYnLAor
ICAgICAgICAgICAgICBhY3R1YWxfdGV4dD1Ob25lLCBleHBlY3RlZF90ZXh0PU5vbmUsCisgICAg
ICAgICAgICAgIGFjdHVhbF9pbWFnZT1Ob25lLCBleHBlY3RlZF9pbWFnZT1Ob25lLAorICAgICAg
ICAgICAgICBhY3R1YWxfY2hlY2tzdW09Tm9uZSwgZXhwZWN0ZWRfY2hlY2tzdW09Tm9uZSkKICAg
ICB0ZXN0cy5hZGQoJ3Bhc3Nlcy9wbGF0Zm9ybV9pbWFnZS5odG1sJykKICAgICB0ZXN0cy5hZGQo
J3Bhc3Nlcy9jaGVja3N1bV9pbl9pbWFnZS5odG1sJywKICAgICAgICAgICAgICAgZXhwZWN0ZWRf
Y2hlY2tzdW09Tm9uZSwKQEAgLTE4NCwyMCArMjAxLDI3IEBAIGRlZiB1bml0X3Rlc3RfZmlsZXN5
c3RlbShmaWxlcz1Ob25lKToKICAgICAgICAgYWRkX2ZpbGUoZmlsZXMsIHRlc3QsICcuaHRtbCcs
ICcnKQogICAgICAgICBpZiB0ZXN0LmlzX3JlZnRlc3Q6CiAgICAgICAgICAgICBjb250aW51ZQor
ICAgICAgICBpZiB0ZXN0LmFjdHVhbF9hdWRpbzoKKyAgICAgICAgICAgIGFkZF9maWxlKGZpbGVz
LCB0ZXN0LCAnLWV4cGVjdGVkLndhdicsIHRlc3QuZXhwZWN0ZWRfYXVkaW8pCisgICAgICAgICAg
ICBjb250aW51ZQorCiAgICAgICAgIGFkZF9maWxlKGZpbGVzLCB0ZXN0LCAnLWV4cGVjdGVkLnR4
dCcsIHRlc3QuZXhwZWN0ZWRfdGV4dCkKICAgICAgICAgYWRkX2ZpbGUoZmlsZXMsIHRlc3QsICct
ZXhwZWN0ZWQuY2hlY2tzdW0nLCB0ZXN0LmV4cGVjdGVkX2NoZWNrc3VtKQogICAgICAgICBhZGRf
ZmlsZShmaWxlcywgdGVzdCwgJy1leHBlY3RlZC5wbmcnLCB0ZXN0LmV4cGVjdGVkX2ltYWdlKQog
CisKICAgICAjIEFkZCB0aGUgdGVzdF9leHBlY3RhdGlvbnMgZmlsZS4KICAgICBmaWxlc1tMQVlP
VVRfVEVTVF9ESVIgKyAnL3BsYXRmb3JtL3Rlc3QvdGVzdF9leHBlY3RhdGlvbnMudHh0J10gPSAi
IiIKIFdPTlRGSVggOiBmYWlsdXJlcy9leHBlY3RlZC9jaGVja3N1bS5odG1sID0gSU1BR0UKIFdP
TlRGSVggOiBmYWlsdXJlcy9leHBlY3RlZC9jcmFzaC5odG1sID0gQ1JBU0gKIC8vIFRoaXMgb25l
IGFjdHVhbGx5IHBhc3NlcyBiZWNhdXNlIHRoZSBjaGVja3N1bXMgd2lsbCBtYXRjaC4KIFdPTlRG
SVggOiBmYWlsdXJlcy9leHBlY3RlZC9pbWFnZS5odG1sID0gUEFTUworV09OVEZJWCA6IGZhaWx1
cmVzL2V4cGVjdGVkL2F1ZGlvLmh0bWwgPSBBVURJTwogV09OVEZJWCA6IGZhaWx1cmVzL2V4cGVj
dGVkL2ltYWdlX2NoZWNrc3VtLmh0bWwgPSBJTUFHRQogV09OVEZJWCA6IGZhaWx1cmVzL2V4cGVj
dGVkL21pc21hdGNoLmh0bWwgPSBJTUFHRQogV09OVEZJWCA6IGZhaWx1cmVzL2V4cGVjdGVkL21p
c3NpbmdfY2hlY2suaHRtbCA9IE1JU1NJTkcgUEFTUwogV09OVEZJWCA6IGZhaWx1cmVzL2V4cGVj
dGVkL21pc3NpbmdfaW1hZ2UuaHRtbCA9IE1JU1NJTkcgUEFTUworV09OVEZJWCA6IGZhaWx1cmVz
L2V4cGVjdGVkL21pc3NpbmdfYXVkaW8uaHRtbCA9IE1JU1NJTkcgUEFTUwogV09OVEZJWCA6IGZh
aWx1cmVzL2V4cGVjdGVkL21pc3NpbmdfdGV4dC5odG1sID0gTUlTU0lORyBQQVNTCiBXT05URklY
IDogZmFpbHVyZXMvZXhwZWN0ZWQvbmV3bGluZXNfbGVhZGluZy5odG1sID0gVEVYVAogV09OVEZJ
WCA6IGZhaWx1cmVzL2V4cGVjdGVkL25ld2xpbmVzX3RyYWlsaW5nLmh0bWwgPSBURVhUCkBAIC00
MTIsMTAgKzQzNiwxNSBAQCBjbGFzcyBUZXN0RHJpdmVyKGJhc2UuRHJpdmVyKToKICAgICAgICAg
ICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2V4Y2VwdGlvbiBmcm9tICcgKyB0ZXN0X25hbWUpCiAgICAg
ICAgIGlmIHRlc3QuaGFuZzoKICAgICAgICAgICAgIHRpbWUuc2xlZXAoKGZsb2F0KHRlc3RfaW5w
dXQudGltZW91dCkgKiA0KSAvIDEwMDAuMCkKKworICAgICAgICBhdWRpbyA9IE5vbmUKKyAgICAg
ICAgaWYgdGVzdC5hY3R1YWxfYXVkaW86CisgICAgICAgICAgICBhdWRpbyA9IGJhc2U2NC5iNjRk
ZWNvZGUodGVzdC5hY3R1YWxfYXVkaW8pCiAgICAgICAgIHJldHVybiBiYXNlLkRyaXZlck91dHB1
dCh0ZXN0LmFjdHVhbF90ZXh0LCB0ZXN0LmFjdHVhbF9pbWFnZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRlc3QuYWN0dWFsX2NoZWNrc3VtLCB0ZXN0LmNyYXNoLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZS50aW1lKCkgLSBzdGFydF90aW1lLCB0ZXN0
LnRpbWVvdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0LmVycm9yKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdC5lcnJvciwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvKQogCiAgICAgZGVmIHN0YXJ0KHNlbGYpOgogICAg
ICAgICBwYXNzCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L3dlYmtpdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvd2Via2l0LnB5CmluZGV4IDA1MjI2MzE0OTQwY2U5ZTFmZDJhMmNiYTI4NWUyNWEyYzZmNzA4
YjIuLjk3NDIwMDU2ODZiYTQ1NGE1MjlmYzFhOTNmMGNiYWUwNTI0MzhlZTkgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5CisrKyBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5CkBAIC0z
MCw3ICszMCw3IEBACiAKICIiIldlYktpdCBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIFBvcnQgaW50
ZXJmYWNlLiIiIgogCi0KK2ltcG9ydCBiYXNlNjQKIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgb3Bl
cmF0b3IKIGltcG9ydCBvcwpAQCAtNDA2LDQ3ICs0MDYsMjQgQEAgY2xhc3MgV2ViS2l0RHJpdmVy
KGJhc2UuRHJpdmVyKToKICAgICAgICAgc3RhcnRfdGltZSA9IHRpbWUudGltZSgpCiAgICAgICAg
IHNlbGYuX3NlcnZlcl9wcm9jZXNzLndyaXRlKGNvbW1hbmQpCiAKLSAgICAgICAgaGF2ZV9zZWVu
X2NvbnRlbnRfdHlwZSA9IEZhbHNlCisgICAgICAgIG91dHB1dCA9IE5vbmUKICAgICAgICAgYWN0
dWFsX2ltYWdlX2hhc2ggPSBOb25lCi0gICAgICAgIG91dHB1dCA9IHN0cigpICAjIFVzZSBhIGJ5
dGUgYXJyYXkgZm9yIG91dHB1dCwgZXZlbiB0aG91Z2ggaXQgc2hvdWxkIGJlIFVURi04LgogICAg
ICAgICBpbWFnZSA9IHN0cigpCisgICAgICAgIGF1ZGlvID0gTm9uZQorICAgICAgICBkZWFkbGlu
ZSA9IHRpbWUudGltZSgpICsgaW50KGRyaXZlcl9pbnB1dC50aW1lb3V0KSAvIDEwMDAuMAogCi0g
ICAgICAgIHRpbWVvdXQgPSBpbnQoZHJpdmVyX2lucHV0LnRpbWVvdXQpIC8gMTAwMC4wCi0gICAg
ICAgIGRlYWRsaW5lID0gdGltZS50aW1lKCkgKyB0aW1lb3V0Ci0gICAgICAgIGxpbmUgPSBzZWxm
Ll9zZXJ2ZXJfcHJvY2Vzcy5yZWFkX2xpbmUodGltZW91dCkKLSAgICAgICAgd2hpbGUgKG5vdCBz
ZWxmLl9zZXJ2ZXJfcHJvY2Vzcy50aW1lZF9vdXQKLSAgICAgICAgICAgICAgIGFuZCBub3Qgc2Vs
Zi5fc2VydmVyX3Byb2Nlc3MuY3Jhc2hlZAotICAgICAgICAgICAgICAgYW5kIGxpbmUucnN0cmlw
KCkgIT0gIiNFT0YiKToKLSAgICAgICAgICAgIGlmIChsaW5lLnN0YXJ0c3dpdGgoJ0NvbnRlbnQt
VHlwZTonKSBhbmQgbm90Ci0gICAgICAgICAgICAgICAgaGF2ZV9zZWVuX2NvbnRlbnRfdHlwZSk6
Ci0gICAgICAgICAgICAgICAgaGF2ZV9zZWVuX2NvbnRlbnRfdHlwZSA9IFRydWUKLSAgICAgICAg
ICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgIyBOb3RlOiBUZXh0IG91dHB1dCBmcm9tIER1bXBS
ZW5kZXJUcmVlIGlzIGFsd2F5cyBVVEYtOC4KLSAgICAgICAgICAgICAgICAjIEhvd2V2ZXIsIHNv
bWUgdGVzdHMgKGUuZy4gd2ViYXJjaGl2ZXMpIHNwaXQgb3V0IGJpbmFyeQotICAgICAgICAgICAg
ICAgICMgZGF0YSBpbnN0ZWFkIG9mIHRleHQuICBTbyB0byBtYWtlIHRoaW5ncyBzaW1wbGUsIHdl
Ci0gICAgICAgICAgICAgICAgIyBhbHdheXMgdHJlYXQgdGhlIG91dHB1dCBhcyBiaW5hcnkuCi0g
ICAgICAgICAgICAgICAgb3V0cHV0ICs9IGxpbmUKLSAgICAgICAgICAgIGxpbmUgPSBzZWxmLl9z
ZXJ2ZXJfcHJvY2Vzcy5yZWFkX2xpbmUodGltZW91dCkKLSAgICAgICAgICAgIHRpbWVvdXQgPSBk
ZWFkbGluZSAtIHRpbWUudGltZSgpCisgICAgICAgICMgRmlyc3QgYmxvY2sgaXMgZWl0aGVyIHRl
eHQgb3IgYXVkaW8KKyAgICAgICAgYmxvY2sgPSBzZWxmLl9yZWFkX2Jsb2NrKGRlYWRsaW5lKQor
ICAgICAgICBpZiBibG9jay5jb250ZW50X3R5cGUgPT0gJ2F1ZGlvL3dhdic6CisgICAgICAgICAg
ICBhdWRpbyA9IGJsb2NrLmRlY29kZWRfY29udGVudAorICAgICAgICBlbHNlOgorICAgICAgICAg
ICAgb3V0cHV0ID0gYmxvY2suZGVjb2RlZF9jb250ZW50CiAKICAgICAgICAgIyBOb3cgcmVhZCBh
IHNlY29uZCBibG9jayBvZiB0ZXh0IGZvciB0aGUgb3B0aW9uYWwgaW1hZ2UgZGF0YQotICAgICAg
ICByZW1haW5pbmdfbGVuZ3RoID0gLTEKLSAgICAgICAgSEFTSF9IRUFERVIgPSAnQWN0dWFsSGFz
aDogJwotICAgICAgICBMRU5HVEhfSEVBREVSID0gJ0NvbnRlbnQtTGVuZ3RoOiAnCi0gICAgICAg
IGxpbmUgPSBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5yZWFkX2xpbmUodGltZW91dCkKLSAgICAgICAg
d2hpbGUgKG5vdCBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy50aW1lZF9vdXQKLSAgICAgICAgICAgICAg
IGFuZCBub3Qgc2VsZi5fc2VydmVyX3Byb2Nlc3MuY3Jhc2hlZAotICAgICAgICAgICAgICAgYW5k
IGxpbmUucnN0cmlwKCkgIT0gIiNFT0YiKToKLSAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0
aChIQVNIX0hFQURFUik6Ci0gICAgICAgICAgICAgICAgYWN0dWFsX2ltYWdlX2hhc2ggPSBsaW5l
W2xlbihIQVNIX0hFQURFUik6XS5zdHJpcCgpCi0gICAgICAgICAgICBlbGlmIGxpbmUuc3RhcnRz
d2l0aCgnQ29udGVudC1UeXBlOicpOgotICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAg
IGVsaWYgbGluZS5zdGFydHN3aXRoKExFTkdUSF9IRUFERVIpOgotICAgICAgICAgICAgICAgIHRp
bWVvdXQgPSBkZWFkbGluZSAtIHRpbWUudGltZSgpCi0gICAgICAgICAgICAgICAgY29udGVudF9s
ZW5ndGggPSBpbnQobGluZVtsZW4oTEVOR1RIX0hFQURFUik6XSkKLSAgICAgICAgICAgICAgICBp
bWFnZSA9IHNlbGYuX3NlcnZlcl9wcm9jZXNzLnJlYWQodGltZW91dCwgY29udGVudF9sZW5ndGgp
Ci0gICAgICAgICAgICB0aW1lb3V0ID0gZGVhZGxpbmUgLSB0aW1lLnRpbWUoKQotICAgICAgICAg
ICAgbGluZSA9IHNlbGYuX3NlcnZlcl9wcm9jZXNzLnJlYWRfbGluZSh0aW1lb3V0KQorICAgICAg
ICBibG9jayA9IHNlbGYuX3JlYWRfYmxvY2soZGVhZGxpbmUpCisgICAgICAgIGlmIGJsb2NrLmNv
bnRlbnQgYW5kIGJsb2NrLmNvbnRlbnRfdHlwZSA9PSAnaW1hZ2UvcG5nJzoKKyAgICAgICAgICAg
IGltYWdlID0gYmxvY2suZGVjb2RlZF9jb250ZW50CisgICAgICAgICAgICBhY3R1YWxfaW1hZ2Vf
aGFzaCA9IGJsb2NrLmNvbnRlbnRfaGFzaAogCiAgICAgICAgIGVycm9yX2xpbmVzID0gc2VsZi5f
c2VydmVyX3Byb2Nlc3MuZXJyb3Iuc3BsaXRsaW5lcygpCiAgICAgICAgICMgRklYTUU6IFRoaXMg
aXMgYSBoYWNrLiAgSXQgaXMgdW5jbGVhciB3aHkgc29tZXRpbWVzCkBAIC00NTgsMTMgKzQzNSw2
MiBAQCBjbGFzcyBXZWJLaXREcml2ZXIoYmFzZS5Ecml2ZXIpOgogICAgICAgICAjIEZJWE1FOiBU
aGlzIHNlZW1zIGxpa2UgdGhlIHdyb25nIHNlY3Rpb24gb2YgY29kZSB0byBiZSBkb2luZwogICAg
ICAgICAjIHRoaXMgcmVzZXQgaW4uCiAgICAgICAgIHNlbGYuX3NlcnZlcl9wcm9jZXNzLmVycm9y
ID0gIiIKKwogICAgICAgICByZXR1cm4gYmFzZS5Ecml2ZXJPdXRwdXQob3V0cHV0LCBpbWFnZSwg
YWN0dWFsX2ltYWdlX2hhc2gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxm
Ll9zZXJ2ZXJfcHJvY2Vzcy5jcmFzaGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdGltZS50aW1lKCkgLSBzdGFydF90aW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2VsZi5fc2VydmVyX3Byb2Nlc3MudGltZWRfb3V0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZXJyb3IpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
cnJvciwgYXVkaW8pCisKKyAgICBkZWYgX3JlYWRfYmxvY2soc2VsZiwgZGVhZGxpbmUpOgorICAg
ICAgICBMRU5HVEhfSEVBREVSID0gJ0NvbnRlbnQtTGVuZ3RoOiAnCisgICAgICAgIEhBU0hfSEVB
REVSID0gJ0FjdHVhbEhhc2g6ICcKKyAgICAgICAgVFlQRV9IRUFERVIgPSAnQ29udGVudC1UeXBl
OiAnCisgICAgICAgIEVOQ09ESU5HX0hFQURFUiA9ICdDb250ZW50LVRyYW5zZmVyLUVuY29kaW5n
OiAnCisgICAgICAgIGNvbnRlbnRfdHlwZSA9IE5vbmUKKyAgICAgICAgZW5jb2RpbmcgPSBOb25l
CisgICAgICAgIGNvbnRlbnRfaGFzaCA9IE5vbmUKKyAgICAgICAgY29udGVudF9sZW5ndGggPSBO
b25lCisKKyAgICAgICAgIyBDb250ZW50IGlzIHRyZWF0ZWQgYXMgYmluYXJ5IGRhdGEgZXZlbiB0
aG91Z2ggdGhlIHRleHQgb3V0cHV0CisgICAgICAgICMgaXMgdXN1YWxseSBVVEYtOC4KKyAgICAg
ICAgY29udGVudCA9ICcnCisgICAgICAgIHRpbWVvdXQgPSBkZWFkbGluZSAtIHRpbWUudGltZSgp
CisgICAgICAgIGxpbmUgPSBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5yZWFkX2xpbmUodGltZW91dCkK
KyAgICAgICAgd2hpbGUgKG5vdCBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy50aW1lZF9vdXQKKyAgICAg
ICAgICAgICAgIGFuZCBub3Qgc2VsZi5fc2VydmVyX3Byb2Nlc3MuY3Jhc2hlZAorICAgICAgICAg
ICAgICAgYW5kIGxpbmUucnN0cmlwKCkgIT0gIiNFT0YiKToKKyAgICAgICAgICAgIGlmIGxpbmUu
c3RhcnRzd2l0aChUWVBFX0hFQURFUikgYW5kIGNvbnRlbnRfdHlwZSBpcyBOb25lOgorICAgICAg
ICAgICAgICAgIGNvbnRlbnRfdHlwZSA9IGxpbmUuc3BsaXQoKVsxXQorICAgICAgICAgICAgZWxp
ZiBsaW5lLnN0YXJ0c3dpdGgoRU5DT0RJTkdfSEVBREVSKSBhbmQgZW5jb2RpbmcgaXMgTm9uZToK
KyAgICAgICAgICAgICAgICBlbmNvZGluZyA9IGxpbmUuc3BsaXQoKVsxXQorICAgICAgICAgICAg
ZWxpZiBsaW5lLnN0YXJ0c3dpdGgoTEVOR1RIX0hFQURFUikgYW5kIGNvbnRlbnRfbGVuZ3RoIGlz
IE5vbmU6CisgICAgICAgICAgICAgICAgdGltZW91dCA9IGRlYWRsaW5lIC0gdGltZS50aW1lKCkK
KyAgICAgICAgICAgICAgICBjb250ZW50X2xlbmd0aCA9IGludChsaW5lW2xlbihMRU5HVEhfSEVB
REVSKTpdKQorICAgICAgICAgICAgICAgICMgRklYTUU6IFRlY2huaWNhbGx5IHRoZXJlIHNob3Vs
ZCBwcm9iYWJseSBiZSBhbm90aGVyIGJsYW5rCisgICAgICAgICAgICAgICAgIyBsaW5lIGhlcmUs
IGJ1dCBEUlQgZG9lc24ndCB3cml0ZSBvbmUuCisgICAgICAgICAgICAgICAgY29udGVudCA9IHNl
bGYuX3NlcnZlcl9wcm9jZXNzLnJlYWQodGltZW91dCwgY29udGVudF9sZW5ndGgpCisgICAgICAg
ICAgICBlbGlmIGxpbmUuc3RhcnRzd2l0aChIQVNIX0hFQURFUik6CisgICAgICAgICAgICAgICAg
Y29udGVudF9oYXNoID0gbGluZS5zcGxpdCgpWzFdCisgICAgICAgICAgICBlbHNlOgorICAgICAg
ICAgICAgICAgIGNvbnRlbnQgKz0gbGluZQorICAgICAgICAgICAgbGluZSA9IHNlbGYuX3NlcnZl
cl9wcm9jZXNzLnJlYWRfbGluZSh0aW1lb3V0KQorICAgICAgICAgICAgdGltZW91dCA9IGRlYWRs
aW5lIC0gdGltZS50aW1lKCkKKyAgICAgICAgcmV0dXJuIENvbnRlbnRCbG9jayhjb250ZW50X3R5
cGUsIGVuY29kaW5nLCBjb250ZW50X2hhc2gsIGNvbnRlbnQpCiAKICAgICBkZWYgc3RvcChzZWxm
KToKICAgICAgICAgaWYgc2VsZi5fc2VydmVyX3Byb2Nlc3M6CiAgICAgICAgICAgICBzZWxmLl9z
ZXJ2ZXJfcHJvY2Vzcy5zdG9wKCkKICAgICAgICAgICAgIHNlbGYuX3NlcnZlcl9wcm9jZXNzID0g
Tm9uZQorCisKK2NsYXNzIENvbnRlbnRCbG9jayhvYmplY3QpOgorICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCBjb250ZW50X3R5cGUsIGVuY29kaW5nLCBjb250ZW50X2hhc2gsIGNvbnRlbnQpOgorICAg
ICAgICBzZWxmLmNvbnRlbnRfdHlwZSA9IGNvbnRlbnRfdHlwZQorICAgICAgICBzZWxmLmVuY29k
aW5nID0gZW5jb2RpbmcKKyAgICAgICAgc2VsZi5jb250ZW50X2hhc2ggPSBjb250ZW50X2hhc2gK
KyAgICAgICAgc2VsZi5jb250ZW50ID0gY29udGVudAorICAgICAgICBpZiBzZWxmLmVuY29kaW5n
ID09ICdiYXNlNjQnOgorICAgICAgICAgICAgc2VsZi5kZWNvZGVkX2NvbnRlbnQgPSBiYXNlNjQu
YjY0ZGVjb2RlKGNvbnRlbnQpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmRlY29k
ZWRfY29udGVudCA9IGNvbnRlbnQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88756</attachid>
            <date>2011-04-07 19:29:04 -0700</date>
            <delta_ts>2011-04-08 12:29:00 -0700</delta_ts>
            <desc>split into two patches</desc>
            <filename>bug-57987-20110407192903.patch</filename>
            <type>text/plain</type>
            <size>34622</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODMwOTcKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCBhMWJhZTQ2MDEyODdmN2U3ZGJjMThkMjMzZWMxZGVkMGRl
NmQzMDRjLi5lMDExZGVhOTY2YjMwMWE3YTNjZjg4OTVjMzkxOTlkNTg5NDYzZjljIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEg
QEAKKzIwMTEtMDQtMDcgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgbmV3LXJ1bi13ZWJr
aXQtdGVzdHM6IGltcGxlbWVudCBzdXBwb3J0IGZvciBhdWRpbyB0ZXN0cy4KKworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTc5ODcKKworICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2pzb25fbGF5b3V0
X3Jlc3VsdHNfZ2VuZXJhdG9yLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL2xheW91dF9wYWNrYWdlL3NpbmdsZV90ZXN0X3J1bm5lci5weToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2V4cGVjdGF0
aW9ucy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRf
cGFja2FnZS90ZXN0X2ZhaWx1cmVzLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfcmVzdWx0X3dyaXRlci5weToKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHk6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0LnB5OgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbW9ja19kcnQucHk6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXQucHk6CisKIDIwMTEtMDQt
MDYgIENocmlzIFJvZ2VycyAgPGNyb2dlcnNAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2pzb25fbGF5b3V0X3Jlc3VsdHNfZ2VuZXJhdG9y
LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2Uv
anNvbl9sYXlvdXRfcmVzdWx0c19nZW5lcmF0b3IucHkKaW5kZXggMTliMDJlODU2NjM3Yjc2MzU2
MDNmOGFhNjcxYzA3ZDM0YjBjYWU0OC4uZGJiMTZjMDNlMjYzMzM1MDk0MTIwZWNlYWU4YzcwNjdk
OGQ3ODBmMSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
bGF5b3V0X3BhY2thZ2UvanNvbl9sYXlvdXRfcmVzdWx0c19nZW5lcmF0b3IucHkKKysrIGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvanNvbl9sYXlv
dXRfcmVzdWx0c19nZW5lcmF0b3IucHkKQEAgLTUwLDYgKzUwLDcgQEAgY2xhc3MgSlNPTkxheW91
dFJlc3VsdHNHZW5lcmF0b3IoanNvbl9yZXN1bHRzX2dlbmVyYXRvci5KU09OUmVzdWx0c0dlbmVy
YXRvckJhc2UKICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9leHBlY3RhdGlvbnMuSU1BR0U6
ICJJIiwKICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9leHBlY3RhdGlvbnMuVEVYVDogIkYi
LAogICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2V4cGVjdGF0aW9ucy5NSVNTSU5HOiAiTyIs
CisgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfZXhwZWN0YXRpb25zLkFVRElPOiAiQSIsCiAg
ICAgICAgICAgICAgICAgICAgICAgIHRlc3RfZXhwZWN0YXRpb25zLklNQUdFX1BMVVNfVEVYVDog
IloifQogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBvcnQsIGJ1aWxkZXJfbmFtZSwgYnVpbGRf
bmFtZSwgYnVpbGRfbnVtYmVyLApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2Uvc2luZ2xlX3Rlc3RfcnVubmVyLnB5IGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2Uvc2luZ2xlX3Rlc3Rf
cnVubmVyLnB5CmluZGV4IGU2YmJmYjYzZjFjMmMxNjY4OGVkZDVlYzlmZTAxOTdhNDJhNzA4MjIu
LjgwZDY3YWI0MjE3NTgzYjEwMWZjMGZjY2Y3YWY5ZjU1NmY4ZTVmYWIgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3NpbmdsZV90
ZXN0X3J1bm5lci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9s
YXlvdXRfcGFja2FnZS9zaW5nbGVfdGVzdF9ydW5uZXIucHkKQEAgLTgyLDE2ICs4MiwxNyBAQCBj
bGFzcyBTaW5nbGVUZXN0UnVubmVyOgogICAgICAgICAgICAgIyBGb3IgZXhhbXBsZSwgaWYgJ2Zv
by5odG1sJyBoYXMgdHdvIGV4cGVjdGF0aW9uIGZpbGVzLCAnZm9vLWV4cGVjdGVkLmh0bWwnIGFu
ZAogICAgICAgICAgICAgIyAnZm9vLWV4cGVjdGVkLnR4dCcsIHdlIHNob3VsZCB3YXJuIHVzZXJz
LiBPbmUgdGVzdCBmaWxlIG11c3QgYmUgdXNlZCBleGNsdXNpdmVseQogICAgICAgICAgICAgIyBp
biBlaXRoZXIgbGF5b3V0IHRlc3RzIG9yIHJlZnRlc3RzLCBidXQgbm90IGluIGJvdGguCi0gICAg
ICAgICAgICBmb3Igc3VmZml4IGluIFsnLnR4dCcsICcuY2hlY2tzdW0nLCAnLnBuZyddOgorICAg
ICAgICAgICAgZm9yIHN1ZmZpeCBpbiAoJy50eHQnLCAnLmNoZWNrc3VtJywgJy5wbmcnLCAnLndh
dicpOgogICAgICAgICAgICAgICAgIGV4cGVjdGVkX2ZpbGVuYW1lID0gc2VsZi5fcG9ydC5leHBl
Y3RlZF9maWxlbmFtZShzZWxmLl9maWxlbmFtZSwgc3VmZml4KQogICAgICAgICAgICAgICAgIGlm
IGZzLmV4aXN0cyhleHBlY3RlZF9maWxlbmFtZSk6CiAgICAgICAgICAgICAgICAgICAgIF9sb2cu
ZXJyb3IoJ1RoZSByZWZ0ZXN0ICglcykgY2FuIG5vdCBoYXZlIGFuIGV4cGVjdGF0aW9uIGZpbGUg
KCVzKS4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyBQbGVhc2UgcmVtb3ZlIHRo
YXQgZmlsZS4nLCBzZWxmLl90ZXN0bmFtZSwgZXhwZWN0ZWRfZmlsZW5hbWUpCiAKICAgICBkZWYg
X2V4cGVjdGVkX2RyaXZlcl9vdXRwdXQoc2VsZik6Ci0gICAgICAgIHJldHVybiBiYXNlLkRyaXZl
ck91dHB1dChzZWxmLl9wb3J0LmV4cGVjdGVkX3RleHQoc2VsZi5fZmlsZW5hbWUpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcG9ydC5leHBlY3RlZF9pbWFnZShzZWxm
Ll9maWxlbmFtZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9wb3J0
LmV4cGVjdGVkX2NoZWNrc3VtKHNlbGYuX2ZpbGVuYW1lKSkKKyAgICAgICAgcmV0dXJuIGJhc2Uu
RHJpdmVyT3V0cHV0KHRleHQ9c2VsZi5fcG9ydC5leHBlY3RlZF90ZXh0KHNlbGYuX2ZpbGVuYW1l
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlPXNlbGYuX3BvcnQuZXhw
ZWN0ZWRfaW1hZ2Uoc2VsZi5fZmlsZW5hbWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW1hZ2VfaGFzaD1zZWxmLl9wb3J0LmV4cGVjdGVkX2NoZWNrc3VtKHNlbGYuX2ZpbGVu
YW1lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvPXNlbGYuX3BvcnQu
ZXhwZWN0ZWRfYXVkaW8oc2VsZi5fZmlsZW5hbWUpKQogCiAgICAgZGVmIF9zaG91bGRfZmV0Y2hf
ZXhwZWN0ZWRfY2hlY2tzdW0oc2VsZik6CiAgICAgICAgIHJldHVybiAoc2VsZi5fb3B0aW9ucy5w
aXhlbF90ZXN0cyBhbmQKQEAgLTE0Miw2ICsxNDMsOSBAQCBjbGFzcyBTaW5nbGVUZXN0UnVubmVy
OgogICAgICAgICAjIER1bXBSZW5kZXJUcmVlIG1heSBub3Qgb3V0cHV0IHV0Zi04IHRleHQgKGUu
Zy4gd2ViYXJjaGl2ZXMpLgogICAgICAgICBzZWxmLl9zYXZlX2Jhc2VsaW5lX2RhdGEoZHJpdmVy
X291dHB1dC50ZXh0LCAiLnR4dCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
ZW5lcmF0ZV9uZXdfYmFzZWxpbmU9c2VsZi5fb3B0aW9ucy5uZXdfYmFzZWxpbmUpCisgICAgICAg
IGlmIGRyaXZlcl9vdXRwdXQuYXVkaW86CisgICAgICAgICAgICBzZWxmLl9zYXZlX2Jhc2VsaW5l
X2RhdGEoZHJpdmVyX291dHB1dC5hdWRpbywgJy53YXYnLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdlbmVyYXRlX25ld19iYXNlbGluZT1zZWxmLl9vcHRpb25zLm5ld19i
YXNlbGluZSkKICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5waXhlbF90ZXN0cyBhbmQgZHJpdmVy
X291dHB1dC5pbWFnZV9oYXNoOgogICAgICAgICAgICAgc2VsZi5fc2F2ZV9iYXNlbGluZV9kYXRh
KGRyaXZlcl9vdXRwdXQuaW1hZ2UsICIucG5nIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBnZW5lcmF0ZV9uZXdfYmFzZWxpbmU9c2VsZi5fb3B0aW9ucy5uZXdfYmFzZWxp
bmUpCkBAIC0yMTYsNiArMjIwLDcgQEAgY2xhc3MgU2luZ2xlVGVzdFJ1bm5lcjoKICAgICAgICAg
ICAgIHJldHVybiBUZXN0UmVzdWx0KHNlbGYuX2ZpbGVuYW1lLCBmYWlsdXJlcywgZHJpdmVyX291
dHB1dC50ZXN0X3RpbWUpCiAKICAgICAgICAgZmFpbHVyZXMuZXh0ZW5kKHNlbGYuX2NvbXBhcmVf
dGV4dChkcml2ZXJfb3V0cHV0LnRleHQsIGV4cGVjdGVkX2RyaXZlcl9vdXRwdXQudGV4dCkpCisg
ICAgICAgIGZhaWx1cmVzLmV4dGVuZChzZWxmLl9jb21wYXJlX2F1ZGlvKGRyaXZlcl9vdXRwdXQu
YXVkaW8sIGV4cGVjdGVkX2RyaXZlcl9vdXRwdXQuYXVkaW8pKQogICAgICAgICBpZiBzZWxmLl9v
cHRpb25zLnBpeGVsX3Rlc3RzOgogICAgICAgICAgICAgZmFpbHVyZXMuZXh0ZW5kKHNlbGYuX2Nv
bXBhcmVfaW1hZ2UoZHJpdmVyX291dHB1dCwgZXhwZWN0ZWRfZHJpdmVyX291dHB1dCkpCiAgICAg
ICAgIHJldHVybiBUZXN0UmVzdWx0KHNlbGYuX2ZpbGVuYW1lLCBmYWlsdXJlcywgZHJpdmVyX291
dHB1dC50ZXN0X3RpbWUpCkBAIC0yMzEsNiArMjM2LDE1IEBAIGNsYXNzIFNpbmdsZVRlc3RSdW5u
ZXI6CiAgICAgICAgICAgICBmYWlsdXJlcy5hcHBlbmQodGVzdF9mYWlsdXJlcy5GYWlsdXJlTWlz
c2luZ1Jlc3VsdCgpKQogICAgICAgICByZXR1cm4gZmFpbHVyZXMKIAorICAgIGRlZiBfY29tcGFy
ZV9hdWRpbyhzZWxmLCBhY3R1YWxfYXVkaW8sIGV4cGVjdGVkX2F1ZGlvKToKKyAgICAgICAgZmFp
bHVyZXMgPSBbXQorICAgICAgICBpZiAoZXhwZWN0ZWRfYXVkaW8gYW5kIGFjdHVhbF9hdWRpbyBh
bmQKKyAgICAgICAgICAgIHNlbGYuX3BvcnQuY29tcGFyZV9hdWRpbyhhY3R1YWxfYXVkaW8sIGV4
cGVjdGVkX2F1ZGlvKSk6CisgICAgICAgICAgICBmYWlsdXJlcy5hcHBlbmQodGVzdF9mYWlsdXJl
cy5GYWlsdXJlQXVkaW9NaXNtYXRjaCgpKQorICAgICAgICBlbGlmIGFjdHVhbF9hdWRpbyBhbmQg
bm90IGV4cGVjdGVkX2F1ZGlvOgorICAgICAgICAgICAgZmFpbHVyZXMuYXBwZW5kKHRlc3RfZmFp
bHVyZXMuRmFpbHVyZU1pc3NpbmdBdWRpbygpKQorICAgICAgICByZXR1cm4gZmFpbHVyZXMKKwog
ICAgIGRlZiBfZ2V0X25vcm1hbGl6ZWRfb3V0cHV0X3RleHQoc2VsZiwgb3V0cHV0KToKICAgICAg
ICAgIiIiUmV0dXJucyB0aGUgbm9ybWFsaXplZCB0ZXh0IG91dHB1dCwgaS5lLiB0aGUgb3V0cHV0
IGluIHdoaWNoCiAgICAgICAgIHRoZSBlbmQtb2YtbGluZSBjaGFyYWN0ZXJzIGFyZSBub3JtYWxp
emVkIHRvICJcbiIuIiIiCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2V4cGVjdGF0aW9ucy5weSBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZXhwZWN0YXRpb25z
LnB5CmluZGV4IGFkNTBhZGVhY2Q5YjgwNzI4MzA4ZDFjNTA4OWE0YzhkZTI1MDJlNjguLmE0MDdl
Y2M0ZWYxNmRkY2IyODc0NjYyYjBlMDA2ZDRjOWE5NjBkZjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZXhwZWN0YXRp
b25zLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9w
YWNrYWdlL3Rlc3RfZXhwZWN0YXRpb25zLnB5CkBAIC00MSw4ICs0MSw4IEBAIF9sb2cgPSBsb2dn
aW5nLmdldExvZ2dlcigid2Via2l0cHkubGF5b3V0X3Rlc3RzLmxheW91dF9wYWNrYWdlLiIKICAg
ICAgICAgICAgICAgICAgICAgICAgICAidGVzdF9leHBlY3RhdGlvbnMiKQogCiAjIFRlc3QgZXhw
ZWN0YXRpb24gYW5kIG1vZGlmaWVyIGNvbnN0YW50cy4KLShQQVNTLCBGQUlMLCBURVhULCBJTUFH
RSwgSU1BR0VfUExVU19URVhULCBUSU1FT1VULCBDUkFTSCwgU0tJUCwgV09OVEZJWCwKLSBTTE9X
LCBSRUJBU0VMSU5FLCBNSVNTSU5HLCBGTEFLWSwgTk9XLCBOT05FKSA9IHJhbmdlKDE1KQorKFBB
U1MsIEZBSUwsIFRFWFQsIElNQUdFLCBJTUFHRV9QTFVTX1RFWFQsIEFVRElPLCBUSU1FT1VULCBD
UkFTSCwgU0tJUCwgV09OVEZJWCwKKyBTTE9XLCBSRUJBU0VMSU5FLCBNSVNTSU5HLCBGTEFLWSwg
Tk9XLCBOT05FKSA9IHJhbmdlKDE2KQogCiAjIFRlc3QgZXhwZWN0YXRpb24gZmlsZSB1cGRhdGUg
YWN0aW9uIGNvbnN0YW50cwogKE5PX0NIQU5HRSwgUkVNT1ZFX1RFU1QsIFJFTU9WRV9QTEFURk9S
TSwgQUREX1BMQVRGT1JNU19FWENFUFRfVEhJUykgPSByYW5nZSg0KQpAQCAtMTIwLDcgKzEyMCw4
IEBAIGNsYXNzIFRlc3RFeHBlY3RhdGlvbnM6CiAgICAgICAgICAgICAgICAgc2VsZi5fZXhwZWN0
ZWRfZmFpbHVyZXMuZ2V0X3Rlc3Rfc2V0KFJFQkFTRUxJTkUsIElNQUdFKSB8CiAgICAgICAgICAg
ICAgICAgc2VsZi5fZXhwZWN0ZWRfZmFpbHVyZXMuZ2V0X3Rlc3Rfc2V0KFJFQkFTRUxJTkUsIFRF
WFQpIHwKICAgICAgICAgICAgICAgICBzZWxmLl9leHBlY3RlZF9mYWlsdXJlcy5nZXRfdGVzdF9z
ZXQoUkVCQVNFTElORSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgSU1BR0VfUExVU19URVhUKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgSU1BR0VfUExVU19URVhUKSB8CisgICAgICAgICAg
ICAgICAgc2VsZi5fZXhwZWN0ZWRfZmFpbHVyZXMuZ2V0X3Rlc3Rfc2V0KFJFQkFTRUxJTkUsIEFV
RElPKSkKIAogICAgIGRlZiBnZXRfb3B0aW9ucyhzZWxmLCB0ZXN0KToKICAgICAgICAgcmV0dXJu
IHNlbGYuX2V4cGVjdGVkX2ZhaWx1cmVzLmdldF9vcHRpb25zKHRlc3QpCkBAIC0yNDQsMTEgKzI0
NSwxMSBAQCBjbGFzcyBUZXN0RXhwZWN0YXRpb25zRmlsZToKIAogICAgIE5vdGVzOgogICAgICAg
LUEgdGVzdCBjYW5ub3QgYmUgYm90aCBTTE9XIGFuZCBUSU1FT1VUCi0gICAgICAtQSB0ZXN0IHNo
b3VsZCBvbmx5IGJlIG9uZSBvZiBJTUFHRSwgVEVYVCwgSU1BR0UrVEVYVCwgb3IgRkFJTC4gRkFJ
TCBpcwotICAgICAgIGEgbWlncmF0b3J5IHN0YXRlIHRoYXQgY3VycmVudGx5IG1lYW5zIGVpdGhl
ciBJTUFHRSwgVEVYVCwgb3IKLSAgICAgICBJTUFHRStURVhULiBPbmNlIHdlIGhhdmUgZmluaXNo
ZWQgbWlncmF0aW5nIHRoZSBleHBlY3RhdGlvbnMsIHdlIHdpbGwKLSAgICAgICBjaGFuZ2UgRkFJ
TCB0byBoYXZlIHRoZSBtZWFuaW5nIG9mIElNQUdFK1RFWFQgYW5kIHJlbW92ZSB0aGUgSU1BR0Ur
VEVYVAotICAgICAgIGlkZW50aWZpZXIuCisgICAgICAtQSB0ZXN0IHNob3VsZCBvbmx5IGJlIG9u
ZSBvZiBJTUFHRSwgVEVYVCwgSU1BR0UrVEVYVCwgQVVESU8sIG9yIEZBSUwuCisgICAgICAgRkFJ
TCBpcyBhIGxlZ2FjeSB2YWx1ZSB0aGF0IGN1cnJlbnRseSBtZWFucyBlaXRoZXIgSU1BR0UsCisg
ICAgICAgVEVYVCwgb3IgSU1BR0UrVEVYVC4gT25jZSB3ZSBoYXZlIGZpbmlzaGVkIG1pZ3JhdGlu
ZyB0aGUgZXhwZWN0YXRpb25zLAorICAgICAgIHdlIHNob3VsZCBjaGFuZ2UgRkFJTCB0byBoYXZl
IHRoZSBtZWFuaW5nIG9mIElNQUdFK1RFWFQgYW5kIHJlbW92ZSB0aGUKKyAgICAgICBJTUFHRStU
RVhUIGlkZW50aWZpZXIuCiAgICAgICAtQSB0ZXN0IGNhbiBiZSBpbmNsdWRlZCB0d2ljZSwgYnV0
IG5vdCB2aWEgdGhlIHNhbWUgcGF0aC4KICAgICAgIC1JZiBhIHRlc3QgaXMgaW5jbHVkZWQgdHdp
Y2UsIHRoZW4gdGhlIG1vcmUgcHJlY2lzZSBwYXRoIHdpbnMuCiAgICAgICAtQ1JBU0ggdGVzdHMg
Y2Fubm90IGJlIFdPTlRGSVgKQEAgLTI1OSw2ICsyNjAsNyBAQCBjbGFzcyBUZXN0RXhwZWN0YXRp
b25zRmlsZToKICAgICAgICAgICAgICAgICAgICAgJ3RleHQnOiBURVhULAogICAgICAgICAgICAg
ICAgICAgICAnaW1hZ2UnOiBJTUFHRSwKICAgICAgICAgICAgICAgICAgICAgJ2ltYWdlK3RleHQn
OiBJTUFHRV9QTFVTX1RFWFQsCisgICAgICAgICAgICAgICAgICAgICdhdWRpbyc6IEFVRElPLAog
ICAgICAgICAgICAgICAgICAgICAndGltZW91dCc6IFRJTUVPVVQsCiAgICAgICAgICAgICAgICAg
ICAgICdjcmFzaCc6IENSQVNILAogICAgICAgICAgICAgICAgICAgICAnbWlzc2luZyc6IE1JU1NJ
Tkd9CkBAIC0yNzEsNiArMjczLDcgQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9uc0ZpbGU6CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIElNQUdFOiAoJ2ltYWdlIG1pc21hdGNoJywgJ2lt
YWdlIG1pc21hdGNoJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElNQUdFX1BM
VVNfVEVYVDogKCdpbWFnZSBhbmQgdGV4dCBtaXNtYXRjaCcsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbWFnZSBhbmQgdGV4dCBtaXNtYXRjaCcp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBVURJTzogKCdhdWRpbyBtaXNtYXRj
aCcsICdhdWRpbyBtaXNtYXRjaCcpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBD
UkFTSDogKCdEdW1wUmVuZGVyVHJlZSBjcmFzaCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJ0R1bXBSZW5kZXJUcmVlIGNyYXNoZXMnKSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVElNRU9VVDogKCd0ZXN0IHRpbWVkIG91dCcsICd0ZXN0cyB0aW1l
ZCBvdXQnKSwKQEAgLTI3OCw3ICsyODEsNyBAQCBjbGFzcyBUZXN0RXhwZWN0YXRpb25zRmlsZToK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdubyBleHBlY3RlZCBy
ZXN1bHRzIGZvdW5kJyl9CiAKICAgICBFWFBFQ1RBVElPTl9PUkRFUiA9IChQQVNTLCBDUkFTSCwg
VElNRU9VVCwgTUlTU0lORywgSU1BR0VfUExVU19URVhULAotICAgICAgIFRFWFQsIElNQUdFLCBG
QUlMLCBTS0lQKQorICAgICAgIFRFWFQsIElNQUdFLCBBVURJTywgRkFJTCwgU0tJUCkKIAogICAg
IEJVSUxEX1RZUEVTID0gKCdkZWJ1ZycsICdyZWxlYXNlJykKIApkaWZmIC0tZ2l0IGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9mYWlsdXJl
cy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdl
L3Rlc3RfZmFpbHVyZXMucHkKaW5kZXggMWZhZDc3MjQ2Yjg1ZTYyZDAwZjM1YTA1ZmQyY2M2OWIy
M2U0OTZmMi4uZjEyN2MyYmJlMzQ4MWIyZTM0MTkzNTc4M2EyMmE2OTA2OGViNWI5OCAxMDA2NDQK
LS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2Uv
dGVzdF9mYWlsdXJlcy5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9sYXlvdXRfcGFja2FnZS90ZXN0X2ZhaWx1cmVzLnB5CkBAIC01NCw3ICs1NCw4IEBAIGRlZiBk
ZXRlcm1pbmVfcmVzdWx0X3R5cGUoZmFpbHVyZV9saXN0KToKICAgICAgICAgcmV0dXJuIHRlc3Rf
ZXhwZWN0YXRpb25zLlRJTUVPVVQKICAgICBlbGlmIChGYWlsdXJlTWlzc2luZ1Jlc3VsdCBpbiBm
YWlsdXJlX3R5cGVzIG9yCiAgICAgICAgICAgRmFpbHVyZU1pc3NpbmdJbWFnZSBpbiBmYWlsdXJl
X3R5cGVzIG9yCi0gICAgICAgICAgRmFpbHVyZU1pc3NpbmdJbWFnZUhhc2ggaW4gZmFpbHVyZV90
eXBlcyk6CisgICAgICAgICAgRmFpbHVyZU1pc3NpbmdJbWFnZUhhc2ggaW4gZmFpbHVyZV90eXBl
cyBvcgorICAgICAgICAgIEZhaWx1cmVNaXNzaW5nQXVkaW8gaW4gZmFpbHVyZV90eXBlcyk6CiAg
ICAgICAgIHJldHVybiB0ZXN0X2V4cGVjdGF0aW9ucy5NSVNTSU5HCiAgICAgZWxzZToKICAgICAg
ICAgaXNfdGV4dF9mYWlsdXJlID0gRmFpbHVyZVRleHRNaXNtYXRjaCBpbiBmYWlsdXJlX3R5cGVz
CkBAIC02MiwxMiArNjMsMTUgQEAgZGVmIGRldGVybWluZV9yZXN1bHRfdHlwZShmYWlsdXJlX2xp
c3QpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZhaWx1cmVJbWFnZUhhc2hNaXNtYXRj
aCBpbiBmYWlsdXJlX3R5cGVzKQogICAgICAgICBpc19yZWZ0ZXN0X2ZhaWx1cmUgPSAoRmFpbHVy
ZVJlZnRlc3RNaXNtYXRjaCBpbiBmYWlsdXJlX3R5cGVzIG9yCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBGYWlsdXJlUmVmdGVzdE1pc21hdGNoRGlkTm90T2NjdXIgaW4gZmFpbHVyZV90
eXBlcykKKyAgICAgICAgaXNfYXVkaW9fZmFpbHVyZSA9IChGYWlsdXJlQXVkaW9NaXNtYXRjaCBp
biBmYWlsdXJlX3R5cGVzKQogICAgICAgICBpZiBpc190ZXh0X2ZhaWx1cmUgYW5kIGlzX2ltYWdl
X2ZhaWx1cmU6CiAgICAgICAgICAgICByZXR1cm4gdGVzdF9leHBlY3RhdGlvbnMuSU1BR0VfUExV
U19URVhUCiAgICAgICAgIGVsaWYgaXNfdGV4dF9mYWlsdXJlOgogICAgICAgICAgICAgcmV0dXJu
IHRlc3RfZXhwZWN0YXRpb25zLlRFWFQKICAgICAgICAgZWxpZiBpc19pbWFnZV9mYWlsdXJlIG9y
IGlzX3JlZnRlc3RfZmFpbHVyZToKICAgICAgICAgICAgIHJldHVybiB0ZXN0X2V4cGVjdGF0aW9u
cy5JTUFHRQorICAgICAgICBlbGlmIGlzX2F1ZGlvX2ZhaWx1cmU6CisgICAgICAgICAgICByZXR1
cm4gdGVzdF9leHBlY3RhdGlvbnMuQVVESU8KICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJh
aXNlIFZhbHVlRXJyb3IoInVuY2xhc3NpZmlhYmxlIHNldCBvZiBmYWlsdXJlczogIgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICArIHN0cihmYWlsdXJlX3R5cGVzKSkKQEAgLTMzMSw2ICsz
MzUsMjggQEAgY2xhc3MgRmFpbHVyZVJlZnRlc3RNaXNtYXRjaERpZE5vdE9jY3VyKENvbXBhcmlz
b25UZXN0RmFpbHVyZSk6CiAgICAgICAgIHJldHVybiAnICcuam9pbihsaW5rcykKIAogCitjbGFz
cyBGYWlsdXJlTWlzc2luZ0F1ZGlvKENvbXBhcmlzb25UZXN0RmFpbHVyZSk6CisgICAgIiIiQWN0
dWFsIHJlc3VsdCBpbWFnZSB3YXMgbWlzc2luZy4iIiIKKyAgICBPVVRfRklMRU5BTUVTID0gKCIt
YWN0dWFsLndhdiIsKQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBtZXNzYWdlKCk6Cisg
ICAgICAgIHJldHVybiAiTm8gZXhwZWN0ZWQgYXVkaW8gZm91bmQiCisKKyAgICBkZWYgcmVzdWx0
X2h0bWxfb3V0cHV0KHNlbGYsIGZpbGVuYW1lKToKKyAgICAgICAgcmV0dXJuICgiPHN0cm9uZz4l
czwvc3Ryb25nPiIgJSBzZWxmLm1lc3NhZ2UoKSArCisgICAgICAgICAgICAgICAgc2VsZi5vdXRw
dXRfbGlua3MoZmlsZW5hbWUsIHNlbGYuT1VUX0ZJTEVOQU1FUykpCisKKworY2xhc3MgRmFpbHVy
ZUF1ZGlvTWlzbWF0Y2goQ29tcGFyaXNvblRlc3RGYWlsdXJlKToKKyAgICAiIiJBdWRpbyBmaWxl
cyBkaWRuJ3QgbWF0Y2guIiIiCisgICAgT1VUX0ZJTEVOQU1FUyA9ICgiLWFjdHVhbC53YXYiLCAi
LWV4cGVjdGVkLndhdiIpCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIG1lc3NhZ2UoKToK
KyAgICAgICAgcmV0dXJuICJBdWRpbyBtaXNtYXRjaCIKKworCiAjIENvbnZlbmllbnQgY29sbGVj
dGlvbiBvZiBhbGwgZmFpbHVyZSBjbGFzc2VzIGZvciBhbnl0aGluZyB0aGF0IG1pZ2h0CiAjIG5l
ZWQgdG8gZW51bWVyYXRlIG92ZXIgdGhlbSBhbGwuCiBBTExfRkFJTFVSRV9DTEFTU0VTID0gKEZh
aWx1cmVUaW1lb3V0LCBGYWlsdXJlQ3Jhc2gsIEZhaWx1cmVNaXNzaW5nUmVzdWx0LApkaWZmIC0t
Z2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2Uv
dGVzdF9yZXN1bHRfd3JpdGVyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9yZXN1bHRfd3JpdGVyLnB5CmluZGV4IGUyMDk1MDMwZmU4
NDA2OWM0YTgzNWY3YmMyMjBkNmQyZDA5M2EyOTMuLmE0MDRiYzJkNzY2OTFlZmYwZGIyZjlhYTlj
M2Q0MGVkNDAxN2U2MWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfcmVzdWx0X3dyaXRlci5weQorKysgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X3Jlc3VsdF93
cml0ZXIucHkKQEAgLTYzLDYgKzYzLDkgQEAgZGVmIHdyaXRlX3Rlc3RfcmVzdWx0KHBvcnQsIHJv
b3Rfb3V0cHV0X2RpciwgZmlsZW5hbWUsIGRyaXZlcl9vdXRwdXQsCiAgICAgICAgICAgICBpZiBu
b3QgaW1hZ2VzX2FyZV9kaWZmZXJlbnQ6CiAgICAgICAgICAgICAgICAgY2hlY2tzdW1zX21pc21h
dGNoX2J1dF9pbWFnZXNfYXJlX3NhbWUgPSBUcnVlCiAgICAgICAgICAgICAgICAgaW1hZ2VoYXNo
X21pc21hdGNoX2ZhaWx1cmUgPSBmYWlsdXJlCisgICAgICAgIGVsaWYgaXNpbnN0YW5jZShmYWls
dXJlLCAodGVzdF9mYWlsdXJlcy5GYWlsdXJlQXVkaW9NaXNtYXRjaCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0ZXN0X2ZhaWx1cmVzLkZhaWx1cmVNaXNzaW5nQXVkaW8pKToK
KyAgICAgICAgICAgIHdyaXRlci53cml0ZV9hdWRpb19maWxlcyhkcml2ZXJfb3V0cHV0LmF1ZGlv
LCBleHBlY3RlZF9kcml2ZXJfb3V0cHV0LmF1ZGlvKQogICAgICAgICBlbGlmIGlzaW5zdGFuY2Uo
ZmFpbHVyZSwgdGVzdF9mYWlsdXJlcy5GYWlsdXJlQ3Jhc2gpOgogICAgICAgICAgICAgaWYgZmFp
bHVyZS5yZWZlcmVuY2VfZmlsZW5hbWU6CiAgICAgICAgICAgICAgICAgd3JpdGVyLndyaXRlX2Ny
YXNoX3JlcG9ydChleHBlY3RlZF9kcml2ZXJfb3V0cHV0LmVycm9yKQpAQCAtMTg3LDYgKzE5MCw5
IEBAIGNsYXNzIFRlc3RSZXN1bHRXcml0ZXIob2JqZWN0KToKICAgICAgICAgcHJldHR5X3BhdGNo
X2ZpbGVuYW1lID0gc2VsZi5vdXRwdXRfZmlsZW5hbWUoc2VsZi5GSUxFTkFNRV9TVUZGSVhfUFJF
VFRZX1BBVENIKQogICAgICAgICBmcy53cml0ZV9iaW5hcnlfZmlsZShwcmV0dHlfcGF0Y2hfZmls
ZW5hbWUsIHByZXR0eV9wYXRjaCkKIAorICAgIGRlZiB3cml0ZV9hdWRpb19maWxlcyhzZWxmLCBh
Y3R1YWxfYXVkaW8sIGV4cGVjdGVkX2F1ZGlvKToKKyAgICAgICAgc2VsZi53cml0ZV9vdXRwdXRf
ZmlsZXMoJy53YXYnLCBhY3R1YWxfYXVkaW8sIGV4cGVjdGVkX2F1ZGlvKQorCiAgICAgZGVmIHdy
aXRlX2ltYWdlX2ZpbGVzKHNlbGYsIGFjdHVhbF9pbWFnZSwgZXhwZWN0ZWRfaW1hZ2UpOgogICAg
ICAgICBzZWxmLndyaXRlX291dHB1dF9maWxlcygnLnBuZycsIGFjdHVhbF9pbWFnZSwgZXhwZWN0
ZWRfaW1hZ2UpCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvYmFzZS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvYmFzZS5weQppbmRleCAwYmFkMTFjOWVlYmYwM2E2MGI5YTJhNmQwNDgwMWYxMGIxMzNkZDhl
Li43NWZiNTM5NjI1ZmJkN2I1ZTYzYzRkYmEyZjUzOTBlNTJjMDBmMGMxIDEwMDY0NAotLS0gYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkKKysrIGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5CkBAIC0yMDYsNiAr
MjA2LDEwIEBAIGNsYXNzIFBvcnQob2JqZWN0KToKICAgICAgICAgaW50ZXJmYWNlIHNvIHRoYXQg
aXQgY2FuIGJlIG92ZXJyaWRlbiBmb3IgdGVzdGluZyBwdXJwb3Nlcy4iIiIKICAgICAgICAgcmV0
dXJuIGV4cGVjdGVkX3RleHQgIT0gYWN0dWFsX3RleHQKIAorICAgIGRlZiBjb21wYXJlX2F1ZGlv
KHNlbGYsIGV4cGVjdGVkX2F1ZGlvLCBhY3R1YWxfYXVkaW8pOgorICAgICAgICAiIiJSZXR1cm4g
d2hldGhlciB0aGUgdHdvIGF1ZGlvIGZpbGVzIGFyZSAqbm90KiBlcXVhbC4iIiIKKyAgICAgICAg
cmV0dXJuIGV4cGVjdGVkX2F1ZGlvICE9IGFjdHVhbF9hdWRpbworCiAgICAgZGVmIGRpZmZfaW1h
Z2Uoc2VsZiwgZXhwZWN0ZWRfY29udGVudHMsIGFjdHVhbF9jb250ZW50cywKICAgICAgICAgICAg
ICAgICAgICBkaWZmX2ZpbGVuYW1lPU5vbmUsIHRvbGVyYW5jZT0wKToKICAgICAgICAgIiIiQ29t
cGFyZSB0d28gaW1hZ2VzIGFuZCBwcm9kdWNlIGEgZGVsdGEgaW1hZ2UgZmlsZS4KQEAgLTM1MSw2
ICszNTUsMTIgQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAgICAgICAgICAgcmV0dXJuIE5vbmUK
ICAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbGVzeXN0ZW0ucmVhZF9iaW5hcnlfZmlsZShwYXRoKQog
CisgICAgZGVmIGV4cGVjdGVkX2F1ZGlvKHNlbGYsIHRlc3QpOgorICAgICAgICBwYXRoID0gc2Vs
Zi5leHBlY3RlZF9maWxlbmFtZSh0ZXN0LCAnLndhdicpCisgICAgICAgIGlmIG5vdCBzZWxmLnBh
dGhfZXhpc3RzKHBhdGgpOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgcmV0dXJu
IHNlbGYuX2ZpbGVzeXN0ZW0ucmVhZF9iaW5hcnlfZmlsZShwYXRoKQorCiAgICAgZGVmIGV4cGVj
dGVkX3RleHQoc2VsZiwgdGVzdCk6CiAgICAgICAgICIiIlJldHVybnMgdGhlIHRleHQgb3V0cHV0
IHdlIGV4cGVjdCB0aGUgdGVzdCB0byBwcm9kdWNlLCBvciBOb25lCiAgICAgICAgIGlmIHdlIGRv
bid0IGV4cGVjdCB0aGVyZSB0byBiZSBhbnkgdGV4dCBvdXRwdXQuCkBAIC04NjgsMjIgKzg3OCwy
NCBAQCBjbGFzcyBEcml2ZXJJbnB1dChvYmplY3QpOgogY2xhc3MgRHJpdmVyT3V0cHV0KG9iamVj
dCk6CiAgICAgIiIiR3JvdXBzIGluZm9ybWF0aW9uIGFib3V0IGEgb3V0cHV0IGZyb20gZHJpdmVy
IGZvciBlYXN5IHBhc3Npbmcgb2YgZGF0YS4iIiIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0
ZXh0LCBpbWFnZSwgaW1hZ2VfaGFzaCwKLSAgICAgICAgICAgICAgICAgY3Jhc2g9RmFsc2UsIHRl
c3RfdGltZT1Ob25lLCB0aW1lb3V0PUZhbHNlLCBlcnJvcj0nJyk6CisgICAgZGVmIF9faW5pdF9f
KHNlbGYsIHRleHQ9Tm9uZSwgaW1hZ2U9Tm9uZSwgaW1hZ2VfaGFzaD1Ob25lLCBhdWRpbz1Ob25l
LAorICAgICAgICAgICAgICAgICBjcmFzaD1GYWxzZSwgdGVzdF90aW1lPTAsIHRpbWVvdXQ9RmFs
c2UsIGVycm9yPScnKToKICAgICAgICAgIiIiSW5pdGlhbGl6ZXMgYSBUZXN0T3V0cHV0IG9iamVj
dC4KIAogICAgICAgICBBcmdzOgogICAgICAgICAgIHRleHQ6IGEgdGV4dCBvdXRwdXQKICAgICAg
ICAgICBpbWFnZTogYW4gaW1hZ2Ugb3V0cHV0CiAgICAgICAgICAgaW1hZ2VfaGFzaDogYSBzdHJp
bmcgY29udGFpbmluZyB0aGUgY2hlY2tzdW0gb2YgdGhlIGltYWdlCisgICAgICAgICAgYXVkaW86
IGNvbnRlbnRzIG9mIGFuIGF1ZGlvIHN0cmVhbSwgaWYgYW55IChpbiBXQVYgZm9ybWF0KQogICAg
ICAgICAgIGNyYXNoOiBhIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBkcml2ZXIgY3Jh
c2hlZCBvbiB0aGUgdGVzdAotICAgICAgICAgIHRlc3RfdGltZTogYSB0aW1lIHdoaWNoIHRoZSB0
ZXN0IGhhcyB0YWtlbgorICAgICAgICAgIHRlc3RfdGltZTogdGhlIHRpbWUgdGhlIHRlc3QgdG9v
ayB0byBleGVjdXRlCiAgICAgICAgICAgdGltZW91dDogYSBib29sZWFuIGluZGljYXRpbmcgd2hl
aHRlciB0aGUgdGVzdCB0aW1lZCBvdXQKICAgICAgICAgICBlcnJvcjogYW55IHVuZXhwZWN0ZWQg
b3IgYWRkaXRpb25hbCAob3IgZXJyb3IpIHRleHQgb3V0cHV0CiAgICAgICAgICIiIgogICAgICAg
ICBzZWxmLnRleHQgPSB0ZXh0CiAgICAgICAgIHNlbGYuaW1hZ2UgPSBpbWFnZQogICAgICAgICBz
ZWxmLmltYWdlX2hhc2ggPSBpbWFnZV9oYXNoCisgICAgICAgIHNlbGYuYXVkaW8gPSBhdWRpbwog
ICAgICAgICBzZWxmLmNyYXNoID0gY3Jhc2gKICAgICAgICAgc2VsZi50ZXN0X3RpbWUgPSB0ZXN0
X3RpbWUKICAgICAgICAgc2VsZi50aW1lb3V0ID0gdGltZW91dApkaWZmIC0tZ2l0IGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weSBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkKaW5kZXggMThiNTcw
NTgwMTU3ODQ5YzkzZDc0Zjc4NmM0NDk3MTQ3Y2ZkZTA2NS4uMGZiMjM4NGMwZDczYjAwNDExNDk4
YzcwY2VmMTgxM2VmZjk3Zjk4OCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5CkBAIC01MDAsMTQgKzUwMCwxNiBAQCBjbGFz
cyBDaHJvbWl1bURyaXZlcihiYXNlLkRyaXZlcik6CiAKICAgICAgICAgICAgIChsaW5lLCBjcmFz
aCkgPSBzZWxmLl93cml0ZV9jb21tYW5kX2FuZF9yZWFkX2xpbmUoaW5wdXQ9Tm9uZSkKIAorICAg
ICAgICAjIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgYXVkaW8gd2hlbiB3ZSdyZSByZWFkeS4KKwog
ICAgICAgICBydW5fdGltZSA9IHRpbWUudGltZSgpIC0gc3RhcnRfdGltZQogICAgICAgICBvdXRw
dXRfaW1hZ2UgPSBzZWxmLl9vdXRwdXRfaW1hZ2Vfd2l0aF9yZXRyeSgpCiAgICAgICAgIHRleHQg
PSAnJy5qb2luKG91dHB1dCkKICAgICAgICAgaWYgbm90IHRleHQ6CiAgICAgICAgICAgICB0ZXh0
ID0gTm9uZQogCi0gICAgICAgIHJldHVybiBiYXNlLkRyaXZlck91dHB1dCh0ZXh0LCBvdXRwdXRf
aW1hZ2UsIGFjdHVhbF9jaGVja3N1bSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNyYXNoLCBydW5fdGltZSwgdGltZW91dCwgJycuam9pbihlcnJvcikpCisgICAgICAgIHJldHVy
biBiYXNlLkRyaXZlck91dHB1dCh0ZXh0PXRleHQsIGltYWdlPW91dHB1dF9pbWFnZSwgaW1hZ2Vf
aGFzaD1hY3R1YWxfY2hlY2tzdW0sCisgICAgICAgICAgICBhdWRpbz1Ob25lLCBjcmFzaD1jcmFz
aCwgdGVzdF90aW1lPXJ1bl90aW1lLCB0aW1lb3V0PXRpbWVvdXQsIGVycm9yPScnLmpvaW4oZXJy
b3IpKQogCiAgICAgZGVmIHN0b3Aoc2VsZik6CiAgICAgICAgIGlmIHNlbGYuX3Byb2M6CmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2RyeXJ1bi5w
eSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZHJ5cnVuLnB5Cmlu
ZGV4IDIwYWE3NzY5YTFiMzY1YmM4OGFiMzhiNzI1MDQxMWJiZjAyNDRjNDQuLjczMjNkODExNDkw
YTliOTMzYWQ4Yzc3NDg2ZDkzYzNiYzE3ZjAyY2EgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZHJ5cnVuLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZHJ5cnVuLnB5CkBAIC0xMTksMjkgKzExOSwyNSBA
QCBjbGFzcyBEcnlydW5Ecml2ZXIoYmFzZS5Ecml2ZXIpOgogICAgIGRlZiBydW5fdGVzdChzZWxm
LCBkcml2ZXJfaW5wdXQpOgogICAgICAgICBzdGFydF90aW1lID0gdGltZS50aW1lKCkKICAgICAg
ICAgZnMgPSBzZWxmLl9wb3J0Ll9maWxlc3lzdGVtCi0gICAgICAgIGlmIGZzLmV4aXN0cyhzZWxm
Ll9wb3J0LnJlZnRlc3RfZXhwZWN0ZWRfZmlsZW5hbWUoZHJpdmVyX2lucHV0LmZpbGVuYW1lKSkg
b3IgXAotICAgICAgICAgICAgZnMuZXhpc3RzKHNlbGYuX3BvcnQucmVmdGVzdF9leHBlY3RlZF9t
aXNtYXRjaF9maWxlbmFtZShkcml2ZXJfaW5wdXQuZmlsZW5hbWUpKToKLSAgICAgICAgICAgIHRl
eHRfb3V0cHV0ID0gJ3Rlc3QtdGV4dCcKKyAgICAgICAgaWYgKGZzLmV4aXN0cyhzZWxmLl9wb3J0
LnJlZnRlc3RfZXhwZWN0ZWRfZmlsZW5hbWUoZHJpdmVyX2lucHV0LmZpbGVuYW1lKSkgb3IKKyAg
ICAgICAgICAgIGZzLmV4aXN0cyhzZWxmLl9wb3J0LnJlZnRlc3RfZXhwZWN0ZWRfbWlzbWF0Y2hf
ZmlsZW5hbWUoZHJpdmVyX2lucHV0LmZpbGVuYW1lKSkgb3IKKyAgICAgICAgICAgIGRyaXZlcl9p
bnB1dC5maWxlbmFtZS5lbmRzd2l0aCgnLWV4cGVjdGVkLmh0bWwnKSk6CisgICAgICAgICAgICB0
ZXh0ID0gJ3Rlc3QtdGV4dCcKICAgICAgICAgICAgIGltYWdlID0gJ3Rlc3QtaW1hZ2UnCi0gICAg
ICAgICAgICBoYXNoID0gJ3Rlc3QtY2hlY2tzdW0nCi0gICAgICAgIGVsaWYgZHJpdmVyX2lucHV0
LmZpbGVuYW1lLmVuZHN3aXRoKCctZXhwZWN0ZWQuaHRtbCcpOgotICAgICAgICAgICAgdGV4dF9v
dXRwdXQgPSAndGVzdC10ZXh0JwotICAgICAgICAgICAgaW1hZ2UgPSAndGVzdC1pbWFnZScKLSAg
ICAgICAgICAgIGhhc2ggPSAndGVzdC1jaGVja3N1bScKKyAgICAgICAgICAgIGNoZWNrc3VtID0g
J3Rlc3QtY2hlY2tzdW0nCisgICAgICAgICAgICBhdWRpbyA9IE5vbmUKICAgICAgICAgZWxpZiBk
cml2ZXJfaW5wdXQuZmlsZW5hbWUuZW5kc3dpdGgoJy1leHBlY3RlZC1taXNtYXRjaC5odG1sJyk6
Ci0gICAgICAgICAgICB0ZXh0X291dHB1dCA9ICd0ZXN0LXRleHQtbWlzbWF0Y2gnCisgICAgICAg
ICAgICB0ZXh0ID0gJ3Rlc3QtdGV4dC1taXNtYXRjaCcKICAgICAgICAgICAgIGltYWdlID0gJ3Rl
c3QtaW1hZ2UtbWlzbWF0Y2gnCi0gICAgICAgICAgICBoYXNoID0gJ3Rlc3QtY2hlY2tzdW0tbWlz
bWF0Y2gnCi0gICAgICAgIGVsaWYgZHJpdmVyX2lucHV0LmltYWdlX2hhc2ggaXMgbm90IE5vbmU6
Ci0gICAgICAgICAgICB0ZXh0X291dHB1dCA9IHNlbGYuX3BvcnQuZXhwZWN0ZWRfdGV4dChkcml2
ZXJfaW5wdXQuZmlsZW5hbWUpCi0gICAgICAgICAgICBpbWFnZSA9IHNlbGYuX3BvcnQuZXhwZWN0
ZWRfaW1hZ2UoZHJpdmVyX2lucHV0LmZpbGVuYW1lKQotICAgICAgICAgICAgaGFzaCA9IHNlbGYu
X3BvcnQuZXhwZWN0ZWRfY2hlY2tzdW0oZHJpdmVyX2lucHV0LmZpbGVuYW1lKQorICAgICAgICAg
ICAgY2hlY2tzdW0gPSAndGVzdC1jaGVja3N1bS1taXNtYXRjaCcKKyAgICAgICAgICAgIGF1ZGlv
ID0gTm9uZQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgdGV4dF9vdXRwdXQgPSBzZWxmLl9w
b3J0LmV4cGVjdGVkX3RleHQoZHJpdmVyX2lucHV0LmZpbGVuYW1lKQotICAgICAgICAgICAgaW1h
Z2UgPSBOb25lCi0gICAgICAgICAgICBoYXNoID0gTm9uZQotICAgICAgICByZXR1cm4gYmFzZS5E
cml2ZXJPdXRwdXQodGV4dF9vdXRwdXQsIGltYWdlLCBoYXNoLCBGYWxzZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRpbWUudGltZSgpIC0gc3RhcnRfdGltZSwgRmFsc2UsICcn
KQorICAgICAgICAgICAgdGV4dCA9IHNlbGYuX3BvcnQuZXhwZWN0ZWRfdGV4dChkcml2ZXJfaW5w
dXQuZmlsZW5hbWUpCisgICAgICAgICAgICBpbWFnZSA9IHNlbGYuX3BvcnQuZXhwZWN0ZWRfaW1h
Z2UoZHJpdmVyX2lucHV0LmZpbGVuYW1lKQorICAgICAgICAgICAgY2hlY2tzdW0gPSBzZWxmLl9w
b3J0LmV4cGVjdGVkX2NoZWNrc3VtKGRyaXZlcl9pbnB1dC5maWxlbmFtZSkKKyAgICAgICAgICAg
IGF1ZGlvID0gc2VsZi5fcG9ydC5leHBlY3RlZF9hdWRpbyhkcml2ZXJfaW5wdXQuZmlsZW5hbWUp
CisgICAgICAgIHJldHVybiBiYXNlLkRyaXZlck91dHB1dCh0ZXh0PXRleHQsIGltYWdlPWltYWdl
LCBpbWFnZV9oYXNoPWNoZWNrc3VtLCBhdWRpbz1hdWRpbywKKyAgICAgICAgICAgIGNyYXNoPUZh
bHNlLCB0ZXN0X3RpbWU9dGltZS50aW1lKCkgLSBzdGFydF90aW1lLCB0aW1lb3V0PUZhbHNlLCBl
cnJvcj0nJykKIAogICAgIGRlZiBzdGFydChzZWxmKToKICAgICAgICAgcGFzcwpkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tb2NrX2RydC5weSBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbW9ja19kcnQucHkKaW5k
ZXggMTE0Nzg0NmQ2MDk1MDg0NGI1NTNjMGVmMDM3MDEyY2RhYzYxZjQ4ZC4uNzM5NjdjZmJmZjg2
NTdhZGQ3NTYzYzQ3ZGZhMzI0YWEyY2I1Mjc3MyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tb2NrX2RydC5weQorKysgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L21vY2tfZHJ0LnB5CkBAIC0zMiw2ICszMiw3IEBA
IFRoaXMgaXMgYW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIFBvcnQgaW50ZXJmYWNlIHRoYXQgb3Zl
cnJpZGVzIG90aGVyCiBwb3J0cyBhbmQgY2hhbmdlcyB0aGUgRHJpdmVyIGJpbmFyeSB0byAiTW9j
a0RSVCIuCiAiIiIKIAoraW1wb3J0IGJhc2U2NAogaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBvcHRw
YXJzZQogaW1wb3J0IG9zCkBAIC0yMDYsMTUgKzIwNywyMyBAQCBjbGFzcyBNb2NrRFJUKG9iamVj
dCk6CiAgICAgICAgICAgICB0ZXN0X3BhdGggPSB0ZXN0X2lucHV0LnVyaQogCiAgICAgICAgIGFj
dHVhbF90ZXh0ID0gcG9ydC5leHBlY3RlZF90ZXh0KHRlc3RfcGF0aCkKKyAgICAgICAgYWN0dWFs
X2F1ZGlvID0gcG9ydC5leHBlY3RlZF9hdWRpbyh0ZXN0X3BhdGgpCiAgICAgICAgIGlmIHNlbGYu
X29wdGlvbnMucGl4ZWxfdGVzdHMgYW5kIHRlc3RfaW5wdXQuY2hlY2tzdW06CiAgICAgICAgICAg
ICBhY3R1YWxfY2hlY2tzdW0gPSBwb3J0LmV4cGVjdGVkX2NoZWNrc3VtKHRlc3RfcGF0aCkKICAg
ICAgICAgICAgIGFjdHVhbF9pbWFnZSA9IHBvcnQuZXhwZWN0ZWRfaW1hZ2UodGVzdF9wYXRoKQog
Ci0gICAgICAgIHNlbGYuX3N0ZG91dC53cml0ZSgnQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluXG4n
KQorICAgICAgICBpZiBhY3R1YWxfYXVkaW86CisgICAgICAgICAgICBzZWxmLl9zdGRvdXQud3Jp
dGUoJ0NvbnRlbnQtVHlwZTogYXVkaW8vd2F2XG4nKQorICAgICAgICAgICAgc2VsZi5fc3Rkb3V0
LndyaXRlKCdDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBiYXNlNjRcbicpCisgICAgICAgICAg
ICBvdXRwdXQgPSBiYXNlNjQuYjY0ZW5jb2RlKGFjdHVhbF9hdWRpbykKKyAgICAgICAgICAgIHNl
bGYuX3N0ZG91dC53cml0ZSgnQ29udGVudC1MZW5ndGg6ICVzXG4nICUgbGVuKG91dHB1dCkpCisg
ICAgICAgICAgICBzZWxmLl9zdGRvdXQud3JpdGUob3V0cHV0KQorICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgc2VsZi5fc3Rkb3V0LndyaXRlKCdDb250ZW50LVR5cGU6IHRleHQvcGxhaW5cbicp
CisgICAgICAgICAgICAjIEZJWE1FOiBOb3RlIHRoYXQgd2UgZG9uJ3QgZW5zdXJlIHRoZXJlIGlz
IGEgdHJhaWxpbmcgbmV3bGluZSEKKyAgICAgICAgICAgICMgVGhpcyBtaXJyb3JzIGFjdHVhbCAo
TWFjKSBEUlQgYmVoYXZpb3IgYnV0IGlzIGEgYnVnLgorICAgICAgICAgICAgc2VsZi5fc3Rkb3V0
LndyaXRlKGFjdHVhbF90ZXh0KQogCi0gICAgICAgICMgRklYTUU6IE5vdGUgdGhhdCB3ZSBkb24n
dCBlbnN1cmUgdGhlcmUgaXMgYSB0cmFpbGluZyBuZXdsaW5lIQotICAgICAgICAjIFRoaXMgbWly
cm9ycyBhY3R1YWwgKE1hYykgRFJUIGJlaGF2aW9yIGJ1dCBpcyBhIGJ1Zy4KLSAgICAgICAgc2Vs
Zi5fc3Rkb3V0LndyaXRlKGFjdHVhbF90ZXh0KQogICAgICAgICBzZWxmLl9zdGRvdXQud3JpdGUo
JyNFT0ZcbicpCiAKICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5waXhlbF90ZXN0cyBhbmQgdGVz
dF9pbnB1dC5jaGVja3N1bToKQEAgLTIyMyw3ICsyMzIsNyBAQCBjbGFzcyBNb2NrRFJUKG9iamVj
dCk6CiAgICAgICAgICAgICBzZWxmLl9zdGRvdXQud3JpdGUoJ0V4cGVjdGVkSGFzaDogJXNcbicg
JSB0ZXN0X2lucHV0LmNoZWNrc3VtKQogICAgICAgICAgICAgaWYgYWN0dWFsX2NoZWNrc3VtICE9
IHRlc3RfaW5wdXQuY2hlY2tzdW06CiAgICAgICAgICAgICAgICAgc2VsZi5fc3Rkb3V0LndyaXRl
KCdDb250ZW50LVR5cGU6IGltYWdlL3BuZ1xuJykKLSAgICAgICAgICAgICAgICBzZWxmLl9zdGRv
dXQud3JpdGUoJ0NvbnRlbnQtTGVuZ3RoOiAlc1xuXG4nICUgbGVuKGFjdHVhbF9pbWFnZSkpCisg
ICAgICAgICAgICAgICAgc2VsZi5fc3Rkb3V0LndyaXRlKCdDb250ZW50LUxlbmd0aDogJXNcbicg
JSBsZW4oYWN0dWFsX2ltYWdlKSkKICAgICAgICAgICAgICAgICBzZWxmLl9zdGRvdXQud3JpdGUo
YWN0dWFsX2ltYWdlKQogICAgICAgICBzZWxmLl9zdGRvdXQud3JpdGUoJyNFT0ZcbicpCiAgICAg
ICAgIHNlbGYuX3N0ZG91dC5mbHVzaCgpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L21vY2tfZHJ0X3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tb2NrX2RydF91bml0dGVzdC5weQppbmRleCBi
NmY2ZThhOTNjMTg5MTBkYmNkOGU2ZmViMmZmN2M0ZGRjOWM2YWVjLi4zNzYwOGY4YzNjMDRhNjFm
YzQwODAwM2U0OTljYzc1N2YzMWIwNDliIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L21vY2tfZHJ0X3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbW9ja19kcnRfdW5pdHRlc3QucHkKQEAg
LTIwMCw3ICsyMDAsNyBAQCBjbGFzcyBNb2NrRFJUVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAg
ICAgICAgICAgICAgICAgICAgICAgICAnQWN0dWFsSGFzaDogY2hlY2tzdW0tY2hlY2tzdW1cbics
CiAgICAgICAgICAgICAgICAgICAgICAgICAnRXhwZWN0ZWRIYXNoOiB3cm9uZy1jaGVja3N1bVxu
JywKICAgICAgICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGU6IGltYWdlL3BuZ1xuJywK
LSAgICAgICAgICAgICAgICAgICAgICAgICdDb250ZW50LUxlbmd0aDogMTNcblxuJywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICdDb250ZW50LUxlbmd0aDogMTNcbicsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAnY2hlY2tzdW1ceDhhLXBuZycsCiAgICAgICAgICAgICAgICAgICAgICAgICAn
I0VPRlxuJ10pCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvdGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvdGVzdC5weQppbmRleCAzMGI0MzNlZTczMzA4MzY2NmM3OTQ4YWVkMGQyYmZiYzNhOWYyNzZk
Li5mMzQzZDQ2NjY0NTNjNmM3OWRmMjUwMzVkOWM5ZTRiNWY0M2UzODZlIDEwMDY0NAotLS0gYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3QucHkKKysrIGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0LnB5CkBAIC0zMCw2ICsz
MCw3IEBACiAiIiJEdW1teSBQb3J0IGltcGxlbWVudGF0aW9uIHVzZWQgZm9yIHRlc3RpbmcuIiIi
CiBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHdpdGhfc3RhdGVtZW50CiAKK2ltcG9ydCBiYXNlNjQK
IGltcG9ydCB0aW1lCiAKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQgZmlsZXN5
c3RlbV9tb2NrCkBAIC02Niw2ICs2Nyw4IEBAIGNsYXNzIFRlc3RJbnN0YW5jZToKICAgICAgICAg
c2VsZi5leHBlY3RlZF9jaGVja3N1bSA9IHNlbGYuYWN0dWFsX2NoZWNrc3VtCiAgICAgICAgIHNl
bGYuZXhwZWN0ZWRfaW1hZ2UgPSBzZWxmLmFjdHVhbF9pbWFnZQogCisgICAgICAgIHNlbGYuYWN0
dWFsX2F1ZGlvID0gTm9uZQorICAgICAgICBzZWxmLmV4cGVjdGVkX2F1ZGlvID0gTm9uZQogCiAj
IFRoaXMgaXMgYW4gaW4tbWVtb3J5IGxpc3Qgb2YgdGVzdHMsIHdoYXQgd2Ugd2FudCB0aGVtIHRv
IHByb2R1Y2UsIGFuZAogIyB3aGF0IHdlIHdhbnQgdG8gY2xhaW0gYXJlIHRoZSBleHBlY3RlZCBy
ZXN1bHRzLgpAQCAtMTExLDExICsxMTQsMjAgQEAgZGVmIHVuaXRfdGVzdF9saXN0KCk6CiAgICAg
dGVzdHMuYWRkKCdmYWlsdXJlcy9leHBlY3RlZC9pbWFnZV9jaGVja3N1bS5odG1sJywKICAgICAg
ICAgICAgICAgYWN0dWFsX2NoZWNrc3VtPSdpbWFnZV9jaGVja3N1bV9mYWlsLWNoZWNrc3VtJywK
ICAgICAgICAgICAgICAgYWN0dWFsX2ltYWdlPSdpbWFnZV9jaGVja3N1bV9mYWlsLXBuZycpCisg
ICAgdGVzdHMuYWRkKCdmYWlsdXJlcy9leHBlY3RlZC9hdWRpby5odG1sJywKKyAgICAgICAgICAg
ICAgYWN0dWFsX2F1ZGlvPWJhc2U2NC5iNjRlbmNvZGUoJ2F1ZGlvX2ZhaWwtd2F2JyksIGV4cGVj
dGVkX2F1ZGlvPSdhdWRpby13YXYnLAorICAgICAgICAgICAgICBhY3R1YWxfdGV4dD1Ob25lLCBl
eHBlY3RlZF90ZXh0PU5vbmUsCisgICAgICAgICAgICAgIGFjdHVhbF9pbWFnZT1Ob25lLCBleHBl
Y3RlZF9pbWFnZT1Ob25lLAorICAgICAgICAgICAgICBhY3R1YWxfY2hlY2tzdW09Tm9uZSwgZXhw
ZWN0ZWRfY2hlY2tzdW09Tm9uZSkKICAgICB0ZXN0cy5hZGQoJ2ZhaWx1cmVzL2V4cGVjdGVkL2tl
eWJvYXJkLmh0bWwnLCBrZXlib2FyZD1UcnVlKQogICAgIHRlc3RzLmFkZCgnZmFpbHVyZXMvZXhw
ZWN0ZWQvbWlzc2luZ19jaGVjay5odG1sJywKICAgICAgICAgICAgICAgZXhwZWN0ZWRfY2hlY2tz
dW09Tm9uZSwKICAgICAgICAgICAgICAgZXhwZWN0ZWRfaW1hZ2U9Tm9uZSkKICAgICB0ZXN0cy5h
ZGQoJ2ZhaWx1cmVzL2V4cGVjdGVkL21pc3NpbmdfaW1hZ2UuaHRtbCcsIGV4cGVjdGVkX2ltYWdl
PU5vbmUpCisgICAgdGVzdHMuYWRkKCdmYWlsdXJlcy9leHBlY3RlZC9taXNzaW5nX2F1ZGlvLmh0
bWwnLCBleHBlY3RlZF9hdWRpbz1Ob25lLAorICAgICAgICAgICAgICBhY3R1YWxfdGV4dD1Ob25l
LCBleHBlY3RlZF90ZXh0PU5vbmUsCisgICAgICAgICAgICAgIGFjdHVhbF9pbWFnZT1Ob25lLCBl
eHBlY3RlZF9pbWFnZT1Ob25lLAorICAgICAgICAgICAgICBhY3R1YWxfY2hlY2tzdW09Tm9uZSwg
ZXhwZWN0ZWRfY2hlY2tzdW09Tm9uZSkKICAgICB0ZXN0cy5hZGQoJ2ZhaWx1cmVzL2V4cGVjdGVk
L21pc3NpbmdfdGV4dC5odG1sJywgZXhwZWN0ZWRfdGV4dD1Ob25lKQogICAgIHRlc3RzLmFkZCgn
ZmFpbHVyZXMvZXhwZWN0ZWQvbmV3bGluZXNfbGVhZGluZy5odG1sJywKICAgICAgICAgICAgICAg
ZXhwZWN0ZWRfdGV4dD0iXG5mb29cbiIsIGFjdHVhbF90ZXh0PSJmb29cbiIpCkBAIC0xMzQsNiAr
MTQ2LDExIEBAIGRlZiB1bml0X3Rlc3RfbGlzdCgpOgogICAgIHRlc3RzLmFkZCgnaHR0cC90ZXN0
cy9zc2wvdGV4dC5odG1sJykKICAgICB0ZXN0cy5hZGQoJ3Bhc3Nlcy9lcnJvci5odG1sJywgZXJy
b3I9J3N0dWZmIGdvaW5nIHRvIHN0ZGVycicpCiAgICAgdGVzdHMuYWRkKCdwYXNzZXMvaW1hZ2Uu
aHRtbCcpCisgICAgdGVzdHMuYWRkKCdwYXNzZXMvYXVkaW8uaHRtbCcsCisgICAgICAgICAgICAg
IGFjdHVhbF9hdWRpbz1iYXNlNjQuYjY0ZW5jb2RlKCdhdWRpby13YXYnKSwgZXhwZWN0ZWRfYXVk
aW89J2F1ZGlvLXdhdicsCisgICAgICAgICAgICAgIGFjdHVhbF90ZXh0PU5vbmUsIGV4cGVjdGVk
X3RleHQ9Tm9uZSwKKyAgICAgICAgICAgICAgYWN0dWFsX2ltYWdlPU5vbmUsIGV4cGVjdGVkX2lt
YWdlPU5vbmUsCisgICAgICAgICAgICAgIGFjdHVhbF9jaGVja3N1bT1Ob25lLCBleHBlY3RlZF9j
aGVja3N1bT1Ob25lKQogICAgIHRlc3RzLmFkZCgncGFzc2VzL3BsYXRmb3JtX2ltYWdlLmh0bWwn
KQogICAgIHRlc3RzLmFkZCgncGFzc2VzL2NoZWNrc3VtX2luX2ltYWdlLmh0bWwnLAogICAgICAg
ICAgICAgICBleHBlY3RlZF9jaGVja3N1bT1Ob25lLApAQCAtMTg0LDIwICsyMDEsMjcgQEAgZGVm
IHVuaXRfdGVzdF9maWxlc3lzdGVtKGZpbGVzPU5vbmUpOgogICAgICAgICBhZGRfZmlsZShmaWxl
cywgdGVzdCwgJy5odG1sJywgJycpCiAgICAgICAgIGlmIHRlc3QuaXNfcmVmdGVzdDoKICAgICAg
ICAgICAgIGNvbnRpbnVlCisgICAgICAgIGlmIHRlc3QuYWN0dWFsX2F1ZGlvOgorICAgICAgICAg
ICAgYWRkX2ZpbGUoZmlsZXMsIHRlc3QsICctZXhwZWN0ZWQud2F2JywgdGVzdC5leHBlY3RlZF9h
dWRpbykKKyAgICAgICAgICAgIGNvbnRpbnVlCisKICAgICAgICAgYWRkX2ZpbGUoZmlsZXMsIHRl
c3QsICctZXhwZWN0ZWQudHh0JywgdGVzdC5leHBlY3RlZF90ZXh0KQogICAgICAgICBhZGRfZmls
ZShmaWxlcywgdGVzdCwgJy1leHBlY3RlZC5jaGVja3N1bScsIHRlc3QuZXhwZWN0ZWRfY2hlY2tz
dW0pCiAgICAgICAgIGFkZF9maWxlKGZpbGVzLCB0ZXN0LCAnLWV4cGVjdGVkLnBuZycsIHRlc3Qu
ZXhwZWN0ZWRfaW1hZ2UpCiAKKwogICAgICMgQWRkIHRoZSB0ZXN0X2V4cGVjdGF0aW9ucyBmaWxl
LgogICAgIGZpbGVzW0xBWU9VVF9URVNUX0RJUiArICcvcGxhdGZvcm0vdGVzdC90ZXN0X2V4cGVj
dGF0aW9ucy50eHQnXSA9ICIiIgogV09OVEZJWCA6IGZhaWx1cmVzL2V4cGVjdGVkL2NoZWNrc3Vt
Lmh0bWwgPSBJTUFHRQogV09OVEZJWCA6IGZhaWx1cmVzL2V4cGVjdGVkL2NyYXNoLmh0bWwgPSBD
UkFTSAogLy8gVGhpcyBvbmUgYWN0dWFsbHkgcGFzc2VzIGJlY2F1c2UgdGhlIGNoZWNrc3VtcyB3
aWxsIG1hdGNoLgogV09OVEZJWCA6IGZhaWx1cmVzL2V4cGVjdGVkL2ltYWdlLmh0bWwgPSBQQVNT
CitXT05URklYIDogZmFpbHVyZXMvZXhwZWN0ZWQvYXVkaW8uaHRtbCA9IEFVRElPCiBXT05URklY
IDogZmFpbHVyZXMvZXhwZWN0ZWQvaW1hZ2VfY2hlY2tzdW0uaHRtbCA9IElNQUdFCiBXT05URklY
IDogZmFpbHVyZXMvZXhwZWN0ZWQvbWlzbWF0Y2guaHRtbCA9IElNQUdFCiBXT05URklYIDogZmFp
bHVyZXMvZXhwZWN0ZWQvbWlzc2luZ19jaGVjay5odG1sID0gTUlTU0lORyBQQVNTCiBXT05URklY
IDogZmFpbHVyZXMvZXhwZWN0ZWQvbWlzc2luZ19pbWFnZS5odG1sID0gTUlTU0lORyBQQVNTCitX
T05URklYIDogZmFpbHVyZXMvZXhwZWN0ZWQvbWlzc2luZ19hdWRpby5odG1sID0gTUlTU0lORyBQ
QVNTCiBXT05URklYIDogZmFpbHVyZXMvZXhwZWN0ZWQvbWlzc2luZ190ZXh0Lmh0bWwgPSBNSVNT
SU5HIFBBU1MKIFdPTlRGSVggOiBmYWlsdXJlcy9leHBlY3RlZC9uZXdsaW5lc19sZWFkaW5nLmh0
bWwgPSBURVhUCiBXT05URklYIDogZmFpbHVyZXMvZXhwZWN0ZWQvbmV3bGluZXNfdHJhaWxpbmcu
aHRtbCA9IFRFWFQKQEAgLTQxMiwxMCArNDM2LDEzIEBAIGNsYXNzIFRlc3REcml2ZXIoYmFzZS5E
cml2ZXIpOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignZXhjZXB0aW9uIGZyb20gJyAr
IHRlc3RfbmFtZSkKICAgICAgICAgaWYgdGVzdC5oYW5nOgogICAgICAgICAgICAgdGltZS5zbGVl
cCgoZmxvYXQodGVzdF9pbnB1dC50aW1lb3V0KSAqIDQpIC8gMTAwMC4wKQotICAgICAgICByZXR1
cm4gYmFzZS5Ecml2ZXJPdXRwdXQodGVzdC5hY3R1YWxfdGV4dCwgdGVzdC5hY3R1YWxfaW1hZ2Us
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0LmFjdHVhbF9jaGVja3N1bSwg
dGVzdC5jcmFzaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWUudGltZSgp
IC0gc3RhcnRfdGltZSwgdGVzdC50aW1lb3V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdGVzdC5lcnJvcikKKworICAgICAgICBhdWRpbyA9IE5vbmUKKyAgICAgICAgaWYgdGVz
dC5hY3R1YWxfYXVkaW86CisgICAgICAgICAgICBhdWRpbyA9IGJhc2U2NC5iNjRkZWNvZGUodGVz
dC5hY3R1YWxfYXVkaW8pCisgICAgICAgIHJldHVybiBiYXNlLkRyaXZlck91dHB1dCh0ZXh0PXRl
c3QuYWN0dWFsX3RleHQsIGltYWdlPXRlc3QuYWN0dWFsX2ltYWdlLAorICAgICAgICAgICAgaW1h
Z2VfaGFzaD10ZXN0LmFjdHVhbF9jaGVja3N1bSwgYXVkaW89YXVkaW8sIGNyYXNoPXRlc3QuY3Jh
c2gsCisgICAgICAgICAgICB0ZXN0X3RpbWU9dGltZS50aW1lKCkgLSBzdGFydF90aW1lLCB0aW1l
b3V0PXRlc3QudGltZW91dCwgZXJyb3I9dGVzdC5lcnJvcikKIAogICAgIGRlZiBzdGFydChzZWxm
KToKICAgICAgICAgcGFzcwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC93ZWJraXQucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L3dlYmtpdC5weQppbmRleCAyMTUwZTRjY2U1YmYyNDVkN2M4OGQxOWFjM2M0YmI0
MGU1ZDEwZTU1Li4xZWU4YTY0YjBhZjgyMTgwYWYxODg0Y2ExMTI5Y2NjZDVlZjUyZWI5IDEwMDY0
NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5w
eQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5w
eQpAQCAtMzAsNyArMzAsNyBAQAogCiAiIiJXZWJLaXQgaW1wbGVtZW50YXRpb25zIG9mIHRoZSBQ
b3J0IGludGVyZmFjZS4iIiIKIAotCitpbXBvcnQgYmFzZTY0CiBpbXBvcnQgbG9nZ2luZwogaW1w
b3J0IG9wZXJhdG9yCiBpbXBvcnQgb3MKQEAgLTQwNiw1MSArNDA2LDI0IEBAIGNsYXNzIFdlYktp
dERyaXZlcihiYXNlLkRyaXZlcik6CiAgICAgICAgIHN0YXJ0X3RpbWUgPSB0aW1lLnRpbWUoKQog
ICAgICAgICBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy53cml0ZShjb21tYW5kKQogCi0gICAgICAgIGhh
dmVfc2Vlbl9jb250ZW50X3R5cGUgPSBGYWxzZQotICAgICAgICBhY3R1YWxfaW1hZ2VfaGFzaCA9
IE5vbmUKLSAgICAgICAgb3V0cHV0ID0gc3RyKCkgICMgVXNlIGEgYnl0ZSBhcnJheSBmb3Igb3V0
cHV0LCBldmVuIHRob3VnaCBpdCBzaG91bGQgYmUgVVRGLTguCiAgICAgICAgIHRleHQgPSBOb25l
CiAgICAgICAgIGltYWdlID0gTm9uZQorICAgICAgICBhY3R1YWxfaW1hZ2VfaGFzaCA9IE5vbmUK
KyAgICAgICAgYXVkaW8gPSBOb25lCisgICAgICAgIGRlYWRsaW5lID0gdGltZS50aW1lKCkgKyBp
bnQoZHJpdmVyX2lucHV0LnRpbWVvdXQpIC8gMTAwMC4wCiAKLSAgICAgICAgdGltZW91dCA9IGlu
dChkcml2ZXJfaW5wdXQudGltZW91dCkgLyAxMDAwLjAKLSAgICAgICAgZGVhZGxpbmUgPSB0aW1l
LnRpbWUoKSArIHRpbWVvdXQKLSAgICAgICAgbGluZSA9IHNlbGYuX3NlcnZlcl9wcm9jZXNzLnJl
YWRfbGluZSh0aW1lb3V0KQotICAgICAgICB3aGlsZSAobm90IHNlbGYuX3NlcnZlcl9wcm9jZXNz
LnRpbWVkX291dAotICAgICAgICAgICAgICAgYW5kIG5vdCBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5j
cmFzaGVkCi0gICAgICAgICAgICAgICBhbmQgbGluZS5yc3RyaXAoKSAhPSAiI0VPRiIpOgotICAg
ICAgICAgICAgaWYgKGxpbmUuc3RhcnRzd2l0aCgnQ29udGVudC1UeXBlOicpIGFuZCBub3QKLSAg
ICAgICAgICAgICAgICBoYXZlX3NlZW5fY29udGVudF90eXBlKToKLSAgICAgICAgICAgICAgICBo
YXZlX3NlZW5fY29udGVudF90eXBlID0gVHJ1ZQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAg
ICAgICAgICAjIE5vdGU6IFRleHQgb3V0cHV0IGZyb20gRHVtcFJlbmRlclRyZWUgaXMgYWx3YXlz
IFVURi04LgotICAgICAgICAgICAgICAgICMgSG93ZXZlciwgc29tZSB0ZXN0cyAoZS5nLiB3ZWJh
cmNoaXZlcykgc3BpdCBvdXQgYmluYXJ5Ci0gICAgICAgICAgICAgICAgIyBkYXRhIGluc3RlYWQg
b2YgdGV4dC4gIFNvIHRvIG1ha2UgdGhpbmdzIHNpbXBsZSwgd2UKLSAgICAgICAgICAgICAgICAj
IGFsd2F5cyB0cmVhdCB0aGUgb3V0cHV0IGFzIGJpbmFyeS4KLSAgICAgICAgICAgICAgICBvdXRw
dXQgKz0gbGluZQotICAgICAgICAgICAgbGluZSA9IHNlbGYuX3NlcnZlcl9wcm9jZXNzLnJlYWRf
bGluZSh0aW1lb3V0KQotICAgICAgICAgICAgdGltZW91dCA9IGRlYWRsaW5lIC0gdGltZS50aW1l
KCkKLQotICAgICAgICBpZiBvdXRwdXQ6Ci0gICAgICAgICAgICB0ZXh0ID0gb3V0cHV0CisgICAg
ICAgICMgRmlyc3QgYmxvY2sgaXMgZWl0aGVyIHRleHQgb3IgYXVkaW8KKyAgICAgICAgYmxvY2sg
PSBzZWxmLl9yZWFkX2Jsb2NrKGRlYWRsaW5lKQorICAgICAgICBpZiBibG9jay5jb250ZW50X3R5
cGUgPT0gJ2F1ZGlvL3dhdic6CisgICAgICAgICAgICBhdWRpbyA9IGJsb2NrLmRlY29kZWRfY29u
dGVudAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgdGV4dCA9IGJsb2NrLmRlY29kZWRfY29u
dGVudAogCi0gICAgICAgICMgTm93IHJlYWQgYSBzZWNvbmQgYmxvY2sgb2YgdGV4dCBmb3IgdGhl
IG9wdGlvbmFsIGltYWdlIGRhdGEKLSAgICAgICAgcmVtYWluaW5nX2xlbmd0aCA9IC0xCi0gICAg
ICAgIEhBU0hfSEVBREVSID0gJ0FjdHVhbEhhc2g6ICcKLSAgICAgICAgTEVOR1RIX0hFQURFUiA9
ICdDb250ZW50LUxlbmd0aDogJwotICAgICAgICBsaW5lID0gc2VsZi5fc2VydmVyX3Byb2Nlc3Mu
cmVhZF9saW5lKHRpbWVvdXQpCi0gICAgICAgIHdoaWxlIChub3Qgc2VsZi5fc2VydmVyX3Byb2Nl
c3MudGltZWRfb3V0Ci0gICAgICAgICAgICAgICBhbmQgbm90IHNlbGYuX3NlcnZlcl9wcm9jZXNz
LmNyYXNoZWQKLSAgICAgICAgICAgICAgIGFuZCBsaW5lLnJzdHJpcCgpICE9ICIjRU9GIik6Ci0g
ICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoSEFTSF9IRUFERVIpOgotICAgICAgICAgICAg
ICAgIGFjdHVhbF9pbWFnZV9oYXNoID0gbGluZVtsZW4oSEFTSF9IRUFERVIpOl0uc3RyaXAoKQot
ICAgICAgICAgICAgZWxpZiBsaW5lLnN0YXJ0c3dpdGgoJ0NvbnRlbnQtVHlwZTonKToKLSAgICAg
ICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICBlbGlmIGxpbmUuc3RhcnRzd2l0aChMRU5HVEhf
SEVBREVSKToKLSAgICAgICAgICAgICAgICB0aW1lb3V0ID0gZGVhZGxpbmUgLSB0aW1lLnRpbWUo
KQotICAgICAgICAgICAgICAgIGNvbnRlbnRfbGVuZ3RoID0gaW50KGxpbmVbbGVuKExFTkdUSF9I
RUFERVIpOl0pCi0gICAgICAgICAgICAgICAgaW1hZ2UgPSBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5y
ZWFkKHRpbWVvdXQsIGNvbnRlbnRfbGVuZ3RoKQotICAgICAgICAgICAgdGltZW91dCA9IGRlYWRs
aW5lIC0gdGltZS50aW1lKCkKLSAgICAgICAgICAgIGxpbmUgPSBzZWxmLl9zZXJ2ZXJfcHJvY2Vz
cy5yZWFkX2xpbmUodGltZW91dCkKKyAgICAgICAgIyBOb3cgcmVhZCBhbiBvcHRpb25hbCBzZWNv
bmQgYmxvY2sgb2YgaW1hZ2UgZGF0YQorICAgICAgICBibG9jayA9IHNlbGYuX3JlYWRfYmxvY2so
ZGVhZGxpbmUpCisgICAgICAgIGlmIGJsb2NrLmNvbnRlbnQgYW5kIGJsb2NrLmNvbnRlbnRfdHlw
ZSA9PSAnaW1hZ2UvcG5nJzoKKyAgICAgICAgICAgIGltYWdlID0gYmxvY2suZGVjb2RlZF9jb250
ZW50CisgICAgICAgICAgICBhY3R1YWxfaW1hZ2VfaGFzaCA9IGJsb2NrLmNvbnRlbnRfaGFzaAog
CiAgICAgICAgIGVycm9yX2xpbmVzID0gc2VsZi5fc2VydmVyX3Byb2Nlc3MuZXJyb3Iuc3BsaXRs
aW5lcygpCiAgICAgICAgICMgRklYTUU6IFRoaXMgaXMgYSBoYWNrLiAgSXQgaXMgdW5jbGVhciB3
aHkgc29tZXRpbWVzCkBAIC00NjIsMTMgKzQzNSw1OSBAQCBjbGFzcyBXZWJLaXREcml2ZXIoYmFz
ZS5Ecml2ZXIpOgogICAgICAgICAjIEZJWE1FOiBUaGlzIHNlZW1zIGxpa2UgdGhlIHdyb25nIHNl
Y3Rpb24gb2YgY29kZSB0byBiZSBkb2luZwogICAgICAgICAjIHRoaXMgcmVzZXQgaW4uCiAgICAg
ICAgIHNlbGYuX3NlcnZlcl9wcm9jZXNzLmVycm9yID0gIiIKLSAgICAgICAgcmV0dXJuIGJhc2Uu
RHJpdmVyT3V0cHV0KHRleHQsIGltYWdlLCBhY3R1YWxfaW1hZ2VfaGFzaCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3NlcnZlcl9wcm9jZXNzLmNyYXNoZWQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lLnRpbWUoKSAtIHN0YXJ0X3RpbWUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy50aW1l
ZF9vdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcikKKyAgICAgICAg
cmV0dXJuIGJhc2UuRHJpdmVyT3V0cHV0KHRleHQ9dGV4dCwgaW1hZ2U9aW1hZ2UsIGltYWdlX2hh
c2g9YWN0dWFsX2ltYWdlX2hhc2gsCisgICAgICAgICAgICBhdWRpbz1hdWRpbywgY3Jhc2g9c2Vs
Zi5fc2VydmVyX3Byb2Nlc3MuY3Jhc2hlZCwgdGVzdF90aW1lPXRpbWUudGltZSgpIC0gc3RhcnRf
dGltZSwKKyAgICAgICAgICAgIHRpbWVvdXQ9c2VsZi5fc2VydmVyX3Byb2Nlc3MudGltZWRfb3V0
LCBlcnJvcj1lcnJvcikKKworICAgIGRlZiBfcmVhZF9ibG9jayhzZWxmLCBkZWFkbGluZSk6Cisg
ICAgICAgIExFTkdUSF9IRUFERVIgPSAnQ29udGVudC1MZW5ndGg6ICcKKyAgICAgICAgSEFTSF9I
RUFERVIgPSAnQWN0dWFsSGFzaDogJworICAgICAgICBUWVBFX0hFQURFUiA9ICdDb250ZW50LVR5
cGU6ICcKKyAgICAgICAgRU5DT0RJTkdfSEVBREVSID0gJ0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rp
bmc6ICcKKyAgICAgICAgY29udGVudF90eXBlID0gTm9uZQorICAgICAgICBlbmNvZGluZyA9IE5v
bmUKKyAgICAgICAgY29udGVudF9oYXNoID0gTm9uZQorICAgICAgICBjb250ZW50X2xlbmd0aCA9
IE5vbmUKKworICAgICAgICAjIENvbnRlbnQgaXMgdHJlYXRlZCBhcyBiaW5hcnkgZGF0YSBldmVu
IHRob3VnaCB0aGUgdGV4dCBvdXRwdXQKKyAgICAgICAgIyBpcyB1c3VhbGx5IFVURi04LgorICAg
ICAgICBjb250ZW50ID0gJycKKyAgICAgICAgdGltZW91dCA9IGRlYWRsaW5lIC0gdGltZS50aW1l
KCkKKyAgICAgICAgbGluZSA9IHNlbGYuX3NlcnZlcl9wcm9jZXNzLnJlYWRfbGluZSh0aW1lb3V0
KQorICAgICAgICB3aGlsZSAobm90IHNlbGYuX3NlcnZlcl9wcm9jZXNzLnRpbWVkX291dAorICAg
ICAgICAgICAgICAgYW5kIG5vdCBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5jcmFzaGVkCisgICAgICAg
ICAgICAgICBhbmQgbGluZS5yc3RyaXAoKSAhPSAiI0VPRiIpOgorICAgICAgICAgICAgaWYgbGlu
ZS5zdGFydHN3aXRoKFRZUEVfSEVBREVSKSBhbmQgY29udGVudF90eXBlIGlzIE5vbmU6CisgICAg
ICAgICAgICAgICAgY29udGVudF90eXBlID0gbGluZS5zcGxpdCgpWzFdCisgICAgICAgICAgICBl
bGlmIGxpbmUuc3RhcnRzd2l0aChFTkNPRElOR19IRUFERVIpIGFuZCBlbmNvZGluZyBpcyBOb25l
OgorICAgICAgICAgICAgICAgIGVuY29kaW5nID0gbGluZS5zcGxpdCgpWzFdCisgICAgICAgICAg
ICBlbGlmIGxpbmUuc3RhcnRzd2l0aChMRU5HVEhfSEVBREVSKSBhbmQgY29udGVudF9sZW5ndGgg
aXMgTm9uZToKKyAgICAgICAgICAgICAgICB0aW1lb3V0ID0gZGVhZGxpbmUgLSB0aW1lLnRpbWUo
KQorICAgICAgICAgICAgICAgIGNvbnRlbnRfbGVuZ3RoID0gaW50KGxpbmVbbGVuKExFTkdUSF9I
RUFERVIpOl0pCisgICAgICAgICAgICAgICAgIyBGSVhNRTogVGVjaG5pY2FsbHkgdGhlcmUgc2hv
dWxkIHByb2JhYmx5IGJlIGFub3RoZXIgYmxhbmsKKyAgICAgICAgICAgICAgICAjIGxpbmUgaGVy
ZSwgYnV0IERSVCBkb2Vzbid0IHdyaXRlIG9uZS4KKyAgICAgICAgICAgICAgICBjb250ZW50ID0g
c2VsZi5fc2VydmVyX3Byb2Nlc3MucmVhZCh0aW1lb3V0LCBjb250ZW50X2xlbmd0aCkKKyAgICAg
ICAgICAgIGVsaWYgbGluZS5zdGFydHN3aXRoKEhBU0hfSEVBREVSKToKKyAgICAgICAgICAgICAg
ICBjb250ZW50X2hhc2ggPSBsaW5lLnNwbGl0KClbMV0KKyAgICAgICAgICAgIGVsc2U6CisgICAg
ICAgICAgICAgICAgY29udGVudCArPSBsaW5lCisgICAgICAgICAgICBsaW5lID0gc2VsZi5fc2Vy
dmVyX3Byb2Nlc3MucmVhZF9saW5lKHRpbWVvdXQpCisgICAgICAgICAgICB0aW1lb3V0ID0gZGVh
ZGxpbmUgLSB0aW1lLnRpbWUoKQorICAgICAgICByZXR1cm4gQ29udGVudEJsb2NrKGNvbnRlbnRf
dHlwZSwgZW5jb2RpbmcsIGNvbnRlbnRfaGFzaCwgY29udGVudCkKIAogICAgIGRlZiBzdG9wKHNl
bGYpOgogICAgICAgICBpZiBzZWxmLl9zZXJ2ZXJfcHJvY2VzczoKICAgICAgICAgICAgIHNlbGYu
X3NlcnZlcl9wcm9jZXNzLnN0b3AoKQogICAgICAgICAgICAgc2VsZi5fc2VydmVyX3Byb2Nlc3Mg
PSBOb25lCisKKworY2xhc3MgQ29udGVudEJsb2NrKG9iamVjdCk6CisgICAgZGVmIF9faW5pdF9f
KHNlbGYsIGNvbnRlbnRfdHlwZSwgZW5jb2RpbmcsIGNvbnRlbnRfaGFzaCwgY29udGVudCk6Cisg
ICAgICAgIHNlbGYuY29udGVudF90eXBlID0gY29udGVudF90eXBlCisgICAgICAgIHNlbGYuZW5j
b2RpbmcgPSBlbmNvZGluZworICAgICAgICBzZWxmLmNvbnRlbnRfaGFzaCA9IGNvbnRlbnRfaGFz
aAorICAgICAgICBzZWxmLmNvbnRlbnQgPSBjb250ZW50CisgICAgICAgIGlmIHNlbGYuZW5jb2Rp
bmcgPT0gJ2Jhc2U2NCc6CisgICAgICAgICAgICBzZWxmLmRlY29kZWRfY29udGVudCA9IGJhc2U2
NC5iNjRkZWNvZGUoY29udGVudCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZGVj
b2RlZF9jb250ZW50ID0gY29udGVudAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88857</attachid>
            <date>2011-04-08 12:29:03 -0700</date>
            <delta_ts>2011-04-08 13:06:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-57987-20110408122902.patch</filename>
            <type>text/plain</type>
            <size>34186</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODMwOTcKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCBhMWJhZTQ2MDEyODdmN2U3ZGJjMThkMjMzZWMxZGVkMGRl
NmQzMDRjLi5lMDExZGVhOTY2YjMwMWE3YTNjZjg4OTVjMzkxOTlkNTg5NDYzZjljIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEg
QEAKKzIwMTEtMDQtMDcgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgbmV3LXJ1bi13ZWJr
aXQtdGVzdHM6IGltcGxlbWVudCBzdXBwb3J0IGZvciBhdWRpbyB0ZXN0cy4KKworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTc5ODcKKworICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2pzb25fbGF5b3V0
X3Jlc3VsdHNfZ2VuZXJhdG9yLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL2xheW91dF9wYWNrYWdlL3NpbmdsZV90ZXN0X3J1bm5lci5weToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2V4cGVjdGF0
aW9ucy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRf
cGFja2FnZS90ZXN0X2ZhaWx1cmVzLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfcmVzdWx0X3dyaXRlci5weToKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHk6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0LnB5OgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbW9ja19kcnQucHk6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXQucHk6CisKIDIwMTEtMDQt
MDYgIENocmlzIFJvZ2VycyAgPGNyb2dlcnNAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2pzb25fbGF5b3V0X3Jlc3VsdHNfZ2VuZXJhdG9y
LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2Uv
anNvbl9sYXlvdXRfcmVzdWx0c19nZW5lcmF0b3IucHkKaW5kZXggMTliMDJlODU2NjM3Yjc2MzU2
MDNmOGFhNjcxYzA3ZDM0YjBjYWU0OC4uZGJiMTZjMDNlMjYzMzM1MDk0MTIwZWNlYWU4YzcwNjdk
OGQ3ODBmMSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
bGF5b3V0X3BhY2thZ2UvanNvbl9sYXlvdXRfcmVzdWx0c19nZW5lcmF0b3IucHkKKysrIGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvanNvbl9sYXlv
dXRfcmVzdWx0c19nZW5lcmF0b3IucHkKQEAgLTUwLDYgKzUwLDcgQEAgY2xhc3MgSlNPTkxheW91
dFJlc3VsdHNHZW5lcmF0b3IoanNvbl9yZXN1bHRzX2dlbmVyYXRvci5KU09OUmVzdWx0c0dlbmVy
YXRvckJhc2UKICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9leHBlY3RhdGlvbnMuSU1BR0U6
ICJJIiwKICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9leHBlY3RhdGlvbnMuVEVYVDogIkYi
LAogICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2V4cGVjdGF0aW9ucy5NSVNTSU5HOiAiTyIs
CisgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfZXhwZWN0YXRpb25zLkFVRElPOiAiQSIsCiAg
ICAgICAgICAgICAgICAgICAgICAgIHRlc3RfZXhwZWN0YXRpb25zLklNQUdFX1BMVVNfVEVYVDog
IloifQogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBvcnQsIGJ1aWxkZXJfbmFtZSwgYnVpbGRf
bmFtZSwgYnVpbGRfbnVtYmVyLApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2Uvc2luZ2xlX3Rlc3RfcnVubmVyLnB5IGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2Uvc2luZ2xlX3Rlc3Rf
cnVubmVyLnB5CmluZGV4IGU2YmJmYjYzZjFjMmMxNjY4OGVkZDVlYzlmZTAxOTdhNDJhNzA4MjIu
Ljc5N2EzNDIxY2Y4YjlhOTQ0YTY3OGZkYjgyOWYyYTAzYjcwMDA0MWUgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3NpbmdsZV90
ZXN0X3J1bm5lci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9s
YXlvdXRfcGFja2FnZS9zaW5nbGVfdGVzdF9ydW5uZXIucHkKQEAgLTgyLDcgKzgyLDcgQEAgY2xh
c3MgU2luZ2xlVGVzdFJ1bm5lcjoKICAgICAgICAgICAgICMgRm9yIGV4YW1wbGUsIGlmICdmb28u
aHRtbCcgaGFzIHR3byBleHBlY3RhdGlvbiBmaWxlcywgJ2Zvby1leHBlY3RlZC5odG1sJyBhbmQK
ICAgICAgICAgICAgICMgJ2Zvby1leHBlY3RlZC50eHQnLCB3ZSBzaG91bGQgd2FybiB1c2Vycy4g
T25lIHRlc3QgZmlsZSBtdXN0IGJlIHVzZWQgZXhjbHVzaXZlbHkKICAgICAgICAgICAgICMgaW4g
ZWl0aGVyIGxheW91dCB0ZXN0cyBvciByZWZ0ZXN0cywgYnV0IG5vdCBpbiBib3RoLgotICAgICAg
ICAgICAgZm9yIHN1ZmZpeCBpbiBbJy50eHQnLCAnLmNoZWNrc3VtJywgJy5wbmcnXToKKyAgICAg
ICAgICAgIGZvciBzdWZmaXggaW4gKCcudHh0JywgJy5jaGVja3N1bScsICcucG5nJywgJy53YXYn
KToKICAgICAgICAgICAgICAgICBleHBlY3RlZF9maWxlbmFtZSA9IHNlbGYuX3BvcnQuZXhwZWN0
ZWRfZmlsZW5hbWUoc2VsZi5fZmlsZW5hbWUsIHN1ZmZpeCkKICAgICAgICAgICAgICAgICBpZiBm
cy5leGlzdHMoZXhwZWN0ZWRfZmlsZW5hbWUpOgogICAgICAgICAgICAgICAgICAgICBfbG9nLmVy
cm9yKCdUaGUgcmVmdGVzdCAoJXMpIGNhbiBub3QgaGF2ZSBhbiBleHBlY3RhdGlvbiBmaWxlICgl
cykuJwpAQCAtOTEsNyArOTEsOCBAQCBjbGFzcyBTaW5nbGVUZXN0UnVubmVyOgogICAgIGRlZiBf
ZXhwZWN0ZWRfZHJpdmVyX291dHB1dChzZWxmKToKICAgICAgICAgcmV0dXJuIGJhc2UuRHJpdmVy
T3V0cHV0KHNlbGYuX3BvcnQuZXhwZWN0ZWRfdGV4dChzZWxmLl9maWxlbmFtZSksCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9wb3J0LmV4cGVjdGVkX2ltYWdlKHNlbGYu
X2ZpbGVuYW1lKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3BvcnQu
ZXhwZWN0ZWRfY2hlY2tzdW0oc2VsZi5fZmlsZW5hbWUpKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2VsZi5fcG9ydC5leHBlY3RlZF9jaGVja3N1bShzZWxmLl9maWxlbmFtZSks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9wb3J0LmV4cGVjdGVkX2F1
ZGlvKHNlbGYuX2ZpbGVuYW1lKSkKIAogICAgIGRlZiBfc2hvdWxkX2ZldGNoX2V4cGVjdGVkX2No
ZWNrc3VtKHNlbGYpOgogICAgICAgICByZXR1cm4gKHNlbGYuX29wdGlvbnMucGl4ZWxfdGVzdHMg
YW5kCkBAIC0xNDIsNiArMTQzLDkgQEAgY2xhc3MgU2luZ2xlVGVzdFJ1bm5lcjoKICAgICAgICAg
IyBEdW1wUmVuZGVyVHJlZSBtYXkgbm90IG91dHB1dCB1dGYtOCB0ZXh0IChlLmcuIHdlYmFyY2hp
dmVzKS4KICAgICAgICAgc2VsZi5fc2F2ZV9iYXNlbGluZV9kYXRhKGRyaXZlcl9vdXRwdXQudGV4
dCwgIi50eHQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGVfbmV3
X2Jhc2VsaW5lPXNlbGYuX29wdGlvbnMubmV3X2Jhc2VsaW5lKQorICAgICAgICBpZiBkcml2ZXJf
b3V0cHV0LmF1ZGlvOgorICAgICAgICAgICAgc2VsZi5fc2F2ZV9iYXNlbGluZV9kYXRhKGRyaXZl
cl9vdXRwdXQuYXVkaW8sICcud2F2JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBnZW5lcmF0ZV9uZXdfYmFzZWxpbmU9c2VsZi5fb3B0aW9ucy5uZXdfYmFzZWxpbmUpCiAg
ICAgICAgIGlmIHNlbGYuX29wdGlvbnMucGl4ZWxfdGVzdHMgYW5kIGRyaXZlcl9vdXRwdXQuaW1h
Z2VfaGFzaDoKICAgICAgICAgICAgIHNlbGYuX3NhdmVfYmFzZWxpbmVfZGF0YShkcml2ZXJfb3V0
cHV0LmltYWdlLCAiLnBuZyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Z2VuZXJhdGVfbmV3X2Jhc2VsaW5lPXNlbGYuX29wdGlvbnMubmV3X2Jhc2VsaW5lKQpAQCAtMjE2
LDYgKzIyMCw3IEBAIGNsYXNzIFNpbmdsZVRlc3RSdW5uZXI6CiAgICAgICAgICAgICByZXR1cm4g
VGVzdFJlc3VsdChzZWxmLl9maWxlbmFtZSwgZmFpbHVyZXMsIGRyaXZlcl9vdXRwdXQudGVzdF90
aW1lKQogCiAgICAgICAgIGZhaWx1cmVzLmV4dGVuZChzZWxmLl9jb21wYXJlX3RleHQoZHJpdmVy
X291dHB1dC50ZXh0LCBleHBlY3RlZF9kcml2ZXJfb3V0cHV0LnRleHQpKQorICAgICAgICBmYWls
dXJlcy5leHRlbmQoc2VsZi5fY29tcGFyZV9hdWRpbyhkcml2ZXJfb3V0cHV0LmF1ZGlvLCBleHBl
Y3RlZF9kcml2ZXJfb3V0cHV0LmF1ZGlvKSkKICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5waXhl
bF90ZXN0czoKICAgICAgICAgICAgIGZhaWx1cmVzLmV4dGVuZChzZWxmLl9jb21wYXJlX2ltYWdl
KGRyaXZlcl9vdXRwdXQsIGV4cGVjdGVkX2RyaXZlcl9vdXRwdXQpKQogICAgICAgICByZXR1cm4g
VGVzdFJlc3VsdChzZWxmLl9maWxlbmFtZSwgZmFpbHVyZXMsIGRyaXZlcl9vdXRwdXQudGVzdF90
aW1lKQpAQCAtMjMxLDYgKzIzNiwxNSBAQCBjbGFzcyBTaW5nbGVUZXN0UnVubmVyOgogICAgICAg
ICAgICAgZmFpbHVyZXMuYXBwZW5kKHRlc3RfZmFpbHVyZXMuRmFpbHVyZU1pc3NpbmdSZXN1bHQo
KSkKICAgICAgICAgcmV0dXJuIGZhaWx1cmVzCiAKKyAgICBkZWYgX2NvbXBhcmVfYXVkaW8oc2Vs
ZiwgYWN0dWFsX2F1ZGlvLCBleHBlY3RlZF9hdWRpbyk6CisgICAgICAgIGZhaWx1cmVzID0gW10K
KyAgICAgICAgaWYgKGV4cGVjdGVkX2F1ZGlvIGFuZCBhY3R1YWxfYXVkaW8gYW5kCisgICAgICAg
ICAgICBzZWxmLl9wb3J0LmNvbXBhcmVfYXVkaW8oYWN0dWFsX2F1ZGlvLCBleHBlY3RlZF9hdWRp
bykpOgorICAgICAgICAgICAgZmFpbHVyZXMuYXBwZW5kKHRlc3RfZmFpbHVyZXMuRmFpbHVyZUF1
ZGlvTWlzbWF0Y2goKSkKKyAgICAgICAgZWxpZiBhY3R1YWxfYXVkaW8gYW5kIG5vdCBleHBlY3Rl
ZF9hdWRpbzoKKyAgICAgICAgICAgIGZhaWx1cmVzLmFwcGVuZCh0ZXN0X2ZhaWx1cmVzLkZhaWx1
cmVNaXNzaW5nQXVkaW8oKSkKKyAgICAgICAgcmV0dXJuIGZhaWx1cmVzCisKICAgICBkZWYgX2dl
dF9ub3JtYWxpemVkX291dHB1dF90ZXh0KHNlbGYsIG91dHB1dCk6CiAgICAgICAgICIiIlJldHVy
bnMgdGhlIG5vcm1hbGl6ZWQgdGV4dCBvdXRwdXQsIGkuZS4gdGhlIG91dHB1dCBpbiB3aGljaAog
ICAgICAgICB0aGUgZW5kLW9mLWxpbmUgY2hhcmFjdGVycyBhcmUgbm9ybWFsaXplZCB0byAiXG4i
LiIiIgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5
b3V0X3BhY2thZ2UvdGVzdF9leHBlY3RhdGlvbnMucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2V4cGVjdGF0aW9ucy5weQppbmRleCBh
ZDUwYWRlYWNkOWI4MDcyODMwOGQxYzUwODlhNGM4ZGUyNTAyZTY4Li5hNDA3ZWNjNGVmMTZkZGNi
Mjg3NDY2MmIwZTAwNmQ0YzlhOTYwZGY4IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2V4cGVjdGF0aW9ucy5weQorKysg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0
X2V4cGVjdGF0aW9ucy5weQpAQCAtNDEsOCArNDEsOCBAQCBfbG9nID0gbG9nZ2luZy5nZXRMb2dn
ZXIoIndlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZS4iCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgInRlc3RfZXhwZWN0YXRpb25zIikKIAogIyBUZXN0IGV4cGVjdGF0aW9uIGFu
ZCBtb2RpZmllciBjb25zdGFudHMuCi0oUEFTUywgRkFJTCwgVEVYVCwgSU1BR0UsIElNQUdFX1BM
VVNfVEVYVCwgVElNRU9VVCwgQ1JBU0gsIFNLSVAsIFdPTlRGSVgsCi0gU0xPVywgUkVCQVNFTElO
RSwgTUlTU0lORywgRkxBS1ksIE5PVywgTk9ORSkgPSByYW5nZSgxNSkKKyhQQVNTLCBGQUlMLCBU
RVhULCBJTUFHRSwgSU1BR0VfUExVU19URVhULCBBVURJTywgVElNRU9VVCwgQ1JBU0gsIFNLSVAs
IFdPTlRGSVgsCisgU0xPVywgUkVCQVNFTElORSwgTUlTU0lORywgRkxBS1ksIE5PVywgTk9ORSkg
PSByYW5nZSgxNikKIAogIyBUZXN0IGV4cGVjdGF0aW9uIGZpbGUgdXBkYXRlIGFjdGlvbiBjb25z
dGFudHMKIChOT19DSEFOR0UsIFJFTU9WRV9URVNULCBSRU1PVkVfUExBVEZPUk0sIEFERF9QTEFU
Rk9STVNfRVhDRVBUX1RISVMpID0gcmFuZ2UoNCkKQEAgLTEyMCw3ICsxMjAsOCBAQCBjbGFzcyBU
ZXN0RXhwZWN0YXRpb25zOgogICAgICAgICAgICAgICAgIHNlbGYuX2V4cGVjdGVkX2ZhaWx1cmVz
LmdldF90ZXN0X3NldChSRUJBU0VMSU5FLCBJTUFHRSkgfAogICAgICAgICAgICAgICAgIHNlbGYu
X2V4cGVjdGVkX2ZhaWx1cmVzLmdldF90ZXN0X3NldChSRUJBU0VMSU5FLCBURVhUKSB8CiAgICAg
ICAgICAgICAgICAgc2VsZi5fZXhwZWN0ZWRfZmFpbHVyZXMuZ2V0X3Rlc3Rfc2V0KFJFQkFTRUxJ
TkUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IElNQUdFX1BMVVNfVEVYVCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIElNQUdFX1BMVVNfVEVYVCkgfAorICAgICAgICAgICAgICAgIHNlbGYu
X2V4cGVjdGVkX2ZhaWx1cmVzLmdldF90ZXN0X3NldChSRUJBU0VMSU5FLCBBVURJTykpCiAKICAg
ICBkZWYgZ2V0X29wdGlvbnMoc2VsZiwgdGVzdCk6CiAgICAgICAgIHJldHVybiBzZWxmLl9leHBl
Y3RlZF9mYWlsdXJlcy5nZXRfb3B0aW9ucyh0ZXN0KQpAQCAtMjQ0LDExICsyNDUsMTEgQEAgY2xh
c3MgVGVzdEV4cGVjdGF0aW9uc0ZpbGU6CiAKICAgICBOb3RlczoKICAgICAgIC1BIHRlc3QgY2Fu
bm90IGJlIGJvdGggU0xPVyBhbmQgVElNRU9VVAotICAgICAgLUEgdGVzdCBzaG91bGQgb25seSBi
ZSBvbmUgb2YgSU1BR0UsIFRFWFQsIElNQUdFK1RFWFQsIG9yIEZBSUwuIEZBSUwgaXMKLSAgICAg
ICBhIG1pZ3JhdG9yeSBzdGF0ZSB0aGF0IGN1cnJlbnRseSBtZWFucyBlaXRoZXIgSU1BR0UsIFRF
WFQsIG9yCi0gICAgICAgSU1BR0UrVEVYVC4gT25jZSB3ZSBoYXZlIGZpbmlzaGVkIG1pZ3JhdGlu
ZyB0aGUgZXhwZWN0YXRpb25zLCB3ZSB3aWxsCi0gICAgICAgY2hhbmdlIEZBSUwgdG8gaGF2ZSB0
aGUgbWVhbmluZyBvZiBJTUFHRStURVhUIGFuZCByZW1vdmUgdGhlIElNQUdFK1RFWFQKLSAgICAg
ICBpZGVudGlmaWVyLgorICAgICAgLUEgdGVzdCBzaG91bGQgb25seSBiZSBvbmUgb2YgSU1BR0Us
IFRFWFQsIElNQUdFK1RFWFQsIEFVRElPLCBvciBGQUlMLgorICAgICAgIEZBSUwgaXMgYSBsZWdh
Y3kgdmFsdWUgdGhhdCBjdXJyZW50bHkgbWVhbnMgZWl0aGVyIElNQUdFLAorICAgICAgIFRFWFQs
IG9yIElNQUdFK1RFWFQuIE9uY2Ugd2UgaGF2ZSBmaW5pc2hlZCBtaWdyYXRpbmcgdGhlIGV4cGVj
dGF0aW9ucywKKyAgICAgICB3ZSBzaG91bGQgY2hhbmdlIEZBSUwgdG8gaGF2ZSB0aGUgbWVhbmlu
ZyBvZiBJTUFHRStURVhUIGFuZCByZW1vdmUgdGhlCisgICAgICAgSU1BR0UrVEVYVCBpZGVudGlm
aWVyLgogICAgICAgLUEgdGVzdCBjYW4gYmUgaW5jbHVkZWQgdHdpY2UsIGJ1dCBub3QgdmlhIHRo
ZSBzYW1lIHBhdGguCiAgICAgICAtSWYgYSB0ZXN0IGlzIGluY2x1ZGVkIHR3aWNlLCB0aGVuIHRo
ZSBtb3JlIHByZWNpc2UgcGF0aCB3aW5zLgogICAgICAgLUNSQVNIIHRlc3RzIGNhbm5vdCBiZSBX
T05URklYCkBAIC0yNTksNiArMjYwLDcgQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9uc0ZpbGU6CiAg
ICAgICAgICAgICAgICAgICAgICd0ZXh0JzogVEVYVCwKICAgICAgICAgICAgICAgICAgICAgJ2lt
YWdlJzogSU1BR0UsCiAgICAgICAgICAgICAgICAgICAgICdpbWFnZSt0ZXh0JzogSU1BR0VfUExV
U19URVhULAorICAgICAgICAgICAgICAgICAgICAnYXVkaW8nOiBBVURJTywKICAgICAgICAgICAg
ICAgICAgICAgJ3RpbWVvdXQnOiBUSU1FT1VULAogICAgICAgICAgICAgICAgICAgICAnY3Jhc2gn
OiBDUkFTSCwKICAgICAgICAgICAgICAgICAgICAgJ21pc3NpbmcnOiBNSVNTSU5HfQpAQCAtMjcx
LDYgKzI3Myw3IEBAIGNsYXNzIFRlc3RFeHBlY3RhdGlvbnNGaWxlOgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBJTUFHRTogKCdpbWFnZSBtaXNtYXRjaCcsICdpbWFnZSBtaXNtYXRj
aCcpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTUFHRV9QTFVTX1RFWFQ6ICgn
aW1hZ2UgYW5kIHRleHQgbWlzbWF0Y2gnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnaW1hZ2UgYW5kIHRleHQgbWlzbWF0Y2gnKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQVVESU86ICgnYXVkaW8gbWlzbWF0Y2gnLCAnYXVkaW8g
bWlzbWF0Y2gnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1JBU0g6ICgnRHVt
cFJlbmRlclRyZWUgY3Jhc2gnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICdEdW1wUmVuZGVyVHJlZSBjcmFzaGVzJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFRJTUVPVVQ6ICgndGVzdCB0aW1lZCBvdXQnLCAndGVzdHMgdGltZWQgb3V0JyksCkBA
IC0yNzgsNyArMjgxLDcgQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9uc0ZpbGU6CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbm8gZXhwZWN0ZWQgcmVzdWx0cyBmb3Vu
ZCcpfQogCiAgICAgRVhQRUNUQVRJT05fT1JERVIgPSAoUEFTUywgQ1JBU0gsIFRJTUVPVVQsIE1J
U1NJTkcsIElNQUdFX1BMVVNfVEVYVCwKLSAgICAgICBURVhULCBJTUFHRSwgRkFJTCwgU0tJUCkK
KyAgICAgICBURVhULCBJTUFHRSwgQVVESU8sIEZBSUwsIFNLSVApCiAKICAgICBCVUlMRF9UWVBF
UyA9ICgnZGVidWcnLCAncmVsZWFzZScpCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZmFpbHVyZXMucHkgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2ZhaWx1
cmVzLnB5CmluZGV4IDFmYWQ3NzI0NmI4NWU2MmQwMGYzNWEwNWZkMmNjNjliMjNlNDk2ZjIuLmYx
MjdjMmJiZTM0ODFiMmUzNDE5MzU3ODNhMjJhNjkwNjhlYjViOTggMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZmFpbHVy
ZXMucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3Bh
Y2thZ2UvdGVzdF9mYWlsdXJlcy5weQpAQCAtNTQsNyArNTQsOCBAQCBkZWYgZGV0ZXJtaW5lX3Jl
c3VsdF90eXBlKGZhaWx1cmVfbGlzdCk6CiAgICAgICAgIHJldHVybiB0ZXN0X2V4cGVjdGF0aW9u
cy5USU1FT1VUCiAgICAgZWxpZiAoRmFpbHVyZU1pc3NpbmdSZXN1bHQgaW4gZmFpbHVyZV90eXBl
cyBvcgogICAgICAgICAgIEZhaWx1cmVNaXNzaW5nSW1hZ2UgaW4gZmFpbHVyZV90eXBlcyBvcgot
ICAgICAgICAgIEZhaWx1cmVNaXNzaW5nSW1hZ2VIYXNoIGluIGZhaWx1cmVfdHlwZXMpOgorICAg
ICAgICAgIEZhaWx1cmVNaXNzaW5nSW1hZ2VIYXNoIGluIGZhaWx1cmVfdHlwZXMgb3IKKyAgICAg
ICAgICBGYWlsdXJlTWlzc2luZ0F1ZGlvIGluIGZhaWx1cmVfdHlwZXMpOgogICAgICAgICByZXR1
cm4gdGVzdF9leHBlY3RhdGlvbnMuTUlTU0lORwogICAgIGVsc2U6CiAgICAgICAgIGlzX3RleHRf
ZmFpbHVyZSA9IEZhaWx1cmVUZXh0TWlzbWF0Y2ggaW4gZmFpbHVyZV90eXBlcwpAQCAtNjIsMTIg
KzYzLDE1IEBAIGRlZiBkZXRlcm1pbmVfcmVzdWx0X3R5cGUoZmFpbHVyZV9saXN0KToKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBGYWlsdXJlSW1hZ2VIYXNoTWlzbWF0Y2ggaW4gZmFpbHVy
ZV90eXBlcykKICAgICAgICAgaXNfcmVmdGVzdF9mYWlsdXJlID0gKEZhaWx1cmVSZWZ0ZXN0TWlz
bWF0Y2ggaW4gZmFpbHVyZV90eXBlcyBvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RmFpbHVyZVJlZnRlc3RNaXNtYXRjaERpZE5vdE9jY3VyIGluIGZhaWx1cmVfdHlwZXMpCisgICAg
ICAgIGlzX2F1ZGlvX2ZhaWx1cmUgPSAoRmFpbHVyZUF1ZGlvTWlzbWF0Y2ggaW4gZmFpbHVyZV90
eXBlcykKICAgICAgICAgaWYgaXNfdGV4dF9mYWlsdXJlIGFuZCBpc19pbWFnZV9mYWlsdXJlOgog
ICAgICAgICAgICAgcmV0dXJuIHRlc3RfZXhwZWN0YXRpb25zLklNQUdFX1BMVVNfVEVYVAogICAg
ICAgICBlbGlmIGlzX3RleHRfZmFpbHVyZToKICAgICAgICAgICAgIHJldHVybiB0ZXN0X2V4cGVj
dGF0aW9ucy5URVhUCiAgICAgICAgIGVsaWYgaXNfaW1hZ2VfZmFpbHVyZSBvciBpc19yZWZ0ZXN0
X2ZhaWx1cmU6CiAgICAgICAgICAgICByZXR1cm4gdGVzdF9leHBlY3RhdGlvbnMuSU1BR0UKKyAg
ICAgICAgZWxpZiBpc19hdWRpb19mYWlsdXJlOgorICAgICAgICAgICAgcmV0dXJuIHRlc3RfZXhw
ZWN0YXRpb25zLkFVRElPCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVy
cm9yKCJ1bmNsYXNzaWZpYWJsZSBzZXQgb2YgZmFpbHVyZXM6ICIKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKyBzdHIoZmFpbHVyZV90eXBlcykpCkBAIC0zMzEsNiArMzM1LDI4IEBAIGNs
YXNzIEZhaWx1cmVSZWZ0ZXN0TWlzbWF0Y2hEaWROb3RPY2N1cihDb21wYXJpc29uVGVzdEZhaWx1
cmUpOgogICAgICAgICByZXR1cm4gJyAnLmpvaW4obGlua3MpCiAKIAorY2xhc3MgRmFpbHVyZU1p
c3NpbmdBdWRpbyhDb21wYXJpc29uVGVzdEZhaWx1cmUpOgorICAgICIiIkFjdHVhbCByZXN1bHQg
aW1hZ2Ugd2FzIG1pc3NpbmcuIiIiCisgICAgT1VUX0ZJTEVOQU1FUyA9ICgiLWFjdHVhbC53YXYi
LCkKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgbWVzc2FnZSgpOgorICAgICAgICByZXR1
cm4gIk5vIGV4cGVjdGVkIGF1ZGlvIGZvdW5kIgorCisgICAgZGVmIHJlc3VsdF9odG1sX291dHB1
dChzZWxmLCBmaWxlbmFtZSk6CisgICAgICAgIHJldHVybiAoIjxzdHJvbmc+JXM8L3N0cm9uZz4i
ICUgc2VsZi5tZXNzYWdlKCkgKworICAgICAgICAgICAgICAgIHNlbGYub3V0cHV0X2xpbmtzKGZp
bGVuYW1lLCBzZWxmLk9VVF9GSUxFTkFNRVMpKQorCisKK2NsYXNzIEZhaWx1cmVBdWRpb01pc21h
dGNoKENvbXBhcmlzb25UZXN0RmFpbHVyZSk6CisgICAgIiIiQXVkaW8gZmlsZXMgZGlkbid0IG1h
dGNoLiIiIgorICAgIE9VVF9GSUxFTkFNRVMgPSAoIi1hY3R1YWwud2F2IiwgIi1leHBlY3RlZC53
YXYiKQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBtZXNzYWdlKCk6CisgICAgICAgIHJl
dHVybiAiQXVkaW8gbWlzbWF0Y2giCisKKwogIyBDb252ZW5pZW50IGNvbGxlY3Rpb24gb2YgYWxs
IGZhaWx1cmUgY2xhc3NlcyBmb3IgYW55dGhpbmcgdGhhdCBtaWdodAogIyBuZWVkIHRvIGVudW1l
cmF0ZSBvdmVyIHRoZW0gYWxsLgogQUxMX0ZBSUxVUkVfQ0xBU1NFUyA9IChGYWlsdXJlVGltZW91
dCwgRmFpbHVyZUNyYXNoLCBGYWlsdXJlTWlzc2luZ1Jlc3VsdCwKZGlmZiAtLWdpdCBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfcmVzdWx0
X3dyaXRlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9w
YWNrYWdlL3Rlc3RfcmVzdWx0X3dyaXRlci5weQppbmRleCBlMjA5NTAzMGZlODQwNjljNGE4MzVm
N2JjMjIwZDZkMmQwOTNhMjkzLi5hNDA0YmMyZDc2NjkxZWZmMGRiMmY5YWE5YzNkNDBlZDQwMTdl
NjFlIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlv
dXRfcGFja2FnZS90ZXN0X3Jlc3VsdF93cml0ZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9yZXN1bHRfd3JpdGVyLnB5CkBA
IC02Myw2ICs2Myw5IEBAIGRlZiB3cml0ZV90ZXN0X3Jlc3VsdChwb3J0LCByb290X291dHB1dF9k
aXIsIGZpbGVuYW1lLCBkcml2ZXJfb3V0cHV0LAogICAgICAgICAgICAgaWYgbm90IGltYWdlc19h
cmVfZGlmZmVyZW50OgogICAgICAgICAgICAgICAgIGNoZWNrc3Vtc19taXNtYXRjaF9idXRfaW1h
Z2VzX2FyZV9zYW1lID0gVHJ1ZQogICAgICAgICAgICAgICAgIGltYWdlaGFzaF9taXNtYXRjaF9m
YWlsdXJlID0gZmFpbHVyZQorICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZmFpbHVyZSwgKHRlc3Rf
ZmFpbHVyZXMuRmFpbHVyZUF1ZGlvTWlzbWF0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdGVzdF9mYWlsdXJlcy5GYWlsdXJlTWlzc2luZ0F1ZGlvKSk6CisgICAgICAgICAg
ICB3cml0ZXIud3JpdGVfYXVkaW9fZmlsZXMoZHJpdmVyX291dHB1dC5hdWRpbywgZXhwZWN0ZWRf
ZHJpdmVyX291dHB1dC5hdWRpbykKICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGZhaWx1cmUsIHRl
c3RfZmFpbHVyZXMuRmFpbHVyZUNyYXNoKToKICAgICAgICAgICAgIGlmIGZhaWx1cmUucmVmZXJl
bmNlX2ZpbGVuYW1lOgogICAgICAgICAgICAgICAgIHdyaXRlci53cml0ZV9jcmFzaF9yZXBvcnQo
ZXhwZWN0ZWRfZHJpdmVyX291dHB1dC5lcnJvcikKQEAgLTE4Nyw2ICsxOTAsOSBAQCBjbGFzcyBU
ZXN0UmVzdWx0V3JpdGVyKG9iamVjdCk6CiAgICAgICAgIHByZXR0eV9wYXRjaF9maWxlbmFtZSA9
IHNlbGYub3V0cHV0X2ZpbGVuYW1lKHNlbGYuRklMRU5BTUVfU1VGRklYX1BSRVRUWV9QQVRDSCkK
ICAgICAgICAgZnMud3JpdGVfYmluYXJ5X2ZpbGUocHJldHR5X3BhdGNoX2ZpbGVuYW1lLCBwcmV0
dHlfcGF0Y2gpCiAKKyAgICBkZWYgd3JpdGVfYXVkaW9fZmlsZXMoc2VsZiwgYWN0dWFsX2F1ZGlv
LCBleHBlY3RlZF9hdWRpbyk6CisgICAgICAgIHNlbGYud3JpdGVfb3V0cHV0X2ZpbGVzKCcud2F2
JywgYWN0dWFsX2F1ZGlvLCBleHBlY3RlZF9hdWRpbykKKwogICAgIGRlZiB3cml0ZV9pbWFnZV9m
aWxlcyhzZWxmLCBhY3R1YWxfaW1hZ2UsIGV4cGVjdGVkX2ltYWdlKToKICAgICAgICAgc2VsZi53
cml0ZV9vdXRwdXRfZmlsZXMoJy5wbmcnLCBhY3R1YWxfaW1hZ2UsIGV4cGVjdGVkX2ltYWdlKQog
CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jh
c2UucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkK
aW5kZXggMGJhZDExYzllZWJmMDNhNjBiOWEyYTZkMDQ4MDFmMTBiMTMzZGQ4ZS4uN2EyZTI0ZmE4
MDA0NTU5NDcyZDE4YjM2MjI0MGQ4MjBhOThmNjUzOCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQpAQCAtMjA2LDYgKzIwNiwxMCBAQCBj
bGFzcyBQb3J0KG9iamVjdCk6CiAgICAgICAgIGludGVyZmFjZSBzbyB0aGF0IGl0IGNhbiBiZSBv
dmVycmlkZW4gZm9yIHRlc3RpbmcgcHVycG9zZXMuIiIiCiAgICAgICAgIHJldHVybiBleHBlY3Rl
ZF90ZXh0ICE9IGFjdHVhbF90ZXh0CiAKKyAgICBkZWYgY29tcGFyZV9hdWRpbyhzZWxmLCBleHBl
Y3RlZF9hdWRpbywgYWN0dWFsX2F1ZGlvKToKKyAgICAgICAgIiIiUmV0dXJuIHdoZXRoZXIgdGhl
IHR3byBhdWRpbyBmaWxlcyBhcmUgKm5vdCogZXF1YWwuIiIiCisgICAgICAgIHJldHVybiBleHBl
Y3RlZF9hdWRpbyAhPSBhY3R1YWxfYXVkaW8KKwogICAgIGRlZiBkaWZmX2ltYWdlKHNlbGYsIGV4
cGVjdGVkX2NvbnRlbnRzLCBhY3R1YWxfY29udGVudHMsCiAgICAgICAgICAgICAgICAgICAgZGlm
Zl9maWxlbmFtZT1Ob25lLCB0b2xlcmFuY2U9MCk6CiAgICAgICAgICIiIkNvbXBhcmUgdHdvIGlt
YWdlcyBhbmQgcHJvZHVjZSBhIGRlbHRhIGltYWdlIGZpbGUuCkBAIC0zNTEsNiArMzU1LDEyIEBA
IGNsYXNzIFBvcnQob2JqZWN0KToKICAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgIHJl
dHVybiBzZWxmLl9maWxlc3lzdGVtLnJlYWRfYmluYXJ5X2ZpbGUocGF0aCkKIAorICAgIGRlZiBl
eHBlY3RlZF9hdWRpbyhzZWxmLCB0ZXN0KToKKyAgICAgICAgcGF0aCA9IHNlbGYuZXhwZWN0ZWRf
ZmlsZW5hbWUodGVzdCwgJy53YXYnKQorICAgICAgICBpZiBub3Qgc2VsZi5wYXRoX2V4aXN0cyhw
YXRoKToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIHJldHVybiBzZWxmLl9maWxl
c3lzdGVtLnJlYWRfYmluYXJ5X2ZpbGUocGF0aCkKKwogICAgIGRlZiBleHBlY3RlZF90ZXh0KHNl
bGYsIHRlc3QpOgogICAgICAgICAiIiJSZXR1cm5zIHRoZSB0ZXh0IG91dHB1dCB3ZSBleHBlY3Qg
dGhlIHRlc3QgdG8gcHJvZHVjZSwgb3IgTm9uZQogICAgICAgICBpZiB3ZSBkb24ndCBleHBlY3Qg
dGhlcmUgdG8gYmUgYW55IHRleHQgb3V0cHV0LgpAQCAtODY4LDIyICs4NzgsMjQgQEAgY2xhc3Mg
RHJpdmVySW5wdXQob2JqZWN0KToKIGNsYXNzIERyaXZlck91dHB1dChvYmplY3QpOgogICAgICIi
Ikdyb3VwcyBpbmZvcm1hdGlvbiBhYm91dCBhIG91dHB1dCBmcm9tIGRyaXZlciBmb3IgZWFzeSBw
YXNzaW5nIG9mIGRhdGEuIiIiCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgdGV4dCwgaW1hZ2Us
IGltYWdlX2hhc2gsCi0gICAgICAgICAgICAgICAgIGNyYXNoPUZhbHNlLCB0ZXN0X3RpbWU9Tm9u
ZSwgdGltZW91dD1GYWxzZSwgZXJyb3I9JycpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0ZXh0
LCBpbWFnZSwgaW1hZ2VfaGFzaCwgYXVkaW8sCisgICAgICAgICAgICAgICAgIGNyYXNoPUZhbHNl
LCB0ZXN0X3RpbWU9MCwgdGltZW91dD1GYWxzZSwgZXJyb3I9JycpOgogICAgICAgICAiIiJJbml0
aWFsaXplcyBhIFRlc3RPdXRwdXQgb2JqZWN0LgogCiAgICAgICAgIEFyZ3M6CiAgICAgICAgICAg
dGV4dDogYSB0ZXh0IG91dHB1dAogICAgICAgICAgIGltYWdlOiBhbiBpbWFnZSBvdXRwdXQKICAg
ICAgICAgICBpbWFnZV9oYXNoOiBhIHN0cmluZyBjb250YWluaW5nIHRoZSBjaGVja3N1bSBvZiB0
aGUgaW1hZ2UKKyAgICAgICAgICBhdWRpbzogY29udGVudHMgb2YgYW4gYXVkaW8gc3RyZWFtLCBp
ZiBhbnkgKGluIFdBViBmb3JtYXQpCiAgICAgICAgICAgY3Jhc2g6IGEgYm9vbGVhbiBpbmRpY2F0
aW5nIHdoZXRoZXIgdGhlIGRyaXZlciBjcmFzaGVkIG9uIHRoZSB0ZXN0Ci0gICAgICAgICAgdGVz
dF90aW1lOiBhIHRpbWUgd2hpY2ggdGhlIHRlc3QgaGFzIHRha2VuCisgICAgICAgICAgdGVzdF90
aW1lOiB0aGUgdGltZSB0aGUgdGVzdCB0b29rIHRvIGV4ZWN1dGUKICAgICAgICAgICB0aW1lb3V0
OiBhIGJvb2xlYW4gaW5kaWNhdGluZyB3aGVodGVyIHRoZSB0ZXN0IHRpbWVkIG91dAogICAgICAg
ICAgIGVycm9yOiBhbnkgdW5leHBlY3RlZCBvciBhZGRpdGlvbmFsIChvciBlcnJvcikgdGV4dCBv
dXRwdXQKICAgICAgICAgIiIiCiAgICAgICAgIHNlbGYudGV4dCA9IHRleHQKICAgICAgICAgc2Vs
Zi5pbWFnZSA9IGltYWdlCiAgICAgICAgIHNlbGYuaW1hZ2VfaGFzaCA9IGltYWdlX2hhc2gKKyAg
ICAgICAgc2VsZi5hdWRpbyA9IGF1ZGlvCiAgICAgICAgIHNlbGYuY3Jhc2ggPSBjcmFzaAogICAg
ICAgICBzZWxmLnRlc3RfdGltZSA9IHRlc3RfdGltZQogICAgICAgICBzZWxmLnRpbWVvdXQgPSB0
aW1lb3V0CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L2Nocm9taXVtLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9jaHJvbWl1bS5weQppbmRleCAxOGI1NzA1ODAxNTc4NDljOTNkNzRmNzg2YzQ0OTcxNDdjZmRl
MDY1Li4wMTAwZjUzZjFiNDMyMjFiOTViZTNhYzJmOWUyNDdkMmU4NmViODBmIDEwMDY0NAotLS0g
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5Cisr
KyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkK
QEAgLTUwMCwxNCArNTAwLDE2IEBAIGNsYXNzIENocm9taXVtRHJpdmVyKGJhc2UuRHJpdmVyKToK
IAogICAgICAgICAgICAgKGxpbmUsIGNyYXNoKSA9IHNlbGYuX3dyaXRlX2NvbW1hbmRfYW5kX3Jl
YWRfbGluZShpbnB1dD1Ob25lKQogCisgICAgICAgICMgRklYTUU6IEFkZCBzdXBwb3J0IGZvciBh
dWRpbyB3aGVuIHdlJ3JlIHJlYWR5LgorCiAgICAgICAgIHJ1bl90aW1lID0gdGltZS50aW1lKCkg
LSBzdGFydF90aW1lCiAgICAgICAgIG91dHB1dF9pbWFnZSA9IHNlbGYuX291dHB1dF9pbWFnZV93
aXRoX3JldHJ5KCkKICAgICAgICAgdGV4dCA9ICcnLmpvaW4ob3V0cHV0KQogICAgICAgICBpZiBu
b3QgdGV4dDoKICAgICAgICAgICAgIHRleHQgPSBOb25lCiAKLSAgICAgICAgcmV0dXJuIGJhc2Uu
RHJpdmVyT3V0cHV0KHRleHQsIG91dHB1dF9pbWFnZSwgYWN0dWFsX2NoZWNrc3VtLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Jhc2gsIHJ1bl90aW1lLCB0aW1lb3V0LCAnJy5q
b2luKGVycm9yKSkKKyAgICAgICAgcmV0dXJuIGJhc2UuRHJpdmVyT3V0cHV0KHRleHQsIG91dHB1
dF9pbWFnZSwgYWN0dWFsX2NoZWNrc3VtLCBhdWRpbz1Ob25lLAorICAgICAgICAgICAgY3Jhc2g9
Y3Jhc2gsIHRlc3RfdGltZT1ydW5fdGltZSwgdGltZW91dD10aW1lb3V0LCBlcnJvcj0nJy5qb2lu
KGVycm9yKSkKIAogICAgIGRlZiBzdG9wKHNlbGYpOgogICAgICAgICBpZiBzZWxmLl9wcm9jOgpk
aWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9kcnly
dW4ucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2RyeXJ1bi5w
eQppbmRleCAyMGFhNzc2OWExYjM2NWJjODhhYjM4YjcyNTA0MTFiYmYwMjQ0YzQ0Li5iYTk5NjM2
ZGRhN2ViOWViZmNlNDY3YWZkODkxODdlNTUwZDZlOTNiIDEwMDY0NAotLS0gYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2RyeXJ1bi5weQorKysgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2RyeXJ1bi5weQpAQCAtMTE5LDI5ICsxMTks
MjUgQEAgY2xhc3MgRHJ5cnVuRHJpdmVyKGJhc2UuRHJpdmVyKToKICAgICBkZWYgcnVuX3Rlc3Qo
c2VsZiwgZHJpdmVyX2lucHV0KToKICAgICAgICAgc3RhcnRfdGltZSA9IHRpbWUudGltZSgpCiAg
ICAgICAgIGZzID0gc2VsZi5fcG9ydC5fZmlsZXN5c3RlbQotICAgICAgICBpZiBmcy5leGlzdHMo
c2VsZi5fcG9ydC5yZWZ0ZXN0X2V4cGVjdGVkX2ZpbGVuYW1lKGRyaXZlcl9pbnB1dC5maWxlbmFt
ZSkpIG9yIFwKLSAgICAgICAgICAgIGZzLmV4aXN0cyhzZWxmLl9wb3J0LnJlZnRlc3RfZXhwZWN0
ZWRfbWlzbWF0Y2hfZmlsZW5hbWUoZHJpdmVyX2lucHV0LmZpbGVuYW1lKSk6Ci0gICAgICAgICAg
ICB0ZXh0X291dHB1dCA9ICd0ZXN0LXRleHQnCisgICAgICAgIGlmIChmcy5leGlzdHMoc2VsZi5f
cG9ydC5yZWZ0ZXN0X2V4cGVjdGVkX2ZpbGVuYW1lKGRyaXZlcl9pbnB1dC5maWxlbmFtZSkpIG9y
CisgICAgICAgICAgICBmcy5leGlzdHMoc2VsZi5fcG9ydC5yZWZ0ZXN0X2V4cGVjdGVkX21pc21h
dGNoX2ZpbGVuYW1lKGRyaXZlcl9pbnB1dC5maWxlbmFtZSkpIG9yCisgICAgICAgICAgICBkcml2
ZXJfaW5wdXQuZmlsZW5hbWUuZW5kc3dpdGgoJy1leHBlY3RlZC5odG1sJykpOgorICAgICAgICAg
ICAgdGV4dCA9ICd0ZXN0LXRleHQnCiAgICAgICAgICAgICBpbWFnZSA9ICd0ZXN0LWltYWdlJwot
ICAgICAgICAgICAgaGFzaCA9ICd0ZXN0LWNoZWNrc3VtJwotICAgICAgICBlbGlmIGRyaXZlcl9p
bnB1dC5maWxlbmFtZS5lbmRzd2l0aCgnLWV4cGVjdGVkLmh0bWwnKToKLSAgICAgICAgICAgIHRl
eHRfb3V0cHV0ID0gJ3Rlc3QtdGV4dCcKLSAgICAgICAgICAgIGltYWdlID0gJ3Rlc3QtaW1hZ2Un
Ci0gICAgICAgICAgICBoYXNoID0gJ3Rlc3QtY2hlY2tzdW0nCisgICAgICAgICAgICBjaGVja3N1
bSA9ICd0ZXN0LWNoZWNrc3VtJworICAgICAgICAgICAgYXVkaW8gPSBOb25lCiAgICAgICAgIGVs
aWYgZHJpdmVyX2lucHV0LmZpbGVuYW1lLmVuZHN3aXRoKCctZXhwZWN0ZWQtbWlzbWF0Y2guaHRt
bCcpOgotICAgICAgICAgICAgdGV4dF9vdXRwdXQgPSAndGVzdC10ZXh0LW1pc21hdGNoJworICAg
ICAgICAgICAgdGV4dCA9ICd0ZXN0LXRleHQtbWlzbWF0Y2gnCiAgICAgICAgICAgICBpbWFnZSA9
ICd0ZXN0LWltYWdlLW1pc21hdGNoJwotICAgICAgICAgICAgaGFzaCA9ICd0ZXN0LWNoZWNrc3Vt
LW1pc21hdGNoJwotICAgICAgICBlbGlmIGRyaXZlcl9pbnB1dC5pbWFnZV9oYXNoIGlzIG5vdCBO
b25lOgotICAgICAgICAgICAgdGV4dF9vdXRwdXQgPSBzZWxmLl9wb3J0LmV4cGVjdGVkX3RleHQo
ZHJpdmVyX2lucHV0LmZpbGVuYW1lKQotICAgICAgICAgICAgaW1hZ2UgPSBzZWxmLl9wb3J0LmV4
cGVjdGVkX2ltYWdlKGRyaXZlcl9pbnB1dC5maWxlbmFtZSkKLSAgICAgICAgICAgIGhhc2ggPSBz
ZWxmLl9wb3J0LmV4cGVjdGVkX2NoZWNrc3VtKGRyaXZlcl9pbnB1dC5maWxlbmFtZSkKKyAgICAg
ICAgICAgIGNoZWNrc3VtID0gJ3Rlc3QtY2hlY2tzdW0tbWlzbWF0Y2gnCisgICAgICAgICAgICBh
dWRpbyA9IE5vbmUKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHRleHRfb3V0cHV0ID0gc2Vs
Zi5fcG9ydC5leHBlY3RlZF90ZXh0KGRyaXZlcl9pbnB1dC5maWxlbmFtZSkKLSAgICAgICAgICAg
IGltYWdlID0gTm9uZQotICAgICAgICAgICAgaGFzaCA9IE5vbmUKLSAgICAgICAgcmV0dXJuIGJh
c2UuRHJpdmVyT3V0cHV0KHRleHRfb3V0cHV0LCBpbWFnZSwgaGFzaCwgRmFsc2UsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lLnRpbWUoKSAtIHN0YXJ0X3RpbWUsIEZhbHNl
LCAnJykKKyAgICAgICAgICAgIHRleHQgPSBzZWxmLl9wb3J0LmV4cGVjdGVkX3RleHQoZHJpdmVy
X2lucHV0LmZpbGVuYW1lKQorICAgICAgICAgICAgaW1hZ2UgPSBzZWxmLl9wb3J0LmV4cGVjdGVk
X2ltYWdlKGRyaXZlcl9pbnB1dC5maWxlbmFtZSkKKyAgICAgICAgICAgIGNoZWNrc3VtID0gc2Vs
Zi5fcG9ydC5leHBlY3RlZF9jaGVja3N1bShkcml2ZXJfaW5wdXQuZmlsZW5hbWUpCisgICAgICAg
ICAgICBhdWRpbyA9IHNlbGYuX3BvcnQuZXhwZWN0ZWRfYXVkaW8oZHJpdmVyX2lucHV0LmZpbGVu
YW1lKQorICAgICAgICByZXR1cm4gYmFzZS5Ecml2ZXJPdXRwdXQodGV4dCwgaW1hZ2UsIGNoZWNr
c3VtLCBhdWRpbywgY3Jhc2g9RmFsc2UsCisgICAgICAgICAgICB0ZXN0X3RpbWU9dGltZS50aW1l
KCkgLSBzdGFydF90aW1lLCB0aW1lb3V0PUZhbHNlLCBlcnJvcj0nJykKIAogICAgIGRlZiBzdGFy
dChzZWxmKToKICAgICAgICAgcGFzcwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9tb2NrX2RydC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvbW9ja19kcnQucHkKaW5kZXggMTE0Nzg0NmQ2MDk1MDg0NGI1NTNj
MGVmMDM3MDEyY2RhYzYxZjQ4ZC4uNzM5NjdjZmJmZjg2NTdhZGQ3NTYzYzQ3ZGZhMzI0YWEyY2I1
Mjc3MyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9tb2NrX2RydC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L21vY2tfZHJ0LnB5CkBAIC0zMiw2ICszMiw3IEBAIFRoaXMgaXMgYW4gaW1wbGVtZW50YXRp
b24gb2YgdGhlIFBvcnQgaW50ZXJmYWNlIHRoYXQgb3ZlcnJpZGVzIG90aGVyCiBwb3J0cyBhbmQg
Y2hhbmdlcyB0aGUgRHJpdmVyIGJpbmFyeSB0byAiTW9ja0RSVCIuCiAiIiIKIAoraW1wb3J0IGJh
c2U2NAogaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBvcHRwYXJzZQogaW1wb3J0IG9zCkBAIC0yMDYs
MTUgKzIwNywyMyBAQCBjbGFzcyBNb2NrRFJUKG9iamVjdCk6CiAgICAgICAgICAgICB0ZXN0X3Bh
dGggPSB0ZXN0X2lucHV0LnVyaQogCiAgICAgICAgIGFjdHVhbF90ZXh0ID0gcG9ydC5leHBlY3Rl
ZF90ZXh0KHRlc3RfcGF0aCkKKyAgICAgICAgYWN0dWFsX2F1ZGlvID0gcG9ydC5leHBlY3RlZF9h
dWRpbyh0ZXN0X3BhdGgpCiAgICAgICAgIGlmIHNlbGYuX29wdGlvbnMucGl4ZWxfdGVzdHMgYW5k
IHRlc3RfaW5wdXQuY2hlY2tzdW06CiAgICAgICAgICAgICBhY3R1YWxfY2hlY2tzdW0gPSBwb3J0
LmV4cGVjdGVkX2NoZWNrc3VtKHRlc3RfcGF0aCkKICAgICAgICAgICAgIGFjdHVhbF9pbWFnZSA9
IHBvcnQuZXhwZWN0ZWRfaW1hZ2UodGVzdF9wYXRoKQogCi0gICAgICAgIHNlbGYuX3N0ZG91dC53
cml0ZSgnQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluXG4nKQorICAgICAgICBpZiBhY3R1YWxfYXVk
aW86CisgICAgICAgICAgICBzZWxmLl9zdGRvdXQud3JpdGUoJ0NvbnRlbnQtVHlwZTogYXVkaW8v
d2F2XG4nKQorICAgICAgICAgICAgc2VsZi5fc3Rkb3V0LndyaXRlKCdDb250ZW50LVRyYW5zZmVy
LUVuY29kaW5nOiBiYXNlNjRcbicpCisgICAgICAgICAgICBvdXRwdXQgPSBiYXNlNjQuYjY0ZW5j
b2RlKGFjdHVhbF9hdWRpbykKKyAgICAgICAgICAgIHNlbGYuX3N0ZG91dC53cml0ZSgnQ29udGVu
dC1MZW5ndGg6ICVzXG4nICUgbGVuKG91dHB1dCkpCisgICAgICAgICAgICBzZWxmLl9zdGRvdXQu
d3JpdGUob3V0cHV0KQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5fc3Rkb3V0Lndy
aXRlKCdDb250ZW50LVR5cGU6IHRleHQvcGxhaW5cbicpCisgICAgICAgICAgICAjIEZJWE1FOiBO
b3RlIHRoYXQgd2UgZG9uJ3QgZW5zdXJlIHRoZXJlIGlzIGEgdHJhaWxpbmcgbmV3bGluZSEKKyAg
ICAgICAgICAgICMgVGhpcyBtaXJyb3JzIGFjdHVhbCAoTWFjKSBEUlQgYmVoYXZpb3IgYnV0IGlz
IGEgYnVnLgorICAgICAgICAgICAgc2VsZi5fc3Rkb3V0LndyaXRlKGFjdHVhbF90ZXh0KQogCi0g
ICAgICAgICMgRklYTUU6IE5vdGUgdGhhdCB3ZSBkb24ndCBlbnN1cmUgdGhlcmUgaXMgYSB0cmFp
bGluZyBuZXdsaW5lIQotICAgICAgICAjIFRoaXMgbWlycm9ycyBhY3R1YWwgKE1hYykgRFJUIGJl
aGF2aW9yIGJ1dCBpcyBhIGJ1Zy4KLSAgICAgICAgc2VsZi5fc3Rkb3V0LndyaXRlKGFjdHVhbF90
ZXh0KQogICAgICAgICBzZWxmLl9zdGRvdXQud3JpdGUoJyNFT0ZcbicpCiAKICAgICAgICAgaWYg
c2VsZi5fb3B0aW9ucy5waXhlbF90ZXN0cyBhbmQgdGVzdF9pbnB1dC5jaGVja3N1bToKQEAgLTIy
Myw3ICsyMzIsNyBAQCBjbGFzcyBNb2NrRFJUKG9iamVjdCk6CiAgICAgICAgICAgICBzZWxmLl9z
dGRvdXQud3JpdGUoJ0V4cGVjdGVkSGFzaDogJXNcbicgJSB0ZXN0X2lucHV0LmNoZWNrc3VtKQog
ICAgICAgICAgICAgaWYgYWN0dWFsX2NoZWNrc3VtICE9IHRlc3RfaW5wdXQuY2hlY2tzdW06CiAg
ICAgICAgICAgICAgICAgc2VsZi5fc3Rkb3V0LndyaXRlKCdDb250ZW50LVR5cGU6IGltYWdlL3Bu
Z1xuJykKLSAgICAgICAgICAgICAgICBzZWxmLl9zdGRvdXQud3JpdGUoJ0NvbnRlbnQtTGVuZ3Ro
OiAlc1xuXG4nICUgbGVuKGFjdHVhbF9pbWFnZSkpCisgICAgICAgICAgICAgICAgc2VsZi5fc3Rk
b3V0LndyaXRlKCdDb250ZW50LUxlbmd0aDogJXNcbicgJSBsZW4oYWN0dWFsX2ltYWdlKSkKICAg
ICAgICAgICAgICAgICBzZWxmLl9zdGRvdXQud3JpdGUoYWN0dWFsX2ltYWdlKQogICAgICAgICBz
ZWxmLl9zdGRvdXQud3JpdGUoJyNFT0ZcbicpCiAgICAgICAgIHNlbGYuX3N0ZG91dC5mbHVzaCgp
CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L21v
Y2tfZHJ0X3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9tb2NrX2RydF91bml0dGVzdC5weQppbmRleCBiNmY2ZThhOTNjMTg5MTBkYmNkOGU2ZmVi
MmZmN2M0ZGRjOWM2YWVjLi4zNzYwOGY4YzNjMDRhNjFmYzQwODAwM2U0OTljYzc1N2YzMWIwNDli
IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L21v
Y2tfZHJ0X3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvbW9ja19kcnRfdW5pdHRlc3QucHkKQEAgLTIwMCw3ICsyMDAsNyBAQCBjbGFzcyBN
b2NrRFJUVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAgICAgICAgICAgICAgICAn
QWN0dWFsSGFzaDogY2hlY2tzdW0tY2hlY2tzdW1cbicsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAnRXhwZWN0ZWRIYXNoOiB3cm9uZy1jaGVja3N1bVxuJywKICAgICAgICAgICAgICAgICAgICAg
ICAgICdDb250ZW50LVR5cGU6IGltYWdlL3BuZ1xuJywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICdDb250ZW50LUxlbmd0aDogMTNcblxuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICdDb250
ZW50LUxlbmd0aDogMTNcbicsCiAgICAgICAgICAgICAgICAgICAgICAgICAnY2hlY2tzdW1ceDhh
LXBuZycsCiAgICAgICAgICAgICAgICAgICAgICAgICAnI0VPRlxuJ10pCiAKZGlmZiAtLWdpdCBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdC5weSBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdC5weQppbmRleCAzMGI0MzNl
ZTczMzA4MzY2NmM3OTQ4YWVkMGQyYmZiYzNhOWYyNzZkLi5iMWEzMjNmNGI5ZjFjYWE0NTU0YWNm
ZjhiNzY1NTNmY2Y1Y2RhMGFiIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L3Rlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC90ZXN0LnB5CkBAIC0zMCw2ICszMCw3IEBACiAiIiJEdW1teSBQb3J0IGlt
cGxlbWVudGF0aW9uIHVzZWQgZm9yIHRlc3RpbmcuIiIiCiBmcm9tIF9fZnV0dXJlX18gaW1wb3J0
IHdpdGhfc3RhdGVtZW50CiAKK2ltcG9ydCBiYXNlNjQKIGltcG9ydCB0aW1lCiAKIGZyb20gd2Vi
a2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQgZmlsZXN5c3RlbV9tb2NrCkBAIC02Niw2ICs2Nyw4
IEBAIGNsYXNzIFRlc3RJbnN0YW5jZToKICAgICAgICAgc2VsZi5leHBlY3RlZF9jaGVja3N1bSA9
IHNlbGYuYWN0dWFsX2NoZWNrc3VtCiAgICAgICAgIHNlbGYuZXhwZWN0ZWRfaW1hZ2UgPSBzZWxm
LmFjdHVhbF9pbWFnZQogCisgICAgICAgIHNlbGYuYWN0dWFsX2F1ZGlvID0gTm9uZQorICAgICAg
ICBzZWxmLmV4cGVjdGVkX2F1ZGlvID0gTm9uZQogCiAjIFRoaXMgaXMgYW4gaW4tbWVtb3J5IGxp
c3Qgb2YgdGVzdHMsIHdoYXQgd2Ugd2FudCB0aGVtIHRvIHByb2R1Y2UsIGFuZAogIyB3aGF0IHdl
IHdhbnQgdG8gY2xhaW0gYXJlIHRoZSBleHBlY3RlZCByZXN1bHRzLgpAQCAtMTExLDExICsxMTQs
MjAgQEAgZGVmIHVuaXRfdGVzdF9saXN0KCk6CiAgICAgdGVzdHMuYWRkKCdmYWlsdXJlcy9leHBl
Y3RlZC9pbWFnZV9jaGVja3N1bS5odG1sJywKICAgICAgICAgICAgICAgYWN0dWFsX2NoZWNrc3Vt
PSdpbWFnZV9jaGVja3N1bV9mYWlsLWNoZWNrc3VtJywKICAgICAgICAgICAgICAgYWN0dWFsX2lt
YWdlPSdpbWFnZV9jaGVja3N1bV9mYWlsLXBuZycpCisgICAgdGVzdHMuYWRkKCdmYWlsdXJlcy9l
eHBlY3RlZC9hdWRpby5odG1sJywKKyAgICAgICAgICAgICAgYWN0dWFsX2F1ZGlvPWJhc2U2NC5i
NjRlbmNvZGUoJ2F1ZGlvX2ZhaWwtd2F2JyksIGV4cGVjdGVkX2F1ZGlvPSdhdWRpby13YXYnLAor
ICAgICAgICAgICAgICBhY3R1YWxfdGV4dD1Ob25lLCBleHBlY3RlZF90ZXh0PU5vbmUsCisgICAg
ICAgICAgICAgIGFjdHVhbF9pbWFnZT1Ob25lLCBleHBlY3RlZF9pbWFnZT1Ob25lLAorICAgICAg
ICAgICAgICBhY3R1YWxfY2hlY2tzdW09Tm9uZSwgZXhwZWN0ZWRfY2hlY2tzdW09Tm9uZSkKICAg
ICB0ZXN0cy5hZGQoJ2ZhaWx1cmVzL2V4cGVjdGVkL2tleWJvYXJkLmh0bWwnLCBrZXlib2FyZD1U
cnVlKQogICAgIHRlc3RzLmFkZCgnZmFpbHVyZXMvZXhwZWN0ZWQvbWlzc2luZ19jaGVjay5odG1s
JywKICAgICAgICAgICAgICAgZXhwZWN0ZWRfY2hlY2tzdW09Tm9uZSwKICAgICAgICAgICAgICAg
ZXhwZWN0ZWRfaW1hZ2U9Tm9uZSkKICAgICB0ZXN0cy5hZGQoJ2ZhaWx1cmVzL2V4cGVjdGVkL21p
c3NpbmdfaW1hZ2UuaHRtbCcsIGV4cGVjdGVkX2ltYWdlPU5vbmUpCisgICAgdGVzdHMuYWRkKCdm
YWlsdXJlcy9leHBlY3RlZC9taXNzaW5nX2F1ZGlvLmh0bWwnLCBleHBlY3RlZF9hdWRpbz1Ob25l
LAorICAgICAgICAgICAgICBhY3R1YWxfdGV4dD1Ob25lLCBleHBlY3RlZF90ZXh0PU5vbmUsCisg
ICAgICAgICAgICAgIGFjdHVhbF9pbWFnZT1Ob25lLCBleHBlY3RlZF9pbWFnZT1Ob25lLAorICAg
ICAgICAgICAgICBhY3R1YWxfY2hlY2tzdW09Tm9uZSwgZXhwZWN0ZWRfY2hlY2tzdW09Tm9uZSkK
ICAgICB0ZXN0cy5hZGQoJ2ZhaWx1cmVzL2V4cGVjdGVkL21pc3NpbmdfdGV4dC5odG1sJywgZXhw
ZWN0ZWRfdGV4dD1Ob25lKQogICAgIHRlc3RzLmFkZCgnZmFpbHVyZXMvZXhwZWN0ZWQvbmV3bGlu
ZXNfbGVhZGluZy5odG1sJywKICAgICAgICAgICAgICAgZXhwZWN0ZWRfdGV4dD0iXG5mb29cbiIs
IGFjdHVhbF90ZXh0PSJmb29cbiIpCkBAIC0xMzQsNiArMTQ2LDExIEBAIGRlZiB1bml0X3Rlc3Rf
bGlzdCgpOgogICAgIHRlc3RzLmFkZCgnaHR0cC90ZXN0cy9zc2wvdGV4dC5odG1sJykKICAgICB0
ZXN0cy5hZGQoJ3Bhc3Nlcy9lcnJvci5odG1sJywgZXJyb3I9J3N0dWZmIGdvaW5nIHRvIHN0ZGVy
cicpCiAgICAgdGVzdHMuYWRkKCdwYXNzZXMvaW1hZ2UuaHRtbCcpCisgICAgdGVzdHMuYWRkKCdw
YXNzZXMvYXVkaW8uaHRtbCcsCisgICAgICAgICAgICAgIGFjdHVhbF9hdWRpbz1iYXNlNjQuYjY0
ZW5jb2RlKCdhdWRpby13YXYnKSwgZXhwZWN0ZWRfYXVkaW89J2F1ZGlvLXdhdicsCisgICAgICAg
ICAgICAgIGFjdHVhbF90ZXh0PU5vbmUsIGV4cGVjdGVkX3RleHQ9Tm9uZSwKKyAgICAgICAgICAg
ICAgYWN0dWFsX2ltYWdlPU5vbmUsIGV4cGVjdGVkX2ltYWdlPU5vbmUsCisgICAgICAgICAgICAg
IGFjdHVhbF9jaGVja3N1bT1Ob25lLCBleHBlY3RlZF9jaGVja3N1bT1Ob25lKQogICAgIHRlc3Rz
LmFkZCgncGFzc2VzL3BsYXRmb3JtX2ltYWdlLmh0bWwnKQogICAgIHRlc3RzLmFkZCgncGFzc2Vz
L2NoZWNrc3VtX2luX2ltYWdlLmh0bWwnLAogICAgICAgICAgICAgICBleHBlY3RlZF9jaGVja3N1
bT1Ob25lLApAQCAtMTg0LDIwICsyMDEsMjcgQEAgZGVmIHVuaXRfdGVzdF9maWxlc3lzdGVtKGZp
bGVzPU5vbmUpOgogICAgICAgICBhZGRfZmlsZShmaWxlcywgdGVzdCwgJy5odG1sJywgJycpCiAg
ICAgICAgIGlmIHRlc3QuaXNfcmVmdGVzdDoKICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAg
IGlmIHRlc3QuYWN0dWFsX2F1ZGlvOgorICAgICAgICAgICAgYWRkX2ZpbGUoZmlsZXMsIHRlc3Qs
ICctZXhwZWN0ZWQud2F2JywgdGVzdC5leHBlY3RlZF9hdWRpbykKKyAgICAgICAgICAgIGNvbnRp
bnVlCisKICAgICAgICAgYWRkX2ZpbGUoZmlsZXMsIHRlc3QsICctZXhwZWN0ZWQudHh0JywgdGVz
dC5leHBlY3RlZF90ZXh0KQogICAgICAgICBhZGRfZmlsZShmaWxlcywgdGVzdCwgJy1leHBlY3Rl
ZC5jaGVja3N1bScsIHRlc3QuZXhwZWN0ZWRfY2hlY2tzdW0pCiAgICAgICAgIGFkZF9maWxlKGZp
bGVzLCB0ZXN0LCAnLWV4cGVjdGVkLnBuZycsIHRlc3QuZXhwZWN0ZWRfaW1hZ2UpCiAKKwogICAg
ICMgQWRkIHRoZSB0ZXN0X2V4cGVjdGF0aW9ucyBmaWxlLgogICAgIGZpbGVzW0xBWU9VVF9URVNU
X0RJUiArICcvcGxhdGZvcm0vdGVzdC90ZXN0X2V4cGVjdGF0aW9ucy50eHQnXSA9ICIiIgogV09O
VEZJWCA6IGZhaWx1cmVzL2V4cGVjdGVkL2NoZWNrc3VtLmh0bWwgPSBJTUFHRQogV09OVEZJWCA6
IGZhaWx1cmVzL2V4cGVjdGVkL2NyYXNoLmh0bWwgPSBDUkFTSAogLy8gVGhpcyBvbmUgYWN0dWFs
bHkgcGFzc2VzIGJlY2F1c2UgdGhlIGNoZWNrc3VtcyB3aWxsIG1hdGNoLgogV09OVEZJWCA6IGZh
aWx1cmVzL2V4cGVjdGVkL2ltYWdlLmh0bWwgPSBQQVNTCitXT05URklYIDogZmFpbHVyZXMvZXhw
ZWN0ZWQvYXVkaW8uaHRtbCA9IEFVRElPCiBXT05URklYIDogZmFpbHVyZXMvZXhwZWN0ZWQvaW1h
Z2VfY2hlY2tzdW0uaHRtbCA9IElNQUdFCiBXT05URklYIDogZmFpbHVyZXMvZXhwZWN0ZWQvbWlz
bWF0Y2guaHRtbCA9IElNQUdFCiBXT05URklYIDogZmFpbHVyZXMvZXhwZWN0ZWQvbWlzc2luZ19j
aGVjay5odG1sID0gTUlTU0lORyBQQVNTCiBXT05URklYIDogZmFpbHVyZXMvZXhwZWN0ZWQvbWlz
c2luZ19pbWFnZS5odG1sID0gTUlTU0lORyBQQVNTCitXT05URklYIDogZmFpbHVyZXMvZXhwZWN0
ZWQvbWlzc2luZ19hdWRpby5odG1sID0gTUlTU0lORyBQQVNTCiBXT05URklYIDogZmFpbHVyZXMv
ZXhwZWN0ZWQvbWlzc2luZ190ZXh0Lmh0bWwgPSBNSVNTSU5HIFBBU1MKIFdPTlRGSVggOiBmYWls
dXJlcy9leHBlY3RlZC9uZXdsaW5lc19sZWFkaW5nLmh0bWwgPSBURVhUCiBXT05URklYIDogZmFp
bHVyZXMvZXhwZWN0ZWQvbmV3bGluZXNfdHJhaWxpbmcuaHRtbCA9IFRFWFQKQEAgLTQxMiwxMCAr
NDM2LDEzIEBAIGNsYXNzIFRlc3REcml2ZXIoYmFzZS5Ecml2ZXIpOgogICAgICAgICAgICAgcmFp
c2UgVmFsdWVFcnJvcignZXhjZXB0aW9uIGZyb20gJyArIHRlc3RfbmFtZSkKICAgICAgICAgaWYg
dGVzdC5oYW5nOgogICAgICAgICAgICAgdGltZS5zbGVlcCgoZmxvYXQodGVzdF9pbnB1dC50aW1l
b3V0KSAqIDQpIC8gMTAwMC4wKQorCisgICAgICAgIGF1ZGlvID0gTm9uZQorICAgICAgICBpZiB0
ZXN0LmFjdHVhbF9hdWRpbzoKKyAgICAgICAgICAgIGF1ZGlvID0gYmFzZTY0LmI2NGRlY29kZSh0
ZXN0LmFjdHVhbF9hdWRpbykKICAgICAgICAgcmV0dXJuIGJhc2UuRHJpdmVyT3V0cHV0KHRlc3Qu
YWN0dWFsX3RleHQsIHRlc3QuYWN0dWFsX2ltYWdlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdGVzdC5hY3R1YWxfY2hlY2tzdW0sIHRlc3QuY3Jhc2gsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0aW1lLnRpbWUoKSAtIHN0YXJ0X3RpbWUsIHRlc3QudGltZW91
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3QuZXJyb3IpCisgICAgICAg
ICAgICB0ZXN0LmFjdHVhbF9jaGVja3N1bSwgYXVkaW8sIGNyYXNoPXRlc3QuY3Jhc2gsCisgICAg
ICAgICAgICB0ZXN0X3RpbWU9dGltZS50aW1lKCkgLSBzdGFydF90aW1lLCB0aW1lb3V0PXRlc3Qu
dGltZW91dCwgZXJyb3I9dGVzdC5lcnJvcikKIAogICAgIGRlZiBzdGFydChzZWxmKToKICAgICAg
ICAgcGFzcwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC93ZWJraXQucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L3dlYmtpdC5weQppbmRleCAyMTUwZTRjY2U1YmYyNDVkN2M4OGQxOWFjM2M0YmI0MGU1ZDEwZTU1
Li4yZTZhMjk3Y2MzN2ZiNjI4MGFlYjkyODQ2NTQ2ZTkzZjNhY2NmM2FkIDEwMDY0NAotLS0gYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weQorKysgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weQpAQCAtMzAs
NyArMzAsNyBAQAogCiAiIiJXZWJLaXQgaW1wbGVtZW50YXRpb25zIG9mIHRoZSBQb3J0IGludGVy
ZmFjZS4iIiIKIAotCitpbXBvcnQgYmFzZTY0CiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IG9wZXJh
dG9yCiBpbXBvcnQgb3MKQEAgLTQwNiw1MSArNDA2LDI0IEBAIGNsYXNzIFdlYktpdERyaXZlcihi
YXNlLkRyaXZlcik6CiAgICAgICAgIHN0YXJ0X3RpbWUgPSB0aW1lLnRpbWUoKQogICAgICAgICBz
ZWxmLl9zZXJ2ZXJfcHJvY2Vzcy53cml0ZShjb21tYW5kKQogCi0gICAgICAgIGhhdmVfc2Vlbl9j
b250ZW50X3R5cGUgPSBGYWxzZQotICAgICAgICBhY3R1YWxfaW1hZ2VfaGFzaCA9IE5vbmUKLSAg
ICAgICAgb3V0cHV0ID0gc3RyKCkgICMgVXNlIGEgYnl0ZSBhcnJheSBmb3Igb3V0cHV0LCBldmVu
IHRob3VnaCBpdCBzaG91bGQgYmUgVVRGLTguCiAgICAgICAgIHRleHQgPSBOb25lCiAgICAgICAg
IGltYWdlID0gTm9uZQorICAgICAgICBhY3R1YWxfaW1hZ2VfaGFzaCA9IE5vbmUKKyAgICAgICAg
YXVkaW8gPSBOb25lCisgICAgICAgIGRlYWRsaW5lID0gdGltZS50aW1lKCkgKyBpbnQoZHJpdmVy
X2lucHV0LnRpbWVvdXQpIC8gMTAwMC4wCiAKLSAgICAgICAgdGltZW91dCA9IGludChkcml2ZXJf
aW5wdXQudGltZW91dCkgLyAxMDAwLjAKLSAgICAgICAgZGVhZGxpbmUgPSB0aW1lLnRpbWUoKSAr
IHRpbWVvdXQKLSAgICAgICAgbGluZSA9IHNlbGYuX3NlcnZlcl9wcm9jZXNzLnJlYWRfbGluZSh0
aW1lb3V0KQotICAgICAgICB3aGlsZSAobm90IHNlbGYuX3NlcnZlcl9wcm9jZXNzLnRpbWVkX291
dAotICAgICAgICAgICAgICAgYW5kIG5vdCBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5jcmFzaGVkCi0g
ICAgICAgICAgICAgICBhbmQgbGluZS5yc3RyaXAoKSAhPSAiI0VPRiIpOgotICAgICAgICAgICAg
aWYgKGxpbmUuc3RhcnRzd2l0aCgnQ29udGVudC1UeXBlOicpIGFuZCBub3QKLSAgICAgICAgICAg
ICAgICBoYXZlX3NlZW5fY29udGVudF90eXBlKToKLSAgICAgICAgICAgICAgICBoYXZlX3NlZW5f
Y29udGVudF90eXBlID0gVHJ1ZQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAj
IE5vdGU6IFRleHQgb3V0cHV0IGZyb20gRHVtcFJlbmRlclRyZWUgaXMgYWx3YXlzIFVURi04Lgot
ICAgICAgICAgICAgICAgICMgSG93ZXZlciwgc29tZSB0ZXN0cyAoZS5nLiB3ZWJhcmNoaXZlcykg
c3BpdCBvdXQgYmluYXJ5Ci0gICAgICAgICAgICAgICAgIyBkYXRhIGluc3RlYWQgb2YgdGV4dC4g
IFNvIHRvIG1ha2UgdGhpbmdzIHNpbXBsZSwgd2UKLSAgICAgICAgICAgICAgICAjIGFsd2F5cyB0
cmVhdCB0aGUgb3V0cHV0IGFzIGJpbmFyeS4KLSAgICAgICAgICAgICAgICBvdXRwdXQgKz0gbGlu
ZQotICAgICAgICAgICAgbGluZSA9IHNlbGYuX3NlcnZlcl9wcm9jZXNzLnJlYWRfbGluZSh0aW1l
b3V0KQotICAgICAgICAgICAgdGltZW91dCA9IGRlYWRsaW5lIC0gdGltZS50aW1lKCkKLQotICAg
ICAgICBpZiBvdXRwdXQ6Ci0gICAgICAgICAgICB0ZXh0ID0gb3V0cHV0CisgICAgICAgICMgRmly
c3QgYmxvY2sgaXMgZWl0aGVyIHRleHQgb3IgYXVkaW8KKyAgICAgICAgYmxvY2sgPSBzZWxmLl9y
ZWFkX2Jsb2NrKGRlYWRsaW5lKQorICAgICAgICBpZiBibG9jay5jb250ZW50X3R5cGUgPT0gJ2F1
ZGlvL3dhdic6CisgICAgICAgICAgICBhdWRpbyA9IGJsb2NrLmRlY29kZWRfY29udGVudAorICAg
ICAgICBlbHNlOgorICAgICAgICAgICAgdGV4dCA9IGJsb2NrLmRlY29kZWRfY29udGVudAogCi0g
ICAgICAgICMgTm93IHJlYWQgYSBzZWNvbmQgYmxvY2sgb2YgdGV4dCBmb3IgdGhlIG9wdGlvbmFs
IGltYWdlIGRhdGEKLSAgICAgICAgcmVtYWluaW5nX2xlbmd0aCA9IC0xCi0gICAgICAgIEhBU0hf
SEVBREVSID0gJ0FjdHVhbEhhc2g6ICcKLSAgICAgICAgTEVOR1RIX0hFQURFUiA9ICdDb250ZW50
LUxlbmd0aDogJwotICAgICAgICBsaW5lID0gc2VsZi5fc2VydmVyX3Byb2Nlc3MucmVhZF9saW5l
KHRpbWVvdXQpCi0gICAgICAgIHdoaWxlIChub3Qgc2VsZi5fc2VydmVyX3Byb2Nlc3MudGltZWRf
b3V0Ci0gICAgICAgICAgICAgICBhbmQgbm90IHNlbGYuX3NlcnZlcl9wcm9jZXNzLmNyYXNoZWQK
LSAgICAgICAgICAgICAgIGFuZCBsaW5lLnJzdHJpcCgpICE9ICIjRU9GIik6Ci0gICAgICAgICAg
ICBpZiBsaW5lLnN0YXJ0c3dpdGgoSEFTSF9IRUFERVIpOgotICAgICAgICAgICAgICAgIGFjdHVh
bF9pbWFnZV9oYXNoID0gbGluZVtsZW4oSEFTSF9IRUFERVIpOl0uc3RyaXAoKQotICAgICAgICAg
ICAgZWxpZiBsaW5lLnN0YXJ0c3dpdGgoJ0NvbnRlbnQtVHlwZTonKToKLSAgICAgICAgICAgICAg
ICBwYXNzCi0gICAgICAgICAgICBlbGlmIGxpbmUuc3RhcnRzd2l0aChMRU5HVEhfSEVBREVSKToK
LSAgICAgICAgICAgICAgICB0aW1lb3V0ID0gZGVhZGxpbmUgLSB0aW1lLnRpbWUoKQotICAgICAg
ICAgICAgICAgIGNvbnRlbnRfbGVuZ3RoID0gaW50KGxpbmVbbGVuKExFTkdUSF9IRUFERVIpOl0p
Ci0gICAgICAgICAgICAgICAgaW1hZ2UgPSBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5yZWFkKHRpbWVv
dXQsIGNvbnRlbnRfbGVuZ3RoKQotICAgICAgICAgICAgdGltZW91dCA9IGRlYWRsaW5lIC0gdGlt
ZS50aW1lKCkKLSAgICAgICAgICAgIGxpbmUgPSBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5yZWFkX2xp
bmUodGltZW91dCkKKyAgICAgICAgIyBOb3cgcmVhZCBhbiBvcHRpb25hbCBzZWNvbmQgYmxvY2sg
b2YgaW1hZ2UgZGF0YQorICAgICAgICBibG9jayA9IHNlbGYuX3JlYWRfYmxvY2soZGVhZGxpbmUp
CisgICAgICAgIGlmIGJsb2NrLmNvbnRlbnQgYW5kIGJsb2NrLmNvbnRlbnRfdHlwZSA9PSAnaW1h
Z2UvcG5nJzoKKyAgICAgICAgICAgIGltYWdlID0gYmxvY2suZGVjb2RlZF9jb250ZW50CisgICAg
ICAgICAgICBhY3R1YWxfaW1hZ2VfaGFzaCA9IGJsb2NrLmNvbnRlbnRfaGFzaAogCiAgICAgICAg
IGVycm9yX2xpbmVzID0gc2VsZi5fc2VydmVyX3Byb2Nlc3MuZXJyb3Iuc3BsaXRsaW5lcygpCiAg
ICAgICAgICMgRklYTUU6IFRoaXMgaXMgYSBoYWNrLiAgSXQgaXMgdW5jbGVhciB3aHkgc29tZXRp
bWVzCkBAIC00NjIsMTMgKzQzNSw1OSBAQCBjbGFzcyBXZWJLaXREcml2ZXIoYmFzZS5Ecml2ZXIp
OgogICAgICAgICAjIEZJWE1FOiBUaGlzIHNlZW1zIGxpa2UgdGhlIHdyb25nIHNlY3Rpb24gb2Yg
Y29kZSB0byBiZSBkb2luZwogICAgICAgICAjIHRoaXMgcmVzZXQgaW4uCiAgICAgICAgIHNlbGYu
X3NlcnZlcl9wcm9jZXNzLmVycm9yID0gIiIKLSAgICAgICAgcmV0dXJuIGJhc2UuRHJpdmVyT3V0
cHV0KHRleHQsIGltYWdlLCBhY3R1YWxfaW1hZ2VfaGFzaCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNlbGYuX3NlcnZlcl9wcm9jZXNzLmNyYXNoZWQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0aW1lLnRpbWUoKSAtIHN0YXJ0X3RpbWUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy50aW1lZF9vdXQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcikKKyAgICAgICAgcmV0dXJuIGJh
c2UuRHJpdmVyT3V0cHV0KHRleHQsIGltYWdlLCBhY3R1YWxfaW1hZ2VfaGFzaCwgYXVkaW8sCisg
ICAgICAgICAgICBjcmFzaD1zZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5jcmFzaGVkLCB0ZXN0X3RpbWU9
dGltZS50aW1lKCkgLSBzdGFydF90aW1lLAorICAgICAgICAgICAgdGltZW91dD1zZWxmLl9zZXJ2
ZXJfcHJvY2Vzcy50aW1lZF9vdXQsIGVycm9yPWVycm9yKQorCisgICAgZGVmIF9yZWFkX2Jsb2Nr
KHNlbGYsIGRlYWRsaW5lKToKKyAgICAgICAgTEVOR1RIX0hFQURFUiA9ICdDb250ZW50LUxlbmd0
aDogJworICAgICAgICBIQVNIX0hFQURFUiA9ICdBY3R1YWxIYXNoOiAnCisgICAgICAgIFRZUEVf
SEVBREVSID0gJ0NvbnRlbnQtVHlwZTogJworICAgICAgICBFTkNPRElOR19IRUFERVIgPSAnQ29u
dGVudC1UcmFuc2Zlci1FbmNvZGluZzogJworICAgICAgICBjb250ZW50X3R5cGUgPSBOb25lCisg
ICAgICAgIGVuY29kaW5nID0gTm9uZQorICAgICAgICBjb250ZW50X2hhc2ggPSBOb25lCisgICAg
ICAgIGNvbnRlbnRfbGVuZ3RoID0gTm9uZQorCisgICAgICAgICMgQ29udGVudCBpcyB0cmVhdGVk
IGFzIGJpbmFyeSBkYXRhIGV2ZW4gdGhvdWdoIHRoZSB0ZXh0IG91dHB1dAorICAgICAgICAjIGlz
IHVzdWFsbHkgVVRGLTguCisgICAgICAgIGNvbnRlbnQgPSAnJworICAgICAgICB0aW1lb3V0ID0g
ZGVhZGxpbmUgLSB0aW1lLnRpbWUoKQorICAgICAgICBsaW5lID0gc2VsZi5fc2VydmVyX3Byb2Nl
c3MucmVhZF9saW5lKHRpbWVvdXQpCisgICAgICAgIHdoaWxlIChub3Qgc2VsZi5fc2VydmVyX3By
b2Nlc3MudGltZWRfb3V0CisgICAgICAgICAgICAgICBhbmQgbm90IHNlbGYuX3NlcnZlcl9wcm9j
ZXNzLmNyYXNoZWQKKyAgICAgICAgICAgICAgIGFuZCBsaW5lLnJzdHJpcCgpICE9ICIjRU9GIik6
CisgICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoVFlQRV9IRUFERVIpIGFuZCBjb250ZW50
X3R5cGUgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBjb250ZW50X3R5cGUgPSBsaW5lLnNwbGl0
KClbMV0KKyAgICAgICAgICAgIGVsaWYgbGluZS5zdGFydHN3aXRoKEVOQ09ESU5HX0hFQURFUikg
YW5kIGVuY29kaW5nIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgZW5jb2RpbmcgPSBsaW5lLnNw
bGl0KClbMV0KKyAgICAgICAgICAgIGVsaWYgbGluZS5zdGFydHN3aXRoKExFTkdUSF9IRUFERVIp
IGFuZCBjb250ZW50X2xlbmd0aCBpcyBOb25lOgorICAgICAgICAgICAgICAgIHRpbWVvdXQgPSBk
ZWFkbGluZSAtIHRpbWUudGltZSgpCisgICAgICAgICAgICAgICAgY29udGVudF9sZW5ndGggPSBp
bnQobGluZVtsZW4oTEVOR1RIX0hFQURFUik6XSkKKyAgICAgICAgICAgICAgICAjIEZJWE1FOiBU
ZWNobmljYWxseSB0aGVyZSBzaG91bGQgcHJvYmFibHkgYmUgYW5vdGhlciBibGFuaworICAgICAg
ICAgICAgICAgICMgbGluZSBoZXJlLCBidXQgRFJUIGRvZXNuJ3Qgd3JpdGUgb25lLgorICAgICAg
ICAgICAgICAgIGNvbnRlbnQgPSBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5yZWFkKHRpbWVvdXQsIGNv
bnRlbnRfbGVuZ3RoKQorICAgICAgICAgICAgZWxpZiBsaW5lLnN0YXJ0c3dpdGgoSEFTSF9IRUFE
RVIpOgorICAgICAgICAgICAgICAgIGNvbnRlbnRfaGFzaCA9IGxpbmUuc3BsaXQoKVsxXQorICAg
ICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBjb250ZW50ICs9IGxpbmUKKyAgICAgICAg
ICAgIGxpbmUgPSBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5yZWFkX2xpbmUodGltZW91dCkKKyAgICAg
ICAgICAgIHRpbWVvdXQgPSBkZWFkbGluZSAtIHRpbWUudGltZSgpCisgICAgICAgIHJldHVybiBD
b250ZW50QmxvY2soY29udGVudF90eXBlLCBlbmNvZGluZywgY29udGVudF9oYXNoLCBjb250ZW50
KQogCiAgICAgZGVmIHN0b3Aoc2VsZik6CiAgICAgICAgIGlmIHNlbGYuX3NlcnZlcl9wcm9jZXNz
OgogICAgICAgICAgICAgc2VsZi5fc2VydmVyX3Byb2Nlc3Muc3RvcCgpCiAgICAgICAgICAgICBz
ZWxmLl9zZXJ2ZXJfcHJvY2VzcyA9IE5vbmUKKworCitjbGFzcyBDb250ZW50QmxvY2sob2JqZWN0
KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgY29udGVudF90eXBlLCBlbmNvZGluZywgY29udGVu
dF9oYXNoLCBjb250ZW50KToKKyAgICAgICAgc2VsZi5jb250ZW50X3R5cGUgPSBjb250ZW50X3R5
cGUKKyAgICAgICAgc2VsZi5lbmNvZGluZyA9IGVuY29kaW5nCisgICAgICAgIHNlbGYuY29udGVu
dF9oYXNoID0gY29udGVudF9oYXNoCisgICAgICAgIHNlbGYuY29udGVudCA9IGNvbnRlbnQKKyAg
ICAgICAgaWYgc2VsZi5lbmNvZGluZyA9PSAnYmFzZTY0JzoKKyAgICAgICAgICAgIHNlbGYuZGVj
b2RlZF9jb250ZW50ID0gYmFzZTY0LmI2NGRlY29kZShjb250ZW50KQorICAgICAgICBlbHNlOgor
ICAgICAgICAgICAgc2VsZi5kZWNvZGVkX2NvbnRlbnQgPSBjb250ZW50Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>