<?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>83329</bug_id>
          
          <creation_ts>2012-04-05 16:49:42 -0700</creation_ts>
          <short_desc>Enable webkit_unit_tests for commit queue and EWS while tracking failures</short_desc>
          <delta_ts>2012-04-09 10:24:24 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="James Robinson">jamesr</reporter>
          <assigned_to name="James Robinson">jamesr</assigned_to>
          <cc>abarth</cc>
    
    <cc>dpranke</cc>
    
    <cc>enne</cc>
    
    <cc>eric</cc>
    
    <cc>ojan</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>597028</commentid>
    <comment_count>0</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-04-05 16:49:42 -0700</bug_when>
    <thetext>Enable webkit_unit_tests for commit queue and EWS while tracking failures</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597030</commentid>
    <comment_count>1</comment_count>
      <attachid>135937</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-04-05 16:51:21 -0700</bug_when>
    <thetext>Created attachment 135937
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597031</commentid>
    <comment_count>2</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-04-05 16:53:11 -0700</bug_when>
    <thetext>This is a bit hacky - the point at which I gave up and just hacked it in was putting the failures in LayoutTestResults directly instead of creating another object to represent the union of different test failure types. I think it&apos;s still a valid incremental step.  This appears to do the right thing based on running the unit tests and webkit-patch build-and-test, but I&apos;m not sure how to test what it really does in EWS or the commit queue.

If this is too big, I can attempt to post the intermediate patches on my github (if someone can help me figure it out).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597191</commentid>
    <comment_count>3</comment_count>
      <attachid>135937</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-04-05 21:18:02 -0700</bug_when>
    <thetext>Comment on attachment 135937
Patch

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

This looks fine.  I think we&apos;re missing a few error handling cases for ports that don&apos;t have unit tests and if the unit test file is broken / corrupt / etc.  There&apos;s also some amount of renaming that we should do to remove &quot;layout&quot; from a bunch of names, but we can deal with that in a later patch.

Thanks for taking this patch this far.  I can polish up the details tomorrow if you like.

&gt; Tools/Scripts/webkitpy/common/net/unittestresults.py:29
&gt; +import xml.dom.minidom

This comes with Python by default?

&gt; Tools/Scripts/webkitpy/common/net/unittestresults.py:31
&gt; +from webkitpy.common.system.deprecated_logging import log

Yay deprecated_logging :&gt;)

&gt; Tools/Scripts/webkitpy/tool/bot/layouttestresultsreader.py:56
&gt; +        results_path = self._tool.port().unit_tests_results_path()

Should we null check results_path (i.e., for ports that don&apos;t have unit tests)?

&gt; Tools/Scripts/webkitpy/tool/bot/layouttestresultsreader.py:71
&gt; +        if layout_test_results:

what if unit_test_results is None ?  This function seems a bit confused.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597641</commentid>
    <comment_count>4</comment_count>
      <attachid>136065</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-04-06 14:15:14 -0700</bug_when>
    <thetext>Created attachment 136065
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597642</commentid>
    <comment_count>5</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-04-06 14:15:54 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 135937 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=135937&amp;action=review
&gt; 
&gt; This looks fine.  I think we&apos;re missing a few error handling cases for ports that don&apos;t have unit tests and if the unit test file is broken / corrupt / etc.  There&apos;s also some amount of renaming that we should do to remove &quot;layout&quot; from a bunch of names, but we can deal with that in a later patch.
&gt; 
&gt; Thanks for taking this patch this far.  I can polish up the details tomorrow if you like.
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/common/net/unittestresults.py:29
&gt; &gt; +import xml.dom.minidom
&gt; 
&gt; This comes with Python by default?
&gt; 

Various other scripts are using it and it&apos;s in http://docs.python.org/release/2.6.6/library/index.html, so I guess so?

&gt; &gt; Tools/Scripts/webkitpy/common/net/unittestresults.py:31
&gt; &gt; +from webkitpy.common.system.deprecated_logging import log
&gt; 
&gt; Yay deprecated_logging :&gt;)

If there&apos;s something better let me know what it is and I&apos;ll use it.

&gt; 
&gt; &gt; Tools/Scripts/webkitpy/tool/bot/layouttestresultsreader.py:56
&gt; &gt; +        results_path = self._tool.port().unit_tests_results_path()
&gt; 
&gt; Should we null check results_path (i.e., for ports that don&apos;t have unit tests)?
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/tool/bot/layouttestresultsreader.py:71
&gt; &gt; +        if layout_test_results:
&gt; 
&gt; what if unit_test_results is None ?  This function seems a bit confused.

Fixed this up in the most recent patch (with test coverage for path==None)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597651</commentid>
    <comment_count>6</comment_count>
      <attachid>136065</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-04-06 14:20:10 -0700</bug_when>
    <thetext>Comment on attachment 136065
Patch

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

LGTM, but you should have dr. barth give you the final approval since he&apos;s been workign with you on this.

&gt; Tools/Scripts/webkitpy/tool/bot/layouttestresultsreader.py:61
&gt; +        if not results_xml:
&gt; +            return None

Seems this check isn&apos;t needed.

&gt; Tools/Scripts/webkitpy/tool/steps/runtests.py:73
&gt; +                args.append(&quot;--gtest_output=xml:%s/webkit_unit_tests_output.xml&quot; % self._tool.port().results_directory)

Really sad it can&apos;t just output to stdout.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597652</commentid>
    <comment_count>7</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-04-06 14:24:47 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 136065 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=136065&amp;action=review
&gt; 
&gt; LGTM, but you should have dr. barth give you the final approval since he&apos;s been workign with you on this.
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/tool/bot/layouttestresultsreader.py:61
&gt; &gt; +        if not results_xml:
&gt; &gt; +            return None
&gt; 
&gt; Seems this check isn&apos;t needed.

I think it is if there&apos;s a valid path but we can&apos;t read the file for whatever reason (I/O error or whatnot)

&gt; 
&gt; &gt; Tools/Scripts/webkitpy/tool/steps/runtests.py:73
&gt; &gt; +                args.append(&quot;--gtest_output=xml:%s/webkit_unit_tests_output.xml&quot; % self._tool.port().results_directory)
&gt; 
&gt; Really sad it can&apos;t just output to stdout.

It outputs a human-readable log to stdout, which is useful because it includes log messages and printf()s and is a lot easier to scan than the XML.  I like having both available.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597660</commentid>
    <comment_count>8</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-04-06 14:34:00 -0700</bug_when>
    <thetext>&gt; If there&apos;s something better let me know what it is and I&apos;ll use it.

In principle, we should switch everything to regular python logging, but that&apos;s way outside the scope of this patch.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597664</commentid>
    <comment_count>9</comment_count>
      <attachid>136065</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-04-06 14:37:59 -0700</bug_when>
    <thetext>Comment on attachment 136065
Patch

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

Ok.  Let&apos;s give this a try.  :)

&gt; Tools/Scripts/webkitpy/tool/bot/layouttestresultsreader.py:73
&gt; +        unit_test_results = self._create_unit_test_results()
&gt; +        if layout_test_results and unit_test_results:

I would have just nested this inside the above if since there isn&apos;t much point in calling _create_unit_test_results if layout_test_results is falsy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597675</commentid>
    <comment_count>10</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-04-06 14:46:06 -0700</bug_when>
    <thetext>Committed r113499: &lt;http://trac.webkit.org/changeset/113499&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598160</commentid>
    <comment_count>11</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-04-09 00:45:58 -0700</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598161</commentid>
    <comment_count>12</comment_count>
      <attachid>136194</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-04-09 00:46:01 -0700</bug_when>
    <thetext>Created attachment 136194
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598167</commentid>
    <comment_count>13</comment_count>
      <attachid>136194</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-04-09 00:55:19 -0700</bug_when>
    <thetext>Comment on attachment 136194
Patch for landing

Clearing flags on attachment: 136194

Committed r113559: &lt;http://trac.webkit.org/changeset/113559&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598168</commentid>
    <comment_count>14</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-04-09 00:55:25 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598170</commentid>
    <comment_count>15</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-04-09 01:06:26 -0700</bug_when>
    <thetext>Hopefully the queues should be back on line now.  This sadly took out the Chromium EWS and commit-queues for most of the last 3 days. :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598172</commentid>
    <comment_count>16</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-04-09 01:10:45 -0700</bug_when>
    <thetext>Yup. :)  The CrLinux EWS says:
Last Pass: 2 days, 9 hours ago
:(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598395</commentid>
    <comment_count>17</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-04-09 10:24:24 -0700</bug_when>
    <thetext>And it&apos;s rejecting patches that break unit tests: https://bugs.webkit.org/show_bug.cgi?id=81227#c16

Yay!  Thanks for the help.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135937</attachid>
            <date>2012-04-05 16:51:21 -0700</date>
            <delta_ts>2012-04-06 14:15:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83329-20120405165120.patch</filename>
            <type>text/plain</type>
            <size>38543</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzMTQ0CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMGUwYzQyNjY1NzRlZjE3NzExMjdiNTgzOTYyMjljNDVm
NTJiNGNiMi4uMjBiMTUwYzQ3NGQxNzE0ZTRlMDdjYWU4ZmYwN2ViNWY3NGU1MDUyZSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2
IEBACisyMDEyLTA0LTA1ICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgRW5hYmxlIHdlYmtpdF91bml0X3Rlc3RzIGZvciBjb21taXQgcXVldWUgYW5kIEVX
UyB3aGlsZSB0cmFja2luZyBmYWlsdXJlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODMzMjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUaGlzIGFkZHMgYSBzdGVwIHRvIHBhcnNlIFhNTCBvdXRwdXQgZnJv
bSB3ZWJraXRfdW5pdF90ZXN0cyBhbmQgY29uc2lkZXIgcmVncmVzc2lvbnMgaW4gdGhlIFBhdGNo
QW5hbHlzaXNUYXNrIHNvCisgICAgICAgIHRoZSBjb21taXQgcXVldWUgYW5kIEVXUyBjYW4gcmVq
ZWN0IHBhdGNoZXMgdGhhdCBjYXVzZSByZWdyZXNzaW9ucy4KKworICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvY29tbW9uL2NvbmZpZy9wb3J0cy5weToKKyAgICAgICAgKENocm9taXVtUG9ydC5y
dW5fd2Via2l0X3VuaXRfdGVzdHNfY29tbWFuZCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9jb21tb24vY29uZmlnL3BvcnRzX21vY2sucHk6CisgICAgICAgIChNb2NrUG9ydC51bml0X3Rl
c3RzX3Jlc3VsdHNfcGF0aCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0
L2xheW91dHRlc3RyZXN1bHRzLnB5OgorICAgICAgICAoTGF5b3V0VGVzdFJlc3VsdHMuX19pbml0
X18pOgorICAgICAgICAoTGF5b3V0VGVzdFJlc3VsdHMuZmFpbGluZ190ZXN0cyk6CisgICAgICAg
IChMYXlvdXRUZXN0UmVzdWx0cyk6CisgICAgICAgIChMYXlvdXRUZXN0UmVzdWx0cy5hZGRfdW5p
dF90ZXN0X2ZhaWx1cmVzKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQv
dW5pdHRlc3RyZXN1bHRzLnB5OiBDb3BpZWQgZnJvbSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rv
b2wvc3RlcHMvcnVudGVzdHNfdW5pdHRlc3QucHkuCisgICAgICAgIChVbml0VGVzdFJlc3VsdHMp
OgorICAgICAgICAoVW5pdFRlc3RSZXN1bHRzLnJlc3VsdHNfZnJvbV9zdHJpbmcpOgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC91bml0dGVzdHJlc3VsdHNfdW5pdHRlc3Qu
cHk6IEFkZGVkLgorICAgICAgICAoVW5pdFRlc3RSZXN1bHRzVGVzdCk6CisgICAgICAgIChVbml0
VGVzdFJlc3VsdHNUZXN0LnRlc3Rfbm9zdHJpbmcpOgorICAgICAgICAoVW5pdFRlc3RSZXN1bHRz
VGVzdC50ZXN0X2VtcHR5c3RyaW5nKToKKyAgICAgICAgKFVuaXRUZXN0UmVzdWx0c1Rlc3QudGVz
dF9ub2ZhaWx1cmVzKToKKyAgICAgICAgKHRlc3Rfb25lZmFpbHVyZSk6CisgICAgICAgICh0ZXN0
X211bHRpcGxlX2ZhaWx1cmVzX3Blcl90ZXN0KToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L3Rvb2wvYm90L2NvbW1pdHF1ZXVldGFza191bml0dGVzdC5weToKKyAgICAgICAgKE1vY2tDb21t
aXRRdWV1ZS50ZXN0X3Jlc3VsdHMpOgorICAgICAgICAoTW9ja0NvbW1pdFF1ZXVlLmFyY2hpdmVf
bGFzdF90ZXN0X3Jlc3VsdHMpOgorICAgICAgICAoRmFpbGluZ1Rlc3RDb21taXRRdWV1ZS50ZXN0
X3Jlc3VsdHMpOgorICAgICAgICAodGVzdF9mbGFreV90ZXN0X2ZhaWx1cmUpOgorICAgICAgICAo
dGVzdF9mYWlsZWRfYXJjaGl2ZSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2Jv
dC9sYXlvdXR0ZXN0cmVzdWx0c3JlYWRlci5weToKKyAgICAgICAgKExheW91dFRlc3RSZXN1bHRz
UmVhZGVyLl9jcmVhdGVfdW5pdF90ZXN0X3Jlc3VsdHMpOgorICAgICAgICAoTGF5b3V0VGVzdFJl
c3VsdHNSZWFkZXIucmVzdWx0cyk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2Jv
dC9sYXlvdXR0ZXN0cmVzdWx0c3JlYWRlcl91bml0dGVzdC5weToKKyAgICAgICAgKExheW91dFRl
c3RSZXN1bHRzUmVhZGVyVGVzdC50ZXN0X21pc3NpbmdfbGF5b3V0X3Rlc3RfcmVzdWx0cyk6Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9wYXRjaGFuYWx5c2lzdGFzay5weToK
KyAgICAgICAgKFBhdGNoQW5hbHlzaXNUYXNrRGVsZWdhdGUudGVzdF9yZXN1bHRzKToKKyAgICAg
ICAgKFBhdGNoQW5hbHlzaXNUYXNrRGVsZWdhdGUuYXJjaGl2ZV9sYXN0X3Rlc3RfcmVzdWx0cyk6
CisgICAgICAgIChQYXRjaEFuYWx5c2lzVGFzay5fdGVzdCk6CisgICAgICAgIChQYXRjaEFuYWx5
c2lzVGFzay5fYnVpbGRfYW5kX3Rlc3Rfd2l0aG91dF9wYXRjaCk6CisgICAgICAgIChQYXRjaEFu
YWx5c2lzVGFzay5fdGVzdF9wYXRjaCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29s
L2NvbW1hbmRzL2Vhcmx5d2FybmluZ3N5c3RlbS5weToKKyAgICAgICAgKEFic3RyYWN0RWFybHlX
YXJuaW5nU3lzdGVtLnRlc3RfcmVzdWx0cyk6CisgICAgICAgIChBYnN0cmFjdEVhcmx5V2Fybmlu
Z1N5c3RlbS5hcmNoaXZlX2xhc3RfdGVzdF9yZXN1bHRzKToKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L3Rvb2wvY29tbWFuZHMvZWFybHl3YXJuaW5nc3lzdGVtX3VuaXR0ZXN0LnB5OgorICAg
ICAgICAoRWFybHlXYXJuaW5nU3l0ZW1UZXN0Ll90ZXN0X3Rlc3RpbmdfZXdzKToKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVldWVzLnB5OgorICAgICAgICAoQ29t
bWl0UXVldWUudGVzdF9yZXN1bHRzKToKKyAgICAgICAgKENvbW1pdFF1ZXVlLmFyY2hpdmVfbGFz
dF90ZXN0X3Jlc3VsdHMpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5k
cy9xdWV1ZXNfdW5pdHRlc3QucHk6CisgICAgICAgIChDb21taXRRdWV1ZVRlc3QudGVzdF9jb21t
aXRfcXVldWUpOgorICAgICAgICAodGVzdF9yb2xsb3V0KToKKyAgICAgICAgKHRlc3RfbWFudWFs
X3JlamVjdF9kdXJpbmdfcHJvY2Vzc2luZyk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90
b29sL3N0ZXBzL3J1bnRlc3RzLnB5OgorICAgICAgICAoUnVuVGVzdHMucnVuKToKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvcnVudGVzdHNfdW5pdHRlc3QucHk6CisgICAg
ICAgIChSdW5UZXN0c1Rlc3QudGVzdF93ZWJraXRfcnVuX3VuaXRfdGVzdHMpOgorCiAyMDEyLTA0
LTAzICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIEkgcmVhbGx5
IGhvcGUgdGhpcyBpcyB0aGUgbGFzdCBidWlsZCBmaXguIEFwcGFyZW50bHkgZXhlYyBkb2Vzbid0
IHF1aXRlIGFyZ3VtZW50cyB3aXRoCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9jb25maWcvcG9ydHMucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9j
b25maWcvcG9ydHMucHkKaW5kZXggNGIzZDkwYTFhN2MxNzI0MzgyZmE4MjllYTIzY2E1ZDk2YWMy
NGM2OS4uOGRkZmEyOGFhMDNmY2U4OGZlZDE3M2Q0ZGNlZTMwZGY2MDI4MjA4MyAxMDA2NDQKLS0t
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY29uZmlnL3BvcnRzLnB5CisrKyBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy9wb3J0cy5weQpAQCAtMTgzLDYgKzE4
Myw5IEBAIGNsYXNzIENocm9taXVtUG9ydChEZXByZWNhdGVkUG9ydCk6CiAgICAgICAgIGNvbW1h
bmQuYXBwZW5kKCItLXNraXAtZmFpbGluZy10ZXN0cyIpCiAgICAgICAgIHJldHVybiBjb21tYW5k
CiAKKyAgICBkZWYgcnVuX3dlYmtpdF91bml0X3Rlc3RzX2NvbW1hbmQoc2VsZik6CisgICAgICAg
IHJldHVybiBzZWxmLnNjcmlwdF9zaGVsbF9jb21tYW5kKCJydW4tY2hyb21pdW0td2Via2l0LXVu
aXQtdGVzdHMiKQorCiAgICAgZGVmIHJ1bl9qYXZhc2NyaXB0Y29yZV90ZXN0c19jb21tYW5kKHNl
bGYpOgogICAgICAgICByZXR1cm4gTm9uZQogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9jb25maWcvcG9ydHNfbW9jay5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvY29tbW9uL2NvbmZpZy9wb3J0c19tb2NrLnB5CmluZGV4IGQ2M2VmZDJjNmJlYzllYjQ0MDQ2
YTBiODNkZTNiMmUzNWI1OTY0YzUuLjFkMTQzMTExNTU5MWYwMThlYTRkZDA0MDBlMWExY2ZiNjNk
MTRlMDUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy9w
b3J0c19tb2NrLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy9w
b3J0c19tb2NrLnB5CkBAIC0zNiw2ICszNiw5IEBAIGNsYXNzIE1vY2tQb3J0KG9iamVjdCk6CiAg
ICAgZGVmIGxheW91dF90ZXN0c19yZXN1bHRzX3BhdGgoc2VsZik6CiAgICAgICAgIHJldHVybiAi
L21vY2stcmVzdWx0cy9mdWxsX3Jlc3VsdHMuanNvbiIKIAorICAgIGRlZiB1bml0X3Rlc3RzX3Jl
c3VsdHNfcGF0aChzZWxmKToKKyAgICAgICAgcmV0dXJuICIvbW9jay1yZXN1bHRzL3dlYmtpdF91
bml0X3Rlc3RzX291dHB1dC54bWwiCisKICAgICBkZWYgY2hlY2tfd2Via2l0X3N0eWxlX2NvbW1h
bmQoc2VsZik6CiAgICAgICAgIHJldHVybiBbIm1vY2stY2hlY2std2Via2l0LXN0eWxlIl0KIApk
aWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2xheW91dHRlc3Ry
ZXN1bHRzLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2xheW91dHRlc3Ry
ZXN1bHRzLnB5CmluZGV4IDA1ZjgyMTVkMGI4YTFjYjhjMTY1OWVhNDlkYjcxMjk5OGI3OTViY2Mu
LmJkNzIxMWNjYWQ3NzkxMzgzZTI4M2IyYTJiZjhlMjA2NDBhMDRkN2QgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9sYXlvdXR0ZXN0cmVzdWx0cy5weQorKysg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvbGF5b3V0dGVzdHJlc3VsdHMucHkK
QEAgLTE0NCw2ICsxNDQsNyBAQCBjbGFzcyBMYXlvdXRUZXN0UmVzdWx0cyhvYmplY3QpOgogICAg
IGRlZiBfX2luaXRfXyhzZWxmLCB0ZXN0X3Jlc3VsdHMpOgogICAgICAgICBzZWxmLl90ZXN0X3Jl
c3VsdHMgPSB0ZXN0X3Jlc3VsdHMKICAgICAgICAgc2VsZi5fZmFpbHVyZV9saW1pdF9jb3VudCA9
IE5vbmUKKyAgICAgICAgc2VsZi5fdW5pdF90ZXN0X2ZhaWx1cmVzID0gW10KIAogICAgICMgRklY
TUU6IHJ1bi13ZWJraXQtdGVzdHMgc2hvdWxkIHN0b3JlIHRoZSAtLWV4aXQtYWZ0ZXItTi1mYWls
dXJlcyB2YWx1ZQogICAgICMgKG9yIHNvbWUgaW5kaWNhdGlvbiBvZiBlYXJseSBleGl0KSBzb21l
d2hlcmUgaW4gdGhlIHJlc3VsdHMuaHRtbC9yZXN1bHRzLmpzb24KQEAgLTE3Miw0ICsxNzMsNyBA
QCBjbGFzcyBMYXlvdXRUZXN0UmVzdWx0cyhvYmplY3QpOgogICAgICAgICByZXR1cm4gc2VsZi5y
ZXN1bHRzX21hdGNoaW5nX2ZhaWx1cmVfdHlwZXMoZmFpbHVyZV90eXBlcykKIAogICAgIGRlZiBm
YWlsaW5nX3Rlc3RzKHNlbGYpOgotICAgICAgICByZXR1cm4gW3Jlc3VsdC50ZXN0X25hbWUgZm9y
IHJlc3VsdCBpbiBzZWxmLmZhaWxpbmdfdGVzdF9yZXN1bHRzKCldCisgICAgICAgIHJldHVybiBb
cmVzdWx0LnRlc3RfbmFtZSBmb3IgcmVzdWx0IGluIHNlbGYuZmFpbGluZ190ZXN0X3Jlc3VsdHMo
KV0gKyBzZWxmLl91bml0X3Rlc3RfZmFpbHVyZXMKKworICAgIGRlZiBhZGRfdW5pdF90ZXN0X2Zh
aWx1cmVzKHNlbGYsIHVuaXRfdGVzdF9yZXN1bHRzKToKKyAgICAgICAgc2VsZi5fdW5pdF90ZXN0
X2ZhaWx1cmVzID0gdW5pdF90ZXN0X3Jlc3VsdHMKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvY29tbW9uL25ldC91bml0dGVzdHJlc3VsdHMucHkgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9uZXQvdW5pdHRlc3RyZXN1bHRzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJiODJiMDUw
MzMyZmQ1ZjcyZGEwNmZlNTVhMTQ3OTBiYTQ1ZjUwNmYKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvdW5pdHRlc3RyZXN1bHRzLnB5CkBAIC0wLDAg
KzEsNTAgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDEyLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlz
dHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IHhtbC5kb20ubWluaWRvbQorCitm
cm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZGVwcmVjYXRlZF9sb2dnaW5nIGltcG9ydCBsb2cK
KworCitjbGFzcyBVbml0VGVzdFJlc3VsdHMob2JqZWN0KToKKyAgICBAY2xhc3NtZXRob2QKKyAg
ICBkZWYgcmVzdWx0c19mcm9tX3N0cmluZyhzZWxmLCBzdHJpbmcpOgorICAgICAgICBpZiBub3Qg
c3RyaW5nOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgdHJ5OgorICAgICAgICAg
ICAgZG9tID0geG1sLmRvbS5taW5pZG9tLnBhcnNlU3RyaW5nKHN0cmluZykKKyAgICAgICAgICAg
IGZhaWx1cmVzID0gW10KKyAgICAgICAgICAgIGZvciB0ZXN0Y2FzZSBpbiBkb20uZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoJ3Rlc3RjYXNlJyk6CisgICAgICAgICAgICAgICAgaWYgdGVzdGNhc2UuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoJ2ZhaWx1cmUnKS5sZW5ndGggIT0gMDoKKyAgICAgICAgICAgICAg
ICAgICAgdGVzdG5hbWUgPSB0ZXN0Y2FzZS5nZXRBdHRyaWJ1dGUoJ25hbWUnKQorICAgICAgICAg
ICAgICAgICAgICBjbGFzc25hbWUgPSB0ZXN0Y2FzZS5nZXRBdHRyaWJ1dGUoJ2NsYXNzbmFtZScp
CisgICAgICAgICAgICAgICAgICAgIGZhaWx1cmVzLmFwcGVuZCgiJXMuJXMiICUgKGNsYXNzbmFt
ZSwgdGVzdG5hbWUpKQorICAgICAgICAgICAgcmV0dXJuIGZhaWx1cmVzCisgICAgICAgIGV4Y2Vw
dCB4bWwucGFyc2Vycy5leHBhdC5FeHBhdEVycm9yLCBlOgorICAgICAgICAgICAgbG9nKCJYTUwg
ZXJyb3IgJXMgcGFyc2luZyB1bml0IHRlc3Qgb3V0cHV0IiAlIHN0cihlKSkKKyAgICAgICAgICAg
IHJldHVybiBOb25lCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9u
ZXQvdW5pdHRlc3RyZXN1bHRzX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9j
b21tb24vbmV0L3VuaXR0ZXN0cmVzdWx0c191bml0dGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mODg1MjA2
MmM2NWY0Yjg0ZjQwMGUxMDExZGM2NDM1NjI5MTNkMDJjCi0tLSAvZGV2L251bGwKKysrIGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L3VuaXR0ZXN0cmVzdWx0c191bml0dGVzdC5w
eQpAQCAtMCwwICsxLDk4IEBACisjIENvcHlyaWdodCAoYykgMjAxMiwgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0
OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCB1bml0dGVzdAor
Citmcm9tIHVuaXR0ZXN0cmVzdWx0cyBpbXBvcnQgVW5pdFRlc3RSZXN1bHRzCisKKworY2xhc3Mg
VW5pdFRlc3RSZXN1bHRzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9u
b3N0cmluZyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoTm9uZSwgVW5pdFRlc3RS
ZXN1bHRzLnJlc3VsdHNfZnJvbV9zdHJpbmcoTm9uZSkpCisKKyAgICBkZWYgdGVzdF9lbXB0eXN0
cmluZyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoTm9uZSwgVW5pdFRlc3RSZXN1
bHRzLnJlc3VsdHNfZnJvbV9zdHJpbmcoIiIpKQorCisgICAgZGVmIHRlc3Rfbm9mYWlsdXJlcyhz
ZWxmKToKKyAgICAgICAgbm9fZmFpbHVyZXNfeG1sID0gIiIiPD94bWwgdmVyc2lvbj0iMS4wIiBl
bmNvZGluZz0iVVRGLTgiPz4KKzx0ZXN0c3VpdGVzIHRlc3RzPSIzIiBmYWlsdXJlcz0iMCIgZGlz
YWJsZWQ9IjAiIGVycm9ycz0iMCIgdGltZT0iMTEuMzUiIG5hbWU9IkFsbFRlc3RzIj4KKyAgPHRl
c3RzdWl0ZSBuYW1lPSJSZW5kZXJUYWJsZUNlbGxEZWF0aFRlc3QiIHRlc3RzPSIzIiBmYWlsdXJl
cz0iMCIgZGlzYWJsZWQ9IjAiIGVycm9ycz0iMCIgdGltZT0iMC42NzciPgorICAgIDx0ZXN0Y2Fz
ZSBuYW1lPSJDYW5TZXRDb2x1bW4iIHN0YXR1cz0icnVuIiB0aW1lPSIwLjE2OCIgY2xhc3NuYW1l
PSJSZW5kZXJUYWJsZUNlbGxEZWF0aFRlc3QiIC8+CisgICAgPHRlc3RjYXNlIG5hbWU9IkNyYXNo
SWZTZXR0aW5nVW5zZXRDb2x1bW5JbmRleCIgc3RhdHVzPSJydW4iIHRpbWU9IjAuMTI5IiBjbGFz
c25hbWU9IlJlbmRlclRhYmxlQ2VsbERlYXRoVGVzdCIgLz4KKyAgICA8dGVzdGNhc2UgbmFtZT0i
Q3Jhc2hJZlNldHRpbmdVbnNldFJvd0luZGV4IiBzdGF0dXM9InJ1biIgdGltZT0iMC4xMjMiIGNs
YXNzbmFtZT0iUmVuZGVyVGFibGVDZWxsRGVhdGhUZXN0IiAvPgorICA8L3Rlc3RzdWl0ZT4KKzwv
dGVzdHN1aXRlcz4iIiIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoW10sIFVuaXRUZXN0UmVz
dWx0cy5yZXN1bHRzX2Zyb21fc3RyaW5nKG5vX2ZhaWx1cmVzX3htbCkpCisKKyAgICBkZWYgdGVz
dF9vbmVmYWlsdXJlKHNlbGYpOgorICAgICAgICBvbmVfZmFpbHVyZV94bWwgPSAiIiI8P3htbCB2
ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHRlc3RzdWl0ZXMgdGVzdHM9IjQiIGZh
aWx1cmVzPSIxIiBkaXNhYmxlZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIxMS4zNSIgbmFtZT0iQWxs
VGVzdHMiPgorICA8dGVzdHN1aXRlIG5hbWU9IlJlbmRlclRhYmxlQ2VsbERlYXRoVGVzdCIgdGVz
dHM9IjQiIGZhaWx1cmVzPSIxIiBkaXNhYmxlZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIwLjY3NyI+
CisgICAgPHRlc3RjYXNlIG5hbWU9IkNhblNldENvbHVtbiIgc3RhdHVzPSJydW4iIHRpbWU9IjAu
MTY4IiBjbGFzc25hbWU9IlJlbmRlclRhYmxlQ2VsbERlYXRoVGVzdCIgLz4KKyAgICA8dGVzdGNh
c2UgbmFtZT0iQ3Jhc2hJZlNldHRpbmdVbnNldENvbHVtbkluZGV4IiBzdGF0dXM9InJ1biIgdGlt
ZT0iMC4xMjkiIGNsYXNzbmFtZT0iUmVuZGVyVGFibGVDZWxsRGVhdGhUZXN0IiAvPgorICAgIDx0
ZXN0Y2FzZSBuYW1lPSJDcmFzaElmU2V0dGluZ1Vuc2V0Um93SW5kZXgiIHN0YXR1cz0icnVuIiB0
aW1lPSIwLjEyMyIgY2xhc3NuYW1lPSJSZW5kZXJUYWJsZUNlbGxEZWF0aFRlc3QiIC8+CisgICAg
PHRlc3RjYXNlIG5hbWU9IkZBSUxTX0RpdkF1dG9ab29tUGFyYW1zVGVzdCIgc3RhdHVzPSJydW4i
IHRpbWU9IjAuMDIiIGNsYXNzbmFtZT0iV2ViRnJhbWVUZXN0Ij4KKyAgICAgIDxmYWlsdXJlIG1l
c3NhZ2U9IlZhbHVlIG9mOiBzY2FsZSYjeDBBOyAgQWN0dWFsOiA0JiN4MEE7RXhwZWN0ZWQ6IDEi
IHR5cGU9IiI+PCFbQ0RBVEFbLi4vLi4vU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJG
cmFtZVRlc3QuY3BwOjE5MQorVmFsdWUgb2Y6IHNjYWxlCisgIEFjdHVhbDogNAorRXhwZWN0ZWQ6
IDFdXT48L2ZhaWx1cmU+CisgICAgPC90ZXN0Y2FzZT4KKyAgPC90ZXN0c3VpdGU+Cis8L3Rlc3Rz
dWl0ZXM+IiIiCisgICAgICAgIGV4cGVjdGVkID0gWyJXZWJGcmFtZVRlc3QuRkFJTFNfRGl2QXV0
b1pvb21QYXJhbXNUZXN0Il0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZXhwZWN0ZWQsIFVu
aXRUZXN0UmVzdWx0cy5yZXN1bHRzX2Zyb21fc3RyaW5nKG9uZV9mYWlsdXJlX3htbCkpCisKKyAg
ICBkZWYgdGVzdF9tdWx0aXBsZV9mYWlsdXJlc19wZXJfdGVzdChzZWxmKToKKyAgICAgICAgbXVs
dGlwbGVfZmFpbHVyZXNfcGVyX3Rlc3RfeG1sID0gIiIiPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNv
ZGluZz0iVVRGLTgiPz4KKzx0ZXN0c3VpdGVzIHRlc3RzPSI0IiBmYWlsdXJlcz0iMiIgZGlzYWJs
ZWQ9IjAiIGVycm9ycz0iMCIgdGltZT0iMTEuMzUiIG5hbWU9IkFsbFRlc3RzIj4KKyAgPHRlc3Rz
dWl0ZSBuYW1lPSJVbml0VGVzdHMiIHRlc3RzPSI0IiBmYWlsdXJlcz0iMiIgZGlzYWJsZT0iMCIg
ZXJyb3JzPSIwIiB0aW1lPSIxMC4wIj4KKyAgICA8dGVzdGNhc2UgbmFtZT0iVGVzdE9uZSIgc3Rh
dHVzPSJydW4iIHRpbWU9IjAuNSIgY2xhc3NuYW1lPSJDbGFzc09uZSI+CisgICAgICA8ZmFpbHVy
ZSBtZXNzYWdlPSJWYWx1ZSBvZjogcGkmI3gwQTsgIEFjdHVhbDogMyYjeDBBO0V4cGVjdGVkOiAz
LjE0IiB0eXBlPSIiPjwhW0NEQVRBWy4uLy4uL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q2xhc3NPbmVUZXN0LmNwcDo0MgorVmFsdWUgb2Y6IHBpCisgIEFjdHVhbDogMworRXhwZWN0ZWQ6
IDMuMTRdXT48L2ZhaWx1cmU+CisgICAgPC90ZXN0Y2FzZT4KKyAgICA8dGVzdGNhc2UgbmFtZT0i
VGVzdFR3byIgc3RhdHVzPSJydW4iIHRpbWU9IjAuNSIgY2xhc3NuYW1lPSJDbGFzc1R3byI+Cisg
ICAgICA8ZmFpbHVyZSBtZXNzYWdlPSJWYWx1ZSBvZjogZSYjeDBBOyAgQWN0dWFsOiAyJiN4MEE7
RXhwZWN0ZWQ6IDIuNzEiIHR5cGU9IiI+PCFbQ0RBVEFbLi4vLi4vU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9DbGFzc1R3b1Rlc3QuY3BwOjMwCitWYWx1ZSBvZjogZQorICBBY3R1YWw6IDIK
K0V4cGVjdGVkOiAyLjcxXV0+PC9mYWlsdXJlPgorICAgICAgPGZhaWx1cmUgbWVzc2FnZT0iVmFs
dWUgb2Y6IHRhdSYjeDBBOyAgQWN0dWFsOiA2JiN4MEE7RXhwZWN0ZWQ6IDYuMjgiIHR5cGU9IiI+
PCFbQ0RBVEFbLi4vLi4vU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DbGFzc1R3b1Rlc3Qu
Y3BwOjU1CitWYWx1ZSBvZjogdGF1CisgIEFjdHVhbDogNgorRXhwZWN0ZWQ6IDYuMjhdXT48L2Zh
aWx1cmU+CisgICAgPC90ZXN0Y2FzZT4KKyAgPC90ZXN0c3VpdGU+Cis8L3Rlc3RzdWl0ZXM+IiIi
CisgICAgICAgIGV4cGVjdGVkID0gWyJDbGFzc09uZS5UZXN0T25lIiwgIkNsYXNzVHdvLlRlc3RU
d28iXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhleHBlY3RlZCwgVW5pdFRlc3RSZXN1bHRz
LnJlc3VsdHNfZnJvbV9zdHJpbmcobXVsdGlwbGVfZmFpbHVyZXNfcGVyX3Rlc3RfeG1sKSkKKwor
CitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0t
Z2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9jb21taXRxdWV1ZXRhc2tfdW5p
dHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2NvbW1pdHF1ZXVldGFz
a191bml0dGVzdC5weQppbmRleCA4OTUxZGNiMGQ2YWMyZmYxMjliMDQyODJjMjY4NjI5ZWUxNWY1
NTEzLi4wY2VmOGM4NjdiMjBhY2MwNTdjYjNmOGVlMmE0ZTIzODVlMjJiNzM5IDEwMDY0NAotLS0g
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2NvbW1pdHF1ZXVldGFza191bml0dGVz
dC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2NvbW1pdHF1ZXVldGFz
a191bml0dGVzdC5weQpAQCAtNjgsMTUgKzY4LDE1IEBAIGNsYXNzIE1vY2tDb21taXRRdWV1ZShD
b21taXRRdWV1ZVRhc2tEZWxlZ2F0ZSk6CiAgICAgZGVmIGV4cGVjdGVkX2ZhaWx1cmVzKHNlbGYp
OgogICAgICAgICByZXR1cm4gRXhwZWN0ZWRGYWlsdXJlcygpCiAKLSAgICBkZWYgbGF5b3V0X3Rl
c3RfcmVzdWx0cyhzZWxmKToKKyAgICBkZWYgdGVzdF9yZXN1bHRzKHNlbGYpOgogICAgICAgICBy
ZXR1cm4gTm9uZQogCiAgICAgZGVmIHJlcG9ydF9mbGFreV90ZXN0cyhzZWxmLCBwYXRjaCwgZmxh
a3lfcmVzdWx0cywgcmVzdWx0c19hcmNoaXZlKToKICAgICAgICAgZmxha3lfdGVzdHMgPSBbcmVz
dWx0LmZpbGVuYW1lIGZvciByZXN1bHQgaW4gZmxha3lfcmVzdWx0c10KICAgICAgICAgbG9nKCJy
ZXBvcnRfZmxha3lfdGVzdHM6IHBhdGNoPSclcycgZmxha3lfdGVzdHM9JyVzJyBhcmNoaXZlPScl
cyciICUgKHBhdGNoLmlkKCksIGZsYWt5X3Rlc3RzLCByZXN1bHRzX2FyY2hpdmUuZmlsZW5hbWUp
KQogCi0gICAgZGVmIGFyY2hpdmVfbGFzdF9sYXlvdXRfdGVzdF9yZXN1bHRzKHNlbGYsIHBhdGNo
KToKLSAgICAgICAgbG9nKCJhcmNoaXZlX2xhc3RfbGF5b3V0X3Rlc3RfcmVzdWx0czogcGF0Y2g9
JyVzJyIgJSBwYXRjaC5pZCgpKQorICAgIGRlZiBhcmNoaXZlX2xhc3RfdGVzdF9yZXN1bHRzKHNl
bGYsIHBhdGNoKToKKyAgICAgICAgbG9nKCJhcmNoaXZlX2xhc3RfdGVzdF9yZXN1bHRzOiBwYXRj
aD0nJXMnIiAlIHBhdGNoLmlkKCkpCiAgICAgICAgIGFyY2hpdmUgPSBNb2NrKCkKICAgICAgICAg
YXJjaGl2ZS5maWxlbmFtZSA9ICJtb2NrLWFyY2hpdmUtJXMuemlwIiAlIHBhdGNoLmlkKCkKICAg
ICAgICAgcmV0dXJuIGFyY2hpdmUKQEAgLTEwMiw4ICsxMDIsOCBAQCBjbGFzcyBGYWlsaW5nVGVz
dENvbW1pdFF1ZXVlKE1vY2tDb21taXRRdWV1ZSk6CiAgICAgZGVmIF9tb2NrX3Rlc3RfcmVzdWx0
KHNlbGYsIHRlc3RuYW1lKToKICAgICAgICAgcmV0dXJuIHRlc3RfcmVzdWx0cy5UZXN0UmVzdWx0
KHRlc3RuYW1lLCBbdGVzdF9mYWlsdXJlcy5GYWlsdXJlVGV4dE1pc21hdGNoKCldKQogCi0gICAg
ZGVmIGxheW91dF90ZXN0X3Jlc3VsdHMoc2VsZik6Ci0gICAgICAgICMgRG9lc24ndCBtYWtlIHNl
bnNlIHRvIGFzayBmb3IgdGhlIGxheW91dF90ZXN0X3Jlc3VsdHMgdW50aWwgdGhlIHRlc3RzIGhh
dmUgcnVuIGF0IGxlYXN0IG9uY2UuCisgICAgZGVmIHRlc3RfcmVzdWx0cyhzZWxmKToKKyAgICAg
ICAgIyBEb2Vzbid0IG1ha2Ugc2Vuc2UgdG8gYXNrIGZvciB0aGUgdGVzdF9yZXN1bHRzIHVudGls
IHRoZSB0ZXN0cyBoYXZlIHJ1biBhdCBsZWFzdCBvbmNlLgogICAgICAgICBhc3NlcnQoc2VsZi5f
dGVzdF9ydW5fY291bnRlciA+PSAwKQogICAgICAgICBmYWlsdXJlc19mb3JfcnVuID0gc2VsZi5f
dGVzdF9mYWlsdXJlX3BsYW5bc2VsZi5fdGVzdF9ydW5fY291bnRlcl0KICAgICAgICAgcmVzdWx0
cyA9IExheW91dFRlc3RSZXN1bHRzKG1hcChzZWxmLl9tb2NrX3Rlc3RfcmVzdWx0LCBmYWlsdXJl
c19mb3JfcnVuKSkKQEAgLTI3Nyw3ICsyNzcsNyBAQCBjb21tYW5kX2ZhaWxlZDogZmFpbHVyZV9t
ZXNzYWdlPSdVbmFibGUgdG8gYnVpbGQgd2l0aG91dCBwYXRjaCcgc2NyaXB0X2Vycm9yPSdNTwog
ICAgICAgICBdKQogICAgICAgICAjIENvbW1pdFF1ZXVlVGFzayB3aWxsIG9ubHkgcmVwb3J0IGZs
YWt5IHRlc3RzIGlmIHdlIHN1Y2Nlc3NmdWxseSBwYXJzZWQKICAgICAgICAgIyByZXN1bHRzLmh0
bWwgYW5kIHJldHVybmVkIGEgTGF5b3V0VGVzdFJlc3VsdHMgb2JqZWN0LCBzbyB3ZSBmYWtlIG9u
ZS4KLSAgICAgICAgY29tbWl0X3F1ZXVlLmxheW91dF90ZXN0X3Jlc3VsdHMgPSBsYW1iZGE6IExh
eW91dFRlc3RSZXN1bHRzKFtdKQorICAgICAgICBjb21taXRfcXVldWUudGVzdF9yZXN1bHRzID0g
bGFtYmRhOiBMYXlvdXRUZXN0UmVzdWx0cyhbXSkKICAgICAgICAgZXhwZWN0ZWRfc3RkZXJyID0g
IiIicnVuX3dlYmtpdF9wYXRjaDogWydjbGVhbiddCiBjb21tYW5kX3Bhc3NlZDogc3VjY2Vzc19t
ZXNzYWdlPSdDbGVhbmVkIHdvcmtpbmcgZGlyZWN0b3J5JyBwYXRjaD0nMTAwMDAnCiBydW5fd2Vi
a2l0X3BhdGNoOiBbJ3VwZGF0ZSddCkBAIC0yOTAsNyArMjkwLDcgQEAgcnVuX3dlYmtpdF9wYXRj
aDogWydidWlsZCcsICctLW5vLWNsZWFuJywgJy0tbm8tdXBkYXRlJywgJy0tYnVpbGQtc3R5bGU9
Ym90aCddCiBjb21tYW5kX3Bhc3NlZDogc3VjY2Vzc19tZXNzYWdlPSdCdWlsdCBwYXRjaCcgcGF0
Y2g9JzEwMDAwJwogcnVuX3dlYmtpdF9wYXRjaDogWydidWlsZC1hbmQtdGVzdCcsICctLW5vLWNs
ZWFuJywgJy0tbm8tdXBkYXRlJywgJy0tdGVzdCcsICctLW5vbi1pbnRlcmFjdGl2ZSddCiBjb21t
YW5kX2ZhaWxlZDogZmFpbHVyZV9tZXNzYWdlPSdQYXRjaCBkb2VzIG5vdCBwYXNzIHRlc3RzJyBz
Y3JpcHRfZXJyb3I9J01PQ0sgdGVzdHMgZmFpbHVyZScgcGF0Y2g9JzEwMDAwJwotYXJjaGl2ZV9s
YXN0X2xheW91dF90ZXN0X3Jlc3VsdHM6IHBhdGNoPScxMDAwMCcKK2FyY2hpdmVfbGFzdF90ZXN0
X3Jlc3VsdHM6IHBhdGNoPScxMDAwMCcKIHJ1bl93ZWJraXRfcGF0Y2g6IFsnYnVpbGQtYW5kLXRl
c3QnLCAnLS1uby1jbGVhbicsICctLW5vLXVwZGF0ZScsICctLXRlc3QnLCAnLS1ub24taW50ZXJh
Y3RpdmUnXQogY29tbWFuZF9wYXNzZWQ6IHN1Y2Nlc3NfbWVzc2FnZT0nUGFzc2VkIHRlc3RzJyBw
YXRjaD0nMTAwMDAnCiByZXBvcnRfZmxha3lfdGVzdHM6IHBhdGNoPScxMDAwMCcgZmxha3lfdGVz
dHM9J1tdJyBhcmNoaXZlPSdtb2NrLWFyY2hpdmUtMTAwMDAuemlwJwpAQCAtMzA4LDEwICszMDgs
MTAgQEAgY29tbWFuZF9wYXNzZWQ6IHN1Y2Nlc3NfbWVzc2FnZT0nTGFuZGVkIHBhdGNoJyBwYXRj
aD0nMTAwMDAnCiAgICAgICAgICAgICBOb25lLAogICAgICAgICAgICAgU2NyaXB0RXJyb3IoIk1P
Q0sgdGVzdHMgZmFpbHVyZSIpLAogICAgICAgICBdKQotICAgICAgICBjb21taXRfcXVldWUubGF5
b3V0X3Rlc3RfcmVzdWx0cyA9IGxhbWJkYTogTGF5b3V0VGVzdFJlc3VsdHMoW10pCisgICAgICAg
IGNvbW1pdF9xdWV1ZS50ZXN0X3Jlc3VsdHMgPSBsYW1iZGE6IExheW91dFRlc3RSZXN1bHRzKFtd
KQogICAgICAgICAjIEl0J3MgcG9zc2libGUgZGVsZWdhdGUgdG8gZmFpbCB0byBhcmNoaXZlIGxh
eW91dCB0ZXN0cywgZG9uJ3QgdHJ5IHRvIHJlcG9ydAogICAgICAgICAjIGZsYWt5IHRlc3RzIHdo
ZW4gdGhhdCBoYXBwZW5zLgotICAgICAgICBjb21taXRfcXVldWUuYXJjaGl2ZV9sYXN0X2xheW91
dF90ZXN0X3Jlc3VsdHMgPSBsYW1iZGEgcGF0Y2g6IE5vbmUKKyAgICAgICAgY29tbWl0X3F1ZXVl
LmFyY2hpdmVfbGFzdF90ZXN0X3Jlc3VsdHMgPSBsYW1iZGEgcGF0Y2g6IE5vbmUKICAgICAgICAg
ZXhwZWN0ZWRfc3RkZXJyID0gIiIicnVuX3dlYmtpdF9wYXRjaDogWydjbGVhbiddCiBjb21tYW5k
X3Bhc3NlZDogc3VjY2Vzc19tZXNzYWdlPSdDbGVhbmVkIHdvcmtpbmcgZGlyZWN0b3J5JyBwYXRj
aD0nMTAwMDAnCiBydW5fd2Via2l0X3BhdGNoOiBbJ3VwZGF0ZSddCkBAIC0zNjAsNyArMzYwLDcg
QEAgcnVuX3dlYmtpdF9wYXRjaDogWydidWlsZCcsICctLW5vLWNsZWFuJywgJy0tbm8tdXBkYXRl
JywgJy0tYnVpbGQtc3R5bGU9Ym90aCddCiBjb21tYW5kX3Bhc3NlZDogc3VjY2Vzc19tZXNzYWdl
PSdCdWlsdCBwYXRjaCcgcGF0Y2g9JzEwMDAwJwogcnVuX3dlYmtpdF9wYXRjaDogWydidWlsZC1h
bmQtdGVzdCcsICctLW5vLWNsZWFuJywgJy0tbm8tdXBkYXRlJywgJy0tdGVzdCcsICctLW5vbi1p
bnRlcmFjdGl2ZSddCiBjb21tYW5kX2ZhaWxlZDogZmFpbHVyZV9tZXNzYWdlPSdQYXRjaCBkb2Vz
IG5vdCBwYXNzIHRlc3RzJyBzY3JpcHRfZXJyb3I9J01PQ0sgdGVzdCBmYWlsdXJlJyBwYXRjaD0n
MTAwMDAnCi1hcmNoaXZlX2xhc3RfbGF5b3V0X3Rlc3RfcmVzdWx0czogcGF0Y2g9JzEwMDAwJwor
YXJjaGl2ZV9sYXN0X3Rlc3RfcmVzdWx0czogcGF0Y2g9JzEwMDAwJwogcnVuX3dlYmtpdF9wYXRj
aDogWydidWlsZC1hbmQtdGVzdCcsICctLW5vLWNsZWFuJywgJy0tbm8tdXBkYXRlJywgJy0tdGVz
dCcsICctLW5vbi1pbnRlcmFjdGl2ZSddCiBjb21tYW5kX2ZhaWxlZDogZmFpbHVyZV9tZXNzYWdl
PSdQYXRjaCBkb2VzIG5vdCBwYXNzIHRlc3RzJyBzY3JpcHRfZXJyb3I9J01PQ0sgdGVzdCBmYWls
dXJlIGFnYWluJyBwYXRjaD0nMTAwMDAnCiAiIiIKQEAgLTM5MiwxMCArMzkyLDEwIEBAIHJ1bl93
ZWJraXRfcGF0Y2g6IFsnYnVpbGQnLCAnLS1uby1jbGVhbicsICctLW5vLXVwZGF0ZScsICctLWJ1
aWxkLXN0eWxlPWJvdGgnXQogY29tbWFuZF9wYXNzZWQ6IHN1Y2Nlc3NfbWVzc2FnZT0nQnVpbHQg
cGF0Y2gnIHBhdGNoPScxMDAwMCcKIHJ1bl93ZWJraXRfcGF0Y2g6IFsnYnVpbGQtYW5kLXRlc3Qn
LCAnLS1uby1jbGVhbicsICctLW5vLXVwZGF0ZScsICctLXRlc3QnLCAnLS1ub24taW50ZXJhY3Rp
dmUnXQogY29tbWFuZF9mYWlsZWQ6IGZhaWx1cmVfbWVzc2FnZT0nUGF0Y2ggZG9lcyBub3QgcGFz
cyB0ZXN0cycgc2NyaXB0X2Vycm9yPSdNT0NLIHRlc3QgZmFpbHVyZScgcGF0Y2g9JzEwMDAwJwot
YXJjaGl2ZV9sYXN0X2xheW91dF90ZXN0X3Jlc3VsdHM6IHBhdGNoPScxMDAwMCcKK2FyY2hpdmVf
bGFzdF90ZXN0X3Jlc3VsdHM6IHBhdGNoPScxMDAwMCcKIHJ1bl93ZWJraXRfcGF0Y2g6IFsnYnVp
bGQtYW5kLXRlc3QnLCAnLS1uby1jbGVhbicsICctLW5vLXVwZGF0ZScsICctLXRlc3QnLCAnLS1u
b24taW50ZXJhY3RpdmUnXQogY29tbWFuZF9mYWlsZWQ6IGZhaWx1cmVfbWVzc2FnZT0nUGF0Y2gg
ZG9lcyBub3QgcGFzcyB0ZXN0cycgc2NyaXB0X2Vycm9yPSdNT0NLIHRlc3QgZmFpbHVyZSBhZ2Fp
bicgcGF0Y2g9JzEwMDAwJwotYXJjaGl2ZV9sYXN0X2xheW91dF90ZXN0X3Jlc3VsdHM6IHBhdGNo
PScxMDAwMCcKK2FyY2hpdmVfbGFzdF90ZXN0X3Jlc3VsdHM6IHBhdGNoPScxMDAwMCcKIHJ1bl93
ZWJraXRfcGF0Y2g6IFsnYnVpbGQtYW5kLXRlc3QnLCAnLS1mb3JjZS1jbGVhbicsICctLW5vLXVw
ZGF0ZScsICctLWJ1aWxkJywgJy0tdGVzdCcsICctLW5vbi1pbnRlcmFjdGl2ZSddCiBjb21tYW5k
X3Bhc3NlZDogc3VjY2Vzc19tZXNzYWdlPSdBYmxlIHRvIHBhc3MgdGVzdHMgd2l0aG91dCBwYXRj
aCcgcGF0Y2g9JzEwMDAwJwogIiIiCkBAIC00MzEsMTAgKzQzMSwxMCBAQCBydW5fd2Via2l0X3Bh
dGNoOiBbJ2J1aWxkJywgJy0tbm8tY2xlYW4nLCAnLS1uby11cGRhdGUnLCAnLS1idWlsZC1zdHls
ZT1ib3RoJ10KIGNvbW1hbmRfcGFzc2VkOiBzdWNjZXNzX21lc3NhZ2U9J0J1aWx0IHBhdGNoJyBw
YXRjaD0nMTAwMDAnCiBydW5fd2Via2l0X3BhdGNoOiBbJ2J1aWxkLWFuZC10ZXN0JywgJy0tbm8t
Y2xlYW4nLCAnLS1uby11cGRhdGUnLCAnLS10ZXN0JywgJy0tbm9uLWludGVyYWN0aXZlJ10KIGNv
bW1hbmRfZmFpbGVkOiBmYWlsdXJlX21lc3NhZ2U9J1BhdGNoIGRvZXMgbm90IHBhc3MgdGVzdHMn
IHNjcmlwdF9lcnJvcj0nTU9DSyB0ZXN0IGZhaWx1cmUnIHBhdGNoPScxMDAwMCcKLWFyY2hpdmVf
bGFzdF9sYXlvdXRfdGVzdF9yZXN1bHRzOiBwYXRjaD0nMTAwMDAnCithcmNoaXZlX2xhc3RfdGVz
dF9yZXN1bHRzOiBwYXRjaD0nMTAwMDAnCiBydW5fd2Via2l0X3BhdGNoOiBbJ2J1aWxkLWFuZC10
ZXN0JywgJy0tbm8tY2xlYW4nLCAnLS1uby11cGRhdGUnLCAnLS10ZXN0JywgJy0tbm9uLWludGVy
YWN0aXZlJ10KIGNvbW1hbmRfZmFpbGVkOiBmYWlsdXJlX21lc3NhZ2U9J1BhdGNoIGRvZXMgbm90
IHBhc3MgdGVzdHMnIHNjcmlwdF9lcnJvcj0nTU9DSyB0ZXN0IGZhaWx1cmUgYWdhaW4nIHBhdGNo
PScxMDAwMCcKLWFyY2hpdmVfbGFzdF9sYXlvdXRfdGVzdF9yZXN1bHRzOiBwYXRjaD0nMTAwMDAn
CithcmNoaXZlX2xhc3RfdGVzdF9yZXN1bHRzOiBwYXRjaD0nMTAwMDAnCiBydW5fd2Via2l0X3Bh
dGNoOiBbJ2J1aWxkLWFuZC10ZXN0JywgJy0tZm9yY2UtY2xlYW4nLCAnLS1uby11cGRhdGUnLCAn
LS1idWlsZCcsICctLXRlc3QnLCAnLS1ub24taW50ZXJhY3RpdmUnXQogY29tbWFuZF9mYWlsZWQ6
IGZhaWx1cmVfbWVzc2FnZT0nVW5hYmxlIHRvIHBhc3MgdGVzdHMgd2l0aG91dCBwYXRjaCAodHJl
ZSBpcyByZWQ/KScgc2NyaXB0X2Vycm9yPSdNT0NLIGNsZWFuIHRlc3QgZmFpbHVyZScgcGF0Y2g9
JzEwMDAwJwogcnVuX3dlYmtpdF9wYXRjaDogWydsYW5kLWF0dGFjaG1lbnQnLCAnLS1mb3JjZS1j
bGVhbicsICctLW5vbi1pbnRlcmFjdGl2ZScsICctLXBhcmVudC1jb21tYW5kPWNvbW1pdC1xdWV1
ZScsIDEwMDAwXQpAQCAtNDc0LDEwICs0NzQsMTAgQEAgcnVuX3dlYmtpdF9wYXRjaDogWydidWls
ZCcsICctLW5vLWNsZWFuJywgJy0tbm8tdXBkYXRlJywgJy0tYnVpbGQtc3R5bGU9Ym90aCddCiBj
b21tYW5kX3Bhc3NlZDogc3VjY2Vzc19tZXNzYWdlPSdCdWlsdCBwYXRjaCcgcGF0Y2g9JzEwMDAw
JwogcnVuX3dlYmtpdF9wYXRjaDogWydidWlsZC1hbmQtdGVzdCcsICctLW5vLWNsZWFuJywgJy0t
bm8tdXBkYXRlJywgJy0tdGVzdCcsICctLW5vbi1pbnRlcmFjdGl2ZSddCiBjb21tYW5kX2ZhaWxl
ZDogZmFpbHVyZV9tZXNzYWdlPSdQYXRjaCBkb2VzIG5vdCBwYXNzIHRlc3RzJyBzY3JpcHRfZXJy
b3I9J01PQ0sgdGVzdCBmYWlsdXJlJyBwYXRjaD0nMTAwMDAnCi1hcmNoaXZlX2xhc3RfbGF5b3V0
X3Rlc3RfcmVzdWx0czogcGF0Y2g9JzEwMDAwJworYXJjaGl2ZV9sYXN0X3Rlc3RfcmVzdWx0czog
cGF0Y2g9JzEwMDAwJwogcnVuX3dlYmtpdF9wYXRjaDogWydidWlsZC1hbmQtdGVzdCcsICctLW5v
LWNsZWFuJywgJy0tbm8tdXBkYXRlJywgJy0tdGVzdCcsICctLW5vbi1pbnRlcmFjdGl2ZSddCiBj
b21tYW5kX2ZhaWxlZDogZmFpbHVyZV9tZXNzYWdlPSdQYXRjaCBkb2VzIG5vdCBwYXNzIHRlc3Rz
JyBzY3JpcHRfZXJyb3I9J01PQ0sgdGVzdCBmYWlsdXJlIGFnYWluJyBwYXRjaD0nMTAwMDAnCi1h
cmNoaXZlX2xhc3RfbGF5b3V0X3Rlc3RfcmVzdWx0czogcGF0Y2g9JzEwMDAwJworYXJjaGl2ZV9s
YXN0X3Rlc3RfcmVzdWx0czogcGF0Y2g9JzEwMDAwJwogcnVuX3dlYmtpdF9wYXRjaDogWydidWls
ZC1hbmQtdGVzdCcsICctLWZvcmNlLWNsZWFuJywgJy0tbm8tdXBkYXRlJywgJy0tYnVpbGQnLCAn
LS10ZXN0JywgJy0tbm9uLWludGVyYWN0aXZlJ10KIGNvbW1hbmRfZmFpbGVkOiBmYWlsdXJlX21l
c3NhZ2U9J1VuYWJsZSB0byBwYXNzIHRlc3RzIHdpdGhvdXQgcGF0Y2ggKHRyZWUgaXMgcmVkPykn
IHNjcmlwdF9lcnJvcj0nTU9DSyBjbGVhbiB0ZXN0IGZhaWx1cmUnIHBhdGNoPScxMDAwMCcKICIi
IgpAQCAtNTEzLDEwICs1MTMsMTAgQEAgcnVuX3dlYmtpdF9wYXRjaDogWydidWlsZCcsICctLW5v
LWNsZWFuJywgJy0tbm8tdXBkYXRlJywgJy0tYnVpbGQtc3R5bGU9Ym90aCddCiBjb21tYW5kX3Bh
c3NlZDogc3VjY2Vzc19tZXNzYWdlPSdCdWlsdCBwYXRjaCcgcGF0Y2g9JzEwMDAwJwogcnVuX3dl
YmtpdF9wYXRjaDogWydidWlsZC1hbmQtdGVzdCcsICctLW5vLWNsZWFuJywgJy0tbm8tdXBkYXRl
JywgJy0tdGVzdCcsICctLW5vbi1pbnRlcmFjdGl2ZSddCiBjb21tYW5kX2ZhaWxlZDogZmFpbHVy
ZV9tZXNzYWdlPSdQYXRjaCBkb2VzIG5vdCBwYXNzIHRlc3RzJyBzY3JpcHRfZXJyb3I9J01PQ0sg
dGVzdCBmYWlsdXJlJyBwYXRjaD0nMTAwMDAnCi1hcmNoaXZlX2xhc3RfbGF5b3V0X3Rlc3RfcmVz
dWx0czogcGF0Y2g9JzEwMDAwJworYXJjaGl2ZV9sYXN0X3Rlc3RfcmVzdWx0czogcGF0Y2g9JzEw
MDAwJwogcnVuX3dlYmtpdF9wYXRjaDogWydidWlsZC1hbmQtdGVzdCcsICctLW5vLWNsZWFuJywg
Jy0tbm8tdXBkYXRlJywgJy0tdGVzdCcsICctLW5vbi1pbnRlcmFjdGl2ZSddCiBjb21tYW5kX2Zh
aWxlZDogZmFpbHVyZV9tZXNzYWdlPSdQYXRjaCBkb2VzIG5vdCBwYXNzIHRlc3RzJyBzY3JpcHRf
ZXJyb3I9J01PQ0sgdGVzdCBmYWlsdXJlIGFnYWluJyBwYXRjaD0nMTAwMDAnCi1hcmNoaXZlX2xh
c3RfbGF5b3V0X3Rlc3RfcmVzdWx0czogcGF0Y2g9JzEwMDAwJworYXJjaGl2ZV9sYXN0X3Rlc3Rf
cmVzdWx0czogcGF0Y2g9JzEwMDAwJwogcnVuX3dlYmtpdF9wYXRjaDogWydidWlsZC1hbmQtdGVz
dCcsICctLWZvcmNlLWNsZWFuJywgJy0tbm8tdXBkYXRlJywgJy0tYnVpbGQnLCAnLS10ZXN0Jywg
Jy0tbm9uLWludGVyYWN0aXZlJ10KIGNvbW1hbmRfZmFpbGVkOiBmYWlsdXJlX21lc3NhZ2U9J1Vu
YWJsZSB0byBwYXNzIHRlc3RzIHdpdGhvdXQgcGF0Y2ggKHRyZWUgaXMgcmVkPyknIHNjcmlwdF9l
cnJvcj0nTU9DSyBjbGVhbiB0ZXN0IGZhaWx1cmUnIHBhdGNoPScxMDAwMCcKICIiIgpkaWZmIC0t
Z2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9sYXlvdXR0ZXN0cmVzdWx0c3Jl
YWRlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvbGF5b3V0dGVzdHJlc3Vs
dHNyZWFkZXIucHkKaW5kZXggMWEwMzY2ZTI1NzQzNWIwZDZjYmU3YzMwNzgyMDE5ZWFlYTZlZTJm
ZS4uMTQ1ODQxZDJmOWJhMDFiZGI0NGRmOGQwMDVlMmZlMWJkMjA3MGEwZiAxMDA2NDQKLS0tIGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9sYXlvdXR0ZXN0cmVzdWx0c3JlYWRlci5w
eQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2xheW91dHRlc3RyZXN1bHRz
cmVhZGVyLnB5CkBAIC01MiwxNSArNTIsMjUgQEAgY2xhc3MgTGF5b3V0VGVzdFJlc3VsdHNSZWFk
ZXIob2JqZWN0KToKICAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgIHJldHVybiBMYXlv
dXRUZXN0UmVzdWx0cy5yZXN1bHRzX2Zyb21fc3RyaW5nKHJlc3VsdHNfaHRtbCkKIAorICAgIGRl
ZiBfY3JlYXRlX3VuaXRfdGVzdF9yZXN1bHRzKHNlbGYpOgorICAgICAgICByZXN1bHRzX3BhdGgg
PSBzZWxmLl90b29sLnBvcnQoKS51bml0X3Rlc3RzX3Jlc3VsdHNfcGF0aCgpCisgICAgICAgIHJl
c3VsdHNfeG1sID0gc2VsZi5fcmVhZF9maWxlX2NvbnRlbnRzKHJlc3VsdHNfcGF0aCkKKyAgICAg
ICAgaWYgbm90IHJlc3VsdHNfeG1sOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAg
cmV0dXJuIFVuaXRUZXN0UmVzdWx0cy5yZXN1bHRzX2Zyb21fc3RyaW5nKHJlc3VsdHNfeG1sKQor
CiAgICAgZGVmIHJlc3VsdHMoc2VsZik6Ci0gICAgICAgIHJlc3VsdHMgPSBzZWxmLl9jcmVhdGVf
bGF5b3V0X3Rlc3RfcmVzdWx0cygpCisgICAgICAgIGxheW91dF90ZXN0X3Jlc3VsdHMgPSBzZWxm
Ll9jcmVhdGVfbGF5b3V0X3Rlc3RfcmVzdWx0cygpCiAgICAgICAgICMgRklYTUU6IFdlIHNob3Vs
ZCBub3QgaGF2ZSB0byBzZXQgZmFpbHVyZV9saW1pdF9jb3VudCwgYnV0IHdlCiAgICAgICAgICMg
ZG8gdW50aWwgcnVuLXdlYmtpdC10ZXN0cyBjYW4gYmUgdXBkYXRlZCBzYXZlIG9mZiB0aGUgdmFs
dWUKICAgICAgICAgIyBvZiAtLWV4aXQtYWZ0ZXItTi1mYWlsdXJlcyBpbiByZXN1bHRzLmh0bWwv
cmVzdWx0cy5qc29uLgogICAgICAgICAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD01ODQ4MQotICAgICAgICBpZiByZXN1bHRzOgotICAgICAgICAgICAgcmVzdWx0cy5z
ZXRfZmFpbHVyZV9saW1pdF9jb3VudChSdW5UZXN0cy5OT05fSU5URVJBQ1RJVkVfRkFJTFVSRV9M
SU1JVF9DT1VOVCkKLSAgICAgICAgcmV0dXJuIHJlc3VsdHMKKyAgICAgICAgaWYgbGF5b3V0X3Rl
c3RfcmVzdWx0czoKKyAgICAgICAgICAgIGxheW91dF90ZXN0X3Jlc3VsdHMuc2V0X2ZhaWx1cmVf
bGltaXRfY291bnQoUnVuVGVzdHMuTk9OX0lOVEVSQUNUSVZFX0ZBSUxVUkVfTElNSVRfQ09VTlQp
CisgICAgICAgIHVuaXRfdGVzdF9yZXN1bHRzID0gc2VsZi5fY3JlYXRlX3VuaXRfdGVzdF9yZXN1
bHRzKCkKKyAgICAgICAgaWYgbGF5b3V0X3Rlc3RfcmVzdWx0czoKKyAgICAgICAgICAgIGxheW91
dF90ZXN0X3Jlc3VsdHMuYWRkX3VuaXRfdGVzdF9mYWlsdXJlcyh1bml0X3Rlc3RfcmVzdWx0cykK
KyAgICAgICAgcmV0dXJuIGxheW91dF90ZXN0X3Jlc3VsdHMKIAogICAgIGRlZiBfcmVzdWx0c19k
aXJlY3Rvcnkoc2VsZik6CiAgICAgICAgIHJlc3VsdHNfcGF0aCA9IHNlbGYuX3Rvb2wucG9ydCgp
LmxheW91dF90ZXN0c19yZXN1bHRzX3BhdGgoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL2JvdC9sYXlvdXR0ZXN0cmVzdWx0c3JlYWRlcl91bml0dGVzdC5weSBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvbGF5b3V0dGVzdHJlc3VsdHNyZWFkZXJfdW5p
dHRlc3QucHkKaW5kZXggNzg4NDVkY2Q3NjI3MmRkMTU2MGM3NjdhYjJjZDIzOTdmMDY1NzgyNy4u
YjJjNTI0ZTRmN2UwNDkzMzVhNmQyNmFiNDM4YTJkYjcwYmJlYThmMCAxMDA2NDQKLS0tIGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9sYXlvdXR0ZXN0cmVzdWx0c3JlYWRlcl91bml0
dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2xheW91dHRlc3Ry
ZXN1bHRzcmVhZGVyX3VuaXR0ZXN0LnB5CkBAIC0zOSwxMCArMzksMTMgQEAgY2xhc3MgTGF5b3V0
VGVzdFJlc3VsdHNSZWFkZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9t
aXNzaW5nX2xheW91dF90ZXN0X3Jlc3VsdHMoc2VsZik6CiAgICAgICAgIHRvb2wgPSBNb2NrVG9v
bCgpCiAgICAgICAgIHJlYWRlciA9IExheW91dFRlc3RSZXN1bHRzUmVhZGVyKHRvb2wsICIvdmFy
L2xvZ3MiKQotICAgICAgICByZXN1bHRzX3BhdGggPSAnL21vY2stcmVzdWx0cy9mdWxsX3Jlc3Vs
dHMuanNvbicKLSAgICAgICAgdG9vbC5maWxlc3lzdGVtID0gTW9ja0ZpbGVTeXN0ZW0oe3Jlc3Vs
dHNfcGF0aDogTm9uZX0pCisgICAgICAgIGxheW91dF90ZXN0c19yZXN1bHRzX3BhdGggPSAnL21v
Y2stcmVzdWx0cy9mdWxsX3Jlc3VsdHMuanNvbicKKyAgICAgICAgdW5pdF90ZXN0c19yZXN1bHRz
X3BhdGggPSAnL21vY2stcmVzdWx0cy93ZWJraXRfdW5pdF90ZXN0c19vdXRwdXQueG1sJworICAg
ICAgICB0b29sLmZpbGVzeXN0ZW0gPSBNb2NrRmlsZVN5c3RlbSh7bGF5b3V0X3Rlc3RzX3Jlc3Vs
dHNfcGF0aDogTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVuaXRfdGVzdHNfcmVzdWx0c19wYXRoOiBOb25lfSkKICAgICAgICAgIyBNYWtlIHN1cmUgdGhh
dCBvdXIgZmlsZXN5c3RlbSBtb2NrIGZ1bmN0aW9ucyBhcyB3ZSBleHBlY3QuCi0gICAgICAgIHNl
bGYuYXNzZXJ0UmFpc2VzKElPRXJyb3IsIHRvb2wuZmlsZXN5c3RlbS5yZWFkX3RleHRfZmlsZSwg
cmVzdWx0c19wYXRoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJT0Vycm9yLCB0b29sLmZp
bGVzeXN0ZW0ucmVhZF90ZXh0X2ZpbGUsIGxheW91dF90ZXN0c19yZXN1bHRzX3BhdGgpCisgICAg
ICAgIHNlbGYuYXNzZXJ0UmFpc2VzKElPRXJyb3IsIHRvb2wuZmlsZXN5c3RlbS5yZWFkX3RleHRf
ZmlsZSwgdW5pdF90ZXN0c19yZXN1bHRzX3BhdGgpCiAgICAgICAgICMgbGF5b3V0X3Rlc3RfcmVz
dWx0cyBzaG91bGRuJ3QgcmFpc2UgZXZlbiBpZiB0aGUgcmVzdWx0cy5odG1sIGZpbGUgaXMgbWlz
c2luZy4KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocmVhZGVyLnJlc3VsdHMoKSwgTm9uZSkK
IApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9wYXRjaGFuYWx5
c2lzdGFzay5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvcGF0Y2hhbmFseXNp
c3Rhc2sucHkKaW5kZXggYmNkM2QzMDRiMTFlN2U2ZWZjNzc3Y2JkODMxYTY4MjY3YzNiMWI2Mi4u
OTY1MThjNjllNGVhMWE5ZjVjMmZhNTQwOTExOGI0YmRiN2ZkN2VkOCAxMDA2NDQKLS0tIGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9wYXRjaGFuYWx5c2lzdGFzay5weQorKysgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L3BhdGNoYW5hbHlzaXN0YXNrLnB5CkBAIC01
NSwxMCArNTUsMTAgQEAgY2xhc3MgUGF0Y2hBbmFseXNpc1Rhc2tEZWxlZ2F0ZShvYmplY3QpOgog
ICAgIGRlZiBleHBlY3RlZF9mYWlsdXJlcyhzZWxmKToKICAgICAgICAgcmFpc2UgTm90SW1wbGVt
ZW50ZWRFcnJvcigic3ViY2xhc3NlcyBtdXN0IGltcGxlbWVudCIpCiAKLSAgICBkZWYgbGF5b3V0
X3Rlc3RfcmVzdWx0cyhzZWxmKToKKyAgICBkZWYgdGVzdF9yZXN1bHRzKHNlbGYpOgogICAgICAg
ICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCJzdWJjbGFzc2VzIG11c3QgaW1wbGVtZW50IikK
IAotICAgIGRlZiBhcmNoaXZlX2xhc3RfbGF5b3V0X3Rlc3RfcmVzdWx0cyhzZWxmLCBwYXRjaCk6
CisgICAgZGVmIGFyY2hpdmVfbGFzdF90ZXN0X3Jlc3VsdHMoc2VsZiwgcGF0Y2gpOgogICAgICAg
ICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCJzdWJjbGFzc2VzIG11c3QgaW1wbGVtZW50IikK
IAogICAgIGRlZiBidWlsZF9zdHlsZShzZWxmKToKQEAgLTE0NSw3ICsxNDUsNyBAQCBjbGFzcyBQ
YXRjaEFuYWx5c2lzVGFzayhvYmplY3QpOgogICAgICAgICAiUGFzc2VkIHRlc3RzIiwKICAgICAg
ICAgIlBhdGNoIGRvZXMgbm90IHBhc3MgdGVzdHMiKQogCi0gICAgICAgIHNlbGYuX2V4cGVjdGVk
X2ZhaWx1cmVzLnNocmlua19leHBlY3RlZF9mYWlsdXJlcyhzZWxmLl9kZWxlZ2F0ZS5sYXlvdXRf
dGVzdF9yZXN1bHRzKCksIHN1Y2Nlc3MpCisgICAgICAgIHNlbGYuX2V4cGVjdGVkX2ZhaWx1cmVz
LnNocmlua19leHBlY3RlZF9mYWlsdXJlcyhzZWxmLl9kZWxlZ2F0ZS50ZXN0X3Jlc3VsdHMoKSwg
c3VjY2VzcykKICAgICAgICAgcmV0dXJuIHN1Y2Nlc3MKIAogICAgIGRlZiBfYnVpbGRfYW5kX3Rl
c3Rfd2l0aG91dF9wYXRjaChzZWxmKToKQEAgLTE2MCw3ICsxNjAsNyBAQCBjbGFzcyBQYXRjaEFu
YWx5c2lzVGFzayhvYmplY3QpOgogICAgICAgICAiQWJsZSB0byBwYXNzIHRlc3RzIHdpdGhvdXQg
cGF0Y2giLAogICAgICAgICAiVW5hYmxlIHRvIHBhc3MgdGVzdHMgd2l0aG91dCBwYXRjaCAodHJl
ZSBpcyByZWQ/KSIpCiAKLSAgICAgICAgc2VsZi5fZXhwZWN0ZWRfZmFpbHVyZXMuc2hyaW5rX2V4
cGVjdGVkX2ZhaWx1cmVzKHNlbGYuX2RlbGVnYXRlLmxheW91dF90ZXN0X3Jlc3VsdHMoKSwgc3Vj
Y2VzcykKKyAgICAgICAgc2VsZi5fZXhwZWN0ZWRfZmFpbHVyZXMuc2hyaW5rX2V4cGVjdGVkX2Zh
aWx1cmVzKHNlbGYuX2RlbGVnYXRlLnRlc3RfcmVzdWx0cygpLCBzdWNjZXNzKQogICAgICAgICBy
ZXR1cm4gc3VjY2VzcwogCiAgICAgZGVmIF9sYW5kKHNlbGYpOgpAQCAtMTg3LDEwICsxODcsMTAg
QEAgY2xhc3MgUGF0Y2hBbmFseXNpc1Rhc2sob2JqZWN0KToKICAgICAgICAgaWYgc2VsZi5fdGVz
dCgpOgogICAgICAgICAgICAgcmV0dXJuIFRydWUKIAotICAgICAgICAjIE5vdGU6IGFyY2hpdmVf
bGFzdF9sYXlvdXRfdGVzdF9yZXN1bHRzIGRlbGV0ZXMgdGhlIHJlc3VsdHMgZGlyZWN0b3J5LCBt
YWtpbmcgdGhlc2UgY2FsbHMgb3JkZXItc2Vuc2l0dmUuCi0gICAgICAgICMgV2UgY291bGQgcmVt
b3ZlIHRoaXMgZGVwZW5kZW5jeSBieSBidWlsZGluZyB0aGUgbGF5b3V0X3Rlc3RfcmVzdWx0cyBm
cm9tIHRoZSBhcmNoaXZlLgotICAgICAgICBmaXJzdF9yZXN1bHRzID0gc2VsZi5fZGVsZWdhdGUu
bGF5b3V0X3Rlc3RfcmVzdWx0cygpCi0gICAgICAgIGZpcnN0X3Jlc3VsdHNfYXJjaGl2ZSA9IHNl
bGYuX2RlbGVnYXRlLmFyY2hpdmVfbGFzdF9sYXlvdXRfdGVzdF9yZXN1bHRzKHNlbGYuX3BhdGNo
KQorICAgICAgICAjIE5vdGU6IGFyY2hpdmVfbGFzdF90ZXN0X3Jlc3VsdHMgZGVsZXRlcyB0aGUg
cmVzdWx0cyBkaXJlY3RvcnksIG1ha2luZyB0aGVzZSBjYWxscyBvcmRlci1zZW5zaXR2ZS4KKyAg
ICAgICAgIyBXZSBjb3VsZCByZW1vdmUgdGhpcyBkZXBlbmRlbmN5IGJ5IGJ1aWxkaW5nIHRoZSB0
ZXN0X3Jlc3VsdHMgZnJvbSB0aGUgYXJjaGl2ZS4KKyAgICAgICAgZmlyc3RfcmVzdWx0cyA9IHNl
bGYuX2RlbGVnYXRlLnRlc3RfcmVzdWx0cygpCisgICAgICAgIGZpcnN0X3Jlc3VsdHNfYXJjaGl2
ZSA9IHNlbGYuX2RlbGVnYXRlLmFyY2hpdmVfbGFzdF90ZXN0X3Jlc3VsdHMoc2VsZi5fcGF0Y2gp
CiAgICAgICAgIGZpcnN0X3NjcmlwdF9lcnJvciA9IHNlbGYuX3NjcmlwdF9lcnJvcgogCiAgICAg
ICAgIGlmIHNlbGYuX2V4cGVjdGVkX2ZhaWx1cmVzLmZhaWx1cmVzX3dlcmVfZXhwZWN0ZWQoZmly
c3RfcmVzdWx0cyk6CkBAIC0yMDIsNyArMjAyLDcgQEAgY2xhc3MgUGF0Y2hBbmFseXNpc1Rhc2so
b2JqZWN0KToKICAgICAgICAgICAgICAgICBzZWxmLl9yZXBvcnRfZmxha3lfdGVzdHMoZmlyc3Rf
cmVzdWx0cy5mYWlsaW5nX3Rlc3RfcmVzdWx0cygpLCBmaXJzdF9yZXN1bHRzX2FyY2hpdmUpCiAg
ICAgICAgICAgICByZXR1cm4gVHJ1ZQogCi0gICAgICAgIHNlY29uZF9yZXN1bHRzID0gc2VsZi5f
ZGVsZWdhdGUubGF5b3V0X3Rlc3RfcmVzdWx0cygpCisgICAgICAgIHNlY29uZF9yZXN1bHRzID0g
c2VsZi5fZGVsZWdhdGUudGVzdF9yZXN1bHRzKCkKICAgICAgICAgaWYgc2VsZi5fcmVzdWx0c19m
YWlsZWRfZGlmZmVyZW50X3Rlc3RzKGZpcnN0X3Jlc3VsdHMsIHNlY29uZF9yZXN1bHRzKToKICAg
ICAgICAgICAgICMgV2UgY291bGQgcmVwb3J0IGZsYWt5IHRlc3RzIGhlcmUsIGJ1dCB3ZSB3b3Vs
ZCBuZWVkIHRvIGJlIGNhcmVmdWwKICAgICAgICAgICAgICMgdG8gdXNlIHNpbWlsYXIgY2hlY2tz
IHRvIEV4cGVjdGVkRmFpbHVyZXMuX2Nhbl90cnVzdF9yZXN1bHRzCkBAIC0yMTEsMTUgKzIxMSwx
NSBAQCBjbGFzcyBQYXRjaEFuYWx5c2lzVGFzayhvYmplY3QpOgogICAgICAgICAgICAgIyBTZWUg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUxMjcyCiAgICAgICAgICAg
ICByZXR1cm4gRmFsc2UKIAotICAgICAgICAjIEFyY2hpdmUgKGFuZCByZW1vdmUpIHNlY29uZCBy
ZXN1bHRzIHNvIGxheW91dF90ZXN0X3Jlc3VsdHMoKSBhZnRlcgorICAgICAgICAjIEFyY2hpdmUg
KGFuZCByZW1vdmUpIHNlY29uZCByZXN1bHRzIHNvIHRlc3RfcmVzdWx0cygpIGFmdGVyCiAgICAg
ICAgICMgYnVpbGRfYW5kX3Rlc3Rfd2l0aG91dF9wYXRjaCB3b24ndCB1c2Ugc2Vjb25kIHJlc3Vs
dHMgaW5zdGVhZCBvZiB0aGUgY2xlYW4tdHJlZSByZXN1bHRzLgotICAgICAgICBzZWNvbmRfcmVz
dWx0c19hcmNoaXZlID0gc2VsZi5fZGVsZWdhdGUuYXJjaGl2ZV9sYXN0X2xheW91dF90ZXN0X3Jl
c3VsdHMoc2VsZi5fcGF0Y2gpCisgICAgICAgIHNlY29uZF9yZXN1bHRzX2FyY2hpdmUgPSBzZWxm
Ll9kZWxlZ2F0ZS5hcmNoaXZlX2xhc3RfdGVzdF9yZXN1bHRzKHNlbGYuX3BhdGNoKQogCiAgICAg
ICAgIGlmIHNlbGYuX2J1aWxkX2FuZF90ZXN0X3dpdGhvdXRfcGF0Y2goKToKICAgICAgICAgICAg
ICMgVGhlIGVycm9yIGZyb20gdGhlIHByZXZpb3VzIC5fdGVzdCgpIHJ1biBpcyByZWFsLCByZXBv
cnQgaXQuCiAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXBvcnRfZmFpbHVyZShmaXJzdF9yZXN1
bHRzX2FyY2hpdmUsIGZpcnN0X3Jlc3VsdHMsIGZpcnN0X3NjcmlwdF9lcnJvcikKIAotICAgICAg
ICBjbGVhbl90cmVlX3Jlc3VsdHMgPSBzZWxmLl9kZWxlZ2F0ZS5sYXlvdXRfdGVzdF9yZXN1bHRz
KCkKKyAgICAgICAgY2xlYW5fdHJlZV9yZXN1bHRzID0gc2VsZi5fZGVsZWdhdGUudGVzdF9yZXN1
bHRzKCkKICAgICAgICAgc2VsZi5fZXhwZWN0ZWRfZmFpbHVyZXMuZ3Jvd19leHBlY3RlZF9mYWls
dXJlcyhjbGVhbl90cmVlX3Jlc3VsdHMpCiAKICAgICAgICAgIyBSZS1jaGVjayBpZiB0aGUgb3Jp
Z2luYWwgcmVzdWx0cyBhcmUgbm93IHRvIGJlIGV4cGVjdGVkIHRvIGF2b2lkIGEgZnVsbCByZS10
cnkuCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZWFy
bHl3YXJuaW5nc3lzdGVtLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRz
L2Vhcmx5d2FybmluZ3N5c3RlbS5weQppbmRleCAzN2JjNGI3MmVjZTJmNTlhM2Q3MDRmYmNjYmQw
MzFkZDRjNjgxMGNlLi42MzlmNGQ4ZmM4YjU5NjA1MWU4MTdmNTY1MThlOTNiZjE0NDBmNmU0IDEw
MDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZWFybHl3YXJu
aW5nc3lzdGVtLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9l
YXJseXdhcm5pbmdzeXN0ZW0ucHkKQEAgLTExMiwxMCArMTEyLDEwIEBAIGNsYXNzIEFic3RyYWN0
RWFybHlXYXJuaW5nU3lzdGVtKEFic3RyYWN0UmV2aWV3UXVldWUsIEVhcmx5V2FybmluZ1N5c3Rl
bVRhc2tEZWxlCiAgICAgZGVmIGV4cGVjdGVkX2ZhaWx1cmVzKHNlbGYpOgogICAgICAgICByZXR1
cm4gc2VsZi5fZXhwZWN0ZWRfZmFpbHVyZXMKIAotICAgIGRlZiBsYXlvdXRfdGVzdF9yZXN1bHRz
KHNlbGYpOgorICAgIGRlZiB0ZXN0X3Jlc3VsdHMoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxm
Ll9sYXlvdXRfdGVzdF9yZXN1bHRzX3JlYWRlci5yZXN1bHRzKCkKIAotICAgIGRlZiBhcmNoaXZl
X2xhc3RfbGF5b3V0X3Rlc3RfcmVzdWx0cyhzZWxmLCBwYXRjaCk6CisgICAgZGVmIGFyY2hpdmVf
bGFzdF90ZXN0X3Jlc3VsdHMoc2VsZiwgcGF0Y2gpOgogICAgICAgICByZXR1cm4gc2VsZi5fbGF5
b3V0X3Rlc3RfcmVzdWx0c19yZWFkZXIuYXJjaGl2ZShwYXRjaCkKIAogICAgIGRlZiBidWlsZF9z
dHlsZShzZWxmKToKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21t
YW5kcy9lYXJseXdhcm5pbmdzeXN0ZW1fdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L3Rvb2wvY29tbWFuZHMvZWFybHl3YXJuaW5nc3lzdGVtX3VuaXR0ZXN0LnB5CmluZGV4IDNh
ZGFkNGM1ODVlMzZjZTJhM2NhY2Y5YzhiNGI1ZmZkZWY0MmQ0ZWYuLjlkYmIzOThlZWY3ZDA2ZjVl
ZjM1ZTYwNWVmMTQyZDk5YmY2MDRmZmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdG9vbC9jb21tYW5kcy9lYXJseXdhcm5pbmdzeXN0ZW1fdW5pdHRlc3QucHkKKysrIGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2Vhcmx5d2FybmluZ3N5c3RlbV91bml0
dGVzdC5weQpAQCAtNzMsNyArNzMsNyBAQCBjbGFzcyBFYXJseVdhcm5pbmdTeXRlbVRlc3QoUXVl
dWVzVGVzdCk6CiAgICAgICAgIHNlbGYuYXNzZXJ0X3F1ZXVlX291dHB1dHMoZXdzLCBleHBlY3Rl
ZF9zdGRlcnI9c2VsZi5fZGVmYXVsdF9leHBlY3RlZF9zdGRlcnIoZXdzKSwgb3B0aW9ucz1vcHRp
b25zKQogCiAgICAgZGVmIF90ZXN0X3Rlc3RpbmdfZXdzKHNlbGYsIGV3cyk6Ci0gICAgICAgIGV3
cy5sYXlvdXRfdGVzdF9yZXN1bHRzID0gbGFtYmRhOiBOb25lCisgICAgICAgIGV3cy50ZXN0X3Jl
c3VsdHMgPSBsYW1iZGE6IE5vbmUKICAgICAgICAgZXdzLmJpbmRfdG9fdG9vbChNb2NrVG9vbCgp
KQogICAgICAgICBleHBlY3RlZF9zdGRlcnIgPSBzZWxmLl9kZWZhdWx0X2V4cGVjdGVkX3N0ZGVy
cihld3MpCiAgICAgICAgIGV4cGVjdGVkX3N0ZGVyclsiaGFuZGxlX3NjcmlwdF9lcnJvciJdID0g
IlNjcmlwdEVycm9yIGVycm9yIG1lc3NhZ2VcblxuTU9DSyBvdXRwdXRcbiIKZGlmZiAtLWdpdCBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9xdWV1ZXMucHkgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVldWVzLnB5CmluZGV4IGE1ZTMzNGRhODU3
ZGM2YTlkMDZjNzBhZTBmZjAxYWQ3NmE0MzY2M2MuLjJhZjA4YjcxOGY5Y2U3MjEzYmU2NzcyODQ2
ZDhjMjQ1NjcyZTY3MGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9j
b21tYW5kcy9xdWV1ZXMucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1h
bmRzL3F1ZXVlcy5weQpAQCAtMzE3LDEwICszMTcsMTAgQEAgY2xhc3MgQ29tbWl0UXVldWUoQWJz
dHJhY3RQYXRjaFF1ZXVlLCBTdGVwU2VxdWVuY2VFcnJvckhhbmRsZXIsIENvbW1pdFF1ZXVlVGFz
a0QKICAgICBkZWYgZXhwZWN0ZWRfZmFpbHVyZXMoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxm
Ll9leHBlY3RlZF9mYWlsdXJlcwogCi0gICAgZGVmIGxheW91dF90ZXN0X3Jlc3VsdHMoc2VsZik6
CisgICAgZGVmIHRlc3RfcmVzdWx0cyhzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuX2xheW91
dF90ZXN0X3Jlc3VsdHNfcmVhZGVyLnJlc3VsdHMoKQogCi0gICAgZGVmIGFyY2hpdmVfbGFzdF9s
YXlvdXRfdGVzdF9yZXN1bHRzKHNlbGYsIHBhdGNoKToKKyAgICBkZWYgYXJjaGl2ZV9sYXN0X3Rl
c3RfcmVzdWx0cyhzZWxmLCBwYXRjaCk6CiAgICAgICAgIHJldHVybiBzZWxmLl9sYXlvdXRfdGVz
dF9yZXN1bHRzX3JlYWRlci5hcmNoaXZlKHBhdGNoKQogCiAgICAgZGVmIGJ1aWxkX3N0eWxlKHNl
bGYpOgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1
ZXVlc191bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9x
dWV1ZXNfdW5pdHRlc3QucHkKaW5kZXggYTA4ZDQ1ZjAyMGU0YzA2ZjE2ZTQyZWE5ZTgyNWQzMTA2
N2EwZTRhMy4uMWMyZDU3YjFjMTcwZGJjMzExYjM0ZWQ1NzJlZWRiZDNiYWJiNTBlYiAxMDA2NDQK
LS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1ZXVlc191bml0dGVz
dC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVldWVzX3Vu
aXR0ZXN0LnB5CkBAIC0yMzIsNiArMjMyLDcgQEAgY2xhc3MgQ29tbWl0UXVldWVUZXN0KFF1ZXVl
c1Rlc3QpOgogICAgIGRlZiB0ZXN0X2NvbW1pdF9xdWV1ZShzZWxmKToKICAgICAgICAgdG9vbCA9
IE1vY2tUb29sKCkKICAgICAgICAgdG9vbC5maWxlc3lzdGVtLndyaXRlX3RleHRfZmlsZSgnL21v
Y2stcmVzdWx0cy9mdWxsX3Jlc3VsdHMuanNvbicsICcnKSAgIyBPdGhlcndpc2UgdGhlIGNvbW1p
dC1xdWV1ZSB3aWxsIGhpdCBhIEtleUVycm9yIHRyeWluZyB0byByZWFkIHRoZSByZXN1bHRzIGZy
b20gdGhlIE1vY2tGaWxlU3lzdGVtLgorICAgICAgICB0b29sLmZpbGVzeXN0ZW0ud3JpdGVfdGV4
dF9maWxlKCcvbW9jay1yZXN1bHRzL3dlYmtpdF91bml0X3Rlc3RzX291dHB1dC54bWwnLCAnJykK
ICAgICAgICAgZXhwZWN0ZWRfc3RkZXJyID0gewogICAgICAgICAgICAgImJlZ2luX3dvcmtfcXVl
dWUiOiBzZWxmLl9kZWZhdWx0X2JlZ2luX3dvcmtfcXVldWVfc3RkZXJyKCJjb21taXQtcXVldWUi
KSwKICAgICAgICAgICAgICJuZXh0X3dvcmtfaXRlbSI6ICIiLApAQCAtMzEwLDYgKzMxMSw3IEBA
IE1PQ0s6IHJlbGVhc2Vfd29ya19pdGVtOiBjb21taXQtcXVldWUgMTAwMDAKICAgICBkZWYgdGVz
dF9yb2xsb3V0KHNlbGYpOgogICAgICAgICB0b29sID0gTW9ja1Rvb2wobG9nX2V4ZWN1dGl2ZT1U
cnVlKQogICAgICAgICB0b29sLmZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9maWxlKCcvbW9jay1yZXN1
bHRzL2Z1bGxfcmVzdWx0cy5qc29uJywgJycpICAjIE90aGVyd2lzZSB0aGUgY29tbWl0LXF1ZXVl
IHdpbGwgaGl0IGEgS2V5RXJyb3IgdHJ5aW5nIHRvIHJlYWQgdGhlIHJlc3VsdHMgZnJvbSB0aGUg
TW9ja0ZpbGVTeXN0ZW0uCisgICAgICAgIHRvb2wuZmlsZXN5c3RlbS53cml0ZV90ZXh0X2ZpbGUo
Jy9tb2NrLXJlc3VsdHMvd2Via2l0X3VuaXRfdGVzdHNfb3V0cHV0LnhtbCcsICcnKQogICAgICAg
ICB0b29sLmJ1aWxkYm90LmxpZ2h0X3RyZWVfb25fZmlyZSgpCiAgICAgICAgIGV4cGVjdGVkX3N0
ZGVyciA9IHsKICAgICAgICAgICAgICJiZWdpbl93b3JrX3F1ZXVlIjogc2VsZi5fZGVmYXVsdF9i
ZWdpbl93b3JrX3F1ZXVlX3N0ZGVycigiY29tbWl0LXF1ZXVlIiksCkBAIC0zODEsNiArMzgzLDcg
QEAgTU9DSzogcmVsZWFzZV93b3JrX2l0ZW06IGNvbW1pdC1xdWV1ZSAxMDAwNQogICAgICAgICBx
dWV1ZSA9IFNlY29uZFRob3VnaHRzQ29tbWl0UXVldWUoTW9ja1Rvb2woKSkKICAgICAgICAgcXVl
dWUuYmVnaW5fd29ya19xdWV1ZSgpCiAgICAgICAgIHF1ZXVlLl90b29sLmZpbGVzeXN0ZW0ud3Jp
dGVfdGV4dF9maWxlKCcvbW9jay1yZXN1bHRzL2Z1bGxfcmVzdWx0cy5qc29uJywgJycpICAjIE90
aGVyd2lzZSB0aGUgY29tbWl0LXF1ZXVlIHdpbGwgaGl0IGEgS2V5RXJyb3IgdHJ5aW5nIHRvIHJl
YWQgdGhlIHJlc3VsdHMgZnJvbSB0aGUgTW9ja0ZpbGVTeXN0ZW0uCisgICAgICAgIHF1ZXVlLl90
b29sLmZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9maWxlKCcvbW9jay1yZXN1bHRzL3dlYmtpdF91bml0
X3Rlc3RzX291dHB1dC54bWwnLCAnJykKICAgICAgICAgcXVldWUuX29wdGlvbnMgPSBNb2NrKCkK
ICAgICAgICAgcXVldWUuX29wdGlvbnMucG9ydCA9IE5vbmUKICAgICAgICAgZXhwZWN0ZWRfc3Rk
ZXJyID0gIiIiTU9DSzogdXBkYXRlX3N0YXR1czogY29tbWl0LXF1ZXVlIENsZWFuZWQgd29ya2lu
ZyBkaXJlY3RvcnkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVw
cy9ydW50ZXN0cy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9ydW50ZXN0
cy5weQppbmRleCA3NThlMzZiMDQwZTZhYjk2N2Y3ZDRjOGMzY2VhMTAzZTk1MzBhNjc0Li5hYzU0
OTNiNGU3ZDQ2Yjk2M2EyZjA4NGIyM2FjNWQ3YjZkYWRkNTQyIDEwMDY0NAotLS0gYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvcnVudGVzdHMucHkKKysrIGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS90b29sL3N0ZXBzL3J1bnRlc3RzLnB5CkBAIC0yOSw2ICsyOSw3IEBACiBmcm9t
IHdlYmtpdHB5LnRvb2wuc3RlcHMuYWJzdHJhY3RzdGVwIGltcG9ydCBBYnN0cmFjdFN0ZXAKIGZy
b20gd2Via2l0cHkudG9vbC5zdGVwcy5vcHRpb25zIGltcG9ydCBPcHRpb25zCiBmcm9tIHdlYmtp
dHB5LmNvbW1vbi5zeXN0ZW0uZGVwcmVjYXRlZF9sb2dnaW5nIGltcG9ydCBsb2cKK2Zyb20gd2Vi
a2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IFNjcmlwdEVycm9yCiAKIGNsYXNz
IFJ1blRlc3RzKEFic3RyYWN0U3RlcCk6CiAgICAgIyBGSVhNRTogVGhpcyBrbm93bGVkZ2UgcmVh
bGx5IGJlbG9uZ3MgaW4gdGhlIGNvbW1pdC1xdWV1ZS4KQEAgLTY0LDEwICs2NSwxNiBAQCBjbGFz
cyBSdW5UZXN0cyhBYnN0cmFjdFN0ZXApOgogICAgICAgICAgICAgICAgIGxvZygiUnVubmluZyBK
YXZhU2NyaXB0Q29yZSB0ZXN0cyIpCiAgICAgICAgICAgICAgICAgc2VsZi5fdG9vbC5leGVjdXRp
dmUucnVuX2FuZF90aHJvd19pZl9mYWlsKGphdmFzY3JpcHRjb3JlX3Rlc3RzX2NvbW1hbmQsIHF1
aWV0PVRydWUsIGN3ZD1zZWxmLl90b29sLnNjbSgpLmNoZWNrb3V0X3Jvb3QpCiAKLSAgICAgICAg
ICAgIHdlYmtpdF91bml0X3Rlc3RzX2NvbW1hbmQgPSBzZWxmLl90b29sLnBvcnQoKS5ydW5fd2Vi
a2l0X3VuaXRfdGVzdHNfY29tbWFuZCgpCi0gICAgICAgICAgICBpZiB3ZWJraXRfdW5pdF90ZXN0
c19jb21tYW5kOgotICAgICAgICAgICAgICAgIGxvZygiUnVubmluZyBXZWJLaXQgdW5pdCB0ZXN0
cyIpCi0gICAgICAgICAgICAgICAgc2VsZi5fdG9vbC5leGVjdXRpdmUucnVuX2FuZF90aHJvd19p
Zl9mYWlsKHdlYmtpdF91bml0X3Rlc3RzX2NvbW1hbmQsIGN3ZD1zZWxmLl90b29sLnNjbSgpLmNo
ZWNrb3V0X3Jvb3QpCisgICAgICAgIHdlYmtpdF91bml0X3Rlc3RzX2NvbW1hbmQgPSBzZWxmLl90
b29sLnBvcnQoKS5ydW5fd2Via2l0X3VuaXRfdGVzdHNfY29tbWFuZCgpCisgICAgICAgIGlmIHdl
YmtpdF91bml0X3Rlc3RzX2NvbW1hbmQ6CisgICAgICAgICAgICBsb2coIlJ1bm5pbmcgV2ViS2l0
IHVuaXQgdGVzdHMiKQorICAgICAgICAgICAgYXJncyA9IHdlYmtpdF91bml0X3Rlc3RzX2NvbW1h
bmQKKyAgICAgICAgICAgIGlmIHNlbGYuX29wdGlvbnMubm9uX2ludGVyYWN0aXZlOgorICAgICAg
ICAgICAgICAgIGFyZ3MuYXBwZW5kKCItLWd0ZXN0X291dHB1dD14bWw6JXMvd2Via2l0X3VuaXRf
dGVzdHNfb3V0cHV0LnhtbCIgJSBzZWxmLl90b29sLnBvcnQoKS5yZXN1bHRzX2RpcmVjdG9yeSkK
KyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzZWxmLl90b29sLmV4ZWN1dGl2ZS5y
dW5fYW5kX3Rocm93X2lmX2ZhaWwoYXJncywgY3dkPXNlbGYuX3Rvb2wuc2NtKCkuY2hlY2tvdXRf
cm9vdCkKKyAgICAgICAgICAgIGV4Y2VwdCBTY3JpcHRFcnJvciwgZToKKyAgICAgICAgICAgICAg
ICBsb2coIkVycm9yIHJ1bm5pbmcgd2Via2l0X3VuaXRfdGVzdHM6ICVzIiAlIGUubWVzc2FnZV93
aXRoX291dHB1dCgpKQogCiAgICAgICAgIGxvZygiUnVubmluZyBydW4td2Via2l0LXRlc3RzIikK
ICAgICAgICAgYXJncyA9IHNlbGYuX3Rvb2wucG9ydCgpLnJ1bl93ZWJraXRfdGVzdHNfY29tbWFu
ZCgpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvcnVudGVz
dHNfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvcnVudGVz
dHNfdW5pdHRlc3QucHkKaW5kZXggOTcyZmZiOTc3YzdhNmU2MzI3OTQ4YTZjYjZmMTBjZDMwMzRk
OWE5My4uZmQ4OWNhOTQ2NThlNzcwZjRjM2FhNDYxYTU3NGNhYTQ1NmFjN2VlYiAxMDA2NDQKLS0t
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3J1bnRlc3RzX3VuaXR0ZXN0LnB5
CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9ydW50ZXN0c191bml0dGVz
dC5weQpAQCAtMzMsMTIgKzMzLDE0IEBAIGZyb20gd2Via2l0cHkudG9vbC5tb2NrdG9vbCBpbXBv
cnQgTW9ja09wdGlvbnMsIE1vY2tUb29sCiBmcm9tIHdlYmtpdHB5LnRvb2wuc3RlcHMucnVudGVz
dHMgaW1wb3J0IFJ1blRlc3RzCiAKIGNsYXNzIFJ1blRlc3RzVGVzdCh1bml0dGVzdC5UZXN0Q2Fz
ZSk6Ci0gICAgZGVmIHRlc3Rfbm9fdW5pdF90ZXN0cyhzZWxmKToKKyAgICBkZWYgdGVzdF93ZWJr
aXRfcnVuX3VuaXRfdGVzdHMoc2VsZik6CiAgICAgICAgIHRvb2wgPSBNb2NrVG9vbChsb2dfZXhl
Y3V0aXZlPVRydWUpCiAgICAgICAgIHRvb2wuX2RlcHJlY2F0ZWRfcG9ydC5ydW5fcHl0aG9uX3Vu
aXR0ZXN0c19jb21tYW5kID0gbGFtYmRhOiBOb25lCiAgICAgICAgIHRvb2wuX2RlcHJlY2F0ZWRf
cG9ydC5ydW5fcGVybF91bml0dGVzdHNfY29tbWFuZCA9IGxhbWJkYTogTm9uZQogICAgICAgICBz
dGVwID0gUnVuVGVzdHModG9vbCwgTW9ja09wdGlvbnModGVzdD1UcnVlLCBub25faW50ZXJhY3Rp
dmU9VHJ1ZSwgcXVpZXQ9RmFsc2UpKQotICAgICAgICBleHBlY3RlZF9zdGRlcnIgPSAiIiJSdW5u
aW5nIHJ1bi13ZWJraXQtdGVzdHMKKyAgICAgICAgZXhwZWN0ZWRfc3RkZXJyID0gIiIiUnVubmlu
ZyBXZWJLaXQgdW5pdCB0ZXN0cworTU9DSyBydW5fYW5kX3Rocm93X2lmX2ZhaWw6IFsnbW9jay1y
dW4td2Via2l0LXVuaXQtdGVzdHMnLCAnLS1ndGVzdF9vdXRwdXQ9eG1sOi9tb2NrLXJlc3VsdHMv
d2Via2l0X3VuaXRfdGVzdHNfb3V0cHV0LnhtbCddLCBjd2Q9L21vY2stY2hlY2tvdXQKK1J1bm5p
bmcgcnVuLXdlYmtpdC10ZXN0cwogTU9DSyBydW5fYW5kX3Rocm93X2lmX2ZhaWw6IFsnbW9jay1y
dW4td2Via2l0LXRlc3RzJywgJy0tbm8tbmV3LXRlc3QtcmVzdWx0cycsICctLW5vLWxhdW5jaC1z
YWZhcmknLCAnLS1za2lwLWZhaWxpbmctdGVzdHMnLCAnLS1leGl0LWFmdGVyLW4tZmFpbHVyZXM9
MzAnLCAnLS1yZXN1bHRzLWRpcmVjdG9yeT0vbW9jay1yZXN1bHRzJywgJy0tcHJpbnQ9YWN0dWFs
LGNvbmZpZyxleHBlY3RlZCxtaXNjLHNsb3dlc3QsdW5leHBlY3RlZCx1bmV4cGVjdGVkLXJlc3Vs
dHMnXSwgY3dkPS9tb2NrLWNoZWNrb3V0CiAiIiIKICAgICAgICAgT3V0cHV0Q2FwdHVyZSgpLmFz
c2VydF9vdXRwdXRzKHNlbGYsIHN0ZXAucnVuLCBbe31dLCBleHBlY3RlZF9zdGRlcnI9ZXhwZWN0
ZWRfc3RkZXJyKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136065</attachid>
            <date>2012-04-06 14:15:14 -0700</date>
            <delta_ts>2012-04-09 00:45:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83329-20120406141513.patch</filename>
            <type>text/plain</type>
            <size>39274</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzMTQ0CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMGUwYzQyNjY1NzRlZjE3NzExMjdiNTgzOTYyMjljNDVm
NTJiNGNiMi4uMjBiMTUwYzQ3NGQxNzE0ZTRlMDdjYWU4ZmYwN2ViNWY3NGU1MDUyZSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2
IEBACisyMDEyLTA0LTA1ICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgRW5hYmxlIHdlYmtpdF91bml0X3Rlc3RzIGZvciBjb21taXQgcXVldWUgYW5kIEVX
UyB3aGlsZSB0cmFja2luZyBmYWlsdXJlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODMzMjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUaGlzIGFkZHMgYSBzdGVwIHRvIHBhcnNlIFhNTCBvdXRwdXQgZnJv
bSB3ZWJraXRfdW5pdF90ZXN0cyBhbmQgY29uc2lkZXIgcmVncmVzc2lvbnMgaW4gdGhlIFBhdGNo
QW5hbHlzaXNUYXNrIHNvCisgICAgICAgIHRoZSBjb21taXQgcXVldWUgYW5kIEVXUyBjYW4gcmVq
ZWN0IHBhdGNoZXMgdGhhdCBjYXVzZSByZWdyZXNzaW9ucy4KKworICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvY29tbW9uL2NvbmZpZy9wb3J0cy5weToKKyAgICAgICAgKENocm9taXVtUG9ydC5y
dW5fd2Via2l0X3VuaXRfdGVzdHNfY29tbWFuZCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9jb21tb24vY29uZmlnL3BvcnRzX21vY2sucHk6CisgICAgICAgIChNb2NrUG9ydC51bml0X3Rl
c3RzX3Jlc3VsdHNfcGF0aCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0
L2xheW91dHRlc3RyZXN1bHRzLnB5OgorICAgICAgICAoTGF5b3V0VGVzdFJlc3VsdHMuX19pbml0
X18pOgorICAgICAgICAoTGF5b3V0VGVzdFJlc3VsdHMuZmFpbGluZ190ZXN0cyk6CisgICAgICAg
IChMYXlvdXRUZXN0UmVzdWx0cyk6CisgICAgICAgIChMYXlvdXRUZXN0UmVzdWx0cy5hZGRfdW5p
dF90ZXN0X2ZhaWx1cmVzKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQv
dW5pdHRlc3RyZXN1bHRzLnB5OiBDb3BpZWQgZnJvbSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rv
b2wvc3RlcHMvcnVudGVzdHNfdW5pdHRlc3QucHkuCisgICAgICAgIChVbml0VGVzdFJlc3VsdHMp
OgorICAgICAgICAoVW5pdFRlc3RSZXN1bHRzLnJlc3VsdHNfZnJvbV9zdHJpbmcpOgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC91bml0dGVzdHJlc3VsdHNfdW5pdHRlc3Qu
cHk6IEFkZGVkLgorICAgICAgICAoVW5pdFRlc3RSZXN1bHRzVGVzdCk6CisgICAgICAgIChVbml0
VGVzdFJlc3VsdHNUZXN0LnRlc3Rfbm9zdHJpbmcpOgorICAgICAgICAoVW5pdFRlc3RSZXN1bHRz
VGVzdC50ZXN0X2VtcHR5c3RyaW5nKToKKyAgICAgICAgKFVuaXRUZXN0UmVzdWx0c1Rlc3QudGVz
dF9ub2ZhaWx1cmVzKToKKyAgICAgICAgKHRlc3Rfb25lZmFpbHVyZSk6CisgICAgICAgICh0ZXN0
X211bHRpcGxlX2ZhaWx1cmVzX3Blcl90ZXN0KToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L3Rvb2wvYm90L2NvbW1pdHF1ZXVldGFza191bml0dGVzdC5weToKKyAgICAgICAgKE1vY2tDb21t
aXRRdWV1ZS50ZXN0X3Jlc3VsdHMpOgorICAgICAgICAoTW9ja0NvbW1pdFF1ZXVlLmFyY2hpdmVf
bGFzdF90ZXN0X3Jlc3VsdHMpOgorICAgICAgICAoRmFpbGluZ1Rlc3RDb21taXRRdWV1ZS50ZXN0
X3Jlc3VsdHMpOgorICAgICAgICAodGVzdF9mbGFreV90ZXN0X2ZhaWx1cmUpOgorICAgICAgICAo
dGVzdF9mYWlsZWRfYXJjaGl2ZSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2Jv
dC9sYXlvdXR0ZXN0cmVzdWx0c3JlYWRlci5weToKKyAgICAgICAgKExheW91dFRlc3RSZXN1bHRz
UmVhZGVyLl9jcmVhdGVfdW5pdF90ZXN0X3Jlc3VsdHMpOgorICAgICAgICAoTGF5b3V0VGVzdFJl
c3VsdHNSZWFkZXIucmVzdWx0cyk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2Jv
dC9sYXlvdXR0ZXN0cmVzdWx0c3JlYWRlcl91bml0dGVzdC5weToKKyAgICAgICAgKExheW91dFRl
c3RSZXN1bHRzUmVhZGVyVGVzdC50ZXN0X21pc3NpbmdfbGF5b3V0X3Rlc3RfcmVzdWx0cyk6Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9wYXRjaGFuYWx5c2lzdGFzay5weToK
KyAgICAgICAgKFBhdGNoQW5hbHlzaXNUYXNrRGVsZWdhdGUudGVzdF9yZXN1bHRzKToKKyAgICAg
ICAgKFBhdGNoQW5hbHlzaXNUYXNrRGVsZWdhdGUuYXJjaGl2ZV9sYXN0X3Rlc3RfcmVzdWx0cyk6
CisgICAgICAgIChQYXRjaEFuYWx5c2lzVGFzay5fdGVzdCk6CisgICAgICAgIChQYXRjaEFuYWx5
c2lzVGFzay5fYnVpbGRfYW5kX3Rlc3Rfd2l0aG91dF9wYXRjaCk6CisgICAgICAgIChQYXRjaEFu
YWx5c2lzVGFzay5fdGVzdF9wYXRjaCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29s
L2NvbW1hbmRzL2Vhcmx5d2FybmluZ3N5c3RlbS5weToKKyAgICAgICAgKEFic3RyYWN0RWFybHlX
YXJuaW5nU3lzdGVtLnRlc3RfcmVzdWx0cyk6CisgICAgICAgIChBYnN0cmFjdEVhcmx5V2Fybmlu
Z1N5c3RlbS5hcmNoaXZlX2xhc3RfdGVzdF9yZXN1bHRzKToKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L3Rvb2wvY29tbWFuZHMvZWFybHl3YXJuaW5nc3lzdGVtX3VuaXR0ZXN0LnB5OgorICAg
ICAgICAoRWFybHlXYXJuaW5nU3l0ZW1UZXN0Ll90ZXN0X3Rlc3RpbmdfZXdzKToKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVldWVzLnB5OgorICAgICAgICAoQ29t
bWl0UXVldWUudGVzdF9yZXN1bHRzKToKKyAgICAgICAgKENvbW1pdFF1ZXVlLmFyY2hpdmVfbGFz
dF90ZXN0X3Jlc3VsdHMpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5k
cy9xdWV1ZXNfdW5pdHRlc3QucHk6CisgICAgICAgIChDb21taXRRdWV1ZVRlc3QudGVzdF9jb21t
aXRfcXVldWUpOgorICAgICAgICAodGVzdF9yb2xsb3V0KToKKyAgICAgICAgKHRlc3RfbWFudWFs
X3JlamVjdF9kdXJpbmdfcHJvY2Vzc2luZyk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90
b29sL3N0ZXBzL3J1bnRlc3RzLnB5OgorICAgICAgICAoUnVuVGVzdHMucnVuKToKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvcnVudGVzdHNfdW5pdHRlc3QucHk6CisgICAg
ICAgIChSdW5UZXN0c1Rlc3QudGVzdF93ZWJraXRfcnVuX3VuaXRfdGVzdHMpOgorCiAyMDEyLTA0
LTAzICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIEkgcmVhbGx5
IGhvcGUgdGhpcyBpcyB0aGUgbGFzdCBidWlsZCBmaXguIEFwcGFyZW50bHkgZXhlYyBkb2Vzbid0
IHF1aXRlIGFyZ3VtZW50cyB3aXRoCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9jb25maWcvcG9ydHMucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9j
b25maWcvcG9ydHMucHkKaW5kZXggNGIzZDkwYTFhN2MxNzI0MzgyZmE4MjllYTIzY2E1ZDk2YWMy
NGM2OS4uOGRkZmEyOGFhMDNmY2U4OGZlZDE3M2Q0ZGNlZTMwZGY2MDI4MjA4MyAxMDA2NDQKLS0t
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY29uZmlnL3BvcnRzLnB5CisrKyBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy9wb3J0cy5weQpAQCAtMTgzLDYgKzE4
Myw5IEBAIGNsYXNzIENocm9taXVtUG9ydChEZXByZWNhdGVkUG9ydCk6CiAgICAgICAgIGNvbW1h
bmQuYXBwZW5kKCItLXNraXAtZmFpbGluZy10ZXN0cyIpCiAgICAgICAgIHJldHVybiBjb21tYW5k
CiAKKyAgICBkZWYgcnVuX3dlYmtpdF91bml0X3Rlc3RzX2NvbW1hbmQoc2VsZik6CisgICAgICAg
IHJldHVybiBzZWxmLnNjcmlwdF9zaGVsbF9jb21tYW5kKCJydW4tY2hyb21pdW0td2Via2l0LXVu
aXQtdGVzdHMiKQorCiAgICAgZGVmIHJ1bl9qYXZhc2NyaXB0Y29yZV90ZXN0c19jb21tYW5kKHNl
bGYpOgogICAgICAgICByZXR1cm4gTm9uZQogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9jb25maWcvcG9ydHNfbW9jay5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvY29tbW9uL2NvbmZpZy9wb3J0c19tb2NrLnB5CmluZGV4IGQ2M2VmZDJjNmJlYzllYjQ0MDQ2
YTBiODNkZTNiMmUzNWI1OTY0YzUuLjFkMTQzMTExNTU5MWYwMThlYTRkZDA0MDBlMWExY2ZiNjNk
MTRlMDUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy9w
b3J0c19tb2NrLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy9w
b3J0c19tb2NrLnB5CkBAIC0zNiw2ICszNiw5IEBAIGNsYXNzIE1vY2tQb3J0KG9iamVjdCk6CiAg
ICAgZGVmIGxheW91dF90ZXN0c19yZXN1bHRzX3BhdGgoc2VsZik6CiAgICAgICAgIHJldHVybiAi
L21vY2stcmVzdWx0cy9mdWxsX3Jlc3VsdHMuanNvbiIKIAorICAgIGRlZiB1bml0X3Rlc3RzX3Jl
c3VsdHNfcGF0aChzZWxmKToKKyAgICAgICAgcmV0dXJuICIvbW9jay1yZXN1bHRzL3dlYmtpdF91
bml0X3Rlc3RzX291dHB1dC54bWwiCisKICAgICBkZWYgY2hlY2tfd2Via2l0X3N0eWxlX2NvbW1h
bmQoc2VsZik6CiAgICAgICAgIHJldHVybiBbIm1vY2stY2hlY2std2Via2l0LXN0eWxlIl0KIApk
aWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2xheW91dHRlc3Ry
ZXN1bHRzLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2xheW91dHRlc3Ry
ZXN1bHRzLnB5CmluZGV4IDA1ZjgyMTVkMGI4YTFjYjhjMTY1OWVhNDlkYjcxMjk5OGI3OTViY2Mu
LmJkNzIxMWNjYWQ3NzkxMzgzZTI4M2IyYTJiZjhlMjA2NDBhMDRkN2QgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9sYXlvdXR0ZXN0cmVzdWx0cy5weQorKysg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvbGF5b3V0dGVzdHJlc3VsdHMucHkK
QEAgLTE0NCw2ICsxNDQsNyBAQCBjbGFzcyBMYXlvdXRUZXN0UmVzdWx0cyhvYmplY3QpOgogICAg
IGRlZiBfX2luaXRfXyhzZWxmLCB0ZXN0X3Jlc3VsdHMpOgogICAgICAgICBzZWxmLl90ZXN0X3Jl
c3VsdHMgPSB0ZXN0X3Jlc3VsdHMKICAgICAgICAgc2VsZi5fZmFpbHVyZV9saW1pdF9jb3VudCA9
IE5vbmUKKyAgICAgICAgc2VsZi5fdW5pdF90ZXN0X2ZhaWx1cmVzID0gW10KIAogICAgICMgRklY
TUU6IHJ1bi13ZWJraXQtdGVzdHMgc2hvdWxkIHN0b3JlIHRoZSAtLWV4aXQtYWZ0ZXItTi1mYWls
dXJlcyB2YWx1ZQogICAgICMgKG9yIHNvbWUgaW5kaWNhdGlvbiBvZiBlYXJseSBleGl0KSBzb21l
d2hlcmUgaW4gdGhlIHJlc3VsdHMuaHRtbC9yZXN1bHRzLmpzb24KQEAgLTE3Miw0ICsxNzMsNyBA
QCBjbGFzcyBMYXlvdXRUZXN0UmVzdWx0cyhvYmplY3QpOgogICAgICAgICByZXR1cm4gc2VsZi5y
ZXN1bHRzX21hdGNoaW5nX2ZhaWx1cmVfdHlwZXMoZmFpbHVyZV90eXBlcykKIAogICAgIGRlZiBm
YWlsaW5nX3Rlc3RzKHNlbGYpOgotICAgICAgICByZXR1cm4gW3Jlc3VsdC50ZXN0X25hbWUgZm9y
IHJlc3VsdCBpbiBzZWxmLmZhaWxpbmdfdGVzdF9yZXN1bHRzKCldCisgICAgICAgIHJldHVybiBb
cmVzdWx0LnRlc3RfbmFtZSBmb3IgcmVzdWx0IGluIHNlbGYuZmFpbGluZ190ZXN0X3Jlc3VsdHMo
KV0gKyBzZWxmLl91bml0X3Rlc3RfZmFpbHVyZXMKKworICAgIGRlZiBhZGRfdW5pdF90ZXN0X2Zh
aWx1cmVzKHNlbGYsIHVuaXRfdGVzdF9yZXN1bHRzKToKKyAgICAgICAgc2VsZi5fdW5pdF90ZXN0
X2ZhaWx1cmVzID0gdW5pdF90ZXN0X3Jlc3VsdHMKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvY29tbW9uL25ldC91bml0dGVzdHJlc3VsdHMucHkgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9uZXQvdW5pdHRlc3RyZXN1bHRzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJiODJiMDUw
MzMyZmQ1ZjcyZGEwNmZlNTVhMTQ3OTBiYTQ1ZjUwNmYKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvdW5pdHRlc3RyZXN1bHRzLnB5CkBAIC0wLDAg
KzEsNTAgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDEyLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlz
dHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IHhtbC5kb20ubWluaWRvbQorCitm
cm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZGVwcmVjYXRlZF9sb2dnaW5nIGltcG9ydCBsb2cK
KworCitjbGFzcyBVbml0VGVzdFJlc3VsdHMob2JqZWN0KToKKyAgICBAY2xhc3NtZXRob2QKKyAg
ICBkZWYgcmVzdWx0c19mcm9tX3N0cmluZyhzZWxmLCBzdHJpbmcpOgorICAgICAgICBpZiBub3Qg
c3RyaW5nOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgdHJ5OgorICAgICAgICAg
ICAgZG9tID0geG1sLmRvbS5taW5pZG9tLnBhcnNlU3RyaW5nKHN0cmluZykKKyAgICAgICAgICAg
IGZhaWx1cmVzID0gW10KKyAgICAgICAgICAgIGZvciB0ZXN0Y2FzZSBpbiBkb20uZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoJ3Rlc3RjYXNlJyk6CisgICAgICAgICAgICAgICAgaWYgdGVzdGNhc2UuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoJ2ZhaWx1cmUnKS5sZW5ndGggIT0gMDoKKyAgICAgICAgICAgICAg
ICAgICAgdGVzdG5hbWUgPSB0ZXN0Y2FzZS5nZXRBdHRyaWJ1dGUoJ25hbWUnKQorICAgICAgICAg
ICAgICAgICAgICBjbGFzc25hbWUgPSB0ZXN0Y2FzZS5nZXRBdHRyaWJ1dGUoJ2NsYXNzbmFtZScp
CisgICAgICAgICAgICAgICAgICAgIGZhaWx1cmVzLmFwcGVuZCgiJXMuJXMiICUgKGNsYXNzbmFt
ZSwgdGVzdG5hbWUpKQorICAgICAgICAgICAgcmV0dXJuIGZhaWx1cmVzCisgICAgICAgIGV4Y2Vw
dCB4bWwucGFyc2Vycy5leHBhdC5FeHBhdEVycm9yLCBlOgorICAgICAgICAgICAgbG9nKCJYTUwg
ZXJyb3IgJXMgcGFyc2luZyB1bml0IHRlc3Qgb3V0cHV0IiAlIHN0cihlKSkKKyAgICAgICAgICAg
IHJldHVybiBOb25lCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9u
ZXQvdW5pdHRlc3RyZXN1bHRzX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9j
b21tb24vbmV0L3VuaXR0ZXN0cmVzdWx0c191bml0dGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mODg1MjA2
MmM2NWY0Yjg0ZjQwMGUxMDExZGM2NDM1NjI5MTNkMDJjCi0tLSAvZGV2L251bGwKKysrIGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L3VuaXR0ZXN0cmVzdWx0c191bml0dGVzdC5w
eQpAQCAtMCwwICsxLDk4IEBACisjIENvcHlyaWdodCAoYykgMjAxMiwgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0
OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCB1bml0dGVzdAor
Citmcm9tIHVuaXR0ZXN0cmVzdWx0cyBpbXBvcnQgVW5pdFRlc3RSZXN1bHRzCisKKworY2xhc3Mg
VW5pdFRlc3RSZXN1bHRzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9u
b3N0cmluZyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoTm9uZSwgVW5pdFRlc3RS
ZXN1bHRzLnJlc3VsdHNfZnJvbV9zdHJpbmcoTm9uZSkpCisKKyAgICBkZWYgdGVzdF9lbXB0eXN0
cmluZyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoTm9uZSwgVW5pdFRlc3RSZXN1
bHRzLnJlc3VsdHNfZnJvbV9zdHJpbmcoIiIpKQorCisgICAgZGVmIHRlc3Rfbm9mYWlsdXJlcyhz
ZWxmKToKKyAgICAgICAgbm9fZmFpbHVyZXNfeG1sID0gIiIiPD94bWwgdmVyc2lvbj0iMS4wIiBl
bmNvZGluZz0iVVRGLTgiPz4KKzx0ZXN0c3VpdGVzIHRlc3RzPSIzIiBmYWlsdXJlcz0iMCIgZGlz
YWJsZWQ9IjAiIGVycm9ycz0iMCIgdGltZT0iMTEuMzUiIG5hbWU9IkFsbFRlc3RzIj4KKyAgPHRl
c3RzdWl0ZSBuYW1lPSJSZW5kZXJUYWJsZUNlbGxEZWF0aFRlc3QiIHRlc3RzPSIzIiBmYWlsdXJl
cz0iMCIgZGlzYWJsZWQ9IjAiIGVycm9ycz0iMCIgdGltZT0iMC42NzciPgorICAgIDx0ZXN0Y2Fz
ZSBuYW1lPSJDYW5TZXRDb2x1bW4iIHN0YXR1cz0icnVuIiB0aW1lPSIwLjE2OCIgY2xhc3NuYW1l
PSJSZW5kZXJUYWJsZUNlbGxEZWF0aFRlc3QiIC8+CisgICAgPHRlc3RjYXNlIG5hbWU9IkNyYXNo
SWZTZXR0aW5nVW5zZXRDb2x1bW5JbmRleCIgc3RhdHVzPSJydW4iIHRpbWU9IjAuMTI5IiBjbGFz
c25hbWU9IlJlbmRlclRhYmxlQ2VsbERlYXRoVGVzdCIgLz4KKyAgICA8dGVzdGNhc2UgbmFtZT0i
Q3Jhc2hJZlNldHRpbmdVbnNldFJvd0luZGV4IiBzdGF0dXM9InJ1biIgdGltZT0iMC4xMjMiIGNs
YXNzbmFtZT0iUmVuZGVyVGFibGVDZWxsRGVhdGhUZXN0IiAvPgorICA8L3Rlc3RzdWl0ZT4KKzwv
dGVzdHN1aXRlcz4iIiIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoW10sIFVuaXRUZXN0UmVz
dWx0cy5yZXN1bHRzX2Zyb21fc3RyaW5nKG5vX2ZhaWx1cmVzX3htbCkpCisKKyAgICBkZWYgdGVz
dF9vbmVmYWlsdXJlKHNlbGYpOgorICAgICAgICBvbmVfZmFpbHVyZV94bWwgPSAiIiI8P3htbCB2
ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHRlc3RzdWl0ZXMgdGVzdHM9IjQiIGZh
aWx1cmVzPSIxIiBkaXNhYmxlZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIxMS4zNSIgbmFtZT0iQWxs
VGVzdHMiPgorICA8dGVzdHN1aXRlIG5hbWU9IlJlbmRlclRhYmxlQ2VsbERlYXRoVGVzdCIgdGVz
dHM9IjQiIGZhaWx1cmVzPSIxIiBkaXNhYmxlZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIwLjY3NyI+
CisgICAgPHRlc3RjYXNlIG5hbWU9IkNhblNldENvbHVtbiIgc3RhdHVzPSJydW4iIHRpbWU9IjAu
MTY4IiBjbGFzc25hbWU9IlJlbmRlclRhYmxlQ2VsbERlYXRoVGVzdCIgLz4KKyAgICA8dGVzdGNh
c2UgbmFtZT0iQ3Jhc2hJZlNldHRpbmdVbnNldENvbHVtbkluZGV4IiBzdGF0dXM9InJ1biIgdGlt
ZT0iMC4xMjkiIGNsYXNzbmFtZT0iUmVuZGVyVGFibGVDZWxsRGVhdGhUZXN0IiAvPgorICAgIDx0
ZXN0Y2FzZSBuYW1lPSJDcmFzaElmU2V0dGluZ1Vuc2V0Um93SW5kZXgiIHN0YXR1cz0icnVuIiB0
aW1lPSIwLjEyMyIgY2xhc3NuYW1lPSJSZW5kZXJUYWJsZUNlbGxEZWF0aFRlc3QiIC8+CisgICAg
PHRlc3RjYXNlIG5hbWU9IkZBSUxTX0RpdkF1dG9ab29tUGFyYW1zVGVzdCIgc3RhdHVzPSJydW4i
IHRpbWU9IjAuMDIiIGNsYXNzbmFtZT0iV2ViRnJhbWVUZXN0Ij4KKyAgICAgIDxmYWlsdXJlIG1l
c3NhZ2U9IlZhbHVlIG9mOiBzY2FsZSYjeDBBOyAgQWN0dWFsOiA0JiN4MEE7RXhwZWN0ZWQ6IDEi
IHR5cGU9IiI+PCFbQ0RBVEFbLi4vLi4vU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJG
cmFtZVRlc3QuY3BwOjE5MQorVmFsdWUgb2Y6IHNjYWxlCisgIEFjdHVhbDogNAorRXhwZWN0ZWQ6
IDFdXT48L2ZhaWx1cmU+CisgICAgPC90ZXN0Y2FzZT4KKyAgPC90ZXN0c3VpdGU+Cis8L3Rlc3Rz
dWl0ZXM+IiIiCisgICAgICAgIGV4cGVjdGVkID0gWyJXZWJGcmFtZVRlc3QuRkFJTFNfRGl2QXV0
b1pvb21QYXJhbXNUZXN0Il0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZXhwZWN0ZWQsIFVu
aXRUZXN0UmVzdWx0cy5yZXN1bHRzX2Zyb21fc3RyaW5nKG9uZV9mYWlsdXJlX3htbCkpCisKKyAg
ICBkZWYgdGVzdF9tdWx0aXBsZV9mYWlsdXJlc19wZXJfdGVzdChzZWxmKToKKyAgICAgICAgbXVs
dGlwbGVfZmFpbHVyZXNfcGVyX3Rlc3RfeG1sID0gIiIiPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNv
ZGluZz0iVVRGLTgiPz4KKzx0ZXN0c3VpdGVzIHRlc3RzPSI0IiBmYWlsdXJlcz0iMiIgZGlzYWJs
ZWQ9IjAiIGVycm9ycz0iMCIgdGltZT0iMTEuMzUiIG5hbWU9IkFsbFRlc3RzIj4KKyAgPHRlc3Rz
dWl0ZSBuYW1lPSJVbml0VGVzdHMiIHRlc3RzPSI0IiBmYWlsdXJlcz0iMiIgZGlzYWJsZT0iMCIg
ZXJyb3JzPSIwIiB0aW1lPSIxMC4wIj4KKyAgICA8dGVzdGNhc2UgbmFtZT0iVGVzdE9uZSIgc3Rh
dHVzPSJydW4iIHRpbWU9IjAuNSIgY2xhc3NuYW1lPSJDbGFzc09uZSI+CisgICAgICA8ZmFpbHVy
ZSBtZXNzYWdlPSJWYWx1ZSBvZjogcGkmI3gwQTsgIEFjdHVhbDogMyYjeDBBO0V4cGVjdGVkOiAz
LjE0IiB0eXBlPSIiPjwhW0NEQVRBWy4uLy4uL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q2xhc3NPbmVUZXN0LmNwcDo0MgorVmFsdWUgb2Y6IHBpCisgIEFjdHVhbDogMworRXhwZWN0ZWQ6
IDMuMTRdXT48L2ZhaWx1cmU+CisgICAgPC90ZXN0Y2FzZT4KKyAgICA8dGVzdGNhc2UgbmFtZT0i
VGVzdFR3byIgc3RhdHVzPSJydW4iIHRpbWU9IjAuNSIgY2xhc3NuYW1lPSJDbGFzc1R3byI+Cisg
ICAgICA8ZmFpbHVyZSBtZXNzYWdlPSJWYWx1ZSBvZjogZSYjeDBBOyAgQWN0dWFsOiAyJiN4MEE7
RXhwZWN0ZWQ6IDIuNzEiIHR5cGU9IiI+PCFbQ0RBVEFbLi4vLi4vU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9DbGFzc1R3b1Rlc3QuY3BwOjMwCitWYWx1ZSBvZjogZQorICBBY3R1YWw6IDIK
K0V4cGVjdGVkOiAyLjcxXV0+PC9mYWlsdXJlPgorICAgICAgPGZhaWx1cmUgbWVzc2FnZT0iVmFs
dWUgb2Y6IHRhdSYjeDBBOyAgQWN0dWFsOiA2JiN4MEE7RXhwZWN0ZWQ6IDYuMjgiIHR5cGU9IiI+
PCFbQ0RBVEFbLi4vLi4vU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DbGFzc1R3b1Rlc3Qu
Y3BwOjU1CitWYWx1ZSBvZjogdGF1CisgIEFjdHVhbDogNgorRXhwZWN0ZWQ6IDYuMjhdXT48L2Zh
aWx1cmU+CisgICAgPC90ZXN0Y2FzZT4KKyAgPC90ZXN0c3VpdGU+Cis8L3Rlc3RzdWl0ZXM+IiIi
CisgICAgICAgIGV4cGVjdGVkID0gWyJDbGFzc09uZS5UZXN0T25lIiwgIkNsYXNzVHdvLlRlc3RU
d28iXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhleHBlY3RlZCwgVW5pdFRlc3RSZXN1bHRz
LnJlc3VsdHNfZnJvbV9zdHJpbmcobXVsdGlwbGVfZmFpbHVyZXNfcGVyX3Rlc3RfeG1sKSkKKwor
CitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0t
Z2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9jb21taXRxdWV1ZXRhc2tfdW5p
dHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2NvbW1pdHF1ZXVldGFz
a191bml0dGVzdC5weQppbmRleCA4OTUxZGNiMGQ2YWMyZmYxMjliMDQyODJjMjY4NjI5ZWUxNWY1
NTEzLi4wY2VmOGM4NjdiMjBhY2MwNTdjYjNmOGVlMmE0ZTIzODVlMjJiNzM5IDEwMDY0NAotLS0g
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2NvbW1pdHF1ZXVldGFza191bml0dGVz
dC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2NvbW1pdHF1ZXVldGFz
a191bml0dGVzdC5weQpAQCAtNjgsMTUgKzY4LDE1IEBAIGNsYXNzIE1vY2tDb21taXRRdWV1ZShD
b21taXRRdWV1ZVRhc2tEZWxlZ2F0ZSk6CiAgICAgZGVmIGV4cGVjdGVkX2ZhaWx1cmVzKHNlbGYp
OgogICAgICAgICByZXR1cm4gRXhwZWN0ZWRGYWlsdXJlcygpCiAKLSAgICBkZWYgbGF5b3V0X3Rl
c3RfcmVzdWx0cyhzZWxmKToKKyAgICBkZWYgdGVzdF9yZXN1bHRzKHNlbGYpOgogICAgICAgICBy
ZXR1cm4gTm9uZQogCiAgICAgZGVmIHJlcG9ydF9mbGFreV90ZXN0cyhzZWxmLCBwYXRjaCwgZmxh
a3lfcmVzdWx0cywgcmVzdWx0c19hcmNoaXZlKToKICAgICAgICAgZmxha3lfdGVzdHMgPSBbcmVz
dWx0LmZpbGVuYW1lIGZvciByZXN1bHQgaW4gZmxha3lfcmVzdWx0c10KICAgICAgICAgbG9nKCJy
ZXBvcnRfZmxha3lfdGVzdHM6IHBhdGNoPSclcycgZmxha3lfdGVzdHM9JyVzJyBhcmNoaXZlPScl
cyciICUgKHBhdGNoLmlkKCksIGZsYWt5X3Rlc3RzLCByZXN1bHRzX2FyY2hpdmUuZmlsZW5hbWUp
KQogCi0gICAgZGVmIGFyY2hpdmVfbGFzdF9sYXlvdXRfdGVzdF9yZXN1bHRzKHNlbGYsIHBhdGNo
KToKLSAgICAgICAgbG9nKCJhcmNoaXZlX2xhc3RfbGF5b3V0X3Rlc3RfcmVzdWx0czogcGF0Y2g9
JyVzJyIgJSBwYXRjaC5pZCgpKQorICAgIGRlZiBhcmNoaXZlX2xhc3RfdGVzdF9yZXN1bHRzKHNl
bGYsIHBhdGNoKToKKyAgICAgICAgbG9nKCJhcmNoaXZlX2xhc3RfdGVzdF9yZXN1bHRzOiBwYXRj
aD0nJXMnIiAlIHBhdGNoLmlkKCkpCiAgICAgICAgIGFyY2hpdmUgPSBNb2NrKCkKICAgICAgICAg
YXJjaGl2ZS5maWxlbmFtZSA9ICJtb2NrLWFyY2hpdmUtJXMuemlwIiAlIHBhdGNoLmlkKCkKICAg
ICAgICAgcmV0dXJuIGFyY2hpdmUKQEAgLTEwMiw4ICsxMDIsOCBAQCBjbGFzcyBGYWlsaW5nVGVz
dENvbW1pdFF1ZXVlKE1vY2tDb21taXRRdWV1ZSk6CiAgICAgZGVmIF9tb2NrX3Rlc3RfcmVzdWx0
KHNlbGYsIHRlc3RuYW1lKToKICAgICAgICAgcmV0dXJuIHRlc3RfcmVzdWx0cy5UZXN0UmVzdWx0
KHRlc3RuYW1lLCBbdGVzdF9mYWlsdXJlcy5GYWlsdXJlVGV4dE1pc21hdGNoKCldKQogCi0gICAg
ZGVmIGxheW91dF90ZXN0X3Jlc3VsdHMoc2VsZik6Ci0gICAgICAgICMgRG9lc24ndCBtYWtlIHNl
bnNlIHRvIGFzayBmb3IgdGhlIGxheW91dF90ZXN0X3Jlc3VsdHMgdW50aWwgdGhlIHRlc3RzIGhh
dmUgcnVuIGF0IGxlYXN0IG9uY2UuCisgICAgZGVmIHRlc3RfcmVzdWx0cyhzZWxmKToKKyAgICAg
ICAgIyBEb2Vzbid0IG1ha2Ugc2Vuc2UgdG8gYXNrIGZvciB0aGUgdGVzdF9yZXN1bHRzIHVudGls
IHRoZSB0ZXN0cyBoYXZlIHJ1biBhdCBsZWFzdCBvbmNlLgogICAgICAgICBhc3NlcnQoc2VsZi5f
dGVzdF9ydW5fY291bnRlciA+PSAwKQogICAgICAgICBmYWlsdXJlc19mb3JfcnVuID0gc2VsZi5f
dGVzdF9mYWlsdXJlX3BsYW5bc2VsZi5fdGVzdF9ydW5fY291bnRlcl0KICAgICAgICAgcmVzdWx0
cyA9IExheW91dFRlc3RSZXN1bHRzKG1hcChzZWxmLl9tb2NrX3Rlc3RfcmVzdWx0LCBmYWlsdXJl
c19mb3JfcnVuKSkKQEAgLTI3Nyw3ICsyNzcsNyBAQCBjb21tYW5kX2ZhaWxlZDogZmFpbHVyZV9t
ZXNzYWdlPSdVbmFibGUgdG8gYnVpbGQgd2l0aG91dCBwYXRjaCcgc2NyaXB0X2Vycm9yPSdNTwog
ICAgICAgICBdKQogICAgICAgICAjIENvbW1pdFF1ZXVlVGFzayB3aWxsIG9ubHkgcmVwb3J0IGZs
YWt5IHRlc3RzIGlmIHdlIHN1Y2Nlc3NmdWxseSBwYXJzZWQKICAgICAgICAgIyByZXN1bHRzLmh0
bWwgYW5kIHJldHVybmVkIGEgTGF5b3V0VGVzdFJlc3VsdHMgb2JqZWN0LCBzbyB3ZSBmYWtlIG9u
ZS4KLSAgICAgICAgY29tbWl0X3F1ZXVlLmxheW91dF90ZXN0X3Jlc3VsdHMgPSBsYW1iZGE6IExh
eW91dFRlc3RSZXN1bHRzKFtdKQorICAgICAgICBjb21taXRfcXVldWUudGVzdF9yZXN1bHRzID0g
bGFtYmRhOiBMYXlvdXRUZXN0UmVzdWx0cyhbXSkKICAgICAgICAgZXhwZWN0ZWRfc3RkZXJyID0g
IiIicnVuX3dlYmtpdF9wYXRjaDogWydjbGVhbiddCiBjb21tYW5kX3Bhc3NlZDogc3VjY2Vzc19t
ZXNzYWdlPSdDbGVhbmVkIHdvcmtpbmcgZGlyZWN0b3J5JyBwYXRjaD0nMTAwMDAnCiBydW5fd2Vi
a2l0X3BhdGNoOiBbJ3VwZGF0ZSddCkBAIC0yOTAsNyArMjkwLDcgQEAgcnVuX3dlYmtpdF9wYXRj
aDogWydidWlsZCcsICctLW5vLWNsZWFuJywgJy0tbm8tdXBkYXRlJywgJy0tYnVpbGQtc3R5bGU9
Ym90aCddCiBjb21tYW5kX3Bhc3NlZDogc3VjY2Vzc19tZXNzYWdlPSdCdWlsdCBwYXRjaCcgcGF0
Y2g9JzEwMDAwJwogcnVuX3dlYmtpdF9wYXRjaDogWydidWlsZC1hbmQtdGVzdCcsICctLW5vLWNs
ZWFuJywgJy0tbm8tdXBkYXRlJywgJy0tdGVzdCcsICctLW5vbi1pbnRlcmFjdGl2ZSddCiBjb21t
YW5kX2ZhaWxlZDogZmFpbHVyZV9tZXNzYWdlPSdQYXRjaCBkb2VzIG5vdCBwYXNzIHRlc3RzJyBz
Y3JpcHRfZXJyb3I9J01PQ0sgdGVzdHMgZmFpbHVyZScgcGF0Y2g9JzEwMDAwJwotYXJjaGl2ZV9s
YXN0X2xheW91dF90ZXN0X3Jlc3VsdHM6IHBhdGNoPScxMDAwMCcKK2FyY2hpdmVfbGFzdF90ZXN0
X3Jlc3VsdHM6IHBhdGNoPScxMDAwMCcKIHJ1bl93ZWJraXRfcGF0Y2g6IFsnYnVpbGQtYW5kLXRl
c3QnLCAnLS1uby1jbGVhbicsICctLW5vLXVwZGF0ZScsICctLXRlc3QnLCAnLS1ub24taW50ZXJh
Y3RpdmUnXQogY29tbWFuZF9wYXNzZWQ6IHN1Y2Nlc3NfbWVzc2FnZT0nUGFzc2VkIHRlc3RzJyBw
YXRjaD0nMTAwMDAnCiByZXBvcnRfZmxha3lfdGVzdHM6IHBhdGNoPScxMDAwMCcgZmxha3lfdGVz
dHM9J1tdJyBhcmNoaXZlPSdtb2NrLWFyY2hpdmUtMTAwMDAuemlwJwpAQCAtMzA4LDEwICszMDgs
MTAgQEAgY29tbWFuZF9wYXNzZWQ6IHN1Y2Nlc3NfbWVzc2FnZT0nTGFuZGVkIHBhdGNoJyBwYXRj
aD0nMTAwMDAnCiAgICAgICAgICAgICBOb25lLAogICAgICAgICAgICAgU2NyaXB0RXJyb3IoIk1P
Q0sgdGVzdHMgZmFpbHVyZSIpLAogICAgICAgICBdKQotICAgICAgICBjb21taXRfcXVldWUubGF5
b3V0X3Rlc3RfcmVzdWx0cyA9IGxhbWJkYTogTGF5b3V0VGVzdFJlc3VsdHMoW10pCisgICAgICAg
IGNvbW1pdF9xdWV1ZS50ZXN0X3Jlc3VsdHMgPSBsYW1iZGE6IExheW91dFRlc3RSZXN1bHRzKFtd
KQogICAgICAgICAjIEl0J3MgcG9zc2libGUgZGVsZWdhdGUgdG8gZmFpbCB0byBhcmNoaXZlIGxh
eW91dCB0ZXN0cywgZG9uJ3QgdHJ5IHRvIHJlcG9ydAogICAgICAgICAjIGZsYWt5IHRlc3RzIHdo
ZW4gdGhhdCBoYXBwZW5zLgotICAgICAgICBjb21taXRfcXVldWUuYXJjaGl2ZV9sYXN0X2xheW91
dF90ZXN0X3Jlc3VsdHMgPSBsYW1iZGEgcGF0Y2g6IE5vbmUKKyAgICAgICAgY29tbWl0X3F1ZXVl
LmFyY2hpdmVfbGFzdF90ZXN0X3Jlc3VsdHMgPSBsYW1iZGEgcGF0Y2g6IE5vbmUKICAgICAgICAg
ZXhwZWN0ZWRfc3RkZXJyID0gIiIicnVuX3dlYmtpdF9wYXRjaDogWydjbGVhbiddCiBjb21tYW5k
X3Bhc3NlZDogc3VjY2Vzc19tZXNzYWdlPSdDbGVhbmVkIHdvcmtpbmcgZGlyZWN0b3J5JyBwYXRj
aD0nMTAwMDAnCiBydW5fd2Via2l0X3BhdGNoOiBbJ3VwZGF0ZSddCkBAIC0zNjAsNyArMzYwLDcg
QEAgcnVuX3dlYmtpdF9wYXRjaDogWydidWlsZCcsICctLW5vLWNsZWFuJywgJy0tbm8tdXBkYXRl
JywgJy0tYnVpbGQtc3R5bGU9Ym90aCddCiBjb21tYW5kX3Bhc3NlZDogc3VjY2Vzc19tZXNzYWdl
PSdCdWlsdCBwYXRjaCcgcGF0Y2g9JzEwMDAwJwogcnVuX3dlYmtpdF9wYXRjaDogWydidWlsZC1h
bmQtdGVzdCcsICctLW5vLWNsZWFuJywgJy0tbm8tdXBkYXRlJywgJy0tdGVzdCcsICctLW5vbi1p
bnRlcmFjdGl2ZSddCiBjb21tYW5kX2ZhaWxlZDogZmFpbHVyZV9tZXNzYWdlPSdQYXRjaCBkb2Vz
IG5vdCBwYXNzIHRlc3RzJyBzY3JpcHRfZXJyb3I9J01PQ0sgdGVzdCBmYWlsdXJlJyBwYXRjaD0n
MTAwMDAnCi1hcmNoaXZlX2xhc3RfbGF5b3V0X3Rlc3RfcmVzdWx0czogcGF0Y2g9JzEwMDAwJwor
YXJjaGl2ZV9sYXN0X3Rlc3RfcmVzdWx0czogcGF0Y2g9JzEwMDAwJwogcnVuX3dlYmtpdF9wYXRj
aDogWydidWlsZC1hbmQtdGVzdCcsICctLW5vLWNsZWFuJywgJy0tbm8tdXBkYXRlJywgJy0tdGVz
dCcsICctLW5vbi1pbnRlcmFjdGl2ZSddCiBjb21tYW5kX2ZhaWxlZDogZmFpbHVyZV9tZXNzYWdl
PSdQYXRjaCBkb2VzIG5vdCBwYXNzIHRlc3RzJyBzY3JpcHRfZXJyb3I9J01PQ0sgdGVzdCBmYWls
dXJlIGFnYWluJyBwYXRjaD0nMTAwMDAnCiAiIiIKQEAgLTM5MiwxMCArMzkyLDEwIEBAIHJ1bl93
ZWJraXRfcGF0Y2g6IFsnYnVpbGQnLCAnLS1uby1jbGVhbicsICctLW5vLXVwZGF0ZScsICctLWJ1
aWxkLXN0eWxlPWJvdGgnXQogY29tbWFuZF9wYXNzZWQ6IHN1Y2Nlc3NfbWVzc2FnZT0nQnVpbHQg
cGF0Y2gnIHBhdGNoPScxMDAwMCcKIHJ1bl93ZWJraXRfcGF0Y2g6IFsnYnVpbGQtYW5kLXRlc3Qn
LCAnLS1uby1jbGVhbicsICctLW5vLXVwZGF0ZScsICctLXRlc3QnLCAnLS1ub24taW50ZXJhY3Rp
dmUnXQogY29tbWFuZF9mYWlsZWQ6IGZhaWx1cmVfbWVzc2FnZT0nUGF0Y2ggZG9lcyBub3QgcGFz
cyB0ZXN0cycgc2NyaXB0X2Vycm9yPSdNT0NLIHRlc3QgZmFpbHVyZScgcGF0Y2g9JzEwMDAwJwot
YXJjaGl2ZV9sYXN0X2xheW91dF90ZXN0X3Jlc3VsdHM6IHBhdGNoPScxMDAwMCcKK2FyY2hpdmVf
bGFzdF90ZXN0X3Jlc3VsdHM6IHBhdGNoPScxMDAwMCcKIHJ1bl93ZWJraXRfcGF0Y2g6IFsnYnVp
bGQtYW5kLXRlc3QnLCAnLS1uby1jbGVhbicsICctLW5vLXVwZGF0ZScsICctLXRlc3QnLCAnLS1u
b24taW50ZXJhY3RpdmUnXQogY29tbWFuZF9mYWlsZWQ6IGZhaWx1cmVfbWVzc2FnZT0nUGF0Y2gg
ZG9lcyBub3QgcGFzcyB0ZXN0cycgc2NyaXB0X2Vycm9yPSdNT0NLIHRlc3QgZmFpbHVyZSBhZ2Fp
bicgcGF0Y2g9JzEwMDAwJwotYXJjaGl2ZV9sYXN0X2xheW91dF90ZXN0X3Jlc3VsdHM6IHBhdGNo
PScxMDAwMCcKK2FyY2hpdmVfbGFzdF90ZXN0X3Jlc3VsdHM6IHBhdGNoPScxMDAwMCcKIHJ1bl93
ZWJraXRfcGF0Y2g6IFsnYnVpbGQtYW5kLXRlc3QnLCAnLS1mb3JjZS1jbGVhbicsICctLW5vLXVw
ZGF0ZScsICctLWJ1aWxkJywgJy0tdGVzdCcsICctLW5vbi1pbnRlcmFjdGl2ZSddCiBjb21tYW5k
X3Bhc3NlZDogc3VjY2Vzc19tZXNzYWdlPSdBYmxlIHRvIHBhc3MgdGVzdHMgd2l0aG91dCBwYXRj
aCcgcGF0Y2g9JzEwMDAwJwogIiIiCkBAIC00MzEsMTAgKzQzMSwxMCBAQCBydW5fd2Via2l0X3Bh
dGNoOiBbJ2J1aWxkJywgJy0tbm8tY2xlYW4nLCAnLS1uby11cGRhdGUnLCAnLS1idWlsZC1zdHls
ZT1ib3RoJ10KIGNvbW1hbmRfcGFzc2VkOiBzdWNjZXNzX21lc3NhZ2U9J0J1aWx0IHBhdGNoJyBw
YXRjaD0nMTAwMDAnCiBydW5fd2Via2l0X3BhdGNoOiBbJ2J1aWxkLWFuZC10ZXN0JywgJy0tbm8t
Y2xlYW4nLCAnLS1uby11cGRhdGUnLCAnLS10ZXN0JywgJy0tbm9uLWludGVyYWN0aXZlJ10KIGNv
bW1hbmRfZmFpbGVkOiBmYWlsdXJlX21lc3NhZ2U9J1BhdGNoIGRvZXMgbm90IHBhc3MgdGVzdHMn
IHNjcmlwdF9lcnJvcj0nTU9DSyB0ZXN0IGZhaWx1cmUnIHBhdGNoPScxMDAwMCcKLWFyY2hpdmVf
bGFzdF9sYXlvdXRfdGVzdF9yZXN1bHRzOiBwYXRjaD0nMTAwMDAnCithcmNoaXZlX2xhc3RfdGVz
dF9yZXN1bHRzOiBwYXRjaD0nMTAwMDAnCiBydW5fd2Via2l0X3BhdGNoOiBbJ2J1aWxkLWFuZC10
ZXN0JywgJy0tbm8tY2xlYW4nLCAnLS1uby11cGRhdGUnLCAnLS10ZXN0JywgJy0tbm9uLWludGVy
YWN0aXZlJ10KIGNvbW1hbmRfZmFpbGVkOiBmYWlsdXJlX21lc3NhZ2U9J1BhdGNoIGRvZXMgbm90
IHBhc3MgdGVzdHMnIHNjcmlwdF9lcnJvcj0nTU9DSyB0ZXN0IGZhaWx1cmUgYWdhaW4nIHBhdGNo
PScxMDAwMCcKLWFyY2hpdmVfbGFzdF9sYXlvdXRfdGVzdF9yZXN1bHRzOiBwYXRjaD0nMTAwMDAn
CithcmNoaXZlX2xhc3RfdGVzdF9yZXN1bHRzOiBwYXRjaD0nMTAwMDAnCiBydW5fd2Via2l0X3Bh
dGNoOiBbJ2J1aWxkLWFuZC10ZXN0JywgJy0tZm9yY2UtY2xlYW4nLCAnLS1uby11cGRhdGUnLCAn
LS1idWlsZCcsICctLXRlc3QnLCAnLS1ub24taW50ZXJhY3RpdmUnXQogY29tbWFuZF9mYWlsZWQ6
IGZhaWx1cmVfbWVzc2FnZT0nVW5hYmxlIHRvIHBhc3MgdGVzdHMgd2l0aG91dCBwYXRjaCAodHJl
ZSBpcyByZWQ/KScgc2NyaXB0X2Vycm9yPSdNT0NLIGNsZWFuIHRlc3QgZmFpbHVyZScgcGF0Y2g9
JzEwMDAwJwogcnVuX3dlYmtpdF9wYXRjaDogWydsYW5kLWF0dGFjaG1lbnQnLCAnLS1mb3JjZS1j
bGVhbicsICctLW5vbi1pbnRlcmFjdGl2ZScsICctLXBhcmVudC1jb21tYW5kPWNvbW1pdC1xdWV1
ZScsIDEwMDAwXQpAQCAtNDc0LDEwICs0NzQsMTAgQEAgcnVuX3dlYmtpdF9wYXRjaDogWydidWls
ZCcsICctLW5vLWNsZWFuJywgJy0tbm8tdXBkYXRlJywgJy0tYnVpbGQtc3R5bGU9Ym90aCddCiBj
b21tYW5kX3Bhc3NlZDogc3VjY2Vzc19tZXNzYWdlPSdCdWlsdCBwYXRjaCcgcGF0Y2g9JzEwMDAw
JwogcnVuX3dlYmtpdF9wYXRjaDogWydidWlsZC1hbmQtdGVzdCcsICctLW5vLWNsZWFuJywgJy0t
bm8tdXBkYXRlJywgJy0tdGVzdCcsICctLW5vbi1pbnRlcmFjdGl2ZSddCiBjb21tYW5kX2ZhaWxl
ZDogZmFpbHVyZV9tZXNzYWdlPSdQYXRjaCBkb2VzIG5vdCBwYXNzIHRlc3RzJyBzY3JpcHRfZXJy
b3I9J01PQ0sgdGVzdCBmYWlsdXJlJyBwYXRjaD0nMTAwMDAnCi1hcmNoaXZlX2xhc3RfbGF5b3V0
X3Rlc3RfcmVzdWx0czogcGF0Y2g9JzEwMDAwJworYXJjaGl2ZV9sYXN0X3Rlc3RfcmVzdWx0czog
cGF0Y2g9JzEwMDAwJwogcnVuX3dlYmtpdF9wYXRjaDogWydidWlsZC1hbmQtdGVzdCcsICctLW5v
LWNsZWFuJywgJy0tbm8tdXBkYXRlJywgJy0tdGVzdCcsICctLW5vbi1pbnRlcmFjdGl2ZSddCiBj
b21tYW5kX2ZhaWxlZDogZmFpbHVyZV9tZXNzYWdlPSdQYXRjaCBkb2VzIG5vdCBwYXNzIHRlc3Rz
JyBzY3JpcHRfZXJyb3I9J01PQ0sgdGVzdCBmYWlsdXJlIGFnYWluJyBwYXRjaD0nMTAwMDAnCi1h
cmNoaXZlX2xhc3RfbGF5b3V0X3Rlc3RfcmVzdWx0czogcGF0Y2g9JzEwMDAwJworYXJjaGl2ZV9s
YXN0X3Rlc3RfcmVzdWx0czogcGF0Y2g9JzEwMDAwJwogcnVuX3dlYmtpdF9wYXRjaDogWydidWls
ZC1hbmQtdGVzdCcsICctLWZvcmNlLWNsZWFuJywgJy0tbm8tdXBkYXRlJywgJy0tYnVpbGQnLCAn
LS10ZXN0JywgJy0tbm9uLWludGVyYWN0aXZlJ10KIGNvbW1hbmRfZmFpbGVkOiBmYWlsdXJlX21l
c3NhZ2U9J1VuYWJsZSB0byBwYXNzIHRlc3RzIHdpdGhvdXQgcGF0Y2ggKHRyZWUgaXMgcmVkPykn
IHNjcmlwdF9lcnJvcj0nTU9DSyBjbGVhbiB0ZXN0IGZhaWx1cmUnIHBhdGNoPScxMDAwMCcKICIi
IgpAQCAtNTEzLDEwICs1MTMsMTAgQEAgcnVuX3dlYmtpdF9wYXRjaDogWydidWlsZCcsICctLW5v
LWNsZWFuJywgJy0tbm8tdXBkYXRlJywgJy0tYnVpbGQtc3R5bGU9Ym90aCddCiBjb21tYW5kX3Bh
c3NlZDogc3VjY2Vzc19tZXNzYWdlPSdCdWlsdCBwYXRjaCcgcGF0Y2g9JzEwMDAwJwogcnVuX3dl
YmtpdF9wYXRjaDogWydidWlsZC1hbmQtdGVzdCcsICctLW5vLWNsZWFuJywgJy0tbm8tdXBkYXRl
JywgJy0tdGVzdCcsICctLW5vbi1pbnRlcmFjdGl2ZSddCiBjb21tYW5kX2ZhaWxlZDogZmFpbHVy
ZV9tZXNzYWdlPSdQYXRjaCBkb2VzIG5vdCBwYXNzIHRlc3RzJyBzY3JpcHRfZXJyb3I9J01PQ0sg
dGVzdCBmYWlsdXJlJyBwYXRjaD0nMTAwMDAnCi1hcmNoaXZlX2xhc3RfbGF5b3V0X3Rlc3RfcmVz
dWx0czogcGF0Y2g9JzEwMDAwJworYXJjaGl2ZV9sYXN0X3Rlc3RfcmVzdWx0czogcGF0Y2g9JzEw
MDAwJwogcnVuX3dlYmtpdF9wYXRjaDogWydidWlsZC1hbmQtdGVzdCcsICctLW5vLWNsZWFuJywg
Jy0tbm8tdXBkYXRlJywgJy0tdGVzdCcsICctLW5vbi1pbnRlcmFjdGl2ZSddCiBjb21tYW5kX2Zh
aWxlZDogZmFpbHVyZV9tZXNzYWdlPSdQYXRjaCBkb2VzIG5vdCBwYXNzIHRlc3RzJyBzY3JpcHRf
ZXJyb3I9J01PQ0sgdGVzdCBmYWlsdXJlIGFnYWluJyBwYXRjaD0nMTAwMDAnCi1hcmNoaXZlX2xh
c3RfbGF5b3V0X3Rlc3RfcmVzdWx0czogcGF0Y2g9JzEwMDAwJworYXJjaGl2ZV9sYXN0X3Rlc3Rf
cmVzdWx0czogcGF0Y2g9JzEwMDAwJwogcnVuX3dlYmtpdF9wYXRjaDogWydidWlsZC1hbmQtdGVz
dCcsICctLWZvcmNlLWNsZWFuJywgJy0tbm8tdXBkYXRlJywgJy0tYnVpbGQnLCAnLS10ZXN0Jywg
Jy0tbm9uLWludGVyYWN0aXZlJ10KIGNvbW1hbmRfZmFpbGVkOiBmYWlsdXJlX21lc3NhZ2U9J1Vu
YWJsZSB0byBwYXNzIHRlc3RzIHdpdGhvdXQgcGF0Y2ggKHRyZWUgaXMgcmVkPyknIHNjcmlwdF9l
cnJvcj0nTU9DSyBjbGVhbiB0ZXN0IGZhaWx1cmUnIHBhdGNoPScxMDAwMCcKICIiIgpkaWZmIC0t
Z2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9sYXlvdXR0ZXN0cmVzdWx0c3Jl
YWRlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvbGF5b3V0dGVzdHJlc3Vs
dHNyZWFkZXIucHkKaW5kZXggMWEwMzY2ZTI1NzQzNWIwZDZjYmU3YzMwNzgyMDE5ZWFlYTZlZTJm
ZS4uMmZkNWUwMDIzOGY2Yzc4ZTQ2Mjg1MTU1OWE5OGNhMGY4M2NiYzZmYSAxMDA2NDQKLS0tIGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9sYXlvdXR0ZXN0cmVzdWx0c3JlYWRlci5w
eQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2xheW91dHRlc3RyZXN1bHRz
cmVhZGVyLnB5CkBAIC01MiwxNSArNTIsMjcgQEAgY2xhc3MgTGF5b3V0VGVzdFJlc3VsdHNSZWFk
ZXIob2JqZWN0KToKICAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgIHJldHVybiBMYXlv
dXRUZXN0UmVzdWx0cy5yZXN1bHRzX2Zyb21fc3RyaW5nKHJlc3VsdHNfaHRtbCkKIAorICAgIGRl
ZiBfY3JlYXRlX3VuaXRfdGVzdF9yZXN1bHRzKHNlbGYpOgorICAgICAgICByZXN1bHRzX3BhdGgg
PSBzZWxmLl90b29sLnBvcnQoKS51bml0X3Rlc3RzX3Jlc3VsdHNfcGF0aCgpCisgICAgICAgIGlm
IG5vdCByZXN1bHRzX3BhdGg6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICByZXN1
bHRzX3htbCA9IHNlbGYuX3JlYWRfZmlsZV9jb250ZW50cyhyZXN1bHRzX3BhdGgpCisgICAgICAg
IGlmIG5vdCByZXN1bHRzX3htbDoKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIHJl
dHVybiBVbml0VGVzdFJlc3VsdHMucmVzdWx0c19mcm9tX3N0cmluZyhyZXN1bHRzX3htbCkKKwog
ICAgIGRlZiByZXN1bHRzKHNlbGYpOgotICAgICAgICByZXN1bHRzID0gc2VsZi5fY3JlYXRlX2xh
eW91dF90ZXN0X3Jlc3VsdHMoKQorICAgICAgICBsYXlvdXRfdGVzdF9yZXN1bHRzID0gc2VsZi5f
Y3JlYXRlX2xheW91dF90ZXN0X3Jlc3VsdHMoKQogICAgICAgICAjIEZJWE1FOiBXZSBzaG91bGQg
bm90IGhhdmUgdG8gc2V0IGZhaWx1cmVfbGltaXRfY291bnQsIGJ1dCB3ZQogICAgICAgICAjIGRv
IHVudGlsIHJ1bi13ZWJraXQtdGVzdHMgY2FuIGJlIHVwZGF0ZWQgc2F2ZSBvZmYgdGhlIHZhbHVl
CiAgICAgICAgICMgb2YgLS1leGl0LWFmdGVyLU4tZmFpbHVyZXMgaW4gcmVzdWx0cy5odG1sL3Jl
c3VsdHMuanNvbi4KICAgICAgICAgIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NTg0ODEKLSAgICAgICAgaWYgcmVzdWx0czoKLSAgICAgICAgICAgIHJlc3VsdHMuc2V0
X2ZhaWx1cmVfbGltaXRfY291bnQoUnVuVGVzdHMuTk9OX0lOVEVSQUNUSVZFX0ZBSUxVUkVfTElN
SVRfQ09VTlQpCi0gICAgICAgIHJldHVybiByZXN1bHRzCisgICAgICAgIGlmIGxheW91dF90ZXN0
X3Jlc3VsdHM6CisgICAgICAgICAgICBsYXlvdXRfdGVzdF9yZXN1bHRzLnNldF9mYWlsdXJlX2xp
bWl0X2NvdW50KFJ1blRlc3RzLk5PTl9JTlRFUkFDVElWRV9GQUlMVVJFX0xJTUlUX0NPVU5UKQor
ICAgICAgICB1bml0X3Rlc3RfcmVzdWx0cyA9IHNlbGYuX2NyZWF0ZV91bml0X3Rlc3RfcmVzdWx0
cygpCisgICAgICAgIGlmIGxheW91dF90ZXN0X3Jlc3VsdHMgYW5kIHVuaXRfdGVzdF9yZXN1bHRz
OgorICAgICAgICAgICAgbGF5b3V0X3Rlc3RfcmVzdWx0cy5hZGRfdW5pdF90ZXN0X2ZhaWx1cmVz
KHVuaXRfdGVzdF9yZXN1bHRzKQorICAgICAgICByZXR1cm4gbGF5b3V0X3Rlc3RfcmVzdWx0cwog
CiAgICAgZGVmIF9yZXN1bHRzX2RpcmVjdG9yeShzZWxmKToKICAgICAgICAgcmVzdWx0c19wYXRo
ID0gc2VsZi5fdG9vbC5wb3J0KCkubGF5b3V0X3Rlc3RzX3Jlc3VsdHNfcGF0aCgpCmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2xheW91dHRlc3RyZXN1bHRzcmVh
ZGVyX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9sYXlvdXR0
ZXN0cmVzdWx0c3JlYWRlcl91bml0dGVzdC5weQppbmRleCA3ODg0NWRjZDc2MjcyZGQxNTYwYzc2
N2FiMmNkMjM5N2YwNjU3ODI3Li4wMWE2NWZiODFhNDgwZjZmM2FhZGE4ODliMjFhMjc5M2FiYzUx
ZDcwIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2xheW91dHRl
c3RyZXN1bHRzcmVhZGVyX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dG9vbC9ib3QvbGF5b3V0dGVzdHJlc3VsdHNyZWFkZXJfdW5pdHRlc3QucHkKQEAgLTM5LDEzICsz
OSwyNiBAQCBjbGFzcyBMYXlvdXRUZXN0UmVzdWx0c1JlYWRlclRlc3QodW5pdHRlc3QuVGVzdENh
c2UpOgogICAgIGRlZiB0ZXN0X21pc3NpbmdfbGF5b3V0X3Rlc3RfcmVzdWx0cyhzZWxmKToKICAg
ICAgICAgdG9vbCA9IE1vY2tUb29sKCkKICAgICAgICAgcmVhZGVyID0gTGF5b3V0VGVzdFJlc3Vs
dHNSZWFkZXIodG9vbCwgIi92YXIvbG9ncyIpCi0gICAgICAgIHJlc3VsdHNfcGF0aCA9ICcvbW9j
ay1yZXN1bHRzL2Z1bGxfcmVzdWx0cy5qc29uJwotICAgICAgICB0b29sLmZpbGVzeXN0ZW0gPSBN
b2NrRmlsZVN5c3RlbSh7cmVzdWx0c19wYXRoOiBOb25lfSkKKyAgICAgICAgbGF5b3V0X3Rlc3Rz
X3Jlc3VsdHNfcGF0aCA9ICcvbW9jay1yZXN1bHRzL2Z1bGxfcmVzdWx0cy5qc29uJworICAgICAg
ICB1bml0X3Rlc3RzX3Jlc3VsdHNfcGF0aCA9ICcvbW9jay1yZXN1bHRzL3dlYmtpdF91bml0X3Rl
c3RzX291dHB1dC54bWwnCisgICAgICAgIHRvb2wuZmlsZXN5c3RlbSA9IE1vY2tGaWxlU3lzdGVt
KHtsYXlvdXRfdGVzdHNfcmVzdWx0c19wYXRoOiBOb25lLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdW5pdF90ZXN0c19yZXN1bHRzX3BhdGg6IE5vbmV9KQogICAg
ICAgICAjIE1ha2Ugc3VyZSB0aGF0IG91ciBmaWxlc3lzdGVtIG1vY2sgZnVuY3Rpb25zIGFzIHdl
IGV4cGVjdC4KLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSU9FcnJvciwgdG9vbC5maWxlc3lz
dGVtLnJlYWRfdGV4dF9maWxlLCByZXN1bHRzX3BhdGgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFp
c2VzKElPRXJyb3IsIHRvb2wuZmlsZXN5c3RlbS5yZWFkX3RleHRfZmlsZSwgbGF5b3V0X3Rlc3Rz
X3Jlc3VsdHNfcGF0aCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSU9FcnJvciwgdG9vbC5m
aWxlc3lzdGVtLnJlYWRfdGV4dF9maWxlLCB1bml0X3Rlc3RzX3Jlc3VsdHNfcGF0aCkKICAgICAg
ICAgIyBsYXlvdXRfdGVzdF9yZXN1bHRzIHNob3VsZG4ndCByYWlzZSBldmVuIGlmIHRoZSByZXN1
bHRzLmh0bWwgZmlsZSBpcyBtaXNzaW5nLgogICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhyZWFk
ZXIucmVzdWx0cygpLCBOb25lKQogCisgICAgZGVmIHRlc3RfbWlzc2luZ191bml0X3Rlc3RfcmVz
dWx0c19wYXRoKHNlbGYpOgorICAgICAgICB0b29sID0gTW9ja1Rvb2woKQorICAgICAgICB0b29s
LnBvcnQoKS51bml0X3Rlc3RzX3Jlc3VsdHNfcGF0aCA9IGxhbWJkYTogTm9uZQorICAgICAgICBy
ZWFkZXIgPSBMYXlvdXRUZXN0UmVzdWx0c1JlYWRlcih0b29sLCAiL3Zhci9sb2dzIikKKyAgICAg
ICAgcmVhZGVyLl9jcmVhdGVfbGF5b3V0X3Rlc3RfcmVzdWx0cyA9IGxhbWJkYTogTGF5b3V0VGVz
dFJlc3VsdHMoW10pCisgICAgICAgICMgbGF5b3V0X3Rlc3RfcmVzdWx0cyBzaG91bGRuJ3QgcmFp
c2UgZXZlbiBpZiB0aGUgdW5pdCB0ZXN0cyB4bWwgZmlsZSBpcyBtaXNzaW5nLgorICAgICAgICBz
ZWxmLmFzc2VydE5vdEVxdWFscyhyZWFkZXIucmVzdWx0cygpLCBOb25lKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFscyhyZWFkZXIucmVzdWx0cygpLmZhaWxpbmdfdGVzdHMoKSwgW10pCisKKwog
ICAgIGRlZiB0ZXN0X2xheW91dF90ZXN0X3Jlc3VsdHMoc2VsZik6CiAgICAgICAgIHJlYWRlciA9
IExheW91dFRlc3RSZXN1bHRzUmVhZGVyKE1vY2tUb29sKCksICIvdmFyL2xvZ3MiKQogICAgICAg
ICByZWFkZXIuX3JlYWRfZmlsZV9jb250ZW50cyA9IGxhbWJkYSBwYXRoOiBOb25lCmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L3BhdGNoYW5hbHlzaXN0YXNrLnB5
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9wYXRjaGFuYWx5c2lzdGFzay5weQpp
bmRleCBiY2QzZDMwNGIxMWU3ZTZlZmM3NzdjYmQ4MzFhNjgyNjdjM2IxYjYyLi45NjUxOGM2OWU0
ZWExYTlmNWMyZmE1NDA5MTE4YjRiZGI3ZmQ3ZWQ4IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L3Rvb2wvYm90L3BhdGNoYW5hbHlzaXN0YXNrLnB5CisrKyBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdG9vbC9ib3QvcGF0Y2hhbmFseXNpc3Rhc2sucHkKQEAgLTU1LDEwICs1NSwx
MCBAQCBjbGFzcyBQYXRjaEFuYWx5c2lzVGFza0RlbGVnYXRlKG9iamVjdCk6CiAgICAgZGVmIGV4
cGVjdGVkX2ZhaWx1cmVzKHNlbGYpOgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9y
KCJzdWJjbGFzc2VzIG11c3QgaW1wbGVtZW50IikKIAotICAgIGRlZiBsYXlvdXRfdGVzdF9yZXN1
bHRzKHNlbGYpOgorICAgIGRlZiB0ZXN0X3Jlc3VsdHMoc2VsZik6CiAgICAgICAgIHJhaXNlIE5v
dEltcGxlbWVudGVkRXJyb3IoInN1YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQiKQogCi0gICAgZGVm
IGFyY2hpdmVfbGFzdF9sYXlvdXRfdGVzdF9yZXN1bHRzKHNlbGYsIHBhdGNoKToKKyAgICBkZWYg
YXJjaGl2ZV9sYXN0X3Rlc3RfcmVzdWx0cyhzZWxmLCBwYXRjaCk6CiAgICAgICAgIHJhaXNlIE5v
dEltcGxlbWVudGVkRXJyb3IoInN1YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQiKQogCiAgICAgZGVm
IGJ1aWxkX3N0eWxlKHNlbGYpOgpAQCAtMTQ1LDcgKzE0NSw3IEBAIGNsYXNzIFBhdGNoQW5hbHlz
aXNUYXNrKG9iamVjdCk6CiAgICAgICAgICJQYXNzZWQgdGVzdHMiLAogICAgICAgICAiUGF0Y2gg
ZG9lcyBub3QgcGFzcyB0ZXN0cyIpCiAKLSAgICAgICAgc2VsZi5fZXhwZWN0ZWRfZmFpbHVyZXMu
c2hyaW5rX2V4cGVjdGVkX2ZhaWx1cmVzKHNlbGYuX2RlbGVnYXRlLmxheW91dF90ZXN0X3Jlc3Vs
dHMoKSwgc3VjY2VzcykKKyAgICAgICAgc2VsZi5fZXhwZWN0ZWRfZmFpbHVyZXMuc2hyaW5rX2V4
cGVjdGVkX2ZhaWx1cmVzKHNlbGYuX2RlbGVnYXRlLnRlc3RfcmVzdWx0cygpLCBzdWNjZXNzKQog
ICAgICAgICByZXR1cm4gc3VjY2VzcwogCiAgICAgZGVmIF9idWlsZF9hbmRfdGVzdF93aXRob3V0
X3BhdGNoKHNlbGYpOgpAQCAtMTYwLDcgKzE2MCw3IEBAIGNsYXNzIFBhdGNoQW5hbHlzaXNUYXNr
KG9iamVjdCk6CiAgICAgICAgICJBYmxlIHRvIHBhc3MgdGVzdHMgd2l0aG91dCBwYXRjaCIsCiAg
ICAgICAgICJVbmFibGUgdG8gcGFzcyB0ZXN0cyB3aXRob3V0IHBhdGNoICh0cmVlIGlzIHJlZD8p
IikKIAotICAgICAgICBzZWxmLl9leHBlY3RlZF9mYWlsdXJlcy5zaHJpbmtfZXhwZWN0ZWRfZmFp
bHVyZXMoc2VsZi5fZGVsZWdhdGUubGF5b3V0X3Rlc3RfcmVzdWx0cygpLCBzdWNjZXNzKQorICAg
ICAgICBzZWxmLl9leHBlY3RlZF9mYWlsdXJlcy5zaHJpbmtfZXhwZWN0ZWRfZmFpbHVyZXMoc2Vs
Zi5fZGVsZWdhdGUudGVzdF9yZXN1bHRzKCksIHN1Y2Nlc3MpCiAgICAgICAgIHJldHVybiBzdWNj
ZXNzCiAKICAgICBkZWYgX2xhbmQoc2VsZik6CkBAIC0xODcsMTAgKzE4NywxMCBAQCBjbGFzcyBQ
YXRjaEFuYWx5c2lzVGFzayhvYmplY3QpOgogICAgICAgICBpZiBzZWxmLl90ZXN0KCk6CiAgICAg
ICAgICAgICByZXR1cm4gVHJ1ZQogCi0gICAgICAgICMgTm90ZTogYXJjaGl2ZV9sYXN0X2xheW91
dF90ZXN0X3Jlc3VsdHMgZGVsZXRlcyB0aGUgcmVzdWx0cyBkaXJlY3RvcnksIG1ha2luZyB0aGVz
ZSBjYWxscyBvcmRlci1zZW5zaXR2ZS4KLSAgICAgICAgIyBXZSBjb3VsZCByZW1vdmUgdGhpcyBk
ZXBlbmRlbmN5IGJ5IGJ1aWxkaW5nIHRoZSBsYXlvdXRfdGVzdF9yZXN1bHRzIGZyb20gdGhlIGFy
Y2hpdmUuCi0gICAgICAgIGZpcnN0X3Jlc3VsdHMgPSBzZWxmLl9kZWxlZ2F0ZS5sYXlvdXRfdGVz
dF9yZXN1bHRzKCkKLSAgICAgICAgZmlyc3RfcmVzdWx0c19hcmNoaXZlID0gc2VsZi5fZGVsZWdh
dGUuYXJjaGl2ZV9sYXN0X2xheW91dF90ZXN0X3Jlc3VsdHMoc2VsZi5fcGF0Y2gpCisgICAgICAg
ICMgTm90ZTogYXJjaGl2ZV9sYXN0X3Rlc3RfcmVzdWx0cyBkZWxldGVzIHRoZSByZXN1bHRzIGRp
cmVjdG9yeSwgbWFraW5nIHRoZXNlIGNhbGxzIG9yZGVyLXNlbnNpdHZlLgorICAgICAgICAjIFdl
IGNvdWxkIHJlbW92ZSB0aGlzIGRlcGVuZGVuY3kgYnkgYnVpbGRpbmcgdGhlIHRlc3RfcmVzdWx0
cyBmcm9tIHRoZSBhcmNoaXZlLgorICAgICAgICBmaXJzdF9yZXN1bHRzID0gc2VsZi5fZGVsZWdh
dGUudGVzdF9yZXN1bHRzKCkKKyAgICAgICAgZmlyc3RfcmVzdWx0c19hcmNoaXZlID0gc2VsZi5f
ZGVsZWdhdGUuYXJjaGl2ZV9sYXN0X3Rlc3RfcmVzdWx0cyhzZWxmLl9wYXRjaCkKICAgICAgICAg
Zmlyc3Rfc2NyaXB0X2Vycm9yID0gc2VsZi5fc2NyaXB0X2Vycm9yCiAKICAgICAgICAgaWYgc2Vs
Zi5fZXhwZWN0ZWRfZmFpbHVyZXMuZmFpbHVyZXNfd2VyZV9leHBlY3RlZChmaXJzdF9yZXN1bHRz
KToKQEAgLTIwMiw3ICsyMDIsNyBAQCBjbGFzcyBQYXRjaEFuYWx5c2lzVGFzayhvYmplY3QpOgog
ICAgICAgICAgICAgICAgIHNlbGYuX3JlcG9ydF9mbGFreV90ZXN0cyhmaXJzdF9yZXN1bHRzLmZh
aWxpbmdfdGVzdF9yZXN1bHRzKCksIGZpcnN0X3Jlc3VsdHNfYXJjaGl2ZSkKICAgICAgICAgICAg
IHJldHVybiBUcnVlCiAKLSAgICAgICAgc2Vjb25kX3Jlc3VsdHMgPSBzZWxmLl9kZWxlZ2F0ZS5s
YXlvdXRfdGVzdF9yZXN1bHRzKCkKKyAgICAgICAgc2Vjb25kX3Jlc3VsdHMgPSBzZWxmLl9kZWxl
Z2F0ZS50ZXN0X3Jlc3VsdHMoKQogICAgICAgICBpZiBzZWxmLl9yZXN1bHRzX2ZhaWxlZF9kaWZm
ZXJlbnRfdGVzdHMoZmlyc3RfcmVzdWx0cywgc2Vjb25kX3Jlc3VsdHMpOgogICAgICAgICAgICAg
IyBXZSBjb3VsZCByZXBvcnQgZmxha3kgdGVzdHMgaGVyZSwgYnV0IHdlIHdvdWxkIG5lZWQgdG8g
YmUgY2FyZWZ1bAogICAgICAgICAgICAgIyB0byB1c2Ugc2ltaWxhciBjaGVja3MgdG8gRXhwZWN0
ZWRGYWlsdXJlcy5fY2FuX3RydXN0X3Jlc3VsdHMKQEAgLTIxMSwxNSArMjExLDE1IEBAIGNsYXNz
IFBhdGNoQW5hbHlzaXNUYXNrKG9iamVjdCk6CiAgICAgICAgICAgICAjIFNlZSBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTEyNzIKICAgICAgICAgICAgIHJldHVybiBG
YWxzZQogCi0gICAgICAgICMgQXJjaGl2ZSAoYW5kIHJlbW92ZSkgc2Vjb25kIHJlc3VsdHMgc28g
bGF5b3V0X3Rlc3RfcmVzdWx0cygpIGFmdGVyCisgICAgICAgICMgQXJjaGl2ZSAoYW5kIHJlbW92
ZSkgc2Vjb25kIHJlc3VsdHMgc28gdGVzdF9yZXN1bHRzKCkgYWZ0ZXIKICAgICAgICAgIyBidWls
ZF9hbmRfdGVzdF93aXRob3V0X3BhdGNoIHdvbid0IHVzZSBzZWNvbmQgcmVzdWx0cyBpbnN0ZWFk
IG9mIHRoZSBjbGVhbi10cmVlIHJlc3VsdHMuCi0gICAgICAgIHNlY29uZF9yZXN1bHRzX2FyY2hp
dmUgPSBzZWxmLl9kZWxlZ2F0ZS5hcmNoaXZlX2xhc3RfbGF5b3V0X3Rlc3RfcmVzdWx0cyhzZWxm
Ll9wYXRjaCkKKyAgICAgICAgc2Vjb25kX3Jlc3VsdHNfYXJjaGl2ZSA9IHNlbGYuX2RlbGVnYXRl
LmFyY2hpdmVfbGFzdF90ZXN0X3Jlc3VsdHMoc2VsZi5fcGF0Y2gpCiAKICAgICAgICAgaWYgc2Vs
Zi5fYnVpbGRfYW5kX3Rlc3Rfd2l0aG91dF9wYXRjaCgpOgogICAgICAgICAgICAgIyBUaGUgZXJy
b3IgZnJvbSB0aGUgcHJldmlvdXMgLl90ZXN0KCkgcnVuIGlzIHJlYWwsIHJlcG9ydCBpdC4KICAg
ICAgICAgICAgIHJldHVybiBzZWxmLnJlcG9ydF9mYWlsdXJlKGZpcnN0X3Jlc3VsdHNfYXJjaGl2
ZSwgZmlyc3RfcmVzdWx0cywgZmlyc3Rfc2NyaXB0X2Vycm9yKQogCi0gICAgICAgIGNsZWFuX3Ry
ZWVfcmVzdWx0cyA9IHNlbGYuX2RlbGVnYXRlLmxheW91dF90ZXN0X3Jlc3VsdHMoKQorICAgICAg
ICBjbGVhbl90cmVlX3Jlc3VsdHMgPSBzZWxmLl9kZWxlZ2F0ZS50ZXN0X3Jlc3VsdHMoKQogICAg
ICAgICBzZWxmLl9leHBlY3RlZF9mYWlsdXJlcy5ncm93X2V4cGVjdGVkX2ZhaWx1cmVzKGNsZWFu
X3RyZWVfcmVzdWx0cykKIAogICAgICAgICAjIFJlLWNoZWNrIGlmIHRoZSBvcmlnaW5hbCByZXN1
bHRzIGFyZSBub3cgdG8gYmUgZXhwZWN0ZWQgdG8gYXZvaWQgYSBmdWxsIHJlLXRyeS4KZGlmZiAt
LWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9lYXJseXdhcm5pbmdz
eXN0ZW0ucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZWFybHl3YXJu
aW5nc3lzdGVtLnB5CmluZGV4IDM3YmM0YjcyZWNlMmY1OWEzZDcwNGZiY2NiZDAzMWRkNGM2ODEw
Y2UuLjYzOWY0ZDhmYzhiNTk2MDUxZTgxN2Y1NjUxOGU5M2JmMTQ0MGY2ZTQgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9lYXJseXdhcm5pbmdzeXN0ZW0u
cHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2Vhcmx5d2Fybmlu
Z3N5c3RlbS5weQpAQCAtMTEyLDEwICsxMTIsMTAgQEAgY2xhc3MgQWJzdHJhY3RFYXJseVdhcm5p
bmdTeXN0ZW0oQWJzdHJhY3RSZXZpZXdRdWV1ZSwgRWFybHlXYXJuaW5nU3lzdGVtVGFza0RlbGUK
ICAgICBkZWYgZXhwZWN0ZWRfZmFpbHVyZXMoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLl9l
eHBlY3RlZF9mYWlsdXJlcwogCi0gICAgZGVmIGxheW91dF90ZXN0X3Jlc3VsdHMoc2VsZik6Cisg
ICAgZGVmIHRlc3RfcmVzdWx0cyhzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuX2xheW91dF90
ZXN0X3Jlc3VsdHNfcmVhZGVyLnJlc3VsdHMoKQogCi0gICAgZGVmIGFyY2hpdmVfbGFzdF9sYXlv
dXRfdGVzdF9yZXN1bHRzKHNlbGYsIHBhdGNoKToKKyAgICBkZWYgYXJjaGl2ZV9sYXN0X3Rlc3Rf
cmVzdWx0cyhzZWxmLCBwYXRjaCk6CiAgICAgICAgIHJldHVybiBzZWxmLl9sYXlvdXRfdGVzdF9y
ZXN1bHRzX3JlYWRlci5hcmNoaXZlKHBhdGNoKQogCiAgICAgZGVmIGJ1aWxkX3N0eWxlKHNlbGYp
OgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2Vhcmx5
d2FybmluZ3N5c3RlbV91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9j
b21tYW5kcy9lYXJseXdhcm5pbmdzeXN0ZW1fdW5pdHRlc3QucHkKaW5kZXggM2FkYWQ0YzU4NWUz
NmNlMmEzY2FjZjljOGI0YjVmZmRlZjQyZDRlZi4uOWRiYjM5OGVlZjdkMDZmNWVmMzVlNjA1ZWYx
NDJkOTliZjYwNGZmZCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2Nv
bW1hbmRzL2Vhcmx5d2FybmluZ3N5c3RlbV91bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZWFybHl3YXJuaW5nc3lzdGVtX3VuaXR0ZXN0LnB5CkBA
IC03Myw3ICs3Myw3IEBAIGNsYXNzIEVhcmx5V2FybmluZ1N5dGVtVGVzdChRdWV1ZXNUZXN0KToK
ICAgICAgICAgc2VsZi5hc3NlcnRfcXVldWVfb3V0cHV0cyhld3MsIGV4cGVjdGVkX3N0ZGVycj1z
ZWxmLl9kZWZhdWx0X2V4cGVjdGVkX3N0ZGVycihld3MpLCBvcHRpb25zPW9wdGlvbnMpCiAKICAg
ICBkZWYgX3Rlc3RfdGVzdGluZ19ld3Moc2VsZiwgZXdzKToKLSAgICAgICAgZXdzLmxheW91dF90
ZXN0X3Jlc3VsdHMgPSBsYW1iZGE6IE5vbmUKKyAgICAgICAgZXdzLnRlc3RfcmVzdWx0cyA9IGxh
bWJkYTogTm9uZQogICAgICAgICBld3MuYmluZF90b190b29sKE1vY2tUb29sKCkpCiAgICAgICAg
IGV4cGVjdGVkX3N0ZGVyciA9IHNlbGYuX2RlZmF1bHRfZXhwZWN0ZWRfc3RkZXJyKGV3cykKICAg
ICAgICAgZXhwZWN0ZWRfc3RkZXJyWyJoYW5kbGVfc2NyaXB0X2Vycm9yIl0gPSAiU2NyaXB0RXJy
b3IgZXJyb3IgbWVzc2FnZVxuXG5NT0NLIG91dHB1dFxuIgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1ZXVlcy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdG9vbC9jb21tYW5kcy9xdWV1ZXMucHkKaW5kZXggYTVlMzM0ZGE4NTdkYzZhOWQwNmM3
MGFlMGZmMDFhZDc2YTQzNjYzYy4uMmFmMDhiNzE4ZjljZTcyMTNiZTY3NzI4NDZkOGMyNDU2NzJl
NjcwYyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1
ZXVlcy5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVldWVz
LnB5CkBAIC0zMTcsMTAgKzMxNywxMCBAQCBjbGFzcyBDb21taXRRdWV1ZShBYnN0cmFjdFBhdGNo
UXVldWUsIFN0ZXBTZXF1ZW5jZUVycm9ySGFuZGxlciwgQ29tbWl0UXVldWVUYXNrRAogICAgIGRl
ZiBleHBlY3RlZF9mYWlsdXJlcyhzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuX2V4cGVjdGVk
X2ZhaWx1cmVzCiAKLSAgICBkZWYgbGF5b3V0X3Rlc3RfcmVzdWx0cyhzZWxmKToKKyAgICBkZWYg
dGVzdF9yZXN1bHRzKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5fbGF5b3V0X3Rlc3RfcmVz
dWx0c19yZWFkZXIucmVzdWx0cygpCiAKLSAgICBkZWYgYXJjaGl2ZV9sYXN0X2xheW91dF90ZXN0
X3Jlc3VsdHMoc2VsZiwgcGF0Y2gpOgorICAgIGRlZiBhcmNoaXZlX2xhc3RfdGVzdF9yZXN1bHRz
KHNlbGYsIHBhdGNoKToKICAgICAgICAgcmV0dXJuIHNlbGYuX2xheW91dF90ZXN0X3Jlc3VsdHNf
cmVhZGVyLmFyY2hpdmUocGF0Y2gpCiAKICAgICBkZWYgYnVpbGRfc3R5bGUoc2VsZik6CmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVldWVzX3VuaXR0
ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1ZXVlc191bml0
dGVzdC5weQppbmRleCBhMDhkNDVmMDIwZTRjMDZmMTZlNDJlYTllODI1ZDMxMDY3YTBlNGEzLi4x
YzJkNTdiMWMxNzBkYmMzMTFiMzRlZDU3MmVlZGJkM2JhYmI1MGViIDEwMDY0NAotLS0gYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVldWVzX3VuaXR0ZXN0LnB5CisrKyBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9xdWV1ZXNfdW5pdHRlc3QucHkK
QEAgLTIzMiw2ICsyMzIsNyBAQCBjbGFzcyBDb21taXRRdWV1ZVRlc3QoUXVldWVzVGVzdCk6CiAg
ICAgZGVmIHRlc3RfY29tbWl0X3F1ZXVlKHNlbGYpOgogICAgICAgICB0b29sID0gTW9ja1Rvb2wo
KQogICAgICAgICB0b29sLmZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9maWxlKCcvbW9jay1yZXN1bHRz
L2Z1bGxfcmVzdWx0cy5qc29uJywgJycpICAjIE90aGVyd2lzZSB0aGUgY29tbWl0LXF1ZXVlIHdp
bGwgaGl0IGEgS2V5RXJyb3IgdHJ5aW5nIHRvIHJlYWQgdGhlIHJlc3VsdHMgZnJvbSB0aGUgTW9j
a0ZpbGVTeXN0ZW0uCisgICAgICAgIHRvb2wuZmlsZXN5c3RlbS53cml0ZV90ZXh0X2ZpbGUoJy9t
b2NrLXJlc3VsdHMvd2Via2l0X3VuaXRfdGVzdHNfb3V0cHV0LnhtbCcsICcnKQogICAgICAgICBl
eHBlY3RlZF9zdGRlcnIgPSB7CiAgICAgICAgICAgICAiYmVnaW5fd29ya19xdWV1ZSI6IHNlbGYu
X2RlZmF1bHRfYmVnaW5fd29ya19xdWV1ZV9zdGRlcnIoImNvbW1pdC1xdWV1ZSIpLAogICAgICAg
ICAgICAgIm5leHRfd29ya19pdGVtIjogIiIsCkBAIC0zMTAsNiArMzExLDcgQEAgTU9DSzogcmVs
ZWFzZV93b3JrX2l0ZW06IGNvbW1pdC1xdWV1ZSAxMDAwMAogICAgIGRlZiB0ZXN0X3JvbGxvdXQo
c2VsZik6CiAgICAgICAgIHRvb2wgPSBNb2NrVG9vbChsb2dfZXhlY3V0aXZlPVRydWUpCiAgICAg
ICAgIHRvb2wuZmlsZXN5c3RlbS53cml0ZV90ZXh0X2ZpbGUoJy9tb2NrLXJlc3VsdHMvZnVsbF9y
ZXN1bHRzLmpzb24nLCAnJykgICMgT3RoZXJ3aXNlIHRoZSBjb21taXQtcXVldWUgd2lsbCBoaXQg
YSBLZXlFcnJvciB0cnlpbmcgdG8gcmVhZCB0aGUgcmVzdWx0cyBmcm9tIHRoZSBNb2NrRmlsZVN5
c3RlbS4KKyAgICAgICAgdG9vbC5maWxlc3lzdGVtLndyaXRlX3RleHRfZmlsZSgnL21vY2stcmVz
dWx0cy93ZWJraXRfdW5pdF90ZXN0c19vdXRwdXQueG1sJywgJycpCiAgICAgICAgIHRvb2wuYnVp
bGRib3QubGlnaHRfdHJlZV9vbl9maXJlKCkKICAgICAgICAgZXhwZWN0ZWRfc3RkZXJyID0gewog
ICAgICAgICAgICAgImJlZ2luX3dvcmtfcXVldWUiOiBzZWxmLl9kZWZhdWx0X2JlZ2luX3dvcmtf
cXVldWVfc3RkZXJyKCJjb21taXQtcXVldWUiKSwKQEAgLTM4MSw2ICszODMsNyBAQCBNT0NLOiBy
ZWxlYXNlX3dvcmtfaXRlbTogY29tbWl0LXF1ZXVlIDEwMDA1CiAgICAgICAgIHF1ZXVlID0gU2Vj
b25kVGhvdWdodHNDb21taXRRdWV1ZShNb2NrVG9vbCgpKQogICAgICAgICBxdWV1ZS5iZWdpbl93
b3JrX3F1ZXVlKCkKICAgICAgICAgcXVldWUuX3Rvb2wuZmlsZXN5c3RlbS53cml0ZV90ZXh0X2Zp
bGUoJy9tb2NrLXJlc3VsdHMvZnVsbF9yZXN1bHRzLmpzb24nLCAnJykgICMgT3RoZXJ3aXNlIHRo
ZSBjb21taXQtcXVldWUgd2lsbCBoaXQgYSBLZXlFcnJvciB0cnlpbmcgdG8gcmVhZCB0aGUgcmVz
dWx0cyBmcm9tIHRoZSBNb2NrRmlsZVN5c3RlbS4KKyAgICAgICAgcXVldWUuX3Rvb2wuZmlsZXN5
c3RlbS53cml0ZV90ZXh0X2ZpbGUoJy9tb2NrLXJlc3VsdHMvd2Via2l0X3VuaXRfdGVzdHNfb3V0
cHV0LnhtbCcsICcnKQogICAgICAgICBxdWV1ZS5fb3B0aW9ucyA9IE1vY2soKQogICAgICAgICBx
dWV1ZS5fb3B0aW9ucy5wb3J0ID0gTm9uZQogICAgICAgICBleHBlY3RlZF9zdGRlcnIgPSAiIiJN
T0NLOiB1cGRhdGVfc3RhdHVzOiBjb21taXQtcXVldWUgQ2xlYW5lZCB3b3JraW5nIGRpcmVjdG9y
eQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3J1bnRlc3Rz
LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3J1bnRlc3RzLnB5CmluZGV4
IDc1OGUzNmIwNDBlNmFiOTY3ZjdkNGM4YzNjZWExMDNlOTUzMGE2NzQuLmFjNTQ5M2I0ZTdkNDZi
OTYzYTJmMDg0YjIzYWM1ZDdiNmRhZGQ1NDIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdG9vbC9zdGVwcy9ydW50ZXN0cy5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L3Rvb2wvc3RlcHMvcnVudGVzdHMucHkKQEAgLTI5LDYgKzI5LDcgQEAKIGZyb20gd2Via2l0cHku
dG9vbC5zdGVwcy5hYnN0cmFjdHN0ZXAgaW1wb3J0IEFic3RyYWN0U3RlcAogZnJvbSB3ZWJraXRw
eS50b29sLnN0ZXBzLm9wdGlvbnMgaW1wb3J0IE9wdGlvbnMKIGZyb20gd2Via2l0cHkuY29tbW9u
LnN5c3RlbS5kZXByZWNhdGVkX2xvZ2dpbmcgaW1wb3J0IGxvZworZnJvbSB3ZWJraXRweS5jb21t
b24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgU2NyaXB0RXJyb3IKIAogY2xhc3MgUnVuVGVzdHMo
QWJzdHJhY3RTdGVwKToKICAgICAjIEZJWE1FOiBUaGlzIGtub3dsZWRnZSByZWFsbHkgYmVsb25n
cyBpbiB0aGUgY29tbWl0LXF1ZXVlLgpAQCAtNjQsMTAgKzY1LDE2IEBAIGNsYXNzIFJ1blRlc3Rz
KEFic3RyYWN0U3RlcCk6CiAgICAgICAgICAgICAgICAgbG9nKCJSdW5uaW5nIEphdmFTY3JpcHRD
b3JlIHRlc3RzIikKICAgICAgICAgICAgICAgICBzZWxmLl90b29sLmV4ZWN1dGl2ZS5ydW5fYW5k
X3Rocm93X2lmX2ZhaWwoamF2YXNjcmlwdGNvcmVfdGVzdHNfY29tbWFuZCwgcXVpZXQ9VHJ1ZSwg
Y3dkPXNlbGYuX3Rvb2wuc2NtKCkuY2hlY2tvdXRfcm9vdCkKIAotICAgICAgICAgICAgd2Via2l0
X3VuaXRfdGVzdHNfY29tbWFuZCA9IHNlbGYuX3Rvb2wucG9ydCgpLnJ1bl93ZWJraXRfdW5pdF90
ZXN0c19jb21tYW5kKCkKLSAgICAgICAgICAgIGlmIHdlYmtpdF91bml0X3Rlc3RzX2NvbW1hbmQ6
Ci0gICAgICAgICAgICAgICAgbG9nKCJSdW5uaW5nIFdlYktpdCB1bml0IHRlc3RzIikKLSAgICAg
ICAgICAgICAgICBzZWxmLl90b29sLmV4ZWN1dGl2ZS5ydW5fYW5kX3Rocm93X2lmX2ZhaWwod2Vi
a2l0X3VuaXRfdGVzdHNfY29tbWFuZCwgY3dkPXNlbGYuX3Rvb2wuc2NtKCkuY2hlY2tvdXRfcm9v
dCkKKyAgICAgICAgd2Via2l0X3VuaXRfdGVzdHNfY29tbWFuZCA9IHNlbGYuX3Rvb2wucG9ydCgp
LnJ1bl93ZWJraXRfdW5pdF90ZXN0c19jb21tYW5kKCkKKyAgICAgICAgaWYgd2Via2l0X3VuaXRf
dGVzdHNfY29tbWFuZDoKKyAgICAgICAgICAgIGxvZygiUnVubmluZyBXZWJLaXQgdW5pdCB0ZXN0
cyIpCisgICAgICAgICAgICBhcmdzID0gd2Via2l0X3VuaXRfdGVzdHNfY29tbWFuZAorICAgICAg
ICAgICAgaWYgc2VsZi5fb3B0aW9ucy5ub25faW50ZXJhY3RpdmU6CisgICAgICAgICAgICAgICAg
YXJncy5hcHBlbmQoIi0tZ3Rlc3Rfb3V0cHV0PXhtbDolcy93ZWJraXRfdW5pdF90ZXN0c19vdXRw
dXQueG1sIiAlIHNlbGYuX3Rvb2wucG9ydCgpLnJlc3VsdHNfZGlyZWN0b3J5KQorICAgICAgICAg
ICAgdHJ5OgorICAgICAgICAgICAgICAgIHNlbGYuX3Rvb2wuZXhlY3V0aXZlLnJ1bl9hbmRfdGhy
b3dfaWZfZmFpbChhcmdzLCBjd2Q9c2VsZi5fdG9vbC5zY20oKS5jaGVja291dF9yb290KQorICAg
ICAgICAgICAgZXhjZXB0IFNjcmlwdEVycm9yLCBlOgorICAgICAgICAgICAgICAgIGxvZygiRXJy
b3IgcnVubmluZyB3ZWJraXRfdW5pdF90ZXN0czogJXMiICUgZS5tZXNzYWdlX3dpdGhfb3V0cHV0
KCkpCiAKICAgICAgICAgbG9nKCJSdW5uaW5nIHJ1bi13ZWJraXQtdGVzdHMiKQogICAgICAgICBh
cmdzID0gc2VsZi5fdG9vbC5wb3J0KCkucnVuX3dlYmtpdF90ZXN0c19jb21tYW5kKCkKZGlmZiAt
LWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9ydW50ZXN0c191bml0dGVz
dC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9ydW50ZXN0c191bml0dGVz
dC5weQppbmRleCA5NzJmZmI5NzdjN2E2ZTYzMjc5NDhhNmNiNmYxMGNkMzAzNGQ5YTkzLi5mZDg5
Y2E5NDY1OGU3NzBmNGMzYWE0NjFhNTc0Y2FhNDU2YWM3ZWViIDEwMDY0NAotLS0gYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvcnVudGVzdHNfdW5pdHRlc3QucHkKKysrIGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3J1bnRlc3RzX3VuaXR0ZXN0LnB5CkBAIC0z
MywxMiArMzMsMTQgQEAgZnJvbSB3ZWJraXRweS50b29sLm1vY2t0b29sIGltcG9ydCBNb2NrT3B0
aW9ucywgTW9ja1Rvb2wKIGZyb20gd2Via2l0cHkudG9vbC5zdGVwcy5ydW50ZXN0cyBpbXBvcnQg
UnVuVGVzdHMKIAogY2xhc3MgUnVuVGVzdHNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBk
ZWYgdGVzdF9ub191bml0X3Rlc3RzKHNlbGYpOgorICAgIGRlZiB0ZXN0X3dlYmtpdF9ydW5fdW5p
dF90ZXN0cyhzZWxmKToKICAgICAgICAgdG9vbCA9IE1vY2tUb29sKGxvZ19leGVjdXRpdmU9VHJ1
ZSkKICAgICAgICAgdG9vbC5fZGVwcmVjYXRlZF9wb3J0LnJ1bl9weXRob25fdW5pdHRlc3RzX2Nv
bW1hbmQgPSBsYW1iZGE6IE5vbmUKICAgICAgICAgdG9vbC5fZGVwcmVjYXRlZF9wb3J0LnJ1bl9w
ZXJsX3VuaXR0ZXN0c19jb21tYW5kID0gbGFtYmRhOiBOb25lCiAgICAgICAgIHN0ZXAgPSBSdW5U
ZXN0cyh0b29sLCBNb2NrT3B0aW9ucyh0ZXN0PVRydWUsIG5vbl9pbnRlcmFjdGl2ZT1UcnVlLCBx
dWlldD1GYWxzZSkpCi0gICAgICAgIGV4cGVjdGVkX3N0ZGVyciA9ICIiIlJ1bm5pbmcgcnVuLXdl
YmtpdC10ZXN0cworICAgICAgICBleHBlY3RlZF9zdGRlcnIgPSAiIiJSdW5uaW5nIFdlYktpdCB1
bml0IHRlc3RzCitNT0NLIHJ1bl9hbmRfdGhyb3dfaWZfZmFpbDogWydtb2NrLXJ1bi13ZWJraXQt
dW5pdC10ZXN0cycsICctLWd0ZXN0X291dHB1dD14bWw6L21vY2stcmVzdWx0cy93ZWJraXRfdW5p
dF90ZXN0c19vdXRwdXQueG1sJ10sIGN3ZD0vbW9jay1jaGVja291dAorUnVubmluZyBydW4td2Vi
a2l0LXRlc3RzCiBNT0NLIHJ1bl9hbmRfdGhyb3dfaWZfZmFpbDogWydtb2NrLXJ1bi13ZWJraXQt
dGVzdHMnLCAnLS1uby1uZXctdGVzdC1yZXN1bHRzJywgJy0tbm8tbGF1bmNoLXNhZmFyaScsICct
LXNraXAtZmFpbGluZy10ZXN0cycsICctLWV4aXQtYWZ0ZXItbi1mYWlsdXJlcz0zMCcsICctLXJl
c3VsdHMtZGlyZWN0b3J5PS9tb2NrLXJlc3VsdHMnLCAnLS1wcmludD1hY3R1YWwsY29uZmlnLGV4
cGVjdGVkLG1pc2Msc2xvd2VzdCx1bmV4cGVjdGVkLHVuZXhwZWN0ZWQtcmVzdWx0cyddLCBjd2Q9
L21vY2stY2hlY2tvdXQKICIiIgogICAgICAgICBPdXRwdXRDYXB0dXJlKCkuYXNzZXJ0X291dHB1
dHMoc2VsZiwgc3RlcC5ydW4sIFt7fV0sIGV4cGVjdGVkX3N0ZGVycj1leHBlY3RlZF9zdGRlcnIp
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136194</attachid>
            <date>2012-04-09 00:46:01 -0700</date>
            <delta_ts>2012-04-09 00:55:19 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-83329-20120409004600.patch</filename>
            <type>text/plain</type>
            <size>3464</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzNTU2CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZjRiYTIwODUwYjE0MGMwYjcwNTQ2NTgxYmNiNGM0NDRl
NDM1ZjI0Zi4uNzAzNTg3OWYwNGM0OTY4ZTE1ZjcyYWRiMmIwYTY4MmMwMGFkNzViMCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4
IEBACisyMDEyLTA0LTA5ICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KKworICAgICAg
ICBFbmFibGUgd2Via2l0X3VuaXRfdGVzdHMgZm9yIGNvbW1pdCBxdWV1ZSBhbmQgRVdTIHdoaWxl
IHRyYWNraW5nIGZhaWx1cmVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD04MzMyOQorCisgICAgICAgIFVucmV2aWV3ZWQuICBBZGQgYSBtaXNzaW5nIGlt
cG9ydCB0byB1bmJyZWFrIGFsbCB0aGUgQ2hyb21pdW0gRVdTL0NRIGJvdHMuIDopCisKKyAgICAg
ICAgbGluZSA2MiwgaW4gX2NyZWF0ZV91bml0X3Rlc3RfcmVzdWx0cworICAgICAgICAgcmV0dXJu
IFVuaXRUZXN0UmVzdWx0cy5yZXN1bHRzX2Zyb21fc3RyaW5nKHJlc3VsdHNfeG1sKQorICAgICAg
ICAgTmFtZUVycm9yOiBnbG9iYWwgbmFtZSAnVW5pdFRlc3RSZXN1bHRzJyBpcyBub3QgZGVmaW5l
ZAorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9sYXlvdXR0ZXN0cmVzdWx0
c3JlYWRlci5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2xheW91dHRl
c3RyZXN1bHRzcmVhZGVyX3VuaXR0ZXN0LnB5OgorICAgICAgICAoTGF5b3V0VGVzdFJlc3VsdHNS
ZWFkZXJUZXN0LnRlc3RfY3JlYXRlX3VuaXRfdGVzdF9yZXN1bHRzKToKKwogMjAxMi0wNC0wOCAg
QWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFRoZSBwb3J0IG9iamVj
dCBpcyBtaXNzaW5nIHVuaXRfdGVzdHNfcmVzdWx0c19wYXRoCmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2xheW91dHRlc3RyZXN1bHRzcmVhZGVyLnB5IGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9sYXlvdXR0ZXN0cmVzdWx0c3JlYWRlci5weQpp
bmRleCA0N2RlYTZmNTlhZjhlNzUzNzhmMDg4NTNlYTMzY2EwZjkxMzUwOGEwLi45NGE3MGIyYmM1
MmE5ZjQ2YmJmYjlkMGU0ZjZiMjg2NjI0MTBlZjQ0IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L3Rvb2wvYm90L2xheW91dHRlc3RyZXN1bHRzcmVhZGVyLnB5CisrKyBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvbGF5b3V0dGVzdHJlc3VsdHNyZWFkZXIucHkKQEAg
LTI3LDYgKzI3LDcgQEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogZnJvbSB3ZWJraXRweS5jb21tb24ubmV0
LmxheW91dHRlc3RyZXN1bHRzIGltcG9ydCBMYXlvdXRUZXN0UmVzdWx0cworZnJvbSB3ZWJraXRw
eS5jb21tb24ubmV0LnVuaXR0ZXN0cmVzdWx0cyBpbXBvcnQgVW5pdFRlc3RSZXN1bHRzCiBmcm9t
IHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZGVwcmVjYXRlZF9sb2dnaW5nIGltcG9ydCBlcnJvciwg
bG9nCiBmcm9tIHdlYmtpdHB5LnRvb2wuc3RlcHMucnVudGVzdHMgaW1wb3J0IFJ1blRlc3RzCiAK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvbGF5b3V0dGVzdHJl
c3VsdHNyZWFkZXJfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90
L2xheW91dHRlc3RyZXN1bHRzcmVhZGVyX3VuaXR0ZXN0LnB5CmluZGV4IDAxYTY1ZmI4MWE0ODBm
NmYzYWFkYTg4OWIyMWEyNzkzYWJjNTFkNzAuLjBlYjM0ODI5NzdlM2MzNzQ3OTJiNzkwNjdhYThk
NGQ3YTJjOGZhZWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3Qv
bGF5b3V0dGVzdHJlc3VsdHNyZWFkZXJfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL2JvdC9sYXlvdXR0ZXN0cmVzdWx0c3JlYWRlcl91bml0dGVzdC5weQpAQCAt
NDksNiArNDksMjEgQEAgY2xhc3MgTGF5b3V0VGVzdFJlc3VsdHNSZWFkZXJUZXN0KHVuaXR0ZXN0
LlRlc3RDYXNlKToKICAgICAgICAgIyBsYXlvdXRfdGVzdF9yZXN1bHRzIHNob3VsZG4ndCByYWlz
ZSBldmVuIGlmIHRoZSByZXN1bHRzLmh0bWwgZmlsZSBpcyBtaXNzaW5nLgogICAgICAgICBzZWxm
LmFzc2VydEVxdWFscyhyZWFkZXIucmVzdWx0cygpLCBOb25lKQogCisgICAgZGVmIHRlc3RfY3Jl
YXRlX3VuaXRfdGVzdF9yZXN1bHRzKHNlbGYpOgorICAgICAgICB0b29sID0gTW9ja1Rvb2woKQor
ICAgICAgICByZWFkZXIgPSBMYXlvdXRUZXN0UmVzdWx0c1JlYWRlcih0b29sLCAiL3Zhci9sb2dz
IikKKyAgICAgICAgdW5pdF90ZXN0c19yZXN1bHRzX3BhdGggPSAnL21vY2stcmVzdWx0cy93ZWJr
aXRfdW5pdF90ZXN0c19vdXRwdXQueG1sJworICAgICAgICBub19mYWlsdXJlc194bWwgPSAiIiI8
P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHRlc3RzdWl0ZXMgdGVzdHM9
IjMiIGZhaWx1cmVzPSIwIiBkaXNhYmxlZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIxMS4zNSIgbmFt
ZT0iQWxsVGVzdHMiPgorICA8dGVzdHN1aXRlIG5hbWU9IlJlbmRlclRhYmxlQ2VsbERlYXRoVGVz
dCIgdGVzdHM9IjMiIGZhaWx1cmVzPSIwIiBkaXNhYmxlZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIw
LjY3NyI+CisgICAgPHRlc3RjYXNlIG5hbWU9IkNhblNldENvbHVtbiIgc3RhdHVzPSJydW4iIHRp
bWU9IjAuMTY4IiBjbGFzc25hbWU9IlJlbmRlclRhYmxlQ2VsbERlYXRoVGVzdCIgLz4KKyAgICA8
dGVzdGNhc2UgbmFtZT0iQ3Jhc2hJZlNldHRpbmdVbnNldENvbHVtbkluZGV4IiBzdGF0dXM9InJ1
biIgdGltZT0iMC4xMjkiIGNsYXNzbmFtZT0iUmVuZGVyVGFibGVDZWxsRGVhdGhUZXN0IiAvPgor
ICAgIDx0ZXN0Y2FzZSBuYW1lPSJDcmFzaElmU2V0dGluZ1Vuc2V0Um93SW5kZXgiIHN0YXR1cz0i
cnVuIiB0aW1lPSIwLjEyMyIgY2xhc3NuYW1lPSJSZW5kZXJUYWJsZUNlbGxEZWF0aFRlc3QiIC8+
CisgIDwvdGVzdHN1aXRlPgorPC90ZXN0c3VpdGVzPiIiIgorICAgICAgICB0b29sLmZpbGVzeXN0
ZW0gPSBNb2NrRmlsZVN5c3RlbSh7dW5pdF90ZXN0c19yZXN1bHRzX3BhdGg6IG5vX2ZhaWx1cmVz
X3htbH0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHJlYWRlci5fY3JlYXRlX3VuaXRfdGVz
dF9yZXN1bHRzKCksIFtdKQorCiAgICAgZGVmIHRlc3RfbWlzc2luZ191bml0X3Rlc3RfcmVzdWx0
c19wYXRoKHNlbGYpOgogICAgICAgICB0b29sID0gTW9ja1Rvb2woKQogICAgICAgICB0b29sLnBv
cnQoKS51bml0X3Rlc3RzX3Jlc3VsdHNfcGF0aCA9IGxhbWJkYTogTm9uZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>