<?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>49431</bug_id>
          
          <creation_ts>2010-11-12 00:37:35 -0800</creation_ts>
          <short_desc>Refactor TestTypeBase.compare_output().</short_desc>
          <delta_ts>2010-11-17 17:04:02 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>36065</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Hayato Ito">hayato</reporter>
          <assigned_to name="Hayato Ito">hayato</assigned_to>
          <cc>dpranke</cc>
    
    <cc>ojan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>308429</commentid>
    <comment_count>0</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2010-11-12 00:37:35 -0800</bug_when>
    <thetext>We need to refactor compare_output() of each test type so that the function can take not only an actual test output, but also an expected test output.

Please see a https://bugs.webkit.org/show_bug.cgi?id=36065#c52 for the background.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>308445</commentid>
    <comment_count>1</comment_count>
      <attachid>73719</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2010-11-12 01:55:26 -0800</bug_when>
    <thetext>Created attachment 73719
testoutput-refactor</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>308447</commentid>
    <comment_count>2</comment_count>
      <attachid>73720</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2010-11-12 02:00:03 -0800</bug_when>
    <thetext>Created attachment 73720
testoutput-refactor-fix-typo-and-remove-unused-functions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>308456</commentid>
    <comment_count>3</comment_count>
      <attachid>73720</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-11-12 02:21:27 -0800</bug_when>
    <thetext>Comment on attachment 73720
testoutput-refactor-fix-typo-and-remove-unused-functions

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

I&apos;ve only gotten about half-way through so far, but it looks pretty good; definitely on the right track. I will finish reviewing tomorrow, as it&apos;s now 2:30 in the morning my time ;)

&gt; WebKitTools/Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:82
&gt; +        self.image = image

Don&apos;t worry about lazy retrieval. Once the multi-processing patch lands, all of the image retrieval will only be done when it&apos;s needed.

&gt; WebKitTools/Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:241
&gt; +                        image_hash_to_driver)

Ideally driver.run_test() returns a TestOutput. Then you can pull _get_driver_output_image() inside run_test(), and skip the write to the filesystem for DumpRenderTree-based implementations.

I actually also want there to be a TestInput class that is the sole argument passed to run_test(), but that&apos;s a separate patch :). Feel free to do that as well, if you like; it&apos;s less important.

&gt; WebKitTools/Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:249
&gt; +                           test_output, end - start)

I think you can and should pull end-start into TestOutput.test_time (or something like that).

I think all of the fields in test_info should also be in TestOutput (and TestInput), so you don&apos;t need to pass both test_info and test_output. I.e. TestOutput subclasses TestInput which subclasses TestInfo, or something. Actually, I think once the multiprocessing stuff lands TestInput *is* TestInfo.

&gt; WebKitTools/Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:286
&gt;          self._driver.stop()

We eventually need to flip these things so that SingleTestThread returns the TestOutput, not the TestResult, and that way process_output can become an instance method on TestShellThread instead of a static function (this allows us to pare off two more arguments to process output, and the routine actually becomes manageable). But that&apos;s a separate patch as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>308899</commentid>
    <comment_count>4</comment_count>
      <attachid>73720</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-11-12 18:24:47 -0800</bug_when>
    <thetext>Comment on attachment 73720
testoutput-refactor-fix-typo-and-remove-unused-functions

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

Change looks good otherwise. If you can make the changes suggested above, the next rev should be fine.

&gt; WebKitTools/Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:77
&gt; +          error: any unexpected or additional (or error) text output

Please add test_run_time to this as well.

&gt; WebKitTools/Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:118
&gt; +    return port.expected_checksum(filename)

Does having these three routines really buy you anything over just calling port.expected_* in _expected_test_output(), below?

&gt; WebKitTools/Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:214
&gt; +def _image_hash_to_driver(port, filename, test_args, options):

Maybe rename this to get_expected_image_hash() or get_input_image_hash()?

&gt;&gt; WebKitTools/Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:249
&gt;&gt; +                           test_output, end - start)
&gt; 
&gt; I think you can and should pull end-start into TestOutput.test_time (or something like that).
&gt; 
&gt; I think all of the fields in test_info should also be in TestOutput (and TestInput), so you don&apos;t need to pass both test_info and test_output. I.e. TestOutput subclasses TestInput which subclasses TestInfo, or something. Actually, I think once the multiprocessing stuff lands TestInput *is* TestInfo.

(this repeats the comment above in the TestOutput constructor (a bit)).

&gt; WebKitTools/Scripts/webkitpy/layout_tests/test_types/image_diff.py:108
&gt; +                                      test_args.new_baseline)

Much cleaner :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>309984</commentid>
    <comment_count>5</comment_count>
      <attachid>74049</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2010-11-16 15:46:08 -0800</bug_when>
    <thetext>Created attachment 74049
updated-with-comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>309999</commentid>
    <comment_count>6</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2010-11-16 16:01:06 -0800</bug_when>
    <thetext>Thank you for the review. I&apos;ve updated the patch.

(In reply to comment #3)
&gt; (From update of attachment 73720 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=73720&amp;action=review
&gt; 
&gt; I&apos;ve only gotten about half-way through so far, but it looks pretty good; definitely on the right track. I will finish reviewing tomorrow, as it&apos;s now 2:30 in the morning my time ;)
&gt; 
&gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:82
&gt; &gt; +        self.image = image
&gt; 
&gt; Don&apos;t worry about lazy retrieval. Once the multi-processing patch lands, all of the image retrieval will only be done when it&apos;s needed.

Thank you for letting me know. I&apos;ve removed the comment about lazy retrieval.

&gt; 
&gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:241
&gt; &gt; +                        image_hash_to_driver)
&gt; 
&gt; Ideally driver.run_test() returns a TestOutput. Then you can pull _get_driver_output_image() inside run_test(), and skip the write to the filesystem for DumpRenderTree-based implementations.

Done. Now driver.run_test() returns TestOutput.

&gt; 
&gt; I actually also want there to be a TestInput class that is the sole argument passed to run_test(), but that&apos;s a separate patch :). Feel free to do that as well, if you like; it&apos;s less important.
&gt; 
&gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:249
&gt; &gt; +                           test_output, end - start)
&gt; 
&gt; I think you can and should pull end-start into TestOutput.test_time (or something like that).

Done. I&apos;ve added a test_time field to TestOutput.

&gt; 
&gt; I think all of the fields in test_info should also be in TestOutput (and TestInput), so you don&apos;t need to pass both test_info and test_output. I.e. TestOutput subclasses TestInput which subclasses TestInfo, or something. Actually, I think once the multiprocessing stuff lands TestInput *is* TestInfo.

Thank you for suggestion. I agree that the current data grouping is not ideal.
Instead of fixing it in this patch, I&apos;d like to rewrite TestInfo completely in a separate patch.

My very *rough* idea about grouping is:

  TestInfo object (which is created for each test.) which has:
    - filename, uri and so on.
    - expected_test_output (a TestOutput object)
    - actual_test_output: (a TestOutput object)
    - test_result: (a TestResult object)

  TestOutput object (an actual (or an expected) output) which has:
    - text
    - image
    - image_hash
    - (Optional) crash, test_time, timeout, error,

  TestResult: (a result of comparing an actual output with an expected output)
    - test_failures
    - time_diff
    - and so on.

  TestEnvironment object (which should be immutable once created and is shared in all tests)
    - test_args
    - test_types
    - port
    - options
    - and so on...

  
I think we have to pass only two parameters, test_env and test_info, in most cases by this grouping.
Maybe we have to pass just one parameter, test_info, if each test_info has a reference to a global test_env object.

What do you think about this idea? I&apos;ll try to refactor if you guys agree my idea.
Anyway, such a change may be a separate patch, I think.


&gt; 
&gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:286
&gt; &gt;          self._driver.stop()
&gt; 
&gt; We eventually need to flip these things so that SingleTestThread returns the TestOutput, not the TestResult, and that way process_output can become an instance method on TestShellThread instead of a static function (this allows us to pare off two more arguments to process output, and the routine actually becomes manageable). But that&apos;s a separate patch as well.

(In reply to comment #4)
&gt; (From update of attachment 73720 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=73720&amp;action=review
&gt; 
&gt; Change looks good otherwise. If you can make the changes suggested above, the next rev should be fine.
&gt; 
&gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:77
&gt; &gt; +          error: any unexpected or additional (or error) text output
&gt; 
&gt; Please add test_run_time to this as well.

test_run_time is now included in TestOutput object.

&gt; 
&gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:118
&gt; &gt; +    return port.expected_checksum(filename)
&gt; 
&gt; Does having these three routines really buy you anything over just calling port.expected_* in _expected_test_output(), below?

I agree. The three routines don&apos;t have a significant reason to exist in this refactoring stage. Sorry for confusing. I&apos;ve removed the three routines.

I&apos;ll make such separate functions again when I try to add reftest support.


&gt; 
&gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:214
&gt; &gt; +def _image_hash_to_driver(port, filename, test_args, options):
&gt; 
&gt; Maybe rename this to get_expected_image_hash() or get_input_image_hash()?

I am afraid that such a naming, get_input_image_hash(), is confusing because a image_hash parameter to be passed to driver.run_test() is not always same to a result of get_expected_image_hash().
I just wanted to emphasize the a this function&apos;s return value is not same to *expected_image_hash* by such a naming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310011</commentid>
    <comment_count>7</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-11-16 16:23:30 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; Thank you for the review. I&apos;ve updated the patch.
&gt; 
&gt; (In reply to comment #3)
&gt; &gt; (From update of attachment 73720 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=73720&amp;action=review
&gt; &gt; 
&gt; &gt; I&apos;ve only gotten about half-way through so far, but it looks pretty good; definitely on the right track. I will finish reviewing tomorrow, as it&apos;s now 2:30 in the morning my time ;)
&gt; &gt; 
&gt; &gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:82
&gt; &gt; &gt; +        self.image = image
&gt; &gt; 
&gt; &gt; Don&apos;t worry about lazy retrieval. Once the multi-processing patch lands, all of the image retrieval will only be done when it&apos;s needed.
&gt; 
&gt; Thank you for letting me know. I&apos;ve removed the comment about lazy retrieval.
&gt; 
&gt; &gt; 
&gt; &gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:241
&gt; &gt; &gt; +                        image_hash_to_driver)
&gt; &gt; 
&gt; &gt; Ideally driver.run_test() returns a TestOutput. Then you can pull _get_driver_output_image() inside run_test(), and skip the write to the filesystem for DumpRenderTree-based implementations.
&gt; 
&gt; Done. Now driver.run_test() returns TestOutput.
&gt; 
&gt; &gt; 
&gt; &gt; I actually also want there to be a TestInput class that is the sole argument passed to run_test(), but that&apos;s a separate patch :). Feel free to do that as well, if you like; it&apos;s less important.
&gt; &gt; 
&gt; &gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:249
&gt; &gt; &gt; +                           test_output, end - start)
&gt; &gt; 
&gt; &gt; I think you can and should pull end-start into TestOutput.test_time (or something like that).
&gt; 
&gt; Done. I&apos;ve added a test_time field to TestOutput.
&gt; 
&gt; &gt; 
&gt; &gt; I think all of the fields in test_info should also be in TestOutput (and TestInput), so you don&apos;t need to pass both test_info and test_output. I.e. TestOutput subclasses TestInput which subclasses TestInfo, or something. Actually, I think once the multiprocessing stuff lands TestInput *is* TestInfo.
&gt; 
&gt; Thank you for suggestion. I agree that the current data grouping is not ideal.
&gt; Instead of fixing it in this patch, I&apos;d like to rewrite TestInfo completely in a separate patch.
&gt; 

I&apos;ve actually done the rewriting of TestInput in bug 49573 :)

&gt; My very *rough* idea about grouping is:
&gt; 
&gt;   TestInfo object (which is created for each test.) which has:
&gt;     - filename, uri and so on.
&gt;     - expected_test_output (a TestOutput object)
&gt;     - actual_test_output: (a TestOutput object)
&gt;     - test_result: (a TestResult object)
&gt;

There is definitely a TestInput concept separate from the &quot;everything&quot; TestInfo concept you have above. My other concern with TestInfo as you have it above is that it is quite large (containing two PNGs as strings), and there is no place that needs all of that data at once.

I retract my earlier comment about TestOutput having all the fields that TestInput has; there&apos;s no real reason for this to be true either. They just share the primary key (test_name).
 
&gt;   TestEnvironment object (which should be immutable once created and is shared in all tests)
&gt;     - test_args
&gt;     - test_types
&gt;     - port
&gt;     - options

test_args needs to go away (we need to just use options and pass the worker number to the create_driver() call). I&apos;m not sure if test_types needs to exist or not yet. So, I&apos;m not sure if the concept of a TestEnvironment helps that much, although I appreciate the idea. Up to you to try it out and see if it simplifies things or not.

Definitely a separate patch :)

&gt; &gt; 
&gt; &gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:214
&gt; &gt; &gt; +def _image_hash_to_driver(port, filename, test_args, options):
&gt; &gt; 
&gt; &gt; Maybe rename this to get_expected_image_hash() or get_input_image_hash()?
&gt; 
&gt; I am afraid that such a naming, get_input_image_hash(), is confusing because a image_hash parameter to be passed to driver.run_test() is not always same to a result of get_expected_image_hash().
&gt; I just wanted to emphasize the a this function&apos;s return value is not same to *expected_image_hash* by such a naming.

Good point. In bug 49573, I broke this into two separate functions to better show the control flow.

I will try to stop changing code out from under you now :)

There&apos;s more cleanup that can be done, but this is enough changes for now. Patch LGTM, but I&apos;m not a reviewer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310337</commentid>
    <comment_count>8</comment_count>
      <attachid>74125</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2010-11-17 09:35:23 -0800</bug_when>
    <thetext>Created attachment 74125
merge-tot</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310345</commentid>
    <comment_count>9</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2010-11-17 09:42:56 -0800</bug_when>
    <thetext>Hi, Dirk

Thank you for the review. I&apos;ve updated the patch, merging to ToT.
I&apos;ve added Ojan to cc for review.

Hi, Ojan
I&apos;ll appreciate if you review this patch.

&gt; 
&gt; I&apos;ve actually done the rewriting of TestInput in bug 49573 :)
&gt; 
&gt; 
&gt; There&apos;s more cleanup that can be done, but this is enough changes for now. Patch LGTM, but I&apos;m not a reviewer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310447</commentid>
    <comment_count>10</comment_count>
      <attachid>74125</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-11-17 12:32:27 -0800</bug_when>
    <thetext>Comment on attachment 74125
merge-tot

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

&gt; WebKitTools/Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:96
&gt; +      test_output: a actual test_output

not sure what &quot;actual&quot; means in this context

&gt; WebKitTools/Scripts/webkitpy/layout_tests/test_types/image_diff.py:94
&gt; +                        expected_test_output):

indentation is off

&gt; WebKitTools/Scripts/webkitpy/layout_tests/test_types/text_diff.py:-58
&gt; -    def _get_normalized_expected_text(self, filename):

isn&apos;t this still being used below?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310484</commentid>
    <comment_count>11</comment_count>
      <attachid>74148</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2010-11-17 13:21:57 -0800</bug_when>
    <thetext>Created attachment 74148
fix-comment-and-indent</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310488</commentid>
    <comment_count>12</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2010-11-17 13:27:36 -0800</bug_when>
    <thetext>Hi Ojan,
Thank you for the review. I&apos;ve updated the patch. Could you review this again?

(In reply to comment #10)
&gt; (From update of attachment 74125 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=74125&amp;action=review
&gt; 
&gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:96
&gt; &gt; +      test_output: a actual test_output
&gt; 
&gt; not sure what &quot;actual&quot; means in this context

I&apos;ve updated the comment. I should have removed &apos;actual&apos; from here because there is no &apos;expected&apos; test_ouput in this point. Thank you. 

&gt; 
&gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/test_types/image_diff.py:94
&gt; &gt; +                        expected_test_output):
&gt; 
&gt; indentation is off

Done.

&gt; 
&gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/test_types/text_diff.py:-58
&gt; &gt; -    def _get_normalized_expected_text(self, filename):
&gt; 
&gt; isn&apos;t this still being used below?

This is not used anymore. Now a &apos;expected_text&apos; is passed from a caller. So we don&apos;t need this function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310554</commentid>
    <comment_count>13</comment_count>
      <attachid>74148</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2010-11-17 15:02:53 -0800</bug_when>
    <thetext>Comment on attachment 74148
fix-comment-and-indent

Clearing flags on attachment: 74148

Committed r72249: &lt;http://trac.webkit.org/changeset/72249&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310555</commentid>
    <comment_count>14</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2010-11-17 15:03:03 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310559</commentid>
    <comment_count>15</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-11-17 15:18:21 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; Created an attachment (id=74148) [details]
&gt; fix-comment-and-indent

This patch looks good. You even threw in some other cleanup that I had refrained from suggesting :)

What made you decide that image_checksum should not be a field on TestInput?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310569</commentid>
    <comment_count>16</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2010-11-17 15:43:11 -0800</bug_when>
    <thetext>Oh. I&apos;ve already submitted this patch. I&apos;ll do other clean up in a separate patch.

(In reply to comment #15)
&gt; (In reply to comment #11)
&gt; &gt; Created an attachment (id=74148) [details] [details]
&gt; &gt; fix-comment-and-indent
&gt; 
&gt; This patch looks good. You even threw in some other cleanup that I had refrained from suggesting :)
&gt; 
&gt; What made you decide that image_checksum should not be a field on TestInput?

I am sorry for the lack of explanations. I should have mentioned it.

I think that image_cheksum should be a member of (expected) TestOutput object. That should be enough, I think. So I&apos;ve removed that from a TestInput.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310595</commentid>
    <comment_count>17</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-11-17 16:19:48 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; Oh. I&apos;ve already submitted this patch. I&apos;ll do other clean up in a separate patch.
&gt; 
&gt; (In reply to comment #15)
&gt; &gt; (In reply to comment #11)
&gt; &gt; &gt; Created an attachment (id=74148) [details] [details] [details]
&gt; &gt; &gt; fix-comment-and-indent
&gt; &gt; 
&gt; &gt; This patch looks good. You even threw in some other cleanup that I had refrained from suggesting :)
&gt; &gt; 
&gt; &gt; What made you decide that image_checksum should not be a field on TestInput?
&gt; 
&gt; I am sorry for the lack of explanations. I should have mentioned it.
&gt; 
&gt; I think that image_cheksum should be a member of (expected) TestOutput object. That should be enough, I think. So I&apos;ve removed that from a TestInput.

But it still needs to be passed to DRT as a (semi-optional) input, though. To me, that sort of qualifies it for being on the TestInput object. I don&apos;t feel super strongly about this, but not having it be part of the TestInput keeps the interface to Driver.run_test() from being simply a single TestInput parameter, which feels pretty clean. Best case, it would be a TestInput plus a checksum, which would be more awkward. Or you could do what you did, which is have a TestInput class that isn&apos;t actually handed as input to the test driver, which is unfortunate.

It&apos;s definitely a judgement call, as it&apos;s not clear that the solution I describe above is better than what you&apos;ve done. I was wondering what your arguments for *not* including it in TestInput were. Duplication between TestInput and expected TestOutput is one potential argument; were there others?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310620</commentid>
    <comment_count>18</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2010-11-17 17:04:02 -0800</bug_when>
    <thetext>Hi Dirk,

I agree that the interface to Driver.run_test() becomes simple if TestInput has a checksum field. I&apos;ve missed that fact. That should be a reason that TestInput has a checksum field.

Before reading your comment, I had sent another patch, which removes &apos;uri&apos; field from TestInput for reviews:

  https://bugs.webkit.org/show_bug.cgi?id=49691

So I&apos;ll make another patch which makes Driver.run_test() take only one parameter, TestInput, to simplify Driver.run_test() after the above patch is reviewed and landed.

Anyway, thank you for your attention. I appreciated that.


(In reply to comment #17)
&gt; (In reply to comment #16)
&gt; &gt; Oh. I&apos;ve already submitted this patch. I&apos;ll do other clean up in a separate patch.
&gt; &gt; 
&gt; &gt; (In reply to comment #15)
&gt; &gt; &gt; (In reply to comment #11)
&gt; &gt; &gt; &gt; Created an attachment (id=74148) [details] [details] [details] [details]
&gt; &gt; &gt; &gt; fix-comment-and-indent
&gt; &gt; &gt; 
&gt; &gt; &gt; This patch looks good. You even threw in some other cleanup that I had refrained from suggesting :)
&gt; &gt; &gt; 
&gt; &gt; &gt; What made you decide that image_checksum should not be a field on TestInput?
&gt; &gt; 
&gt; &gt; I am sorry for the lack of explanations. I should have mentioned it.
&gt; &gt; 
&gt; &gt; I think that image_cheksum should be a member of (expected) TestOutput object. That should be enough, I think. So I&apos;ve removed that from a TestInput.
&gt; 
&gt; But it still needs to be passed to DRT as a (semi-optional) input, though. To me, that sort of qualifies it for being on the TestInput object. I don&apos;t feel super strongly about this, but not having it be part of the TestInput keeps the interface to Driver.run_test() from being simply a single TestInput parameter, which feels pretty clean. Best case, it would be a TestInput plus a checksum, which would be more awkward. Or you could do what you did, which is have a TestInput class that isn&apos;t actually handed as input to the test driver, which is unfortunate.
&gt; 
&gt; It&apos;s definitely a judgement call, as it&apos;s not clear that the solution I describe above is better than what you&apos;ve done. I was wondering what your arguments for *not* including it in TestInput were. Duplication between TestInput and expected TestOutput is one potential argument; were there others?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>73719</attachid>
            <date>2010-11-12 01:55:26 -0800</date>
            <delta_ts>2010-11-12 01:59:58 -0800</delta_ts>
            <desc>testoutput-refactor</desc>
            <filename>bug-49431-20101112185524.patch</filename>
            <type>text/plain</type>
            <size>25689</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBjODhjZTNlZDc5Y2JiOWFmYmE1NzNhNmViMWJkMzBkMDA1OWE5NmFmLi40ZDUwYzE1
NGMzMTFmZmQ4YTFhNzYwMTAzZjE3ODU1NDNiZjEwMWNmIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAK
KzIwMTAtMTEtMTIgIEhheWF0byBJdG8gIDxoYXlhdG9AY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFJlZmFjdG9yIFRlc3RUeXBlQmFzZS5jb21wYXJlX291dHB1dCgpLgorCisgICAgICAgIEludHJv
ZHVjZXMgYSBUZXN0T3V0cHV0IGNsYXNzIGFuZCB1cGRhdGUgY29tcGFyZV9vdXRwdXQoKSBvZiBl
YWNoIHRlc3QKKyAgICAgICAgdHllcHMgc28gdGhhdCB0aGV5IGNhbiB0YWtlIGJvdGggYWN0dWFs
IGFuZCBleHBlY3RlZCBUZXN0T3V0cHV0IG9iamVjdHMuCisKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ5NDMxCisKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9kdW1wX3JlbmRlcl90cmVlX3RocmVh
ZC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0
X3Rlc3RzLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Rlc3Rf
dHlwZXMvaW1hZ2VfZGlmZi5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy90ZXN0X3R5cGVzL3Rlc3RfdHlwZV9iYXNlLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3Rlc3RfdHlwZXMvdGV4dF9kaWZmLnB5OgorCiAyMDEwLTExLTA4
ICBOaWNvbGFzIER1ZnJlc25lICA8bmljb2xhcy5kdWZyZXNuZUBjb2xsYWJvcmEuY28udWs+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgTWFydGluIFJvYmluc29uLgpkaWZmIC0tZ2l0IGEvV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvZHVtcF9y
ZW5kZXJfdHJlZV90aHJlYWQucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9kdW1wX3JlbmRlcl90cmVlX3RocmVhZC5weQppbmRleCA5
ZjJkZTdlNDc2YjdiNWMwYjdmMTFlZGM0NmU4ODI1NDc0ZjNmODVmLi4xMWYzMzEwMDhjMjE5ZDI2
M2NkNDNlYjY5MWYzNzU0MjQyNzU1MjU3IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9kdW1wX3JlbmRlcl90cmVlX3Ro
cmVhZC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9s
YXlvdXRfcGFja2FnZS9kdW1wX3JlbmRlcl90cmVlX3RocmVhZC5weQpAQCAtNTcsNiArNTcsMzUg
QEAgX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJ3ZWJraXRweS5sYXlvdXRfdGVzdHMubGF5b3V0
X3BhY2thZ2UuIgogICAgICAgICAgICAgICAgICAgICAgICAgICJkdW1wX3JlbmRlcl90cmVlX3Ro
cmVhZCIpCiAKIAorY2xhc3MgVGVzdE91dHB1dChvYmplY3QpOgorICAgICIiIkdyb3VwcyBpbmZv
cm1hdGlvbiBhYm91dCBhIHRlc3Qgb3V0cHV0IGZvciBlYXN5IHBhc3Npbmcgb2YgZGF0YS4KKwor
ICAgIFRoaXMgaXMgdXNlZCBub3Qgb25seSBmb3IgYSBhY3R1YWwgdGVzdCBvdXRwdXQsIGJ1dCBh
bHNvIGZvciBncm91cGluZworICAgIGV4cGVjdGVkIHRlc3Qgb3V0cHV0LgorICAgICIiIgorCisg
ICAgZGVmIF9faW5pdF9fKHNlbGYsIHRleHQsIGltYWdlLCBpbWFnZV9oYXNoLAorICAgICAgICAg
ICAgICAgICBjcmFzaD1Ob25lLCB0aW1lb3V0PU5vbmUsIGVycm9yPU5vbmUpOgorICAgICAgICAi
IiJJbml0aWFsaXplcyBhIFRlc3RPdXRwdXQgb2JqZWN0LgorCisgICAgICAgIEFyZ3M6CisgICAg
ICAgICAgdGV4dDogYSB0ZXh0IG91dHB1dAorICAgICAgICAgIGltYWdlOiBhbiBpbWFnZSBvdXRw
dXQKKyAgICAgICAgICBpbWFnZV9oYXNoOiBhIHN0cmluZyBjb250YWluaW5nIHRoZSBjaGVja3N1
bSBvZiB0aGUgaW1hZ2UKKyAgICAgICAgICBjcmFzaDogYSBib29sZWFuIGluZGljYXRpbmcgd2hl
dGhlciB0aGUgZHJpdmVyIGNyYXNoZWQgb24gdGhlIHRlc3QKKyAgICAgICAgICB0aW1lb3V0OiBh
IGJvb2xlYW4gaW5kaWNhdGluZyB3aGVodGVyIHRoZSB0ZXN0IHRpbWVkIG91dAorICAgICAgICAg
IGVycm9yOiBhbnkgdW5leHBlY3RlZCBvciBhZGRpdGlvbmFsIChvciBlcnJvcikgdGV4dCBvdXRw
dXQKKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYudGV4dCA9IHRleHQKKyAgICAgICAgIyBGSVhN
RTogV2Ugc2hvdWxkIHJldHJpZXZlIGEgaW1hZ2UgbGF6aWx5IGluIHNvbWUgY2FzZXMgdG8gb3B0
aW1pemUKKyAgICAgICAgIyBwZXJmb3JtYW5jZS4KKyAgICAgICAgc2VsZi5pbWFnZSA9IGltYWdl
CisgICAgICAgIHNlbGYuaW1hZ2VfaGFzaCA9IGltYWdlX2hhc2gKKyAgICAgICAgc2VsZi5jcmFz
aCA9IGNyYXNoCisgICAgICAgIHNlbGYudGltZW91dCA9IHRpbWVvdXQKKyAgICAgICAgc2VsZi5l
cnJvciA9IGVycm9yCisKKwogZGVmIGZpbmRfdGhyZWFkX3N0YWNrKGlkKToKICAgICAiIiJSZXR1
cm5zIGEgc3RhY2sgb2JqZWN0IHRoYXQgY2FuIGJlIHVzZWQgdG8gZHVtcCBhIHN0YWNrIHRyYWNl
IGZvcgogICAgIHRoZSBnaXZlbiB0aHJlYWQgaWQgKG9yIE5vbmUgaWYgdGhlIGlkIGlzIG5vdCBm
b3VuZCkuIiIiCkBAIC03NCw5ICsxMDMsMzAgQEAgZGVmIGxvZ19zdGFjayhzdGFjayk6CiAgICAg
ICAgICAgICBfbG9nLmVycm9yKCcgICVzJyAlIGxpbmUuc3RyaXAoKSkKIAogCitkZWYgX2V4cGVj
dGVkX3RleHQocG9ydCwgZmlsZW5hbWUpOgorICAgICIiIlJldHVybnMgYW4gZXhwZWN0ZWQgdGV4
dC4iIiIKKyAgICByZXR1cm4gcG9ydC5leHBlY3RlZF90ZXh0KGZpbGVuYW1lKQorCisKK2RlZiBf
ZXhwZWN0ZWRfaW1hZ2UocG9ydCwgZmlsZW5hbWUpOgorICAgICIiIlJldHVybnMgYW4gZXhwZWN0
ZWQgaW1hZ2UuIiIiCisgICAgcmV0dXJuIHBvcnQuZXhwZWN0ZWRfaW1hZ2UoZmlsZW5hbWUpCisK
KworZGVmIF9leHBlY3RlZF9pbWFnZV9oYXNoKHBvcnQsIGZpbGVuYW1lKToKKyAgICAiIiJSZXR1
cm5zIGFuIGV4cGVjdGVkIGltYWdlIGhhc2guIiIiCisgICAgcmV0dXJuIHBvcnQuZXhwZWN0ZWRf
Y2hlY2tzdW0oZmlsZW5hbWUpCisKKworZGVmIF9leHBlY3RlZF90ZXN0X291dHB1dChwb3J0LCBm
aWxlbmFtZSk6CisgICAgIiIiUmV0dXJucyBhbiBleHBlY3RlZCBUZXN0T3V0cHV0IG9iamVjdC4i
IiIKKyAgICByZXR1cm4gVGVzdE91dHB1dChfZXhwZWN0ZWRfdGV4dChwb3J0LCBmaWxlbmFtZSks
CisgICAgICAgICAgICAgICAgICAgICAgX2V4cGVjdGVkX2ltYWdlKHBvcnQsIGZpbGVuYW1lKSwK
KyAgICAgICAgICAgICAgICAgICAgICBfZXhwZWN0ZWRfaW1hZ2VfaGFzaChwb3J0LCBmaWxlbmFt
ZSkpCisKKwogZGVmIF9wcm9jZXNzX291dHB1dChwb3J0LCBvcHRpb25zLCB0ZXN0X2luZm8sIHRl
c3RfdHlwZXMsIHRlc3RfYXJncywKLSAgICAgICAgICAgICAgICAgICAgY3Jhc2gsIHRpbWVvdXQs
IHRlc3RfcnVuX3RpbWUsIGFjdHVhbF9jaGVja3N1bSwKLSAgICAgICAgICAgICAgICAgICAgb3V0
cHV0LCBlcnJvcik6CisgICAgICAgICAgICAgICAgICAgIHRlc3Rfb3V0cHV0LCB0ZXN0X3J1bl90
aW1lKToKICAgICAiIiJSZWNlaXZlcyB0aGUgb3V0cHV0IGZyb20gYSBEdW1wUmVuZGVyVHJlZSBw
cm9jZXNzLCBzdWJqZWN0cyBpdCB0byBhCiAgICAgbnVtYmVyIG9mIHRlc3RzLCBhbmQgcmV0dXJu
cyBhIGxpc3Qgb2YgZmFpbHVyZSB0eXBlcyB0aGUgdGVzdCBwcm9kdWNlZC4KIApAQCAtODQsMjcg
KzEzNCwyMyBAQCBkZWYgX3Byb2Nlc3Nfb3V0cHV0KHBvcnQsIG9wdGlvbnMsIHRlc3RfaW5mbywg
dGVzdF90eXBlcywgdGVzdF9hcmdzLAogICAgICAgcG9ydDogcG9ydC1zcGVjaWZpYyBob29rcwog
ICAgICAgb3B0aW9uczogY29tbWFuZCBsaW5lIG9wdGlvbnMgYXJndW1lbnQgZnJvbSBvcHRwYXJz
ZQogICAgICAgcHJvYzogYW4gYWN0aXZlIER1bXBSZW5kZXJUcmVlIHByb2Nlc3MKLSAgICAgIHRl
c3RfaW5mbzogT2JqZWN0IGNvbnRhaW5pbmcgdGhlIHRlc3QgZmlsZW5hbWUsIHVyaSBhbmQgdGlt
ZW91dAorICAgICAgdGVzdF9pbmZvOiBhIFRlc3RJbmZvIG9iamVjdAogICAgICAgdGVzdF90eXBl
czogbGlzdCBvZiB0ZXN0IHR5cGVzIHRvIHN1YmplY3QgdGhlIG91dHB1dCB0bwogICAgICAgdGVz
dF9hcmdzOiBhcmd1bWVudHMgdG8gYmUgcGFzc2VkIHRvIGVhY2ggdGVzdAorICAgICAgdGVzdF9v
dXRwdXQ6IGEgYWN0dWFsIHRlc3Rfb3V0cHV0CiAKICAgICBSZXR1cm5zOiBhIFRlc3RSZXN1bHQg
b2JqZWN0CiAgICAgIiIiCiAgICAgZmFpbHVyZXMgPSBbXQogCi0gICAgIyBTb21lIHRlc3QgYXJn
cywgc3VjaCBhcyB0aGUgaW1hZ2UgaGFzaCwgbWF5IGJlIGFkZGVkIG9yIGNoYW5nZWQgb24gYQot
ICAgICMgdGVzdC1ieS10ZXN0IGJhc2lzLgotICAgIGxvY2FsX3Rlc3RfYXJncyA9IGNvcHkuY29w
eSh0ZXN0X2FyZ3MpCi0KLSAgICBsb2NhbF90ZXN0X2FyZ3MuaGFzaCA9IGFjdHVhbF9jaGVja3N1
bQotCi0gICAgaWYgY3Jhc2g6CisgICAgaWYgdGVzdF9vdXRwdXQuY3Jhc2g6CiAgICAgICAgIGZh
aWx1cmVzLmFwcGVuZCh0ZXN0X2ZhaWx1cmVzLkZhaWx1cmVDcmFzaCgpKQotICAgIGlmIHRpbWVv
dXQ6CisgICAgaWYgdGVzdF9vdXRwdXQudGltZW91dDoKICAgICAgICAgZmFpbHVyZXMuYXBwZW5k
KHRlc3RfZmFpbHVyZXMuRmFpbHVyZVRpbWVvdXQoKSkKIAotICAgIGlmIGNyYXNoOgotICAgICAg
ICBfbG9nLmRlYnVnKCJTdGFja3RyYWNlIGZvciAlczpcbiVzIiAlICh0ZXN0X2luZm8uZmlsZW5h
bWUsIGVycm9yKSkKKyAgICBpZiB0ZXN0X291dHB1dC5jcmFzaDoKKyAgICAgICAgX2xvZy5kZWJ1
ZygiU3RhY2t0cmFjZSBmb3IgJXM6XG4lcyIgJSAodGVzdF9pbmZvLmZpbGVuYW1lLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X291dHB1dC5lcnJv
cikpCiAgICAgICAgICMgU3RyaXAgb2ZmICJmaWxlOi8vIiBzaW5jZSBSZWxhdGl2ZVRlc3RGaWxl
bmFtZSBleHBlY3RzCiAgICAgICAgICMgZmlsZXN5c3RlbSBwYXRocy4KICAgICAgICAgZmlsZW5h
bWUgPSBvcy5wYXRoLmpvaW4ob3B0aW9ucy5yZXN1bHRzX2RpcmVjdG9yeSwKQEAgLTExMyw5ICsx
NTksMTEgQEAgZGVmIF9wcm9jZXNzX291dHB1dChwb3J0LCBvcHRpb25zLCB0ZXN0X2luZm8sIHRl
c3RfdHlwZXMsIHRlc3RfYXJncywKICAgICAgICAgZmlsZW5hbWUgPSBvcy5wYXRoLnNwbGl0ZXh0
KGZpbGVuYW1lKVswXSArICItc3RhY2sudHh0IgogICAgICAgICBwb3J0Lm1heWJlX21ha2VfZGly
ZWN0b3J5KG9zLnBhdGguc3BsaXQoZmlsZW5hbWUpWzBdKQogICAgICAgICB3aXRoIGNvZGVjcy5v
cGVuKGZpbGVuYW1lLCAid2IiLCAidXRmLTgiKSBhcyBmaWxlOgotICAgICAgICAgICAgZmlsZS53
cml0ZShlcnJvcikKLSAgICBlbGlmIGVycm9yOgotICAgICAgICBfbG9nLmRlYnVnKCJQcmV2aW91
cyB0ZXN0IG91dHB1dCBzdGRlcnIgbGluZXM6XG4lcyIgJSBlcnJvcikKKyAgICAgICAgICAgIGZp
bGUud3JpdGUodGVzdF9vdXRwdXQuZXJyb3IpCisgICAgZWxpZiB0ZXN0X291dHB1dC5lcnJvcjoK
KyAgICAgICAgX2xvZy5kZWJ1ZygiUHJldmlvdXMgdGVzdCBvdXRwdXQgc3RkZXJyIGxpbmVzOlxu
JXMiICUgdGVzdF9vdXRwdXQuZXJyb3IpCisKKyAgICBleHBlY3RlZF90ZXN0X291dHB1dCA9IF9l
eHBlY3RlZF90ZXN0X291dHB1dChwb3J0LCB0ZXN0X2luZm8uZmlsZW5hbWUpCiAKICAgICAjIENo
ZWNrIHRoZSBvdXRwdXQgYW5kIHNhdmUgdGhlIHJlc3VsdHMuCiAgICAgc3RhcnRfdGltZSA9IHRp
bWUudGltZSgpCkBAIC0xMjMsMTIgKzE3MSwxMiBAQCBkZWYgX3Byb2Nlc3Nfb3V0cHV0KHBvcnQs
IG9wdGlvbnMsIHRlc3RfaW5mbywgdGVzdF90eXBlcywgdGVzdF9hcmdzLAogICAgIGZvciB0ZXN0
X3R5cGUgaW4gdGVzdF90eXBlczoKICAgICAgICAgc3RhcnRfZGlmZl90aW1lID0gdGltZS50aW1l
KCkKICAgICAgICAgbmV3X2ZhaWx1cmVzID0gdGVzdF90eXBlLmNvbXBhcmVfb3V0cHV0KHBvcnQs
IHRlc3RfaW5mby5maWxlbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG91dHB1dCwgbG9jYWxfdGVzdF9hcmdzLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5jb25maWd1cmF0aW9uKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9hcmdzLCB0
ZXN0X291dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGV4cGVjdGVkX3Rlc3Rfb3V0cHV0KQogICAgICAgICAjIERvbid0IGFkZCBhbnkgbW9yZSBm
YWlsdXJlcyBpZiB3ZSBhbHJlYWR5IGhhdmUgYSBjcmFzaCwgc28gd2UgZG9uJ3QKICAgICAgICAg
IyBkb3VibGUtcmVwb3J0IHRob3NlIHRlc3RzLiBXZSBkbyBkb3VibGUtcmVwb3J0IGZvciB0aW1l
b3V0cyBzaW5jZQogICAgICAgICAjIHdlIHN0aWxsIHdhbnQgdG8gc2VlIHRoZSB0ZXh0IGFuZCBp
bWFnZSBvdXRwdXQuCi0gICAgICAgIGlmIG5vdCBjcmFzaDoKKyAgICAgICAgaWYgbm90IHRlc3Rf
b3V0cHV0LmNyYXNoOgogICAgICAgICAgICAgZmFpbHVyZXMuZXh0ZW5kKG5ld19mYWlsdXJlcykK
ICAgICAgICAgdGltZV9mb3JfZGlmZnNbdGVzdF90eXBlLl9fY2xhc3NfXy5fX25hbWVfX10gPSAo
CiAgICAgICAgICAgICB0aW1lLnRpbWUoKSAtIHN0YXJ0X2RpZmZfdGltZSkKQEAgLTE1MywxMSAr
MjAxLDUyIEBAIGRlZiBfbWlsbGlzZWNvbmRzX3RvX3NlY29uZHMobXNlY3MpOgogICAgIHJldHVy
biBmbG9hdChtc2VjcykgLyAxMDAwLjAKIAogCi1kZWYgX2ltYWdlX2hhc2godGVzdF9pbmZvLCB0
ZXN0X2FyZ3MsIG9wdGlvbnMpOgorZGVmIF9zaG91bGRfc2F2ZV9uZXdfaW1hZ2UodGVzdF9hcmdz
KToKKyAgICAiIiJSZXR1cm5zIHRydWUgaWYgd2UgbmVlZCB0byBzYXZlIGEgbmV3IGltYWdlLiIi
IgorICAgIHJldHVybiB0ZXN0X2FyZ3MubmV3X2Jhc2VsaW5lIG9yIHRlc3RfYXJncy5yZXNldF9y
ZXN1bHRzCisKKworZGVmIF9uZWVkc19pbWFnZSh0ZXN0X2FyZ3MsIG9wdGlvbnMpOgorICAgICIi
IlJldHVybiB0cnVlIGlmIGEgdGVzdCB1c2VzIGEgaW1hZ2Ugb3V0cHV0LiIiIgorICAgIHJldHVy
biBfc2hvdWxkX3NhdmVfbmV3X2ltYWdlKHRlc3RfYXJncykgb3Igb3B0aW9ucy5waXhlbF90ZXN0
cworCisKK2RlZiBfaW1hZ2VfaGFzaF90b19kcml2ZXIocG9ydCwgZmlsZW5hbWUsIHRlc3RfYXJn
cywgb3B0aW9ucyk6CiAgICAgIiIiUmV0dXJucyB0aGUgaW1hZ2UgaGFzaCBvZiB0aGUgdGVzdCBp
ZiBpdCdzIG5lZWRlZCwgb3RoZXJ3aXNlIE5vbmUuIiIiCi0gICAgaWYgKHRlc3RfYXJncy5uZXdf
YmFzZWxpbmUgb3IgdGVzdF9hcmdzLnJlc2V0X3Jlc3VsdHMgb3Igbm90IG9wdGlvbnMucGl4ZWxf
dGVzdHMpOgorICAgICMgVGhlIHBpeGVsX2hhc2ggaXMgdXNlZCB0byBhdm9pZCBkb2luZyBhbiBp
bWFnZSBkdW1wIGlmIHRoZQorICAgICMgY2hlY2tzdW1zIG1hdGNoLCBzbyBpdCBzaG91bGQgYmUg
c2V0IHRvIGEgYmxhbmsgdmFsdWUgaWYgd2UKKyAgICAjIGFyZSBnZW5lcmF0aW5nIGEgbmV3IGJh
c2VsaW5lLiAgKE90aGVyd2lzZSwgYW4gaW1hZ2UgZnJvbSBhCisgICAgIyBwcmV2aW91cyBydW4g
d2lsbCBiZSBjb3BpZWQgaW50byB0aGUgYmFzZWxpbmUuKQorICAgIGlmIF9zaG91bGRfc2F2ZV9u
ZXdfaW1hZ2UodGVzdF9hcmdzKToKICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICByZXR1cm4gdGVz
dF9pbmZvLmltYWdlX2hhc2goKQorICAgIGlmIG5vdCBvcHRpb25zLnBpeGVsX3Rlc3RzOgorICAg
ICAgICByZXR1cm4gTm9uZQorICAgIHJldHVybiBfZXhwZWN0ZWRfaW1hZ2VfaGFzaChwb3J0LCBm
aWxlbmFtZSkKKworCitkZWYgX2dldF9kcml2ZXJfb3V0cHV0X2ltYWdlKHRlc3RfYXJncyk6Cisg
ICAgIiIiUmV0dXJucyB0aGUgaW1hZ2Ugb3V0cHV0IHdoaWNoIGRyaXZlciBnZW5lcmF0ZWQuIiIi
CisgICAgcG5nX3BhdGggPSB0ZXN0X2FyZ3MucG5nX3BhdGgKKyAgICBhc3NlcnQob3MucGF0aC5p
c2ZpbGUocG5nX3BhdGgpKQorICAgIHdpdGggb3BlbihwbmdfcGF0aCwgJ3JiJykgYXMgaW1hZ2Vf
ZmlsZToKKyAgICAgICAgcmV0dXJuIGltYWdlX2ZpbGUucmVhZCgpCisKKworZGVmIF9ydW5fc2lu
Z2xlX3Rlc3QocG9ydCwgb3B0aW9ucywgdGVzdF9pbmZvLCB0ZXN0X3R5cGVzLCB0ZXN0X2FyZ3Ms
IGRyaXZlcik6CisgICAgaW1hZ2VfaGFzaF90b19kcml2ZXIgPSBfaW1hZ2VfaGFzaF90b19kcml2
ZXIoCisgICAgICAgIHBvcnQsIHRlc3RfaW5mby5maWxlbmFtZSwgdGVzdF9hcmdzLCBvcHRpb25z
KQorICAgIHN0YXJ0ID0gdGltZS50aW1lKCkKKyAgICBjcmFzaCwgdGltZW91dCwgaW1hZ2VfaGFz
aCwgdGV4dCwgZXJyb3IgPSBcCisgICAgICAgIGRyaXZlci5ydW5fdGVzdCh0ZXN0X2luZm8udXJp
LnN0cmlwKCksIHRlc3RfaW5mby50aW1lb3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgaW1h
Z2VfaGFzaF90b19kcml2ZXIpCisgICAgZW5kID0gdGltZS50aW1lKCkKKyAgICBpZiBfbmVlZHNf
aW1hZ2UodGVzdF9hcmdzLCBvcHRpb25zKToKKyAgICAgICAgaW1hZ2UgPSBfZ2V0X2RyaXZlcl9v
dXRwdXRfaW1hZ2UodGVzdF9hcmdzKQorICAgIGVsc2U6CisgICAgICAgIGltYWdlID0gTm9uZQor
ICAgIHRlc3Rfb3V0cHV0ID0gVGVzdE91dHB1dCh0ZXh0LCBpbWFnZSwgaW1hZ2VfaGFzaCwgY3Jh
c2gsIHRpbWVvdXQsIGVycm9yKQorICAgIHJldHVybiBfcHJvY2Vzc19vdXRwdXQocG9ydCwgb3B0
aW9ucywgdGVzdF9pbmZvLCB0ZXN0X3R5cGVzLCB0ZXN0X2FyZ3MsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0ZXN0X291dHB1dCwgZW5kIC0gc3RhcnQpCiAKIAogY2xhc3MgU2luZ2xlVGVz
dFRocmVhZCh0aHJlYWRpbmcuVGhyZWFkKToKQEAgLTE4OCwyMCArMjc3LDEyIEBAIGNsYXNzIFNp
bmdsZVRlc3RUaHJlYWQodGhyZWFkaW5nLlRocmVhZCk6CiAgICAgZGVmIF9jb3ZlcmVkX3J1bihz
ZWxmKToKICAgICAgICAgIyBGSVhNRTogdGhpcyBpcyBhIHNlcGFyYXRlIHJvdXRpbmUgdG8gd29y
ayBhcm91bmQgYSBidWcKICAgICAgICAgIyBpbiBjb3ZlcmFnZTogc2VlIGh0dHA6Ly9iaXRidWNr
ZXQub3JnL25lZC9jb3ZlcmFnZXB5L2lzc3VlLzg1LgotICAgICAgICB0ZXN0X2luZm8gPSBzZWxm
Ll90ZXN0X2luZm8KICAgICAgICAgc2VsZi5fZHJpdmVyID0gc2VsZi5fcG9ydC5jcmVhdGVfZHJp
dmVyKHNlbGYuX3Rlc3RfYXJncy5wbmdfcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMpCiAgICAgICAgIHNlbGYuX2RyaXZl
ci5zdGFydCgpCi0gICAgICAgIGltYWdlX2hhc2ggPSBfaW1hZ2VfaGFzaCh0ZXN0X2luZm8sIHNl
bGYuX3Rlc3RfYXJncywgc2VsZi5fb3B0aW9ucykKLSAgICAgICAgc3RhcnQgPSB0aW1lLnRpbWUo
KQotICAgICAgICBjcmFzaCwgdGltZW91dCwgYWN0dWFsX2NoZWNrc3VtLCBvdXRwdXQsIGVycm9y
ID0gXAotICAgICAgICAgICAgc2VsZi5fZHJpdmVyLnJ1bl90ZXN0KHRlc3RfaW5mby51cmkuc3Ry
aXAoKSwgdGVzdF9pbmZvLnRpbWVvdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW1hZ2VfaGFzaCkKLSAgICAgICAgZW5kID0gdGltZS50aW1lKCkKLSAgICAgICAgc2VsZi5f
dGVzdF9yZXN1bHQgPSBfcHJvY2Vzc19vdXRwdXQoc2VsZi5fcG9ydCwgc2VsZi5fb3B0aW9ucywK
LSAgICAgICAgICAgIHRlc3RfaW5mbywgc2VsZi5fdGVzdF90eXBlcywgc2VsZi5fdGVzdF9hcmdz
LAotICAgICAgICAgICAgY3Jhc2gsIHRpbWVvdXQsIGVuZCAtIHN0YXJ0LAotICAgICAgICAgICAg
YWN0dWFsX2NoZWNrc3VtLCBvdXRwdXQsIGVycm9yKQorICAgICAgICBzZWxmLl90ZXN0X3Jlc3Vs
dCA9IF9ydW5fc2luZ2xlX3Rlc3Qoc2VsZi5fcG9ydCwgc2VsZi5fb3B0aW9ucywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3Rlc3RfaW5mbywgc2Vs
Zi5fdGVzdF90eXBlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNlbGYuX3Rlc3RfYXJncywgc2VsZi5fZHJpdmVyKQogICAgICAgICBzZWxmLl9kcml2ZXIu
c3RvcCgpCiAKICAgICBkZWYgZ2V0X3Rlc3RfcmVzdWx0KHNlbGYpOgpAQCAtNTAwLDI4ICs1ODEs
MTQgQEAgY2xhc3MgVGVzdFNoZWxsVGhyZWFkKFdhdGNoYWJsZVRocmVhZCk6CiAgICAgICAgIFJl
dHVybnM6IGEgVGVzdFJlc3VsdCBvYmplY3QuCiAgICAgICAgICIiIgogICAgICAgICBzZWxmLl9l
bnN1cmVfZHVtcF9yZW5kZXJfdHJlZV9pc19ydW5uaW5nKCkKLSAgICAgICAgIyBUaGUgcGl4ZWxf
aGFzaCBpcyB1c2VkIHRvIGF2b2lkIGRvaW5nIGFuIGltYWdlIGR1bXAgaWYgdGhlCi0gICAgICAg
ICMgY2hlY2tzdW1zIG1hdGNoLCBzbyBpdCBzaG91bGQgYmUgc2V0IHRvIGEgYmxhbmsgdmFsdWUg
aWYgd2UKLSAgICAgICAgIyBhcmUgZ2VuZXJhdGluZyBhIG5ldyBiYXNlbGluZS4gIChPdGhlcndp
c2UsIGFuIGltYWdlIGZyb20gYQotICAgICAgICAjIHByZXZpb3VzIHJ1biB3aWxsIGJlIGNvcGll
ZCBpbnRvIHRoZSBiYXNlbGluZS4pCi0gICAgICAgIGltYWdlX2hhc2ggPSBfaW1hZ2VfaGFzaCh0
ZXN0X2luZm8sIHNlbGYuX3Rlc3RfYXJncywgc2VsZi5fb3B0aW9ucykKLSAgICAgICAgc3RhcnQg
PSB0aW1lLnRpbWUoKQotCiAgICAgICAgIHRocmVhZF90aW1lb3V0ID0gX21pbGxpc2Vjb25kc190
b19zZWNvbmRzKAogICAgICAgICAgICAgIF9wYWRfdGltZW91dChpbnQodGVzdF9pbmZvLnRpbWVv
dXQpKSkKLSAgICAgICAgc2VsZi5fbmV4dF90aW1lb3V0ID0gc3RhcnQgKyB0aHJlYWRfdGltZW91
dAotCi0gICAgICAgIGNyYXNoLCB0aW1lb3V0LCBhY3R1YWxfY2hlY2tzdW0sIG91dHB1dCwgZXJy
b3IgPSBcCi0gICAgICAgICAgIHNlbGYuX2RyaXZlci5ydW5fdGVzdCh0ZXN0X2luZm8udXJpLCB0
ZXN0X2luZm8udGltZW91dCwgaW1hZ2VfaGFzaCkKLSAgICAgICAgZW5kID0gdGltZS50aW1lKCkK
LQotICAgICAgICByZXN1bHQgPSBfcHJvY2Vzc19vdXRwdXQoc2VsZi5fcG9ydCwgc2VsZi5fb3B0
aW9ucywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfaW5mbywgc2VsZi5f
dGVzdF90eXBlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3Rlc3Rf
YXJncywgY3Jhc2gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0LCBl
bmQgLSBzdGFydCwgYWN0dWFsX2NoZWNrc3VtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgb3V0cHV0LCBlcnJvcikKLSAgICAgICAgc2VsZi5fdGVzdF9yZXN1bHRzLmFwcGVuZChy
ZXN1bHQpCi0gICAgICAgIHJldHVybiByZXN1bHQKKyAgICAgICAgc2VsZi5fbmV4dF90aW1lb3V0
ID0gdGltZS50aW1lKCkgKyB0aHJlYWRfdGltZW91dAorICAgICAgICB0ZXN0X3Jlc3VsdCA9IF9y
dW5fc2luZ2xlX3Rlc3Qoc2VsZi5fcG9ydCwgc2VsZi5fb3B0aW9ucywgdGVzdF9pbmZvLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fdGVzdF90eXBlcywgc2Vs
Zi5fdGVzdF9hcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vs
Zi5fZHJpdmVyKQorICAgICAgICBzZWxmLl90ZXN0X3Jlc3VsdHMuYXBwZW5kKHRlc3RfcmVzdWx0
KQorICAgICAgICByZXR1cm4gdGVzdF9yZXN1bHQKIAogICAgIGRlZiBfZW5zdXJlX2R1bXBfcmVu
ZGVyX3RyZWVfaXNfcnVubmluZyhzZWxmKToKICAgICAgICAgIiIiU3RhcnQgdGhlIHNoYXJlZCBE
dW1wUmVuZGVyVHJlZSwgaWYgaXQncyBub3QgcnVubmluZy4KZGlmZiAtLWdpdCBhL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkgYi9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3Rz
LnB5CmluZGV4IGYzNjBhZGM5YTY1M2M1OGYwYzdmY2MzNzE2NGVkOWMzOGQ5ZWI4NDQuLmU5MmZj
ZDJhMWUxZGNkNjRkNmVhN2FjZjZkNjQ3ZDdhOTE0ZDc4MzUgMTAwNzU1Ci0tLSBhL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkKKysr
IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90
ZXN0cy5weQpAQCAtMTAzLDE4ICsxMDMsNiBAQCBjbGFzcyBUZXN0SW5mbzoKICAgICAgICAgc2Vs
Zi5fcG9ydCA9IHBvcnQKICAgICAgICAgc2VsZi51cmkgPSBwb3J0LmZpbGVuYW1lX3RvX3VyaShm
aWxlbmFtZSkKICAgICAgICAgc2VsZi50aW1lb3V0ID0gdGltZW91dAotICAgICAgICBzZWxmLl9p
bWFnZV9jaGVja3N1bSA9IC0xCi0KLSAgICBkZWYgaW1hZ2VfaGFzaChzZWxmKToKLSAgICAgICAg
IyBSZWFkIHRoZSBpbWFnZV9oYXNoIGxhemlseSB0byByZWR1Y2Ugc3RhcnR1cCB0aW1lLgotICAg
ICAgICAjIFRoaXMgY2xhc3MgaXMgYWNjZXNzZWQgYWNyb3NzIHRocmVhZHMsIGJ1dCBvbmx5IG9u
ZSB0aHJlYWQgc2hvdWxkCi0gICAgICAgICMgZXZlciBiZSBkZWFsaW5nIHdpdGggYW55IGdpdmVu
IFRlc3RJbmZvIHNvIG5vIGxvY2tpbmcgaXMgbmVlZGVkLgotICAgICAgICAjCi0gICAgICAgICMg
Tm90ZSB0aGF0IHdlIHVzZSAtMSB0byBpbmRpY2F0ZSB0aGF0IHdlIGhhdmVuJ3QgcmVhZCB0aGUg
dmFsdWUsCi0gICAgICAgICMgYmVjYXVzZSBleHBlY3RlZF9jaGVja3N1bSgpIHJldHVybnMgYSBz
dHJpbmcgb3IgTm9uZS4KLSAgICAgICAgaWYgc2VsZi5faW1hZ2VfY2hlY2tzdW0gPT0gLTE6Ci0g
ICAgICAgICAgICBzZWxmLl9pbWFnZV9jaGVja3N1bSA9IHNlbGYuX3BvcnQuZXhwZWN0ZWRfY2hl
Y2tzdW0oc2VsZi5maWxlbmFtZSkKLSAgICAgICAgcmV0dXJuIHNlbGYuX2ltYWdlX2NoZWNrc3Vt
CiAKIAogY2xhc3MgUmVzdWx0U3VtbWFyeShvYmplY3QpOgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdGVzdF90eXBlcy9pbWFnZV9kaWZmLnB5
IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdGVzdF90eXBlcy9p
bWFnZV9kaWZmLnB5CmluZGV4IDBiMDU4MDIwYzA4ZjRmNTFjMTE2MjA0ZGM1NGNiZjVkOWMzZTdj
NmYuLjkzMTM5YTBjNjQzN2Y1NGYwNDZjMjU5NmZiYTJkYzhmOWY5ZjM0NTggMTAwNjQ0Ci0tLSBh
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Rlc3RfdHlwZXMvaW1h
Z2VfZGlmZi5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy90ZXN0X3R5cGVzL2ltYWdlX2RpZmYucHkKQEAgLTU0LDExNiArNTQsOTMgQEAgX2xvZyA9IGxv
Z2dpbmcuZ2V0TG9nZ2VyKCJ3ZWJraXRweS5sYXlvdXRfdGVzdHMudGVzdF90eXBlcy5pbWFnZV9k
aWZmIikKIAogY2xhc3MgSW1hZ2VEaWZmKHRlc3RfdHlwZV9iYXNlLlRlc3RUeXBlQmFzZSk6CiAK
LSAgICBkZWYgX2NvcHlfb3V0cHV0X3BuZyhzZWxmLCB0ZXN0X2ZpbGVuYW1lLCBzb3VyY2VfaW1h
Z2UsIGV4dGVuc2lvbik6Ci0gICAgICAgICIiIkNvcGllcyByZXN1bHQgZmlsZXMgaW50byB0aGUg
b3V0cHV0IGRpcmVjdG9yeSB3aXRoIGFwcHJvcHJpYXRlCi0gICAgICAgIG5hbWVzLgotCi0gICAg
ICAgIEFyZ3M6Ci0gICAgICAgICAgdGVzdF9maWxlbmFtZTogdGhlIHRlc3QgZmlsZW5hbWUKLSAg
ICAgICAgICBzb3VyY2VfZmlsZTogcGF0aCB0byB0aGUgaW1hZ2UgZmlsZSAoZWl0aGVyIGFjdHVh
bCBvciBleHBlY3RlZCkKLSAgICAgICAgICBleHRlbnNpb246IGV4dGVuc2lvbiB0byBpbmRpY2F0
ZSAtYWN0dWFsLnBuZyBvciAtZXhwZWN0ZWQucG5nCi0gICAgICAgICIiIgotICAgICAgICBzZWxm
Ll9tYWtlX291dHB1dF9kaXJlY3RvcnkodGVzdF9maWxlbmFtZSkKLSAgICAgICAgZGVzdF9pbWFn
ZSA9IHNlbGYub3V0cHV0X2ZpbGVuYW1lKHRlc3RfZmlsZW5hbWUsIGV4dGVuc2lvbikKLQotICAg
ICAgICBpZiBvcy5wYXRoLmV4aXN0cyhzb3VyY2VfaW1hZ2UpOgotICAgICAgICAgICAgc2h1dGls
LmNvcHlmaWxlKHNvdXJjZV9pbWFnZSwgZGVzdF9pbWFnZSkKLQotICAgIGRlZiBfc2F2ZV9iYXNl
bGluZV9maWxlcyhzZWxmLCBmaWxlbmFtZSwgcG5nX3BhdGgsIGNoZWNrc3VtLAorICAgIGRlZiBf
c2F2ZV9iYXNlbGluZV9maWxlcyhzZWxmLCBmaWxlbmFtZSwgaW1hZ2UsIGltYWdlX2hhc2gsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlX25ld19iYXNlbGluZSk6CiAgICAg
ICAgICIiIlNhdmVzIG5ldyBiYXNlbGluZXMgZm9yIHRoZSBQTkcgYW5kIGNoZWNrc3VtLgogCiAg
ICAgICAgIEFyZ3M6CiAgICAgICAgICAgZmlsZW5hbWU6IHRlc3QgZmlsZW5hbWUKLSAgICAgICAg
ICBwbmdfcGF0aDogcGF0aCB0byB0aGUgYWN0dWFsIFBORyByZXN1bHQgZmlsZQotICAgICAgICAg
IGNoZWNrc3VtOiB2YWx1ZSBvZiB0aGUgYWN0dWFsIGNoZWNrc3VtIHJlc3VsdAorICAgICAgICAg
IGltYWdlOiBhIGltYWdlIG91dHB1dAorICAgICAgICAgIGltYWdlX2hhc2g6IGEgY2hlY2tzdW0g
b2YgdGhlIGltYWdlCiAgICAgICAgICAgZ2VuZXJhdGVfbmV3X2Jhc2VsaW5lOiB3aGV0aGVyIHRv
IGdlbmVyYXRlIGEgbmV3LCBwbGF0Zm9ybS1zcGVjaWZpYwogICAgICAgICAgICAgYmFzZWxpbmUs
IG9yIHVwZGF0ZSB0aGUgZXhpc3Rpbmcgb25lCiAgICAgICAgICIiIgotICAgICAgICB3aXRoIG9w
ZW4ocG5nX3BhdGgsICJyYiIpIGFzIHBuZ19maWxlOgotICAgICAgICAgICAgcG5nX2RhdGEgPSBw
bmdfZmlsZS5yZWFkKCkKLSAgICAgICAgc2VsZi5fc2F2ZV9iYXNlbGluZV9kYXRhKGZpbGVuYW1l
LCBwbmdfZGF0YSwgIi5wbmciLCBlbmNvZGluZz1Ob25lLAorICAgICAgICBzZWxmLl9zYXZlX2Jh
c2VsaW5lX2RhdGEoZmlsZW5hbWUsIGltYWdlLCAiLnBuZyIsIGVuY29kaW5nPU5vbmUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZV9uZXdfYmFzZWxpbmU9Z2VuZXJh
dGVfbmV3X2Jhc2VsaW5lKQotICAgICAgICBzZWxmLl9zYXZlX2Jhc2VsaW5lX2RhdGEoZmlsZW5h
bWUsIGNoZWNrc3VtLCAiLmNoZWNrc3VtIiwKKyAgICAgICAgc2VsZi5fc2F2ZV9iYXNlbGluZV9k
YXRhKGZpbGVuYW1lLCBpbWFnZV9oYXNoLCAiLmNoZWNrc3VtIiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGVuY29kaW5nPSJhc2NpaSIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBnZW5lcmF0ZV9uZXdfYmFzZWxpbmU9Z2VuZXJhdGVfbmV3X2Jhc2VsaW5lKQog
Ci0gICAgZGVmIF9jcmVhdGVfaW1hZ2VfZGlmZihzZWxmLCBwb3J0LCBmaWxlbmFtZSwgY29uZmln
dXJhdGlvbik6CisgICAgZGVmIF9jb3B5X2ltYWdlKHNlbGYsIGZpbGVuYW1lLCBhY3R1YWxfaW1h
Z2UsIGV4cGVjdGVkX2ltYWdlKToKKyAgICAgICAgc2VsZi53cml0ZV9vdXRwdXRfZmlsZXMoZmls
ZW5hbWUsICcucG5nJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0PWFj
dHVhbF9pbWFnZSwgZXhwZWN0ZWQ9ZXhwZWN0ZWRfaW1hZ2UsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGVuY29kaW5nPU5vbmUsIHByaW50X3RleHRfZGlmZnM9RmFsc2UpCisKKyAg
ICBkZWYgX2NvcHlfaW1hZ2VfaGFzaChzZWxmLCBmaWxlbmFtZSwgYWN0dWFsX2ltYWdlX2hhc2gs
IGV4cGVjdGVkX2ltYWdlX2hhc2gpOgorICAgICAgICBzZWxmLndyaXRlX291dHB1dF9maWxlcyhm
aWxlbmFtZSwgJy5jaGVja3N1bScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFj
dHVhbF9pbWFnZV9oYXNoLCBleHBlY3RlZF9pbWFnZV9oYXNoLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBlbmNvZGluZz0iYXNjaWkiLCBwcmludF90ZXh0X2RpZmZzPUZhbHNlKQor
CisgICAgZGVmIF9jcmVhdGVfZGlmZl9pbWFnZShzZWxmLCBwb3J0LCBmaWxlbmFtZSwgYWN0dWFs
X2ltYWdlLCBleHBlY3RlZF9pbWFnZSk6CiAgICAgICAgICIiIkNyZWF0ZXMgdGhlIHZpc3VhbCBk
aWZmIG9mIHRoZSBleHBlY3RlZC9hY3R1YWwgUE5Hcy4KIAotICAgICAgICBBcmdzOgotICAgICAg
ICAgIGZpbGVuYW1lOiB0aGUgbmFtZSBvZiB0aGUgdGVzdAotICAgICAgICAgIGNvbmZpZ3VyYXRp
b246IERlYnVnIG9yIFJlbGVhc2UKLSAgICAgICAgUmV0dXJucyBUcnVlIGlmIHRoZSBmaWxlcyBh
cmUgZGlmZmVyZW50LCBGYWxzZSBpZiB0aGV5IG1hdGNoCisgICAgICAgIFJldHVybnMgVHJ1ZSBp
ZiB0aGUgaW1hZ2VzIGFyZSBkaWZmZXJlbnQuCiAgICAgICAgICIiIgogICAgICAgICBkaWZmX2Zp
bGVuYW1lID0gc2VsZi5vdXRwdXRfZmlsZW5hbWUoZmlsZW5hbWUsCi0gICAgICAgICAgc2VsZi5G
SUxFTkFNRV9TVUZGSVhfQ09NUEFSRSkKLSAgICAgICAgYWN0dWFsX2ZpbGVuYW1lID0gc2VsZi5v
dXRwdXRfZmlsZW5hbWUoZmlsZW5hbWUsCi0gICAgICAgICAgc2VsZi5GSUxFTkFNRV9TVUZGSVhf
QUNUVUFMICsgJy5wbmcnKQotICAgICAgICBleHBlY3RlZF9maWxlbmFtZSA9IHNlbGYub3V0cHV0
X2ZpbGVuYW1lKGZpbGVuYW1lLAotICAgICAgICAgIHNlbGYuRklMRU5BTUVfU1VGRklYX0VYUEVD
VEVEICsgJy5wbmcnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2VsZi5GSUxFTkFNRV9TVUZGSVhfQ09NUEFSRSkKKyAgICAgICAgcmV0dXJuIHBvcnQuZGlm
Zl9pbWFnZShhY3R1YWxfaW1hZ2UsIGV4cGVjdGVkX2ltYWdlLCBkaWZmX2ZpbGVuYW1lKQogCi0g
ICAgICAgIGV4cGVjdGVkX2ltYWdlID0gcG9ydC5leHBlY3RlZF9pbWFnZShmaWxlbmFtZSkKLSAg
ICAgICAgd2l0aCBjb2RlY3Mub3BlbihhY3R1YWxfZmlsZW5hbWUsICdyK2InLCBOb25lKSBhcyBm
aWxlOgotICAgICAgICAgICAgYWN0dWFsX2ltYWdlID0gZmlsZS5yZWFkKCkKLQotICAgICAgICBy
ZXN1bHQgPSBwb3J0LmRpZmZfaW1hZ2UoZXhwZWN0ZWRfaW1hZ2UsIGFjdHVhbF9pbWFnZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZmZfZmlsZW5hbWUpCi0gICAgICAgIHJl
dHVybiByZXN1bHQKLQotICAgIGRlZiBjb21wYXJlX291dHB1dChzZWxmLCBwb3J0LCBmaWxlbmFt
ZSwgb3V0cHV0LCB0ZXN0X2FyZ3MsIGNvbmZpZ3VyYXRpb24pOgorICAgIGRlZiBjb21wYXJlX291
dHB1dChzZWxmLCBwb3J0LCBmaWxlbmFtZSwgdGVzdF9hcmdzLCBhY3R1YWxfdGVzdF9vdXRwdXQs
CisgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF90ZXN0X291dHB1dCk6CiAgICAgICAg
ICIiIkltcGxlbWVudGF0aW9uIG9mIENvbXBhcmVPdXRwdXQgdGhhdCBjaGVja3MgdGhlIG91dHB1
dCBpbWFnZSBhbmQKICAgICAgICAgY2hlY2tzdW0gYWdhaW5zdCB0aGUgZXhwZWN0ZWQgZmlsZXMg
ZnJvbSB0aGUgTGF5b3V0VGVzdCBkaXJlY3RvcnkuCiAgICAgICAgICIiIgogICAgICAgICBmYWls
dXJlcyA9IFtdCiAKICAgICAgICAgIyBJZiB3ZSBkaWRuJ3QgcHJvZHVjZSBhIGhhc2ggZmlsZSwg
dGhpcyB0ZXN0IG11c3QgYmUgdGV4dC1vbmx5LgotICAgICAgICBpZiB0ZXN0X2FyZ3MuaGFzaCBp
cyBOb25lOgorICAgICAgICBpZiBhY3R1YWxfdGVzdF9vdXRwdXQuaW1hZ2VfaGFzaCBpcyBOb25l
OgogICAgICAgICAgICAgcmV0dXJuIGZhaWx1cmVzCiAKICAgICAgICAgIyBJZiB3ZSdyZSBnZW5l
cmF0aW5nIGEgbmV3IGJhc2VsaW5lLCB3ZSBwYXNzLgogICAgICAgICBpZiB0ZXN0X2FyZ3MubmV3
X2Jhc2VsaW5lIG9yIHRlc3RfYXJncy5yZXNldF9yZXN1bHRzOgotICAgICAgICAgICAgc2VsZi5f
c2F2ZV9iYXNlbGluZV9maWxlcyhmaWxlbmFtZSwgdGVzdF9hcmdzLnBuZ19wYXRoLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2FyZ3MuaGFzaCwgdGVzdF9hcmdz
Lm5ld19iYXNlbGluZSkKKyAgICAgICAgICAgIHNlbGYuX3NhdmVfYmFzZWxpbmVfZmlsZXMoZmls
ZW5hbWUsIGFjdHVhbF90ZXN0X291dHB1dC5pbWFnZV9oYXNoLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhY3R1YWxfdGVzdF9vdXRwdXQuaW1hZ2UsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfYXJncy5uZXdfYmFzZWxpbmUpCiAgICAg
ICAgICAgICByZXR1cm4gZmFpbHVyZXMKIAotICAgICAgICAjIENvbXBhcmUgaGFzaGVzLgotICAg
ICAgICBleHBlY3RlZF9oYXNoID0gc2VsZi5fcG9ydC5leHBlY3RlZF9jaGVja3N1bShmaWxlbmFt
ZSkKLSAgICAgICAgZXhwZWN0ZWRfcG5nID0gc2VsZi5fcG9ydC5leHBlY3RlZF9pbWFnZShmaWxl
bmFtZSkKLQotICAgICAgICBpZiBub3QgZXhwZWN0ZWRfcG5nOgorICAgICAgICBpZiBub3QgZXhw
ZWN0ZWRfdGVzdF9vdXRwdXQuaW1hZ2U6CiAgICAgICAgICAgICAjIFJlcG9ydCBhIG1pc3Npbmcg
ZXhwZWN0ZWQgUE5HIGZpbGUuCi0gICAgICAgICAgICBzZWxmLndyaXRlX291dHB1dF9maWxlcyhm
aWxlbmFtZSwgJy5jaGVja3N1bScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0ZXN0X2FyZ3MuaGFzaCwgZXhwZWN0ZWRfaGFzaCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGVuY29kaW5nPSJhc2NpaSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwcmludF90ZXh0X2RpZmZzPUZhbHNlKQotICAgICAgICAgICAgc2VsZi5fY29w
eV9vdXRwdXRfcG5nKGZpbGVuYW1lLCB0ZXN0X2FyZ3MucG5nX3BhdGgsICctYWN0dWFsLnBuZycp
CisgICAgICAgICAgICBzZWxmLl9jb3B5X2ltYWdlKGZpbGVuYW1lLCBhY3R1YWxfdGVzdF9vdXRw
dXQuaW1hZ2UsIGV4cGVjdGVkX2ltYWdlPU5vbmUpCisgICAgICAgICAgICBzZWxmLl9jb3B5X2lt
YWdlX2hhc2goZmlsZW5hbWUsIGFjdHVhbF90ZXN0X291dHB1dC5pbWFnZV9oYXNoLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX3Rlc3Rfb3V0cHV0LmltYWdlX2hh
c2gpCiAgICAgICAgICAgICBmYWlsdXJlcy5hcHBlbmQodGVzdF9mYWlsdXJlcy5GYWlsdXJlTWlz
c2luZ0ltYWdlKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFpbHVyZXMKLSAgICAgICAgZWxpZiB0
ZXN0X2FyZ3MuaGFzaCA9PSBleHBlY3RlZF9oYXNoOgorICAgICAgICBpZiBub3QgZXhwZWN0ZWRf
dGVzdF9vdXRwdXQuaW1hZ2VfaGFzaDoKKyAgICAgICAgICAgICMgUmVwb3J0IGEgbWlzc2luZyBl
eHBlY3RlZCBjaGVja3N1bSBmaWxlLgorICAgICAgICAgICAgc2VsZi5fY29weV9pbWFnZShmaWxl
bmFtZSwgYWN0dWFsX3Rlc3Rfb3V0cHV0LmltYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBleHBlY3RlZF90ZXN0X291dHB1dC5pbWFnZSkKKyAgICAgICAgICAgIHNlbGYuX2NvcHlf
aW1hZ2VfaGFzaChmaWxlbmFtZSwgYWN0dWFsX3Rlc3Rfb3V0cHV0LmltYWdlX2hhc2gsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfaW1hZ2VfaGFzaD1Ob25lKQor
ICAgICAgICAgICAgZmFpbHVyZXMuYXBwZW5kKHRlc3RfZmFpbHVyZXMuRmFpbHVyZU1pc3NpbmdJ
bWFnZUhhc2goKSkKKyAgICAgICAgICAgIHJldHVybiBmYWlsdXJlcworCisgICAgICAgIGlmIGFj
dHVhbF90ZXN0X291dHB1dC5pbWFnZV9oYXNoID09IGV4cGVjdGVkX3Rlc3Rfb3V0cHV0LmltYWdl
X2hhc2g6CiAgICAgICAgICAgICAjIEhhc2ggbWF0Y2hlZCAobm8gZGlmZiBuZWVkZWQsIG9rYXkg
dG8gcmV0dXJuKS4KICAgICAgICAgICAgIHJldHVybiBmYWlsdXJlcwogCi0gICAgICAgIHNlbGYu
d3JpdGVfb3V0cHV0X2ZpbGVzKGZpbGVuYW1lLCAnLmNoZWNrc3VtJywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGVzdF9hcmdzLmhhc2gsIGV4cGVjdGVkX2hhc2gsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nPSJhc2NpaSIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHByaW50X3RleHRfZGlmZnM9RmFsc2UpCi0KLSAgICAgICAgIyBG
SVhNRTogY29tYmluZSBuZXh0IHR3byBsaW5lcwotICAgICAgICBzZWxmLl9jb3B5X291dHB1dF9w
bmcoZmlsZW5hbWUsIHRlc3RfYXJncy5wbmdfcGF0aCwgJy1hY3R1YWwucG5nJykKLSAgICAgICAg
c2VsZi53cml0ZV9vdXRwdXRfZmlsZXMoZmlsZW5hbWUsICcucG5nJywgb3V0cHV0PU5vbmUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkPWV4cGVjdGVkX3BuZywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc9Tm9uZSwgcHJpbnRfdGV4dF9k
aWZmcz1GYWxzZSkKKyAgICAgICAgc2VsZi5fY29weV9pbWFnZShmaWxlbmFtZSwgYWN0dWFsX3Rl
c3Rfb3V0cHV0LmltYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX3Rlc3Rf
b3V0cHV0LmltYWdlKQorICAgICAgICBzZWxmLl9jb3B5X2ltYWdlX2hhc2goZmlsZW5hbWUsIGFj
dHVhbF90ZXN0X291dHB1dC5pbWFnZV9oYXNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZXhwZWN0ZWRfdGVzdF9vdXRwdXQuaW1hZ2VfaGFzaCkKIAogICAgICAgICAjIEV2ZW4gdGhv
dWdoIHdlIG9ubHkgdXNlIHRoZSByZXN1bHQgaW4gb25lIGNvZGVwYXRoIGJlbG93IGJ1dCB3ZQog
ICAgICAgICAjIHN0aWxsIG5lZWQgdG8gY2FsbCBDcmVhdGVJbWFnZURpZmYgZm9yIG90aGVyIGNv
ZGVwYXRocy4KLSAgICAgICAgaW1hZ2VzX2FyZV9kaWZmZXJlbnQgPSBzZWxmLl9jcmVhdGVfaW1h
Z2VfZGlmZihwb3J0LCBmaWxlbmFtZSwgY29uZmlndXJhdGlvbikKLSAgICAgICAgaWYgbm90IGV4
cGVjdGVkX2hhc2g6Ci0gICAgICAgICAgICBmYWlsdXJlcy5hcHBlbmQodGVzdF9mYWlsdXJlcy5G
YWlsdXJlTWlzc2luZ0ltYWdlSGFzaCgpKQotICAgICAgICBlbGlmIHRlc3RfYXJncy5oYXNoICE9
IGV4cGVjdGVkX2hhc2g6Ci0gICAgICAgICAgICBpZiBpbWFnZXNfYXJlX2RpZmZlcmVudDoKLSAg
ICAgICAgICAgICAgICBmYWlsdXJlcy5hcHBlbmQodGVzdF9mYWlsdXJlcy5GYWlsdXJlSW1hZ2VI
YXNoTWlzbWF0Y2goKSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZmFpbHVy
ZXMuYXBwZW5kKHRlc3RfZmFpbHVyZXMuRmFpbHVyZUltYWdlSGFzaEluY29ycmVjdCgpKQorICAg
ICAgICBpbWFnZXNfYXJlX2RpZmZlcmVudCA9IHNlbGYuX2NyZWF0ZV9kaWZmX2ltYWdlKHBvcnQs
IGZpbGVuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGFjdHVhbF90ZXN0X291dHB1dC5pbWFnZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF90ZXN0X291dHB1dC5p
bWFnZSkKKyAgICAgICAgaWYgbm90IGltYWdlc19hcmVfZGlmZmVyZW50OgorICAgICAgICAgICAg
ZmFpbHVyZXMuYXBwZW5kKHRlc3RfZmFpbHVyZXMuRmFpbHVyZUltYWdlSGFzaEluY29ycmVjdCgp
KQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZmFpbHVyZXMuYXBwZW5kKHRlc3RfZmFpbHVy
ZXMuRmFpbHVyZUltYWdlSGFzaE1pc21hdGNoKCkpCiAKICAgICAgICAgcmV0dXJuIGZhaWx1cmVz
CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy90
ZXN0X3R5cGVzL3Rlc3RfdHlwZV9iYXNlLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvdGVzdF90eXBlcy90ZXN0X3R5cGVfYmFzZS5weQppbmRleCBkY2M2NGEz
NWIzMzlkZjk4ODBhYWMwNTM4ZjdlODU1OTcyNTgwYjEzLi40Yjk2YjNhYmZlMWI1OTUxMjI4MTE1
MGZkNmZlZWEwNjAzNTQ0YTkzIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy90ZXN0X3R5cGVzL3Rlc3RfdHlwZV9iYXNlLnB5CisrKyBiL1dlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Rlc3RfdHlwZXMvdGVzdF90eXBl
X2Jhc2UucHkKQEAgLTE0MCwxOCArMTQwLDIyIEBAIGNsYXNzIFRlc3RUeXBlQmFzZShvYmplY3Qp
OgogICAgICAgICAgICAgc2VsZi5fcG9ydC5yZWxhdGl2ZV90ZXN0X2ZpbGVuYW1lKGZpbGVuYW1l
KSkKICAgICAgICAgcmV0dXJuIG9zLnBhdGguc3BsaXRleHQob3V0cHV0X2ZpbGVuYW1lKVswXSAr
IG1vZGlmaWVyCiAKLSAgICBkZWYgY29tcGFyZV9vdXRwdXQoc2VsZiwgcG9ydCwgZmlsZW5hbWUs
IG91dHB1dCwgdGVzdF9hcmdzLCBjb25maWd1cmF0aW9uKToKKyAgICBkZWYgY29tcGFyZV9vdXRw
dXQoc2VsZiwgcG9ydCwgZmlsZW5hbWUsIHRlc3RfYXJncywgYWN0dWFsX3Rlc3Rfb3V0cHV0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfdGVzdF9vdXRwdXQpOgogICAgICAgICAi
IiJNZXRob2QgdGhhdCBjb21wYXJlcyB0aGUgb3V0cHV0IGZyb20gdGhlIHRlc3Qgd2l0aCB0aGUK
ICAgICAgICAgZXhwZWN0ZWQgdmFsdWUuCiAKICAgICAgICAgVGhpcyBpcyBhbiBhYnN0cmFjdCBt
ZXRob2QgdG8gYmUgaW1wbGVtZW50ZWQgYnkgYWxsIHN1YiBjbGFzc2VzLgogCiAgICAgICAgIEFy
Z3M6CisgICAgICAgICAgcG9ydDogb2JqZWN0IGltcGxlbWVudGluZyBwb3J0LXNwZWNpZmljIGlu
Zm9ybWF0aW9uIGFuZCBtZXRob2RzCiAgICAgICAgICAgZmlsZW5hbWU6IGFic29sdXRlIGZpbGVu
YW1lIHRvIHRlc3QgZmlsZQotICAgICAgICAgIG91dHB1dDogYSBzdHJpbmcgY29udGFpbmluZyB0
aGUgb3V0cHV0IG9mIHRoZSB0ZXN0CiAgICAgICAgICAgdGVzdF9hcmdzOiBhIFRlc3RBcmd1bWVu
dHMgb2JqZWN0IGhvbGRpbmcgb3B0aW9uYWwgYWRkaXRpb25hbAogICAgICAgICAgICAgICBhcmd1
bWVudHMKLSAgICAgICAgICBjb25maWd1cmF0aW9uOiBEZWJ1ZyBvciBSZWxlYXNlCisgICAgICAg
ICAgYWN0dWFsX3Rlc3Rfb3V0cHV0OiBhIFRlc3RPdXRwdXQgb2JqZWN0IHdoaWNoIHJlcHJlc2Vu
dHMgYWN0dWFsIHRlc3QKKyAgICAgICAgICAgICAgb3V0cHV0CisgICAgICAgICAgZXhwZWN0ZWRf
dGVzdF9vdXRwdXQ6IGEgVGVzdE91dHB1dCBvYmplY3Qgd2hpY2ggcmVwcmVzZW50cyBhIGV4cGVj
dGVkCisgICAgICAgICAgICAgIHRlc3Qgb3V0cHV0CiAKICAgICAgICAgUmV0dXJuOgogICAgICAg
ICAgIGEgbGlzdCBvZiBUZXN0RmFpbHVyZSBvYmplY3RzLCBlbXB0eSBpZiB0aGUgdGVzdCBwYXNz
ZXMKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3Rlc3RfdHlwZXMvdGV4dF9kaWZmLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvdGVzdF90eXBlcy90ZXh0X2RpZmYucHkKaW5kZXggNGMzMmYwZDAyMzQ3M2M2
M2I4ZTQ3NGY3NzA5M2EwZmRmYTBhYTMzNy4uMjU1YTJkZWY2NjczODc4ZWZkZWQzMjdhY2M0YmNh
YjNjZjA4YmFhNSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvdGVzdF90eXBlcy90ZXh0X2RpZmYucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdGVzdF90eXBlcy90ZXh0X2RpZmYucHkKQEAgLTYxLDcg
KzYxLDggQEAgY2xhc3MgVGVzdFRleHREaWZmKHRlc3RfdHlwZV9iYXNlLlRlc3RUeXBlQmFzZSk6
CiAgICAgICAgIGlmIHRoZSBleHBlY3RlZCBvdXRwdXQgZmlsZSB3YXMgbm90IGZvdW5kLiIiIgog
ICAgICAgICByZXR1cm4gc2VsZi5fcG9ydC5leHBlY3RlZF90ZXh0KGZpbGVuYW1lKQogCi0gICAg
ZGVmIGNvbXBhcmVfb3V0cHV0KHNlbGYsIHBvcnQsIGZpbGVuYW1lLCBvdXRwdXQsIHRlc3RfYXJn
cywgY29uZmlndXJhdGlvbik6CisgICAgZGVmIGNvbXBhcmVfb3V0cHV0KHNlbGYsIHBvcnQsIGZp
bGVuYW1lLCB0ZXN0X2FyZ3MsIGFjdHVhbF90ZXN0X291dHB1dCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGV4cGVjdGVkX3Rlc3Rfb3V0cHV0KToKICAgICAgICAgIiIiSW1wbGVtZW50YXRpb24g
b2YgQ29tcGFyZU91dHB1dCB0aGF0IGNoZWNrcyB0aGUgb3V0cHV0IHRleHQgYWdhaW5zdAogICAg
ICAgICB0aGUgZXhwZWN0ZWQgdGV4dCBmcm9tIHRoZSBMYXlvdXRUZXN0IGRpcmVjdG9yeS4iIiIK
ICAgICAgICAgZmFpbHVyZXMgPSBbXQpAQCAtNzYsMTcgKzc3LDE4IEBAIGNsYXNzIFRlc3RUZXh0
RGlmZih0ZXN0X3R5cGVfYmFzZS5UZXN0VHlwZUJhc2UpOgogICAgICAgICAgICAgcmV0dXJuIGZh
aWx1cmVzCiAKICAgICAgICAgIyBOb3JtYWxpemUgdGV4dCB0byBkaWZmCi0gICAgICAgIG91dHB1
dCA9IHNlbGYuX2dldF9ub3JtYWxpemVkX291dHB1dF90ZXh0KG91dHB1dCkKLSAgICAgICAgZXhw
ZWN0ZWQgPSBzZWxmLl9nZXRfbm9ybWFsaXplZF9leHBlY3RlZF90ZXh0KGZpbGVuYW1lKQorICAg
ICAgICBhY3R1YWxfdGV4dCA9IHNlbGYuX2dldF9ub3JtYWxpemVkX291dHB1dF90ZXh0KGFjdHVh
bF90ZXN0X291dHB1dC50ZXh0KQorICAgICAgICAjIEFzc3VtaW5nIGV4cGVjdGVkX3RleHQgaXMg
YWxyZWFkeSBub3JtYWxpemVkLgorICAgICAgICBleHBlY3RlZF90ZXh0ID0gZXhwZWN0ZWRfdGVz
dF9vdXRwdXQudGV4dAogCiAgICAgICAgICMgV3JpdGUgb3V0cHV0IGZpbGVzIGZvciBuZXcgdGVz
dHMsIHRvby4KLSAgICAgICAgaWYgcG9ydC5jb21wYXJlX3RleHQob3V0cHV0LCBleHBlY3RlZCk6
CisgICAgICAgIGlmIHBvcnQuY29tcGFyZV90ZXh0KGFjdHVhbF90ZXh0LCBleHBlY3RlZF90ZXh0
KToKICAgICAgICAgICAgICMgVGV4dCBkb2Vzbid0IG1hdGNoLCB3cml0ZSBvdXRwdXQgZmlsZXMu
Ci0gICAgICAgICAgICBzZWxmLndyaXRlX291dHB1dF9maWxlcyhmaWxlbmFtZSwgIi50eHQiLCBv
dXRwdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZCwgZW5j
b2Rpbmc9Tm9uZSwKKyAgICAgICAgICAgIHNlbGYud3JpdGVfb3V0cHV0X2ZpbGVzKGZpbGVuYW1l
LCAiLnR4dCIsIGFjdHVhbF90ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZXhwZWN0ZWRfdGV4dCwgZW5jb2Rpbmc9Tm9uZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHByaW50X3RleHRfZGlmZnM9VHJ1ZSkKIAotICAgICAgICAgICAgaWYgZXhw
ZWN0ZWQgPT0gJyc6CisgICAgICAgICAgICBpZiBleHBlY3RlZF90ZXh0ID09ICcnOgogICAgICAg
ICAgICAgICAgIGZhaWx1cmVzLmFwcGVuZCh0ZXN0X2ZhaWx1cmVzLkZhaWx1cmVNaXNzaW5nUmVz
dWx0KCkpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGZhaWx1cmVzLmFwcGVu
ZCh0ZXN0X2ZhaWx1cmVzLkZhaWx1cmVUZXh0TWlzbWF0Y2goKSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>73720</attachid>
            <date>2010-11-12 02:00:03 -0800</date>
            <delta_ts>2010-11-16 15:46:02 -0800</delta_ts>
            <desc>testoutput-refactor-fix-typo-and-remove-unused-functions</desc>
            <filename>bug-49431-20101112190001.patch</filename>
            <type>text/plain</type>
            <size>25966</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBjODhjZTNlZDc5Y2JiOWFmYmE1NzNhNmViMWJkMzBkMDA1OWE5NmFmLi43YWNiNTBl
N2MzYWVjZjIzN2NhNGZkODFkYzdhMTZiMTljNjk1MmI4IDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAK
KzIwMTAtMTEtMTIgIEhheWF0byBJdG8gIDxoYXlhdG9AY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFJlZmFjdG9yIFRlc3RUeXBlQmFzZS5jb21wYXJlX291dHB1dCgpLgorCisgICAgICAgIEludHJv
ZHVjZXMgYSBUZXN0T3V0cHV0IGNsYXNzIGFuZCB1cGRhdGUgY29tcGFyZV9vdXRwdXQoKSBvZiBl
YWNoIHRlc3QKKyAgICAgICAgdHlwZXMgc28gdGhhdCB0aGV5IGNhbiB0YWtlIGJvdGggYWN0dWFs
IGFuZCBleHBlY3RlZCBUZXN0T3V0cHV0IG9iamVjdHMuCisKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ5NDMxCisKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9kdW1wX3JlbmRlcl90cmVlX3RocmVh
ZC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0
X3Rlc3RzLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Rlc3Rf
dHlwZXMvaW1hZ2VfZGlmZi5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy90ZXN0X3R5cGVzL3Rlc3RfdHlwZV9iYXNlLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3Rlc3RfdHlwZXMvdGV4dF9kaWZmLnB5OgorCiAyMDEwLTExLTA4
ICBOaWNvbGFzIER1ZnJlc25lICA8bmljb2xhcy5kdWZyZXNuZUBjb2xsYWJvcmEuY28udWs+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgTWFydGluIFJvYmluc29uLgpkaWZmIC0tZ2l0IGEvV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvZHVtcF9y
ZW5kZXJfdHJlZV90aHJlYWQucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9kdW1wX3JlbmRlcl90cmVlX3RocmVhZC5weQppbmRleCA5
ZjJkZTdlNDc2YjdiNWMwYjdmMTFlZGM0NmU4ODI1NDc0ZjNmODVmLi4xMWYzMzEwMDhjMjE5ZDI2
M2NkNDNlYjY5MWYzNzU0MjQyNzU1MjU3IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9kdW1wX3JlbmRlcl90cmVlX3Ro
cmVhZC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9s
YXlvdXRfcGFja2FnZS9kdW1wX3JlbmRlcl90cmVlX3RocmVhZC5weQpAQCAtNTcsNiArNTcsMzUg
QEAgX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJ3ZWJraXRweS5sYXlvdXRfdGVzdHMubGF5b3V0
X3BhY2thZ2UuIgogICAgICAgICAgICAgICAgICAgICAgICAgICJkdW1wX3JlbmRlcl90cmVlX3Ro
cmVhZCIpCiAKIAorY2xhc3MgVGVzdE91dHB1dChvYmplY3QpOgorICAgICIiIkdyb3VwcyBpbmZv
cm1hdGlvbiBhYm91dCBhIHRlc3Qgb3V0cHV0IGZvciBlYXN5IHBhc3Npbmcgb2YgZGF0YS4KKwor
ICAgIFRoaXMgaXMgdXNlZCBub3Qgb25seSBmb3IgYSBhY3R1YWwgdGVzdCBvdXRwdXQsIGJ1dCBh
bHNvIGZvciBncm91cGluZworICAgIGV4cGVjdGVkIHRlc3Qgb3V0cHV0LgorICAgICIiIgorCisg
ICAgZGVmIF9faW5pdF9fKHNlbGYsIHRleHQsIGltYWdlLCBpbWFnZV9oYXNoLAorICAgICAgICAg
ICAgICAgICBjcmFzaD1Ob25lLCB0aW1lb3V0PU5vbmUsIGVycm9yPU5vbmUpOgorICAgICAgICAi
IiJJbml0aWFsaXplcyBhIFRlc3RPdXRwdXQgb2JqZWN0LgorCisgICAgICAgIEFyZ3M6CisgICAg
ICAgICAgdGV4dDogYSB0ZXh0IG91dHB1dAorICAgICAgICAgIGltYWdlOiBhbiBpbWFnZSBvdXRw
dXQKKyAgICAgICAgICBpbWFnZV9oYXNoOiBhIHN0cmluZyBjb250YWluaW5nIHRoZSBjaGVja3N1
bSBvZiB0aGUgaW1hZ2UKKyAgICAgICAgICBjcmFzaDogYSBib29sZWFuIGluZGljYXRpbmcgd2hl
dGhlciB0aGUgZHJpdmVyIGNyYXNoZWQgb24gdGhlIHRlc3QKKyAgICAgICAgICB0aW1lb3V0OiBh
IGJvb2xlYW4gaW5kaWNhdGluZyB3aGVodGVyIHRoZSB0ZXN0IHRpbWVkIG91dAorICAgICAgICAg
IGVycm9yOiBhbnkgdW5leHBlY3RlZCBvciBhZGRpdGlvbmFsIChvciBlcnJvcikgdGV4dCBvdXRw
dXQKKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYudGV4dCA9IHRleHQKKyAgICAgICAgIyBGSVhN
RTogV2Ugc2hvdWxkIHJldHJpZXZlIGEgaW1hZ2UgbGF6aWx5IGluIHNvbWUgY2FzZXMgdG8gb3B0
aW1pemUKKyAgICAgICAgIyBwZXJmb3JtYW5jZS4KKyAgICAgICAgc2VsZi5pbWFnZSA9IGltYWdl
CisgICAgICAgIHNlbGYuaW1hZ2VfaGFzaCA9IGltYWdlX2hhc2gKKyAgICAgICAgc2VsZi5jcmFz
aCA9IGNyYXNoCisgICAgICAgIHNlbGYudGltZW91dCA9IHRpbWVvdXQKKyAgICAgICAgc2VsZi5l
cnJvciA9IGVycm9yCisKKwogZGVmIGZpbmRfdGhyZWFkX3N0YWNrKGlkKToKICAgICAiIiJSZXR1
cm5zIGEgc3RhY2sgb2JqZWN0IHRoYXQgY2FuIGJlIHVzZWQgdG8gZHVtcCBhIHN0YWNrIHRyYWNl
IGZvcgogICAgIHRoZSBnaXZlbiB0aHJlYWQgaWQgKG9yIE5vbmUgaWYgdGhlIGlkIGlzIG5vdCBm
b3VuZCkuIiIiCkBAIC03NCw5ICsxMDMsMzAgQEAgZGVmIGxvZ19zdGFjayhzdGFjayk6CiAgICAg
ICAgICAgICBfbG9nLmVycm9yKCcgICVzJyAlIGxpbmUuc3RyaXAoKSkKIAogCitkZWYgX2V4cGVj
dGVkX3RleHQocG9ydCwgZmlsZW5hbWUpOgorICAgICIiIlJldHVybnMgYW4gZXhwZWN0ZWQgdGV4
dC4iIiIKKyAgICByZXR1cm4gcG9ydC5leHBlY3RlZF90ZXh0KGZpbGVuYW1lKQorCisKK2RlZiBf
ZXhwZWN0ZWRfaW1hZ2UocG9ydCwgZmlsZW5hbWUpOgorICAgICIiIlJldHVybnMgYW4gZXhwZWN0
ZWQgaW1hZ2UuIiIiCisgICAgcmV0dXJuIHBvcnQuZXhwZWN0ZWRfaW1hZ2UoZmlsZW5hbWUpCisK
KworZGVmIF9leHBlY3RlZF9pbWFnZV9oYXNoKHBvcnQsIGZpbGVuYW1lKToKKyAgICAiIiJSZXR1
cm5zIGFuIGV4cGVjdGVkIGltYWdlIGhhc2guIiIiCisgICAgcmV0dXJuIHBvcnQuZXhwZWN0ZWRf
Y2hlY2tzdW0oZmlsZW5hbWUpCisKKworZGVmIF9leHBlY3RlZF90ZXN0X291dHB1dChwb3J0LCBm
aWxlbmFtZSk6CisgICAgIiIiUmV0dXJucyBhbiBleHBlY3RlZCBUZXN0T3V0cHV0IG9iamVjdC4i
IiIKKyAgICByZXR1cm4gVGVzdE91dHB1dChfZXhwZWN0ZWRfdGV4dChwb3J0LCBmaWxlbmFtZSks
CisgICAgICAgICAgICAgICAgICAgICAgX2V4cGVjdGVkX2ltYWdlKHBvcnQsIGZpbGVuYW1lKSwK
KyAgICAgICAgICAgICAgICAgICAgICBfZXhwZWN0ZWRfaW1hZ2VfaGFzaChwb3J0LCBmaWxlbmFt
ZSkpCisKKwogZGVmIF9wcm9jZXNzX291dHB1dChwb3J0LCBvcHRpb25zLCB0ZXN0X2luZm8sIHRl
c3RfdHlwZXMsIHRlc3RfYXJncywKLSAgICAgICAgICAgICAgICAgICAgY3Jhc2gsIHRpbWVvdXQs
IHRlc3RfcnVuX3RpbWUsIGFjdHVhbF9jaGVja3N1bSwKLSAgICAgICAgICAgICAgICAgICAgb3V0
cHV0LCBlcnJvcik6CisgICAgICAgICAgICAgICAgICAgIHRlc3Rfb3V0cHV0LCB0ZXN0X3J1bl90
aW1lKToKICAgICAiIiJSZWNlaXZlcyB0aGUgb3V0cHV0IGZyb20gYSBEdW1wUmVuZGVyVHJlZSBw
cm9jZXNzLCBzdWJqZWN0cyBpdCB0byBhCiAgICAgbnVtYmVyIG9mIHRlc3RzLCBhbmQgcmV0dXJu
cyBhIGxpc3Qgb2YgZmFpbHVyZSB0eXBlcyB0aGUgdGVzdCBwcm9kdWNlZC4KIApAQCAtODQsMjcg
KzEzNCwyMyBAQCBkZWYgX3Byb2Nlc3Nfb3V0cHV0KHBvcnQsIG9wdGlvbnMsIHRlc3RfaW5mbywg
dGVzdF90eXBlcywgdGVzdF9hcmdzLAogICAgICAgcG9ydDogcG9ydC1zcGVjaWZpYyBob29rcwog
ICAgICAgb3B0aW9uczogY29tbWFuZCBsaW5lIG9wdGlvbnMgYXJndW1lbnQgZnJvbSBvcHRwYXJz
ZQogICAgICAgcHJvYzogYW4gYWN0aXZlIER1bXBSZW5kZXJUcmVlIHByb2Nlc3MKLSAgICAgIHRl
c3RfaW5mbzogT2JqZWN0IGNvbnRhaW5pbmcgdGhlIHRlc3QgZmlsZW5hbWUsIHVyaSBhbmQgdGlt
ZW91dAorICAgICAgdGVzdF9pbmZvOiBhIFRlc3RJbmZvIG9iamVjdAogICAgICAgdGVzdF90eXBl
czogbGlzdCBvZiB0ZXN0IHR5cGVzIHRvIHN1YmplY3QgdGhlIG91dHB1dCB0bwogICAgICAgdGVz
dF9hcmdzOiBhcmd1bWVudHMgdG8gYmUgcGFzc2VkIHRvIGVhY2ggdGVzdAorICAgICAgdGVzdF9v
dXRwdXQ6IGEgYWN0dWFsIHRlc3Rfb3V0cHV0CiAKICAgICBSZXR1cm5zOiBhIFRlc3RSZXN1bHQg
b2JqZWN0CiAgICAgIiIiCiAgICAgZmFpbHVyZXMgPSBbXQogCi0gICAgIyBTb21lIHRlc3QgYXJn
cywgc3VjaCBhcyB0aGUgaW1hZ2UgaGFzaCwgbWF5IGJlIGFkZGVkIG9yIGNoYW5nZWQgb24gYQot
ICAgICMgdGVzdC1ieS10ZXN0IGJhc2lzLgotICAgIGxvY2FsX3Rlc3RfYXJncyA9IGNvcHkuY29w
eSh0ZXN0X2FyZ3MpCi0KLSAgICBsb2NhbF90ZXN0X2FyZ3MuaGFzaCA9IGFjdHVhbF9jaGVja3N1
bQotCi0gICAgaWYgY3Jhc2g6CisgICAgaWYgdGVzdF9vdXRwdXQuY3Jhc2g6CiAgICAgICAgIGZh
aWx1cmVzLmFwcGVuZCh0ZXN0X2ZhaWx1cmVzLkZhaWx1cmVDcmFzaCgpKQotICAgIGlmIHRpbWVv
dXQ6CisgICAgaWYgdGVzdF9vdXRwdXQudGltZW91dDoKICAgICAgICAgZmFpbHVyZXMuYXBwZW5k
KHRlc3RfZmFpbHVyZXMuRmFpbHVyZVRpbWVvdXQoKSkKIAotICAgIGlmIGNyYXNoOgotICAgICAg
ICBfbG9nLmRlYnVnKCJTdGFja3RyYWNlIGZvciAlczpcbiVzIiAlICh0ZXN0X2luZm8uZmlsZW5h
bWUsIGVycm9yKSkKKyAgICBpZiB0ZXN0X291dHB1dC5jcmFzaDoKKyAgICAgICAgX2xvZy5kZWJ1
ZygiU3RhY2t0cmFjZSBmb3IgJXM6XG4lcyIgJSAodGVzdF9pbmZvLmZpbGVuYW1lLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X291dHB1dC5lcnJv
cikpCiAgICAgICAgICMgU3RyaXAgb2ZmICJmaWxlOi8vIiBzaW5jZSBSZWxhdGl2ZVRlc3RGaWxl
bmFtZSBleHBlY3RzCiAgICAgICAgICMgZmlsZXN5c3RlbSBwYXRocy4KICAgICAgICAgZmlsZW5h
bWUgPSBvcy5wYXRoLmpvaW4ob3B0aW9ucy5yZXN1bHRzX2RpcmVjdG9yeSwKQEAgLTExMyw5ICsx
NTksMTEgQEAgZGVmIF9wcm9jZXNzX291dHB1dChwb3J0LCBvcHRpb25zLCB0ZXN0X2luZm8sIHRl
c3RfdHlwZXMsIHRlc3RfYXJncywKICAgICAgICAgZmlsZW5hbWUgPSBvcy5wYXRoLnNwbGl0ZXh0
KGZpbGVuYW1lKVswXSArICItc3RhY2sudHh0IgogICAgICAgICBwb3J0Lm1heWJlX21ha2VfZGly
ZWN0b3J5KG9zLnBhdGguc3BsaXQoZmlsZW5hbWUpWzBdKQogICAgICAgICB3aXRoIGNvZGVjcy5v
cGVuKGZpbGVuYW1lLCAid2IiLCAidXRmLTgiKSBhcyBmaWxlOgotICAgICAgICAgICAgZmlsZS53
cml0ZShlcnJvcikKLSAgICBlbGlmIGVycm9yOgotICAgICAgICBfbG9nLmRlYnVnKCJQcmV2aW91
cyB0ZXN0IG91dHB1dCBzdGRlcnIgbGluZXM6XG4lcyIgJSBlcnJvcikKKyAgICAgICAgICAgIGZp
bGUud3JpdGUodGVzdF9vdXRwdXQuZXJyb3IpCisgICAgZWxpZiB0ZXN0X291dHB1dC5lcnJvcjoK
KyAgICAgICAgX2xvZy5kZWJ1ZygiUHJldmlvdXMgdGVzdCBvdXRwdXQgc3RkZXJyIGxpbmVzOlxu
JXMiICUgdGVzdF9vdXRwdXQuZXJyb3IpCisKKyAgICBleHBlY3RlZF90ZXN0X291dHB1dCA9IF9l
eHBlY3RlZF90ZXN0X291dHB1dChwb3J0LCB0ZXN0X2luZm8uZmlsZW5hbWUpCiAKICAgICAjIENo
ZWNrIHRoZSBvdXRwdXQgYW5kIHNhdmUgdGhlIHJlc3VsdHMuCiAgICAgc3RhcnRfdGltZSA9IHRp
bWUudGltZSgpCkBAIC0xMjMsMTIgKzE3MSwxMiBAQCBkZWYgX3Byb2Nlc3Nfb3V0cHV0KHBvcnQs
IG9wdGlvbnMsIHRlc3RfaW5mbywgdGVzdF90eXBlcywgdGVzdF9hcmdzLAogICAgIGZvciB0ZXN0
X3R5cGUgaW4gdGVzdF90eXBlczoKICAgICAgICAgc3RhcnRfZGlmZl90aW1lID0gdGltZS50aW1l
KCkKICAgICAgICAgbmV3X2ZhaWx1cmVzID0gdGVzdF90eXBlLmNvbXBhcmVfb3V0cHV0KHBvcnQs
IHRlc3RfaW5mby5maWxlbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG91dHB1dCwgbG9jYWxfdGVzdF9hcmdzLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5jb25maWd1cmF0aW9uKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9hcmdzLCB0
ZXN0X291dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGV4cGVjdGVkX3Rlc3Rfb3V0cHV0KQogICAgICAgICAjIERvbid0IGFkZCBhbnkgbW9yZSBm
YWlsdXJlcyBpZiB3ZSBhbHJlYWR5IGhhdmUgYSBjcmFzaCwgc28gd2UgZG9uJ3QKICAgICAgICAg
IyBkb3VibGUtcmVwb3J0IHRob3NlIHRlc3RzLiBXZSBkbyBkb3VibGUtcmVwb3J0IGZvciB0aW1l
b3V0cyBzaW5jZQogICAgICAgICAjIHdlIHN0aWxsIHdhbnQgdG8gc2VlIHRoZSB0ZXh0IGFuZCBp
bWFnZSBvdXRwdXQuCi0gICAgICAgIGlmIG5vdCBjcmFzaDoKKyAgICAgICAgaWYgbm90IHRlc3Rf
b3V0cHV0LmNyYXNoOgogICAgICAgICAgICAgZmFpbHVyZXMuZXh0ZW5kKG5ld19mYWlsdXJlcykK
ICAgICAgICAgdGltZV9mb3JfZGlmZnNbdGVzdF90eXBlLl9fY2xhc3NfXy5fX25hbWVfX10gPSAo
CiAgICAgICAgICAgICB0aW1lLnRpbWUoKSAtIHN0YXJ0X2RpZmZfdGltZSkKQEAgLTE1MywxMSAr
MjAxLDUyIEBAIGRlZiBfbWlsbGlzZWNvbmRzX3RvX3NlY29uZHMobXNlY3MpOgogICAgIHJldHVy
biBmbG9hdChtc2VjcykgLyAxMDAwLjAKIAogCi1kZWYgX2ltYWdlX2hhc2godGVzdF9pbmZvLCB0
ZXN0X2FyZ3MsIG9wdGlvbnMpOgorZGVmIF9zaG91bGRfc2F2ZV9uZXdfaW1hZ2UodGVzdF9hcmdz
KToKKyAgICAiIiJSZXR1cm5zIHRydWUgaWYgd2UgbmVlZCB0byBzYXZlIGEgbmV3IGltYWdlLiIi
IgorICAgIHJldHVybiB0ZXN0X2FyZ3MubmV3X2Jhc2VsaW5lIG9yIHRlc3RfYXJncy5yZXNldF9y
ZXN1bHRzCisKKworZGVmIF9uZWVkc19pbWFnZSh0ZXN0X2FyZ3MsIG9wdGlvbnMpOgorICAgICIi
IlJldHVybiB0cnVlIGlmIGEgdGVzdCB1c2VzIGEgaW1hZ2Ugb3V0cHV0LiIiIgorICAgIHJldHVy
biBfc2hvdWxkX3NhdmVfbmV3X2ltYWdlKHRlc3RfYXJncykgb3Igb3B0aW9ucy5waXhlbF90ZXN0
cworCisKK2RlZiBfaW1hZ2VfaGFzaF90b19kcml2ZXIocG9ydCwgZmlsZW5hbWUsIHRlc3RfYXJn
cywgb3B0aW9ucyk6CiAgICAgIiIiUmV0dXJucyB0aGUgaW1hZ2UgaGFzaCBvZiB0aGUgdGVzdCBp
ZiBpdCdzIG5lZWRlZCwgb3RoZXJ3aXNlIE5vbmUuIiIiCi0gICAgaWYgKHRlc3RfYXJncy5uZXdf
YmFzZWxpbmUgb3IgdGVzdF9hcmdzLnJlc2V0X3Jlc3VsdHMgb3Igbm90IG9wdGlvbnMucGl4ZWxf
dGVzdHMpOgorICAgICMgVGhlIHBpeGVsX2hhc2ggaXMgdXNlZCB0byBhdm9pZCBkb2luZyBhbiBp
bWFnZSBkdW1wIGlmIHRoZQorICAgICMgY2hlY2tzdW1zIG1hdGNoLCBzbyBpdCBzaG91bGQgYmUg
c2V0IHRvIGEgYmxhbmsgdmFsdWUgaWYgd2UKKyAgICAjIGFyZSBnZW5lcmF0aW5nIGEgbmV3IGJh
c2VsaW5lLiAgKE90aGVyd2lzZSwgYW4gaW1hZ2UgZnJvbSBhCisgICAgIyBwcmV2aW91cyBydW4g
d2lsbCBiZSBjb3BpZWQgaW50byB0aGUgYmFzZWxpbmUuKQorICAgIGlmIF9zaG91bGRfc2F2ZV9u
ZXdfaW1hZ2UodGVzdF9hcmdzKToKICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICByZXR1cm4gdGVz
dF9pbmZvLmltYWdlX2hhc2goKQorICAgIGlmIG5vdCBvcHRpb25zLnBpeGVsX3Rlc3RzOgorICAg
ICAgICByZXR1cm4gTm9uZQorICAgIHJldHVybiBfZXhwZWN0ZWRfaW1hZ2VfaGFzaChwb3J0LCBm
aWxlbmFtZSkKKworCitkZWYgX2dldF9kcml2ZXJfb3V0cHV0X2ltYWdlKHRlc3RfYXJncyk6Cisg
ICAgIiIiUmV0dXJucyB0aGUgaW1hZ2Ugb3V0cHV0IHdoaWNoIGRyaXZlciBnZW5lcmF0ZWQuIiIi
CisgICAgcG5nX3BhdGggPSB0ZXN0X2FyZ3MucG5nX3BhdGgKKyAgICBhc3NlcnQob3MucGF0aC5p
c2ZpbGUocG5nX3BhdGgpKQorICAgIHdpdGggb3BlbihwbmdfcGF0aCwgJ3JiJykgYXMgaW1hZ2Vf
ZmlsZToKKyAgICAgICAgcmV0dXJuIGltYWdlX2ZpbGUucmVhZCgpCisKKworZGVmIF9ydW5fc2lu
Z2xlX3Rlc3QocG9ydCwgb3B0aW9ucywgdGVzdF9pbmZvLCB0ZXN0X3R5cGVzLCB0ZXN0X2FyZ3Ms
IGRyaXZlcik6CisgICAgaW1hZ2VfaGFzaF90b19kcml2ZXIgPSBfaW1hZ2VfaGFzaF90b19kcml2
ZXIoCisgICAgICAgIHBvcnQsIHRlc3RfaW5mby5maWxlbmFtZSwgdGVzdF9hcmdzLCBvcHRpb25z
KQorICAgIHN0YXJ0ID0gdGltZS50aW1lKCkKKyAgICBjcmFzaCwgdGltZW91dCwgaW1hZ2VfaGFz
aCwgdGV4dCwgZXJyb3IgPSBcCisgICAgICAgIGRyaXZlci5ydW5fdGVzdCh0ZXN0X2luZm8udXJp
LnN0cmlwKCksIHRlc3RfaW5mby50aW1lb3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgaW1h
Z2VfaGFzaF90b19kcml2ZXIpCisgICAgZW5kID0gdGltZS50aW1lKCkKKyAgICBpZiBfbmVlZHNf
aW1hZ2UodGVzdF9hcmdzLCBvcHRpb25zKToKKyAgICAgICAgaW1hZ2UgPSBfZ2V0X2RyaXZlcl9v
dXRwdXRfaW1hZ2UodGVzdF9hcmdzKQorICAgIGVsc2U6CisgICAgICAgIGltYWdlID0gTm9uZQor
ICAgIHRlc3Rfb3V0cHV0ID0gVGVzdE91dHB1dCh0ZXh0LCBpbWFnZSwgaW1hZ2VfaGFzaCwgY3Jh
c2gsIHRpbWVvdXQsIGVycm9yKQorICAgIHJldHVybiBfcHJvY2Vzc19vdXRwdXQocG9ydCwgb3B0
aW9ucywgdGVzdF9pbmZvLCB0ZXN0X3R5cGVzLCB0ZXN0X2FyZ3MsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0ZXN0X291dHB1dCwgZW5kIC0gc3RhcnQpCiAKIAogY2xhc3MgU2luZ2xlVGVz
dFRocmVhZCh0aHJlYWRpbmcuVGhyZWFkKToKQEAgLTE4OCwyMCArMjc3LDEyIEBAIGNsYXNzIFNp
bmdsZVRlc3RUaHJlYWQodGhyZWFkaW5nLlRocmVhZCk6CiAgICAgZGVmIF9jb3ZlcmVkX3J1bihz
ZWxmKToKICAgICAgICAgIyBGSVhNRTogdGhpcyBpcyBhIHNlcGFyYXRlIHJvdXRpbmUgdG8gd29y
ayBhcm91bmQgYSBidWcKICAgICAgICAgIyBpbiBjb3ZlcmFnZTogc2VlIGh0dHA6Ly9iaXRidWNr
ZXQub3JnL25lZC9jb3ZlcmFnZXB5L2lzc3VlLzg1LgotICAgICAgICB0ZXN0X2luZm8gPSBzZWxm
Ll90ZXN0X2luZm8KICAgICAgICAgc2VsZi5fZHJpdmVyID0gc2VsZi5fcG9ydC5jcmVhdGVfZHJp
dmVyKHNlbGYuX3Rlc3RfYXJncy5wbmdfcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMpCiAgICAgICAgIHNlbGYuX2RyaXZl
ci5zdGFydCgpCi0gICAgICAgIGltYWdlX2hhc2ggPSBfaW1hZ2VfaGFzaCh0ZXN0X2luZm8sIHNl
bGYuX3Rlc3RfYXJncywgc2VsZi5fb3B0aW9ucykKLSAgICAgICAgc3RhcnQgPSB0aW1lLnRpbWUo
KQotICAgICAgICBjcmFzaCwgdGltZW91dCwgYWN0dWFsX2NoZWNrc3VtLCBvdXRwdXQsIGVycm9y
ID0gXAotICAgICAgICAgICAgc2VsZi5fZHJpdmVyLnJ1bl90ZXN0KHRlc3RfaW5mby51cmkuc3Ry
aXAoKSwgdGVzdF9pbmZvLnRpbWVvdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW1hZ2VfaGFzaCkKLSAgICAgICAgZW5kID0gdGltZS50aW1lKCkKLSAgICAgICAgc2VsZi5f
dGVzdF9yZXN1bHQgPSBfcHJvY2Vzc19vdXRwdXQoc2VsZi5fcG9ydCwgc2VsZi5fb3B0aW9ucywK
LSAgICAgICAgICAgIHRlc3RfaW5mbywgc2VsZi5fdGVzdF90eXBlcywgc2VsZi5fdGVzdF9hcmdz
LAotICAgICAgICAgICAgY3Jhc2gsIHRpbWVvdXQsIGVuZCAtIHN0YXJ0LAotICAgICAgICAgICAg
YWN0dWFsX2NoZWNrc3VtLCBvdXRwdXQsIGVycm9yKQorICAgICAgICBzZWxmLl90ZXN0X3Jlc3Vs
dCA9IF9ydW5fc2luZ2xlX3Rlc3Qoc2VsZi5fcG9ydCwgc2VsZi5fb3B0aW9ucywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3Rlc3RfaW5mbywgc2Vs
Zi5fdGVzdF90eXBlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNlbGYuX3Rlc3RfYXJncywgc2VsZi5fZHJpdmVyKQogICAgICAgICBzZWxmLl9kcml2ZXIu
c3RvcCgpCiAKICAgICBkZWYgZ2V0X3Rlc3RfcmVzdWx0KHNlbGYpOgpAQCAtNTAwLDI4ICs1ODEs
MTQgQEAgY2xhc3MgVGVzdFNoZWxsVGhyZWFkKFdhdGNoYWJsZVRocmVhZCk6CiAgICAgICAgIFJl
dHVybnM6IGEgVGVzdFJlc3VsdCBvYmplY3QuCiAgICAgICAgICIiIgogICAgICAgICBzZWxmLl9l
bnN1cmVfZHVtcF9yZW5kZXJfdHJlZV9pc19ydW5uaW5nKCkKLSAgICAgICAgIyBUaGUgcGl4ZWxf
aGFzaCBpcyB1c2VkIHRvIGF2b2lkIGRvaW5nIGFuIGltYWdlIGR1bXAgaWYgdGhlCi0gICAgICAg
ICMgY2hlY2tzdW1zIG1hdGNoLCBzbyBpdCBzaG91bGQgYmUgc2V0IHRvIGEgYmxhbmsgdmFsdWUg
aWYgd2UKLSAgICAgICAgIyBhcmUgZ2VuZXJhdGluZyBhIG5ldyBiYXNlbGluZS4gIChPdGhlcndp
c2UsIGFuIGltYWdlIGZyb20gYQotICAgICAgICAjIHByZXZpb3VzIHJ1biB3aWxsIGJlIGNvcGll
ZCBpbnRvIHRoZSBiYXNlbGluZS4pCi0gICAgICAgIGltYWdlX2hhc2ggPSBfaW1hZ2VfaGFzaCh0
ZXN0X2luZm8sIHNlbGYuX3Rlc3RfYXJncywgc2VsZi5fb3B0aW9ucykKLSAgICAgICAgc3RhcnQg
PSB0aW1lLnRpbWUoKQotCiAgICAgICAgIHRocmVhZF90aW1lb3V0ID0gX21pbGxpc2Vjb25kc190
b19zZWNvbmRzKAogICAgICAgICAgICAgIF9wYWRfdGltZW91dChpbnQodGVzdF9pbmZvLnRpbWVv
dXQpKSkKLSAgICAgICAgc2VsZi5fbmV4dF90aW1lb3V0ID0gc3RhcnQgKyB0aHJlYWRfdGltZW91
dAotCi0gICAgICAgIGNyYXNoLCB0aW1lb3V0LCBhY3R1YWxfY2hlY2tzdW0sIG91dHB1dCwgZXJy
b3IgPSBcCi0gICAgICAgICAgIHNlbGYuX2RyaXZlci5ydW5fdGVzdCh0ZXN0X2luZm8udXJpLCB0
ZXN0X2luZm8udGltZW91dCwgaW1hZ2VfaGFzaCkKLSAgICAgICAgZW5kID0gdGltZS50aW1lKCkK
LQotICAgICAgICByZXN1bHQgPSBfcHJvY2Vzc19vdXRwdXQoc2VsZi5fcG9ydCwgc2VsZi5fb3B0
aW9ucywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfaW5mbywgc2VsZi5f
dGVzdF90eXBlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3Rlc3Rf
YXJncywgY3Jhc2gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0LCBl
bmQgLSBzdGFydCwgYWN0dWFsX2NoZWNrc3VtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgb3V0cHV0LCBlcnJvcikKLSAgICAgICAgc2VsZi5fdGVzdF9yZXN1bHRzLmFwcGVuZChy
ZXN1bHQpCi0gICAgICAgIHJldHVybiByZXN1bHQKKyAgICAgICAgc2VsZi5fbmV4dF90aW1lb3V0
ID0gdGltZS50aW1lKCkgKyB0aHJlYWRfdGltZW91dAorICAgICAgICB0ZXN0X3Jlc3VsdCA9IF9y
dW5fc2luZ2xlX3Rlc3Qoc2VsZi5fcG9ydCwgc2VsZi5fb3B0aW9ucywgdGVzdF9pbmZvLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fdGVzdF90eXBlcywgc2Vs
Zi5fdGVzdF9hcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vs
Zi5fZHJpdmVyKQorICAgICAgICBzZWxmLl90ZXN0X3Jlc3VsdHMuYXBwZW5kKHRlc3RfcmVzdWx0
KQorICAgICAgICByZXR1cm4gdGVzdF9yZXN1bHQKIAogICAgIGRlZiBfZW5zdXJlX2R1bXBfcmVu
ZGVyX3RyZWVfaXNfcnVubmluZyhzZWxmKToKICAgICAgICAgIiIiU3RhcnQgdGhlIHNoYXJlZCBE
dW1wUmVuZGVyVHJlZSwgaWYgaXQncyBub3QgcnVubmluZy4KZGlmZiAtLWdpdCBhL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkgYi9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3Rz
LnB5CmluZGV4IGYzNjBhZGM5YTY1M2M1OGYwYzdmY2MzNzE2NGVkOWMzOGQ5ZWI4NDQuLmU5MmZj
ZDJhMWUxZGNkNjRkNmVhN2FjZjZkNjQ3ZDdhOTE0ZDc4MzUgMTAwNzU1Ci0tLSBhL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkKKysr
IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90
ZXN0cy5weQpAQCAtMTAzLDE4ICsxMDMsNiBAQCBjbGFzcyBUZXN0SW5mbzoKICAgICAgICAgc2Vs
Zi5fcG9ydCA9IHBvcnQKICAgICAgICAgc2VsZi51cmkgPSBwb3J0LmZpbGVuYW1lX3RvX3VyaShm
aWxlbmFtZSkKICAgICAgICAgc2VsZi50aW1lb3V0ID0gdGltZW91dAotICAgICAgICBzZWxmLl9p
bWFnZV9jaGVja3N1bSA9IC0xCi0KLSAgICBkZWYgaW1hZ2VfaGFzaChzZWxmKToKLSAgICAgICAg
IyBSZWFkIHRoZSBpbWFnZV9oYXNoIGxhemlseSB0byByZWR1Y2Ugc3RhcnR1cCB0aW1lLgotICAg
ICAgICAjIFRoaXMgY2xhc3MgaXMgYWNjZXNzZWQgYWNyb3NzIHRocmVhZHMsIGJ1dCBvbmx5IG9u
ZSB0aHJlYWQgc2hvdWxkCi0gICAgICAgICMgZXZlciBiZSBkZWFsaW5nIHdpdGggYW55IGdpdmVu
IFRlc3RJbmZvIHNvIG5vIGxvY2tpbmcgaXMgbmVlZGVkLgotICAgICAgICAjCi0gICAgICAgICMg
Tm90ZSB0aGF0IHdlIHVzZSAtMSB0byBpbmRpY2F0ZSB0aGF0IHdlIGhhdmVuJ3QgcmVhZCB0aGUg
dmFsdWUsCi0gICAgICAgICMgYmVjYXVzZSBleHBlY3RlZF9jaGVja3N1bSgpIHJldHVybnMgYSBz
dHJpbmcgb3IgTm9uZS4KLSAgICAgICAgaWYgc2VsZi5faW1hZ2VfY2hlY2tzdW0gPT0gLTE6Ci0g
ICAgICAgICAgICBzZWxmLl9pbWFnZV9jaGVja3N1bSA9IHNlbGYuX3BvcnQuZXhwZWN0ZWRfY2hl
Y2tzdW0oc2VsZi5maWxlbmFtZSkKLSAgICAgICAgcmV0dXJuIHNlbGYuX2ltYWdlX2NoZWNrc3Vt
CiAKIAogY2xhc3MgUmVzdWx0U3VtbWFyeShvYmplY3QpOgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdGVzdF90eXBlcy9pbWFnZV9kaWZmLnB5
IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdGVzdF90eXBlcy9p
bWFnZV9kaWZmLnB5CmluZGV4IDBiMDU4MDIwYzA4ZjRmNTFjMTE2MjA0ZGM1NGNiZjVkOWMzZTdj
NmYuLjkzMTM5YTBjNjQzN2Y1NGYwNDZjMjU5NmZiYTJkYzhmOWY5ZjM0NTggMTAwNjQ0Ci0tLSBh
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Rlc3RfdHlwZXMvaW1h
Z2VfZGlmZi5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy90ZXN0X3R5cGVzL2ltYWdlX2RpZmYucHkKQEAgLTU0LDExNiArNTQsOTMgQEAgX2xvZyA9IGxv
Z2dpbmcuZ2V0TG9nZ2VyKCJ3ZWJraXRweS5sYXlvdXRfdGVzdHMudGVzdF90eXBlcy5pbWFnZV9k
aWZmIikKIAogY2xhc3MgSW1hZ2VEaWZmKHRlc3RfdHlwZV9iYXNlLlRlc3RUeXBlQmFzZSk6CiAK
LSAgICBkZWYgX2NvcHlfb3V0cHV0X3BuZyhzZWxmLCB0ZXN0X2ZpbGVuYW1lLCBzb3VyY2VfaW1h
Z2UsIGV4dGVuc2lvbik6Ci0gICAgICAgICIiIkNvcGllcyByZXN1bHQgZmlsZXMgaW50byB0aGUg
b3V0cHV0IGRpcmVjdG9yeSB3aXRoIGFwcHJvcHJpYXRlCi0gICAgICAgIG5hbWVzLgotCi0gICAg
ICAgIEFyZ3M6Ci0gICAgICAgICAgdGVzdF9maWxlbmFtZTogdGhlIHRlc3QgZmlsZW5hbWUKLSAg
ICAgICAgICBzb3VyY2VfZmlsZTogcGF0aCB0byB0aGUgaW1hZ2UgZmlsZSAoZWl0aGVyIGFjdHVh
bCBvciBleHBlY3RlZCkKLSAgICAgICAgICBleHRlbnNpb246IGV4dGVuc2lvbiB0byBpbmRpY2F0
ZSAtYWN0dWFsLnBuZyBvciAtZXhwZWN0ZWQucG5nCi0gICAgICAgICIiIgotICAgICAgICBzZWxm
Ll9tYWtlX291dHB1dF9kaXJlY3RvcnkodGVzdF9maWxlbmFtZSkKLSAgICAgICAgZGVzdF9pbWFn
ZSA9IHNlbGYub3V0cHV0X2ZpbGVuYW1lKHRlc3RfZmlsZW5hbWUsIGV4dGVuc2lvbikKLQotICAg
ICAgICBpZiBvcy5wYXRoLmV4aXN0cyhzb3VyY2VfaW1hZ2UpOgotICAgICAgICAgICAgc2h1dGls
LmNvcHlmaWxlKHNvdXJjZV9pbWFnZSwgZGVzdF9pbWFnZSkKLQotICAgIGRlZiBfc2F2ZV9iYXNl
bGluZV9maWxlcyhzZWxmLCBmaWxlbmFtZSwgcG5nX3BhdGgsIGNoZWNrc3VtLAorICAgIGRlZiBf
c2F2ZV9iYXNlbGluZV9maWxlcyhzZWxmLCBmaWxlbmFtZSwgaW1hZ2UsIGltYWdlX2hhc2gsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlX25ld19iYXNlbGluZSk6CiAgICAg
ICAgICIiIlNhdmVzIG5ldyBiYXNlbGluZXMgZm9yIHRoZSBQTkcgYW5kIGNoZWNrc3VtLgogCiAg
ICAgICAgIEFyZ3M6CiAgICAgICAgICAgZmlsZW5hbWU6IHRlc3QgZmlsZW5hbWUKLSAgICAgICAg
ICBwbmdfcGF0aDogcGF0aCB0byB0aGUgYWN0dWFsIFBORyByZXN1bHQgZmlsZQotICAgICAgICAg
IGNoZWNrc3VtOiB2YWx1ZSBvZiB0aGUgYWN0dWFsIGNoZWNrc3VtIHJlc3VsdAorICAgICAgICAg
IGltYWdlOiBhIGltYWdlIG91dHB1dAorICAgICAgICAgIGltYWdlX2hhc2g6IGEgY2hlY2tzdW0g
b2YgdGhlIGltYWdlCiAgICAgICAgICAgZ2VuZXJhdGVfbmV3X2Jhc2VsaW5lOiB3aGV0aGVyIHRv
IGdlbmVyYXRlIGEgbmV3LCBwbGF0Zm9ybS1zcGVjaWZpYwogICAgICAgICAgICAgYmFzZWxpbmUs
IG9yIHVwZGF0ZSB0aGUgZXhpc3Rpbmcgb25lCiAgICAgICAgICIiIgotICAgICAgICB3aXRoIG9w
ZW4ocG5nX3BhdGgsICJyYiIpIGFzIHBuZ19maWxlOgotICAgICAgICAgICAgcG5nX2RhdGEgPSBw
bmdfZmlsZS5yZWFkKCkKLSAgICAgICAgc2VsZi5fc2F2ZV9iYXNlbGluZV9kYXRhKGZpbGVuYW1l
LCBwbmdfZGF0YSwgIi5wbmciLCBlbmNvZGluZz1Ob25lLAorICAgICAgICBzZWxmLl9zYXZlX2Jh
c2VsaW5lX2RhdGEoZmlsZW5hbWUsIGltYWdlLCAiLnBuZyIsIGVuY29kaW5nPU5vbmUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZV9uZXdfYmFzZWxpbmU9Z2VuZXJh
dGVfbmV3X2Jhc2VsaW5lKQotICAgICAgICBzZWxmLl9zYXZlX2Jhc2VsaW5lX2RhdGEoZmlsZW5h
bWUsIGNoZWNrc3VtLCAiLmNoZWNrc3VtIiwKKyAgICAgICAgc2VsZi5fc2F2ZV9iYXNlbGluZV9k
YXRhKGZpbGVuYW1lLCBpbWFnZV9oYXNoLCAiLmNoZWNrc3VtIiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGVuY29kaW5nPSJhc2NpaSIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBnZW5lcmF0ZV9uZXdfYmFzZWxpbmU9Z2VuZXJhdGVfbmV3X2Jhc2VsaW5lKQog
Ci0gICAgZGVmIF9jcmVhdGVfaW1hZ2VfZGlmZihzZWxmLCBwb3J0LCBmaWxlbmFtZSwgY29uZmln
dXJhdGlvbik6CisgICAgZGVmIF9jb3B5X2ltYWdlKHNlbGYsIGZpbGVuYW1lLCBhY3R1YWxfaW1h
Z2UsIGV4cGVjdGVkX2ltYWdlKToKKyAgICAgICAgc2VsZi53cml0ZV9vdXRwdXRfZmlsZXMoZmls
ZW5hbWUsICcucG5nJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0PWFj
dHVhbF9pbWFnZSwgZXhwZWN0ZWQ9ZXhwZWN0ZWRfaW1hZ2UsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGVuY29kaW5nPU5vbmUsIHByaW50X3RleHRfZGlmZnM9RmFsc2UpCisKKyAg
ICBkZWYgX2NvcHlfaW1hZ2VfaGFzaChzZWxmLCBmaWxlbmFtZSwgYWN0dWFsX2ltYWdlX2hhc2gs
IGV4cGVjdGVkX2ltYWdlX2hhc2gpOgorICAgICAgICBzZWxmLndyaXRlX291dHB1dF9maWxlcyhm
aWxlbmFtZSwgJy5jaGVja3N1bScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFj
dHVhbF9pbWFnZV9oYXNoLCBleHBlY3RlZF9pbWFnZV9oYXNoLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBlbmNvZGluZz0iYXNjaWkiLCBwcmludF90ZXh0X2RpZmZzPUZhbHNlKQor
CisgICAgZGVmIF9jcmVhdGVfZGlmZl9pbWFnZShzZWxmLCBwb3J0LCBmaWxlbmFtZSwgYWN0dWFs
X2ltYWdlLCBleHBlY3RlZF9pbWFnZSk6CiAgICAgICAgICIiIkNyZWF0ZXMgdGhlIHZpc3VhbCBk
aWZmIG9mIHRoZSBleHBlY3RlZC9hY3R1YWwgUE5Hcy4KIAotICAgICAgICBBcmdzOgotICAgICAg
ICAgIGZpbGVuYW1lOiB0aGUgbmFtZSBvZiB0aGUgdGVzdAotICAgICAgICAgIGNvbmZpZ3VyYXRp
b246IERlYnVnIG9yIFJlbGVhc2UKLSAgICAgICAgUmV0dXJucyBUcnVlIGlmIHRoZSBmaWxlcyBh
cmUgZGlmZmVyZW50LCBGYWxzZSBpZiB0aGV5IG1hdGNoCisgICAgICAgIFJldHVybnMgVHJ1ZSBp
ZiB0aGUgaW1hZ2VzIGFyZSBkaWZmZXJlbnQuCiAgICAgICAgICIiIgogICAgICAgICBkaWZmX2Zp
bGVuYW1lID0gc2VsZi5vdXRwdXRfZmlsZW5hbWUoZmlsZW5hbWUsCi0gICAgICAgICAgc2VsZi5G
SUxFTkFNRV9TVUZGSVhfQ09NUEFSRSkKLSAgICAgICAgYWN0dWFsX2ZpbGVuYW1lID0gc2VsZi5v
dXRwdXRfZmlsZW5hbWUoZmlsZW5hbWUsCi0gICAgICAgICAgc2VsZi5GSUxFTkFNRV9TVUZGSVhf
QUNUVUFMICsgJy5wbmcnKQotICAgICAgICBleHBlY3RlZF9maWxlbmFtZSA9IHNlbGYub3V0cHV0
X2ZpbGVuYW1lKGZpbGVuYW1lLAotICAgICAgICAgIHNlbGYuRklMRU5BTUVfU1VGRklYX0VYUEVD
VEVEICsgJy5wbmcnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2VsZi5GSUxFTkFNRV9TVUZGSVhfQ09NUEFSRSkKKyAgICAgICAgcmV0dXJuIHBvcnQuZGlm
Zl9pbWFnZShhY3R1YWxfaW1hZ2UsIGV4cGVjdGVkX2ltYWdlLCBkaWZmX2ZpbGVuYW1lKQogCi0g
ICAgICAgIGV4cGVjdGVkX2ltYWdlID0gcG9ydC5leHBlY3RlZF9pbWFnZShmaWxlbmFtZSkKLSAg
ICAgICAgd2l0aCBjb2RlY3Mub3BlbihhY3R1YWxfZmlsZW5hbWUsICdyK2InLCBOb25lKSBhcyBm
aWxlOgotICAgICAgICAgICAgYWN0dWFsX2ltYWdlID0gZmlsZS5yZWFkKCkKLQotICAgICAgICBy
ZXN1bHQgPSBwb3J0LmRpZmZfaW1hZ2UoZXhwZWN0ZWRfaW1hZ2UsIGFjdHVhbF9pbWFnZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZmZfZmlsZW5hbWUpCi0gICAgICAgIHJl
dHVybiByZXN1bHQKLQotICAgIGRlZiBjb21wYXJlX291dHB1dChzZWxmLCBwb3J0LCBmaWxlbmFt
ZSwgb3V0cHV0LCB0ZXN0X2FyZ3MsIGNvbmZpZ3VyYXRpb24pOgorICAgIGRlZiBjb21wYXJlX291
dHB1dChzZWxmLCBwb3J0LCBmaWxlbmFtZSwgdGVzdF9hcmdzLCBhY3R1YWxfdGVzdF9vdXRwdXQs
CisgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF90ZXN0X291dHB1dCk6CiAgICAgICAg
ICIiIkltcGxlbWVudGF0aW9uIG9mIENvbXBhcmVPdXRwdXQgdGhhdCBjaGVja3MgdGhlIG91dHB1
dCBpbWFnZSBhbmQKICAgICAgICAgY2hlY2tzdW0gYWdhaW5zdCB0aGUgZXhwZWN0ZWQgZmlsZXMg
ZnJvbSB0aGUgTGF5b3V0VGVzdCBkaXJlY3RvcnkuCiAgICAgICAgICIiIgogICAgICAgICBmYWls
dXJlcyA9IFtdCiAKICAgICAgICAgIyBJZiB3ZSBkaWRuJ3QgcHJvZHVjZSBhIGhhc2ggZmlsZSwg
dGhpcyB0ZXN0IG11c3QgYmUgdGV4dC1vbmx5LgotICAgICAgICBpZiB0ZXN0X2FyZ3MuaGFzaCBp
cyBOb25lOgorICAgICAgICBpZiBhY3R1YWxfdGVzdF9vdXRwdXQuaW1hZ2VfaGFzaCBpcyBOb25l
OgogICAgICAgICAgICAgcmV0dXJuIGZhaWx1cmVzCiAKICAgICAgICAgIyBJZiB3ZSdyZSBnZW5l
cmF0aW5nIGEgbmV3IGJhc2VsaW5lLCB3ZSBwYXNzLgogICAgICAgICBpZiB0ZXN0X2FyZ3MubmV3
X2Jhc2VsaW5lIG9yIHRlc3RfYXJncy5yZXNldF9yZXN1bHRzOgotICAgICAgICAgICAgc2VsZi5f
c2F2ZV9iYXNlbGluZV9maWxlcyhmaWxlbmFtZSwgdGVzdF9hcmdzLnBuZ19wYXRoLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2FyZ3MuaGFzaCwgdGVzdF9hcmdz
Lm5ld19iYXNlbGluZSkKKyAgICAgICAgICAgIHNlbGYuX3NhdmVfYmFzZWxpbmVfZmlsZXMoZmls
ZW5hbWUsIGFjdHVhbF90ZXN0X291dHB1dC5pbWFnZV9oYXNoLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhY3R1YWxfdGVzdF9vdXRwdXQuaW1hZ2UsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfYXJncy5uZXdfYmFzZWxpbmUpCiAgICAg
ICAgICAgICByZXR1cm4gZmFpbHVyZXMKIAotICAgICAgICAjIENvbXBhcmUgaGFzaGVzLgotICAg
ICAgICBleHBlY3RlZF9oYXNoID0gc2VsZi5fcG9ydC5leHBlY3RlZF9jaGVja3N1bShmaWxlbmFt
ZSkKLSAgICAgICAgZXhwZWN0ZWRfcG5nID0gc2VsZi5fcG9ydC5leHBlY3RlZF9pbWFnZShmaWxl
bmFtZSkKLQotICAgICAgICBpZiBub3QgZXhwZWN0ZWRfcG5nOgorICAgICAgICBpZiBub3QgZXhw
ZWN0ZWRfdGVzdF9vdXRwdXQuaW1hZ2U6CiAgICAgICAgICAgICAjIFJlcG9ydCBhIG1pc3Npbmcg
ZXhwZWN0ZWQgUE5HIGZpbGUuCi0gICAgICAgICAgICBzZWxmLndyaXRlX291dHB1dF9maWxlcyhm
aWxlbmFtZSwgJy5jaGVja3N1bScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0ZXN0X2FyZ3MuaGFzaCwgZXhwZWN0ZWRfaGFzaCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGVuY29kaW5nPSJhc2NpaSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwcmludF90ZXh0X2RpZmZzPUZhbHNlKQotICAgICAgICAgICAgc2VsZi5fY29w
eV9vdXRwdXRfcG5nKGZpbGVuYW1lLCB0ZXN0X2FyZ3MucG5nX3BhdGgsICctYWN0dWFsLnBuZycp
CisgICAgICAgICAgICBzZWxmLl9jb3B5X2ltYWdlKGZpbGVuYW1lLCBhY3R1YWxfdGVzdF9vdXRw
dXQuaW1hZ2UsIGV4cGVjdGVkX2ltYWdlPU5vbmUpCisgICAgICAgICAgICBzZWxmLl9jb3B5X2lt
YWdlX2hhc2goZmlsZW5hbWUsIGFjdHVhbF90ZXN0X291dHB1dC5pbWFnZV9oYXNoLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX3Rlc3Rfb3V0cHV0LmltYWdlX2hh
c2gpCiAgICAgICAgICAgICBmYWlsdXJlcy5hcHBlbmQodGVzdF9mYWlsdXJlcy5GYWlsdXJlTWlz
c2luZ0ltYWdlKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFpbHVyZXMKLSAgICAgICAgZWxpZiB0
ZXN0X2FyZ3MuaGFzaCA9PSBleHBlY3RlZF9oYXNoOgorICAgICAgICBpZiBub3QgZXhwZWN0ZWRf
dGVzdF9vdXRwdXQuaW1hZ2VfaGFzaDoKKyAgICAgICAgICAgICMgUmVwb3J0IGEgbWlzc2luZyBl
eHBlY3RlZCBjaGVja3N1bSBmaWxlLgorICAgICAgICAgICAgc2VsZi5fY29weV9pbWFnZShmaWxl
bmFtZSwgYWN0dWFsX3Rlc3Rfb3V0cHV0LmltYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBleHBlY3RlZF90ZXN0X291dHB1dC5pbWFnZSkKKyAgICAgICAgICAgIHNlbGYuX2NvcHlf
aW1hZ2VfaGFzaChmaWxlbmFtZSwgYWN0dWFsX3Rlc3Rfb3V0cHV0LmltYWdlX2hhc2gsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfaW1hZ2VfaGFzaD1Ob25lKQor
ICAgICAgICAgICAgZmFpbHVyZXMuYXBwZW5kKHRlc3RfZmFpbHVyZXMuRmFpbHVyZU1pc3NpbmdJ
bWFnZUhhc2goKSkKKyAgICAgICAgICAgIHJldHVybiBmYWlsdXJlcworCisgICAgICAgIGlmIGFj
dHVhbF90ZXN0X291dHB1dC5pbWFnZV9oYXNoID09IGV4cGVjdGVkX3Rlc3Rfb3V0cHV0LmltYWdl
X2hhc2g6CiAgICAgICAgICAgICAjIEhhc2ggbWF0Y2hlZCAobm8gZGlmZiBuZWVkZWQsIG9rYXkg
dG8gcmV0dXJuKS4KICAgICAgICAgICAgIHJldHVybiBmYWlsdXJlcwogCi0gICAgICAgIHNlbGYu
d3JpdGVfb3V0cHV0X2ZpbGVzKGZpbGVuYW1lLCAnLmNoZWNrc3VtJywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGVzdF9hcmdzLmhhc2gsIGV4cGVjdGVkX2hhc2gsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nPSJhc2NpaSIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHByaW50X3RleHRfZGlmZnM9RmFsc2UpCi0KLSAgICAgICAgIyBG
SVhNRTogY29tYmluZSBuZXh0IHR3byBsaW5lcwotICAgICAgICBzZWxmLl9jb3B5X291dHB1dF9w
bmcoZmlsZW5hbWUsIHRlc3RfYXJncy5wbmdfcGF0aCwgJy1hY3R1YWwucG5nJykKLSAgICAgICAg
c2VsZi53cml0ZV9vdXRwdXRfZmlsZXMoZmlsZW5hbWUsICcucG5nJywgb3V0cHV0PU5vbmUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkPWV4cGVjdGVkX3BuZywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc9Tm9uZSwgcHJpbnRfdGV4dF9k
aWZmcz1GYWxzZSkKKyAgICAgICAgc2VsZi5fY29weV9pbWFnZShmaWxlbmFtZSwgYWN0dWFsX3Rl
c3Rfb3V0cHV0LmltYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX3Rlc3Rf
b3V0cHV0LmltYWdlKQorICAgICAgICBzZWxmLl9jb3B5X2ltYWdlX2hhc2goZmlsZW5hbWUsIGFj
dHVhbF90ZXN0X291dHB1dC5pbWFnZV9oYXNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZXhwZWN0ZWRfdGVzdF9vdXRwdXQuaW1hZ2VfaGFzaCkKIAogICAgICAgICAjIEV2ZW4gdGhv
dWdoIHdlIG9ubHkgdXNlIHRoZSByZXN1bHQgaW4gb25lIGNvZGVwYXRoIGJlbG93IGJ1dCB3ZQog
ICAgICAgICAjIHN0aWxsIG5lZWQgdG8gY2FsbCBDcmVhdGVJbWFnZURpZmYgZm9yIG90aGVyIGNv
ZGVwYXRocy4KLSAgICAgICAgaW1hZ2VzX2FyZV9kaWZmZXJlbnQgPSBzZWxmLl9jcmVhdGVfaW1h
Z2VfZGlmZihwb3J0LCBmaWxlbmFtZSwgY29uZmlndXJhdGlvbikKLSAgICAgICAgaWYgbm90IGV4
cGVjdGVkX2hhc2g6Ci0gICAgICAgICAgICBmYWlsdXJlcy5hcHBlbmQodGVzdF9mYWlsdXJlcy5G
YWlsdXJlTWlzc2luZ0ltYWdlSGFzaCgpKQotICAgICAgICBlbGlmIHRlc3RfYXJncy5oYXNoICE9
IGV4cGVjdGVkX2hhc2g6Ci0gICAgICAgICAgICBpZiBpbWFnZXNfYXJlX2RpZmZlcmVudDoKLSAg
ICAgICAgICAgICAgICBmYWlsdXJlcy5hcHBlbmQodGVzdF9mYWlsdXJlcy5GYWlsdXJlSW1hZ2VI
YXNoTWlzbWF0Y2goKSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZmFpbHVy
ZXMuYXBwZW5kKHRlc3RfZmFpbHVyZXMuRmFpbHVyZUltYWdlSGFzaEluY29ycmVjdCgpKQorICAg
ICAgICBpbWFnZXNfYXJlX2RpZmZlcmVudCA9IHNlbGYuX2NyZWF0ZV9kaWZmX2ltYWdlKHBvcnQs
IGZpbGVuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGFjdHVhbF90ZXN0X291dHB1dC5pbWFnZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF90ZXN0X291dHB1dC5p
bWFnZSkKKyAgICAgICAgaWYgbm90IGltYWdlc19hcmVfZGlmZmVyZW50OgorICAgICAgICAgICAg
ZmFpbHVyZXMuYXBwZW5kKHRlc3RfZmFpbHVyZXMuRmFpbHVyZUltYWdlSGFzaEluY29ycmVjdCgp
KQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZmFpbHVyZXMuYXBwZW5kKHRlc3RfZmFpbHVy
ZXMuRmFpbHVyZUltYWdlSGFzaE1pc21hdGNoKCkpCiAKICAgICAgICAgcmV0dXJuIGZhaWx1cmVz
CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy90
ZXN0X3R5cGVzL3Rlc3RfdHlwZV9iYXNlLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvdGVzdF90eXBlcy90ZXN0X3R5cGVfYmFzZS5weQppbmRleCBkY2M2NGEz
NWIzMzlkZjk4ODBhYWMwNTM4ZjdlODU1OTcyNTgwYjEzLi40Yjk2YjNhYmZlMWI1OTUxMjI4MTE1
MGZkNmZlZWEwNjAzNTQ0YTkzIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy90ZXN0X3R5cGVzL3Rlc3RfdHlwZV9iYXNlLnB5CisrKyBiL1dlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Rlc3RfdHlwZXMvdGVzdF90eXBl
X2Jhc2UucHkKQEAgLTE0MCwxOCArMTQwLDIyIEBAIGNsYXNzIFRlc3RUeXBlQmFzZShvYmplY3Qp
OgogICAgICAgICAgICAgc2VsZi5fcG9ydC5yZWxhdGl2ZV90ZXN0X2ZpbGVuYW1lKGZpbGVuYW1l
KSkKICAgICAgICAgcmV0dXJuIG9zLnBhdGguc3BsaXRleHQob3V0cHV0X2ZpbGVuYW1lKVswXSAr
IG1vZGlmaWVyCiAKLSAgICBkZWYgY29tcGFyZV9vdXRwdXQoc2VsZiwgcG9ydCwgZmlsZW5hbWUs
IG91dHB1dCwgdGVzdF9hcmdzLCBjb25maWd1cmF0aW9uKToKKyAgICBkZWYgY29tcGFyZV9vdXRw
dXQoc2VsZiwgcG9ydCwgZmlsZW5hbWUsIHRlc3RfYXJncywgYWN0dWFsX3Rlc3Rfb3V0cHV0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfdGVzdF9vdXRwdXQpOgogICAgICAgICAi
IiJNZXRob2QgdGhhdCBjb21wYXJlcyB0aGUgb3V0cHV0IGZyb20gdGhlIHRlc3Qgd2l0aCB0aGUK
ICAgICAgICAgZXhwZWN0ZWQgdmFsdWUuCiAKICAgICAgICAgVGhpcyBpcyBhbiBhYnN0cmFjdCBt
ZXRob2QgdG8gYmUgaW1wbGVtZW50ZWQgYnkgYWxsIHN1YiBjbGFzc2VzLgogCiAgICAgICAgIEFy
Z3M6CisgICAgICAgICAgcG9ydDogb2JqZWN0IGltcGxlbWVudGluZyBwb3J0LXNwZWNpZmljIGlu
Zm9ybWF0aW9uIGFuZCBtZXRob2RzCiAgICAgICAgICAgZmlsZW5hbWU6IGFic29sdXRlIGZpbGVu
YW1lIHRvIHRlc3QgZmlsZQotICAgICAgICAgIG91dHB1dDogYSBzdHJpbmcgY29udGFpbmluZyB0
aGUgb3V0cHV0IG9mIHRoZSB0ZXN0CiAgICAgICAgICAgdGVzdF9hcmdzOiBhIFRlc3RBcmd1bWVu
dHMgb2JqZWN0IGhvbGRpbmcgb3B0aW9uYWwgYWRkaXRpb25hbAogICAgICAgICAgICAgICBhcmd1
bWVudHMKLSAgICAgICAgICBjb25maWd1cmF0aW9uOiBEZWJ1ZyBvciBSZWxlYXNlCisgICAgICAg
ICAgYWN0dWFsX3Rlc3Rfb3V0cHV0OiBhIFRlc3RPdXRwdXQgb2JqZWN0IHdoaWNoIHJlcHJlc2Vu
dHMgYWN0dWFsIHRlc3QKKyAgICAgICAgICAgICAgb3V0cHV0CisgICAgICAgICAgZXhwZWN0ZWRf
dGVzdF9vdXRwdXQ6IGEgVGVzdE91dHB1dCBvYmplY3Qgd2hpY2ggcmVwcmVzZW50cyBhIGV4cGVj
dGVkCisgICAgICAgICAgICAgIHRlc3Qgb3V0cHV0CiAKICAgICAgICAgUmV0dXJuOgogICAgICAg
ICAgIGEgbGlzdCBvZiBUZXN0RmFpbHVyZSBvYmplY3RzLCBlbXB0eSBpZiB0aGUgdGVzdCBwYXNz
ZXMKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3Rlc3RfdHlwZXMvdGV4dF9kaWZmLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvdGVzdF90eXBlcy90ZXh0X2RpZmYucHkKaW5kZXggNGMzMmYwZDAyMzQ3M2M2
M2I4ZTQ3NGY3NzA5M2EwZmRmYTBhYTMzNy4uNjZlNDJiYTE0Y2E4MjZmNDU0MTFjNTE5NTQyODUz
MmIwZmE1YmUxMSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvdGVzdF90eXBlcy90ZXh0X2RpZmYucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdGVzdF90eXBlcy90ZXh0X2RpZmYucHkKQEAgLTU1LDEz
ICs1NSw4IEBAIGNsYXNzIFRlc3RUZXh0RGlmZih0ZXN0X3R5cGVfYmFzZS5UZXN0VHlwZUJhc2Up
OgogICAgICAgICAgICAgICJcclxuIiwgIlxuIikKICAgICAgICAgcmV0dXJuIG5vcm0gKyAiXG4i
CiAKLSAgICBkZWYgX2dldF9ub3JtYWxpemVkX2V4cGVjdGVkX3RleHQoc2VsZiwgZmlsZW5hbWUp
OgotICAgICAgICAiIiJHaXZlbiB0aGUgZmlsZW5hbWUgb2YgdGhlIHRlc3QsIHJlYWQgdGhlIGV4
cGVjdGVkIG91dHB1dCBmcm9tIGEgZmlsZQotICAgICAgICBhbmQgbm9ybWFsaXplIHRoZSB0ZXh0
LiAgUmV0dXJucyBhIHN0cmluZyB3aXRoIHRoZSBleHBlY3RlZCB0ZXh0LCBvciAnJwotICAgICAg
ICBpZiB0aGUgZXhwZWN0ZWQgb3V0cHV0IGZpbGUgd2FzIG5vdCBmb3VuZC4iIiIKLSAgICAgICAg
cmV0dXJuIHNlbGYuX3BvcnQuZXhwZWN0ZWRfdGV4dChmaWxlbmFtZSkKLQotICAgIGRlZiBjb21w
YXJlX291dHB1dChzZWxmLCBwb3J0LCBmaWxlbmFtZSwgb3V0cHV0LCB0ZXN0X2FyZ3MsIGNvbmZp
Z3VyYXRpb24pOgorICAgIGRlZiBjb21wYXJlX291dHB1dChzZWxmLCBwb3J0LCBmaWxlbmFtZSwg
dGVzdF9hcmdzLCBhY3R1YWxfdGVzdF9vdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgICBl
eHBlY3RlZF90ZXN0X291dHB1dCk6CiAgICAgICAgICIiIkltcGxlbWVudGF0aW9uIG9mIENvbXBh
cmVPdXRwdXQgdGhhdCBjaGVja3MgdGhlIG91dHB1dCB0ZXh0IGFnYWluc3QKICAgICAgICAgdGhl
IGV4cGVjdGVkIHRleHQgZnJvbSB0aGUgTGF5b3V0VGVzdCBkaXJlY3RvcnkuIiIiCiAgICAgICAg
IGZhaWx1cmVzID0gW10KQEAgLTc2LDE3ICs3MSwxOCBAQCBjbGFzcyBUZXN0VGV4dERpZmYodGVz
dF90eXBlX2Jhc2UuVGVzdFR5cGVCYXNlKToKICAgICAgICAgICAgIHJldHVybiBmYWlsdXJlcwog
CiAgICAgICAgICMgTm9ybWFsaXplIHRleHQgdG8gZGlmZgotICAgICAgICBvdXRwdXQgPSBzZWxm
Ll9nZXRfbm9ybWFsaXplZF9vdXRwdXRfdGV4dChvdXRwdXQpCi0gICAgICAgIGV4cGVjdGVkID0g
c2VsZi5fZ2V0X25vcm1hbGl6ZWRfZXhwZWN0ZWRfdGV4dChmaWxlbmFtZSkKKyAgICAgICAgYWN0
dWFsX3RleHQgPSBzZWxmLl9nZXRfbm9ybWFsaXplZF9vdXRwdXRfdGV4dChhY3R1YWxfdGVzdF9v
dXRwdXQudGV4dCkKKyAgICAgICAgIyBBc3N1bWluZyBleHBlY3RlZF90ZXh0IGlzIGFscmVhZHkg
bm9ybWFsaXplZC4KKyAgICAgICAgZXhwZWN0ZWRfdGV4dCA9IGV4cGVjdGVkX3Rlc3Rfb3V0cHV0
LnRleHQKIAogICAgICAgICAjIFdyaXRlIG91dHB1dCBmaWxlcyBmb3IgbmV3IHRlc3RzLCB0b28u
Ci0gICAgICAgIGlmIHBvcnQuY29tcGFyZV90ZXh0KG91dHB1dCwgZXhwZWN0ZWQpOgorICAgICAg
ICBpZiBwb3J0LmNvbXBhcmVfdGV4dChhY3R1YWxfdGV4dCwgZXhwZWN0ZWRfdGV4dCk6CiAgICAg
ICAgICAgICAjIFRleHQgZG9lc24ndCBtYXRjaCwgd3JpdGUgb3V0cHV0IGZpbGVzLgotICAgICAg
ICAgICAgc2VsZi53cml0ZV9vdXRwdXRfZmlsZXMoZmlsZW5hbWUsICIudHh0Iiwgb3V0cHV0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQsIGVuY29kaW5nPU5v
bmUsCisgICAgICAgICAgICBzZWxmLndyaXRlX291dHB1dF9maWxlcyhmaWxlbmFtZSwgIi50eHQi
LCBhY3R1YWxfdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVj
dGVkX3RleHQsIGVuY29kaW5nPU5vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwcmludF90ZXh0X2RpZmZzPVRydWUpCiAKLSAgICAgICAgICAgIGlmIGV4cGVjdGVkID09
ICcnOgorICAgICAgICAgICAgaWYgZXhwZWN0ZWRfdGV4dCA9PSAnJzoKICAgICAgICAgICAgICAg
ICBmYWlsdXJlcy5hcHBlbmQodGVzdF9mYWlsdXJlcy5GYWlsdXJlTWlzc2luZ1Jlc3VsdCgpKQog
ICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBmYWlsdXJlcy5hcHBlbmQodGVzdF9m
YWlsdXJlcy5GYWlsdXJlVGV4dE1pc21hdGNoKCkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74049</attachid>
            <date>2010-11-16 15:46:08 -0800</date>
            <delta_ts>2010-11-17 09:35:17 -0800</delta_ts>
            <desc>updated-with-comments</desc>
            <filename>bug-49431-20101117084605.patch</filename>
            <type>text/plain</type>
            <size>35845</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBkMzE2NzE3ZGFmOWU5NDkzM2RmZDVhNzBiNDllNzlmZTI5ZGUyY2Y5Li41ZTEyM2Qy
NzRjZDQ0NzY3MDY0ODkzMmI3OTA0NjUyOGUyZGEzODM4IDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAK
KzIwMTAtMTEtMTYgIEhheWF0byBJdG8gIDxoYXlhdG9AY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFJlZmFjdG9yIFRlc3RUeXBlQmFzZS5jb21wYXJlX291dHB1dCgpLgorCisgICAgICAgIEludHJv
ZHVjZSBhIFRlc3RPdXRwdXQgY2xhc3MgYW5kIHVwZGF0ZSBjb21wYXJlX291dHB1dCgpIG9mIGVh
Y2ggdGVzdAorICAgICAgICB0eXBlcyBzbyB0aGF0IHRoZXkgY2FuIHRha2UgYm90aCBhY3R1YWwg
YW5kIGV4cGVjdGVkIFRlc3RPdXRwdXQgb2JqZWN0cy4KKworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDk0MzEKKworICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2R1bXBfcmVuZGVyX3RyZWVfdGhyZWFk
LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNr
YWdlL3Rlc3Rfb3V0cHV0LnB5OiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L2Jhc2UucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L2RyeXJ1bi5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L3Rlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC93ZWJraXQucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy90ZXN0X3R5cGVzL2ltYWdlX2RpZmYucHk6CisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdGVzdF90eXBlcy90ZXN0X3R5cGVfYmFzZS5weToKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy90ZXN0X3R5cGVzL3RleHRfZGlm
Zi5weToKKwogMjAxMC0xMS0xNSAgQW5kcmFzIEJlY3NpICA8YWJlY3NpQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KZGlmZiAtLWdpdCBhL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2R1bXBfcmVu
ZGVyX3RyZWVfdGhyZWFkLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvbGF5b3V0X3BhY2thZ2UvZHVtcF9yZW5kZXJfdHJlZV90aHJlYWQucHkKaW5kZXggOWYy
ZGU3ZTQ3NmI3YjVjMGI3ZjExZWRjNDZlODgyNTQ3NGYzZjg1Zi4uNDA2ZDE2ODRhNTU5ZTNhYjIw
YzUxYmZlYThhYjhlYzA2MTdiZmMzMiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvZHVtcF9yZW5kZXJfdHJlZV90aHJl
YWQucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5
b3V0X3BhY2thZ2UvZHVtcF9yZW5kZXJfdHJlZV90aHJlYWQucHkKQEAgLTUxLDYgKzUxLDcgQEAg
aW1wb3J0IHRpbWUKIGltcG9ydCB0cmFjZWJhY2sKIAogaW1wb3J0IHRlc3RfZmFpbHVyZXMKK2lt
cG9ydCB0ZXN0X291dHB1dAogaW1wb3J0IHRlc3RfcmVzdWx0cwogCiBfbG9nID0gbG9nZ2luZy5n
ZXRMb2dnZXIoIndlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZS4iCkBAIC03NCw5
ICs3NSwxNCBAQCBkZWYgbG9nX3N0YWNrKHN0YWNrKToKICAgICAgICAgICAgIF9sb2cuZXJyb3Io
JyAgJXMnICUgbGluZS5zdHJpcCgpKQogCiAKK2RlZiBfZXhwZWN0ZWRfdGVzdF9vdXRwdXQocG9y
dCwgZmlsZW5hbWUpOgorICAgICIiIlJldHVybnMgYW4gZXhwZWN0ZWQgVGVzdE91dHB1dCBvYmpl
Y3QuIiIiCisgICAgcmV0dXJuIHRlc3Rfb3V0cHV0LlRlc3RPdXRwdXQocG9ydC5leHBlY3RlZF90
ZXh0KGZpbGVuYW1lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3J0LmV4
cGVjdGVkX2ltYWdlKGZpbGVuYW1lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwb3J0LmV4cGVjdGVkX2NoZWNrc3VtKGZpbGVuYW1lKSkKKwogZGVmIF9wcm9jZXNzX291dHB1
dChwb3J0LCBvcHRpb25zLCB0ZXN0X2luZm8sIHRlc3RfdHlwZXMsIHRlc3RfYXJncywKLSAgICAg
ICAgICAgICAgICAgICAgY3Jhc2gsIHRpbWVvdXQsIHRlc3RfcnVuX3RpbWUsIGFjdHVhbF9jaGVj
a3N1bSwKLSAgICAgICAgICAgICAgICAgICAgb3V0cHV0LCBlcnJvcik6CisgICAgICAgICAgICAg
ICAgICAgIHRlc3Rfb3V0cHV0KToKICAgICAiIiJSZWNlaXZlcyB0aGUgb3V0cHV0IGZyb20gYSBE
dW1wUmVuZGVyVHJlZSBwcm9jZXNzLCBzdWJqZWN0cyBpdCB0byBhCiAgICAgbnVtYmVyIG9mIHRl
c3RzLCBhbmQgcmV0dXJucyBhIGxpc3Qgb2YgZmFpbHVyZSB0eXBlcyB0aGUgdGVzdCBwcm9kdWNl
ZC4KIApAQCAtODQsMjcgKzkwLDIzIEBAIGRlZiBfcHJvY2Vzc19vdXRwdXQocG9ydCwgb3B0aW9u
cywgdGVzdF9pbmZvLCB0ZXN0X3R5cGVzLCB0ZXN0X2FyZ3MsCiAgICAgICBwb3J0OiBwb3J0LXNw
ZWNpZmljIGhvb2tzCiAgICAgICBvcHRpb25zOiBjb21tYW5kIGxpbmUgb3B0aW9ucyBhcmd1bWVu
dCBmcm9tIG9wdHBhcnNlCiAgICAgICBwcm9jOiBhbiBhY3RpdmUgRHVtcFJlbmRlclRyZWUgcHJv
Y2VzcwotICAgICAgdGVzdF9pbmZvOiBPYmplY3QgY29udGFpbmluZyB0aGUgdGVzdCBmaWxlbmFt
ZSwgdXJpIGFuZCB0aW1lb3V0CisgICAgICB0ZXN0X2luZm86IGEgVGVzdEluZm8gb2JqZWN0CiAg
ICAgICB0ZXN0X3R5cGVzOiBsaXN0IG9mIHRlc3QgdHlwZXMgdG8gc3ViamVjdCB0aGUgb3V0cHV0
IHRvCiAgICAgICB0ZXN0X2FyZ3M6IGFyZ3VtZW50cyB0byBiZSBwYXNzZWQgdG8gZWFjaCB0ZXN0
CisgICAgICB0ZXN0X291dHB1dDogYSBhY3R1YWwgdGVzdF9vdXRwdXQKIAogICAgIFJldHVybnM6
IGEgVGVzdFJlc3VsdCBvYmplY3QKICAgICAiIiIKICAgICBmYWlsdXJlcyA9IFtdCiAKLSAgICAj
IFNvbWUgdGVzdCBhcmdzLCBzdWNoIGFzIHRoZSBpbWFnZSBoYXNoLCBtYXkgYmUgYWRkZWQgb3Ig
Y2hhbmdlZCBvbiBhCi0gICAgIyB0ZXN0LWJ5LXRlc3QgYmFzaXMuCi0gICAgbG9jYWxfdGVzdF9h
cmdzID0gY29weS5jb3B5KHRlc3RfYXJncykKLQotICAgIGxvY2FsX3Rlc3RfYXJncy5oYXNoID0g
YWN0dWFsX2NoZWNrc3VtCi0KLSAgICBpZiBjcmFzaDoKKyAgICBpZiB0ZXN0X291dHB1dC5jcmFz
aDoKICAgICAgICAgZmFpbHVyZXMuYXBwZW5kKHRlc3RfZmFpbHVyZXMuRmFpbHVyZUNyYXNoKCkp
Ci0gICAgaWYgdGltZW91dDoKKyAgICBpZiB0ZXN0X291dHB1dC50aW1lb3V0OgogICAgICAgICBm
YWlsdXJlcy5hcHBlbmQodGVzdF9mYWlsdXJlcy5GYWlsdXJlVGltZW91dCgpKQogCi0gICAgaWYg
Y3Jhc2g6Ci0gICAgICAgIF9sb2cuZGVidWcoIlN0YWNrdHJhY2UgZm9yICVzOlxuJXMiICUgKHRl
c3RfaW5mby5maWxlbmFtZSwgZXJyb3IpKQorICAgIGlmIHRlc3Rfb3V0cHV0LmNyYXNoOgorICAg
ICAgICBfbG9nLmRlYnVnKCJTdGFja3RyYWNlIGZvciAlczpcbiVzIiAlICh0ZXN0X2luZm8uZmls
ZW5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRl
c3Rfb3V0cHV0LmVycm9yKSkKICAgICAgICAgIyBTdHJpcCBvZmYgImZpbGU6Ly8iIHNpbmNlIFJl
bGF0aXZlVGVzdEZpbGVuYW1lIGV4cGVjdHMKICAgICAgICAgIyBmaWxlc3lzdGVtIHBhdGhzLgog
ICAgICAgICBmaWxlbmFtZSA9IG9zLnBhdGguam9pbihvcHRpb25zLnJlc3VsdHNfZGlyZWN0b3J5
LApAQCAtMTEzLDkgKzExNSwxMSBAQCBkZWYgX3Byb2Nlc3Nfb3V0cHV0KHBvcnQsIG9wdGlvbnMs
IHRlc3RfaW5mbywgdGVzdF90eXBlcywgdGVzdF9hcmdzLAogICAgICAgICBmaWxlbmFtZSA9IG9z
LnBhdGguc3BsaXRleHQoZmlsZW5hbWUpWzBdICsgIi1zdGFjay50eHQiCiAgICAgICAgIHBvcnQu
bWF5YmVfbWFrZV9kaXJlY3Rvcnkob3MucGF0aC5zcGxpdChmaWxlbmFtZSlbMF0pCiAgICAgICAg
IHdpdGggY29kZWNzLm9wZW4oZmlsZW5hbWUsICJ3YiIsICJ1dGYtOCIpIGFzIGZpbGU6Ci0gICAg
ICAgICAgICBmaWxlLndyaXRlKGVycm9yKQotICAgIGVsaWYgZXJyb3I6Ci0gICAgICAgIF9sb2cu
ZGVidWcoIlByZXZpb3VzIHRlc3Qgb3V0cHV0IHN0ZGVyciBsaW5lczpcbiVzIiAlIGVycm9yKQor
ICAgICAgICAgICAgZmlsZS53cml0ZSh0ZXN0X291dHB1dC5lcnJvcikKKyAgICBlbGlmIHRlc3Rf
b3V0cHV0LmVycm9yOgorICAgICAgICBfbG9nLmRlYnVnKCJQcmV2aW91cyB0ZXN0IG91dHB1dCBz
dGRlcnIgbGluZXM6XG4lcyIgJSB0ZXN0X291dHB1dC5lcnJvcikKKworICAgIGV4cGVjdGVkX3Rl
c3Rfb3V0cHV0ID0gX2V4cGVjdGVkX3Rlc3Rfb3V0cHV0KHBvcnQsIHRlc3RfaW5mby5maWxlbmFt
ZSkKIAogICAgICMgQ2hlY2sgdGhlIG91dHB1dCBhbmQgc2F2ZSB0aGUgcmVzdWx0cy4KICAgICBz
dGFydF90aW1lID0gdGltZS50aW1lKCkKQEAgLTEyMywxOCArMTI3LDE4IEBAIGRlZiBfcHJvY2Vz
c19vdXRwdXQocG9ydCwgb3B0aW9ucywgdGVzdF9pbmZvLCB0ZXN0X3R5cGVzLCB0ZXN0X2FyZ3Ms
CiAgICAgZm9yIHRlc3RfdHlwZSBpbiB0ZXN0X3R5cGVzOgogICAgICAgICBzdGFydF9kaWZmX3Rp
bWUgPSB0aW1lLnRpbWUoKQogICAgICAgICBuZXdfZmFpbHVyZXMgPSB0ZXN0X3R5cGUuY29tcGFy
ZV9vdXRwdXQocG9ydCwgdGVzdF9pbmZvLmZpbGVuYW1lLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0LCBsb2NhbF90ZXN0X2FyZ3MsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLmNvbmZp
Z3VyYXRpb24pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0ZXN0X2FyZ3MsIHRlc3Rfb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfdGVzdF9vdXRwdXQpCiAgICAgICAgICMgRG9uJ3Qg
YWRkIGFueSBtb3JlIGZhaWx1cmVzIGlmIHdlIGFscmVhZHkgaGF2ZSBhIGNyYXNoLCBzbyB3ZSBk
b24ndAogICAgICAgICAjIGRvdWJsZS1yZXBvcnQgdGhvc2UgdGVzdHMuIFdlIGRvIGRvdWJsZS1y
ZXBvcnQgZm9yIHRpbWVvdXRzIHNpbmNlCiAgICAgICAgICMgd2Ugc3RpbGwgd2FudCB0byBzZWUg
dGhlIHRleHQgYW5kIGltYWdlIG91dHB1dC4KLSAgICAgICAgaWYgbm90IGNyYXNoOgorICAgICAg
ICBpZiBub3QgdGVzdF9vdXRwdXQuY3Jhc2g6CiAgICAgICAgICAgICBmYWlsdXJlcy5leHRlbmQo
bmV3X2ZhaWx1cmVzKQogICAgICAgICB0aW1lX2Zvcl9kaWZmc1t0ZXN0X3R5cGUuX19jbGFzc19f
Ll9fbmFtZV9fXSA9ICgKICAgICAgICAgICAgIHRpbWUudGltZSgpIC0gc3RhcnRfZGlmZl90aW1l
KQogCiAgICAgdG90YWxfdGltZV9mb3JfYWxsX2RpZmZzID0gdGltZS50aW1lKCkgLSBzdGFydF9k
aWZmX3RpbWUKLSAgICByZXR1cm4gdGVzdF9yZXN1bHRzLlRlc3RSZXN1bHQodGVzdF9pbmZvLmZp
bGVuYW1lLCBmYWlsdXJlcywgdGVzdF9ydW5fdGltZSwKKyAgICByZXR1cm4gdGVzdF9yZXN1bHRz
LlRlc3RSZXN1bHQodGVzdF9pbmZvLmZpbGVuYW1lLCBmYWlsdXJlcywgdGVzdF9vdXRwdXQudGVz
dF90aW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3RhbF90aW1lX2Zv
cl9hbGxfZGlmZnMsIHRpbWVfZm9yX2RpZmZzKQogCiAKQEAgLTE1MywxMSArMTU3LDM3IEBAIGRl
ZiBfbWlsbGlzZWNvbmRzX3RvX3NlY29uZHMobXNlY3MpOgogICAgIHJldHVybiBmbG9hdChtc2Vj
cykgLyAxMDAwLjAKIAogCi1kZWYgX2ltYWdlX2hhc2godGVzdF9pbmZvLCB0ZXN0X2FyZ3MsIG9w
dGlvbnMpOgotICAgICIiIlJldHVybnMgdGhlIGltYWdlIGhhc2ggb2YgdGhlIHRlc3QgaWYgaXQn
cyBuZWVkZWQsIG90aGVyd2lzZSBOb25lLiIiIgotICAgIGlmICh0ZXN0X2FyZ3MubmV3X2Jhc2Vs
aW5lIG9yIHRlc3RfYXJncy5yZXNldF9yZXN1bHRzIG9yIG5vdCBvcHRpb25zLnBpeGVsX3Rlc3Rz
KToKK2RlZiBfc2hvdWxkX3NhdmVfbmV3X2ltYWdlKHRlc3RfYXJncyk6CisgICAgIiIiUmV0dXJu
cyB0cnVlIGlmIHdlIG5lZWQgdG8gc2F2ZSBhIG5ldyBpbWFnZS4iIiIKKyAgICByZXR1cm4gdGVz
dF9hcmdzLm5ld19iYXNlbGluZSBvciB0ZXN0X2FyZ3MucmVzZXRfcmVzdWx0cworCisKK2RlZiBf
bmVlZHNfaW1hZ2UodGVzdF9hcmdzLCBvcHRpb25zKToKKyAgICAiIiJSZXR1cm4gdHJ1ZSBpZiBh
IHRlc3QgdXNlcyBhIGltYWdlIG91dHB1dC4iIiIKKyAgICByZXR1cm4gX3Nob3VsZF9zYXZlX25l
d19pbWFnZSh0ZXN0X2FyZ3MpIG9yIG9wdGlvbnMucGl4ZWxfdGVzdHMKKworCitkZWYgX2ltYWdl
X2hhc2hfdG9fZHJpdmVyKHBvcnQsIGZpbGVuYW1lLCB0ZXN0X2FyZ3MsIG9wdGlvbnMpOgorICAg
ICIiIlJldHVybnMgdGhlIGltYWdlIGhhc2ggd2hpY2ggaXMgcGFzc2VkIHRvIGEgZHJpdmVyLgor
CisgICAgVGhlIGltYWdlIGhhc2ggaXMgdXNlZCB0byBhdm9pZCBkb2luZyBhbiBpbWFnZSBkdW1w
IGlmIHRoZQorICAgIGNoZWNrc3VtcyBtYXRjaCwgc28gaXQgc2hvdWxkIGJlIHNldCB0byBhIGJs
YW5rIHZhbHVlIGlmIHdlCisgICAgYXJlIGdlbmVyYXRpbmcgYSBuZXcgYmFzZWxpbmUuICAoT3Ro
ZXJ3aXNlLCBhbiBpbWFnZSBmcm9tIGEKKyAgICBwcmV2aW91cyBydW4gd2lsbCBiZSBjb3BpZWQg
aW50byB0aGUgYmFzZWxpbmUuIiIiCisgICAgaWYgX3Nob3VsZF9zYXZlX25ld19pbWFnZSh0ZXN0
X2FyZ3MpOgogICAgICAgICByZXR1cm4gTm9uZQotICAgIHJldHVybiB0ZXN0X2luZm8uaW1hZ2Vf
aGFzaCgpCisgICAgaWYgbm90IG9wdGlvbnMucGl4ZWxfdGVzdHM6CisgICAgICAgIHJldHVybiBO
b25lCisgICAgcmV0dXJuIHBvcnQuZXhwZWN0ZWRfY2hlY2tzdW0oZmlsZW5hbWUpCisKKworZGVm
IF9ydW5fc2luZ2xlX3Rlc3QocG9ydCwgb3B0aW9ucywgdGVzdF9pbmZvLCB0ZXN0X3R5cGVzLCB0
ZXN0X2FyZ3MsIGRyaXZlcik6CisgICAgaW1hZ2VfaGFzaF90b19kcml2ZXIgPSBfaW1hZ2VfaGFz
aF90b19kcml2ZXIoCisgICAgICAgIHBvcnQsIHRlc3RfaW5mby5maWxlbmFtZSwgdGVzdF9hcmdz
LCBvcHRpb25zKQorICAgIHRlc3Rfb3V0cHV0ID0gZHJpdmVyLnJ1bl90ZXN0KHRlc3RfaW5mby51
cmkuc3RyaXAoKSwgdGVzdF9pbmZvLnRpbWVvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW1hZ2VfaGFzaF90b19kcml2ZXIpCisgICAgcmV0dXJuIF9wcm9jZXNzX291dHB1
dChwb3J0LCBvcHRpb25zLCB0ZXN0X2luZm8sIHRlc3RfdHlwZXMsIHRlc3RfYXJncywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRlc3Rfb3V0cHV0KQogCiAKIGNsYXNzIFNpbmdsZVRlc3RU
aHJlYWQodGhyZWFkaW5nLlRocmVhZCk6CkBAIC0xODgsMjAgKzIxOCwxMiBAQCBjbGFzcyBTaW5n
bGVUZXN0VGhyZWFkKHRocmVhZGluZy5UaHJlYWQpOgogICAgIGRlZiBfY292ZXJlZF9ydW4oc2Vs
Zik6CiAgICAgICAgICMgRklYTUU6IHRoaXMgaXMgYSBzZXBhcmF0ZSByb3V0aW5lIHRvIHdvcmsg
YXJvdW5kIGEgYnVnCiAgICAgICAgICMgaW4gY292ZXJhZ2U6IHNlZSBodHRwOi8vYml0YnVja2V0
Lm9yZy9uZWQvY292ZXJhZ2VweS9pc3N1ZS84NS4KLSAgICAgICAgdGVzdF9pbmZvID0gc2VsZi5f
dGVzdF9pbmZvCiAgICAgICAgIHNlbGYuX2RyaXZlciA9IHNlbGYuX3BvcnQuY3JlYXRlX2RyaXZl
cihzZWxmLl90ZXN0X2FyZ3MucG5nX3BhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25zKQogICAgICAgICBzZWxmLl9kcml2ZXIu
c3RhcnQoKQotICAgICAgICBpbWFnZV9oYXNoID0gX2ltYWdlX2hhc2godGVzdF9pbmZvLCBzZWxm
Ll90ZXN0X2FyZ3MsIHNlbGYuX29wdGlvbnMpCi0gICAgICAgIHN0YXJ0ID0gdGltZS50aW1lKCkK
LSAgICAgICAgY3Jhc2gsIHRpbWVvdXQsIGFjdHVhbF9jaGVja3N1bSwgb3V0cHV0LCBlcnJvciA9
IFwKLSAgICAgICAgICAgIHNlbGYuX2RyaXZlci5ydW5fdGVzdCh0ZXN0X2luZm8udXJpLnN0cmlw
KCksIHRlc3RfaW5mby50aW1lb3V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGltYWdlX2hhc2gpCi0gICAgICAgIGVuZCA9IHRpbWUudGltZSgpCi0gICAgICAgIHNlbGYuX3Rl
c3RfcmVzdWx0ID0gX3Byb2Nlc3Nfb3V0cHV0KHNlbGYuX3BvcnQsIHNlbGYuX29wdGlvbnMsCi0g
ICAgICAgICAgICB0ZXN0X2luZm8sIHNlbGYuX3Rlc3RfdHlwZXMsIHNlbGYuX3Rlc3RfYXJncywK
LSAgICAgICAgICAgIGNyYXNoLCB0aW1lb3V0LCBlbmQgLSBzdGFydCwKLSAgICAgICAgICAgIGFj
dHVhbF9jaGVja3N1bSwgb3V0cHV0LCBlcnJvcikKKyAgICAgICAgc2VsZi5fdGVzdF9yZXN1bHQg
PSBfcnVuX3NpbmdsZV90ZXN0KHNlbGYuX3BvcnQsIHNlbGYuX29wdGlvbnMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl90ZXN0X2luZm8sIHNlbGYu
X3Rlc3RfdHlwZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZWxmLl90ZXN0X2FyZ3MsIHNlbGYuX2RyaXZlcikKICAgICAgICAgc2VsZi5fZHJpdmVyLnN0
b3AoKQogCiAgICAgZGVmIGdldF90ZXN0X3Jlc3VsdChzZWxmKToKQEAgLTUwMCwyOCArNTIyLDE0
IEBAIGNsYXNzIFRlc3RTaGVsbFRocmVhZChXYXRjaGFibGVUaHJlYWQpOgogICAgICAgICBSZXR1
cm5zOiBhIFRlc3RSZXN1bHQgb2JqZWN0LgogICAgICAgICAiIiIKICAgICAgICAgc2VsZi5fZW5z
dXJlX2R1bXBfcmVuZGVyX3RyZWVfaXNfcnVubmluZygpCi0gICAgICAgICMgVGhlIHBpeGVsX2hh
c2ggaXMgdXNlZCB0byBhdm9pZCBkb2luZyBhbiBpbWFnZSBkdW1wIGlmIHRoZQotICAgICAgICAj
IGNoZWNrc3VtcyBtYXRjaCwgc28gaXQgc2hvdWxkIGJlIHNldCB0byBhIGJsYW5rIHZhbHVlIGlm
IHdlCi0gICAgICAgICMgYXJlIGdlbmVyYXRpbmcgYSBuZXcgYmFzZWxpbmUuICAoT3RoZXJ3aXNl
LCBhbiBpbWFnZSBmcm9tIGEKLSAgICAgICAgIyBwcmV2aW91cyBydW4gd2lsbCBiZSBjb3BpZWQg
aW50byB0aGUgYmFzZWxpbmUuKQotICAgICAgICBpbWFnZV9oYXNoID0gX2ltYWdlX2hhc2godGVz
dF9pbmZvLCBzZWxmLl90ZXN0X2FyZ3MsIHNlbGYuX29wdGlvbnMpCi0gICAgICAgIHN0YXJ0ID0g
dGltZS50aW1lKCkKLQogICAgICAgICB0aHJlYWRfdGltZW91dCA9IF9taWxsaXNlY29uZHNfdG9f
c2Vjb25kcygKICAgICAgICAgICAgICBfcGFkX3RpbWVvdXQoaW50KHRlc3RfaW5mby50aW1lb3V0
KSkpCi0gICAgICAgIHNlbGYuX25leHRfdGltZW91dCA9IHN0YXJ0ICsgdGhyZWFkX3RpbWVvdXQK
LQotICAgICAgICBjcmFzaCwgdGltZW91dCwgYWN0dWFsX2NoZWNrc3VtLCBvdXRwdXQsIGVycm9y
ID0gXAotICAgICAgICAgICBzZWxmLl9kcml2ZXIucnVuX3Rlc3QodGVzdF9pbmZvLnVyaSwgdGVz
dF9pbmZvLnRpbWVvdXQsIGltYWdlX2hhc2gpCi0gICAgICAgIGVuZCA9IHRpbWUudGltZSgpCi0K
LSAgICAgICAgcmVzdWx0ID0gX3Byb2Nlc3Nfb3V0cHV0KHNlbGYuX3BvcnQsIHNlbGYuX29wdGlv
bnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2luZm8sIHNlbGYuX3Rl
c3RfdHlwZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl90ZXN0X2Fy
Z3MsIGNyYXNoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dCwgZW5k
IC0gc3RhcnQsIGFjdHVhbF9jaGVja3N1bSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG91dHB1dCwgZXJyb3IpCi0gICAgICAgIHNlbGYuX3Rlc3RfcmVzdWx0cy5hcHBlbmQocmVz
dWx0KQotICAgICAgICByZXR1cm4gcmVzdWx0CisgICAgICAgIHNlbGYuX25leHRfdGltZW91dCA9
IHRpbWUudGltZSgpICsgdGhyZWFkX3RpbWVvdXQKKyAgICAgICAgdGVzdF9yZXN1bHQgPSBfcnVu
X3NpbmdsZV90ZXN0KHNlbGYuX3BvcnQsIHNlbGYuX29wdGlvbnMsIHRlc3RfaW5mbywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3Rlc3RfdHlwZXMsIHNlbGYu
X3Rlc3RfYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYu
X2RyaXZlcikKKyAgICAgICAgc2VsZi5fdGVzdF9yZXN1bHRzLmFwcGVuZCh0ZXN0X3Jlc3VsdCkK
KyAgICAgICAgcmV0dXJuIHRlc3RfcmVzdWx0CiAKICAgICBkZWYgX2Vuc3VyZV9kdW1wX3JlbmRl
cl90cmVlX2lzX3J1bm5pbmcoc2VsZik6CiAgICAgICAgICIiIlN0YXJ0IHRoZSBzaGFyZWQgRHVt
cFJlbmRlclRyZWUsIGlmIGl0J3Mgbm90IHJ1bm5pbmcuCmRpZmYgLS1naXQgYS9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X291dHB1
dC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9w
YWNrYWdlL3Rlc3Rfb3V0cHV0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU4MDliZTYyNWQ1YmU5MzZlNDMwY2U3
YzNiNDY3ZTAwNTVjNDhhODYKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X291dHB1dC5weQpAQCAt
MCwwICsxLDU2IEBACisjIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisj
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMg
ZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMg
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
IyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
IyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCitjbGFzcyBUZXN0T3V0cHV0KG9iamVj
dCk6CisgICAgIiIiR3JvdXBzIGluZm9ybWF0aW9uIGFib3V0IGEgdGVzdCBvdXRwdXQgZm9yIGVh
c3kgcGFzc2luZyBvZiBkYXRhLgorCisgICAgVGhpcyBpcyB1c2VkIG5vdCBvbmx5IGZvciBhIGFj
dHVhbCB0ZXN0IG91dHB1dCwgYnV0IGFsc28gZm9yIGdyb3VwaW5nCisgICAgZXhwZWN0ZWQgdGVz
dCBvdXRwdXQuCisgICAgIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdGV4dCwgaW1hZ2Us
IGltYWdlX2hhc2gsCisgICAgICAgICAgICAgICAgIGNyYXNoPU5vbmUsIHRlc3RfdGltZT1Ob25l
LCB0aW1lb3V0PU5vbmUsIGVycm9yPU5vbmUpOgorICAgICAgICAiIiJJbml0aWFsaXplcyBhIFRl
c3RPdXRwdXQgb2JqZWN0LgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgdGV4dDogYSB0ZXh0
IG91dHB1dAorICAgICAgICAgIGltYWdlOiBhbiBpbWFnZSBvdXRwdXQKKyAgICAgICAgICBpbWFn
ZV9oYXNoOiBhIHN0cmluZyBjb250YWluaW5nIHRoZSBjaGVja3N1bSBvZiB0aGUgaW1hZ2UKKyAg
ICAgICAgICBjcmFzaDogYSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgZHJpdmVyIGNy
YXNoZWQgb24gdGhlIHRlc3QKKyAgICAgICAgICB0ZXN0X3RpbWU6IGEgdGltZSB3aGljaCB0aGUg
dGVzdCBoYXMgdGFrZW4KKyAgICAgICAgICB0aW1lb3V0OiBhIGJvb2xlYW4gaW5kaWNhdGluZyB3
aGVodGVyIHRoZSB0ZXN0IHRpbWVkIG91dAorICAgICAgICAgIGVycm9yOiBhbnkgdW5leHBlY3Rl
ZCBvciBhZGRpdGlvbmFsIChvciBlcnJvcikgdGV4dCBvdXRwdXQKKyAgICAgICAgIiIiCisgICAg
ICAgIHNlbGYudGV4dCA9IHRleHQKKyAgICAgICAgc2VsZi5pbWFnZSA9IGltYWdlCisgICAgICAg
IHNlbGYuaW1hZ2VfaGFzaCA9IGltYWdlX2hhc2gKKyAgICAgICAgc2VsZi5jcmFzaCA9IGNyYXNo
CisgICAgICAgIHNlbGYudGVzdF90aW1lID0gdGVzdF90aW1lCisgICAgICAgIHNlbGYudGltZW91
dCA9IHRpbWVvdXQKKyAgICAgICAgc2VsZi5lcnJvciA9IGVycm9yCmRpZmYgLS1naXQgYS9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkgYi9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkKaW5kZXgg
NGEyOTcwZTMyMDNjNjAwZjVlMjg5ZjhlODNkZDhhYTQyOTAwYTFiNC4uNjMyODA2ZmIyY2UzMGY1
Mzg5M2Q0OGU3ODUwYmMwZmI4ODc0YzM5MCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5CisrKyBiL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQpAQCAtODMyLDE2ICs4MzIs
OCBAQCBjbGFzcyBEcml2ZXI6CiAgICAgICAgIGNoZWNrc3VtIC0gaWYgcHJlc2VudCwgdGhlIGV4
cGVjdGVkIGNoZWNrc3VtIGZvciB0aGUgaW1hZ2UgZm9yIHRoaXMKICAgICAgICAgICAgIHRlc3QK
IAotICAgICAgICBSZXR1cm5zIGEgdHVwbGUgb2YgdGhlIGZvbGxvd2luZzoKLSAgICAgICAgICAg
IGNyYXNoIC0gYSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgZHJpdmVyIGNyYXNoZWQg
b24gdGhlIHRlc3QKLSAgICAgICAgICAgIHRpbWVvdXQgLSBhIGJvb2xlYW4gaW5kaWNhdGluZyB3
aGVodGVyIHRoZSB0ZXN0IHRpbWVkIG91dAotICAgICAgICAgICAgY2hlY2tzdW0gLSBhIHN0cmlu
ZyBjb250YWluaW5nIHRoZSBjaGVja3N1bSBvZiB0aGUgaW1hZ2UsIGlmCi0gICAgICAgICAgICAg
ICAgcHJlc2VudAotICAgICAgICAgICAgb3V0cHV0IC0gYW55IHRleHQgb3V0cHV0Ci0gICAgICAg
ICAgICBlcnJvciAtIGFueSB1bmV4cGVjdGVkIG9yIGFkZGl0aW9uYWwgKG9yIGVycm9yKSB0ZXh0
IG91dHB1dAotCi0gICAgICAgIE5vdGUgdGhhdCB0aGUgaW1hZ2UgaXRzZWxmIHNob3VsZCBiZSB3
cml0dGVuIHRvIHRoZSBwYXRoIHRoYXQgd2FzCi0gICAgICAgIHNwZWNpZmllZCBpbiB0aGUgX19p
bml0X18oKSBjYWxsLiIiIgorICAgICAgICBSZXR1cm5zIGEgVGVzdE91dHB1dCBvYmplY3QuCisg
ICAgICAgICIiIgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCdEcml2ZXIucnVu
X3Rlc3QnKQogCiAgICAgIyBGSVhNRTogVGhpcyBpcyBzdGF0aWMgc28gd2UgY2FuIHRlc3QgaXQg
dy9vIGNyZWF0aW5nIGEgQmFzZSBpbnN0YW5jZS4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkgYi9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5CmluZGV4IGY5
M2Y5YThkOTRmMGQ0ZDEzNDAxNDk1ZjExNGY0NTNhNDdhNjBmNTEuLjMxNDkyOTA5OWFjMTM2ZDI4
NjEyZTNjY2Y3ODE3MjE5MGRmOGZkMzIgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkKKysrIGIvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weQpAQCAtNDYsMTMg
KzQ2LDExIEBAIGltcG9ydCB3ZWJicm93c2VyCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0u
ZXhlY3V0aXZlIGltcG9ydCBFeGVjdXRpdmUKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5w
YXRoIGltcG9ydCBjeWdwYXRoCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFj
a2FnZSBpbXBvcnQgdGVzdF9leHBlY3RhdGlvbnMKK2Zyb20gd2Via2l0cHkubGF5b3V0X3Rlc3Rz
LmxheW91dF9wYWNrYWdlIGltcG9ydCB0ZXN0X291dHB1dAogCiBpbXBvcnQgYmFzZQogaW1wb3J0
IGh0dHBfc2VydmVyCiAKLWZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1w
b3J0IEV4ZWN1dGl2ZQotZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubGF5b3V0X3BhY2thZ2Ug
aW1wb3J0IHRlc3RfZXhwZWN0YXRpb25zCi0KICMgQ2hyb21pdW0gRFJUIG9uIE9TWCB1c2VzIFdl
YktpdERyaXZlci4KIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKICAgICBpbXBvcnQgd2Vi
a2l0CkBAIC00NDcsNiArNDQ1LDE1IEBAIGNsYXNzIENocm9taXVtRHJpdmVyKGJhc2UuRHJpdmVy
KToKICAgICAgICAgY21kICs9ICJcbiIKICAgICAgICAgcmV0dXJuIGNtZAogCisgICAgZGVmIF9v
dXRwdXRfaW1hZ2Uoc2VsZik6CisgICAgICAgICIiIlJldHVybnMgdGhlIGltYWdlIG91dHB1dCB3
aGljaCBkcml2ZXIgZ2VuZXJhdGVkLiIiIgorICAgICAgICBwbmdfcGF0aCA9IHNlbGYuX2ltYWdl
X3BhdGgKKyAgICAgICAgaWYgcG5nX3BhdGggYW5kIG9zLnBhdGguaXNmaWxlKHBuZ19wYXRoKToK
KyAgICAgICAgICAgIHdpdGggb3BlbihwbmdfcGF0aCwgJ3JiJykgYXMgaW1hZ2VfZmlsZToKKyAg
ICAgICAgICAgICAgICByZXR1cm4gaW1hZ2VfZmlsZS5yZWFkKCkKKyAgICAgICAgZWxzZToKKyAg
ICAgICAgICAgIHJldHVybiBOb25lCisKICAgICBkZWYgcnVuX3Rlc3Qoc2VsZiwgdXJpLCB0aW1l
b3V0bXMsIGNoZWNrc3VtKToKICAgICAgICAgb3V0cHV0ID0gW10KICAgICAgICAgZXJyb3IgPSBb
XQpAQCAtNDk4LDggKzUwNSw5IEBAIGNsYXNzIENocm9taXVtRHJpdmVyKGJhc2UuRHJpdmVyKToK
IAogICAgICAgICAgICAgKGxpbmUsIGNyYXNoKSA9IHNlbGYuX3dyaXRlX2NvbW1hbmRfYW5kX3Jl
YWRfbGluZShpbnB1dD1Ob25lKQogCi0gICAgICAgIHJldHVybiAoY3Jhc2gsIHRpbWVvdXQsIGFj
dHVhbF9jaGVja3N1bSwgJycuam9pbihvdXRwdXQpLAotICAgICAgICAgICAgICAgICcnLmpvaW4o
ZXJyb3IpKQorICAgICAgICByZXR1cm4gdGVzdF9vdXRwdXQuVGVzdE91dHB1dCgKKyAgICAgICAg
ICAgICcnLmpvaW4ob3V0cHV0KSwgc2VsZi5fb3V0cHV0X2ltYWdlKCksIGFjdHVhbF9jaGVja3N1
bSwKKyAgICAgICAgICAgIGNyYXNoLCB0aW1lLnRpbWUoKSAtIHN0YXJ0X3RpbWUsIHRpbWVvdXQs
ICcnLmpvaW4oZXJyb3IpKQogCiAgICAgZGVmIHN0b3Aoc2VsZik6CiAgICAgICAgIGlmIHNlbGYu
X3Byb2M6CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L2RyeXJ1bi5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvZHJ5cnVuLnB5CmluZGV4IDhhNmFmNTZjODQyMGU0NTBjNDE4OTdhZmU1NDNl
NjY3MDZmOWFlNzYuLjk2ZDBkNTVmNjJkN2JjMTRiNGFkNDNhOWVhYTllZDA2OWQ2NDIwMTYgMTAw
NjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
ZHJ5cnVuLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvZHJ5cnVuLnB5CkBAIC00OCw2ICs0OCw5IEBAIGZyb20gX19mdXR1cmVfXyBpbXBvcnQg
d2l0aF9zdGF0ZW1lbnQKIAogaW1wb3J0IG9zCiBpbXBvcnQgc3lzCitpbXBvcnQgdGltZQorCitm
cm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZSBpbXBvcnQgdGVzdF9vdXRw
dXQKIAogaW1wb3J0IGJhc2UKIGltcG9ydCBmYWN0b3J5CkBAIC0xMDksMTkgKzExMiwxOSBAQCBj
bGFzcyBEcnlydW5Ecml2ZXIoYmFzZS5Ecml2ZXIpOgogICAgICAgICByZXR1cm4gTm9uZQogCiAg
ICAgZGVmIHJ1bl90ZXN0KHNlbGYsIHVyaSwgdGltZW91dG1zLCBpbWFnZV9oYXNoKToKKyAgICAg
ICAgc3RhcnRfdGltZSA9IHRpbWUudGltZSgpCiAgICAgICAgIHRlc3RfbmFtZSA9IHNlbGYuX3Bv
cnQudXJpX3RvX3Rlc3RfbmFtZSh1cmkpCiAgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oc2Vs
Zi5fcG9ydC5sYXlvdXRfdGVzdHNfZGlyKCksIHRlc3RfbmFtZSkKICAgICAgICAgdGV4dF9vdXRw
dXQgPSBzZWxmLl9wb3J0LmV4cGVjdGVkX3RleHQocGF0aCkKIAogICAgICAgICBpZiBpbWFnZV9o
YXNoIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgaW1hZ2UgPSBzZWxmLl9wb3J0LmV4cGVjdGVk
X2ltYWdlKHBhdGgpCi0gICAgICAgICAgICBpZiBpbWFnZSBhbmQgc2VsZi5faW1hZ2VfcGF0aDoK
LSAgICAgICAgICAgICAgICB3aXRoIG9wZW4oc2VsZi5faW1hZ2VfcGF0aCwgJ3cnKSBhcyBmOgot
ICAgICAgICAgICAgICAgICAgICBmLndyaXRlKGltYWdlKQogICAgICAgICAgICAgaGFzaCA9IHNl
bGYuX3BvcnQuZXhwZWN0ZWRfY2hlY2tzdW0ocGF0aCkKICAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgIGltYWdlID0gTm9uZQogICAgICAgICAgICAgaGFzaCA9IE5vbmUKLSAgICAgICAgcmV0dXJu
IChGYWxzZSwgRmFsc2UsIGhhc2gsIHRleHRfb3V0cHV0LCBOb25lKQorICAgICAgICByZXR1cm4g
dGVzdF9vdXRwdXQuVGVzdE91dHB1dCh0ZXh0X291dHB1dCwgaW1hZ2UsIGhhc2gsIEZhbHNlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lLnRpbWUoKSAtIHN0YXJ0
X3RpbWUsIEZhbHNlLCBOb25lKQogCiAgICAgZGVmIHN0YXJ0KHNlbGYpOgogICAgICAgICBwYXNz
CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L3Rlc3QucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L3Rlc3QucHkKaW5kZXggZmY0MDg2Yzc0ZGMxODJiYTg0NzEyM2U2MzU1MDBkMTQ0MTFkOTkz
ZS4uMGEyNzgyMTRkYzFiMjU5YTk3NDhkMmRiYjM1NjVkNTBmYTI1MTViNCAxMDA2NDQKLS0tIGEv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0LnB5Cisr
KyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdC5w
eQpAQCAtMzYsNiArMzYsOCBAQCBpbXBvcnQgb3MKIGltcG9ydCBzeXMKIGltcG9ydCB0aW1lCiAK
K2Zyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmxheW91dF9wYWNrYWdlIGltcG9ydCB0ZXN0X291
dHB1dAorCiBpbXBvcnQgYmFzZQogCiAKQEAgLTI4OSw2ICsyOTEsNyBAQCBjbGFzcyBUZXN0RHJp
dmVyKGJhc2UuRHJpdmVyKToKICAgICAgICAgcmV0dXJuIFRydWUKIAogICAgIGRlZiBydW5fdGVz
dChzZWxmLCB1cmksIHRpbWVvdXRtcywgaW1hZ2VfaGFzaCk6CisgICAgICAgIHN0YXJ0X3RpbWUg
PSB0aW1lLnRpbWUoKQogICAgICAgICB0ZXN0X25hbWUgPSBzZWxmLl9wb3J0LnVyaV90b190ZXN0
X25hbWUodXJpKQogICAgICAgICB0ZXN0ID0gc2VsZi5fcG9ydC5fdGVzdHNbdGVzdF9uYW1lXQog
ICAgICAgICBpZiB0ZXN0LmtleWJvYXJkOgpAQCAtMjk3LDEzICszMDAsMTAgQEAgY2xhc3MgVGVz
dERyaXZlcihiYXNlLkRyaXZlcik6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdleGNl
cHRpb24gZnJvbSAnICsgdGVzdF9uYW1lKQogICAgICAgICBpZiB0ZXN0Lmhhbmc6CiAgICAgICAg
ICAgICB0aW1lLnNsZWVwKChmbG9hdCh0aW1lb3V0bXMpICogNCkgLyAxMDAwLjApCi0KLSAgICAg
ICAgaWYgc2VsZi5fcG9ydC5nZXRfb3B0aW9uKCdwaXhlbF90ZXN0cycpIGFuZCB0ZXN0LmFjdHVh
bF9pbWFnZToKLSAgICAgICAgICAgIHdpdGggb3BlbihzZWxmLl9pbWFnZV9wYXRoLCAndycpIGFz
IGZpbGU6Ci0gICAgICAgICAgICAgICAgZmlsZS53cml0ZSh0ZXN0LmFjdHVhbF9pbWFnZSkKLQot
ICAgICAgICByZXR1cm4gKHRlc3QuY3Jhc2gsIHRlc3QudGltZW91dCwgdGVzdC5hY3R1YWxfY2hl
Y2tzdW0sCi0gICAgICAgICAgICAgICAgdGVzdC5hY3R1YWxfdGV4dCwgdGVzdC5lcnJvcikKKyAg
ICAgICAgcmV0dXJuIHRlc3Rfb3V0cHV0LlRlc3RPdXRwdXQodGVzdC5hY3R1YWxfdGV4dCwgdGVz
dC5hY3R1YWxfaW1hZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRl
c3QuYWN0dWFsX2NoZWNrc3VtLCB0ZXN0LmNyYXNoLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0aW1lLnRpbWUoKSAtIHN0YXJ0X3RpbWUsIHRlc3QudGltZW91dCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdC5lcnJvcikKIAogICAgIGRl
ZiBzdGFydChzZWxmKToKICAgICAgICAgcGFzcwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXQucHkgYi9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weQppbmRleCA1MWY1N2M0
MGU2NjYxNjdiMThjZGY1MmQ2NDIwMTg3NTk2NTI0N2U4Li4wNjc5N2M2ZDM4ZTI1NDU3MGQzZmZh
MGViNjFhMmIzYzY5NDM2MDg3IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weQpAQCAtNDksNiArNDksNyBAQCBp
bXBvcnQgc2h1dGlsCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9y
dCBFeGVjdXRpdmUKIAogaW1wb3J0IHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ub3NwYXRoIGFzIG9z
cGF0aAoraW1wb3J0IHdlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZS50ZXN0X291
dHB1dCBhcyB0ZXN0X291dHB1dAogaW1wb3J0IHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0LmJh
c2UgYXMgYmFzZQogaW1wb3J0IHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0LnNlcnZlcl9wcm9j
ZXNzIGFzIHNlcnZlcl9wcm9jZXNzCiAKQEAgLTQ0Miw2ICs0NDMsNyBAQCBjbGFzcyBXZWJLaXRE
cml2ZXIoYmFzZS5Ecml2ZXIpOgogICAgICAgICAgICAgY29tbWFuZCArPSAiJyIgKyBpbWFnZV9o
YXNoCiAgICAgICAgIGNvbW1hbmQgKz0gIlxuIgogCisgICAgICAgIHN0YXJ0X3RpbWUgPSB0aW1l
LnRpbWUoKQogICAgICAgICBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy53cml0ZShjb21tYW5kKQogCiAg
ICAgICAgIGhhdmVfc2Vlbl9jb250ZW50X3R5cGUgPSBGYWxzZQpAQCAtNDg2LDEwICs0ODgsNiBA
QCBjbGFzcyBXZWJLaXREcml2ZXIoYmFzZS5Ecml2ZXIpOgogICAgICAgICAgICAgdGltZW91dCA9
IGRlYWRsaW5lIC0gdGltZS50aW1lKCkKICAgICAgICAgICAgIGxpbmUgPSBzZWxmLl9zZXJ2ZXJf
cHJvY2Vzcy5yZWFkX2xpbmUodGltZW91dCkKIAotICAgICAgICBpZiBzZWxmLl9pbWFnZV9wYXRo
IGFuZCBsZW4oc2VsZi5faW1hZ2VfcGF0aCk6Ci0gICAgICAgICAgICB3aXRoIG9wZW4oc2VsZi5f
aW1hZ2VfcGF0aCwgIndiIikgYXMgaW1hZ2VfZmlsZToKLSAgICAgICAgICAgICAgICBpbWFnZV9m
aWxlLndyaXRlKGltYWdlKQotCiAgICAgICAgIGVycm9yX2xpbmVzID0gc2VsZi5fc2VydmVyX3By
b2Nlc3MuZXJyb3Iuc3BsaXRsaW5lcygpCiAgICAgICAgICMgRklYTUU6IFRoaXMgaXMgYSBoYWNr
LiAgSXQgaXMgdW5jbGVhciB3aHkgc29tZXRpbWVzCiAgICAgICAgICMgd2UgZG8gbm90IGdldCBh
bnkgZXJyb3IgbGluZXMgZnJvbSB0aGUgc2VydmVyX3Byb2Nlc3MKQEAgLTUwMCwxMSArNDk4LDEx
IEBAIGNsYXNzIFdlYktpdERyaXZlcihiYXNlLkRyaXZlcik6CiAgICAgICAgICMgRklYTUU6IFRo
aXMgc2VlbXMgbGlrZSB0aGUgd3Jvbmcgc2VjdGlvbiBvZiBjb2RlIHRvIGJlIGRvaW5nCiAgICAg
ICAgICMgdGhpcyByZXNldCBpbi4KICAgICAgICAgc2VsZi5fc2VydmVyX3Byb2Nlc3MuZXJyb3Ig
PSAiIgotICAgICAgICByZXR1cm4gKHNlbGYuX3NlcnZlcl9wcm9jZXNzLmNyYXNoZWQsCi0gICAg
ICAgICAgICAgICAgc2VsZi5fc2VydmVyX3Byb2Nlc3MudGltZWRfb3V0LAotICAgICAgICAgICAg
ICAgIGFjdHVhbF9pbWFnZV9oYXNoLAotICAgICAgICAgICAgICAgIG91dHB1dCwKLSAgICAgICAg
ICAgICAgICBlcnJvcikKKyAgICAgICAgcmV0dXJuIHRlc3Rfb3V0cHV0LlRlc3RPdXRwdXQob3V0
cHV0LCBpbWFnZSwgYWN0dWFsX2ltYWdlX2hhc2gsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNlbGYuX3NlcnZlcl9wcm9jZXNzLmNyYXNoZWQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWUudGltZSgpIC0gc3RhcnRfdGltZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fc2VydmVyX3Byb2Nlc3MudGlt
ZWRfb3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcikKIAog
ICAgIGRlZiBzdG9wKHNlbGYpOgogICAgICAgICBpZiBzZWxmLl9zZXJ2ZXJfcHJvY2VzczoKZGlm
ZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93
ZWJraXRfdGVzdHMucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9ydW5fd2Via2l0X3Rlc3RzLnB5CmluZGV4IDlmYjY4NGZhMTA3MTdhYjM3ZjcxM2UyMWU0MmUz
ZjMwOTcwYjJlZWYuLjQ0Zjc3NTcxNzRkNDhmOTdiMzA2MDQ2MWYxZjI0NmUwOGYwMjFiM2QgMTAw
NzU1Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93
ZWJraXRfdGVzdHMucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weQpAQCAtMTAzLDE4ICsxMDMsNiBAQCBjbGFzcyBUZXN0
SW5mbzoKICAgICAgICAgc2VsZi5fcG9ydCA9IHBvcnQKICAgICAgICAgc2VsZi51cmkgPSBwb3J0
LmZpbGVuYW1lX3RvX3VyaShmaWxlbmFtZSkKICAgICAgICAgc2VsZi50aW1lb3V0ID0gdGltZW91
dAotICAgICAgICBzZWxmLl9pbWFnZV9jaGVja3N1bSA9IC0xCi0KLSAgICBkZWYgaW1hZ2VfaGFz
aChzZWxmKToKLSAgICAgICAgIyBSZWFkIHRoZSBpbWFnZV9oYXNoIGxhemlseSB0byByZWR1Y2Ug
c3RhcnR1cCB0aW1lLgotICAgICAgICAjIFRoaXMgY2xhc3MgaXMgYWNjZXNzZWQgYWNyb3NzIHRo
cmVhZHMsIGJ1dCBvbmx5IG9uZSB0aHJlYWQgc2hvdWxkCi0gICAgICAgICMgZXZlciBiZSBkZWFs
aW5nIHdpdGggYW55IGdpdmVuIFRlc3RJbmZvIHNvIG5vIGxvY2tpbmcgaXMgbmVlZGVkLgotICAg
ICAgICAjCi0gICAgICAgICMgTm90ZSB0aGF0IHdlIHVzZSAtMSB0byBpbmRpY2F0ZSB0aGF0IHdl
IGhhdmVuJ3QgcmVhZCB0aGUgdmFsdWUsCi0gICAgICAgICMgYmVjYXVzZSBleHBlY3RlZF9jaGVj
a3N1bSgpIHJldHVybnMgYSBzdHJpbmcgb3IgTm9uZS4KLSAgICAgICAgaWYgc2VsZi5faW1hZ2Vf
Y2hlY2tzdW0gPT0gLTE6Ci0gICAgICAgICAgICBzZWxmLl9pbWFnZV9jaGVja3N1bSA9IHNlbGYu
X3BvcnQuZXhwZWN0ZWRfY2hlY2tzdW0oc2VsZi5maWxlbmFtZSkKLSAgICAgICAgcmV0dXJuIHNl
bGYuX2ltYWdlX2NoZWNrc3VtCiAKIAogY2xhc3MgUmVzdWx0U3VtbWFyeShvYmplY3QpOgpkaWZm
IC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdGVzdF90
eXBlcy9pbWFnZV9kaWZmLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvdGVzdF90eXBlcy9pbWFnZV9kaWZmLnB5CmluZGV4IDBiMDU4MDIwYzA4ZjRmNTFjMTE2
MjA0ZGM1NGNiZjVkOWMzZTdjNmYuLjkzMTM5YTBjNjQzN2Y1NGYwNDZjMjU5NmZiYTJkYzhmOWY5
ZjM0NTggMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3Rlc3RfdHlwZXMvaW1hZ2VfZGlmZi5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy90ZXN0X3R5cGVzL2ltYWdlX2RpZmYucHkKQEAgLTU0LDExNiAr
NTQsOTMgQEAgX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJ3ZWJraXRweS5sYXlvdXRfdGVzdHMu
dGVzdF90eXBlcy5pbWFnZV9kaWZmIikKIAogY2xhc3MgSW1hZ2VEaWZmKHRlc3RfdHlwZV9iYXNl
LlRlc3RUeXBlQmFzZSk6CiAKLSAgICBkZWYgX2NvcHlfb3V0cHV0X3BuZyhzZWxmLCB0ZXN0X2Zp
bGVuYW1lLCBzb3VyY2VfaW1hZ2UsIGV4dGVuc2lvbik6Ci0gICAgICAgICIiIkNvcGllcyByZXN1
bHQgZmlsZXMgaW50byB0aGUgb3V0cHV0IGRpcmVjdG9yeSB3aXRoIGFwcHJvcHJpYXRlCi0gICAg
ICAgIG5hbWVzLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgdGVzdF9maWxlbmFtZTogdGhl
IHRlc3QgZmlsZW5hbWUKLSAgICAgICAgICBzb3VyY2VfZmlsZTogcGF0aCB0byB0aGUgaW1hZ2Ug
ZmlsZSAoZWl0aGVyIGFjdHVhbCBvciBleHBlY3RlZCkKLSAgICAgICAgICBleHRlbnNpb246IGV4
dGVuc2lvbiB0byBpbmRpY2F0ZSAtYWN0dWFsLnBuZyBvciAtZXhwZWN0ZWQucG5nCi0gICAgICAg
ICIiIgotICAgICAgICBzZWxmLl9tYWtlX291dHB1dF9kaXJlY3RvcnkodGVzdF9maWxlbmFtZSkK
LSAgICAgICAgZGVzdF9pbWFnZSA9IHNlbGYub3V0cHV0X2ZpbGVuYW1lKHRlc3RfZmlsZW5hbWUs
IGV4dGVuc2lvbikKLQotICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhzb3VyY2VfaW1hZ2UpOgot
ICAgICAgICAgICAgc2h1dGlsLmNvcHlmaWxlKHNvdXJjZV9pbWFnZSwgZGVzdF9pbWFnZSkKLQot
ICAgIGRlZiBfc2F2ZV9iYXNlbGluZV9maWxlcyhzZWxmLCBmaWxlbmFtZSwgcG5nX3BhdGgsIGNo
ZWNrc3VtLAorICAgIGRlZiBfc2F2ZV9iYXNlbGluZV9maWxlcyhzZWxmLCBmaWxlbmFtZSwgaW1h
Z2UsIGltYWdlX2hhc2gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlX25l
d19iYXNlbGluZSk6CiAgICAgICAgICIiIlNhdmVzIG5ldyBiYXNlbGluZXMgZm9yIHRoZSBQTkcg
YW5kIGNoZWNrc3VtLgogCiAgICAgICAgIEFyZ3M6CiAgICAgICAgICAgZmlsZW5hbWU6IHRlc3Qg
ZmlsZW5hbWUKLSAgICAgICAgICBwbmdfcGF0aDogcGF0aCB0byB0aGUgYWN0dWFsIFBORyByZXN1
bHQgZmlsZQotICAgICAgICAgIGNoZWNrc3VtOiB2YWx1ZSBvZiB0aGUgYWN0dWFsIGNoZWNrc3Vt
IHJlc3VsdAorICAgICAgICAgIGltYWdlOiBhIGltYWdlIG91dHB1dAorICAgICAgICAgIGltYWdl
X2hhc2g6IGEgY2hlY2tzdW0gb2YgdGhlIGltYWdlCiAgICAgICAgICAgZ2VuZXJhdGVfbmV3X2Jh
c2VsaW5lOiB3aGV0aGVyIHRvIGdlbmVyYXRlIGEgbmV3LCBwbGF0Zm9ybS1zcGVjaWZpYwogICAg
ICAgICAgICAgYmFzZWxpbmUsIG9yIHVwZGF0ZSB0aGUgZXhpc3Rpbmcgb25lCiAgICAgICAgICIi
IgotICAgICAgICB3aXRoIG9wZW4ocG5nX3BhdGgsICJyYiIpIGFzIHBuZ19maWxlOgotICAgICAg
ICAgICAgcG5nX2RhdGEgPSBwbmdfZmlsZS5yZWFkKCkKLSAgICAgICAgc2VsZi5fc2F2ZV9iYXNl
bGluZV9kYXRhKGZpbGVuYW1lLCBwbmdfZGF0YSwgIi5wbmciLCBlbmNvZGluZz1Ob25lLAorICAg
ICAgICBzZWxmLl9zYXZlX2Jhc2VsaW5lX2RhdGEoZmlsZW5hbWUsIGltYWdlLCAiLnBuZyIsIGVu
Y29kaW5nPU5vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZV9u
ZXdfYmFzZWxpbmU9Z2VuZXJhdGVfbmV3X2Jhc2VsaW5lKQotICAgICAgICBzZWxmLl9zYXZlX2Jh
c2VsaW5lX2RhdGEoZmlsZW5hbWUsIGNoZWNrc3VtLCAiLmNoZWNrc3VtIiwKKyAgICAgICAgc2Vs
Zi5fc2F2ZV9iYXNlbGluZV9kYXRhKGZpbGVuYW1lLCBpbWFnZV9oYXNoLCAiLmNoZWNrc3VtIiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nPSJhc2NpaSIsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZV9uZXdfYmFzZWxpbmU9Z2VuZXJh
dGVfbmV3X2Jhc2VsaW5lKQogCi0gICAgZGVmIF9jcmVhdGVfaW1hZ2VfZGlmZihzZWxmLCBwb3J0
LCBmaWxlbmFtZSwgY29uZmlndXJhdGlvbik6CisgICAgZGVmIF9jb3B5X2ltYWdlKHNlbGYsIGZp
bGVuYW1lLCBhY3R1YWxfaW1hZ2UsIGV4cGVjdGVkX2ltYWdlKToKKyAgICAgICAgc2VsZi53cml0
ZV9vdXRwdXRfZmlsZXMoZmlsZW5hbWUsICcucG5nJywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgb3V0cHV0PWFjdHVhbF9pbWFnZSwgZXhwZWN0ZWQ9ZXhwZWN0ZWRfaW1hZ2UsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nPU5vbmUsIHByaW50X3RleHRf
ZGlmZnM9RmFsc2UpCisKKyAgICBkZWYgX2NvcHlfaW1hZ2VfaGFzaChzZWxmLCBmaWxlbmFtZSwg
YWN0dWFsX2ltYWdlX2hhc2gsIGV4cGVjdGVkX2ltYWdlX2hhc2gpOgorICAgICAgICBzZWxmLndy
aXRlX291dHB1dF9maWxlcyhmaWxlbmFtZSwgJy5jaGVja3N1bScsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGFjdHVhbF9pbWFnZV9oYXNoLCBleHBlY3RlZF9pbWFnZV9oYXNoLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZz0iYXNjaWkiLCBwcmludF90
ZXh0X2RpZmZzPUZhbHNlKQorCisgICAgZGVmIF9jcmVhdGVfZGlmZl9pbWFnZShzZWxmLCBwb3J0
LCBmaWxlbmFtZSwgYWN0dWFsX2ltYWdlLCBleHBlY3RlZF9pbWFnZSk6CiAgICAgICAgICIiIkNy
ZWF0ZXMgdGhlIHZpc3VhbCBkaWZmIG9mIHRoZSBleHBlY3RlZC9hY3R1YWwgUE5Hcy4KIAotICAg
ICAgICBBcmdzOgotICAgICAgICAgIGZpbGVuYW1lOiB0aGUgbmFtZSBvZiB0aGUgdGVzdAotICAg
ICAgICAgIGNvbmZpZ3VyYXRpb246IERlYnVnIG9yIFJlbGVhc2UKLSAgICAgICAgUmV0dXJucyBU
cnVlIGlmIHRoZSBmaWxlcyBhcmUgZGlmZmVyZW50LCBGYWxzZSBpZiB0aGV5IG1hdGNoCisgICAg
ICAgIFJldHVybnMgVHJ1ZSBpZiB0aGUgaW1hZ2VzIGFyZSBkaWZmZXJlbnQuCiAgICAgICAgICIi
IgogICAgICAgICBkaWZmX2ZpbGVuYW1lID0gc2VsZi5vdXRwdXRfZmlsZW5hbWUoZmlsZW5hbWUs
Ci0gICAgICAgICAgc2VsZi5GSUxFTkFNRV9TVUZGSVhfQ09NUEFSRSkKLSAgICAgICAgYWN0dWFs
X2ZpbGVuYW1lID0gc2VsZi5vdXRwdXRfZmlsZW5hbWUoZmlsZW5hbWUsCi0gICAgICAgICAgc2Vs
Zi5GSUxFTkFNRV9TVUZGSVhfQUNUVUFMICsgJy5wbmcnKQotICAgICAgICBleHBlY3RlZF9maWxl
bmFtZSA9IHNlbGYub3V0cHV0X2ZpbGVuYW1lKGZpbGVuYW1lLAotICAgICAgICAgIHNlbGYuRklM
RU5BTUVfU1VGRklYX0VYUEVDVEVEICsgJy5wbmcnKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2VsZi5GSUxFTkFNRV9TVUZGSVhfQ09NUEFSRSkKKyAgICAg
ICAgcmV0dXJuIHBvcnQuZGlmZl9pbWFnZShhY3R1YWxfaW1hZ2UsIGV4cGVjdGVkX2ltYWdlLCBk
aWZmX2ZpbGVuYW1lKQogCi0gICAgICAgIGV4cGVjdGVkX2ltYWdlID0gcG9ydC5leHBlY3RlZF9p
bWFnZShmaWxlbmFtZSkKLSAgICAgICAgd2l0aCBjb2RlY3Mub3BlbihhY3R1YWxfZmlsZW5hbWUs
ICdyK2InLCBOb25lKSBhcyBmaWxlOgotICAgICAgICAgICAgYWN0dWFsX2ltYWdlID0gZmlsZS5y
ZWFkKCkKLQotICAgICAgICByZXN1bHQgPSBwb3J0LmRpZmZfaW1hZ2UoZXhwZWN0ZWRfaW1hZ2Us
IGFjdHVhbF9pbWFnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZmZfZmls
ZW5hbWUpCi0gICAgICAgIHJldHVybiByZXN1bHQKLQotICAgIGRlZiBjb21wYXJlX291dHB1dChz
ZWxmLCBwb3J0LCBmaWxlbmFtZSwgb3V0cHV0LCB0ZXN0X2FyZ3MsIGNvbmZpZ3VyYXRpb24pOgor
ICAgIGRlZiBjb21wYXJlX291dHB1dChzZWxmLCBwb3J0LCBmaWxlbmFtZSwgdGVzdF9hcmdzLCBh
Y3R1YWxfdGVzdF9vdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF90ZXN0
X291dHB1dCk6CiAgICAgICAgICIiIkltcGxlbWVudGF0aW9uIG9mIENvbXBhcmVPdXRwdXQgdGhh
dCBjaGVja3MgdGhlIG91dHB1dCBpbWFnZSBhbmQKICAgICAgICAgY2hlY2tzdW0gYWdhaW5zdCB0
aGUgZXhwZWN0ZWQgZmlsZXMgZnJvbSB0aGUgTGF5b3V0VGVzdCBkaXJlY3RvcnkuCiAgICAgICAg
ICIiIgogICAgICAgICBmYWlsdXJlcyA9IFtdCiAKICAgICAgICAgIyBJZiB3ZSBkaWRuJ3QgcHJv
ZHVjZSBhIGhhc2ggZmlsZSwgdGhpcyB0ZXN0IG11c3QgYmUgdGV4dC1vbmx5LgotICAgICAgICBp
ZiB0ZXN0X2FyZ3MuaGFzaCBpcyBOb25lOgorICAgICAgICBpZiBhY3R1YWxfdGVzdF9vdXRwdXQu
aW1hZ2VfaGFzaCBpcyBOb25lOgogICAgICAgICAgICAgcmV0dXJuIGZhaWx1cmVzCiAKICAgICAg
ICAgIyBJZiB3ZSdyZSBnZW5lcmF0aW5nIGEgbmV3IGJhc2VsaW5lLCB3ZSBwYXNzLgogICAgICAg
ICBpZiB0ZXN0X2FyZ3MubmV3X2Jhc2VsaW5lIG9yIHRlc3RfYXJncy5yZXNldF9yZXN1bHRzOgot
ICAgICAgICAgICAgc2VsZi5fc2F2ZV9iYXNlbGluZV9maWxlcyhmaWxlbmFtZSwgdGVzdF9hcmdz
LnBuZ19wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2Fy
Z3MuaGFzaCwgdGVzdF9hcmdzLm5ld19iYXNlbGluZSkKKyAgICAgICAgICAgIHNlbGYuX3NhdmVf
YmFzZWxpbmVfZmlsZXMoZmlsZW5hbWUsIGFjdHVhbF90ZXN0X291dHB1dC5pbWFnZV9oYXNoLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3R1YWxfdGVzdF9vdXRwdXQu
aW1hZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfYXJncy5u
ZXdfYmFzZWxpbmUpCiAgICAgICAgICAgICByZXR1cm4gZmFpbHVyZXMKIAotICAgICAgICAjIENv
bXBhcmUgaGFzaGVzLgotICAgICAgICBleHBlY3RlZF9oYXNoID0gc2VsZi5fcG9ydC5leHBlY3Rl
ZF9jaGVja3N1bShmaWxlbmFtZSkKLSAgICAgICAgZXhwZWN0ZWRfcG5nID0gc2VsZi5fcG9ydC5l
eHBlY3RlZF9pbWFnZShmaWxlbmFtZSkKLQotICAgICAgICBpZiBub3QgZXhwZWN0ZWRfcG5nOgor
ICAgICAgICBpZiBub3QgZXhwZWN0ZWRfdGVzdF9vdXRwdXQuaW1hZ2U6CiAgICAgICAgICAgICAj
IFJlcG9ydCBhIG1pc3NpbmcgZXhwZWN0ZWQgUE5HIGZpbGUuCi0gICAgICAgICAgICBzZWxmLndy
aXRlX291dHB1dF9maWxlcyhmaWxlbmFtZSwgJy5jaGVja3N1bScsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0ZXN0X2FyZ3MuaGFzaCwgZXhwZWN0ZWRfaGFzaCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nPSJhc2NpaSIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludF90ZXh0X2RpZmZzPUZhbHNlKQotICAg
ICAgICAgICAgc2VsZi5fY29weV9vdXRwdXRfcG5nKGZpbGVuYW1lLCB0ZXN0X2FyZ3MucG5nX3Bh
dGgsICctYWN0dWFsLnBuZycpCisgICAgICAgICAgICBzZWxmLl9jb3B5X2ltYWdlKGZpbGVuYW1l
LCBhY3R1YWxfdGVzdF9vdXRwdXQuaW1hZ2UsIGV4cGVjdGVkX2ltYWdlPU5vbmUpCisgICAgICAg
ICAgICBzZWxmLl9jb3B5X2ltYWdlX2hhc2goZmlsZW5hbWUsIGFjdHVhbF90ZXN0X291dHB1dC5p
bWFnZV9oYXNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX3Rl
c3Rfb3V0cHV0LmltYWdlX2hhc2gpCiAgICAgICAgICAgICBmYWlsdXJlcy5hcHBlbmQodGVzdF9m
YWlsdXJlcy5GYWlsdXJlTWlzc2luZ0ltYWdlKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFpbHVy
ZXMKLSAgICAgICAgZWxpZiB0ZXN0X2FyZ3MuaGFzaCA9PSBleHBlY3RlZF9oYXNoOgorICAgICAg
ICBpZiBub3QgZXhwZWN0ZWRfdGVzdF9vdXRwdXQuaW1hZ2VfaGFzaDoKKyAgICAgICAgICAgICMg
UmVwb3J0IGEgbWlzc2luZyBleHBlY3RlZCBjaGVja3N1bSBmaWxlLgorICAgICAgICAgICAgc2Vs
Zi5fY29weV9pbWFnZShmaWxlbmFtZSwgYWN0dWFsX3Rlc3Rfb3V0cHV0LmltYWdlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF90ZXN0X291dHB1dC5pbWFnZSkKKyAgICAg
ICAgICAgIHNlbGYuX2NvcHlfaW1hZ2VfaGFzaChmaWxlbmFtZSwgYWN0dWFsX3Rlc3Rfb3V0cHV0
LmltYWdlX2hhc2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRf
aW1hZ2VfaGFzaD1Ob25lKQorICAgICAgICAgICAgZmFpbHVyZXMuYXBwZW5kKHRlc3RfZmFpbHVy
ZXMuRmFpbHVyZU1pc3NpbmdJbWFnZUhhc2goKSkKKyAgICAgICAgICAgIHJldHVybiBmYWlsdXJl
cworCisgICAgICAgIGlmIGFjdHVhbF90ZXN0X291dHB1dC5pbWFnZV9oYXNoID09IGV4cGVjdGVk
X3Rlc3Rfb3V0cHV0LmltYWdlX2hhc2g6CiAgICAgICAgICAgICAjIEhhc2ggbWF0Y2hlZCAobm8g
ZGlmZiBuZWVkZWQsIG9rYXkgdG8gcmV0dXJuKS4KICAgICAgICAgICAgIHJldHVybiBmYWlsdXJl
cwogCi0gICAgICAgIHNlbGYud3JpdGVfb3V0cHV0X2ZpbGVzKGZpbGVuYW1lLCAnLmNoZWNrc3Vt
JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9hcmdzLmhhc2gsIGV4cGVj
dGVkX2hhc2gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nPSJhc2Np
aSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50X3RleHRfZGlmZnM9RmFs
c2UpCi0KLSAgICAgICAgIyBGSVhNRTogY29tYmluZSBuZXh0IHR3byBsaW5lcwotICAgICAgICBz
ZWxmLl9jb3B5X291dHB1dF9wbmcoZmlsZW5hbWUsIHRlc3RfYXJncy5wbmdfcGF0aCwgJy1hY3R1
YWwucG5nJykKLSAgICAgICAgc2VsZi53cml0ZV9vdXRwdXRfZmlsZXMoZmlsZW5hbWUsICcucG5n
Jywgb3V0cHV0PU5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVk
PWV4cGVjdGVkX3BuZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc9
Tm9uZSwgcHJpbnRfdGV4dF9kaWZmcz1GYWxzZSkKKyAgICAgICAgc2VsZi5fY29weV9pbWFnZShm
aWxlbmFtZSwgYWN0dWFsX3Rlc3Rfb3V0cHV0LmltYWdlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgIGV4cGVjdGVkX3Rlc3Rfb3V0cHV0LmltYWdlKQorICAgICAgICBzZWxmLl9jb3B5X2ltYWdl
X2hhc2goZmlsZW5hbWUsIGFjdHVhbF90ZXN0X291dHB1dC5pbWFnZV9oYXNoLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfdGVzdF9vdXRwdXQuaW1hZ2VfaGFzaCkKIAog
ICAgICAgICAjIEV2ZW4gdGhvdWdoIHdlIG9ubHkgdXNlIHRoZSByZXN1bHQgaW4gb25lIGNvZGVw
YXRoIGJlbG93IGJ1dCB3ZQogICAgICAgICAjIHN0aWxsIG5lZWQgdG8gY2FsbCBDcmVhdGVJbWFn
ZURpZmYgZm9yIG90aGVyIGNvZGVwYXRocy4KLSAgICAgICAgaW1hZ2VzX2FyZV9kaWZmZXJlbnQg
PSBzZWxmLl9jcmVhdGVfaW1hZ2VfZGlmZihwb3J0LCBmaWxlbmFtZSwgY29uZmlndXJhdGlvbikK
LSAgICAgICAgaWYgbm90IGV4cGVjdGVkX2hhc2g6Ci0gICAgICAgICAgICBmYWlsdXJlcy5hcHBl
bmQodGVzdF9mYWlsdXJlcy5GYWlsdXJlTWlzc2luZ0ltYWdlSGFzaCgpKQotICAgICAgICBlbGlm
IHRlc3RfYXJncy5oYXNoICE9IGV4cGVjdGVkX2hhc2g6Ci0gICAgICAgICAgICBpZiBpbWFnZXNf
YXJlX2RpZmZlcmVudDoKLSAgICAgICAgICAgICAgICBmYWlsdXJlcy5hcHBlbmQodGVzdF9mYWls
dXJlcy5GYWlsdXJlSW1hZ2VIYXNoTWlzbWF0Y2goKSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAg
ICAgICAgICAgICAgZmFpbHVyZXMuYXBwZW5kKHRlc3RfZmFpbHVyZXMuRmFpbHVyZUltYWdlSGFz
aEluY29ycmVjdCgpKQorICAgICAgICBpbWFnZXNfYXJlX2RpZmZlcmVudCA9IHNlbGYuX2NyZWF0
ZV9kaWZmX2ltYWdlKHBvcnQsIGZpbGVuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdHVhbF90ZXN0X291dHB1dC5pbWFnZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBl
Y3RlZF90ZXN0X291dHB1dC5pbWFnZSkKKyAgICAgICAgaWYgbm90IGltYWdlc19hcmVfZGlmZmVy
ZW50OgorICAgICAgICAgICAgZmFpbHVyZXMuYXBwZW5kKHRlc3RfZmFpbHVyZXMuRmFpbHVyZUlt
YWdlSGFzaEluY29ycmVjdCgpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZmFpbHVyZXMu
YXBwZW5kKHRlc3RfZmFpbHVyZXMuRmFpbHVyZUltYWdlSGFzaE1pc21hdGNoKCkpCiAKICAgICAg
ICAgcmV0dXJuIGZhaWx1cmVzCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy90ZXN0X3R5cGVzL3Rlc3RfdHlwZV9iYXNlLnB5IGIvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdGVzdF90eXBlcy90ZXN0X3R5cGVfYmFz
ZS5weQppbmRleCBkY2M2NGEzNWIzMzlkZjk4ODBhYWMwNTM4ZjdlODU1OTcyNTgwYjEzLi40Yjk2
YjNhYmZlMWI1OTUxMjI4MTE1MGZkNmZlZWEwNjAzNTQ0YTkzIDEwMDY0NAotLS0gYS9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy90ZXN0X3R5cGVzL3Rlc3RfdHlwZV9i
YXNlLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Rl
c3RfdHlwZXMvdGVzdF90eXBlX2Jhc2UucHkKQEAgLTE0MCwxOCArMTQwLDIyIEBAIGNsYXNzIFRl
c3RUeXBlQmFzZShvYmplY3QpOgogICAgICAgICAgICAgc2VsZi5fcG9ydC5yZWxhdGl2ZV90ZXN0
X2ZpbGVuYW1lKGZpbGVuYW1lKSkKICAgICAgICAgcmV0dXJuIG9zLnBhdGguc3BsaXRleHQob3V0
cHV0X2ZpbGVuYW1lKVswXSArIG1vZGlmaWVyCiAKLSAgICBkZWYgY29tcGFyZV9vdXRwdXQoc2Vs
ZiwgcG9ydCwgZmlsZW5hbWUsIG91dHB1dCwgdGVzdF9hcmdzLCBjb25maWd1cmF0aW9uKToKKyAg
ICBkZWYgY29tcGFyZV9vdXRwdXQoc2VsZiwgcG9ydCwgZmlsZW5hbWUsIHRlc3RfYXJncywgYWN0
dWFsX3Rlc3Rfb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfdGVzdF9v
dXRwdXQpOgogICAgICAgICAiIiJNZXRob2QgdGhhdCBjb21wYXJlcyB0aGUgb3V0cHV0IGZyb20g
dGhlIHRlc3Qgd2l0aCB0aGUKICAgICAgICAgZXhwZWN0ZWQgdmFsdWUuCiAKICAgICAgICAgVGhp
cyBpcyBhbiBhYnN0cmFjdCBtZXRob2QgdG8gYmUgaW1wbGVtZW50ZWQgYnkgYWxsIHN1YiBjbGFz
c2VzLgogCiAgICAgICAgIEFyZ3M6CisgICAgICAgICAgcG9ydDogb2JqZWN0IGltcGxlbWVudGlu
ZyBwb3J0LXNwZWNpZmljIGluZm9ybWF0aW9uIGFuZCBtZXRob2RzCiAgICAgICAgICAgZmlsZW5h
bWU6IGFic29sdXRlIGZpbGVuYW1lIHRvIHRlc3QgZmlsZQotICAgICAgICAgIG91dHB1dDogYSBz
dHJpbmcgY29udGFpbmluZyB0aGUgb3V0cHV0IG9mIHRoZSB0ZXN0CiAgICAgICAgICAgdGVzdF9h
cmdzOiBhIFRlc3RBcmd1bWVudHMgb2JqZWN0IGhvbGRpbmcgb3B0aW9uYWwgYWRkaXRpb25hbAog
ICAgICAgICAgICAgICBhcmd1bWVudHMKLSAgICAgICAgICBjb25maWd1cmF0aW9uOiBEZWJ1ZyBv
ciBSZWxlYXNlCisgICAgICAgICAgYWN0dWFsX3Rlc3Rfb3V0cHV0OiBhIFRlc3RPdXRwdXQgb2Jq
ZWN0IHdoaWNoIHJlcHJlc2VudHMgYWN0dWFsIHRlc3QKKyAgICAgICAgICAgICAgb3V0cHV0Cisg
ICAgICAgICAgZXhwZWN0ZWRfdGVzdF9vdXRwdXQ6IGEgVGVzdE91dHB1dCBvYmplY3Qgd2hpY2gg
cmVwcmVzZW50cyBhIGV4cGVjdGVkCisgICAgICAgICAgICAgIHRlc3Qgb3V0cHV0CiAKICAgICAg
ICAgUmV0dXJuOgogICAgICAgICAgIGEgbGlzdCBvZiBUZXN0RmFpbHVyZSBvYmplY3RzLCBlbXB0
eSBpZiB0aGUgdGVzdCBwYXNzZXMKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3Rlc3RfdHlwZXMvdGV4dF9kaWZmLnB5IGIvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdGVzdF90eXBlcy90ZXh0X2RpZmYucHkKaW5k
ZXggNGMzMmYwZDAyMzQ3M2M2M2I4ZTQ3NGY3NzA5M2EwZmRmYTBhYTMzNy4uNjZlNDJiYTE0Y2E4
MjZmNDU0MTFjNTE5NTQyODUzMmIwZmE1YmUxMSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdGVzdF90eXBlcy90ZXh0X2RpZmYucHkKKysrIGIv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdGVzdF90eXBlcy90ZXh0
X2RpZmYucHkKQEAgLTU1LDEzICs1NSw4IEBAIGNsYXNzIFRlc3RUZXh0RGlmZih0ZXN0X3R5cGVf
YmFzZS5UZXN0VHlwZUJhc2UpOgogICAgICAgICAgICAgICJcclxuIiwgIlxuIikKICAgICAgICAg
cmV0dXJuIG5vcm0gKyAiXG4iCiAKLSAgICBkZWYgX2dldF9ub3JtYWxpemVkX2V4cGVjdGVkX3Rl
eHQoc2VsZiwgZmlsZW5hbWUpOgotICAgICAgICAiIiJHaXZlbiB0aGUgZmlsZW5hbWUgb2YgdGhl
IHRlc3QsIHJlYWQgdGhlIGV4cGVjdGVkIG91dHB1dCBmcm9tIGEgZmlsZQotICAgICAgICBhbmQg
bm9ybWFsaXplIHRoZSB0ZXh0LiAgUmV0dXJucyBhIHN0cmluZyB3aXRoIHRoZSBleHBlY3RlZCB0
ZXh0LCBvciAnJwotICAgICAgICBpZiB0aGUgZXhwZWN0ZWQgb3V0cHV0IGZpbGUgd2FzIG5vdCBm
b3VuZC4iIiIKLSAgICAgICAgcmV0dXJuIHNlbGYuX3BvcnQuZXhwZWN0ZWRfdGV4dChmaWxlbmFt
ZSkKLQotICAgIGRlZiBjb21wYXJlX291dHB1dChzZWxmLCBwb3J0LCBmaWxlbmFtZSwgb3V0cHV0
LCB0ZXN0X2FyZ3MsIGNvbmZpZ3VyYXRpb24pOgorICAgIGRlZiBjb21wYXJlX291dHB1dChzZWxm
LCBwb3J0LCBmaWxlbmFtZSwgdGVzdF9hcmdzLCBhY3R1YWxfdGVzdF9vdXRwdXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICBleHBlY3RlZF90ZXN0X291dHB1dCk6CiAgICAgICAgICIiIkltcGxl
bWVudGF0aW9uIG9mIENvbXBhcmVPdXRwdXQgdGhhdCBjaGVja3MgdGhlIG91dHB1dCB0ZXh0IGFn
YWluc3QKICAgICAgICAgdGhlIGV4cGVjdGVkIHRleHQgZnJvbSB0aGUgTGF5b3V0VGVzdCBkaXJl
Y3RvcnkuIiIiCiAgICAgICAgIGZhaWx1cmVzID0gW10KQEAgLTc2LDE3ICs3MSwxOCBAQCBjbGFz
cyBUZXN0VGV4dERpZmYodGVzdF90eXBlX2Jhc2UuVGVzdFR5cGVCYXNlKToKICAgICAgICAgICAg
IHJldHVybiBmYWlsdXJlcwogCiAgICAgICAgICMgTm9ybWFsaXplIHRleHQgdG8gZGlmZgotICAg
ICAgICBvdXRwdXQgPSBzZWxmLl9nZXRfbm9ybWFsaXplZF9vdXRwdXRfdGV4dChvdXRwdXQpCi0g
ICAgICAgIGV4cGVjdGVkID0gc2VsZi5fZ2V0X25vcm1hbGl6ZWRfZXhwZWN0ZWRfdGV4dChmaWxl
bmFtZSkKKyAgICAgICAgYWN0dWFsX3RleHQgPSBzZWxmLl9nZXRfbm9ybWFsaXplZF9vdXRwdXRf
dGV4dChhY3R1YWxfdGVzdF9vdXRwdXQudGV4dCkKKyAgICAgICAgIyBBc3N1bWluZyBleHBlY3Rl
ZF90ZXh0IGlzIGFscmVhZHkgbm9ybWFsaXplZC4KKyAgICAgICAgZXhwZWN0ZWRfdGV4dCA9IGV4
cGVjdGVkX3Rlc3Rfb3V0cHV0LnRleHQKIAogICAgICAgICAjIFdyaXRlIG91dHB1dCBmaWxlcyBm
b3IgbmV3IHRlc3RzLCB0b28uCi0gICAgICAgIGlmIHBvcnQuY29tcGFyZV90ZXh0KG91dHB1dCwg
ZXhwZWN0ZWQpOgorICAgICAgICBpZiBwb3J0LmNvbXBhcmVfdGV4dChhY3R1YWxfdGV4dCwgZXhw
ZWN0ZWRfdGV4dCk6CiAgICAgICAgICAgICAjIFRleHQgZG9lc24ndCBtYXRjaCwgd3JpdGUgb3V0
cHV0IGZpbGVzLgotICAgICAgICAgICAgc2VsZi53cml0ZV9vdXRwdXRfZmlsZXMoZmlsZW5hbWUs
ICIudHh0Iiwgb3V0cHV0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhw
ZWN0ZWQsIGVuY29kaW5nPU5vbmUsCisgICAgICAgICAgICBzZWxmLndyaXRlX291dHB1dF9maWxl
cyhmaWxlbmFtZSwgIi50eHQiLCBhY3R1YWxfdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGV4cGVjdGVkX3RleHQsIGVuY29kaW5nPU5vbmUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwcmludF90ZXh0X2RpZmZzPVRydWUpCiAKLSAgICAgICAg
ICAgIGlmIGV4cGVjdGVkID09ICcnOgorICAgICAgICAgICAgaWYgZXhwZWN0ZWRfdGV4dCA9PSAn
JzoKICAgICAgICAgICAgICAgICBmYWlsdXJlcy5hcHBlbmQodGVzdF9mYWlsdXJlcy5GYWlsdXJl
TWlzc2luZ1Jlc3VsdCgpKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBmYWls
dXJlcy5hcHBlbmQodGVzdF9mYWlsdXJlcy5GYWlsdXJlVGV4dE1pc21hdGNoKCkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74125</attachid>
            <date>2010-11-17 09:35:23 -0800</date>
            <delta_ts>2010-11-17 13:21:51 -0800</delta_ts>
            <desc>merge-tot</desc>
            <filename>bug-49431-20101118023520.patch</filename>
            <type>text/plain</type>
            <size>35233</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBkY2E1MGU5OTIzYTdiNjNhMGI2ZDZmNTI0YjE3YzM3NTZkN2UyMzU0Li5kMmIwZTRk
NDk4NzcwOTQwZjA0YzhkYmQyNzA3MzljZGEwYzk3MDYwIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAK
KzIwMTAtMTEtMTYgIEhheWF0byBJdG8gIDxoYXlhdG9AY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFJlZmFjdG9yIFRlc3RUeXBlQmFzZS5jb21wYXJlX291dHB1dCgpLgorCisgICAgICAgIEludHJv
ZHVjZSBhIFRlc3RPdXRwdXQgY2xhc3MgYW5kIHVwZGF0ZSBjb21wYXJlX291dHB1dCgpIG9mIGVh
Y2ggdGVzdAorICAgICAgICB0eXBlcyBzbyB0aGF0IHRoZXkgY2FuIHRha2UgYm90aCBhY3R1YWwg
YW5kIGV4cGVjdGVkIFRlc3RPdXRwdXQgb2JqZWN0cy4KKworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDk0MzEKKworICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2R1bXBfcmVuZGVyX3RyZWVfdGhyZWFk
LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNr
YWdlL3Rlc3Rfb3V0cHV0LnB5OiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L2Jhc2UucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L2RyeXJ1bi5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L3Rlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC93ZWJraXQucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy90ZXN0X3R5cGVzL2ltYWdlX2RpZmYucHk6CisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdGVzdF90eXBlcy90ZXN0X3R5cGVfYmFzZS5weToKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy90ZXN0X3R5cGVzL3RleHRfZGlm
Zi5weToKKwogMjAxMC0xMS0xNiAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBPamFuIFZhZmFpLgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvZHVtcF9yZW5k
ZXJfdHJlZV90aHJlYWQucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9sYXlvdXRfcGFja2FnZS9kdW1wX3JlbmRlcl90cmVlX3RocmVhZC5weQppbmRleCA3MDNm
OWRlZWU3NzhjMDc0MDNmMGViNmUxYzk0ZjI5ZThhZmU2YTA2Li44MDU0Y2ExODZmOWY2ZWM5NmM0
NzhkNzBiN2NlNWEwODUxY2ZlYzZmIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9kdW1wX3JlbmRlcl90cmVlX3RocmVh
ZC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlv
dXRfcGFja2FnZS9kdW1wX3JlbmRlcl90cmVlX3RocmVhZC5weQpAQCAtNTEsNiArNTEsNyBAQCBp
bXBvcnQgdGltZQogaW1wb3J0IHRyYWNlYmFjawogCiBpbXBvcnQgdGVzdF9mYWlsdXJlcworaW1w
b3J0IHRlc3Rfb3V0cHV0CiBpbXBvcnQgdGVzdF9yZXN1bHRzCiAKIF9sb2cgPSBsb2dnaW5nLmdl
dExvZ2dlcigid2Via2l0cHkubGF5b3V0X3Rlc3RzLmxheW91dF9wYWNrYWdlLiIKQEAgLTc0LDkg
Kzc1LDE0IEBAIGRlZiBsb2dfc3RhY2soc3RhY2spOgogICAgICAgICAgICAgX2xvZy5lcnJvcign
ICAlcycgJSBsaW5lLnN0cmlwKCkpCiAKIAorZGVmIF9leHBlY3RlZF90ZXN0X291dHB1dChwb3J0
LCBmaWxlbmFtZSk6CisgICAgIiIiUmV0dXJucyBhbiBleHBlY3RlZCBUZXN0T3V0cHV0IG9iamVj
dC4iIiIKKyAgICByZXR1cm4gdGVzdF9vdXRwdXQuVGVzdE91dHB1dChwb3J0LmV4cGVjdGVkX3Rl
eHQoZmlsZW5hbWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcnQuZXhw
ZWN0ZWRfaW1hZ2UoZmlsZW5hbWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHBvcnQuZXhwZWN0ZWRfY2hlY2tzdW0oZmlsZW5hbWUpKQorCiBkZWYgX3Byb2Nlc3Nfb3V0cHV0
KHBvcnQsIG9wdGlvbnMsIHRlc3RfaW5wdXQsIHRlc3RfdHlwZXMsIHRlc3RfYXJncywKLSAgICAg
ICAgICAgICAgICAgICAgY3Jhc2gsIHRpbWVvdXQsIHRlc3RfcnVuX3RpbWUsIGFjdHVhbF9jaGVj
a3N1bSwKLSAgICAgICAgICAgICAgICAgICAgb3V0cHV0LCBlcnJvcik6CisgICAgICAgICAgICAg
ICAgICAgIHRlc3Rfb3V0cHV0KToKICAgICAiIiJSZWNlaXZlcyB0aGUgb3V0cHV0IGZyb20gYSBE
dW1wUmVuZGVyVHJlZSBwcm9jZXNzLCBzdWJqZWN0cyBpdCB0byBhCiAgICAgbnVtYmVyIG9mIHRl
c3RzLCBhbmQgcmV0dXJucyBhIGxpc3Qgb2YgZmFpbHVyZSB0eXBlcyB0aGUgdGVzdCBwcm9kdWNl
ZC4KIApAQCAtODcsMjQgKzkzLDIwIEBAIGRlZiBfcHJvY2Vzc19vdXRwdXQocG9ydCwgb3B0aW9u
cywgdGVzdF9pbnB1dCwgdGVzdF90eXBlcywgdGVzdF9hcmdzLAogICAgICAgdGVzdF9pbnB1dDog
T2JqZWN0IGNvbnRhaW5pbmcgdGhlIHRlc3QgZmlsZW5hbWUsIHVyaSBhbmQgdGltZW91dAogICAg
ICAgdGVzdF90eXBlczogbGlzdCBvZiB0ZXN0IHR5cGVzIHRvIHN1YmplY3QgdGhlIG91dHB1dCB0
bwogICAgICAgdGVzdF9hcmdzOiBhcmd1bWVudHMgdG8gYmUgcGFzc2VkIHRvIGVhY2ggdGVzdAor
ICAgICAgdGVzdF9vdXRwdXQ6IGEgYWN0dWFsIHRlc3Rfb3V0cHV0CiAKICAgICBSZXR1cm5zOiBh
IFRlc3RSZXN1bHQgb2JqZWN0CiAgICAgIiIiCiAgICAgZmFpbHVyZXMgPSBbXQogCi0gICAgIyBT
b21lIHRlc3QgYXJncywgc3VjaCBhcyB0aGUgaW1hZ2UgaGFzaCwgbWF5IGJlIGFkZGVkIG9yIGNo
YW5nZWQgb24gYQotICAgICMgdGVzdC1ieS10ZXN0IGJhc2lzLgotICAgIGxvY2FsX3Rlc3RfYXJn
cyA9IGNvcHkuY29weSh0ZXN0X2FyZ3MpCi0KLSAgICBsb2NhbF90ZXN0X2FyZ3MuaGFzaCA9IGFj
dHVhbF9jaGVja3N1bQotCi0gICAgaWYgY3Jhc2g6CisgICAgaWYgdGVzdF9vdXRwdXQuY3Jhc2g6
CiAgICAgICAgIGZhaWx1cmVzLmFwcGVuZCh0ZXN0X2ZhaWx1cmVzLkZhaWx1cmVDcmFzaCgpKQot
ICAgIGlmIHRpbWVvdXQ6CisgICAgaWYgdGVzdF9vdXRwdXQudGltZW91dDoKICAgICAgICAgZmFp
bHVyZXMuYXBwZW5kKHRlc3RfZmFpbHVyZXMuRmFpbHVyZVRpbWVvdXQoKSkKIAotICAgIGlmIGNy
YXNoOgotICAgICAgICBfbG9nLmRlYnVnKCJTdGFja3RyYWNlIGZvciAlczpcbiVzIiAlICh0ZXN0
X2lucHV0LmZpbGVuYW1lLCBlcnJvcikpCisgICAgaWYgdGVzdF9vdXRwdXQuY3Jhc2g6CisgICAg
ICAgIF9sb2cuZGVidWcoIlN0YWNrdHJhY2UgZm9yICVzOlxuJXMiICUgKHRlc3RfaW5wdXQuZmls
ZW5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRl
c3Rfb3V0cHV0LmVycm9yKSkKICAgICAgICAgIyBTdHJpcCBvZmYgImZpbGU6Ly8iIHNpbmNlIFJl
bGF0aXZlVGVzdEZpbGVuYW1lIGV4cGVjdHMKICAgICAgICAgIyBmaWxlc3lzdGVtIHBhdGhzLgog
ICAgICAgICBmaWxlbmFtZSA9IG9zLnBhdGguam9pbihvcHRpb25zLnJlc3VsdHNfZGlyZWN0b3J5
LApAQCAtMTEzLDkgKzExNSwxMSBAQCBkZWYgX3Byb2Nlc3Nfb3V0cHV0KHBvcnQsIG9wdGlvbnMs
IHRlc3RfaW5wdXQsIHRlc3RfdHlwZXMsIHRlc3RfYXJncywKICAgICAgICAgZmlsZW5hbWUgPSBv
cy5wYXRoLnNwbGl0ZXh0KGZpbGVuYW1lKVswXSArICItc3RhY2sudHh0IgogICAgICAgICBwb3J0
Lm1heWJlX21ha2VfZGlyZWN0b3J5KG9zLnBhdGguc3BsaXQoZmlsZW5hbWUpWzBdKQogICAgICAg
ICB3aXRoIGNvZGVjcy5vcGVuKGZpbGVuYW1lLCAid2IiLCAidXRmLTgiKSBhcyBmaWxlOgotICAg
ICAgICAgICAgZmlsZS53cml0ZShlcnJvcikKLSAgICBlbGlmIGVycm9yOgotICAgICAgICBfbG9n
LmRlYnVnKCJQcmV2aW91cyB0ZXN0IG91dHB1dCBzdGRlcnIgbGluZXM6XG4lcyIgJSBlcnJvcikK
KyAgICAgICAgICAgIGZpbGUud3JpdGUodGVzdF9vdXRwdXQuZXJyb3IpCisgICAgZWxpZiB0ZXN0
X291dHB1dC5lcnJvcjoKKyAgICAgICAgX2xvZy5kZWJ1ZygiUHJldmlvdXMgdGVzdCBvdXRwdXQg
c3RkZXJyIGxpbmVzOlxuJXMiICUgdGVzdF9vdXRwdXQuZXJyb3IpCisKKyAgICBleHBlY3RlZF90
ZXN0X291dHB1dCA9IF9leHBlY3RlZF90ZXN0X291dHB1dChwb3J0LCB0ZXN0X2lucHV0LmZpbGVu
YW1lKQogCiAgICAgIyBDaGVjayB0aGUgb3V0cHV0IGFuZCBzYXZlIHRoZSByZXN1bHRzLgogICAg
IHN0YXJ0X3RpbWUgPSB0aW1lLnRpbWUoKQpAQCAtMTIzLDE4ICsxMjcsMTggQEAgZGVmIF9wcm9j
ZXNzX291dHB1dChwb3J0LCBvcHRpb25zLCB0ZXN0X2lucHV0LCB0ZXN0X3R5cGVzLCB0ZXN0X2Fy
Z3MsCiAgICAgZm9yIHRlc3RfdHlwZSBpbiB0ZXN0X3R5cGVzOgogICAgICAgICBzdGFydF9kaWZm
X3RpbWUgPSB0aW1lLnRpbWUoKQogICAgICAgICBuZXdfZmFpbHVyZXMgPSB0ZXN0X3R5cGUuY29t
cGFyZV9vdXRwdXQocG9ydCwgdGVzdF9pbnB1dC5maWxlbmFtZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dCwgbG9jYWxfdGVzdF9hcmdzLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5j
b25maWd1cmF0aW9uKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdGVzdF9hcmdzLCB0ZXN0X291dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX3Rlc3Rfb3V0cHV0KQogICAgICAgICAjIERv
bid0IGFkZCBhbnkgbW9yZSBmYWlsdXJlcyBpZiB3ZSBhbHJlYWR5IGhhdmUgYSBjcmFzaCwgc28g
d2UgZG9uJ3QKICAgICAgICAgIyBkb3VibGUtcmVwb3J0IHRob3NlIHRlc3RzLiBXZSBkbyBkb3Vi
bGUtcmVwb3J0IGZvciB0aW1lb3V0cyBzaW5jZQogICAgICAgICAjIHdlIHN0aWxsIHdhbnQgdG8g
c2VlIHRoZSB0ZXh0IGFuZCBpbWFnZSBvdXRwdXQuCi0gICAgICAgIGlmIG5vdCBjcmFzaDoKKyAg
ICAgICAgaWYgbm90IHRlc3Rfb3V0cHV0LmNyYXNoOgogICAgICAgICAgICAgZmFpbHVyZXMuZXh0
ZW5kKG5ld19mYWlsdXJlcykKICAgICAgICAgdGltZV9mb3JfZGlmZnNbdGVzdF90eXBlLl9fY2xh
c3NfXy5fX25hbWVfX10gPSAoCiAgICAgICAgICAgICB0aW1lLnRpbWUoKSAtIHN0YXJ0X2RpZmZf
dGltZSkKIAogICAgIHRvdGFsX3RpbWVfZm9yX2FsbF9kaWZmcyA9IHRpbWUudGltZSgpIC0gc3Rh
cnRfZGlmZl90aW1lCi0gICAgcmV0dXJuIHRlc3RfcmVzdWx0cy5UZXN0UmVzdWx0KHRlc3RfaW5w
dXQuZmlsZW5hbWUsIGZhaWx1cmVzLCB0ZXN0X3J1bl90aW1lLAorICAgIHJldHVybiB0ZXN0X3Jl
c3VsdHMuVGVzdFJlc3VsdCh0ZXN0X2lucHV0LmZpbGVuYW1lLCBmYWlsdXJlcywgdGVzdF9vdXRw
dXQudGVzdF90aW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3RhbF90
aW1lX2Zvcl9hbGxfZGlmZnMsIHRpbWVfZm9yX2RpZmZzKQogCiAKQEAgLTE1Nyw2ICsxNjEsMjMg
QEAgZGVmIF9zaG91bGRfZmV0Y2hfZXhwZWN0ZWRfY2hlY2tzdW0ob3B0aW9ucyk6CiAgICAgcmV0
dXJuIG9wdGlvbnMucGl4ZWxfdGVzdHMgYW5kIG5vdCAob3B0aW9ucy5uZXdfYmFzZWxpbmUgb3Ig
b3B0aW9ucy5yZXNldF9yZXN1bHRzKQogCiAKK2RlZiBfcnVuX3NpbmdsZV90ZXN0KHBvcnQsIG9w
dGlvbnMsIHRlc3RfaW5wdXQsIHRlc3RfdHlwZXMsIHRlc3RfYXJncywgZHJpdmVyKToKKyAgICAj
IEZJWE1FOiBQdWxsIHRoaXMgaW50byBUZXN0U2hlbGxUaHJlYWQuX3J1bigpLgorCisgICAgIyBU
aGUgaW1hZ2UgaGFzaCBpcyB1c2VkIHRvIGF2b2lkIGRvaW5nIGFuIGltYWdlIGR1bXAgaWYgdGhl
CisgICAgIyBjaGVja3N1bXMgbWF0Y2gsIHNvIGl0IHNob3VsZCBiZSBzZXQgdG8gYSBibGFuayB2
YWx1ZSBpZiB3ZQorICAgICMgYXJlIGdlbmVyYXRpbmcgYSBuZXcgYmFzZWxpbmUuICAoT3RoZXJ3
aXNlLCBhbiBpbWFnZSBmcm9tIGEKKyAgICAjIHByZXZpb3VzIHJ1biB3aWxsIGJlIGNvcGllZCBp
bnRvIHRoZSBiYXNlbGluZS4iIiIKKyAgICBpZiBfc2hvdWxkX2ZldGNoX2V4cGVjdGVkX2NoZWNr
c3VtKG9wdGlvbnMpOgorICAgICAgICBpbWFnZV9oYXNoX3RvX2RyaXZlciA9IHBvcnQuZXhwZWN0
ZWRfY2hlY2tzdW0odGVzdF9pbnB1dC5maWxlbmFtZSkKKyAgICBlbHNlOgorICAgICAgICBpbWFn
ZV9oYXNoX3RvX2RyaXZlciA9IE5vbmUKKyAgICB0ZXN0X2lucHV0LnVyaSA9IHBvcnQuZmlsZW5h
bWVfdG9fdXJpKHRlc3RfaW5wdXQuZmlsZW5hbWUpLnN0cmlwKCkKKyAgICB0ZXN0X291dHB1dCA9
IGRyaXZlci5ydW5fdGVzdCh0ZXN0X2lucHV0LnVyaSwgdGVzdF9pbnB1dC50aW1lb3V0LCBpbWFn
ZV9oYXNoX3RvX2RyaXZlcikKKyAgICByZXR1cm4gX3Byb2Nlc3Nfb3V0cHV0KHBvcnQsIG9wdGlv
bnMsIHRlc3RfaW5wdXQsIHRlc3RfdHlwZXMsIHRlc3RfYXJncywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRlc3Rfb3V0cHV0KQorCisKIGNsYXNzIFNpbmdsZVRlc3RUaHJlYWQodGhyZWFk
aW5nLlRocmVhZCk6CiAgICAgIiIiVGhyZWFkIHdyYXBwZXIgZm9yIHJ1bm5pbmcgYSBzaW5nbGUg
dGVzdCBmaWxlLiIiIgogCkBAIC0xODUsMjUgKzIwNiwxMiBAQCBjbGFzcyBTaW5nbGVUZXN0VGhy
ZWFkKHRocmVhZGluZy5UaHJlYWQpOgogICAgIGRlZiBfY292ZXJlZF9ydW4oc2VsZik6CiAgICAg
ICAgICMgRklYTUU6IHRoaXMgaXMgYSBzZXBhcmF0ZSByb3V0aW5lIHRvIHdvcmsgYXJvdW5kIGEg
YnVnCiAgICAgICAgICMgaW4gY292ZXJhZ2U6IHNlZSBodHRwOi8vYml0YnVja2V0Lm9yZy9uZWQv
Y292ZXJhZ2VweS9pc3N1ZS84NS4KLQotICAgICAgICAjIEZJWE1FOiBQdWxsIHRoaXMgaW50byBU
ZXN0U2hlbGxUaHJlYWQuX3J1bigpLgotICAgICAgICB0ZXN0X2lucHV0ID0gc2VsZi5fdGVzdF9p
bnB1dAotICAgICAgICB0ZXN0X2lucHV0LnVyaSA9IHNlbGYuX3BvcnQuZmlsZW5hbWVfdG9fdXJp
KHRlc3RfaW5wdXQuZmlsZW5hbWUpCi0gICAgICAgIGlmIF9zaG91bGRfZmV0Y2hfZXhwZWN0ZWRf
Y2hlY2tzdW0oc2VsZi5fb3B0aW9ucyk6Ci0gICAgICAgICAgICB0ZXN0X2lucHV0LmltYWdlX2No
ZWNrc3VtID0gc2VsZi5fcG9ydC5leHBlY3RlZF9jaGVja3N1bSh0ZXN0X2lucHV0LmZpbGVuYW1l
KQotCi0gICAgICAgIHN0YXJ0ID0gdGltZS50aW1lKCkKICAgICAgICAgc2VsZi5fZHJpdmVyID0g
c2VsZi5fcG9ydC5jcmVhdGVfZHJpdmVyKHNlbGYuX3Rlc3RfYXJncy5wbmdfcGF0aCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMp
CiAgICAgICAgIHNlbGYuX2RyaXZlci5zdGFydCgpCi0gICAgICAgIGNyYXNoLCB0aW1lb3V0LCBh
Y3R1YWxfY2hlY2tzdW0sIG91dHB1dCwgZXJyb3IgPSBcCi0gICAgICAgICAgICBzZWxmLl9kcml2
ZXIucnVuX3Rlc3QodGVzdF9pbnB1dC51cmksIHRlc3RfaW5wdXQudGltZW91dCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2lucHV0LmltYWdlX2NoZWNrc3VtKQotICAg
ICAgICBlbmQgPSB0aW1lLnRpbWUoKQotICAgICAgICBzZWxmLl90ZXN0X3Jlc3VsdCA9IF9wcm9j
ZXNzX291dHB1dChzZWxmLl9wb3J0LCBzZWxmLl9vcHRpb25zLAotICAgICAgICAgICAgdGVzdF9p
bnB1dCwgc2VsZi5fdGVzdF90eXBlcywgc2VsZi5fdGVzdF9hcmdzLAotICAgICAgICAgICAgY3Jh
c2gsIHRpbWVvdXQsIGVuZCAtIHN0YXJ0LAotICAgICAgICAgICAgYWN0dWFsX2NoZWNrc3VtLCBv
dXRwdXQsIGVycm9yKQorICAgICAgICBzZWxmLl90ZXN0X3Jlc3VsdCA9IF9ydW5fc2luZ2xlX3Rl
c3Qoc2VsZi5fcG9ydCwgc2VsZi5fb3B0aW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNlbGYuX3Rlc3RfaW5wdXQsIHNlbGYuX3Rlc3RfdHlwZXMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl90ZXN0X2Fy
Z3MsIHNlbGYuX2RyaXZlcikKICAgICAgICAgc2VsZi5fZHJpdmVyLnN0b3AoKQogCiAgICAgZGVm
IGdldF90ZXN0X3Jlc3VsdChzZWxmKToKQEAgLTUwMSwzMiArNTA5LDE0IEBAIGNsYXNzIFRlc3RT
aGVsbFRocmVhZChXYXRjaGFibGVUaHJlYWQpOgogICAgICAgICBSZXR1cm5zOiBhIFRlc3RSZXN1
bHQgb2JqZWN0LgogICAgICAgICAiIiIKICAgICAgICAgc2VsZi5fZW5zdXJlX2R1bXBfcmVuZGVy
X3RyZWVfaXNfcnVubmluZygpCi0gICAgICAgICMgVGhlIHBpeGVsX2hhc2ggaXMgdXNlZCB0byBh
dm9pZCBkb2luZyBhbiBpbWFnZSBkdW1wIGlmIHRoZQotICAgICAgICAjIGNoZWNrc3VtcyBtYXRj
aCwgc28gaXQgc2hvdWxkIGJlIHNldCB0byBhIGJsYW5rIHZhbHVlIGlmIHdlCi0gICAgICAgICMg
YXJlIGdlbmVyYXRpbmcgYSBuZXcgYmFzZWxpbmUuICAoT3RoZXJ3aXNlLCBhbiBpbWFnZSBmcm9t
IGEKLSAgICAgICAgIyBwcmV2aW91cyBydW4gd2lsbCBiZSBjb3BpZWQgaW50byB0aGUgYmFzZWxp
bmUuKQotCi0gICAgICAgICMgRklYTUU6IFB1bGwgdGhpcyBpbnRvIFRlc3RTaGVsbFRocmVhZC5f
cnVuKCkuCi0gICAgICAgIHRlc3RfaW5wdXQudXJpID0gc2VsZi5fcG9ydC5maWxlbmFtZV90b191
cmkodGVzdF9pbnB1dC5maWxlbmFtZSkKLSAgICAgICAgaWYgX3Nob3VsZF9mZXRjaF9leHBlY3Rl
ZF9jaGVja3N1bShzZWxmLl9vcHRpb25zKToKLSAgICAgICAgICAgIHRlc3RfaW5wdXQuaW1hZ2Vf
Y2hlY2tzdW0gPSBzZWxmLl9wb3J0LmV4cGVjdGVkX2NoZWNrc3VtKHRlc3RfaW5wdXQuZmlsZW5h
bWUpCi0gICAgICAgIHN0YXJ0ID0gdGltZS50aW1lKCkKLQogICAgICAgICB0aHJlYWRfdGltZW91
dCA9IF9taWxsaXNlY29uZHNfdG9fc2Vjb25kcygKICAgICAgICAgICAgICBfcGFkX3RpbWVvdXQo
aW50KHRlc3RfaW5wdXQudGltZW91dCkpKQotICAgICAgICBzZWxmLl9uZXh0X3RpbWVvdXQgPSBz
dGFydCArIHRocmVhZF90aW1lb3V0Ci0KLSAgICAgICAgY3Jhc2gsIHRpbWVvdXQsIGFjdHVhbF9j
aGVja3N1bSwgb3V0cHV0LCBlcnJvciA9IFwKLSAgICAgICAgICAgc2VsZi5fZHJpdmVyLnJ1bl90
ZXN0KHRlc3RfaW5wdXQudXJpLCB0ZXN0X2lucHV0LnRpbWVvdXQsIHRlc3RfaW5wdXQuaW1hZ2Vf
Y2hlY2tzdW0pCi0gICAgICAgIGVuZCA9IHRpbWUudGltZSgpCi0KLSAgICAgICAgcmVzdWx0ID0g
X3Byb2Nlc3Nfb3V0cHV0KHNlbGYuX3BvcnQsIHNlbGYuX29wdGlvbnMsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0ZXN0X2lucHV0LCBzZWxmLl90ZXN0X3R5cGVzLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fdGVzdF9hcmdzLCBjcmFzaCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQsIGVuZCAtIHN0YXJ0LCBhY3R1YWxf
Y2hlY2tzdW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQsIGVycm9y
KQotICAgICAgICBzZWxmLl90ZXN0X3Jlc3VsdHMuYXBwZW5kKHJlc3VsdCkKLSAgICAgICAgcmV0
dXJuIHJlc3VsdAorICAgICAgICBzZWxmLl9uZXh0X3RpbWVvdXQgPSB0aW1lLnRpbWUoKSArIHRo
cmVhZF90aW1lb3V0CisgICAgICAgIHRlc3RfcmVzdWx0ID0gX3J1bl9zaW5nbGVfdGVzdChzZWxm
Ll9wb3J0LCBzZWxmLl9vcHRpb25zLCB0ZXN0X2lucHV0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2VsZi5fdGVzdF90eXBlcywgc2VsZi5fdGVzdF9hcmdzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZHJpdmVyKQorICAgICAg
ICBzZWxmLl90ZXN0X3Jlc3VsdHMuYXBwZW5kKHRlc3RfcmVzdWx0KQorICAgICAgICByZXR1cm4g
dGVzdF9yZXN1bHQKIAogICAgIGRlZiBfZW5zdXJlX2R1bXBfcmVuZGVyX3RyZWVfaXNfcnVubmlu
ZyhzZWxmKToKICAgICAgICAgIiIiU3RhcnQgdGhlIHNoYXJlZCBEdW1wUmVuZGVyVHJlZSwgaWYg
aXQncyBub3QgcnVubmluZy4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3Rfb3V0cHV0LnB5IGIvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9vdXRw
dXQucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZTgwOWJlNjI1ZDViZTkzNmU0MzBjZTdjM2I0NjdlMDA1NWM0OGE4
NgotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3Rfb3V0cHV0LnB5CkBAIC0wLDAgKzEsNTYgQEAKKyMg
Q29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisj
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisj
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorCisKK2NsYXNzIFRlc3RPdXRwdXQob2JqZWN0KToKKyAgICAiIiJHcm91
cHMgaW5mb3JtYXRpb24gYWJvdXQgYSB0ZXN0IG91dHB1dCBmb3IgZWFzeSBwYXNzaW5nIG9mIGRh
dGEuCisKKyAgICBUaGlzIGlzIHVzZWQgbm90IG9ubHkgZm9yIGEgYWN0dWFsIHRlc3Qgb3V0cHV0
LCBidXQgYWxzbyBmb3IgZ3JvdXBpbmcKKyAgICBleHBlY3RlZCB0ZXN0IG91dHB1dC4KKyAgICAi
IiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0ZXh0LCBpbWFnZSwgaW1hZ2VfaGFzaCwKKyAg
ICAgICAgICAgICAgICAgY3Jhc2g9Tm9uZSwgdGVzdF90aW1lPU5vbmUsIHRpbWVvdXQ9Tm9uZSwg
ZXJyb3I9Tm9uZSk6CisgICAgICAgICIiIkluaXRpYWxpemVzIGEgVGVzdE91dHB1dCBvYmplY3Qu
CisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICB0ZXh0OiBhIHRleHQgb3V0cHV0CisgICAgICAg
ICAgaW1hZ2U6IGFuIGltYWdlIG91dHB1dAorICAgICAgICAgIGltYWdlX2hhc2g6IGEgc3RyaW5n
IGNvbnRhaW5pbmcgdGhlIGNoZWNrc3VtIG9mIHRoZSBpbWFnZQorICAgICAgICAgIGNyYXNoOiBh
IGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBkcml2ZXIgY3Jhc2hlZCBvbiB0aGUgdGVz
dAorICAgICAgICAgIHRlc3RfdGltZTogYSB0aW1lIHdoaWNoIHRoZSB0ZXN0IGhhcyB0YWtlbgor
ICAgICAgICAgIHRpbWVvdXQ6IGEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZWh0ZXIgdGhlIHRlc3Qg
dGltZWQgb3V0CisgICAgICAgICAgZXJyb3I6IGFueSB1bmV4cGVjdGVkIG9yIGFkZGl0aW9uYWwg
KG9yIGVycm9yKSB0ZXh0IG91dHB1dAorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi50ZXh0ID0g
dGV4dAorICAgICAgICBzZWxmLmltYWdlID0gaW1hZ2UKKyAgICAgICAgc2VsZi5pbWFnZV9oYXNo
ID0gaW1hZ2VfaGFzaAorICAgICAgICBzZWxmLmNyYXNoID0gY3Jhc2gKKyAgICAgICAgc2VsZi50
ZXN0X3RpbWUgPSB0ZXN0X3RpbWUKKyAgICAgICAgc2VsZi50aW1lb3V0ID0gdGltZW91dAorICAg
ICAgICBzZWxmLmVycm9yID0gZXJyb3IKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQppbmRleCA0YTI5NzBlMzIwM2M2MDBm
NWUyODlmOGU4M2RkOGFhNDI5MDBhMWI0Li42MzI4MDZmYjJjZTMwZjUzODkzZDQ4ZTc4NTBiYzBm
Yjg4NzRjMzkwIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L2Jhc2UucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5CkBAIC04MzIsMTYgKzgzMiw4IEBAIGNsYXNzIERyaXZl
cjoKICAgICAgICAgY2hlY2tzdW0gLSBpZiBwcmVzZW50LCB0aGUgZXhwZWN0ZWQgY2hlY2tzdW0g
Zm9yIHRoZSBpbWFnZSBmb3IgdGhpcwogICAgICAgICAgICAgdGVzdAogCi0gICAgICAgIFJldHVy
bnMgYSB0dXBsZSBvZiB0aGUgZm9sbG93aW5nOgotICAgICAgICAgICAgY3Jhc2ggLSBhIGJvb2xl
YW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBkcml2ZXIgY3Jhc2hlZCBvbiB0aGUgdGVzdAotICAg
ICAgICAgICAgdGltZW91dCAtIGEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZWh0ZXIgdGhlIHRlc3Qg
dGltZWQgb3V0Ci0gICAgICAgICAgICBjaGVja3N1bSAtIGEgc3RyaW5nIGNvbnRhaW5pbmcgdGhl
IGNoZWNrc3VtIG9mIHRoZSBpbWFnZSwgaWYKLSAgICAgICAgICAgICAgICBwcmVzZW50Ci0gICAg
ICAgICAgICBvdXRwdXQgLSBhbnkgdGV4dCBvdXRwdXQKLSAgICAgICAgICAgIGVycm9yIC0gYW55
IHVuZXhwZWN0ZWQgb3IgYWRkaXRpb25hbCAob3IgZXJyb3IpIHRleHQgb3V0cHV0Ci0KLSAgICAg
ICAgTm90ZSB0aGF0IHRoZSBpbWFnZSBpdHNlbGYgc2hvdWxkIGJlIHdyaXR0ZW4gdG8gdGhlIHBh
dGggdGhhdCB3YXMKLSAgICAgICAgc3BlY2lmaWVkIGluIHRoZSBfX2luaXRfXygpIGNhbGwuIiIi
CisgICAgICAgIFJldHVybnMgYSBUZXN0T3V0cHV0IG9iamVjdC4KKyAgICAgICAgIiIiCiAgICAg
ICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoJ0RyaXZlci5ydW5fdGVzdCcpCiAKICAgICAj
IEZJWE1FOiBUaGlzIGlzIHN0YXRpYyBzbyB3ZSBjYW4gdGVzdCBpdCB3L28gY3JlYXRpbmcgYSBC
YXNlIGluc3RhbmNlLgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkKaW5kZXggZjkzZjlhOGQ5NGYwZDRkMTM0
MDE0OTVmMTE0ZjQ1M2E0N2E2MGY1MS4uMzE0OTI5MDk5YWMxMzZkMjg2MTJlM2NjZjc4MTcyMTkw
ZGY4ZmQzMiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9jaHJvbWl1bS5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5CkBAIC00NiwxMyArNDYsMTEgQEAgaW1wb3J0
IHdlYmJyb3dzZXIKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0
IEV4ZWN1dGl2ZQogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLnBhdGggaW1wb3J0IGN5Z3Bh
dGgKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmxheW91dF9wYWNrYWdlIGltcG9ydCB0ZXN0
X2V4cGVjdGF0aW9ucworZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubGF5b3V0X3BhY2thZ2Ug
aW1wb3J0IHRlc3Rfb3V0cHV0CiAKIGltcG9ydCBiYXNlCiBpbXBvcnQgaHR0cF9zZXJ2ZXIKIAot
ZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgRXhlY3V0aXZlCi1m
cm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZSBpbXBvcnQgdGVzdF9leHBl
Y3RhdGlvbnMKLQogIyBDaHJvbWl1bSBEUlQgb24gT1NYIHVzZXMgV2ViS2l0RHJpdmVyLgogaWYg
c3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nOgogICAgIGltcG9ydCB3ZWJraXQKQEAgLTQ0Nyw2ICs0
NDUsMTUgQEAgY2xhc3MgQ2hyb21pdW1Ecml2ZXIoYmFzZS5Ecml2ZXIpOgogICAgICAgICBjbWQg
Kz0gIlxuIgogICAgICAgICByZXR1cm4gY21kCiAKKyAgICBkZWYgX291dHB1dF9pbWFnZShzZWxm
KToKKyAgICAgICAgIiIiUmV0dXJucyB0aGUgaW1hZ2Ugb3V0cHV0IHdoaWNoIGRyaXZlciBnZW5l
cmF0ZWQuIiIiCisgICAgICAgIHBuZ19wYXRoID0gc2VsZi5faW1hZ2VfcGF0aAorICAgICAgICBp
ZiBwbmdfcGF0aCBhbmQgb3MucGF0aC5pc2ZpbGUocG5nX3BhdGgpOgorICAgICAgICAgICAgd2l0
aCBvcGVuKHBuZ19wYXRoLCAncmInKSBhcyBpbWFnZV9maWxlOgorICAgICAgICAgICAgICAgIHJl
dHVybiBpbWFnZV9maWxlLnJlYWQoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJu
IE5vbmUKKwogICAgIGRlZiBydW5fdGVzdChzZWxmLCB1cmksIHRpbWVvdXRtcywgY2hlY2tzdW0p
OgogICAgICAgICBvdXRwdXQgPSBbXQogICAgICAgICBlcnJvciA9IFtdCkBAIC00OTgsOCArNTA1
LDkgQEAgY2xhc3MgQ2hyb21pdW1Ecml2ZXIoYmFzZS5Ecml2ZXIpOgogCiAgICAgICAgICAgICAo
bGluZSwgY3Jhc2gpID0gc2VsZi5fd3JpdGVfY29tbWFuZF9hbmRfcmVhZF9saW5lKGlucHV0PU5v
bmUpCiAKLSAgICAgICAgcmV0dXJuIChjcmFzaCwgdGltZW91dCwgYWN0dWFsX2NoZWNrc3VtLCAn
Jy5qb2luKG91dHB1dCksCi0gICAgICAgICAgICAgICAgJycuam9pbihlcnJvcikpCisgICAgICAg
IHJldHVybiB0ZXN0X291dHB1dC5UZXN0T3V0cHV0KAorICAgICAgICAgICAgJycuam9pbihvdXRw
dXQpLCBzZWxmLl9vdXRwdXRfaW1hZ2UoKSwgYWN0dWFsX2NoZWNrc3VtLAorICAgICAgICAgICAg
Y3Jhc2gsIHRpbWUudGltZSgpIC0gc3RhcnRfdGltZSwgdGltZW91dCwgJycuam9pbihlcnJvcikp
CiAKICAgICBkZWYgc3RvcChzZWxmKToKICAgICAgICAgaWYgc2VsZi5fcHJvYzoKZGlmZiAtLWdp
dCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZHJ5cnVu
LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9kcnly
dW4ucHkKaW5kZXggOGE2YWY1NmM4NDIwZTQ1MGM0MTg5N2FmZTU0M2U2NjcwNmY5YWU3Ni4uOTZk
MGQ1NWY2MmQ3YmMxNGI0YWQ0M2E5ZWFhOWVkMDY5ZDY0MjAxNiAxMDA2NDQKLS0tIGEvV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9kcnlydW4ucHkKKysrIGIv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9kcnlydW4ucHkK
QEAgLTQ4LDYgKzQ4LDkgQEAgZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB3aXRoX3N0YXRlbWVudAog
CiBpbXBvcnQgb3MKIGltcG9ydCBzeXMKK2ltcG9ydCB0aW1lCisKK2Zyb20gd2Via2l0cHkubGF5
b3V0X3Rlc3RzLmxheW91dF9wYWNrYWdlIGltcG9ydCB0ZXN0X291dHB1dAogCiBpbXBvcnQgYmFz
ZQogaW1wb3J0IGZhY3RvcnkKQEAgLTEwOSwxOSArMTEyLDE5IEBAIGNsYXNzIERyeXJ1bkRyaXZl
cihiYXNlLkRyaXZlcik6CiAgICAgICAgIHJldHVybiBOb25lCiAKICAgICBkZWYgcnVuX3Rlc3Qo
c2VsZiwgdXJpLCB0aW1lb3V0bXMsIGltYWdlX2hhc2gpOgorICAgICAgICBzdGFydF90aW1lID0g
dGltZS50aW1lKCkKICAgICAgICAgdGVzdF9uYW1lID0gc2VsZi5fcG9ydC51cmlfdG9fdGVzdF9u
YW1lKHVyaSkKICAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihzZWxmLl9wb3J0LmxheW91dF90
ZXN0c19kaXIoKSwgdGVzdF9uYW1lKQogICAgICAgICB0ZXh0X291dHB1dCA9IHNlbGYuX3BvcnQu
ZXhwZWN0ZWRfdGV4dChwYXRoKQogCiAgICAgICAgIGlmIGltYWdlX2hhc2ggaXMgbm90IE5vbmU6
CiAgICAgICAgICAgICBpbWFnZSA9IHNlbGYuX3BvcnQuZXhwZWN0ZWRfaW1hZ2UocGF0aCkKLSAg
ICAgICAgICAgIGlmIGltYWdlIGFuZCBzZWxmLl9pbWFnZV9wYXRoOgotICAgICAgICAgICAgICAg
IHdpdGggb3BlbihzZWxmLl9pbWFnZV9wYXRoLCAndycpIGFzIGY6Ci0gICAgICAgICAgICAgICAg
ICAgIGYud3JpdGUoaW1hZ2UpCiAgICAgICAgICAgICBoYXNoID0gc2VsZi5fcG9ydC5leHBlY3Rl
ZF9jaGVja3N1bShwYXRoKQogICAgICAgICBlbHNlOgorICAgICAgICAgICAgaW1hZ2UgPSBOb25l
CiAgICAgICAgICAgICBoYXNoID0gTm9uZQotICAgICAgICByZXR1cm4gKEZhbHNlLCBGYWxzZSwg
aGFzaCwgdGV4dF9vdXRwdXQsIE5vbmUpCisgICAgICAgIHJldHVybiB0ZXN0X291dHB1dC5UZXN0
T3V0cHV0KHRleHRfb3V0cHV0LCBpbWFnZSwgaGFzaCwgRmFsc2UsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRpbWUudGltZSgpIC0gc3RhcnRfdGltZSwgRmFsc2UsIE5v
bmUpCiAKICAgICBkZWYgc3RhcnQoc2VsZik6CiAgICAgICAgIHBhc3MKZGlmZiAtLWdpdCBhL1dl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdC5weSBiL1dl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdC5weQppbmRl
eCBmZjQwODZjNzRkYzE4MmJhODQ3MTIzZTYzNTUwMGQxNDQxMWQ5OTNlLi4wYTI3ODIxNGRjMWIy
NTlhOTc0OGQyZGJiMzU2NWQ1MGZhMjUxNWI0IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3QucHkKKysrIGIvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0LnB5CkBAIC0zNiw2ICszNiw4
IEBAIGltcG9ydCBvcwogaW1wb3J0IHN5cwogaW1wb3J0IHRpbWUKIAorZnJvbSB3ZWJraXRweS5s
YXlvdXRfdGVzdHMubGF5b3V0X3BhY2thZ2UgaW1wb3J0IHRlc3Rfb3V0cHV0CisKIGltcG9ydCBi
YXNlCiAKIApAQCAtMjg5LDYgKzI5MSw3IEBAIGNsYXNzIFRlc3REcml2ZXIoYmFzZS5Ecml2ZXIp
OgogICAgICAgICByZXR1cm4gVHJ1ZQogCiAgICAgZGVmIHJ1bl90ZXN0KHNlbGYsIHVyaSwgdGlt
ZW91dG1zLCBpbWFnZV9oYXNoKToKKyAgICAgICAgc3RhcnRfdGltZSA9IHRpbWUudGltZSgpCiAg
ICAgICAgIHRlc3RfbmFtZSA9IHNlbGYuX3BvcnQudXJpX3RvX3Rlc3RfbmFtZSh1cmkpCiAgICAg
ICAgIHRlc3QgPSBzZWxmLl9wb3J0Ll90ZXN0c1t0ZXN0X25hbWVdCiAgICAgICAgIGlmIHRlc3Qu
a2V5Ym9hcmQ6CkBAIC0yOTcsMTMgKzMwMCwxMCBAQCBjbGFzcyBUZXN0RHJpdmVyKGJhc2UuRHJp
dmVyKToKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2V4Y2VwdGlvbiBmcm9tICcgKyB0
ZXN0X25hbWUpCiAgICAgICAgIGlmIHRlc3QuaGFuZzoKICAgICAgICAgICAgIHRpbWUuc2xlZXAo
KGZsb2F0KHRpbWVvdXRtcykgKiA0KSAvIDEwMDAuMCkKLQotICAgICAgICBpZiBzZWxmLl9wb3J0
LmdldF9vcHRpb24oJ3BpeGVsX3Rlc3RzJykgYW5kIHRlc3QuYWN0dWFsX2ltYWdlOgotICAgICAg
ICAgICAgd2l0aCBvcGVuKHNlbGYuX2ltYWdlX3BhdGgsICd3JykgYXMgZmlsZToKLSAgICAgICAg
ICAgICAgICBmaWxlLndyaXRlKHRlc3QuYWN0dWFsX2ltYWdlKQotCi0gICAgICAgIHJldHVybiAo
dGVzdC5jcmFzaCwgdGVzdC50aW1lb3V0LCB0ZXN0LmFjdHVhbF9jaGVja3N1bSwKLSAgICAgICAg
ICAgICAgICB0ZXN0LmFjdHVhbF90ZXh0LCB0ZXN0LmVycm9yKQorICAgICAgICByZXR1cm4gdGVz
dF9vdXRwdXQuVGVzdE91dHB1dCh0ZXN0LmFjdHVhbF90ZXh0LCB0ZXN0LmFjdHVhbF9pbWFnZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdC5hY3R1YWxfY2hlY2tz
dW0sIHRlc3QuY3Jhc2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRp
bWUudGltZSgpIC0gc3RhcnRfdGltZSwgdGVzdC50aW1lb3V0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0ZXN0LmVycm9yKQogCiAgICAgZGVmIHN0YXJ0KHNlbGYpOgog
ICAgICAgICBwYXNzCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5CmluZGV4IDUxZjU3YzQwZTY2NjE2N2IxOGNkZjUy
ZDY0MjAxODc1OTY1MjQ3ZTguLjA2Nzk3YzZkMzhlMjU0NTcwZDNmZmEwZWI2MWEyYjNjNjk0MzYw
ODcgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvd2Via2l0LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvd2Via2l0LnB5CkBAIC00OSw2ICs0OSw3IEBAIGltcG9ydCBzaHV0aWwKIGZy
b20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IEV4ZWN1dGl2ZQogCiBp
bXBvcnQgd2Via2l0cHkuY29tbW9uLnN5c3RlbS5vc3BhdGggYXMgb3NwYXRoCitpbXBvcnQgd2Vi
a2l0cHkubGF5b3V0X3Rlc3RzLmxheW91dF9wYWNrYWdlLnRlc3Rfb3V0cHV0IGFzIHRlc3Rfb3V0
cHV0CiBpbXBvcnQgd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQuYmFzZSBhcyBiYXNlCiBpbXBv
cnQgd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQuc2VydmVyX3Byb2Nlc3MgYXMgc2VydmVyX3By
b2Nlc3MKIApAQCAtNDQyLDYgKzQ0Myw3IEBAIGNsYXNzIFdlYktpdERyaXZlcihiYXNlLkRyaXZl
cik6CiAgICAgICAgICAgICBjb21tYW5kICs9ICInIiArIGltYWdlX2hhc2gKICAgICAgICAgY29t
bWFuZCArPSAiXG4iCiAKKyAgICAgICAgc3RhcnRfdGltZSA9IHRpbWUudGltZSgpCiAgICAgICAg
IHNlbGYuX3NlcnZlcl9wcm9jZXNzLndyaXRlKGNvbW1hbmQpCiAKICAgICAgICAgaGF2ZV9zZWVu
X2NvbnRlbnRfdHlwZSA9IEZhbHNlCkBAIC00ODYsMTAgKzQ4OCw2IEBAIGNsYXNzIFdlYktpdERy
aXZlcihiYXNlLkRyaXZlcik6CiAgICAgICAgICAgICB0aW1lb3V0ID0gZGVhZGxpbmUgLSB0aW1l
LnRpbWUoKQogICAgICAgICAgICAgbGluZSA9IHNlbGYuX3NlcnZlcl9wcm9jZXNzLnJlYWRfbGlu
ZSh0aW1lb3V0KQogCi0gICAgICAgIGlmIHNlbGYuX2ltYWdlX3BhdGggYW5kIGxlbihzZWxmLl9p
bWFnZV9wYXRoKToKLSAgICAgICAgICAgIHdpdGggb3BlbihzZWxmLl9pbWFnZV9wYXRoLCAid2Ii
KSBhcyBpbWFnZV9maWxlOgotICAgICAgICAgICAgICAgIGltYWdlX2ZpbGUud3JpdGUoaW1hZ2Up
Ci0KICAgICAgICAgZXJyb3JfbGluZXMgPSBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5lcnJvci5zcGxp
dGxpbmVzKCkKICAgICAgICAgIyBGSVhNRTogVGhpcyBpcyBhIGhhY2suICBJdCBpcyB1bmNsZWFy
IHdoeSBzb21ldGltZXMKICAgICAgICAgIyB3ZSBkbyBub3QgZ2V0IGFueSBlcnJvciBsaW5lcyBm
cm9tIHRoZSBzZXJ2ZXJfcHJvY2VzcwpAQCAtNTAwLDExICs0OTgsMTEgQEAgY2xhc3MgV2ViS2l0
RHJpdmVyKGJhc2UuRHJpdmVyKToKICAgICAgICAgIyBGSVhNRTogVGhpcyBzZWVtcyBsaWtlIHRo
ZSB3cm9uZyBzZWN0aW9uIG9mIGNvZGUgdG8gYmUgZG9pbmcKICAgICAgICAgIyB0aGlzIHJlc2V0
IGluLgogICAgICAgICBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5lcnJvciA9ICIiCi0gICAgICAgIHJl
dHVybiAoc2VsZi5fc2VydmVyX3Byb2Nlc3MuY3Jhc2hlZCwKLSAgICAgICAgICAgICAgICBzZWxm
Ll9zZXJ2ZXJfcHJvY2Vzcy50aW1lZF9vdXQsCi0gICAgICAgICAgICAgICAgYWN0dWFsX2ltYWdl
X2hhc2gsCi0gICAgICAgICAgICAgICAgb3V0cHV0LAotICAgICAgICAgICAgICAgIGVycm9yKQor
ICAgICAgICByZXR1cm4gdGVzdF9vdXRwdXQuVGVzdE91dHB1dChvdXRwdXQsIGltYWdlLCBhY3R1
YWxfaW1hZ2VfaGFzaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vs
Zi5fc2VydmVyX3Byb2Nlc3MuY3Jhc2hlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdGltZS50aW1lKCkgLSBzdGFydF90aW1lLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy50aW1lZF9vdXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yKQogCiAgICAgZGVmIHN0b3Aoc2Vs
Zik6CiAgICAgICAgIGlmIHNlbGYuX3NlcnZlcl9wcm9jZXNzOgpkaWZmIC0tZ2l0IGEvV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weSBi
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVz
dHMucHkKaW5kZXggNjgwYmE1ZTEzYTMwN2RiOTA2MDViYTFhMjA1ZDFjNjRkYTFhY2Y5ZS4uYjM3
ZmExZWJmMmJiMzIxMWQ1MjI5NGI1ZDg4MTVlZmI5NTRlMzZlZiAxMDA3NTUKLS0tIGEvV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weQor
KysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0
X3Rlc3RzLnB5CkBAIC0xMDEsOSArMTAxLDYgQEAgY2xhc3MgVGVzdElucHV0OgogICAgICAgICAg
ICIiIgogICAgICAgICAjIEZJWE1FOiBmaWxlbmFtZSBzaG91bGQgcmVhbGx5IGJlIHRlc3RfbmFt
ZSBhcyBhIHJlbGF0aXZlIHBhdGguCiAgICAgICAgIHNlbGYuZmlsZW5hbWUgPSBmaWxlbmFtZQot
ICAgICAgICAjIFRoZSBpbWFnZSBjaGVja3N1bSBpcyBwYXNzZWQgdG8gdGhlIGRyaXZlciBzbyB0
aGF0IHRoZSBkcml2ZXIgY2FuIG9wdGlvbmFsbHkgbm90IGhhdmUKLSAgICAgICAgIyB0byBvdXRw
dXQgdGhlIGltYWdlIGlmIHRoZSBjaGVja3N1bXMgbWF0Y2guCi0gICAgICAgIHNlbGYuaW1hZ2Vf
Y2hlY2tzdW0gPSBOb25lCiAgICAgICAgIHNlbGYudGltZW91dCA9IHRpbWVvdXQKIAogICAgICAg
ICAjIEZJWE1FOiBNYXliZSB0aGUgVVJJIHNob3VsZG4ndCBiZSBwYXJ0IG9mIHRoZSBUZXN0SW5w
dXQgYXQgYWxsPwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvdGVzdF90eXBlcy9pbWFnZV9kaWZmLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvdGVzdF90eXBlcy9pbWFnZV9kaWZmLnB5CmluZGV4IDBiMDU4
MDIwYzA4ZjRmNTFjMTE2MjA0ZGM1NGNiZjVkOWMzZTdjNmYuLjkzMTM5YTBjNjQzN2Y1NGYwNDZj
MjU5NmZiYTJkYzhmOWY5ZjM0NTggMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3Rlc3RfdHlwZXMvaW1hZ2VfZGlmZi5weQorKysgYi9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy90ZXN0X3R5cGVzL2ltYWdlX2RpZmYu
cHkKQEAgLTU0LDExNiArNTQsOTMgQEAgX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJ3ZWJraXRw
eS5sYXlvdXRfdGVzdHMudGVzdF90eXBlcy5pbWFnZV9kaWZmIikKIAogY2xhc3MgSW1hZ2VEaWZm
KHRlc3RfdHlwZV9iYXNlLlRlc3RUeXBlQmFzZSk6CiAKLSAgICBkZWYgX2NvcHlfb3V0cHV0X3Bu
ZyhzZWxmLCB0ZXN0X2ZpbGVuYW1lLCBzb3VyY2VfaW1hZ2UsIGV4dGVuc2lvbik6Ci0gICAgICAg
ICIiIkNvcGllcyByZXN1bHQgZmlsZXMgaW50byB0aGUgb3V0cHV0IGRpcmVjdG9yeSB3aXRoIGFw
cHJvcHJpYXRlCi0gICAgICAgIG5hbWVzLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgdGVz
dF9maWxlbmFtZTogdGhlIHRlc3QgZmlsZW5hbWUKLSAgICAgICAgICBzb3VyY2VfZmlsZTogcGF0
aCB0byB0aGUgaW1hZ2UgZmlsZSAoZWl0aGVyIGFjdHVhbCBvciBleHBlY3RlZCkKLSAgICAgICAg
ICBleHRlbnNpb246IGV4dGVuc2lvbiB0byBpbmRpY2F0ZSAtYWN0dWFsLnBuZyBvciAtZXhwZWN0
ZWQucG5nCi0gICAgICAgICIiIgotICAgICAgICBzZWxmLl9tYWtlX291dHB1dF9kaXJlY3Rvcnko
dGVzdF9maWxlbmFtZSkKLSAgICAgICAgZGVzdF9pbWFnZSA9IHNlbGYub3V0cHV0X2ZpbGVuYW1l
KHRlc3RfZmlsZW5hbWUsIGV4dGVuc2lvbikKLQotICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhz
b3VyY2VfaW1hZ2UpOgotICAgICAgICAgICAgc2h1dGlsLmNvcHlmaWxlKHNvdXJjZV9pbWFnZSwg
ZGVzdF9pbWFnZSkKLQotICAgIGRlZiBfc2F2ZV9iYXNlbGluZV9maWxlcyhzZWxmLCBmaWxlbmFt
ZSwgcG5nX3BhdGgsIGNoZWNrc3VtLAorICAgIGRlZiBfc2F2ZV9iYXNlbGluZV9maWxlcyhzZWxm
LCBmaWxlbmFtZSwgaW1hZ2UsIGltYWdlX2hhc2gsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGdlbmVyYXRlX25ld19iYXNlbGluZSk6CiAgICAgICAgICIiIlNhdmVzIG5ldyBiYXNlbGlu
ZXMgZm9yIHRoZSBQTkcgYW5kIGNoZWNrc3VtLgogCiAgICAgICAgIEFyZ3M6CiAgICAgICAgICAg
ZmlsZW5hbWU6IHRlc3QgZmlsZW5hbWUKLSAgICAgICAgICBwbmdfcGF0aDogcGF0aCB0byB0aGUg
YWN0dWFsIFBORyByZXN1bHQgZmlsZQotICAgICAgICAgIGNoZWNrc3VtOiB2YWx1ZSBvZiB0aGUg
YWN0dWFsIGNoZWNrc3VtIHJlc3VsdAorICAgICAgICAgIGltYWdlOiBhIGltYWdlIG91dHB1dAor
ICAgICAgICAgIGltYWdlX2hhc2g6IGEgY2hlY2tzdW0gb2YgdGhlIGltYWdlCiAgICAgICAgICAg
Z2VuZXJhdGVfbmV3X2Jhc2VsaW5lOiB3aGV0aGVyIHRvIGdlbmVyYXRlIGEgbmV3LCBwbGF0Zm9y
bS1zcGVjaWZpYwogICAgICAgICAgICAgYmFzZWxpbmUsIG9yIHVwZGF0ZSB0aGUgZXhpc3Rpbmcg
b25lCiAgICAgICAgICIiIgotICAgICAgICB3aXRoIG9wZW4ocG5nX3BhdGgsICJyYiIpIGFzIHBu
Z19maWxlOgotICAgICAgICAgICAgcG5nX2RhdGEgPSBwbmdfZmlsZS5yZWFkKCkKLSAgICAgICAg
c2VsZi5fc2F2ZV9iYXNlbGluZV9kYXRhKGZpbGVuYW1lLCBwbmdfZGF0YSwgIi5wbmciLCBlbmNv
ZGluZz1Ob25lLAorICAgICAgICBzZWxmLl9zYXZlX2Jhc2VsaW5lX2RhdGEoZmlsZW5hbWUsIGlt
YWdlLCAiLnBuZyIsIGVuY29kaW5nPU5vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBnZW5lcmF0ZV9uZXdfYmFzZWxpbmU9Z2VuZXJhdGVfbmV3X2Jhc2VsaW5lKQotICAgICAg
ICBzZWxmLl9zYXZlX2Jhc2VsaW5lX2RhdGEoZmlsZW5hbWUsIGNoZWNrc3VtLCAiLmNoZWNrc3Vt
IiwKKyAgICAgICAgc2VsZi5fc2F2ZV9iYXNlbGluZV9kYXRhKGZpbGVuYW1lLCBpbWFnZV9oYXNo
LCAiLmNoZWNrc3VtIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5n
PSJhc2NpaSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZV9uZXdf
YmFzZWxpbmU9Z2VuZXJhdGVfbmV3X2Jhc2VsaW5lKQogCi0gICAgZGVmIF9jcmVhdGVfaW1hZ2Vf
ZGlmZihzZWxmLCBwb3J0LCBmaWxlbmFtZSwgY29uZmlndXJhdGlvbik6CisgICAgZGVmIF9jb3B5
X2ltYWdlKHNlbGYsIGZpbGVuYW1lLCBhY3R1YWxfaW1hZ2UsIGV4cGVjdGVkX2ltYWdlKToKKyAg
ICAgICAgc2VsZi53cml0ZV9vdXRwdXRfZmlsZXMoZmlsZW5hbWUsICcucG5nJywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0PWFjdHVhbF9pbWFnZSwgZXhwZWN0ZWQ9ZXhw
ZWN0ZWRfaW1hZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nPU5v
bmUsIHByaW50X3RleHRfZGlmZnM9RmFsc2UpCisKKyAgICBkZWYgX2NvcHlfaW1hZ2VfaGFzaChz
ZWxmLCBmaWxlbmFtZSwgYWN0dWFsX2ltYWdlX2hhc2gsIGV4cGVjdGVkX2ltYWdlX2hhc2gpOgor
ICAgICAgICBzZWxmLndyaXRlX291dHB1dF9maWxlcyhmaWxlbmFtZSwgJy5jaGVja3N1bScsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdHVhbF9pbWFnZV9oYXNoLCBleHBlY3Rl
ZF9pbWFnZV9oYXNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZz0i
YXNjaWkiLCBwcmludF90ZXh0X2RpZmZzPUZhbHNlKQorCisgICAgZGVmIF9jcmVhdGVfZGlmZl9p
bWFnZShzZWxmLCBwb3J0LCBmaWxlbmFtZSwgYWN0dWFsX2ltYWdlLCBleHBlY3RlZF9pbWFnZSk6
CiAgICAgICAgICIiIkNyZWF0ZXMgdGhlIHZpc3VhbCBkaWZmIG9mIHRoZSBleHBlY3RlZC9hY3R1
YWwgUE5Hcy4KIAotICAgICAgICBBcmdzOgotICAgICAgICAgIGZpbGVuYW1lOiB0aGUgbmFtZSBv
ZiB0aGUgdGVzdAotICAgICAgICAgIGNvbmZpZ3VyYXRpb246IERlYnVnIG9yIFJlbGVhc2UKLSAg
ICAgICAgUmV0dXJucyBUcnVlIGlmIHRoZSBmaWxlcyBhcmUgZGlmZmVyZW50LCBGYWxzZSBpZiB0
aGV5IG1hdGNoCisgICAgICAgIFJldHVybnMgVHJ1ZSBpZiB0aGUgaW1hZ2VzIGFyZSBkaWZmZXJl
bnQuCiAgICAgICAgICIiIgogICAgICAgICBkaWZmX2ZpbGVuYW1lID0gc2VsZi5vdXRwdXRfZmls
ZW5hbWUoZmlsZW5hbWUsCi0gICAgICAgICAgc2VsZi5GSUxFTkFNRV9TVUZGSVhfQ09NUEFSRSkK
LSAgICAgICAgYWN0dWFsX2ZpbGVuYW1lID0gc2VsZi5vdXRwdXRfZmlsZW5hbWUoZmlsZW5hbWUs
Ci0gICAgICAgICAgc2VsZi5GSUxFTkFNRV9TVUZGSVhfQUNUVUFMICsgJy5wbmcnKQotICAgICAg
ICBleHBlY3RlZF9maWxlbmFtZSA9IHNlbGYub3V0cHV0X2ZpbGVuYW1lKGZpbGVuYW1lLAotICAg
ICAgICAgIHNlbGYuRklMRU5BTUVfU1VGRklYX0VYUEVDVEVEICsgJy5wbmcnKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5GSUxFTkFNRV9TVUZGSVhf
Q09NUEFSRSkKKyAgICAgICAgcmV0dXJuIHBvcnQuZGlmZl9pbWFnZShhY3R1YWxfaW1hZ2UsIGV4
cGVjdGVkX2ltYWdlLCBkaWZmX2ZpbGVuYW1lKQogCi0gICAgICAgIGV4cGVjdGVkX2ltYWdlID0g
cG9ydC5leHBlY3RlZF9pbWFnZShmaWxlbmFtZSkKLSAgICAgICAgd2l0aCBjb2RlY3Mub3Blbihh
Y3R1YWxfZmlsZW5hbWUsICdyK2InLCBOb25lKSBhcyBmaWxlOgotICAgICAgICAgICAgYWN0dWFs
X2ltYWdlID0gZmlsZS5yZWFkKCkKLQotICAgICAgICByZXN1bHQgPSBwb3J0LmRpZmZfaW1hZ2Uo
ZXhwZWN0ZWRfaW1hZ2UsIGFjdHVhbF9pbWFnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRpZmZfZmlsZW5hbWUpCi0gICAgICAgIHJldHVybiByZXN1bHQKLQotICAgIGRlZiBj
b21wYXJlX291dHB1dChzZWxmLCBwb3J0LCBmaWxlbmFtZSwgb3V0cHV0LCB0ZXN0X2FyZ3MsIGNv
bmZpZ3VyYXRpb24pOgorICAgIGRlZiBjb21wYXJlX291dHB1dChzZWxmLCBwb3J0LCBmaWxlbmFt
ZSwgdGVzdF9hcmdzLCBhY3R1YWxfdGVzdF9vdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICBleHBlY3RlZF90ZXN0X291dHB1dCk6CiAgICAgICAgICIiIkltcGxlbWVudGF0aW9uIG9mIENv
bXBhcmVPdXRwdXQgdGhhdCBjaGVja3MgdGhlIG91dHB1dCBpbWFnZSBhbmQKICAgICAgICAgY2hl
Y2tzdW0gYWdhaW5zdCB0aGUgZXhwZWN0ZWQgZmlsZXMgZnJvbSB0aGUgTGF5b3V0VGVzdCBkaXJl
Y3RvcnkuCiAgICAgICAgICIiIgogICAgICAgICBmYWlsdXJlcyA9IFtdCiAKICAgICAgICAgIyBJ
ZiB3ZSBkaWRuJ3QgcHJvZHVjZSBhIGhhc2ggZmlsZSwgdGhpcyB0ZXN0IG11c3QgYmUgdGV4dC1v
bmx5LgotICAgICAgICBpZiB0ZXN0X2FyZ3MuaGFzaCBpcyBOb25lOgorICAgICAgICBpZiBhY3R1
YWxfdGVzdF9vdXRwdXQuaW1hZ2VfaGFzaCBpcyBOb25lOgogICAgICAgICAgICAgcmV0dXJuIGZh
aWx1cmVzCiAKICAgICAgICAgIyBJZiB3ZSdyZSBnZW5lcmF0aW5nIGEgbmV3IGJhc2VsaW5lLCB3
ZSBwYXNzLgogICAgICAgICBpZiB0ZXN0X2FyZ3MubmV3X2Jhc2VsaW5lIG9yIHRlc3RfYXJncy5y
ZXNldF9yZXN1bHRzOgotICAgICAgICAgICAgc2VsZi5fc2F2ZV9iYXNlbGluZV9maWxlcyhmaWxl
bmFtZSwgdGVzdF9hcmdzLnBuZ19wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0ZXN0X2FyZ3MuaGFzaCwgdGVzdF9hcmdzLm5ld19iYXNlbGluZSkKKyAgICAgICAg
ICAgIHNlbGYuX3NhdmVfYmFzZWxpbmVfZmlsZXMoZmlsZW5hbWUsIGFjdHVhbF90ZXN0X291dHB1
dC5pbWFnZV9oYXNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3R1
YWxfdGVzdF9vdXRwdXQuaW1hZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRlc3RfYXJncy5uZXdfYmFzZWxpbmUpCiAgICAgICAgICAgICByZXR1cm4gZmFpbHVyZXMK
IAotICAgICAgICAjIENvbXBhcmUgaGFzaGVzLgotICAgICAgICBleHBlY3RlZF9oYXNoID0gc2Vs
Zi5fcG9ydC5leHBlY3RlZF9jaGVja3N1bShmaWxlbmFtZSkKLSAgICAgICAgZXhwZWN0ZWRfcG5n
ID0gc2VsZi5fcG9ydC5leHBlY3RlZF9pbWFnZShmaWxlbmFtZSkKLQotICAgICAgICBpZiBub3Qg
ZXhwZWN0ZWRfcG5nOgorICAgICAgICBpZiBub3QgZXhwZWN0ZWRfdGVzdF9vdXRwdXQuaW1hZ2U6
CiAgICAgICAgICAgICAjIFJlcG9ydCBhIG1pc3NpbmcgZXhwZWN0ZWQgUE5HIGZpbGUuCi0gICAg
ICAgICAgICBzZWxmLndyaXRlX291dHB1dF9maWxlcyhmaWxlbmFtZSwgJy5jaGVja3N1bScsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2FyZ3MuaGFzaCwgZXhwZWN0
ZWRfaGFzaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nPSJh
c2NpaSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludF90ZXh0X2Rp
ZmZzPUZhbHNlKQotICAgICAgICAgICAgc2VsZi5fY29weV9vdXRwdXRfcG5nKGZpbGVuYW1lLCB0
ZXN0X2FyZ3MucG5nX3BhdGgsICctYWN0dWFsLnBuZycpCisgICAgICAgICAgICBzZWxmLl9jb3B5
X2ltYWdlKGZpbGVuYW1lLCBhY3R1YWxfdGVzdF9vdXRwdXQuaW1hZ2UsIGV4cGVjdGVkX2ltYWdl
PU5vbmUpCisgICAgICAgICAgICBzZWxmLl9jb3B5X2ltYWdlX2hhc2goZmlsZW5hbWUsIGFjdHVh
bF90ZXN0X291dHB1dC5pbWFnZV9oYXNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGV4cGVjdGVkX3Rlc3Rfb3V0cHV0LmltYWdlX2hhc2gpCiAgICAgICAgICAgICBmYWlsdXJl
cy5hcHBlbmQodGVzdF9mYWlsdXJlcy5GYWlsdXJlTWlzc2luZ0ltYWdlKCkpCiAgICAgICAgICAg
ICByZXR1cm4gZmFpbHVyZXMKLSAgICAgICAgZWxpZiB0ZXN0X2FyZ3MuaGFzaCA9PSBleHBlY3Rl
ZF9oYXNoOgorICAgICAgICBpZiBub3QgZXhwZWN0ZWRfdGVzdF9vdXRwdXQuaW1hZ2VfaGFzaDoK
KyAgICAgICAgICAgICMgUmVwb3J0IGEgbWlzc2luZyBleHBlY3RlZCBjaGVja3N1bSBmaWxlLgor
ICAgICAgICAgICAgc2VsZi5fY29weV9pbWFnZShmaWxlbmFtZSwgYWN0dWFsX3Rlc3Rfb3V0cHV0
LmltYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF90ZXN0X291dHB1
dC5pbWFnZSkKKyAgICAgICAgICAgIHNlbGYuX2NvcHlfaW1hZ2VfaGFzaChmaWxlbmFtZSwgYWN0
dWFsX3Rlc3Rfb3V0cHV0LmltYWdlX2hhc2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZXhwZWN0ZWRfaW1hZ2VfaGFzaD1Ob25lKQorICAgICAgICAgICAgZmFpbHVyZXMuYXBw
ZW5kKHRlc3RfZmFpbHVyZXMuRmFpbHVyZU1pc3NpbmdJbWFnZUhhc2goKSkKKyAgICAgICAgICAg
IHJldHVybiBmYWlsdXJlcworCisgICAgICAgIGlmIGFjdHVhbF90ZXN0X291dHB1dC5pbWFnZV9o
YXNoID09IGV4cGVjdGVkX3Rlc3Rfb3V0cHV0LmltYWdlX2hhc2g6CiAgICAgICAgICAgICAjIEhh
c2ggbWF0Y2hlZCAobm8gZGlmZiBuZWVkZWQsIG9rYXkgdG8gcmV0dXJuKS4KICAgICAgICAgICAg
IHJldHVybiBmYWlsdXJlcwogCi0gICAgICAgIHNlbGYud3JpdGVfb3V0cHV0X2ZpbGVzKGZpbGVu
YW1lLCAnLmNoZWNrc3VtJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9h
cmdzLmhhc2gsIGV4cGVjdGVkX2hhc2gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGVuY29kaW5nPSJhc2NpaSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50
X3RleHRfZGlmZnM9RmFsc2UpCi0KLSAgICAgICAgIyBGSVhNRTogY29tYmluZSBuZXh0IHR3byBs
aW5lcwotICAgICAgICBzZWxmLl9jb3B5X291dHB1dF9wbmcoZmlsZW5hbWUsIHRlc3RfYXJncy5w
bmdfcGF0aCwgJy1hY3R1YWwucG5nJykKLSAgICAgICAgc2VsZi53cml0ZV9vdXRwdXRfZmlsZXMo
ZmlsZW5hbWUsICcucG5nJywgb3V0cHV0PU5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGV4cGVjdGVkPWV4cGVjdGVkX3BuZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZW5jb2Rpbmc9Tm9uZSwgcHJpbnRfdGV4dF9kaWZmcz1GYWxzZSkKKyAgICAgICAgc2Vs
Zi5fY29weV9pbWFnZShmaWxlbmFtZSwgYWN0dWFsX3Rlc3Rfb3V0cHV0LmltYWdlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX3Rlc3Rfb3V0cHV0LmltYWdlKQorICAgICAgICBz
ZWxmLl9jb3B5X2ltYWdlX2hhc2goZmlsZW5hbWUsIGFjdHVhbF90ZXN0X291dHB1dC5pbWFnZV9o
YXNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfdGVzdF9vdXRwdXQu
aW1hZ2VfaGFzaCkKIAogICAgICAgICAjIEV2ZW4gdGhvdWdoIHdlIG9ubHkgdXNlIHRoZSByZXN1
bHQgaW4gb25lIGNvZGVwYXRoIGJlbG93IGJ1dCB3ZQogICAgICAgICAjIHN0aWxsIG5lZWQgdG8g
Y2FsbCBDcmVhdGVJbWFnZURpZmYgZm9yIG90aGVyIGNvZGVwYXRocy4KLSAgICAgICAgaW1hZ2Vz
X2FyZV9kaWZmZXJlbnQgPSBzZWxmLl9jcmVhdGVfaW1hZ2VfZGlmZihwb3J0LCBmaWxlbmFtZSwg
Y29uZmlndXJhdGlvbikKLSAgICAgICAgaWYgbm90IGV4cGVjdGVkX2hhc2g6Ci0gICAgICAgICAg
ICBmYWlsdXJlcy5hcHBlbmQodGVzdF9mYWlsdXJlcy5GYWlsdXJlTWlzc2luZ0ltYWdlSGFzaCgp
KQotICAgICAgICBlbGlmIHRlc3RfYXJncy5oYXNoICE9IGV4cGVjdGVkX2hhc2g6Ci0gICAgICAg
ICAgICBpZiBpbWFnZXNfYXJlX2RpZmZlcmVudDoKLSAgICAgICAgICAgICAgICBmYWlsdXJlcy5h
cHBlbmQodGVzdF9mYWlsdXJlcy5GYWlsdXJlSW1hZ2VIYXNoTWlzbWF0Y2goKSkKLSAgICAgICAg
ICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZmFpbHVyZXMuYXBwZW5kKHRlc3RfZmFpbHVyZXMu
RmFpbHVyZUltYWdlSGFzaEluY29ycmVjdCgpKQorICAgICAgICBpbWFnZXNfYXJlX2RpZmZlcmVu
dCA9IHNlbGYuX2NyZWF0ZV9kaWZmX2ltYWdlKHBvcnQsIGZpbGVuYW1lLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdHVhbF90ZXN0X291
dHB1dC5pbWFnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBleHBlY3RlZF90ZXN0X291dHB1dC5pbWFnZSkKKyAgICAgICAgaWYgbm90IGlt
YWdlc19hcmVfZGlmZmVyZW50OgorICAgICAgICAgICAgZmFpbHVyZXMuYXBwZW5kKHRlc3RfZmFp
bHVyZXMuRmFpbHVyZUltYWdlSGFzaEluY29ycmVjdCgpKQorICAgICAgICBlbHNlOgorICAgICAg
ICAgICAgZmFpbHVyZXMuYXBwZW5kKHRlc3RfZmFpbHVyZXMuRmFpbHVyZUltYWdlSGFzaE1pc21h
dGNoKCkpCiAKICAgICAgICAgcmV0dXJuIGZhaWx1cmVzCmRpZmYgLS1naXQgYS9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy90ZXN0X3R5cGVzL3Rlc3RfdHlwZV9iYXNl
LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdGVzdF90eXBl
cy90ZXN0X3R5cGVfYmFzZS5weQppbmRleCBkY2M2NGEzNWIzMzlkZjk4ODBhYWMwNTM4ZjdlODU1
OTcyNTgwYjEzLi40Yjk2YjNhYmZlMWI1OTUxMjI4MTE1MGZkNmZlZWEwNjAzNTQ0YTkzIDEwMDY0
NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy90ZXN0X3R5
cGVzL3Rlc3RfdHlwZV9iYXNlLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3Rlc3RfdHlwZXMvdGVzdF90eXBlX2Jhc2UucHkKQEAgLTE0MCwxOCArMTQw
LDIyIEBAIGNsYXNzIFRlc3RUeXBlQmFzZShvYmplY3QpOgogICAgICAgICAgICAgc2VsZi5fcG9y
dC5yZWxhdGl2ZV90ZXN0X2ZpbGVuYW1lKGZpbGVuYW1lKSkKICAgICAgICAgcmV0dXJuIG9zLnBh
dGguc3BsaXRleHQob3V0cHV0X2ZpbGVuYW1lKVswXSArIG1vZGlmaWVyCiAKLSAgICBkZWYgY29t
cGFyZV9vdXRwdXQoc2VsZiwgcG9ydCwgZmlsZW5hbWUsIG91dHB1dCwgdGVzdF9hcmdzLCBjb25m
aWd1cmF0aW9uKToKKyAgICBkZWYgY29tcGFyZV9vdXRwdXQoc2VsZiwgcG9ydCwgZmlsZW5hbWUs
IHRlc3RfYXJncywgYWN0dWFsX3Rlc3Rfb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ZXhwZWN0ZWRfdGVzdF9vdXRwdXQpOgogICAgICAgICAiIiJNZXRob2QgdGhhdCBjb21wYXJlcyB0
aGUgb3V0cHV0IGZyb20gdGhlIHRlc3Qgd2l0aCB0aGUKICAgICAgICAgZXhwZWN0ZWQgdmFsdWUu
CiAKICAgICAgICAgVGhpcyBpcyBhbiBhYnN0cmFjdCBtZXRob2QgdG8gYmUgaW1wbGVtZW50ZWQg
YnkgYWxsIHN1YiBjbGFzc2VzLgogCiAgICAgICAgIEFyZ3M6CisgICAgICAgICAgcG9ydDogb2Jq
ZWN0IGltcGxlbWVudGluZyBwb3J0LXNwZWNpZmljIGluZm9ybWF0aW9uIGFuZCBtZXRob2RzCiAg
ICAgICAgICAgZmlsZW5hbWU6IGFic29sdXRlIGZpbGVuYW1lIHRvIHRlc3QgZmlsZQotICAgICAg
ICAgIG91dHB1dDogYSBzdHJpbmcgY29udGFpbmluZyB0aGUgb3V0cHV0IG9mIHRoZSB0ZXN0CiAg
ICAgICAgICAgdGVzdF9hcmdzOiBhIFRlc3RBcmd1bWVudHMgb2JqZWN0IGhvbGRpbmcgb3B0aW9u
YWwgYWRkaXRpb25hbAogICAgICAgICAgICAgICBhcmd1bWVudHMKLSAgICAgICAgICBjb25maWd1
cmF0aW9uOiBEZWJ1ZyBvciBSZWxlYXNlCisgICAgICAgICAgYWN0dWFsX3Rlc3Rfb3V0cHV0OiBh
IFRlc3RPdXRwdXQgb2JqZWN0IHdoaWNoIHJlcHJlc2VudHMgYWN0dWFsIHRlc3QKKyAgICAgICAg
ICAgICAgb3V0cHV0CisgICAgICAgICAgZXhwZWN0ZWRfdGVzdF9vdXRwdXQ6IGEgVGVzdE91dHB1
dCBvYmplY3Qgd2hpY2ggcmVwcmVzZW50cyBhIGV4cGVjdGVkCisgICAgICAgICAgICAgIHRlc3Qg
b3V0cHV0CiAKICAgICAgICAgUmV0dXJuOgogICAgICAgICAgIGEgbGlzdCBvZiBUZXN0RmFpbHVy
ZSBvYmplY3RzLCBlbXB0eSBpZiB0aGUgdGVzdCBwYXNzZXMKZGlmZiAtLWdpdCBhL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Rlc3RfdHlwZXMvdGV4dF9kaWZmLnB5
IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdGVzdF90eXBlcy90
ZXh0X2RpZmYucHkKaW5kZXggNGMzMmYwZDAyMzQ3M2M2M2I4ZTQ3NGY3NzA5M2EwZmRmYTBhYTMz
Ny4uNjZlNDJiYTE0Y2E4MjZmNDU0MTFjNTE5NTQyODUzMmIwZmE1YmUxMSAxMDA2NDQKLS0tIGEv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdGVzdF90eXBlcy90ZXh0
X2RpZmYucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
dGVzdF90eXBlcy90ZXh0X2RpZmYucHkKQEAgLTU1LDEzICs1NSw4IEBAIGNsYXNzIFRlc3RUZXh0
RGlmZih0ZXN0X3R5cGVfYmFzZS5UZXN0VHlwZUJhc2UpOgogICAgICAgICAgICAgICJcclxuIiwg
IlxuIikKICAgICAgICAgcmV0dXJuIG5vcm0gKyAiXG4iCiAKLSAgICBkZWYgX2dldF9ub3JtYWxp
emVkX2V4cGVjdGVkX3RleHQoc2VsZiwgZmlsZW5hbWUpOgotICAgICAgICAiIiJHaXZlbiB0aGUg
ZmlsZW5hbWUgb2YgdGhlIHRlc3QsIHJlYWQgdGhlIGV4cGVjdGVkIG91dHB1dCBmcm9tIGEgZmls
ZQotICAgICAgICBhbmQgbm9ybWFsaXplIHRoZSB0ZXh0LiAgUmV0dXJucyBhIHN0cmluZyB3aXRo
IHRoZSBleHBlY3RlZCB0ZXh0LCBvciAnJwotICAgICAgICBpZiB0aGUgZXhwZWN0ZWQgb3V0cHV0
IGZpbGUgd2FzIG5vdCBmb3VuZC4iIiIKLSAgICAgICAgcmV0dXJuIHNlbGYuX3BvcnQuZXhwZWN0
ZWRfdGV4dChmaWxlbmFtZSkKLQotICAgIGRlZiBjb21wYXJlX291dHB1dChzZWxmLCBwb3J0LCBm
aWxlbmFtZSwgb3V0cHV0LCB0ZXN0X2FyZ3MsIGNvbmZpZ3VyYXRpb24pOgorICAgIGRlZiBjb21w
YXJlX291dHB1dChzZWxmLCBwb3J0LCBmaWxlbmFtZSwgdGVzdF9hcmdzLCBhY3R1YWxfdGVzdF9v
dXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF90ZXN0X291dHB1dCk6CiAg
ICAgICAgICIiIkltcGxlbWVudGF0aW9uIG9mIENvbXBhcmVPdXRwdXQgdGhhdCBjaGVja3MgdGhl
IG91dHB1dCB0ZXh0IGFnYWluc3QKICAgICAgICAgdGhlIGV4cGVjdGVkIHRleHQgZnJvbSB0aGUg
TGF5b3V0VGVzdCBkaXJlY3RvcnkuIiIiCiAgICAgICAgIGZhaWx1cmVzID0gW10KQEAgLTc2LDE3
ICs3MSwxOCBAQCBjbGFzcyBUZXN0VGV4dERpZmYodGVzdF90eXBlX2Jhc2UuVGVzdFR5cGVCYXNl
KToKICAgICAgICAgICAgIHJldHVybiBmYWlsdXJlcwogCiAgICAgICAgICMgTm9ybWFsaXplIHRl
eHQgdG8gZGlmZgotICAgICAgICBvdXRwdXQgPSBzZWxmLl9nZXRfbm9ybWFsaXplZF9vdXRwdXRf
dGV4dChvdXRwdXQpCi0gICAgICAgIGV4cGVjdGVkID0gc2VsZi5fZ2V0X25vcm1hbGl6ZWRfZXhw
ZWN0ZWRfdGV4dChmaWxlbmFtZSkKKyAgICAgICAgYWN0dWFsX3RleHQgPSBzZWxmLl9nZXRfbm9y
bWFsaXplZF9vdXRwdXRfdGV4dChhY3R1YWxfdGVzdF9vdXRwdXQudGV4dCkKKyAgICAgICAgIyBB
c3N1bWluZyBleHBlY3RlZF90ZXh0IGlzIGFscmVhZHkgbm9ybWFsaXplZC4KKyAgICAgICAgZXhw
ZWN0ZWRfdGV4dCA9IGV4cGVjdGVkX3Rlc3Rfb3V0cHV0LnRleHQKIAogICAgICAgICAjIFdyaXRl
IG91dHB1dCBmaWxlcyBmb3IgbmV3IHRlc3RzLCB0b28uCi0gICAgICAgIGlmIHBvcnQuY29tcGFy
ZV90ZXh0KG91dHB1dCwgZXhwZWN0ZWQpOgorICAgICAgICBpZiBwb3J0LmNvbXBhcmVfdGV4dChh
Y3R1YWxfdGV4dCwgZXhwZWN0ZWRfdGV4dCk6CiAgICAgICAgICAgICAjIFRleHQgZG9lc24ndCBt
YXRjaCwgd3JpdGUgb3V0cHV0IGZpbGVzLgotICAgICAgICAgICAgc2VsZi53cml0ZV9vdXRwdXRf
ZmlsZXMoZmlsZW5hbWUsICIudHh0Iiwgb3V0cHV0LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZXhwZWN0ZWQsIGVuY29kaW5nPU5vbmUsCisgICAgICAgICAgICBzZWxmLndy
aXRlX291dHB1dF9maWxlcyhmaWxlbmFtZSwgIi50eHQiLCBhY3R1YWxfdGV4dCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX3RleHQsIGVuY29kaW5nPU5vbmUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludF90ZXh0X2RpZmZzPVRy
dWUpCiAKLSAgICAgICAgICAgIGlmIGV4cGVjdGVkID09ICcnOgorICAgICAgICAgICAgaWYgZXhw
ZWN0ZWRfdGV4dCA9PSAnJzoKICAgICAgICAgICAgICAgICBmYWlsdXJlcy5hcHBlbmQodGVzdF9m
YWlsdXJlcy5GYWlsdXJlTWlzc2luZ1Jlc3VsdCgpKQogICAgICAgICAgICAgZWxzZToKICAgICAg
ICAgICAgICAgICBmYWlsdXJlcy5hcHBlbmQodGVzdF9mYWlsdXJlcy5GYWlsdXJlVGV4dE1pc21h
dGNoKCkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74148</attachid>
            <date>2010-11-17 13:21:57 -0800</date>
            <delta_ts>2010-11-17 15:02:53 -0800</delta_ts>
            <desc>fix-comment-and-indent</desc>
            <filename>bug-49431-20101118062154.patch</filename>
            <type>text/plain</type>
            <size>35265</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBkY2E1MGU5OTIzYTdiNjNhMGI2ZDZmNTI0YjE3YzM3NTZkN2UyMzU0Li5kMmIwZTRk
NDk4NzcwOTQwZjA0YzhkYmQyNzA3MzljZGEwYzk3MDYwIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAK
KzIwMTAtMTEtMTYgIEhheWF0byBJdG8gIDxoYXlhdG9AY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFJlZmFjdG9yIFRlc3RUeXBlQmFzZS5jb21wYXJlX291dHB1dCgpLgorCisgICAgICAgIEludHJv
ZHVjZSBhIFRlc3RPdXRwdXQgY2xhc3MgYW5kIHVwZGF0ZSBjb21wYXJlX291dHB1dCgpIG9mIGVh
Y2ggdGVzdAorICAgICAgICB0eXBlcyBzbyB0aGF0IHRoZXkgY2FuIHRha2UgYm90aCBhY3R1YWwg
YW5kIGV4cGVjdGVkIFRlc3RPdXRwdXQgb2JqZWN0cy4KKworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDk0MzEKKworICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2R1bXBfcmVuZGVyX3RyZWVfdGhyZWFk
LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNr
YWdlL3Rlc3Rfb3V0cHV0LnB5OiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L2Jhc2UucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L2RyeXJ1bi5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L3Rlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC93ZWJraXQucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy90ZXN0X3R5cGVzL2ltYWdlX2RpZmYucHk6CisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdGVzdF90eXBlcy90ZXN0X3R5cGVfYmFzZS5weToKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy90ZXN0X3R5cGVzL3RleHRfZGlm
Zi5weToKKwogMjAxMC0xMS0xNiAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBPamFuIFZhZmFpLgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvZHVtcF9yZW5k
ZXJfdHJlZV90aHJlYWQucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9sYXlvdXRfcGFja2FnZS9kdW1wX3JlbmRlcl90cmVlX3RocmVhZC5weQppbmRleCA3MDNm
OWRlZWU3NzhjMDc0MDNmMGViNmUxYzk0ZjI5ZThhZmU2YTA2Li44MTQyODY3MmI2MDUxODdlMjIx
MTE3NDRjMDQ0OTBkNTU5NWVhM2VmIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9kdW1wX3JlbmRlcl90cmVlX3RocmVh
ZC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlv
dXRfcGFja2FnZS9kdW1wX3JlbmRlcl90cmVlX3RocmVhZC5weQpAQCAtNTEsNiArNTEsNyBAQCBp
bXBvcnQgdGltZQogaW1wb3J0IHRyYWNlYmFjawogCiBpbXBvcnQgdGVzdF9mYWlsdXJlcworaW1w
b3J0IHRlc3Rfb3V0cHV0CiBpbXBvcnQgdGVzdF9yZXN1bHRzCiAKIF9sb2cgPSBsb2dnaW5nLmdl
dExvZ2dlcigid2Via2l0cHkubGF5b3V0X3Rlc3RzLmxheW91dF9wYWNrYWdlLiIKQEAgLTc0LDkg
Kzc1LDE0IEBAIGRlZiBsb2dfc3RhY2soc3RhY2spOgogICAgICAgICAgICAgX2xvZy5lcnJvcign
ICAlcycgJSBsaW5lLnN0cmlwKCkpCiAKIAorZGVmIF9leHBlY3RlZF90ZXN0X291dHB1dChwb3J0
LCBmaWxlbmFtZSk6CisgICAgIiIiUmV0dXJucyBhbiBleHBlY3RlZCBUZXN0T3V0cHV0IG9iamVj
dC4iIiIKKyAgICByZXR1cm4gdGVzdF9vdXRwdXQuVGVzdE91dHB1dChwb3J0LmV4cGVjdGVkX3Rl
eHQoZmlsZW5hbWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcnQuZXhw
ZWN0ZWRfaW1hZ2UoZmlsZW5hbWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHBvcnQuZXhwZWN0ZWRfY2hlY2tzdW0oZmlsZW5hbWUpKQorCiBkZWYgX3Byb2Nlc3Nfb3V0cHV0
KHBvcnQsIG9wdGlvbnMsIHRlc3RfaW5wdXQsIHRlc3RfdHlwZXMsIHRlc3RfYXJncywKLSAgICAg
ICAgICAgICAgICAgICAgY3Jhc2gsIHRpbWVvdXQsIHRlc3RfcnVuX3RpbWUsIGFjdHVhbF9jaGVj
a3N1bSwKLSAgICAgICAgICAgICAgICAgICAgb3V0cHV0LCBlcnJvcik6CisgICAgICAgICAgICAg
ICAgICAgIHRlc3Rfb3V0cHV0KToKICAgICAiIiJSZWNlaXZlcyB0aGUgb3V0cHV0IGZyb20gYSBE
dW1wUmVuZGVyVHJlZSBwcm9jZXNzLCBzdWJqZWN0cyBpdCB0byBhCiAgICAgbnVtYmVyIG9mIHRl
c3RzLCBhbmQgcmV0dXJucyBhIGxpc3Qgb2YgZmFpbHVyZSB0eXBlcyB0aGUgdGVzdCBwcm9kdWNl
ZC4KIApAQCAtODcsMjQgKzkzLDIwIEBAIGRlZiBfcHJvY2Vzc19vdXRwdXQocG9ydCwgb3B0aW9u
cywgdGVzdF9pbnB1dCwgdGVzdF90eXBlcywgdGVzdF9hcmdzLAogICAgICAgdGVzdF9pbnB1dDog
T2JqZWN0IGNvbnRhaW5pbmcgdGhlIHRlc3QgZmlsZW5hbWUsIHVyaSBhbmQgdGltZW91dAogICAg
ICAgdGVzdF90eXBlczogbGlzdCBvZiB0ZXN0IHR5cGVzIHRvIHN1YmplY3QgdGhlIG91dHB1dCB0
bwogICAgICAgdGVzdF9hcmdzOiBhcmd1bWVudHMgdG8gYmUgcGFzc2VkIHRvIGVhY2ggdGVzdAor
ICAgICAgdGVzdF9vdXRwdXQ6IGEgVGVzdE91dHB1dCBvYmplY3QgY29udGFpbmluZyB0aGUgb3V0
cHV0IG9mIHRoZSB0ZXN0CiAKICAgICBSZXR1cm5zOiBhIFRlc3RSZXN1bHQgb2JqZWN0CiAgICAg
IiIiCiAgICAgZmFpbHVyZXMgPSBbXQogCi0gICAgIyBTb21lIHRlc3QgYXJncywgc3VjaCBhcyB0
aGUgaW1hZ2UgaGFzaCwgbWF5IGJlIGFkZGVkIG9yIGNoYW5nZWQgb24gYQotICAgICMgdGVzdC1i
eS10ZXN0IGJhc2lzLgotICAgIGxvY2FsX3Rlc3RfYXJncyA9IGNvcHkuY29weSh0ZXN0X2FyZ3Mp
Ci0KLSAgICBsb2NhbF90ZXN0X2FyZ3MuaGFzaCA9IGFjdHVhbF9jaGVja3N1bQotCi0gICAgaWYg
Y3Jhc2g6CisgICAgaWYgdGVzdF9vdXRwdXQuY3Jhc2g6CiAgICAgICAgIGZhaWx1cmVzLmFwcGVu
ZCh0ZXN0X2ZhaWx1cmVzLkZhaWx1cmVDcmFzaCgpKQotICAgIGlmIHRpbWVvdXQ6CisgICAgaWYg
dGVzdF9vdXRwdXQudGltZW91dDoKICAgICAgICAgZmFpbHVyZXMuYXBwZW5kKHRlc3RfZmFpbHVy
ZXMuRmFpbHVyZVRpbWVvdXQoKSkKIAotICAgIGlmIGNyYXNoOgotICAgICAgICBfbG9nLmRlYnVn
KCJTdGFja3RyYWNlIGZvciAlczpcbiVzIiAlICh0ZXN0X2lucHV0LmZpbGVuYW1lLCBlcnJvcikp
CisgICAgaWYgdGVzdF9vdXRwdXQuY3Jhc2g6CisgICAgICAgIF9sb2cuZGVidWcoIlN0YWNrdHJh
Y2UgZm9yICVzOlxuJXMiICUgKHRlc3RfaW5wdXQuZmlsZW5hbWUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rfb3V0cHV0LmVycm9yKSkKICAgICAg
ICAgIyBTdHJpcCBvZmYgImZpbGU6Ly8iIHNpbmNlIFJlbGF0aXZlVGVzdEZpbGVuYW1lIGV4cGVj
dHMKICAgICAgICAgIyBmaWxlc3lzdGVtIHBhdGhzLgogICAgICAgICBmaWxlbmFtZSA9IG9zLnBh
dGguam9pbihvcHRpb25zLnJlc3VsdHNfZGlyZWN0b3J5LApAQCAtMTEzLDkgKzExNSwxMSBAQCBk
ZWYgX3Byb2Nlc3Nfb3V0cHV0KHBvcnQsIG9wdGlvbnMsIHRlc3RfaW5wdXQsIHRlc3RfdHlwZXMs
IHRlc3RfYXJncywKICAgICAgICAgZmlsZW5hbWUgPSBvcy5wYXRoLnNwbGl0ZXh0KGZpbGVuYW1l
KVswXSArICItc3RhY2sudHh0IgogICAgICAgICBwb3J0Lm1heWJlX21ha2VfZGlyZWN0b3J5KG9z
LnBhdGguc3BsaXQoZmlsZW5hbWUpWzBdKQogICAgICAgICB3aXRoIGNvZGVjcy5vcGVuKGZpbGVu
YW1lLCAid2IiLCAidXRmLTgiKSBhcyBmaWxlOgotICAgICAgICAgICAgZmlsZS53cml0ZShlcnJv
cikKLSAgICBlbGlmIGVycm9yOgotICAgICAgICBfbG9nLmRlYnVnKCJQcmV2aW91cyB0ZXN0IG91
dHB1dCBzdGRlcnIgbGluZXM6XG4lcyIgJSBlcnJvcikKKyAgICAgICAgICAgIGZpbGUud3JpdGUo
dGVzdF9vdXRwdXQuZXJyb3IpCisgICAgZWxpZiB0ZXN0X291dHB1dC5lcnJvcjoKKyAgICAgICAg
X2xvZy5kZWJ1ZygiUHJldmlvdXMgdGVzdCBvdXRwdXQgc3RkZXJyIGxpbmVzOlxuJXMiICUgdGVz
dF9vdXRwdXQuZXJyb3IpCisKKyAgICBleHBlY3RlZF90ZXN0X291dHB1dCA9IF9leHBlY3RlZF90
ZXN0X291dHB1dChwb3J0LCB0ZXN0X2lucHV0LmZpbGVuYW1lKQogCiAgICAgIyBDaGVjayB0aGUg
b3V0cHV0IGFuZCBzYXZlIHRoZSByZXN1bHRzLgogICAgIHN0YXJ0X3RpbWUgPSB0aW1lLnRpbWUo
KQpAQCAtMTIzLDE4ICsxMjcsMTggQEAgZGVmIF9wcm9jZXNzX291dHB1dChwb3J0LCBvcHRpb25z
LCB0ZXN0X2lucHV0LCB0ZXN0X3R5cGVzLCB0ZXN0X2FyZ3MsCiAgICAgZm9yIHRlc3RfdHlwZSBp
biB0ZXN0X3R5cGVzOgogICAgICAgICBzdGFydF9kaWZmX3RpbWUgPSB0aW1lLnRpbWUoKQogICAg
ICAgICBuZXdfZmFpbHVyZXMgPSB0ZXN0X3R5cGUuY29tcGFyZV9vdXRwdXQocG9ydCwgdGVzdF9p
bnB1dC5maWxlbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG91dHB1dCwgbG9jYWxfdGVzdF9hcmdzLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5jb25maWd1cmF0aW9uKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9hcmdzLCB0ZXN0X291
dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4
cGVjdGVkX3Rlc3Rfb3V0cHV0KQogICAgICAgICAjIERvbid0IGFkZCBhbnkgbW9yZSBmYWlsdXJl
cyBpZiB3ZSBhbHJlYWR5IGhhdmUgYSBjcmFzaCwgc28gd2UgZG9uJ3QKICAgICAgICAgIyBkb3Vi
bGUtcmVwb3J0IHRob3NlIHRlc3RzLiBXZSBkbyBkb3VibGUtcmVwb3J0IGZvciB0aW1lb3V0cyBz
aW5jZQogICAgICAgICAjIHdlIHN0aWxsIHdhbnQgdG8gc2VlIHRoZSB0ZXh0IGFuZCBpbWFnZSBv
dXRwdXQuCi0gICAgICAgIGlmIG5vdCBjcmFzaDoKKyAgICAgICAgaWYgbm90IHRlc3Rfb3V0cHV0
LmNyYXNoOgogICAgICAgICAgICAgZmFpbHVyZXMuZXh0ZW5kKG5ld19mYWlsdXJlcykKICAgICAg
ICAgdGltZV9mb3JfZGlmZnNbdGVzdF90eXBlLl9fY2xhc3NfXy5fX25hbWVfX10gPSAoCiAgICAg
ICAgICAgICB0aW1lLnRpbWUoKSAtIHN0YXJ0X2RpZmZfdGltZSkKIAogICAgIHRvdGFsX3RpbWVf
Zm9yX2FsbF9kaWZmcyA9IHRpbWUudGltZSgpIC0gc3RhcnRfZGlmZl90aW1lCi0gICAgcmV0dXJu
IHRlc3RfcmVzdWx0cy5UZXN0UmVzdWx0KHRlc3RfaW5wdXQuZmlsZW5hbWUsIGZhaWx1cmVzLCB0
ZXN0X3J1bl90aW1lLAorICAgIHJldHVybiB0ZXN0X3Jlc3VsdHMuVGVzdFJlc3VsdCh0ZXN0X2lu
cHV0LmZpbGVuYW1lLCBmYWlsdXJlcywgdGVzdF9vdXRwdXQudGVzdF90aW1lLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0b3RhbF90aW1lX2Zvcl9hbGxfZGlmZnMsIHRpbWVf
Zm9yX2RpZmZzKQogCiAKQEAgLTE1Nyw2ICsxNjEsMjMgQEAgZGVmIF9zaG91bGRfZmV0Y2hfZXhw
ZWN0ZWRfY2hlY2tzdW0ob3B0aW9ucyk6CiAgICAgcmV0dXJuIG9wdGlvbnMucGl4ZWxfdGVzdHMg
YW5kIG5vdCAob3B0aW9ucy5uZXdfYmFzZWxpbmUgb3Igb3B0aW9ucy5yZXNldF9yZXN1bHRzKQog
CiAKK2RlZiBfcnVuX3NpbmdsZV90ZXN0KHBvcnQsIG9wdGlvbnMsIHRlc3RfaW5wdXQsIHRlc3Rf
dHlwZXMsIHRlc3RfYXJncywgZHJpdmVyKToKKyAgICAjIEZJWE1FOiBQdWxsIHRoaXMgaW50byBU
ZXN0U2hlbGxUaHJlYWQuX3J1bigpLgorCisgICAgIyBUaGUgaW1hZ2UgaGFzaCBpcyB1c2VkIHRv
IGF2b2lkIGRvaW5nIGFuIGltYWdlIGR1bXAgaWYgdGhlCisgICAgIyBjaGVja3N1bXMgbWF0Y2gs
IHNvIGl0IHNob3VsZCBiZSBzZXQgdG8gYSBibGFuayB2YWx1ZSBpZiB3ZQorICAgICMgYXJlIGdl
bmVyYXRpbmcgYSBuZXcgYmFzZWxpbmUuICAoT3RoZXJ3aXNlLCBhbiBpbWFnZSBmcm9tIGEKKyAg
ICAjIHByZXZpb3VzIHJ1biB3aWxsIGJlIGNvcGllZCBpbnRvIHRoZSBiYXNlbGluZS4iIiIKKyAg
ICBpZiBfc2hvdWxkX2ZldGNoX2V4cGVjdGVkX2NoZWNrc3VtKG9wdGlvbnMpOgorICAgICAgICBp
bWFnZV9oYXNoX3RvX2RyaXZlciA9IHBvcnQuZXhwZWN0ZWRfY2hlY2tzdW0odGVzdF9pbnB1dC5m
aWxlbmFtZSkKKyAgICBlbHNlOgorICAgICAgICBpbWFnZV9oYXNoX3RvX2RyaXZlciA9IE5vbmUK
KyAgICB0ZXN0X2lucHV0LnVyaSA9IHBvcnQuZmlsZW5hbWVfdG9fdXJpKHRlc3RfaW5wdXQuZmls
ZW5hbWUpLnN0cmlwKCkKKyAgICB0ZXN0X291dHB1dCA9IGRyaXZlci5ydW5fdGVzdCh0ZXN0X2lu
cHV0LnVyaSwgdGVzdF9pbnB1dC50aW1lb3V0LCBpbWFnZV9oYXNoX3RvX2RyaXZlcikKKyAgICBy
ZXR1cm4gX3Byb2Nlc3Nfb3V0cHV0KHBvcnQsIG9wdGlvbnMsIHRlc3RfaW5wdXQsIHRlc3RfdHlw
ZXMsIHRlc3RfYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rfb3V0cHV0KQor
CisKIGNsYXNzIFNpbmdsZVRlc3RUaHJlYWQodGhyZWFkaW5nLlRocmVhZCk6CiAgICAgIiIiVGhy
ZWFkIHdyYXBwZXIgZm9yIHJ1bm5pbmcgYSBzaW5nbGUgdGVzdCBmaWxlLiIiIgogCkBAIC0xODUs
MjUgKzIwNiwxMiBAQCBjbGFzcyBTaW5nbGVUZXN0VGhyZWFkKHRocmVhZGluZy5UaHJlYWQpOgog
ICAgIGRlZiBfY292ZXJlZF9ydW4oc2VsZik6CiAgICAgICAgICMgRklYTUU6IHRoaXMgaXMgYSBz
ZXBhcmF0ZSByb3V0aW5lIHRvIHdvcmsgYXJvdW5kIGEgYnVnCiAgICAgICAgICMgaW4gY292ZXJh
Z2U6IHNlZSBodHRwOi8vYml0YnVja2V0Lm9yZy9uZWQvY292ZXJhZ2VweS9pc3N1ZS84NS4KLQot
ICAgICAgICAjIEZJWE1FOiBQdWxsIHRoaXMgaW50byBUZXN0U2hlbGxUaHJlYWQuX3J1bigpLgot
ICAgICAgICB0ZXN0X2lucHV0ID0gc2VsZi5fdGVzdF9pbnB1dAotICAgICAgICB0ZXN0X2lucHV0
LnVyaSA9IHNlbGYuX3BvcnQuZmlsZW5hbWVfdG9fdXJpKHRlc3RfaW5wdXQuZmlsZW5hbWUpCi0g
ICAgICAgIGlmIF9zaG91bGRfZmV0Y2hfZXhwZWN0ZWRfY2hlY2tzdW0oc2VsZi5fb3B0aW9ucyk6
Ci0gICAgICAgICAgICB0ZXN0X2lucHV0LmltYWdlX2NoZWNrc3VtID0gc2VsZi5fcG9ydC5leHBl
Y3RlZF9jaGVja3N1bSh0ZXN0X2lucHV0LmZpbGVuYW1lKQotCi0gICAgICAgIHN0YXJ0ID0gdGlt
ZS50aW1lKCkKICAgICAgICAgc2VsZi5fZHJpdmVyID0gc2VsZi5fcG9ydC5jcmVhdGVfZHJpdmVy
KHNlbGYuX3Rlc3RfYXJncy5wbmdfcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMpCiAgICAgICAgIHNlbGYuX2RyaXZlci5z
dGFydCgpCi0gICAgICAgIGNyYXNoLCB0aW1lb3V0LCBhY3R1YWxfY2hlY2tzdW0sIG91dHB1dCwg
ZXJyb3IgPSBcCi0gICAgICAgICAgICBzZWxmLl9kcml2ZXIucnVuX3Rlc3QodGVzdF9pbnB1dC51
cmksIHRlc3RfaW5wdXQudGltZW91dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0ZXN0X2lucHV0LmltYWdlX2NoZWNrc3VtKQotICAgICAgICBlbmQgPSB0aW1lLnRpbWUoKQot
ICAgICAgICBzZWxmLl90ZXN0X3Jlc3VsdCA9IF9wcm9jZXNzX291dHB1dChzZWxmLl9wb3J0LCBz
ZWxmLl9vcHRpb25zLAotICAgICAgICAgICAgdGVzdF9pbnB1dCwgc2VsZi5fdGVzdF90eXBlcywg
c2VsZi5fdGVzdF9hcmdzLAotICAgICAgICAgICAgY3Jhc2gsIHRpbWVvdXQsIGVuZCAtIHN0YXJ0
LAotICAgICAgICAgICAgYWN0dWFsX2NoZWNrc3VtLCBvdXRwdXQsIGVycm9yKQorICAgICAgICBz
ZWxmLl90ZXN0X3Jlc3VsdCA9IF9ydW5fc2luZ2xlX3Rlc3Qoc2VsZi5fcG9ydCwgc2VsZi5fb3B0
aW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYu
X3Rlc3RfaW5wdXQsIHNlbGYuX3Rlc3RfdHlwZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZWxmLl90ZXN0X2FyZ3MsIHNlbGYuX2RyaXZlcikKICAgICAg
ICAgc2VsZi5fZHJpdmVyLnN0b3AoKQogCiAgICAgZGVmIGdldF90ZXN0X3Jlc3VsdChzZWxmKToK
QEAgLTUwMSwzMiArNTA5LDE0IEBAIGNsYXNzIFRlc3RTaGVsbFRocmVhZChXYXRjaGFibGVUaHJl
YWQpOgogICAgICAgICBSZXR1cm5zOiBhIFRlc3RSZXN1bHQgb2JqZWN0LgogICAgICAgICAiIiIK
ICAgICAgICAgc2VsZi5fZW5zdXJlX2R1bXBfcmVuZGVyX3RyZWVfaXNfcnVubmluZygpCi0gICAg
ICAgICMgVGhlIHBpeGVsX2hhc2ggaXMgdXNlZCB0byBhdm9pZCBkb2luZyBhbiBpbWFnZSBkdW1w
IGlmIHRoZQotICAgICAgICAjIGNoZWNrc3VtcyBtYXRjaCwgc28gaXQgc2hvdWxkIGJlIHNldCB0
byBhIGJsYW5rIHZhbHVlIGlmIHdlCi0gICAgICAgICMgYXJlIGdlbmVyYXRpbmcgYSBuZXcgYmFz
ZWxpbmUuICAoT3RoZXJ3aXNlLCBhbiBpbWFnZSBmcm9tIGEKLSAgICAgICAgIyBwcmV2aW91cyBy
dW4gd2lsbCBiZSBjb3BpZWQgaW50byB0aGUgYmFzZWxpbmUuKQotCi0gICAgICAgICMgRklYTUU6
IFB1bGwgdGhpcyBpbnRvIFRlc3RTaGVsbFRocmVhZC5fcnVuKCkuCi0gICAgICAgIHRlc3RfaW5w
dXQudXJpID0gc2VsZi5fcG9ydC5maWxlbmFtZV90b191cmkodGVzdF9pbnB1dC5maWxlbmFtZSkK
LSAgICAgICAgaWYgX3Nob3VsZF9mZXRjaF9leHBlY3RlZF9jaGVja3N1bShzZWxmLl9vcHRpb25z
KToKLSAgICAgICAgICAgIHRlc3RfaW5wdXQuaW1hZ2VfY2hlY2tzdW0gPSBzZWxmLl9wb3J0LmV4
cGVjdGVkX2NoZWNrc3VtKHRlc3RfaW5wdXQuZmlsZW5hbWUpCi0gICAgICAgIHN0YXJ0ID0gdGlt
ZS50aW1lKCkKLQogICAgICAgICB0aHJlYWRfdGltZW91dCA9IF9taWxsaXNlY29uZHNfdG9fc2Vj
b25kcygKICAgICAgICAgICAgICBfcGFkX3RpbWVvdXQoaW50KHRlc3RfaW5wdXQudGltZW91dCkp
KQotICAgICAgICBzZWxmLl9uZXh0X3RpbWVvdXQgPSBzdGFydCArIHRocmVhZF90aW1lb3V0Ci0K
LSAgICAgICAgY3Jhc2gsIHRpbWVvdXQsIGFjdHVhbF9jaGVja3N1bSwgb3V0cHV0LCBlcnJvciA9
IFwKLSAgICAgICAgICAgc2VsZi5fZHJpdmVyLnJ1bl90ZXN0KHRlc3RfaW5wdXQudXJpLCB0ZXN0
X2lucHV0LnRpbWVvdXQsIHRlc3RfaW5wdXQuaW1hZ2VfY2hlY2tzdW0pCi0gICAgICAgIGVuZCA9
IHRpbWUudGltZSgpCi0KLSAgICAgICAgcmVzdWx0ID0gX3Byb2Nlc3Nfb3V0cHV0KHNlbGYuX3Bv
cnQsIHNlbGYuX29wdGlvbnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0
X2lucHV0LCBzZWxmLl90ZXN0X3R5cGVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2VsZi5fdGVzdF9hcmdzLCBjcmFzaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRpbWVvdXQsIGVuZCAtIHN0YXJ0LCBhY3R1YWxfY2hlY2tzdW0sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBvdXRwdXQsIGVycm9yKQotICAgICAgICBzZWxmLl90ZXN0X3Jl
c3VsdHMuYXBwZW5kKHJlc3VsdCkKLSAgICAgICAgcmV0dXJuIHJlc3VsdAorICAgICAgICBzZWxm
Ll9uZXh0X3RpbWVvdXQgPSB0aW1lLnRpbWUoKSArIHRocmVhZF90aW1lb3V0CisgICAgICAgIHRl
c3RfcmVzdWx0ID0gX3J1bl9zaW5nbGVfdGVzdChzZWxmLl9wb3J0LCBzZWxmLl9vcHRpb25zLCB0
ZXN0X2lucHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5f
dGVzdF90eXBlcywgc2VsZi5fdGVzdF9hcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2VsZi5fZHJpdmVyKQorICAgICAgICBzZWxmLl90ZXN0X3Jlc3VsdHMuYXBw
ZW5kKHRlc3RfcmVzdWx0KQorICAgICAgICByZXR1cm4gdGVzdF9yZXN1bHQKIAogICAgIGRlZiBf
ZW5zdXJlX2R1bXBfcmVuZGVyX3RyZWVfaXNfcnVubmluZyhzZWxmKToKICAgICAgICAgIiIiU3Rh
cnQgdGhlIHNoYXJlZCBEdW1wUmVuZGVyVHJlZSwgaWYgaXQncyBub3QgcnVubmluZy4KZGlmZiAt
LWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9w
YWNrYWdlL3Rlc3Rfb3V0cHV0LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9vdXRwdXQucHkKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTgwOWJl
NjI1ZDViZTkzNmU0MzBjZTdjM2I0NjdlMDA1NWM0OGE4NgotLS0gL2Rldi9udWxsCisrKyBiL1dl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rl
c3Rfb3V0cHV0LnB5CkBAIC0wLDAgKzEsNTYgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDEwIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMK
KyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKK2NsYXNz
IFRlc3RPdXRwdXQob2JqZWN0KToKKyAgICAiIiJHcm91cHMgaW5mb3JtYXRpb24gYWJvdXQgYSB0
ZXN0IG91dHB1dCBmb3IgZWFzeSBwYXNzaW5nIG9mIGRhdGEuCisKKyAgICBUaGlzIGlzIHVzZWQg
bm90IG9ubHkgZm9yIGEgYWN0dWFsIHRlc3Qgb3V0cHV0LCBidXQgYWxzbyBmb3IgZ3JvdXBpbmcK
KyAgICBleHBlY3RlZCB0ZXN0IG91dHB1dC4KKyAgICAiIiIKKworICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCB0ZXh0LCBpbWFnZSwgaW1hZ2VfaGFzaCwKKyAgICAgICAgICAgICAgICAgY3Jhc2g9Tm9u
ZSwgdGVzdF90aW1lPU5vbmUsIHRpbWVvdXQ9Tm9uZSwgZXJyb3I9Tm9uZSk6CisgICAgICAgICIi
IkluaXRpYWxpemVzIGEgVGVzdE91dHB1dCBvYmplY3QuCisKKyAgICAgICAgQXJnczoKKyAgICAg
ICAgICB0ZXh0OiBhIHRleHQgb3V0cHV0CisgICAgICAgICAgaW1hZ2U6IGFuIGltYWdlIG91dHB1
dAorICAgICAgICAgIGltYWdlX2hhc2g6IGEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIGNoZWNrc3Vt
IG9mIHRoZSBpbWFnZQorICAgICAgICAgIGNyYXNoOiBhIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0
aGVyIHRoZSBkcml2ZXIgY3Jhc2hlZCBvbiB0aGUgdGVzdAorICAgICAgICAgIHRlc3RfdGltZTog
YSB0aW1lIHdoaWNoIHRoZSB0ZXN0IGhhcyB0YWtlbgorICAgICAgICAgIHRpbWVvdXQ6IGEgYm9v
bGVhbiBpbmRpY2F0aW5nIHdoZWh0ZXIgdGhlIHRlc3QgdGltZWQgb3V0CisgICAgICAgICAgZXJy
b3I6IGFueSB1bmV4cGVjdGVkIG9yIGFkZGl0aW9uYWwgKG9yIGVycm9yKSB0ZXh0IG91dHB1dAor
ICAgICAgICAiIiIKKyAgICAgICAgc2VsZi50ZXh0ID0gdGV4dAorICAgICAgICBzZWxmLmltYWdl
ID0gaW1hZ2UKKyAgICAgICAgc2VsZi5pbWFnZV9oYXNoID0gaW1hZ2VfaGFzaAorICAgICAgICBz
ZWxmLmNyYXNoID0gY3Jhc2gKKyAgICAgICAgc2VsZi50ZXN0X3RpbWUgPSB0ZXN0X3RpbWUKKyAg
ICAgICAgc2VsZi50aW1lb3V0ID0gdGltZW91dAorICAgICAgICBzZWxmLmVycm9yID0gZXJyb3IK
ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvYmFzZS5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvYmFzZS5weQppbmRleCA0YTI5NzBlMzIwM2M2MDBmNWUyODlmOGU4M2RkOGFhNDI5MDBhMWI0
Li42MzI4MDZmYjJjZTMwZjUzODkzZDQ4ZTc4NTBiYzBmYjg4NzRjMzkwIDEwMDY0NAotLS0gYS9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkKKysr
IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5
CkBAIC04MzIsMTYgKzgzMiw4IEBAIGNsYXNzIERyaXZlcjoKICAgICAgICAgY2hlY2tzdW0gLSBp
ZiBwcmVzZW50LCB0aGUgZXhwZWN0ZWQgY2hlY2tzdW0gZm9yIHRoZSBpbWFnZSBmb3IgdGhpcwog
ICAgICAgICAgICAgdGVzdAogCi0gICAgICAgIFJldHVybnMgYSB0dXBsZSBvZiB0aGUgZm9sbG93
aW5nOgotICAgICAgICAgICAgY3Jhc2ggLSBhIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRo
ZSBkcml2ZXIgY3Jhc2hlZCBvbiB0aGUgdGVzdAotICAgICAgICAgICAgdGltZW91dCAtIGEgYm9v
bGVhbiBpbmRpY2F0aW5nIHdoZWh0ZXIgdGhlIHRlc3QgdGltZWQgb3V0Ci0gICAgICAgICAgICBj
aGVja3N1bSAtIGEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIGNoZWNrc3VtIG9mIHRoZSBpbWFnZSwg
aWYKLSAgICAgICAgICAgICAgICBwcmVzZW50Ci0gICAgICAgICAgICBvdXRwdXQgLSBhbnkgdGV4
dCBvdXRwdXQKLSAgICAgICAgICAgIGVycm9yIC0gYW55IHVuZXhwZWN0ZWQgb3IgYWRkaXRpb25h
bCAob3IgZXJyb3IpIHRleHQgb3V0cHV0Ci0KLSAgICAgICAgTm90ZSB0aGF0IHRoZSBpbWFnZSBp
dHNlbGYgc2hvdWxkIGJlIHdyaXR0ZW4gdG8gdGhlIHBhdGggdGhhdCB3YXMKLSAgICAgICAgc3Bl
Y2lmaWVkIGluIHRoZSBfX2luaXRfXygpIGNhbGwuIiIiCisgICAgICAgIFJldHVybnMgYSBUZXN0
T3V0cHV0IG9iamVjdC4KKyAgICAgICAgIiIiCiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVk
RXJyb3IoJ0RyaXZlci5ydW5fdGVzdCcpCiAKICAgICAjIEZJWE1FOiBUaGlzIGlzIHN0YXRpYyBz
byB3ZSBjYW4gdGVzdCBpdCB3L28gY3JlYXRpbmcgYSBCYXNlIGluc3RhbmNlLgpkaWZmIC0tZ2l0
IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1
bS5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hy
b21pdW0ucHkKaW5kZXggZjkzZjlhOGQ5NGYwZDRkMTM0MDE0OTVmMTE0ZjQ1M2E0N2E2MGY1MS4u
MzE0OTI5MDk5YWMxMzZkMjg2MTJlM2NjZjc4MTcyMTkwZGY4ZmQzMiAxMDA2NDQKLS0tIGEvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weQor
KysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9t
aXVtLnB5CkBAIC00NiwxMyArNDYsMTEgQEAgaW1wb3J0IHdlYmJyb3dzZXIKIGZyb20gd2Via2l0
cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IEV4ZWN1dGl2ZQogZnJvbSB3ZWJraXRw
eS5jb21tb24uc3lzdGVtLnBhdGggaW1wb3J0IGN5Z3BhdGgKIGZyb20gd2Via2l0cHkubGF5b3V0
X3Rlc3RzLmxheW91dF9wYWNrYWdlIGltcG9ydCB0ZXN0X2V4cGVjdGF0aW9ucworZnJvbSB3ZWJr
aXRweS5sYXlvdXRfdGVzdHMubGF5b3V0X3BhY2thZ2UgaW1wb3J0IHRlc3Rfb3V0cHV0CiAKIGlt
cG9ydCBiYXNlCiBpbXBvcnQgaHR0cF9zZXJ2ZXIKIAotZnJvbSB3ZWJraXRweS5jb21tb24uc3lz
dGVtLmV4ZWN1dGl2ZSBpbXBvcnQgRXhlY3V0aXZlCi1mcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0
cy5sYXlvdXRfcGFja2FnZSBpbXBvcnQgdGVzdF9leHBlY3RhdGlvbnMKLQogIyBDaHJvbWl1bSBE
UlQgb24gT1NYIHVzZXMgV2ViS2l0RHJpdmVyLgogaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4n
OgogICAgIGltcG9ydCB3ZWJraXQKQEAgLTQ0Nyw2ICs0NDUsMTUgQEAgY2xhc3MgQ2hyb21pdW1E
cml2ZXIoYmFzZS5Ecml2ZXIpOgogICAgICAgICBjbWQgKz0gIlxuIgogICAgICAgICByZXR1cm4g
Y21kCiAKKyAgICBkZWYgX291dHB1dF9pbWFnZShzZWxmKToKKyAgICAgICAgIiIiUmV0dXJucyB0
aGUgaW1hZ2Ugb3V0cHV0IHdoaWNoIGRyaXZlciBnZW5lcmF0ZWQuIiIiCisgICAgICAgIHBuZ19w
YXRoID0gc2VsZi5faW1hZ2VfcGF0aAorICAgICAgICBpZiBwbmdfcGF0aCBhbmQgb3MucGF0aC5p
c2ZpbGUocG5nX3BhdGgpOgorICAgICAgICAgICAgd2l0aCBvcGVuKHBuZ19wYXRoLCAncmInKSBh
cyBpbWFnZV9maWxlOgorICAgICAgICAgICAgICAgIHJldHVybiBpbWFnZV9maWxlLnJlYWQoKQor
ICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKwogICAgIGRlZiBydW5fdGVz
dChzZWxmLCB1cmksIHRpbWVvdXRtcywgY2hlY2tzdW0pOgogICAgICAgICBvdXRwdXQgPSBbXQog
ICAgICAgICBlcnJvciA9IFtdCkBAIC00OTgsOCArNTA1LDkgQEAgY2xhc3MgQ2hyb21pdW1Ecml2
ZXIoYmFzZS5Ecml2ZXIpOgogCiAgICAgICAgICAgICAobGluZSwgY3Jhc2gpID0gc2VsZi5fd3Jp
dGVfY29tbWFuZF9hbmRfcmVhZF9saW5lKGlucHV0PU5vbmUpCiAKLSAgICAgICAgcmV0dXJuIChj
cmFzaCwgdGltZW91dCwgYWN0dWFsX2NoZWNrc3VtLCAnJy5qb2luKG91dHB1dCksCi0gICAgICAg
ICAgICAgICAgJycuam9pbihlcnJvcikpCisgICAgICAgIHJldHVybiB0ZXN0X291dHB1dC5UZXN0
T3V0cHV0KAorICAgICAgICAgICAgJycuam9pbihvdXRwdXQpLCBzZWxmLl9vdXRwdXRfaW1hZ2Uo
KSwgYWN0dWFsX2NoZWNrc3VtLAorICAgICAgICAgICAgY3Jhc2gsIHRpbWUudGltZSgpIC0gc3Rh
cnRfdGltZSwgdGltZW91dCwgJycuam9pbihlcnJvcikpCiAKICAgICBkZWYgc3RvcChzZWxmKToK
ICAgICAgICAgaWYgc2VsZi5fcHJvYzoKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZHJ5cnVuLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9kcnlydW4ucHkKaW5kZXggOGE2YWY1NmM4NDIw
ZTQ1MGM0MTg5N2FmZTU0M2U2NjcwNmY5YWU3Ni4uOTZkMGQ1NWY2MmQ3YmMxNGI0YWQ0M2E5ZWFh
OWVkMDY5ZDY0MjAxNiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9kcnlydW4ucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcG9ydC9kcnlydW4ucHkKQEAgLTQ4LDYgKzQ4LDkgQEAgZnJvbSBf
X2Z1dHVyZV9fIGltcG9ydCB3aXRoX3N0YXRlbWVudAogCiBpbXBvcnQgb3MKIGltcG9ydCBzeXMK
K2ltcG9ydCB0aW1lCisKK2Zyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmxheW91dF9wYWNrYWdl
IGltcG9ydCB0ZXN0X291dHB1dAogCiBpbXBvcnQgYmFzZQogaW1wb3J0IGZhY3RvcnkKQEAgLTEw
OSwxOSArMTEyLDE5IEBAIGNsYXNzIERyeXJ1bkRyaXZlcihiYXNlLkRyaXZlcik6CiAgICAgICAg
IHJldHVybiBOb25lCiAKICAgICBkZWYgcnVuX3Rlc3Qoc2VsZiwgdXJpLCB0aW1lb3V0bXMsIGlt
YWdlX2hhc2gpOgorICAgICAgICBzdGFydF90aW1lID0gdGltZS50aW1lKCkKICAgICAgICAgdGVz
dF9uYW1lID0gc2VsZi5fcG9ydC51cmlfdG9fdGVzdF9uYW1lKHVyaSkKICAgICAgICAgcGF0aCA9
IG9zLnBhdGguam9pbihzZWxmLl9wb3J0LmxheW91dF90ZXN0c19kaXIoKSwgdGVzdF9uYW1lKQog
ICAgICAgICB0ZXh0X291dHB1dCA9IHNlbGYuX3BvcnQuZXhwZWN0ZWRfdGV4dChwYXRoKQogCiAg
ICAgICAgIGlmIGltYWdlX2hhc2ggaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBpbWFnZSA9IHNl
bGYuX3BvcnQuZXhwZWN0ZWRfaW1hZ2UocGF0aCkKLSAgICAgICAgICAgIGlmIGltYWdlIGFuZCBz
ZWxmLl9pbWFnZV9wYXRoOgotICAgICAgICAgICAgICAgIHdpdGggb3BlbihzZWxmLl9pbWFnZV9w
YXRoLCAndycpIGFzIGY6Ci0gICAgICAgICAgICAgICAgICAgIGYud3JpdGUoaW1hZ2UpCiAgICAg
ICAgICAgICBoYXNoID0gc2VsZi5fcG9ydC5leHBlY3RlZF9jaGVja3N1bShwYXRoKQogICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgaW1hZ2UgPSBOb25lCiAgICAgICAgICAgICBoYXNoID0gTm9u
ZQotICAgICAgICByZXR1cm4gKEZhbHNlLCBGYWxzZSwgaGFzaCwgdGV4dF9vdXRwdXQsIE5vbmUp
CisgICAgICAgIHJldHVybiB0ZXN0X291dHB1dC5UZXN0T3V0cHV0KHRleHRfb3V0cHV0LCBpbWFn
ZSwgaGFzaCwgRmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRp
bWUudGltZSgpIC0gc3RhcnRfdGltZSwgRmFsc2UsIE5vbmUpCiAKICAgICBkZWYgc3RhcnQoc2Vs
Zik6CiAgICAgICAgIHBhc3MKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdC5weQppbmRleCBmZjQwODZjNzRkYzE4MmJhODQ3MTIz
ZTYzNTUwMGQxNDQxMWQ5OTNlLi4wYTI3ODIxNGRjMWIyNTlhOTc0OGQyZGJiMzU2NWQ1MGZhMjUx
NWI0IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L3Rlc3QucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC90ZXN0LnB5CkBAIC0zNiw2ICszNiw4IEBAIGltcG9ydCBvcwogaW1wb3J0IHN5
cwogaW1wb3J0IHRpbWUKIAorZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubGF5b3V0X3BhY2th
Z2UgaW1wb3J0IHRlc3Rfb3V0cHV0CisKIGltcG9ydCBiYXNlCiAKIApAQCAtMjg5LDYgKzI5MSw3
IEBAIGNsYXNzIFRlc3REcml2ZXIoYmFzZS5Ecml2ZXIpOgogICAgICAgICByZXR1cm4gVHJ1ZQog
CiAgICAgZGVmIHJ1bl90ZXN0KHNlbGYsIHVyaSwgdGltZW91dG1zLCBpbWFnZV9oYXNoKToKKyAg
ICAgICAgc3RhcnRfdGltZSA9IHRpbWUudGltZSgpCiAgICAgICAgIHRlc3RfbmFtZSA9IHNlbGYu
X3BvcnQudXJpX3RvX3Rlc3RfbmFtZSh1cmkpCiAgICAgICAgIHRlc3QgPSBzZWxmLl9wb3J0Ll90
ZXN0c1t0ZXN0X25hbWVdCiAgICAgICAgIGlmIHRlc3Qua2V5Ym9hcmQ6CkBAIC0yOTcsMTMgKzMw
MCwxMCBAQCBjbGFzcyBUZXN0RHJpdmVyKGJhc2UuRHJpdmVyKToKICAgICAgICAgICAgIHJhaXNl
IFZhbHVlRXJyb3IoJ2V4Y2VwdGlvbiBmcm9tICcgKyB0ZXN0X25hbWUpCiAgICAgICAgIGlmIHRl
c3QuaGFuZzoKICAgICAgICAgICAgIHRpbWUuc2xlZXAoKGZsb2F0KHRpbWVvdXRtcykgKiA0KSAv
IDEwMDAuMCkKLQotICAgICAgICBpZiBzZWxmLl9wb3J0LmdldF9vcHRpb24oJ3BpeGVsX3Rlc3Rz
JykgYW5kIHRlc3QuYWN0dWFsX2ltYWdlOgotICAgICAgICAgICAgd2l0aCBvcGVuKHNlbGYuX2lt
YWdlX3BhdGgsICd3JykgYXMgZmlsZToKLSAgICAgICAgICAgICAgICBmaWxlLndyaXRlKHRlc3Qu
YWN0dWFsX2ltYWdlKQotCi0gICAgICAgIHJldHVybiAodGVzdC5jcmFzaCwgdGVzdC50aW1lb3V0
LCB0ZXN0LmFjdHVhbF9jaGVja3N1bSwKLSAgICAgICAgICAgICAgICB0ZXN0LmFjdHVhbF90ZXh0
LCB0ZXN0LmVycm9yKQorICAgICAgICByZXR1cm4gdGVzdF9vdXRwdXQuVGVzdE91dHB1dCh0ZXN0
LmFjdHVhbF90ZXh0LCB0ZXN0LmFjdHVhbF9pbWFnZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdGVzdC5hY3R1YWxfY2hlY2tzdW0sIHRlc3QuY3Jhc2gsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWUudGltZSgpIC0gc3RhcnRfdGltZSwg
dGVzdC50aW1lb3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0
LmVycm9yKQogCiAgICAgZGVmIHN0YXJ0KHNlbGYpOgogICAgICAgICBwYXNzCmRpZmYgLS1naXQg
YS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5w
eSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0
LnB5CmluZGV4IDUxZjU3YzQwZTY2NjE2N2IxOGNkZjUyZDY0MjAxODc1OTY1MjQ3ZTguLjA2Nzk3
YzZkMzhlMjU0NTcwZDNmZmEwZWI2MWEyYjNjNjk0MzYwODcgMTAwNjQ0Ci0tLSBhL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5CisrKyBiL1dl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5CkBA
IC00OSw2ICs0OSw3IEBAIGltcG9ydCBzaHV0aWwKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3Rl
bS5leGVjdXRpdmUgaW1wb3J0IEV4ZWN1dGl2ZQogCiBpbXBvcnQgd2Via2l0cHkuY29tbW9uLnN5
c3RlbS5vc3BhdGggYXMgb3NwYXRoCitpbXBvcnQgd2Via2l0cHkubGF5b3V0X3Rlc3RzLmxheW91
dF9wYWNrYWdlLnRlc3Rfb3V0cHV0IGFzIHRlc3Rfb3V0cHV0CiBpbXBvcnQgd2Via2l0cHkubGF5
b3V0X3Rlc3RzLnBvcnQuYmFzZSBhcyBiYXNlCiBpbXBvcnQgd2Via2l0cHkubGF5b3V0X3Rlc3Rz
LnBvcnQuc2VydmVyX3Byb2Nlc3MgYXMgc2VydmVyX3Byb2Nlc3MKIApAQCAtNDQyLDYgKzQ0Myw3
IEBAIGNsYXNzIFdlYktpdERyaXZlcihiYXNlLkRyaXZlcik6CiAgICAgICAgICAgICBjb21tYW5k
ICs9ICInIiArIGltYWdlX2hhc2gKICAgICAgICAgY29tbWFuZCArPSAiXG4iCiAKKyAgICAgICAg
c3RhcnRfdGltZSA9IHRpbWUudGltZSgpCiAgICAgICAgIHNlbGYuX3NlcnZlcl9wcm9jZXNzLndy
aXRlKGNvbW1hbmQpCiAKICAgICAgICAgaGF2ZV9zZWVuX2NvbnRlbnRfdHlwZSA9IEZhbHNlCkBA
IC00ODYsMTAgKzQ4OCw2IEBAIGNsYXNzIFdlYktpdERyaXZlcihiYXNlLkRyaXZlcik6CiAgICAg
ICAgICAgICB0aW1lb3V0ID0gZGVhZGxpbmUgLSB0aW1lLnRpbWUoKQogICAgICAgICAgICAgbGlu
ZSA9IHNlbGYuX3NlcnZlcl9wcm9jZXNzLnJlYWRfbGluZSh0aW1lb3V0KQogCi0gICAgICAgIGlm
IHNlbGYuX2ltYWdlX3BhdGggYW5kIGxlbihzZWxmLl9pbWFnZV9wYXRoKToKLSAgICAgICAgICAg
IHdpdGggb3BlbihzZWxmLl9pbWFnZV9wYXRoLCAid2IiKSBhcyBpbWFnZV9maWxlOgotICAgICAg
ICAgICAgICAgIGltYWdlX2ZpbGUud3JpdGUoaW1hZ2UpCi0KICAgICAgICAgZXJyb3JfbGluZXMg
PSBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5lcnJvci5zcGxpdGxpbmVzKCkKICAgICAgICAgIyBGSVhN
RTogVGhpcyBpcyBhIGhhY2suICBJdCBpcyB1bmNsZWFyIHdoeSBzb21ldGltZXMKICAgICAgICAg
IyB3ZSBkbyBub3QgZ2V0IGFueSBlcnJvciBsaW5lcyBmcm9tIHRoZSBzZXJ2ZXJfcHJvY2VzcwpA
QCAtNTAwLDExICs0OTgsMTEgQEAgY2xhc3MgV2ViS2l0RHJpdmVyKGJhc2UuRHJpdmVyKToKICAg
ICAgICAgIyBGSVhNRTogVGhpcyBzZWVtcyBsaWtlIHRoZSB3cm9uZyBzZWN0aW9uIG9mIGNvZGUg
dG8gYmUgZG9pbmcKICAgICAgICAgIyB0aGlzIHJlc2V0IGluLgogICAgICAgICBzZWxmLl9zZXJ2
ZXJfcHJvY2Vzcy5lcnJvciA9ICIiCi0gICAgICAgIHJldHVybiAoc2VsZi5fc2VydmVyX3Byb2Nl
c3MuY3Jhc2hlZCwKLSAgICAgICAgICAgICAgICBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy50aW1lZF9v
dXQsCi0gICAgICAgICAgICAgICAgYWN0dWFsX2ltYWdlX2hhc2gsCi0gICAgICAgICAgICAgICAg
b3V0cHV0LAotICAgICAgICAgICAgICAgIGVycm9yKQorICAgICAgICByZXR1cm4gdGVzdF9vdXRw
dXQuVGVzdE91dHB1dChvdXRwdXQsIGltYWdlLCBhY3R1YWxfaW1hZ2VfaGFzaCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fc2VydmVyX3Byb2Nlc3MuY3Jhc2hl
ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZS50aW1lKCkgLSBz
dGFydF90aW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9z
ZXJ2ZXJfcHJvY2Vzcy50aW1lZF9vdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGVycm9yKQogCiAgICAgZGVmIHN0b3Aoc2VsZik6CiAgICAgICAgIGlmIHNlbGYuX3Nl
cnZlcl9wcm9jZXNzOgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkKaW5kZXggNjgwYmE1ZTEzYTMw
N2RiOTA2MDViYTFhMjA1ZDFjNjRkYTFhY2Y5ZS4uYjM3ZmExZWJmMmJiMzIxMWQ1MjI5NGI1ZDg4
MTVlZmI5NTRlMzZlZiAxMDA3NTUKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5CkBAIC0xMDEsOSArMTAx
LDYgQEAgY2xhc3MgVGVzdElucHV0OgogICAgICAgICAgICIiIgogICAgICAgICAjIEZJWE1FOiBm
aWxlbmFtZSBzaG91bGQgcmVhbGx5IGJlIHRlc3RfbmFtZSBhcyBhIHJlbGF0aXZlIHBhdGguCiAg
ICAgICAgIHNlbGYuZmlsZW5hbWUgPSBmaWxlbmFtZQotICAgICAgICAjIFRoZSBpbWFnZSBjaGVj
a3N1bSBpcyBwYXNzZWQgdG8gdGhlIGRyaXZlciBzbyB0aGF0IHRoZSBkcml2ZXIgY2FuIG9wdGlv
bmFsbHkgbm90IGhhdmUKLSAgICAgICAgIyB0byBvdXRwdXQgdGhlIGltYWdlIGlmIHRoZSBjaGVj
a3N1bXMgbWF0Y2guCi0gICAgICAgIHNlbGYuaW1hZ2VfY2hlY2tzdW0gPSBOb25lCiAgICAgICAg
IHNlbGYudGltZW91dCA9IHRpbWVvdXQKIAogICAgICAgICAjIEZJWE1FOiBNYXliZSB0aGUgVVJJ
IHNob3VsZG4ndCBiZSBwYXJ0IG9mIHRoZSBUZXN0SW5wdXQgYXQgYWxsPwpkaWZmIC0tZ2l0IGEv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdGVzdF90eXBlcy9pbWFn
ZV9kaWZmLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdGVz
dF90eXBlcy9pbWFnZV9kaWZmLnB5CmluZGV4IDBiMDU4MDIwYzA4ZjRmNTFjMTE2MjA0ZGM1NGNi
ZjVkOWMzZTdjNmYuLjQxZmU5YmRiN2Y3ZGNhMzg5NWZlNDJjNjFhYzFlOGNmMTExNzY0OWEgMTAw
NjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Rlc3Rf
dHlwZXMvaW1hZ2VfZGlmZi5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy90ZXN0X3R5cGVzL2ltYWdlX2RpZmYucHkKQEAgLTU0LDExNiArNTQsOTMgQEAg
X2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJ3ZWJraXRweS5sYXlvdXRfdGVzdHMudGVzdF90eXBl
cy5pbWFnZV9kaWZmIikKIAogY2xhc3MgSW1hZ2VEaWZmKHRlc3RfdHlwZV9iYXNlLlRlc3RUeXBl
QmFzZSk6CiAKLSAgICBkZWYgX2NvcHlfb3V0cHV0X3BuZyhzZWxmLCB0ZXN0X2ZpbGVuYW1lLCBz
b3VyY2VfaW1hZ2UsIGV4dGVuc2lvbik6Ci0gICAgICAgICIiIkNvcGllcyByZXN1bHQgZmlsZXMg
aW50byB0aGUgb3V0cHV0IGRpcmVjdG9yeSB3aXRoIGFwcHJvcHJpYXRlCi0gICAgICAgIG5hbWVz
LgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgdGVzdF9maWxlbmFtZTogdGhlIHRlc3QgZmls
ZW5hbWUKLSAgICAgICAgICBzb3VyY2VfZmlsZTogcGF0aCB0byB0aGUgaW1hZ2UgZmlsZSAoZWl0
aGVyIGFjdHVhbCBvciBleHBlY3RlZCkKLSAgICAgICAgICBleHRlbnNpb246IGV4dGVuc2lvbiB0
byBpbmRpY2F0ZSAtYWN0dWFsLnBuZyBvciAtZXhwZWN0ZWQucG5nCi0gICAgICAgICIiIgotICAg
ICAgICBzZWxmLl9tYWtlX291dHB1dF9kaXJlY3RvcnkodGVzdF9maWxlbmFtZSkKLSAgICAgICAg
ZGVzdF9pbWFnZSA9IHNlbGYub3V0cHV0X2ZpbGVuYW1lKHRlc3RfZmlsZW5hbWUsIGV4dGVuc2lv
bikKLQotICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhzb3VyY2VfaW1hZ2UpOgotICAgICAgICAg
ICAgc2h1dGlsLmNvcHlmaWxlKHNvdXJjZV9pbWFnZSwgZGVzdF9pbWFnZSkKLQotICAgIGRlZiBf
c2F2ZV9iYXNlbGluZV9maWxlcyhzZWxmLCBmaWxlbmFtZSwgcG5nX3BhdGgsIGNoZWNrc3VtLAor
ICAgIGRlZiBfc2F2ZV9iYXNlbGluZV9maWxlcyhzZWxmLCBmaWxlbmFtZSwgaW1hZ2UsIGltYWdl
X2hhc2gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlX25ld19iYXNlbGlu
ZSk6CiAgICAgICAgICIiIlNhdmVzIG5ldyBiYXNlbGluZXMgZm9yIHRoZSBQTkcgYW5kIGNoZWNr
c3VtLgogCiAgICAgICAgIEFyZ3M6CiAgICAgICAgICAgZmlsZW5hbWU6IHRlc3QgZmlsZW5hbWUK
LSAgICAgICAgICBwbmdfcGF0aDogcGF0aCB0byB0aGUgYWN0dWFsIFBORyByZXN1bHQgZmlsZQot
ICAgICAgICAgIGNoZWNrc3VtOiB2YWx1ZSBvZiB0aGUgYWN0dWFsIGNoZWNrc3VtIHJlc3VsdAor
ICAgICAgICAgIGltYWdlOiBhIGltYWdlIG91dHB1dAorICAgICAgICAgIGltYWdlX2hhc2g6IGEg
Y2hlY2tzdW0gb2YgdGhlIGltYWdlCiAgICAgICAgICAgZ2VuZXJhdGVfbmV3X2Jhc2VsaW5lOiB3
aGV0aGVyIHRvIGdlbmVyYXRlIGEgbmV3LCBwbGF0Zm9ybS1zcGVjaWZpYwogICAgICAgICAgICAg
YmFzZWxpbmUsIG9yIHVwZGF0ZSB0aGUgZXhpc3Rpbmcgb25lCiAgICAgICAgICIiIgotICAgICAg
ICB3aXRoIG9wZW4ocG5nX3BhdGgsICJyYiIpIGFzIHBuZ19maWxlOgotICAgICAgICAgICAgcG5n
X2RhdGEgPSBwbmdfZmlsZS5yZWFkKCkKLSAgICAgICAgc2VsZi5fc2F2ZV9iYXNlbGluZV9kYXRh
KGZpbGVuYW1lLCBwbmdfZGF0YSwgIi5wbmciLCBlbmNvZGluZz1Ob25lLAorICAgICAgICBzZWxm
Ll9zYXZlX2Jhc2VsaW5lX2RhdGEoZmlsZW5hbWUsIGltYWdlLCAiLnBuZyIsIGVuY29kaW5nPU5v
bmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZV9uZXdfYmFzZWxp
bmU9Z2VuZXJhdGVfbmV3X2Jhc2VsaW5lKQotICAgICAgICBzZWxmLl9zYXZlX2Jhc2VsaW5lX2Rh
dGEoZmlsZW5hbWUsIGNoZWNrc3VtLCAiLmNoZWNrc3VtIiwKKyAgICAgICAgc2VsZi5fc2F2ZV9i
YXNlbGluZV9kYXRhKGZpbGVuYW1lLCBpbWFnZV9oYXNoLCAiLmNoZWNrc3VtIiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nPSJhc2NpaSIsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZV9uZXdfYmFzZWxpbmU9Z2VuZXJhdGVfbmV3X2Jh
c2VsaW5lKQogCi0gICAgZGVmIF9jcmVhdGVfaW1hZ2VfZGlmZihzZWxmLCBwb3J0LCBmaWxlbmFt
ZSwgY29uZmlndXJhdGlvbik6CisgICAgZGVmIF9jb3B5X2ltYWdlKHNlbGYsIGZpbGVuYW1lLCBh
Y3R1YWxfaW1hZ2UsIGV4cGVjdGVkX2ltYWdlKToKKyAgICAgICAgc2VsZi53cml0ZV9vdXRwdXRf
ZmlsZXMoZmlsZW5hbWUsICcucG5nJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
b3V0cHV0PWFjdHVhbF9pbWFnZSwgZXhwZWN0ZWQ9ZXhwZWN0ZWRfaW1hZ2UsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nPU5vbmUsIHByaW50X3RleHRfZGlmZnM9RmFs
c2UpCisKKyAgICBkZWYgX2NvcHlfaW1hZ2VfaGFzaChzZWxmLCBmaWxlbmFtZSwgYWN0dWFsX2lt
YWdlX2hhc2gsIGV4cGVjdGVkX2ltYWdlX2hhc2gpOgorICAgICAgICBzZWxmLndyaXRlX291dHB1
dF9maWxlcyhmaWxlbmFtZSwgJy5jaGVja3N1bScsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGFjdHVhbF9pbWFnZV9oYXNoLCBleHBlY3RlZF9pbWFnZV9oYXNoLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZz0iYXNjaWkiLCBwcmludF90ZXh0X2RpZmZz
PUZhbHNlKQorCisgICAgZGVmIF9jcmVhdGVfZGlmZl9pbWFnZShzZWxmLCBwb3J0LCBmaWxlbmFt
ZSwgYWN0dWFsX2ltYWdlLCBleHBlY3RlZF9pbWFnZSk6CiAgICAgICAgICIiIkNyZWF0ZXMgdGhl
IHZpc3VhbCBkaWZmIG9mIHRoZSBleHBlY3RlZC9hY3R1YWwgUE5Hcy4KIAotICAgICAgICBBcmdz
OgotICAgICAgICAgIGZpbGVuYW1lOiB0aGUgbmFtZSBvZiB0aGUgdGVzdAotICAgICAgICAgIGNv
bmZpZ3VyYXRpb246IERlYnVnIG9yIFJlbGVhc2UKLSAgICAgICAgUmV0dXJucyBUcnVlIGlmIHRo
ZSBmaWxlcyBhcmUgZGlmZmVyZW50LCBGYWxzZSBpZiB0aGV5IG1hdGNoCisgICAgICAgIFJldHVy
bnMgVHJ1ZSBpZiB0aGUgaW1hZ2VzIGFyZSBkaWZmZXJlbnQuCiAgICAgICAgICIiIgogICAgICAg
ICBkaWZmX2ZpbGVuYW1lID0gc2VsZi5vdXRwdXRfZmlsZW5hbWUoZmlsZW5hbWUsCi0gICAgICAg
ICAgc2VsZi5GSUxFTkFNRV9TVUZGSVhfQ09NUEFSRSkKLSAgICAgICAgYWN0dWFsX2ZpbGVuYW1l
ID0gc2VsZi5vdXRwdXRfZmlsZW5hbWUoZmlsZW5hbWUsCi0gICAgICAgICAgc2VsZi5GSUxFTkFN
RV9TVUZGSVhfQUNUVUFMICsgJy5wbmcnKQotICAgICAgICBleHBlY3RlZF9maWxlbmFtZSA9IHNl
bGYub3V0cHV0X2ZpbGVuYW1lKGZpbGVuYW1lLAotICAgICAgICAgIHNlbGYuRklMRU5BTUVfU1VG
RklYX0VYUEVDVEVEICsgJy5wbmcnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2VsZi5GSUxFTkFNRV9TVUZGSVhfQ09NUEFSRSkKKyAgICAgICAgcmV0dXJu
IHBvcnQuZGlmZl9pbWFnZShhY3R1YWxfaW1hZ2UsIGV4cGVjdGVkX2ltYWdlLCBkaWZmX2ZpbGVu
YW1lKQogCi0gICAgICAgIGV4cGVjdGVkX2ltYWdlID0gcG9ydC5leHBlY3RlZF9pbWFnZShmaWxl
bmFtZSkKLSAgICAgICAgd2l0aCBjb2RlY3Mub3BlbihhY3R1YWxfZmlsZW5hbWUsICdyK2InLCBO
b25lKSBhcyBmaWxlOgotICAgICAgICAgICAgYWN0dWFsX2ltYWdlID0gZmlsZS5yZWFkKCkKLQot
ICAgICAgICByZXN1bHQgPSBwb3J0LmRpZmZfaW1hZ2UoZXhwZWN0ZWRfaW1hZ2UsIGFjdHVhbF9p
bWFnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZmZfZmlsZW5hbWUpCi0g
ICAgICAgIHJldHVybiByZXN1bHQKLQotICAgIGRlZiBjb21wYXJlX291dHB1dChzZWxmLCBwb3J0
LCBmaWxlbmFtZSwgb3V0cHV0LCB0ZXN0X2FyZ3MsIGNvbmZpZ3VyYXRpb24pOgorICAgIGRlZiBj
b21wYXJlX291dHB1dChzZWxmLCBwb3J0LCBmaWxlbmFtZSwgdGVzdF9hcmdzLCBhY3R1YWxfdGVz
dF9vdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX3Rlc3Rfb3V0cHV0KToK
ICAgICAgICAgIiIiSW1wbGVtZW50YXRpb24gb2YgQ29tcGFyZU91dHB1dCB0aGF0IGNoZWNrcyB0
aGUgb3V0cHV0IGltYWdlIGFuZAogICAgICAgICBjaGVja3N1bSBhZ2FpbnN0IHRoZSBleHBlY3Rl
ZCBmaWxlcyBmcm9tIHRoZSBMYXlvdXRUZXN0IGRpcmVjdG9yeS4KICAgICAgICAgIiIiCiAgICAg
ICAgIGZhaWx1cmVzID0gW10KIAogICAgICAgICAjIElmIHdlIGRpZG4ndCBwcm9kdWNlIGEgaGFz
aCBmaWxlLCB0aGlzIHRlc3QgbXVzdCBiZSB0ZXh0LW9ubHkuCi0gICAgICAgIGlmIHRlc3RfYXJn
cy5oYXNoIGlzIE5vbmU6CisgICAgICAgIGlmIGFjdHVhbF90ZXN0X291dHB1dC5pbWFnZV9oYXNo
IGlzIE5vbmU6CiAgICAgICAgICAgICByZXR1cm4gZmFpbHVyZXMKIAogICAgICAgICAjIElmIHdl
J3JlIGdlbmVyYXRpbmcgYSBuZXcgYmFzZWxpbmUsIHdlIHBhc3MuCiAgICAgICAgIGlmIHRlc3Rf
YXJncy5uZXdfYmFzZWxpbmUgb3IgdGVzdF9hcmdzLnJlc2V0X3Jlc3VsdHM6Ci0gICAgICAgICAg
ICBzZWxmLl9zYXZlX2Jhc2VsaW5lX2ZpbGVzKGZpbGVuYW1lLCB0ZXN0X2FyZ3MucG5nX3BhdGgs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfYXJncy5oYXNoLCB0
ZXN0X2FyZ3MubmV3X2Jhc2VsaW5lKQorICAgICAgICAgICAgc2VsZi5fc2F2ZV9iYXNlbGluZV9m
aWxlcyhmaWxlbmFtZSwgYWN0dWFsX3Rlc3Rfb3V0cHV0LmltYWdlX2hhc2gsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdHVhbF90ZXN0X291dHB1dC5pbWFnZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9hcmdzLm5ld19iYXNlbGlu
ZSkKICAgICAgICAgICAgIHJldHVybiBmYWlsdXJlcwogCi0gICAgICAgICMgQ29tcGFyZSBoYXNo
ZXMuCi0gICAgICAgIGV4cGVjdGVkX2hhc2ggPSBzZWxmLl9wb3J0LmV4cGVjdGVkX2NoZWNrc3Vt
KGZpbGVuYW1lKQotICAgICAgICBleHBlY3RlZF9wbmcgPSBzZWxmLl9wb3J0LmV4cGVjdGVkX2lt
YWdlKGZpbGVuYW1lKQotCi0gICAgICAgIGlmIG5vdCBleHBlY3RlZF9wbmc6CisgICAgICAgIGlm
IG5vdCBleHBlY3RlZF90ZXN0X291dHB1dC5pbWFnZToKICAgICAgICAgICAgICMgUmVwb3J0IGEg
bWlzc2luZyBleHBlY3RlZCBQTkcgZmlsZS4KLSAgICAgICAgICAgIHNlbGYud3JpdGVfb3V0cHV0
X2ZpbGVzKGZpbGVuYW1lLCAnLmNoZWNrc3VtJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRlc3RfYXJncy5oYXNoLCBleHBlY3RlZF9oYXNoLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc9ImFzY2lpIiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHByaW50X3RleHRfZGlmZnM9RmFsc2UpCi0gICAgICAgICAgICBz
ZWxmLl9jb3B5X291dHB1dF9wbmcoZmlsZW5hbWUsIHRlc3RfYXJncy5wbmdfcGF0aCwgJy1hY3R1
YWwucG5nJykKKyAgICAgICAgICAgIHNlbGYuX2NvcHlfaW1hZ2UoZmlsZW5hbWUsIGFjdHVhbF90
ZXN0X291dHB1dC5pbWFnZSwgZXhwZWN0ZWRfaW1hZ2U9Tm9uZSkKKyAgICAgICAgICAgIHNlbGYu
X2NvcHlfaW1hZ2VfaGFzaChmaWxlbmFtZSwgYWN0dWFsX3Rlc3Rfb3V0cHV0LmltYWdlX2hhc2gs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfdGVzdF9vdXRwdXQu
aW1hZ2VfaGFzaCkKICAgICAgICAgICAgIGZhaWx1cmVzLmFwcGVuZCh0ZXN0X2ZhaWx1cmVzLkZh
aWx1cmVNaXNzaW5nSW1hZ2UoKSkKICAgICAgICAgICAgIHJldHVybiBmYWlsdXJlcwotICAgICAg
ICBlbGlmIHRlc3RfYXJncy5oYXNoID09IGV4cGVjdGVkX2hhc2g6CisgICAgICAgIGlmIG5vdCBl
eHBlY3RlZF90ZXN0X291dHB1dC5pbWFnZV9oYXNoOgorICAgICAgICAgICAgIyBSZXBvcnQgYSBt
aXNzaW5nIGV4cGVjdGVkIGNoZWNrc3VtIGZpbGUuCisgICAgICAgICAgICBzZWxmLl9jb3B5X2lt
YWdlKGZpbGVuYW1lLCBhY3R1YWxfdGVzdF9vdXRwdXQuaW1hZ2UsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGV4cGVjdGVkX3Rlc3Rfb3V0cHV0LmltYWdlKQorICAgICAgICAgICAgc2Vs
Zi5fY29weV9pbWFnZV9oYXNoKGZpbGVuYW1lLCBhY3R1YWxfdGVzdF9vdXRwdXQuaW1hZ2VfaGFz
aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9pbWFnZV9oYXNo
PU5vbmUpCisgICAgICAgICAgICBmYWlsdXJlcy5hcHBlbmQodGVzdF9mYWlsdXJlcy5GYWlsdXJl
TWlzc2luZ0ltYWdlSGFzaCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhaWx1cmVzCisKKyAgICAg
ICAgaWYgYWN0dWFsX3Rlc3Rfb3V0cHV0LmltYWdlX2hhc2ggPT0gZXhwZWN0ZWRfdGVzdF9vdXRw
dXQuaW1hZ2VfaGFzaDoKICAgICAgICAgICAgICMgSGFzaCBtYXRjaGVkIChubyBkaWZmIG5lZWRl
ZCwgb2theSB0byByZXR1cm4pLgogICAgICAgICAgICAgcmV0dXJuIGZhaWx1cmVzCiAKLSAgICAg
ICAgc2VsZi53cml0ZV9vdXRwdXRfZmlsZXMoZmlsZW5hbWUsICcuY2hlY2tzdW0nLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2FyZ3MuaGFzaCwgZXhwZWN0ZWRfaGFzaCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc9ImFzY2lpIiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRfdGV4dF9kaWZmcz1GYWxzZSkKLQotICAg
ICAgICAjIEZJWE1FOiBjb21iaW5lIG5leHQgdHdvIGxpbmVzCi0gICAgICAgIHNlbGYuX2NvcHlf
b3V0cHV0X3BuZyhmaWxlbmFtZSwgdGVzdF9hcmdzLnBuZ19wYXRoLCAnLWFjdHVhbC5wbmcnKQot
ICAgICAgICBzZWxmLndyaXRlX291dHB1dF9maWxlcyhmaWxlbmFtZSwgJy5wbmcnLCBvdXRwdXQ9
Tm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQ9ZXhwZWN0ZWRf
cG5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZz1Ob25lLCBwcmlu
dF90ZXh0X2RpZmZzPUZhbHNlKQorICAgICAgICBzZWxmLl9jb3B5X2ltYWdlKGZpbGVuYW1lLCBh
Y3R1YWxfdGVzdF9vdXRwdXQuaW1hZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0
ZWRfdGVzdF9vdXRwdXQuaW1hZ2UpCisgICAgICAgIHNlbGYuX2NvcHlfaW1hZ2VfaGFzaChmaWxl
bmFtZSwgYWN0dWFsX3Rlc3Rfb3V0cHV0LmltYWdlX2hhc2gsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBleHBlY3RlZF90ZXN0X291dHB1dC5pbWFnZV9oYXNoKQogCiAgICAgICAgICMg
RXZlbiB0aG91Z2ggd2Ugb25seSB1c2UgdGhlIHJlc3VsdCBpbiBvbmUgY29kZXBhdGggYmVsb3cg
YnV0IHdlCiAgICAgICAgICMgc3RpbGwgbmVlZCB0byBjYWxsIENyZWF0ZUltYWdlRGlmZiBmb3Ig
b3RoZXIgY29kZXBhdGhzLgotICAgICAgICBpbWFnZXNfYXJlX2RpZmZlcmVudCA9IHNlbGYuX2Ny
ZWF0ZV9pbWFnZV9kaWZmKHBvcnQsIGZpbGVuYW1lLCBjb25maWd1cmF0aW9uKQotICAgICAgICBp
ZiBub3QgZXhwZWN0ZWRfaGFzaDoKLSAgICAgICAgICAgIGZhaWx1cmVzLmFwcGVuZCh0ZXN0X2Zh
aWx1cmVzLkZhaWx1cmVNaXNzaW5nSW1hZ2VIYXNoKCkpCi0gICAgICAgIGVsaWYgdGVzdF9hcmdz
Lmhhc2ggIT0gZXhwZWN0ZWRfaGFzaDoKLSAgICAgICAgICAgIGlmIGltYWdlc19hcmVfZGlmZmVy
ZW50OgotICAgICAgICAgICAgICAgIGZhaWx1cmVzLmFwcGVuZCh0ZXN0X2ZhaWx1cmVzLkZhaWx1
cmVJbWFnZUhhc2hNaXNtYXRjaCgpKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAg
ICBmYWlsdXJlcy5hcHBlbmQodGVzdF9mYWlsdXJlcy5GYWlsdXJlSW1hZ2VIYXNoSW5jb3JyZWN0
KCkpCisgICAgICAgIGltYWdlc19hcmVfZGlmZmVyZW50ID0gc2VsZi5fY3JlYXRlX2RpZmZfaW1h
Z2UocG9ydCwgZmlsZW5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYWN0dWFsX3Rlc3Rfb3V0cHV0LmltYWdlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX3Rlc3Rf
b3V0cHV0LmltYWdlKQorICAgICAgICBpZiBub3QgaW1hZ2VzX2FyZV9kaWZmZXJlbnQ6CisgICAg
ICAgICAgICBmYWlsdXJlcy5hcHBlbmQodGVzdF9mYWlsdXJlcy5GYWlsdXJlSW1hZ2VIYXNoSW5j
b3JyZWN0KCkpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBmYWlsdXJlcy5hcHBlbmQodGVz
dF9mYWlsdXJlcy5GYWlsdXJlSW1hZ2VIYXNoTWlzbWF0Y2goKSkKIAogICAgICAgICByZXR1cm4g
ZmFpbHVyZXMKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3Rlc3RfdHlwZXMvdGVzdF90eXBlX2Jhc2UucHkgYi9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy90ZXN0X3R5cGVzL3Rlc3RfdHlwZV9iYXNlLnB5CmluZGV4
IGRjYzY0YTM1YjMzOWRmOTg4MGFhYzA1MzhmN2U4NTU5NzI1ODBiMTMuLjRiOTZiM2FiZmUxYjU5
NTEyMjgxMTUwZmQ2ZmVlYTA2MDM1NDRhOTMgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Rlc3RfdHlwZXMvdGVzdF90eXBlX2Jhc2UucHkKKysr
IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdGVzdF90eXBlcy90
ZXN0X3R5cGVfYmFzZS5weQpAQCAtMTQwLDE4ICsxNDAsMjIgQEAgY2xhc3MgVGVzdFR5cGVCYXNl
KG9iamVjdCk6CiAgICAgICAgICAgICBzZWxmLl9wb3J0LnJlbGF0aXZlX3Rlc3RfZmlsZW5hbWUo
ZmlsZW5hbWUpKQogICAgICAgICByZXR1cm4gb3MucGF0aC5zcGxpdGV4dChvdXRwdXRfZmlsZW5h
bWUpWzBdICsgbW9kaWZpZXIKIAotICAgIGRlZiBjb21wYXJlX291dHB1dChzZWxmLCBwb3J0LCBm
aWxlbmFtZSwgb3V0cHV0LCB0ZXN0X2FyZ3MsIGNvbmZpZ3VyYXRpb24pOgorICAgIGRlZiBjb21w
YXJlX291dHB1dChzZWxmLCBwb3J0LCBmaWxlbmFtZSwgdGVzdF9hcmdzLCBhY3R1YWxfdGVzdF9v
dXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF90ZXN0X291dHB1dCk6CiAg
ICAgICAgICIiIk1ldGhvZCB0aGF0IGNvbXBhcmVzIHRoZSBvdXRwdXQgZnJvbSB0aGUgdGVzdCB3
aXRoIHRoZQogICAgICAgICBleHBlY3RlZCB2YWx1ZS4KIAogICAgICAgICBUaGlzIGlzIGFuIGFi
c3RyYWN0IG1ldGhvZCB0byBiZSBpbXBsZW1lbnRlZCBieSBhbGwgc3ViIGNsYXNzZXMuCiAKICAg
ICAgICAgQXJnczoKKyAgICAgICAgICBwb3J0OiBvYmplY3QgaW1wbGVtZW50aW5nIHBvcnQtc3Bl
Y2lmaWMgaW5mb3JtYXRpb24gYW5kIG1ldGhvZHMKICAgICAgICAgICBmaWxlbmFtZTogYWJzb2x1
dGUgZmlsZW5hbWUgdG8gdGVzdCBmaWxlCi0gICAgICAgICAgb3V0cHV0OiBhIHN0cmluZyBjb250
YWluaW5nIHRoZSBvdXRwdXQgb2YgdGhlIHRlc3QKICAgICAgICAgICB0ZXN0X2FyZ3M6IGEgVGVz
dEFyZ3VtZW50cyBvYmplY3QgaG9sZGluZyBvcHRpb25hbCBhZGRpdGlvbmFsCiAgICAgICAgICAg
ICAgIGFyZ3VtZW50cwotICAgICAgICAgIGNvbmZpZ3VyYXRpb246IERlYnVnIG9yIFJlbGVhc2UK
KyAgICAgICAgICBhY3R1YWxfdGVzdF9vdXRwdXQ6IGEgVGVzdE91dHB1dCBvYmplY3Qgd2hpY2gg
cmVwcmVzZW50cyBhY3R1YWwgdGVzdAorICAgICAgICAgICAgICBvdXRwdXQKKyAgICAgICAgICBl
eHBlY3RlZF90ZXN0X291dHB1dDogYSBUZXN0T3V0cHV0IG9iamVjdCB3aGljaCByZXByZXNlbnRz
IGEgZXhwZWN0ZWQKKyAgICAgICAgICAgICAgdGVzdCBvdXRwdXQKIAogICAgICAgICBSZXR1cm46
CiAgICAgICAgICAgYSBsaXN0IG9mIFRlc3RGYWlsdXJlIG9iamVjdHMsIGVtcHR5IGlmIHRoZSB0
ZXN0IHBhc3NlcwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvdGVzdF90eXBlcy90ZXh0X2RpZmYucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy90ZXN0X3R5cGVzL3RleHRfZGlmZi5weQppbmRleCA0YzMyZjBk
MDIzNDczYzYzYjhlNDc0Zjc3MDkzYTBmZGZhMGFhMzM3Li42NmU0MmJhMTRjYTgyNmY0NTQxMWM1
MTk1NDI4NTMyYjBmYTViZTExIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy90ZXN0X3R5cGVzL3RleHRfZGlmZi5weQorKysgYi9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy90ZXN0X3R5cGVzL3RleHRfZGlmZi5weQpA
QCAtNTUsMTMgKzU1LDggQEAgY2xhc3MgVGVzdFRleHREaWZmKHRlc3RfdHlwZV9iYXNlLlRlc3RU
eXBlQmFzZSk6CiAgICAgICAgICAgICAgIlxyXG4iLCAiXG4iKQogICAgICAgICByZXR1cm4gbm9y
bSArICJcbiIKIAotICAgIGRlZiBfZ2V0X25vcm1hbGl6ZWRfZXhwZWN0ZWRfdGV4dChzZWxmLCBm
aWxlbmFtZSk6Ci0gICAgICAgICIiIkdpdmVuIHRoZSBmaWxlbmFtZSBvZiB0aGUgdGVzdCwgcmVh
ZCB0aGUgZXhwZWN0ZWQgb3V0cHV0IGZyb20gYSBmaWxlCi0gICAgICAgIGFuZCBub3JtYWxpemUg
dGhlIHRleHQuICBSZXR1cm5zIGEgc3RyaW5nIHdpdGggdGhlIGV4cGVjdGVkIHRleHQsIG9yICcn
Ci0gICAgICAgIGlmIHRoZSBleHBlY3RlZCBvdXRwdXQgZmlsZSB3YXMgbm90IGZvdW5kLiIiIgot
ICAgICAgICByZXR1cm4gc2VsZi5fcG9ydC5leHBlY3RlZF90ZXh0KGZpbGVuYW1lKQotCi0gICAg
ZGVmIGNvbXBhcmVfb3V0cHV0KHNlbGYsIHBvcnQsIGZpbGVuYW1lLCBvdXRwdXQsIHRlc3RfYXJn
cywgY29uZmlndXJhdGlvbik6CisgICAgZGVmIGNvbXBhcmVfb3V0cHV0KHNlbGYsIHBvcnQsIGZp
bGVuYW1lLCB0ZXN0X2FyZ3MsIGFjdHVhbF90ZXN0X291dHB1dCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGV4cGVjdGVkX3Rlc3Rfb3V0cHV0KToKICAgICAgICAgIiIiSW1wbGVtZW50YXRpb24g
b2YgQ29tcGFyZU91dHB1dCB0aGF0IGNoZWNrcyB0aGUgb3V0cHV0IHRleHQgYWdhaW5zdAogICAg
ICAgICB0aGUgZXhwZWN0ZWQgdGV4dCBmcm9tIHRoZSBMYXlvdXRUZXN0IGRpcmVjdG9yeS4iIiIK
ICAgICAgICAgZmFpbHVyZXMgPSBbXQpAQCAtNzYsMTcgKzcxLDE4IEBAIGNsYXNzIFRlc3RUZXh0
RGlmZih0ZXN0X3R5cGVfYmFzZS5UZXN0VHlwZUJhc2UpOgogICAgICAgICAgICAgcmV0dXJuIGZh
aWx1cmVzCiAKICAgICAgICAgIyBOb3JtYWxpemUgdGV4dCB0byBkaWZmCi0gICAgICAgIG91dHB1
dCA9IHNlbGYuX2dldF9ub3JtYWxpemVkX291dHB1dF90ZXh0KG91dHB1dCkKLSAgICAgICAgZXhw
ZWN0ZWQgPSBzZWxmLl9nZXRfbm9ybWFsaXplZF9leHBlY3RlZF90ZXh0KGZpbGVuYW1lKQorICAg
ICAgICBhY3R1YWxfdGV4dCA9IHNlbGYuX2dldF9ub3JtYWxpemVkX291dHB1dF90ZXh0KGFjdHVh
bF90ZXN0X291dHB1dC50ZXh0KQorICAgICAgICAjIEFzc3VtaW5nIGV4cGVjdGVkX3RleHQgaXMg
YWxyZWFkeSBub3JtYWxpemVkLgorICAgICAgICBleHBlY3RlZF90ZXh0ID0gZXhwZWN0ZWRfdGVz
dF9vdXRwdXQudGV4dAogCiAgICAgICAgICMgV3JpdGUgb3V0cHV0IGZpbGVzIGZvciBuZXcgdGVz
dHMsIHRvby4KLSAgICAgICAgaWYgcG9ydC5jb21wYXJlX3RleHQob3V0cHV0LCBleHBlY3RlZCk6
CisgICAgICAgIGlmIHBvcnQuY29tcGFyZV90ZXh0KGFjdHVhbF90ZXh0LCBleHBlY3RlZF90ZXh0
KToKICAgICAgICAgICAgICMgVGV4dCBkb2Vzbid0IG1hdGNoLCB3cml0ZSBvdXRwdXQgZmlsZXMu
Ci0gICAgICAgICAgICBzZWxmLndyaXRlX291dHB1dF9maWxlcyhmaWxlbmFtZSwgIi50eHQiLCBv
dXRwdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZCwgZW5j
b2Rpbmc9Tm9uZSwKKyAgICAgICAgICAgIHNlbGYud3JpdGVfb3V0cHV0X2ZpbGVzKGZpbGVuYW1l
LCAiLnR4dCIsIGFjdHVhbF90ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZXhwZWN0ZWRfdGV4dCwgZW5jb2Rpbmc9Tm9uZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHByaW50X3RleHRfZGlmZnM9VHJ1ZSkKIAotICAgICAgICAgICAgaWYgZXhw
ZWN0ZWQgPT0gJyc6CisgICAgICAgICAgICBpZiBleHBlY3RlZF90ZXh0ID09ICcnOgogICAgICAg
ICAgICAgICAgIGZhaWx1cmVzLmFwcGVuZCh0ZXN0X2ZhaWx1cmVzLkZhaWx1cmVNaXNzaW5nUmVz
dWx0KCkpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGZhaWx1cmVzLmFwcGVu
ZCh0ZXN0X2ZhaWx1cmVzLkZhaWx1cmVUZXh0TWlzbWF0Y2goKSkK
</data>

          </attachment>
      

    </bug>

</bugzilla>