<?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>44939</bug_id>
          
          <creation_ts>2010-08-31 03:07:10 -0700</creation_ts>
          <short_desc>Web Inspector: move debugger tests to the new test harness</short_desc>
          <delta_ts>2010-09-01 05:13:45 -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>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>0</everconfirmed>
          <reporter name="Pavel Podivilov">podivilov</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bweinstein</cc>
    
    <cc>commit-queue</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>272006</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2010-08-31 03:07:10 -0700</bug_when>
    <thetext>Web Inspector: move debugger tests to the new test harness</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272007</commentid>
    <comment_count>1</comment_count>
      <attachid>66026</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2010-08-31 03:08:04 -0700</bug_when>
    <thetext>Created attachment 66026
Proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272047</commentid>
    <comment_count>2</comment_count>
      <attachid>66026</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-08-31 05:17:42 -0700</bug_when>
    <thetext>Comment on attachment 66026
Proposed patch.

btw, what&apos;s the point in switching debugger tests to inspector-tests2.js?

&gt; LayoutTests/http/tests/inspector/inspector-test2.js:164
&gt; +    dumpedResultsCount = results.length;
Please keep this counter on the front-end(or even get rid of it completely) and slice results array before passing it here.

&gt; LayoutTests/inspector/debugger-cyclic-ref-expected.txt:4
&gt; -Set timer for test function.
Why is this gone?

&gt; LayoutTests/inspector/debugger-cyclic-ref.html:13
&gt; -    notifyDone();
This should be called after we left debugger code, you cannot simply invoke this code from the front-end(see the change that introduced this line). r- for that.

&gt; LayoutTests/inspector/debugger-eval-while-paused.html:12
&gt; -    notifyDone();
This should be reverted.

&gt; LayoutTests/inspector/debugger-no-nested-pause.html:11
&gt; -    if (testFunction.didExitFromNestedCall)
Now the test will pass even if testFunction is executed only once.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272130</commentid>
    <comment_count>3</comment_count>
      <attachid>66063</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2010-08-31 09:17:19 -0700</bug_when>
    <thetext>Created attachment 66063
Proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272140</commentid>
    <comment_count>4</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2010-08-31 09:27:23 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 66026 [details])
&gt; btw, what&apos;s the point in switching debugger tests to inspector-tests2.js?
The point was to fully support tests that require page reloading.
Also, other tests are easier with new test harness.

&gt; 
&gt; &gt; LayoutTests/http/tests/inspector/inspector-test2.js:164
&gt; &gt; +    dumpedResultsCount = results.length;
&gt; Please keep this counter on the front-end(or even get rid of it completely) and slice results array before passing it here.
done

&gt; 
&gt; &gt; LayoutTests/inspector/debugger-cyclic-ref-expected.txt:4
&gt; &gt; -Set timer for test function.
&gt; Why is this gone?
restored

&gt; 
&gt; &gt; LayoutTests/inspector/debugger-cyclic-ref.html:13
&gt; &gt; -    notifyDone();
&gt; This should be called after we left debugger code, you cannot simply invoke this code from the front-end(see the change that introduced this line). r- for that.
&gt; 
&gt; &gt; LayoutTests/inspector/debugger-eval-while-paused.html:12
&gt; &gt; -    notifyDone();
&gt; This should be reverted.
InspectorTest.completeDebuggerTest always waits for WebInspector.resumedScript call before closing inspector. WebInspector.resumedScript is called from InspectorDebuggerAgent::didContinue which is outside nested message loop.
So it should be safe to use completeDebuggerTest function.

&gt; 
&gt; &gt; LayoutTests/inspector/debugger-no-nested-pause.html:11
&gt; &gt; -    if (testFunction.didExitFromNestedCall)
&gt; Now the test will pass even if testFunction is executed only once.
We dump invocationCount at the end of the test, so the test won&apos;t actually pass in that case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272157</commentid>
    <comment_count>5</comment_count>
      <attachid>66063</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-08-31 09:56:45 -0700</bug_when>
    <thetext>Comment on attachment 66063
Proposed patch.

&gt; LayoutTests/http/tests/inspector/inspector-test2.js:145
&gt; +function onload()
I&apos;d rather keep the old name which was more descriptive. 

&gt; LayoutTests/inspector/extensions-api.html:15
&gt; +&lt;body onload=&quot;onload()&quot;&gt;
please revert this</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272158</commentid>
    <comment_count>6</comment_count>
      <attachid>66063</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-08-31 09:57:34 -0700</bug_when>
    <thetext>Comment on attachment 66063
Proposed patch.

Please revert onload-&gt;runTest renaming before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272729</commentid>
    <comment_count>7</comment_count>
      <attachid>66192</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2010-09-01 03:46:38 -0700</bug_when>
    <thetext>Created attachment 66192
Proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272730</commentid>
    <comment_count>8</comment_count>
      <attachid>66193</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2010-09-01 03:50:29 -0700</bug_when>
    <thetext>Created attachment 66193
Proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272731</commentid>
    <comment_count>9</comment_count>
      <attachid>66194</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2010-09-01 03:53:36 -0700</bug_when>
    <thetext>Created attachment 66194
Proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272757</commentid>
    <comment_count>10</comment_count>
      <attachid>66194</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-09-01 05:13:40 -0700</bug_when>
    <thetext>Comment on attachment 66194
Proposed patch.

Clearing flags on attachment: 66194

Committed r66596: &lt;http://trac.webkit.org/changeset/66596&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272758</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-09-01 05:13:45 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>66026</attachid>
            <date>2010-08-31 03:08:04 -0700</date>
            <delta_ts>2010-08-31 09:17:19 -0700</delta_ts>
            <desc>Proposed patch.</desc>
            <filename>tests.patch</filename>
            <type>text/plain</type>
            <size>54532</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwMWMwMDRmLi5kNDk5YTE5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTkgQEAKKzIwMTAtMDgt
MzEgIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogbW92
ZSBkZWJ1Z2dlciB0ZXN0cyB0byB0aGUgbmV3IHRlc3QgaGFybmVzcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQ5MzkKKworICAgICAgICAqIGh0dHAv
dGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXRlc3QuanM6IFJlbW92ZWQuCisgICAgICAgICogaHR0
cC90ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItdGVzdDIuanM6CisgICAgICAgIChpbml0aWFsaXpl
X0RlYnVnZ2VyVGVzdC5JbnNwZWN0b3JUZXN0LnN0YXJ0RGVidWdnZXJUZXN0LnN0YXJ0VGVzdCk6
CisgICAgICAgIChpbml0aWFsaXplX0RlYnVnZ2VyVGVzdC5JbnNwZWN0b3JUZXN0LnN0YXJ0RGVi
dWdnZXJUZXN0KToKKyAgICAgICAgKGluaXRpYWxpemVfRGVidWdnZXJUZXN0Lkluc3BlY3RvclRl
c3QuY29tcGxldGVEZWJ1Z2dlclRlc3QuZGlzYWJsZURlYnVnZ2VyKToKKyAgICAgICAgKGluaXRp
YWxpemVfRGVidWdnZXJUZXN0Lkluc3BlY3RvclRlc3Qud2FpdFVudGlsUGF1c2VkKToKKyAgICAg
ICAgKGluaXRpYWxpemVfRGVidWdnZXJUZXN0Lkluc3BlY3RvclRlc3Qud2FpdFVudGlsUmVzdW1l
ZCk6CisgICAgICAgIChpbml0aWFsaXplX0RlYnVnZ2VyVGVzdC5JbnNwZWN0b3JUZXN0LnJlc3Vt
ZUV4ZWN1dGlvbik6CisgICAgICAgIChpbml0aWFsaXplX0RlYnVnZ2VyVGVzdC5JbnNwZWN0b3JU
ZXN0LmNhcHR1cmVTdGFja1RyYWNlKToKKyAgICAgICAgKGluaXRpYWxpemVfRGVidWdnZXJUZXN0
Lkluc3BlY3RvclRlc3QuX3BhdXNlZFNjcmlwdCk6CisgICAgICAgIChpbml0aWFsaXplX0RlYnVn
Z2VyVGVzdC5JbnNwZWN0b3JUZXN0Ll9yZXN1bWVkU2NyaXB0KToKKyAgICAgICAgKGluaXRpYWxp
emVfRGVidWdnZXJUZXN0Lkluc3BlY3RvclRlc3Qud2FpdFVudGlsQ3VycmVudFNvdXJjZUZyYW1l
SXNMb2FkZWQpOgorICAgICAgICAoaW5pdGlhbGl6ZV9EZWJ1Z2dlclRlc3QuSW5zcGVjdG9yVGVz
dC5fc2hvd1NjcmlwdFNvdXJjZSk6CisgICAgICAgIChpbml0aWFsaXplX0RlYnVnZ2VyVGVzdC5J
bnNwZWN0b3JUZXN0LmV4cGFuZFByb3BlcnRpZXMuZXhwYW5kTmV4dFBhdGgpOgorICAgICAgICAo
aW5pdGlhbGl6ZV9EZWJ1Z2dlclRlc3QuSW5zcGVjdG9yVGVzdC5leHBhbmRQcm9wZXJ0aWVzKToK
KyAgICAgICAgKGluaXRpYWxpemVfRGVidWdnZXJUZXN0Lkluc3BlY3RvclRlc3QuX2V4cGFuZFBy
b3BlcnR5KToKKyAgICAgICAgKGluaXRpYWxpemVfRGVidWdnZXJUZXN0Lkluc3BlY3RvclRlc3Qu
X2ZpbmRDaGlsZFByb3BlcnR5VHJlZUVsZW1lbnQpOgorICAgICAgICAoaW5pdGlhbGl6ZV9EZWJ1
Z2dlclRlc3QpOgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0
Mi5qczoKKyAgICAgICAgKGluaXRpYWxpemVfSW5zcGVjdG9yVGVzdC5JbnNwZWN0b3JUZXN0LmNv
bXBsZXRlVGVzdCk6CisgICAgICAgIChpbml0aWFsaXplX0luc3BlY3RvclRlc3QuSW5zcGVjdG9y
VGVzdC5ldmFsdWF0ZUluUGFnZSk6CisgICAgICAgIChpbml0aWFsaXplX0luc3BlY3RvclRlc3Qu
SW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQpOgorICAgICAgICAoaW5pdGlhbGl6ZV9JbnNwZWN0b3JU
ZXN0Lkluc3BlY3RvclRlc3QucnVuQWZ0ZXJQZW5kaW5nRGlzcGF0Y2hlcyk6CisgICAgICAgIChp
bml0aWFsaXplX0luc3BlY3RvclRlc3QuSW5zcGVjdG9yVGVzdC5fYWRkU25pZmZlcik6CisgICAg
ICAgIChkaWRFdmFsdWF0ZUZvclRlc3RJbkZyb250ZW5kKToKKyAgICAgICAgKGR1bXBBcnJheSk6
CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyLWJyZWFrcG9pbnRzLW5vdC1hY3RpdmF0ZWQt
b24tcmVsb2FkLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyLWN5Y2xpYy1yZWYt
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci1jeWNsaWMtcmVmLmh0
bWw6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyLWV2YWwtd2hpbGUtcGF1c2VkLWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXItZXZhbC13aGlsZS1wYXVzZWQu
aHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXItbm8tbmVzdGVkLXBhdXNlLWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXItbm8tbmVzdGVkLXBhdXNlLmh0
bWw6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyLXBhdXNlLWluLWV2YWwtc2NyaXB0LWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXItcGF1c2UtaW4tZXZhbC1z
Y3JpcHQuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXItcGF1c2Utb24tZGVidWdn
ZXItc3RhdGVtZW50LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIt
cGF1c2Utb24tZGVidWdnZXItc3RhdGVtZW50Lmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2Rl
YnVnZ2VyLXByb3RvLXByb3BlcnR5LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZGVidWdnZXItcHJvdG8tcHJvcGVydHkuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdn
ZXItc3RlcC1pbi1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyLXN0
ZXAtaW4uaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXItc3RlcC1vdXQtZXhwZWN0
ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci1zdGVwLW91dC5odG1sOgorICAg
ICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci1zdGVwLW92ZXItZXhwZWN0ZWQudHh0OgorICAgICAg
ICAqIGluc3BlY3Rvci9kZWJ1Z2dlci1zdGVwLW92ZXIuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvZG9tLWJyZWFrcG9pbnRzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZG9t
LWJyZWFrcG9pbnRzLmh0bWw6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vaW5zcGVjdG9y
L2RlYnVnZ2VyLXN0ZXAtaW4tZXhwZWN0ZWQudHh0OgorCiAyMDEwLTA4LTMxICBKaWFuIExpICA8
amlhbmxpQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVcGRhdGUgY2hyb21pdW0gdGVzdCByZXN1
bHQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dl
ci10ZXN0LmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItdGVz
dC5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGY4NzAxMy4uMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci10ZXN0LmpzCisrKyAv
ZGV2L251bGwKQEAgLTEsMTEzICswLDAgQEAKLQotZnVuY3Rpb24gZnJvbnRlbmRfZW5zdXJlRGVi
dWdnZXJFbmFibGVkKGNhbGxiYWNrKQotewotICAgIGlmIChXZWJJbnNwZWN0b3IucGFuZWxzLnNj
cmlwdHMuX2RlYnVnZ2VyRW5hYmxlZCkgewotICAgICAgICBjYWxsYmFjaygpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgZnJvbnRlbmRfYWRkU25pZmZlcihXZWJJbnNwZWN0b3IsICJk
ZWJ1Z2dlcldhc0VuYWJsZWQiLCBjYWxsYmFjayk7Ci0gICAgV2ViSW5zcGVjdG9yLnBhbmVscy5z
Y3JpcHRzLl90b2dnbGVEZWJ1Z2dpbmcoZmFsc2UpOwotfQotCi1mdW5jdGlvbiBmcm9udGVuZF9l
bnN1cmVEZWJ1Z2dlckRpc2FibGVkKGNhbGxiYWNrKQotewotICAgIGlmICghV2ViSW5zcGVjdG9y
LnBhbmVscy5zY3JpcHRzLl9kZWJ1Z2dlckVuYWJsZWQpIHsKLSAgICAgICAgY2FsbGJhY2soKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGZyb250ZW5kX2FkZFNuaWZmZXIoV2ViSW5z
cGVjdG9yLCAiZGVidWdnZXJXYXNEaXNhYmxlZCIsIGNhbGxiYWNrKTsKLSAgICBXZWJJbnNwZWN0
b3IucGFuZWxzLnNjcmlwdHMuX3RvZ2dsZURlYnVnZ2luZyhmYWxzZSk7Ci19Ci0KLWZ1bmN0aW9u
IGZyb250ZW5kX2NvbXBsZXRlRGVidWdnZXJUZXN0KHRlc3RDb250cm9sbGVyKQotewotICAgIGlm
IChXZWJJbnNwZWN0b3IucGFuZWxzLnNjcmlwdHMucGF1c2VkKSB7Ci0gICAgICAgIFdlYkluc3Bl
Y3Rvci5wYW5lbHMuc2NyaXB0cy5fdG9nZ2xlUGF1c2UoKTsKLSAgICAgICAgdGVzdENvbnRyb2xs
ZXIucmVzdWx0cy5wdXNoKCJSZXN1bWVkIHNjcmlwdCBleGVjdXRpb24uIik7Ci0gICAgfQotICAg
IGZyb250ZW5kX2Vuc3VyZURlYnVnZ2VyRGlzYWJsZWQoZnVuY3Rpb24oKQotICAgIHsKLSAgICAg
ICAgdGVzdENvbnRyb2xsZXIucmVzdWx0cy5wdXNoKCJEaXNhYmxlZCBkZWJ1Z2dlci4iKTsKLSAg
ICAgICAgdGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwotICAgIH0pOwotfQotCi1mdW5jdGlv
biBmcm9udGVuZF9zY3JpcHRzQXJlUGFyc2VkKHNjcmlwdHMpCi17Ci0gICAgdmFyIHNjcmlwdFNl
bGVjdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzY3JpcHRzLWZpbGVzIik7Ci0gICAgdmFy
IG9wdGlvbnMgPSBzY3JpcHRTZWxlY3Qub3B0aW9uczsKLQotICAgIC8vIENoZWNrIHRoYXQgYWxs
IHRoZSBleHBlY3RlZCBzY3JpcHRzIGFyZSBwcmVzZW50LgotICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgc2NyaXB0cy5sZW5ndGg7IGkrKykgewotICAgICAgICB2YXIgZm91bmQgPSBmYWxzZTsKLSAg
ICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBvcHRpb25zLmxlbmd0aDsgaisrKSB7Ci0gICAgICAg
ICAgICBpZiAob3B0aW9uc1tqXS50ZXh0LnNlYXJjaChzY3JpcHRzW2ldKSAhPT0gLTEpIHsKLSAg
ICAgICAgICAgICAgICBmb3VuZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCFmb3VuZCkKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19OwotCi1mdW5jdGlvbiBmcm9u
dGVuZF93YWl0VW50aWxTY3JpcHRzQXJlUGFyc2VkKHNjcmlwdHMsIGNhbGxiYWNrKQotewotICAg
IGZ1bmN0aW9uIHdhaXRGb3JBbGxTY3JpcHRzKCkKLSAgICB7Ci0gICAgICAgIGlmIChmcm9udGVu
ZF9zY3JpcHRzQXJlUGFyc2VkKHNjcmlwdHMpKQotICAgICAgICAgICAgY2FsbGJhY2soKTsKLSAg
ICAgICAgZWxzZQotICAgICAgICAgICAgZnJvbnRlbmRfYWRkU25pZmZlcihXZWJJbnNwZWN0b3Is
ICJwYXJzZWRTY3JpcHRTb3VyY2UiLCB3YWl0Rm9yQWxsU2NyaXB0cyk7Ci0gICAgfQotICAgIHdh
aXRGb3JBbGxTY3JpcHRzKCk7Ci19OwotCi1mdW5jdGlvbiBmcm9udGVuZF9lbnN1cmVTb3VyY2VG
cmFtZUxvYWRlZChzb3VyY2VGcmFtZSwgY2FsbGJhY2spCi17Ci0gICAgaWYgKCFzb3VyY2VGcmFt
ZS5fbG9hZGVkKQotICAgICAgICBmcm9udGVuZF9hZGRTbmlmZmVyKHNvdXJjZUZyYW1lLCAic2V0
Q29udGVudCIsIGNhbGxiYWNrKTsKLSAgICBlbHNlCi0gICAgICAgIGNhbGxiYWNrKCk7Ci19Ci0K
LWZ1bmN0aW9uIGZyb250ZW5kX3Nob3dTY3JpcHRTb3VyY2Uoc2NyaXB0TmFtZSwgY2FsbGJhY2sp
Ci17Ci0gICAgdmFyIHNjcmlwdFNlbGVjdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzY3Jp
cHRzLWZpbGVzIik7Ci0gICAgdmFyIG9wdGlvbnMgPSBzY3JpcHRTZWxlY3Qub3B0aW9uczsKLSAg
ICB2YXIgc2NyaXB0c1BhbmVsID0gV2ViSW5zcGVjdG9yLnBhbmVscy5zY3JpcHRzOwotCi0gICAg
Ly8gU2VsZWN0IHBhZ2UncyBzY3JpcHQgaWYgaXQncyBub3QgY3VycmVudCBvcHRpb24uCi0gICAg
dmFyIHNjcmlwdFJlc291cmNlOwotICAgIGlmIChvcHRpb25zW3NjcmlwdFNlbGVjdC5zZWxlY3Rl
ZEluZGV4XS50ZXh0ID09PSBzY3JpcHROYW1lKQotICAgICAgICBzY3JpcHRSZXNvdXJjZSA9IG9w
dGlvbnNbc2NyaXB0U2VsZWN0LnNlbGVjdGVkSW5kZXhdLnJlcHJlc2VudGVkT2JqZWN0OwotICAg
IGVsc2UgewotICAgICAgICB2YXIgcGFnZVNjcmlwdEluZGV4ID0gLTE7Ci0gICAgICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgb3B0aW9ucy5sZW5ndGg7IGkrKykgewotICAgICAgICAgICAgaWYgKG9w
dGlvbnNbaV0udGV4dCA9PT0gc2NyaXB0TmFtZSkgewotICAgICAgICAgICAgICAgIHBhZ2VTY3Jp
cHRJbmRleCA9IGk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0KLSAgICAgICAgc2NyaXB0UmVzb3VyY2UgPSBvcHRpb25zW3BhZ2VTY3JpcHRJbmRleF0u
cmVwcmVzZW50ZWRPYmplY3Q7Ci0gICAgICAgIHNjcmlwdHNQYW5lbC5fc2hvd1NjcmlwdE9yUmVz
b3VyY2Uoc2NyaXB0UmVzb3VyY2UpOwotICAgIH0KLQotICAgIHZhciB2aWV3ID0gc2NyaXB0c1Bh
bmVsLnZpc2libGVWaWV3OwotICAgIGZyb250ZW5kX2Vuc3VyZVNvdXJjZUZyYW1lTG9hZGVkKHZp
ZXcuc291cmNlRnJhbWUsIGNhbGxiYWNrLmJpbmQobnVsbCwgdmlldykpOwotfTsKLQotZnVuY3Rp
b24gZnJvbnRlbmRfY2FwdHVyZVN0YWNrVHJhY2UoY2FsbEZyYW1lcywgdGVzdENvbnRyb2xsZXIp
Ci17Ci0gICAgdGVzdENvbnRyb2xsZXIucmVzdWx0cy5wdXNoKCJDYWxsIHN0YWNrOiIpOwotICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgY2FsbEZyYW1lcy5sZW5ndGg7IGkrKykgewotICAgICAgICB2
YXIgZnJhbWUgPSBjYWxsRnJhbWVzW2ldOwotICAgICAgICB2YXIgc2NyaXB0T3JSZXNvdXJjZSA9
IFdlYkluc3BlY3Rvci5wYW5lbHMuc2NyaXB0cy5fc291cmNlSURNYXBbZnJhbWUuc291cmNlSURd
OwotICAgICAgICB2YXIgdXJsID0gc2NyaXB0T3JSZXNvdXJjZSAmJiBXZWJJbnNwZWN0b3IuZGlz
cGxheU5hbWVGb3JVUkwoc2NyaXB0T3JSZXNvdXJjZS5zb3VyY2VVUkwgfHwgc2NyaXB0T3JSZXNv
dXJjZS51cmwpOwotICAgICAgICB2YXIgcyA9ICIgICAgIiArIGkgKyAiKSAiICsgZnJhbWUuZnVu
Y3Rpb25OYW1lICsgIiAoIiArIHVybCArICI6IiArIGZyYW1lLmxpbmUgKyAiKSI7Ci0gICAgICAg
IHRlc3RDb250cm9sbGVyLnJlc3VsdHMucHVzaChzKTsKLSAgICB9Ci19CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci10ZXN0Mi5qcyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXRlc3QyLmpzCmluZGV4IDUyOGVl
OGYuLjNjOTRlNTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L2RlYnVnZ2VyLXRlc3QyLmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L2RlYnVnZ2VyLXRlc3QyLmpzCkBAIC0yLDYgKzIsOCBAQCB2YXIgaW5pdGlhbGl6ZV9EZWJ1Z2dl
clRlc3QgPSBmdW5jdGlvbigpIHsKIAogSW5zcGVjdG9yVGVzdC5zdGFydERlYnVnZ2VyVGVzdCA9
IGZ1bmN0aW9uKGNhbGxiYWNrKQogeworICAgIFdlYkluc3BlY3Rvci5zaG93UGFuZWwoInNjcmlw
dHMiKTsKKwogICAgIGlmIChXZWJJbnNwZWN0b3IucGFuZWxzLnNjcmlwdHMuX2RlYnVnZ2VyRW5h
YmxlZCkKICAgICAgICAgc3RhcnRUZXN0KCk7CiAgICAgZWxzZSB7CkBAIC0xMiw5ICsxNCwxMSBA
QCBJbnNwZWN0b3JUZXN0LnN0YXJ0RGVidWdnZXJUZXN0ID0gZnVuY3Rpb24oY2FsbGJhY2spCiAg
ICAgZnVuY3Rpb24gc3RhcnRUZXN0KCkKICAgICB7CiAgICAgICAgIEluc3BlY3RvclRlc3QuYWRk
UmVzdWx0KCJEZWJ1Z2dlciB3YXMgZW5hYmxlZC4iKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5f
YWRkU25pZmZlcihXZWJJbnNwZWN0b3IsICJwYXVzZWRTY3JpcHQiLCBJbnNwZWN0b3JUZXN0Ll9w
YXVzZWRTY3JpcHQsIHRydWUpOworICAgICAgICBJbnNwZWN0b3JUZXN0Ll9hZGRTbmlmZmVyKFdl
Ykluc3BlY3RvciwgInJlc3VtZWRTY3JpcHQiLCBJbnNwZWN0b3JUZXN0Ll9yZXN1bWVkU2NyaXB0
LCB0cnVlKTsKICAgICAgICAgY2FsbGJhY2soKTsKICAgICB9Ci19Cit9OwogCiBJbnNwZWN0b3JU
ZXN0LmNvbXBsZXRlRGVidWdnZXJUZXN0ID0gZnVuY3Rpb24oKQogewpAQCAtMjMsMTMgKzI3LDE2
IEBAIEluc3BlY3RvclRlc3QuY29tcGxldGVEZWJ1Z2dlclRlc3QgPSBmdW5jdGlvbigpCiAgICAg
aWYgKCFzY3JpcHRzUGFuZWwuYnJlYWtwb2ludHNBY3RpdmF0ZWQpCiAgICAgICAgIHNjcmlwdHNQ
YW5lbC50b2dnbGVCcmVha3BvaW50c0J1dHRvbi5lbGVtZW50LmNsaWNrKCk7CiAKLSAgICBJbnNw
ZWN0b3JUZXN0LnJlc3VtZUV4ZWN1dGlvbigpOworICAgIEluc3BlY3RvclRlc3QucmVzdW1lRXhl
Y3V0aW9uKGRpc2FibGVEZWJ1Z2dlcik7CiAKLSAgICBpZiAoIXNjcmlwdHNQYW5lbC5fZGVidWdn
ZXJFbmFibGVkKQotICAgICAgICBjb21wbGV0ZVRlc3QoKTsKLSAgICBlbHNlIHsKLSAgICAgICAg
SW5zcGVjdG9yVGVzdC5fYWRkU25pZmZlcihXZWJJbnNwZWN0b3IsICJkZWJ1Z2dlcldhc0Rpc2Fi
bGVkIiwgY29tcGxldGVUZXN0KTsKLSAgICAgICAgc2NyaXB0c1BhbmVsLl90b2dnbGVEZWJ1Z2dp
bmcoZmFsc2UpOworICAgIGZ1bmN0aW9uIGRpc2FibGVEZWJ1Z2dlcigpCisgICAgeworICAgICAg
ICBpZiAoIXNjcmlwdHNQYW5lbC5fZGVidWdnZXJFbmFibGVkKQorICAgICAgICAgICAgY29tcGxl
dGVUZXN0KCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5fYWRk
U25pZmZlcihXZWJJbnNwZWN0b3IsICJkZWJ1Z2dlcldhc0Rpc2FibGVkIiwgY29tcGxldGVUZXN0
KTsKKyAgICAgICAgICAgIHNjcmlwdHNQYW5lbC5fdG9nZ2xlRGVidWdnaW5nKGZhbHNlKTsKKyAg
ICAgICAgfQogICAgIH0KIAogICAgIGZ1bmN0aW9uIGNvbXBsZXRlVGVzdCgpCkBAIC00MSwxOSAr
NDgsNjAgQEAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZURlYnVnZ2VyVGVzdCA9IGZ1bmN0aW9uKCkK
IAogSW5zcGVjdG9yVGVzdC53YWl0VW50aWxQYXVzZWQgPSBmdW5jdGlvbihjYWxsYmFjaykKIHsK
LSAgICBJbnNwZWN0b3JUZXN0Ll9hZGRTbmlmZmVyKFdlYkluc3BlY3RvciwgInBhdXNlZFNjcmlw
dCIsIHBhdXNlZFNjcmlwdCk7CisgICAgaWYgKEluc3BlY3RvclRlc3QuX2NhbGxGcmFtZXMpCisg
ICAgICAgIGNhbGxiYWNrKEluc3BlY3RvclRlc3QuX2NhbGxGcmFtZXMpOworICAgIGVsc2UKKyAg
ICAgICAgSW5zcGVjdG9yVGVzdC5fd2FpdFVudGlsUGF1c2VkQ2FsbGJhY2sgPSBjYWxsYmFjazsK
K307CiAKLSAgICBmdW5jdGlvbiBwYXVzZWRTY3JpcHQoY2FsbEZyYW1lcykKLSAgICB7Ci0gICAg
ICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJQYXVzZWQgYXQgbGluZSAiICsgY2FsbEZyYW1l
c1swXS5saW5lICsgIiBpbiAiICsgY2FsbEZyYW1lc1swXS5mdW5jdGlvbk5hbWUpOwotICAgICAg
ICBjYWxsYmFjayhjYWxsRnJhbWVzKTsKLSAgICB9CitJbnNwZWN0b3JUZXN0LndhaXRVbnRpbFJl
c3VtZWQgPSBmdW5jdGlvbihjYWxsYmFjaykKK3sKKyAgICBpZiAoIUluc3BlY3RvclRlc3QuX2Nh
bGxGcmFtZXMpCisgICAgICAgIGNhbGxiYWNrKCk7CisgICAgZWxzZQorICAgICAgICBJbnNwZWN0
b3JUZXN0Ll93YWl0VW50aWxSZXN1bWVkQ2FsbGJhY2sgPSBjYWxsYmFjazsKIH07CiAKLUluc3Bl
Y3RvclRlc3QucmVzdW1lRXhlY3V0aW9uID0gZnVuY3Rpb24oKQorSW5zcGVjdG9yVGVzdC5yZXN1
bWVFeGVjdXRpb24gPSBmdW5jdGlvbihjYWxsYmFjaykKIHsKICAgICBpZiAoV2ViSW5zcGVjdG9y
LnBhbmVscy5zY3JpcHRzLnBhdXNlZCkKICAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5zY3Jp
cHRzLl90b2dnbGVQYXVzZSgpOworICAgIGlmIChjYWxsYmFjaykKKyAgICAgICAgSW5zcGVjdG9y
VGVzdC53YWl0VW50aWxSZXN1bWVkKGNhbGxiYWNrKTsKK307CisKK0luc3BlY3RvclRlc3QuY2Fw
dHVyZVN0YWNrVHJhY2UgPSBmdW5jdGlvbihjYWxsRnJhbWVzKQoreworICAgIEluc3BlY3RvclRl
c3QuYWRkUmVzdWx0KCJDYWxsIHN0YWNrOiIpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2Fs
bEZyYW1lcy5sZW5ndGg7IGkrKykgeworICAgICAgICB2YXIgZnJhbWUgPSBjYWxsRnJhbWVzW2ld
OworICAgICAgICB2YXIgc2NyaXB0T3JSZXNvdXJjZSA9IFdlYkluc3BlY3Rvci5wYW5lbHMuc2Ny
aXB0cy5fc291cmNlSURNYXBbZnJhbWUuc291cmNlSURdOworICAgICAgICB2YXIgdXJsID0gc2Ny
aXB0T3JSZXNvdXJjZSAmJiBXZWJJbnNwZWN0b3IuZGlzcGxheU5hbWVGb3JVUkwoc2NyaXB0T3JS
ZXNvdXJjZS5zb3VyY2VVUkwgfHwgc2NyaXB0T3JSZXNvdXJjZS51cmwpOworICAgICAgICB2YXIg
cyA9ICIgICAgIiArIGkgKyAiKSAiICsgZnJhbWUuZnVuY3Rpb25OYW1lICsgIiAoIiArIHVybCAr
ICI6IiArIGZyYW1lLmxpbmUgKyAiKSI7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0
KHMpOworICAgIH0KK307CisKK0luc3BlY3RvclRlc3QuX3BhdXNlZFNjcmlwdCA9IGZ1bmN0aW9u
KGNhbGxGcmFtZXMpCit7CisgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIlNjcmlwdCBleGVj
dXRpb24gcGF1c2VkLiIpOworICAgIEluc3BlY3RvclRlc3QuX2NhbGxGcmFtZXMgPSBjYWxsRnJh
bWVzOworICAgIGlmIChJbnNwZWN0b3JUZXN0Ll93YWl0VW50aWxQYXVzZWRDYWxsYmFjaykgewor
ICAgICAgICB2YXIgY2FsbGJhY2sgPSBJbnNwZWN0b3JUZXN0Ll93YWl0VW50aWxQYXVzZWRDYWxs
YmFjazsKKyAgICAgICAgZGVsZXRlIEluc3BlY3RvclRlc3QuX3dhaXRVbnRpbFBhdXNlZENhbGxi
YWNrOworICAgICAgICBjYWxsYmFjayhJbnNwZWN0b3JUZXN0Ll9jYWxsRnJhbWVzKTsKKyAgICB9
Cit9CisKK0luc3BlY3RvclRlc3QuX3Jlc3VtZWRTY3JpcHQgPSBmdW5jdGlvbigpCit7CisgICAg
SW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIlNjcmlwdCBleGVjdXRpb24gcmVzdW1lZC4iKTsKKyAg
ICBkZWxldGUgSW5zcGVjdG9yVGVzdC5fY2FsbEZyYW1lczsKKyAgICBpZiAoSW5zcGVjdG9yVGVz
dC5fd2FpdFVudGlsUmVzdW1lZENhbGxiYWNrKSB7CisgICAgICAgIHZhciBjYWxsYmFjayA9IElu
c3BlY3RvclRlc3QuX3dhaXRVbnRpbFJlc3VtZWRDYWxsYmFjazsKKyAgICAgICAgZGVsZXRlIElu
c3BlY3RvclRlc3QuX3dhaXRVbnRpbFJlc3VtZWRDYWxsYmFjazsKKyAgICAgICAgY2FsbGJhY2so
KTsKKyAgICB9CiB9OwogCiBJbnNwZWN0b3JUZXN0LnNob3dTY3JpcHRTb3VyY2UgPSBmdW5jdGlv
bihzY3JpcHROYW1lLCBjYWxsYmFjaykKQEAgLTY0LDYgKzExMiwxNSBAQCBJbnNwZWN0b3JUZXN0
LnNob3dTY3JpcHRTb3VyY2UgPSBmdW5jdGlvbihzY3JpcHROYW1lLCBjYWxsYmFjaykKICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5fYWRkU25pZmZlcihXZWJJbnNwZWN0b3IsICJwYXJzZWRTY3JpcHRT
b3VyY2UiLCBJbnNwZWN0b3JUZXN0LnNob3dTY3JpcHRTb3VyY2UuYmluZChJbnNwZWN0b3JUZXN0
LCBzY3JpcHROYW1lLCBjYWxsYmFjaykpOwogfTsKIAorSW5zcGVjdG9yVGVzdC53YWl0VW50aWxD
dXJyZW50U291cmNlRnJhbWVJc0xvYWRlZCA9IGZ1bmN0aW9uKGNhbGxiYWNrKQoreworICAgIHZh
ciBzb3VyY2VGcmFtZSA9IFdlYkluc3BlY3Rvci5jdXJyZW50UGFuZWwudmlzaWJsZVZpZXcuc291
cmNlRnJhbWU7CisgICAgaWYgKHNvdXJjZUZyYW1lLl9sb2FkZWQpCisgICAgICAgIGNhbGxiYWNr
KHNvdXJjZUZyYW1lKTsKKyAgICBlbHNlCisgICAgICAgIEluc3BlY3RvclRlc3QuX2FkZFNuaWZm
ZXIoc291cmNlRnJhbWUsICJzZXRDb250ZW50IiwgY2FsbGJhY2suYmluZChudWxsLCBzb3VyY2VG
cmFtZSkpOworfTsKKwogSW5zcGVjdG9yVGVzdC5fc2NyaXB0c0FyZVBhcnNlZCA9IGZ1bmN0aW9u
KHNjcmlwdHMpCiB7CiAgICAgdmFyIHNjcmlwdFNlbGVjdCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJzY3JpcHRzLWZpbGVzIik7CkBAIC0xMDYsMTIgKzE2Myw1MiBAQCBJbnNwZWN0b3JUZXN0
Ll9zaG93U2NyaXB0U291cmNlID0gZnVuY3Rpb24oc2NyaXB0TmFtZSwgY2FsbGJhY2spCiAgICAg
ICAgIHNjcmlwdHNQYW5lbC5fc2hvd1NjcmlwdE9yUmVzb3VyY2Uoc2NyaXB0UmVzb3VyY2UpOwog
ICAgIH0KIAotICAgIHZhciB2aWV3ID0gc2NyaXB0c1BhbmVsLnZpc2libGVWaWV3OwotICAgIGNh
bGxiYWNrID0gY2FsbGJhY2suYmluZChudWxsLCB2aWV3KTsKLSAgICBpZiAoIXZpZXcuc291cmNl
RnJhbWUuX2xvYWRlZCkKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5fYWRkU25pZmZlcih2aWV3LnNv
dXJjZUZyYW1lLCAic2V0Q29udGVudCIsIGNhbGxiYWNrKTsKLSAgICBlbHNlCisgICAgSW5zcGVj
dG9yVGVzdC53YWl0VW50aWxDdXJyZW50U291cmNlRnJhbWVJc0xvYWRlZChjYWxsYmFjayk7Cit9
OworCitJbnNwZWN0b3JUZXN0LmV4cGFuZFByb3BlcnRpZXMgPSBmdW5jdGlvbihwcm9wZXJ0aWVz
LCBjYWxsYmFjaykKK3sKKyAgICB2YXIgaW5kZXggPSAwOworICAgIGZ1bmN0aW9uIGV4cGFuZE5l
eHRQYXRoKCkKKyAgICB7CisgICAgICAgIGlmIChpbmRleCA9PT0gcHJvcGVydGllcy5sZW5ndGgp
IHsKKyAgICAgICAgICAgIGNhbGxiYWNrKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICAgICAgdmFyIHBhcmVudFRyZWVFbGVtZW50ID0gcHJvcGVydGllc1tpbmRleCsrXTsK
KyAgICAgICAgdmFyIHBhdGggPSBwcm9wZXJ0aWVzW2luZGV4KytdOworICAgICAgICBJbnNwZWN0
b3JUZXN0Ll9leHBhbmRQcm9wZXJ0eShwYXJlbnRUcmVlRWxlbWVudCwgcGF0aCwgMCwgZXhwYW5k
TmV4dFBhdGgpOworICAgIH0KKyAgICBJbnNwZWN0b3JUZXN0LnJ1bkFmdGVyUGVuZGluZ0Rpc3Bh
dGNoZXMoZXhwYW5kTmV4dFBhdGgpOworfTsKKworSW5zcGVjdG9yVGVzdC5fZXhwYW5kUHJvcGVy
dHkgPSBmdW5jdGlvbihwYXJlbnRUcmVlRWxlbWVudCwgcGF0aCwgcGF0aEluZGV4LCBjYWxsYmFj
aykKK3sKKyAgICBpZiAocGF0aEluZGV4ID09PSBwYXRoLmxlbmd0aCkgeworICAgICAgICBJbnNw
ZWN0b3JUZXN0LmFkZFJlc3VsdCgiRXhwYW5kZWQgcHJvcGVydHk6ICIgKyBwYXRoLmpvaW4oIi4i
KSk7CiAgICAgICAgIGNhbGxiYWNrKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgdmFy
IG5hbWUgPSBwYXRoW3BhdGhJbmRleCsrXTsKKyAgICB2YXIgcHJvcGVydHlUcmVlRWxlbWVudCA9
IEluc3BlY3RvclRlc3QuX2ZpbmRDaGlsZFByb3BlcnR5VHJlZUVsZW1lbnQocGFyZW50VHJlZUVs
ZW1lbnQsIG5hbWUpOworICAgIGlmICghcHJvcGVydHlUcmVlRWxlbWVudCkgeworICAgICAgIElu
c3BlY3RvclRlc3QuYWRkUmVzdWx0KCJGYWlsZWQgdG8gZXhwYW5kIHByb3BlcnR5OiAiICsgcGF0
aC5zbGljZSgwLCBwYXRoSW5kZXgpLmpvaW4oIi4iKSk7CisgICAgICAgSW5zcGVjdG9yVGVzdC5j
b21wbGV0ZURlYnVnZ2VyVGVzdCgpOworICAgICAgIHJldHVybjsKKyAgICB9CisgICAgcHJvcGVy
dHlUcmVlRWxlbWVudC5leHBhbmQoKTsKKyAgICBJbnNwZWN0b3JUZXN0LnJ1bkFmdGVyUGVuZGlu
Z0Rpc3BhdGNoZXMoSW5zcGVjdG9yVGVzdC5fZXhwYW5kUHJvcGVydHkuYmluZChJbnNwZWN0b3JU
ZXN0LCBwcm9wZXJ0eVRyZWVFbGVtZW50LCBwYXRoLCBwYXRoSW5kZXgsIGNhbGxiYWNrKSk7CiB9
OwogCi19CitJbnNwZWN0b3JUZXN0Ll9maW5kQ2hpbGRQcm9wZXJ0eVRyZWVFbGVtZW50ID0gZnVu
Y3Rpb24ocGFyZW50LCBjaGlsZE5hbWUpCit7CisgICAgdmFyIGNoaWxkcmVuID0gcGFyZW50LmNo
aWxkcmVuOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHsK
KyAgICAgICAgdmFyIHRyZWVFbGVtZW50ID0gY2hpbGRyZW5baV07CisgICAgICAgIHZhciBwcm9w
ZXJ0eSA9IHRyZWVFbGVtZW50LnByb3BlcnR5OworICAgICAgICBpZiAocHJvcGVydHkubmFtZSA9
PT0gY2hpbGROYW1lKQorICAgICAgICAgICAgcmV0dXJuIHRyZWVFbGVtZW50OworICAgIH0KK307
CisKK307CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNw
ZWN0b3ItdGVzdDIuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0
b3ItdGVzdDIuanMKaW5kZXggNGQ4YmY3Yi4uMzkxNmFiMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QyLmpzCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0Mi5qcwpAQCAtMSwxMCArMSwx
MCBAQAotdmFyIGluaXRpYWxpemVfSW5zcGVjdG9yVGVzdCA9IChmdW5jdGlvbigpIHsKK3ZhciBp
bml0aWFsaXplX0luc3BlY3RvclRlc3QgPSBmdW5jdGlvbigpIHsKIAogdmFyIHJlc3VsdHMgPSBb
XTsKIAogSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QgPSBmdW5jdGlvbigpCiB7Ci0gICAgSW5z
cGVjdG9yQmFja2VuZC5kaWRFdmFsdWF0ZUZvclRlc3RJbkZyb250ZW5kKEluc3BlY3RvclRlc3Qu
Y29tcGxldGVUZXN0Q2FsbElkLCBKU09OLnN0cmluZ2lmeShyZXN1bHRzKSk7CisgICAgSW5zcGVj
dG9yQmFja2VuZC5kaWRFdmFsdWF0ZUZvclRlc3RJbkZyb250ZW5kKEluc3BlY3RvclRlc3QuY29t
cGxldGVUZXN0Q2FsbElkLCAiIik7CiB9OwogCiBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5Db25z
b2xlID0gZnVuY3Rpb24oY29kZSwgY2FsbGJhY2spCkBAIC0yMSw5ICsyMSwxNSBAQCBJbnNwZWN0
b3JUZXN0LmV2YWx1YXRlSW5Db25zb2xlID0gZnVuY3Rpb24oY29kZSwgY2FsbGJhY2spCiAgICAg
ICAgIH0pOwogfTsKIAorSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSA9IGZ1bmN0aW9uKGNv
ZGUsIGNhbGxiYWNrKQoreworICAgIEluamVjdGVkU2NyaXB0QWNjZXNzLmdldERlZmF1bHQoKS5l
dmFsdWF0ZShjb2RlLCAiY29uc29sZSIsIGNhbGxiYWNrIHx8IGZ1bmN0aW9uKCkge30pOworfTsK
KwogSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQgPSBmdW5jdGlvbih0ZXh0KQogewogICAgIHJlc3Vs
dHMucHVzaCh0ZXh0KTsKKyAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJkdW1wQXJy
YXkoSlNPTi5wYXJzZSgnIiArIEpTT04uc3RyaW5naWZ5KHJlc3VsdHMpICsgIicpKSIpOwogfTsK
IAogSW5zcGVjdG9yVGVzdC5yZWxvYWRQYWdlID0gZnVuY3Rpb24oY2FsbGJhY2spCkBAIC0zMiw2
ICszOCwxMSBAQCBJbnNwZWN0b3JUZXN0LnJlbG9hZFBhZ2UgPSBmdW5jdGlvbihjYWxsYmFjaykK
ICAgICBJbnNwZWN0b3JUZXN0Ll9hZGRTbmlmZmVyKFdlYkluc3BlY3RvciwgInJlc2V0IiwgY2Fs
bGJhY2spOwogfTsKIAorSW5zcGVjdG9yVGVzdC5ydW5BZnRlclBlbmRpbmdEaXNwYXRjaGVzID0g
ZnVuY3Rpb24oY2FsbGJhY2spCit7CisgICAgV2ViSW5zcGVjdG9yLlRlc3RDb250cm9sbGVyLnBy
b3RvdHlwZS5ydW5BZnRlclBlbmRpbmdEaXNwYXRjaGVzKGNhbGxiYWNrKTsKK307CisKIEluc3Bl
Y3RvclRlc3QuZmluZERPTU5vZGUgPSBmdW5jdGlvbihyb290LCBmaWx0ZXIsIGNhbGxiYWNrKQog
ewogICAgIHZhciBmb3VuZCA9IGZhbHNlOwpAQCAtOTUsMTQgKzEwNiwxNSBAQCBJbnNwZWN0b3JU
ZXN0Ll9hZGRTbmlmZmVyID0gZnVuY3Rpb24ocmVjZWl2ZXIsIG1ldGhvZE5hbWUsIG92ZXJyaWRl
LCBvcHRfc3RpY2t5KQogICAgICAgICB9CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfTsK
LX0KK307CiAKLX0pOworfTsKIAogdmFyIHJ1blRlc3RDYWxsSWQgPSAwOwogdmFyIGNvbXBsZXRl
VGVzdENhbGxJZCA9IDE7Cit2YXIgZHVtcGVkUmVzdWx0c0NvdW50ID0gMDsKIAotZnVuY3Rpb24g
cnVuVGVzdCgpCitmdW5jdGlvbiBvbmxvYWQoKQogewogICAgIGlmICghd2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQogICAgICAgICByZXR1cm47CkBAIC0xMzUsMjQgKzE0NywyMSBAQCBmdW5j
dGlvbiBydW5UZXN0KCkKICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ldmFsdWF0ZUluV2ViSW5z
cGVjdG9yKHJ1blRlc3RDYWxsSWQsIHRvRXZhbHVhdGUpOwogfQogCi1mdW5jdGlvbiBkaWRFdmFs
dWF0ZUZvclRlc3RJbkZyb250ZW5kKGNhbGxJZCwgcmVzdWx0KQorZnVuY3Rpb24gZGlkRXZhbHVh
dGVGb3JUZXN0SW5Gcm9udGVuZChjYWxsSWQpCiB7CiAgICAgaWYgKGNhbGxJZCAhPT0gY29tcGxl
dGVUZXN0Q2FsbElkKQogICAgICAgICByZXR1cm47Ci0gICAgZHVtcEFycmF5KEpTT04ucGFyc2Uo
cmVzdWx0KSk7CiAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuY2xvc2VXZWJJbnNwZWN0b3IoKTsK
ICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5ub3RpZnlEb25lKCk7CiAgICAgfSwgMCk7CiB9CiAKLWZ1bmN0aW9uIGR1bXBBcnJheShyZXN1
bHQpCitmdW5jdGlvbiBkdW1wQXJyYXkocmVzdWx0cykKIHsKLSAgICBpZiAocmVzdWx0IGluc3Rh
bmNlb2YgQXJyYXkpIHsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZXN1bHQubGVuZ3Ro
OyArK2kpCi0gICAgICAgICAgICBvdXRwdXQocmVzdWx0W2ldKTsKLSAgICB9IGVsc2UKLSAgICAg
ICAgb3V0cHV0KHJlc3VsdCk7CisgICAgZm9yICh2YXIgaSA9IGR1bXBlZFJlc3VsdHNDb3VudDsg
aSA8IHJlc3VsdHMubGVuZ3RoOyArK2kpCisgICAgICAgIG91dHB1dChyZXN1bHRzW2ldKTsKKyAg
ICBkdW1wZWRSZXN1bHRzQ291bnQgPSByZXN1bHRzLmxlbmd0aDsKIH0KIAogZnVuY3Rpb24gZHVt
cE9iamVjdChvYmplY3QsIG5vbmRldGVybWluaXN0aWNQcm9wcywgcHJlZml4LCBmaXJzdExpbmVQ
cmVmaXgpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItYnJlYWtw
b2ludHMtbm90LWFjdGl2YXRlZC1vbi1yZWxvYWQuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9kZWJ1Z2dlci1icmVha3BvaW50cy1ub3QtYWN0aXZhdGVkLW9uLXJlbG9hZC5odG1sCmluZGV4
IDFjOGIwZmIuLjJkYmU2MzQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1
Z2dlci1icmVha3BvaW50cy1ub3QtYWN0aXZhdGVkLW9uLXJlbG9hZC5odG1sCisrKyBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1icmVha3BvaW50cy1ub3QtYWN0aXZhdGVkLW9uLXJl
bG9hZC5odG1sCkBAIC0xNCwyOSArMTQsMjggQEAgdmFyIHRlc3QgPSBmdW5jdGlvbigpCiAgICAg
dmFyIHRlc3ROYW1lID0gV2ViSW5zcGVjdG9yLm1haW5SZXNvdXJjZS51cmw7CiAgICAgdGVzdE5h
bWUgPSB0ZXN0TmFtZS5zdWJzdHJpbmcodGVzdE5hbWUubGFzdEluZGV4T2YoJy8nKSArIDEpOwog
Ci0gICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCgic2NyaXB0cyIpOwotICAgIEluc3BlY3RvclRl
c3Quc3RhcnREZWJ1Z2dlclRlc3Qoc3RhcnREZWJ1Z2dlclRlc3RDYWxsYmFjayk7CisgICAgSW5z
cGVjdG9yVGVzdC5zdGFydERlYnVnZ2VyVGVzdChzdGVwMSk7CiAKLSAgICBmdW5jdGlvbiBzdGFy
dERlYnVnZ2VyVGVzdENhbGxiYWNrKCkKKyAgICBmdW5jdGlvbiBzdGVwMSgpCiAgICAgewotICAg
ICAgICBJbnNwZWN0b3JUZXN0LnNob3dTY3JpcHRTb3VyY2UodGVzdE5hbWUsIHNob3dTY3JpcHRT
b3VyY2VDYWxsYmFjayk7CisgICAgICAgIEluc3BlY3RvclRlc3Quc2hvd1NjcmlwdFNvdXJjZSh0
ZXN0TmFtZSwgc3RlcDIpOwogICAgIH0KIAotICAgIGZ1bmN0aW9uIHNob3dTY3JpcHRTb3VyY2VD
YWxsYmFjayh2aWV3KQorICAgIGZ1bmN0aW9uIHN0ZXAyKCkKICAgICB7CiAgICAgICAgIEluc3Bl
Y3RvclRlc3QuYWRkUmVzdWx0KCJNYWluIHJlc291cmNlIHdhcyBzaG93bi4iKTsKLSAgICAgICAg
dmlldy5fYWRkQnJlYWtwb2ludCg4KTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5zY3Jp
cHRzLnZpc2libGVWaWV3Ll9hZGRCcmVha3BvaW50KDgpOwogICAgICAgICBXZWJJbnNwZWN0b3Iu
cGFuZWxzLnNjcmlwdHMudG9nZ2xlQnJlYWtwb2ludHNCdXR0b24uZWxlbWVudC5jbGljaygpOwot
ICAgICAgICBJbnNwZWN0b3JUZXN0LnJlbG9hZFBhZ2UocmVsb2FkUGFnZUNhbGxiYWNrKTsKKyAg
ICAgICAgSW5zcGVjdG9yVGVzdC5yZWxvYWRQYWdlKHN0ZXAzKTsKICAgICB9CiAKLSAgICBmdW5j
dGlvbiByZWxvYWRQYWdlQ2FsbGJhY2soKQorICAgIGZ1bmN0aW9uIHN0ZXAzKCkKICAgICB7CiAg
ICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJQYWdlIHJlbG9hZGVkLiIpOwotICAgICAg
ICBJbnNwZWN0b3JUZXN0LnNob3dTY3JpcHRTb3VyY2UodGVzdE5hbWUsIHNob3dTY3JpcHRTb3Vy
Y2VBZnRlclJlbG9hZENhbGxiYWNrKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5zaG93U2NyaXB0
U291cmNlKHRlc3ROYW1lLCBzdGVwNCk7CiAgICAgfQogCi0gICAgZnVuY3Rpb24gc2hvd1Njcmlw
dFNvdXJjZUFmdGVyUmVsb2FkQ2FsbGJhY2sodmlldykKKyAgICBmdW5jdGlvbiBzdGVwNCgpCiAg
ICAgewogICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiTWFpbiByZXNvdXJjZSB3YXMg
c2hvd24uIik7CiAgICAgICAgIGlmICghV2ViSW5zcGVjdG9yLnBhbmVscy5zY3JpcHRzLmJyZWFr
cG9pbnRzQWN0aXZhdGVkKQpAQCAtNTAsNyArNDksNyBAQCB2YXIgdGVzdCA9IGZ1bmN0aW9uKCkK
IDwvc2NyaXB0PgogPC9oZWFkPgogCi08Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8Ym9keSBv
bmxvYWQ9Im9ubG9hZCgpIj4KIDxwPgogVGVzdHMgdGhhdCBicmVha3BvaW50cyBhcmUgbm90IGFj
dGl2YXRlZCBvbiBwYWdlIHJlbG9hZC48YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NDE0NjEiPkJ1ZyA0MTQ2MTwvYT4KIDwvcD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1jeWNsaWMtcmVmLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1jeWNsaWMtcmVmLWV4cGVjdGVkLnR4dAppbmRl
eCA1M2ZjZjlhLi41OWEzZDQ1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVi
dWdnZXItY3ljbGljLXJlZi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2RlYnVnZ2VyLWN5Y2xpYy1yZWYtZXhwZWN0ZWQudHh0CkBAIC0xLDggKzEsNyBAQAogVGVzdHMg
dGhhdCBkZWJ1Z2dpbmcgYSBwYWdlIHdoZXJlIE9iamVjdCBwcm90b3R5cGUgaGFzIGEgY3ljbGlj
IHJlZmVyZW5jZSB3b24ndCBjcmFzaCB0aGUgYnJvd3Nlci5CdWcgNDM1NTgKIAogRGVidWdnZXIg
d2FzIGVuYWJsZWQuCi1TZXQgdGltZXIgZm9yIHRlc3QgZnVuY3Rpb24uCiBTY3JpcHQgZXhlY3V0
aW9uIHBhdXNlZC4KLVJlc3VtZWQgc2NyaXB0IGV4ZWN1dGlvbi4KLURpc2FibGVkIGRlYnVnZ2Vy
LgorU2NyaXB0IGV4ZWN1dGlvbiByZXN1bWVkLgorRGVidWdnZXIgd2FzIGRpc2FibGVkLgogCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItY3ljbGljLXJlZi5odG1s
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLWN5Y2xpYy1yZWYuaHRtbAppbmRleCA4
ZDUxYmM0Li45MTdiNjcyIDEwMDc1NQotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdn
ZXItY3ljbGljLXJlZi5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1j
eWNsaWMtcmVmLmh0bWwKQEAgLTEsNyArMSw3IEBACiA8aHRtbD4KIDxoZWFkPgotPHNjcmlwdCBz
cmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4K
LTxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci10ZXN0LmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3It
dGVzdDIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L2RlYnVnZ2VyLXRlc3QyLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+CiAKIE9iamVjdC5wcm90b3R5
cGUuY3ljbGljUmVmID0gT2JqZWN0LnByb3RvdHlwZTsKQEAgLTEwLDM1ICsxMCwyMiBAQCBmdW5j
dGlvbiB0ZXN0RnVuY3Rpb24oKQogewogICAgIHZhciBvID0gbmV3IE9iamVjdCgpOwogICAgIGRl
YnVnZ2VyOwotICAgIG5vdGlmeURvbmUoKTsKIH0KIAotZnVuY3Rpb24gZG9pdCgpCit2YXIgdGVz
dCA9IGZ1bmN0aW9uKCkKIHsKLSAgICBldmFsdWF0ZUluV2ViSW5zcGVjdG9yKCJmcm9udGVuZF90
ZXN0RGVidWdPYmplY3RXaXRoQ3ljbGljUmVmIiwgZHVtcEFycmF5KTsKLX0KLQotZnVuY3Rpb24g
ZnJvbnRlbmRfdGVzdERlYnVnT2JqZWN0V2l0aEN5Y2xpY1JlZih0ZXN0Q29udHJvbGxlcikKLXsK
LSAgICB0ZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgSW5zcGVjdG9yVGVzdC5z
dGFydERlYnVnZ2VyVGVzdChzdGVwMSk7CiAKLSAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJz
Y3JpcHRzIik7Ci0gICAgZnJvbnRlbmRfZW5zdXJlRGVidWdnZXJFbmFibGVkKGRlYnVnZ2VyV2Fz
RW5hYmxlZENhbGxiYWNrKTsKLQotICAgIGZ1bmN0aW9uIGRlYnVnZ2VyV2FzRW5hYmxlZENhbGxi
YWNrKCkKKyAgICBmdW5jdGlvbiBzdGVwMSgpCiAgICAgewotICAgICAgICB0ZXN0Q29udHJvbGxl
ci5yZXN1bHRzLnB1c2goIkRlYnVnZ2VyIHdhcyBlbmFibGVkLiIpOwotICAgICAgICBmcm9udGVu
ZF9ldmFsdWF0ZUluQ29uc29sZSgic2V0VGltZW91dCh0ZXN0RnVuY3Rpb24sIDApIiwgZnVuY3Rp
b24ocmVzdWx0KQotICAgICAgICB7Ci0gICAgICAgICAgICB0ZXN0Q29udHJvbGxlci5yZXN1bHRz
LnB1c2goIlNldCB0aW1lciBmb3IgdGVzdCBmdW5jdGlvbi4iKTsKLSAgICAgICAgfSk7CisgICAg
ICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJbkNvbnNvbGUoInNldFRpbWVvdXQodGVzdEZ1bmN0
aW9uLCAwKSIpOworICAgICAgICBJbnNwZWN0b3JUZXN0LndhaXRVbnRpbFBhdXNlZChzdGVwMik7
CiAgICAgfQogCi0gICAgZnJvbnRlbmRfYWRkU25pZmZlcihXZWJJbnNwZWN0b3IsICJwYXVzZWRT
Y3JpcHQiLCBmdW5jdGlvbihjYWxsRnJhbWVzKQorICAgIGZ1bmN0aW9uIHN0ZXAyKCkKICAgICB7
Ci0gICAgICAgIHRlc3RDb250cm9sbGVyLnJlc3VsdHMucHVzaCgiU2NyaXB0IGV4ZWN1dGlvbiBw
YXVzZWQuIik7Ci0gICAgICAgIGZyb250ZW5kX2NvbXBsZXRlRGVidWdnZXJUZXN0KHRlc3RDb250
cm9sbGVyKTsKLSAgICB9KTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZURlYnVnZ2Vy
VGVzdCgpOworICAgIH0KIH0KIAogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZGVidWdnZXItZXZhbC13aGlsZS1wYXVzZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLWV2YWwtd2hpbGUtcGF1c2VkLWV4cGVjdGVkLnR4dApp
bmRleCAyZDgzNzFjLi45ZTllYWU4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
ZGVidWdnZXItZXZhbC13aGlsZS1wYXVzZWQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9kZWJ1Z2dlci1ldmFsLXdoaWxlLXBhdXNlZC1leHBlY3RlZC50eHQKQEAgLTEs
MTAgKzEsOSBAQAogVGVzdHMgdGhhdCBldmFsdWF0aW9uIGluIGNvbnNvbGUgd29ya3MgZmluZSB3
aGVuIHNjcmlwdCBpcyBwYXVzZWQuIEl0IGFsc28gY2hlY2tzIHRoYXQgc3RhY2sgYW5kIGdsb2Jh
bCB2YXJpYWJsZXMgYXJlIGFjY2Vzc2libGUgZnJvbSB0aGUgY29uc29sZS4KIAogRGVidWdnZXIg
d2FzIGVuYWJsZWQuCi1TZXQgdGltZXIgZm9yIHRlc3QgZnVuY3Rpb24uCiBTY3JpcHQgZXhlY3V0
aW9uIHBhdXNlZC4KIEV2YWx1YXRlZCBzY3JpcHQgb24gdGhlIHRvcCBmcmFtZTogNDAyMQogRXZh
bHVhdGVkIHNjcmlwdCBvbiB0aGUgY2FsbGluZyBmcmFtZTogMzAxCi1SZXN1bWVkIHNjcmlwdCBl
eGVjdXRpb24uCi1EaXNhYmxlZCBkZWJ1Z2dlci4KK1NjcmlwdCBleGVjdXRpb24gcmVzdW1lZC4K
K0RlYnVnZ2VyIHdhcyBkaXNhYmxlZC4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2RlYnVnZ2VyLWV2YWwtd2hpbGUtcGF1c2VkLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZGVidWdnZXItZXZhbC13aGlsZS1wYXVzZWQuaHRtbAppbmRleCAxNWIyMGE4Li44YzY0NGI3
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItZXZhbC13aGlsZS1w
YXVzZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItZXZhbC13aGls
ZS1wYXVzZWQuaHRtbApAQCAtMSw2MiArMSw1NSBAQAogPGh0bWw+CiA8aGVhZD4KLTxzY3JpcHQg
c3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItdGVzdC5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9y
LXRlc3QyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9kZWJ1Z2dlci10ZXN0Mi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogCiB2YXIgZ2xvYmFsVmFy
ID0geyBiOiAxIH07CiAKLWZ1bmN0aW9uIHNsYXZlKHgpIHsKK2Z1bmN0aW9uIHNsYXZlKHgpCit7
CiAgICAgdmFyIHkgPSAyMDsKICAgICBkZWJ1Z2dlcjsKLSAgICBub3RpZnlEb25lKCk7CiB9CiAK
LWZ1bmN0aW9uIHRlc3RGdW5jdGlvbigpIHsKLSAgICB2YXIgbG9jYWxPYmplY3QgPSB7YTogMzAw
fTsKK2Z1bmN0aW9uIHRlc3RGdW5jdGlvbigpCit7CisgICAgdmFyIGxvY2FsT2JqZWN0ID0geyBh
OiAzMDAgfTsKICAgICBzbGF2ZSg0MDAwKTsKIH0KIAotZnVuY3Rpb24gZG9pdCgpCit2YXIgdGVz
dCA9IGZ1bmN0aW9uKCkKIHsKLSAgICBldmFsdWF0ZUluV2ViSW5zcGVjdG9yKCJmcm9udGVuZF90
ZXN0UGF1c2VPbkRlYnVnZ2VyU3RhdGVtZW50IiwgZHVtcEFycmF5KTsKLX0KKyAgICBJbnNwZWN0
b3JUZXN0LnN0YXJ0RGVidWdnZXJUZXN0KHN0ZXAxKTsKIAotZnVuY3Rpb24gZnJvbnRlbmRfdGVz
dFBhdXNlT25EZWJ1Z2dlclN0YXRlbWVudCh0ZXN0Q29udHJvbGxlcikKLXsKLSAgICB0ZXN0Q29u
dHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgZnVuY3Rpb24gc3RlcDEoKQorICAgIHsKKyAg
ICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluQ29uc29sZSgic2V0VGltZW91dCh0ZXN0RnVu
Y3Rpb24sIDApIik7CisgICAgICAgIEluc3BlY3RvclRlc3Qud2FpdFVudGlsUGF1c2VkKHN0ZXAy
KTsKKyAgICB9CiAKLSAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJzY3JpcHRzIik7Ci0gICAg
ZnJvbnRlbmRfZW5zdXJlRGVidWdnZXJFbmFibGVkKGRlYnVnZ2VyV2FzRW5hYmxlZENhbGxiYWNr
KTsKKyAgICBmdW5jdGlvbiBzdGVwMihjYWxsRnJhbWVzKQorICAgIHsKKyAgICAgICAgSW5zcGVj
dG9yVGVzdC5ldmFsdWF0ZUluQ29uc29sZSgieCArIHkgKyBnbG9iYWxWYXIuYiIsIHN0ZXAzLmJp
bmQobnVsbCwgY2FsbEZyYW1lcykpOworICAgIH0KIAotICAgIGZ1bmN0aW9uIGRlYnVnZ2VyV2Fz
RW5hYmxlZENhbGxiYWNrKCkKKyAgICBmdW5jdGlvbiBzdGVwMyhjYWxsRnJhbWVzLCByZXN1bHQp
CiAgICAgewotICAgICAgICB0ZXN0Q29udHJvbGxlci5yZXN1bHRzLnB1c2goIkRlYnVnZ2VyIHdh
cyBlbmFibGVkLiIpOwotICAgICAgICBmcm9udGVuZF9ldmFsdWF0ZUluQ29uc29sZSgic2V0VGlt
ZW91dCh0ZXN0RnVuY3Rpb24sIDApIiwgZnVuY3Rpb24ocmVzdWx0KQotICAgICAgICB7Ci0gICAg
ICAgICAgICB0ZXN0Q29udHJvbGxlci5yZXN1bHRzLnB1c2goIlNldCB0aW1lciBmb3IgdGVzdCBm
dW5jdGlvbi4iKTsKLSAgICAgICAgfSk7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0
KCJFdmFsdWF0ZWQgc2NyaXB0IG9uIHRoZSB0b3AgZnJhbWU6ICIgKyByZXN1bHQpOworICAgICAg
ICBXZWJJbnNwZWN0b3IucGFuZWxzLnNjcmlwdHMuc2lkZWJhclBhbmVzLmNhbGxzdGFjay5zZWxl
Y3RlZENhbGxGcmFtZSA9IGNhbGxGcmFtZXNbMV07CisgICAgICAgIEluc3BlY3RvclRlc3QucnVu
QWZ0ZXJQZW5kaW5nRGlzcGF0Y2hlcyhzdGVwNCk7CiAgICAgfQogCi0gICAgZnJvbnRlbmRfYWRk
U25pZmZlcihXZWJJbnNwZWN0b3IsICJwYXVzZWRTY3JpcHQiLCBmdW5jdGlvbihjYWxsRnJhbWVz
KQorICAgIGZ1bmN0aW9uIHN0ZXA0KCkKICAgICB7Ci0gICAgICAgIHRlc3RDb250cm9sbGVyLnJl
c3VsdHMucHVzaCgiU2NyaXB0IGV4ZWN1dGlvbiBwYXVzZWQuIik7Ci0gICAgICAgIGZyb250ZW5k
X2V2YWx1YXRlSW5Db25zb2xlKCJ4ICsgeSArIGdsb2JhbFZhci5iIiwgZnVuY3Rpb24ocmVzdWx0
KQotICAgICAgICB7Ci0gICAgICAgICAgICB0ZXN0Q29udHJvbGxlci5yZXN1bHRzLnB1c2goIkV2
YWx1YXRlZCBzY3JpcHQgb24gdGhlIHRvcCBmcmFtZTogIiArIHJlc3VsdCk7Ci0gICAgICAgICAg
ICBXZWJJbnNwZWN0b3IucGFuZWxzLnNjcmlwdHMuc2lkZWJhclBhbmVzLmNhbGxzdGFjay5zZWxl
Y3RlZENhbGxGcmFtZSA9IGNhbGxGcmFtZXNbMV07Ci0gICAgICAgICAgICB0ZXN0Q29udHJvbGxl
ci5ydW5BZnRlclBlbmRpbmdEaXNwYXRjaGVzKHRlc3RFdmFsSW5DYWxsaW5nRnJhbWUpOwotICAg
ICAgICB9KTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluQ29uc29sZSgibG9jYWxP
YmplY3QuYSArIGdsb2JhbFZhci5iIiwgc3RlcDUpOworICAgIH0KIAotICAgICAgICBmdW5jdGlv
biB0ZXN0RXZhbEluQ2FsbGluZ0ZyYW1lKCkKLSAgICAgICAgewotICAgICAgICAgICAgZnJvbnRl
bmRfZXZhbHVhdGVJbkNvbnNvbGUoImxvY2FsT2JqZWN0LmEgKyBnbG9iYWxWYXIuYiIsIGZ1bmN0
aW9uKHJlc3VsdCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0ZXN0Q29udHJvbGxl
ci5yZXN1bHRzLnB1c2goIkV2YWx1YXRlZCBzY3JpcHQgb24gdGhlIGNhbGxpbmcgZnJhbWU6ICIg
KyByZXN1bHQpOwotICAgICAgICAgICAgICAgIGZyb250ZW5kX2NvbXBsZXRlRGVidWdnZXJUZXN0
KHRlc3RDb250cm9sbGVyKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9Ci0gICAgfSk7Cisg
ICAgZnVuY3Rpb24gc3RlcDUocmVzdWx0KQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5h
ZGRSZXN1bHQoIkV2YWx1YXRlZCBzY3JpcHQgb24gdGhlIGNhbGxpbmcgZnJhbWU6ICIgKyByZXN1
bHQpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlRGVidWdnZXJUZXN0KCk7CisgICAg
fQogfQogCiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1
Z2dlci1uby1uZXN0ZWQtcGF1c2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2RlYnVnZ2VyLW5vLW5lc3RlZC1wYXVzZS1leHBlY3RlZC50eHQKaW5kZXggMGE2MmZhMC4uNDc1
ZGE3MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLW5vLW5lc3Rl
ZC1wYXVzZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2Vy
LW5vLW5lc3RlZC1wYXVzZS1leHBlY3RlZC50eHQKQEAgLTEsMTAgKzEsOCBAQAogVGVzdHMgdGhh
dCBkZWJ1Z2dlciB3aWxsIHNraXAgYnJlYWtwb2ludCBoaXQgd2hlbiBzY3JpcHQgZXhlY3V0aW9u
IGlzIGFscmVhZHkgcGF1c2VkLiBTZWUgYnVnCiAKIERlYnVnZ2VyIHdhcyBlbmFibGVkLgotU2V0
IHRpbWVyIGZvciB0ZXN0IGZ1bmN0aW9uLgogU2NyaXB0IGV4ZWN1dGlvbiBwYXVzZWQuCi1TZXQg
dGltZXIgZm9yIHRlc3QgZnVuY3Rpb24uCiB0ZXN0RnVuY3Rpb24uaW52b2NhdGlvbkNvdW50ID0g
MgotUmVzdW1lZCBzY3JpcHQgZXhlY3V0aW9uLgotRGlzYWJsZWQgZGVidWdnZXIuCitTY3JpcHQg
ZXhlY3V0aW9uIHJlc3VtZWQuCitEZWJ1Z2dlciB3YXMgZGlzYWJsZWQuCiAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1uby1uZXN0ZWQtcGF1c2UuaHRtbCBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1uby1uZXN0ZWQtcGF1c2UuaHRtbAppbmRleCBk
ZjhjNWU2Li40MmQ4N2JkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdn
ZXItbm8tbmVzdGVkLXBhdXNlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVn
Z2VyLW5vLW5lc3RlZC1wYXVzZS5odG1sCkBAIC0xLDU4ICsxLDM4IEBACiA8aHRtbD4KIDxoZWFk
PgotPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0Lmpz
Ij48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dl
ci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9pbnNwZWN0b3ItdGVzdDIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXRlc3QyLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+CiAKKwog
ZnVuY3Rpb24gdGVzdEZ1bmN0aW9uKCkKIHsKICAgICB0ZXN0RnVuY3Rpb24uaW52b2NhdGlvbkNv
dW50Kys7CiAgICAgZGVidWdnZXI7Ci0gICAgaWYgKHRlc3RGdW5jdGlvbi5kaWRFeGl0RnJvbU5l
c3RlZENhbGwpCi0gICAgICAgIG5vdGlmeURvbmUoKTsKLSAgICB0ZXN0RnVuY3Rpb24uZGlkRXhp
dEZyb21OZXN0ZWRDYWxsID0gdHJ1ZTsKIH0KLXRlc3RGdW5jdGlvbi5pbnZvY2F0aW9uQ291bnQg
PSAwOwogCi1mdW5jdGlvbiBkb2l0KCkKLXsKLSAgICBldmFsdWF0ZUluV2ViSW5zcGVjdG9yKCJm
cm9udGVuZF90ZXN0Tm9OZXN0ZWRQYXVzZSIsIGR1bXBBcnJheSk7Ci19Cit0ZXN0RnVuY3Rpb24u
aW52b2NhdGlvbkNvdW50ID0gMDsKIAotZnVuY3Rpb24gZnJvbnRlbmRfdGVzdE5vTmVzdGVkUGF1
c2UodGVzdENvbnRyb2xsZXIpCit2YXIgdGVzdCA9IGZ1bmN0aW9uKCkKIHsKLSAgICB0ZXN0Q29u
dHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgSW5zcGVjdG9yVGVzdC5zdGFydERlYnVnZ2Vy
VGVzdChzdGVwMSk7CiAKLSAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJzY3JpcHRzIik7Ci0g
ICAgZnJvbnRlbmRfZW5zdXJlRGVidWdnZXJFbmFibGVkKGRlYnVnZ2VyV2FzRW5hYmxlZENhbGxi
YWNrKTsKLQotICAgIGZ1bmN0aW9uIGRlYnVnZ2VyV2FzRW5hYmxlZENhbGxiYWNrKCkKKyAgICBm
dW5jdGlvbiBzdGVwMSgpCiAgICAgewotICAgICAgICB0ZXN0Q29udHJvbGxlci5yZXN1bHRzLnB1
c2goIkRlYnVnZ2VyIHdhcyBlbmFibGVkLiIpOwotICAgICAgICBmcm9udGVuZF9ldmFsdWF0ZUlu
Q29uc29sZSgic2V0VGltZW91dCh0ZXN0RnVuY3Rpb24sIDApIiwgZnVuY3Rpb24ocmVzdWx0KQot
ICAgICAgICB7Ci0gICAgICAgICAgICB0ZXN0Q29udHJvbGxlci5yZXN1bHRzLnB1c2goIlNldCB0
aW1lciBmb3IgdGVzdCBmdW5jdGlvbi4iKTsKLSAgICAgICAgfSk7CisgICAgICAgIEluc3BlY3Rv
clRlc3QuZXZhbHVhdGVJbkNvbnNvbGUoInNldFRpbWVvdXQodGVzdEZ1bmN0aW9uLCAwKSIpOwor
ICAgICAgICBJbnNwZWN0b3JUZXN0LndhaXRVbnRpbFBhdXNlZChzdGVwMik7CiAgICAgfQogCi0g
ICAgdmFyIHBhdXNlZCA9IGZhbHNlOwotICAgIGZyb250ZW5kX2FkZFNuaWZmZXIoV2ViSW5zcGVj
dG9yLCAicGF1c2VkU2NyaXB0IiwgZnVuY3Rpb24oY2FsbEZyYW1lcykKKyAgICBmdW5jdGlvbiBz
dGVwMigpCiAgICAgewotICAgICAgICBpZiAocGF1c2VkKSB7Ci0gICAgICAgICAgICB0ZXN0Q29u
dHJvbGxlci5yZXN1bHRzLnB1c2goIlNjcmlwdCBleGVjdXRpb24gcGF1c2VkIHNlY29uZCB0aW1l
LiIpOwotICAgICAgICAgICAgdGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIHBhdXNlZCA9IHRydWU7Ci0gICAgICAgIHRl
c3RDb250cm9sbGVyLnJlc3VsdHMucHVzaCgiU2NyaXB0IGV4ZWN1dGlvbiBwYXVzZWQuIik7Cisg
ICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJbkNvbnNvbGUoInRlc3RGdW5jdGlvbigpOyB0
ZXN0RnVuY3Rpb24uaW52b2NhdGlvbkNvdW50Iiwgc3RlcDMpOworICAgIH0KIAotICAgICAgICB0
ZXN0Q29udHJvbGxlci5yZXN1bHRzLnB1c2goIlNldCB0aW1lciBmb3IgdGVzdCBmdW5jdGlvbi4i
KTsKLSAgICAgICAgZnJvbnRlbmRfZXZhbHVhdGVJbkNvbnNvbGUoInRlc3RGdW5jdGlvbigpOyB0
ZXN0RnVuY3Rpb24uaW52b2NhdGlvbkNvdW50IiwgZnVuY3Rpb24ocmVzdWx0KQotICAgICAgICB7
Ci0gICAgICAgICAgICB0ZXN0Q29udHJvbGxlci5yZXN1bHRzLnB1c2goInRlc3RGdW5jdGlvbi5p
bnZvY2F0aW9uQ291bnQgPSAiICsgcmVzdWx0KTsKLSAgICAgICAgICAgIGZyb250ZW5kX2NvbXBs
ZXRlRGVidWdnZXJUZXN0KHRlc3RDb250cm9sbGVyKTsKLSAgICAgICAgfSk7Ci0gICAgfSk7Cisg
ICAgZnVuY3Rpb24gc3RlcDMocmVzdWx0KQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5h
ZGRSZXN1bHQoInRlc3RGdW5jdGlvbi5pbnZvY2F0aW9uQ291bnQgPSAiICsgcmVzdWx0KTsKKyAg
ICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZURlYnVnZ2VyVGVzdCgpOworICAgIH0KIH0KIAog
PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItcGF1
c2UtaW4tZXZhbC1zY3JpcHQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Rl
YnVnZ2VyLXBhdXNlLWluLWV2YWwtc2NyaXB0LWV4cGVjdGVkLnR4dAppbmRleCA1ODUzMGZjLi5m
NmRkNDc5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItcGF1c2Ut
aW4tZXZhbC1zY3JpcHQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9k
ZWJ1Z2dlci1wYXVzZS1pbi1ldmFsLXNjcmlwdC1leHBlY3RlZC50eHQKQEAgLTUsNiArNSw2IEBA
IEV2YWx1YXRlZCBzY3JpcHQgaW4gY29uc29sZS4KIFNjcmlwdCBleGVjdXRpb24gcGF1c2VkLgog
RXhlY3V0aW9uIGxpbmUgbnVtYmVyOiAzCiBFeGVjdXRpb24gbGluZSB0ZXh0OiAgICAgZGVidWdn
ZXI7Ci1SZXN1bWVkIHNjcmlwdCBleGVjdXRpb24uCi1EaXNhYmxlZCBkZWJ1Z2dlci4KK1Njcmlw
dCBleGVjdXRpb24gcmVzdW1lZC4KK0RlYnVnZ2VyIHdhcyBkaXNhYmxlZC4KIApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXBhdXNlLWluLWV2YWwtc2NyaXB0Lmh0
bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItcGF1c2UtaW4tZXZhbC1zY3JpcHQu
aHRtbAppbmRleCBjNjU1YWI2Li5jMjhlYWY1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZGVidWdnZXItcGF1c2UtaW4tZXZhbC1zY3JpcHQuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZGVidWdnZXItcGF1c2UtaW4tZXZhbC1zY3JpcHQuaHRtbApAQCAtMSw1NiAr
MSwzNSBAQAogPGh0bWw+CiA8aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vaHR0cC90
ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QyLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci10ZXN0Mi5qcyI+PC9z
Y3JpcHQ+CiA8c2NyaXB0PgogCi1mdW5jdGlvbiBkb2l0KCkKLXsKLSAgICBldmFsdWF0ZUluV2Vi
SW5zcGVjdG9yKCJmcm9udGVuZF90ZXN0UGF1c2VPbkRlYnVnZ2VyU3RhdGVtZW50IiwgZHVtcEFy
cmF5KTsKLX0KIAotZnVuY3Rpb24gZnJvbnRlbmRfdGVzdFBhdXNlT25EZWJ1Z2dlclN0YXRlbWVu
dCh0ZXN0Q29udHJvbGxlcikKK3ZhciB0ZXN0ID0gZnVuY3Rpb24oKQogewotICAgIHRlc3RDb250
cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLQotICAgIFdlYkluc3BlY3Rvci5zaG93UGFuZWwoInNj
cmlwdHMiKTsKLQogICAgIHZhciBzY3JpcHRUb0V2YWx1YXRlID0gImZ1bmN0aW9uIHRlc3RGdW5j
dGlvbigpIHtcbiIgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICBkZWJ1Z2dlcjtc
biIgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICBub3RpZnlEb25lKCk7XG4iICsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ9XG4iICsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJzZXRUaW1lb3V0KHRlc3RGdW5jdGlvbiwgMCk7XG4iOwotICAgIGZ1bmN0aW9uIGRl
YnVnZ2VyV2FzRW5hYmxlZENhbGxiYWNrKCkKLSAgICB7Ci0gICAgICAgIHRlc3RDb250cm9sbGVy
LnJlc3VsdHMucHVzaCgiRGVidWdnZXIgd2FzIGVuYWJsZWQuIik7CiAKLSAgICAgICAgZnJvbnRl
bmRfZXZhbHVhdGVJbkNvbnNvbGUoc2NyaXB0VG9FdmFsdWF0ZSwKLSAgICAgICAgZnVuY3Rpb24o
cmVzdWx0KQotICAgICAgICB7Ci0gICAgICAgICAgICB0ZXN0Q29udHJvbGxlci5yZXN1bHRzLnB1
c2goIkV2YWx1YXRlZCBzY3JpcHQgaW4gY29uc29sZS4iKTsKLSAgICAgICAgfSk7Ci0gICAgfQor
ICAgIEluc3BlY3RvclRlc3Quc3RhcnREZWJ1Z2dlclRlc3Qoc3RlcDEpOwogCi0gICAgZnJvbnRl
bmRfZW5zdXJlRGVidWdnZXJFbmFibGVkKGRlYnVnZ2VyV2FzRW5hYmxlZENhbGxiYWNrKTsKKyAg
ICBmdW5jdGlvbiBzdGVwMSgpCisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRl
SW5Db25zb2xlKHNjcmlwdFRvRXZhbHVhdGUsIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0LmJpbmQo
SW5zcGVjdG9yVGVzdCwgIkV2YWx1YXRlZCBzY3JpcHQgaW4gY29uc29sZS4iKSk7CisgICAgICAg
IEluc3BlY3RvclRlc3Qud2FpdFVudGlsUGF1c2VkKHN0ZXAyKTsKKyAgICB9CiAKLSAgICBmcm9u
dGVuZF9hZGRTbmlmZmVyKFdlYkluc3BlY3RvciwgInBhdXNlZFNjcmlwdCIsIGZ1bmN0aW9uKGNh
bGxGcmFtZXMpCisgICAgZnVuY3Rpb24gc3RlcDIoKQogICAgIHsKLSAgICAgICAgdGVzdENvbnRy
b2xsZXIucmVzdWx0cy5wdXNoKCJTY3JpcHQgZXhlY3V0aW9uIHBhdXNlZC4iKTsKLSAgICAgICAg
ZnJvbnRlbmRfY2hlY2tFeGVjdXRpb25MaW5lV2hlblNvdXJjZUZyYW1lSXNMb2FkZWQodGVzdENv
bnRyb2xsZXIsIGZyb250ZW5kX2NvbXBsZXRlRGVidWdnZXJUZXN0LmJpbmQobnVsbCwgdGVzdENv
bnRyb2xsZXIpKTsKLSAgICB9KTsKLX0KKyAgICAgICAgSW5zcGVjdG9yVGVzdC53YWl0VW50aWxD
dXJyZW50U291cmNlRnJhbWVJc0xvYWRlZChzdGVwMyk7CisgICAgfQogCi1mdW5jdGlvbiBmcm9u
dGVuZF9jaGVja0V4ZWN1dGlvbkxpbmVXaGVuU291cmNlRnJhbWVJc0xvYWRlZCh0ZXN0Q29udHJv
bGxlciwgY2FsbGJhY2spCi17Ci0gICAgdmFyIHNvdXJjZUZyYW1lID0gV2ViSW5zcGVjdG9yLmN1
cnJlbnRQYW5lbC52aXNpYmxlVmlldy5zb3VyY2VGcmFtZTsKLSAgICBpZiAoc291cmNlRnJhbWUu
X2xvYWRlZCkgewotICAgICAgICB0ZXN0Q29udHJvbGxlci5yZXN1bHRzLnB1c2goIkV4ZWN1dGlv
biBsaW5lIG51bWJlcjogIiArIHNvdXJjZUZyYW1lLmV4ZWN1dGlvbkxpbmUpOwotICAgICAgICB0
ZXN0Q29udHJvbGxlci5yZXN1bHRzLnB1c2goIkV4ZWN1dGlvbiBsaW5lIHRleHQ6ICIgKyBzb3Vy
Y2VGcmFtZS5fdGV4dE1vZGVsLmxpbmUoc291cmNlRnJhbWUuZXhlY3V0aW9uTGluZSAtIDEpKTsK
LSAgICAgICAgY2FsbGJhY2soKTsKLSAgICB9IGVsc2UgewotICAgICAgICBmcm9udGVuZF9hZGRT
bmlmZmVyKHNvdXJjZUZyYW1lLCAic2V0Q29udGVudCIsIGZ1bmN0aW9uKCkgewotICAgICAgICAg
ICAgZnJvbnRlbmRfY2hlY2tFeGVjdXRpb25MaW5lV2hlblNvdXJjZUZyYW1lSXNMb2FkZWQodGVz
dENvbnRyb2xsZXIsIGNhbGxiYWNrKTsKLSAgICAgICAgfSk7CisgICAgZnVuY3Rpb24gc3RlcDMo
c291cmNlRnJhbWUpCisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiRXhl
Y3V0aW9uIGxpbmUgbnVtYmVyOiAiICsgc291cmNlRnJhbWUuZXhlY3V0aW9uTGluZSk7CisgICAg
ICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJFeGVjdXRpb24gbGluZSB0ZXh0OiAiICsgc291
cmNlRnJhbWUuX3RleHRNb2RlbC5saW5lKHNvdXJjZUZyYW1lLmV4ZWN1dGlvbkxpbmUgLSAxKSk7
CisgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVEZWJ1Z2dlclRlc3QoKTsKICAgICB9CiB9
CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1wYXVzZS1vbi1k
ZWJ1Z2dlci1zdGF0ZW1lbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Rl
YnVnZ2VyLXBhdXNlLW9uLWRlYnVnZ2VyLXN0YXRlbWVudC1leHBlY3RlZC50eHQKaW5kZXggMzll
YWYwYy4uNDY2NDU2MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2Vy
LXBhdXNlLW9uLWRlYnVnZ2VyLXN0YXRlbWVudC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXBhdXNlLW9uLWRlYnVnZ2VyLXN0YXRlbWVudC1leHBlY3Rl
ZC50eHQKQEAgLTEsOCArMSw3IEBACiBUZXN0cyB0aGF0IGRlYnVnZ2VyIHdpbGwgc3RvcCBvbiAi
ZGVidWdnZXIiIHN0YXRlbWVudC4KIAogRGVidWdnZXIgd2FzIGVuYWJsZWQuCi1TZXQgdGltZXIg
Zm9yIHRlc3QgZnVuY3Rpb24uCiBTY3JpcHQgZXhlY3V0aW9uIHBhdXNlZC4KLVJlc3VtZWQgc2Ny
aXB0IGV4ZWN1dGlvbi4KLURpc2FibGVkIGRlYnVnZ2VyLgorU2NyaXB0IGV4ZWN1dGlvbiByZXN1
bWVkLgorRGVidWdnZXIgd2FzIGRpc2FibGVkLgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZGVidWdnZXItcGF1c2Utb24tZGVidWdnZXItc3RhdGVtZW50Lmh0bWwgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItcGF1c2Utb24tZGVidWdnZXItc3RhdGVtZW50Lmh0
bWwKaW5kZXggNzQxOTZjYS4uZmJiMzQ0NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2RlYnVnZ2VyLXBhdXNlLW9uLWRlYnVnZ2VyLXN0YXRlbWVudC5odG1sCisrKyBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1wYXVzZS1vbi1kZWJ1Z2dlci1zdGF0ZW1lbnQuaHRt
bApAQCAtMSw0MCArMSwyNyBAQAogPGh0bWw+CiA8aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9odHRw
L3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNy
Yz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QyLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci10
ZXN0Mi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogCiBmdW5jdGlvbiB0ZXN0RnVuY3Rpb24oKSB7
CiAgICAgZGVidWdnZXI7Ci0gICAgbm90aWZ5RG9uZSgpOwogfQogCi1mdW5jdGlvbiBkb2l0KCkK
K3ZhciB0ZXN0ID0gZnVuY3Rpb24oKQogewotICAgIGV2YWx1YXRlSW5XZWJJbnNwZWN0b3IoImZy
b250ZW5kX3Rlc3RQYXVzZU9uRGVidWdnZXJTdGF0ZW1lbnQiLCBkdW1wQXJyYXkpOwotfQotCi1m
dW5jdGlvbiBmcm9udGVuZF90ZXN0UGF1c2VPbkRlYnVnZ2VyU3RhdGVtZW50KHRlc3RDb250cm9s
bGVyKQotewotICAgIHRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBJbnNwZWN0
b3JUZXN0LnN0YXJ0RGVidWdnZXJUZXN0KHN0ZXAxKTsKIAotICAgIFdlYkluc3BlY3Rvci5zaG93
UGFuZWwoInNjcmlwdHMiKTsKLSAgICBmcm9udGVuZF9lbnN1cmVEZWJ1Z2dlckVuYWJsZWQoZGVi
dWdnZXJXYXNFbmFibGVkQ2FsbGJhY2spOwotCi0gICAgZnVuY3Rpb24gZGVidWdnZXJXYXNFbmFi
bGVkQ2FsbGJhY2soKQorICAgIGZ1bmN0aW9uIHN0ZXAxKCkKICAgICB7Ci0gICAgICAgIHRlc3RD
b250cm9sbGVyLnJlc3VsdHMucHVzaCgiRGVidWdnZXIgd2FzIGVuYWJsZWQuIik7Ci0gICAgICAg
IGZyb250ZW5kX2V2YWx1YXRlSW5Db25zb2xlKCJzZXRUaW1lb3V0KHRlc3RGdW5jdGlvbiwgMCki
LCBmdW5jdGlvbihyZXN1bHQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRlc3RDb250cm9sbGVy
LnJlc3VsdHMucHVzaCgiU2V0IHRpbWVyIGZvciB0ZXN0IGZ1bmN0aW9uLiIpOwotICAgICAgICB9
KTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluQ29uc29sZSgic2V0VGltZW91dCh0
ZXN0RnVuY3Rpb24sIDApIik7CisgICAgICAgIEluc3BlY3RvclRlc3Qud2FpdFVudGlsUGF1c2Vk
KHN0ZXAyKTsKICAgICB9CiAKLSAgICBmcm9udGVuZF9hZGRTbmlmZmVyKFdlYkluc3BlY3Rvciwg
InBhdXNlZFNjcmlwdCIsIGZ1bmN0aW9uKGNhbGxGcmFtZXMpCisgICAgZnVuY3Rpb24gc3RlcDIo
KQogICAgIHsKLSAgICAgICAgdGVzdENvbnRyb2xsZXIucmVzdWx0cy5wdXNoKCJTY3JpcHQgZXhl
Y3V0aW9uIHBhdXNlZC4iKTsKLSAgICAgICAgZnJvbnRlbmRfY29tcGxldGVEZWJ1Z2dlclRlc3Qo
dGVzdENvbnRyb2xsZXIpOwotICAgIH0pOworICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRl
RGVidWdnZXJUZXN0KCk7CisgICAgfQogfQogCiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1wcm90by1wcm9wZXJ0eS1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItcHJvdG8tcHJvcGVydHktZXhwZWN0ZWQudHh0
CmluZGV4IGNmMmVjYWEuLjc5MzM2YzYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9kZWJ1Z2dlci1wcm90by1wcm9wZXJ0eS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2RlYnVnZ2VyLXByb3RvLXByb3BlcnR5LWV4cGVjdGVkLnR4dApAQCAtMSwxMCAr
MSw5IEBACiBUZXN0cyB0aGF0IG9iamVjdCdzIF9fcHJvdG9fXyBwcm9wZXJ0eSBpcyBwcmVzZW50
IGluIG9iamVjdCBwcm9wZXJ0aWVzIHNlY3Rpb24gd2hlbiBzY3JpcHQgaXMgcGF1c2VkIG9uIGEg
YnJlYWtwb2ludC5CdWcgNDEyMTQKIAogRGVidWdnZXIgd2FzIGVuYWJsZWQuCi1TZXQgdGltZXIg
Zm9yIHRlc3QgZnVuY3Rpb24uCiBTY3JpcHQgZXhlY3V0aW9uIHBhdXNlZC4KIEV4cGFuZGVkIHBy
b3BlcnR5OiBvLl9fcHJvdG9fXy5fX3Byb3RvX18KIEV4cGFuZGVkIHByb3BlcnR5OiBkLl9fcHJv
dG9fXy5fX3Byb3RvX18uX19wcm90b19fLl9fcHJvdG9fXy5fX3Byb3RvX18KLVJlc3VtZWQgc2Ny
aXB0IGV4ZWN1dGlvbi4KLURpc2FibGVkIGRlYnVnZ2VyLgorU2NyaXB0IGV4ZWN1dGlvbiByZXN1
bWVkLgorRGVidWdnZXIgd2FzIGRpc2FibGVkLgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZGVidWdnZXItcHJvdG8tcHJvcGVydHkuaHRtbCBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9kZWJ1Z2dlci1wcm90by1wcm9wZXJ0eS5odG1sCmluZGV4IDUxYTc0NjYuLmMwMGRjZTAg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1wcm90by1wcm9wZXJ0
eS5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1wcm90by1wcm9wZXJ0
eS5odG1sCkBAIC0xLDEwMSArMSw0OCBAQAogPGh0bWw+CiA8aGVhZD4KLTxzY3JpcHQgc3JjPSIu
Li9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItdGVzdC5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3Qy
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1
Z2dlci10ZXN0Mi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogCi1mdW5jdGlvbiBDKCkgeworZnVu
Y3Rpb24gQygpCit7CiB9CisKIEMucHJvdG90eXBlID0gewogICAgIG06IGZ1bmN0aW9uKCkgeyB9
CiB9CiAKLWZ1bmN0aW9uIHRlc3RGdW5jdGlvbigpIHsKK2Z1bmN0aW9uIHRlc3RGdW5jdGlvbigp
Cit7CiAgICAgdmFyIG8gPSBuZXcgQygpOwogICAgIHZhciBkID0gZG9jdW1lbnQuZG9jdW1lbnRF
bGVtZW50OwogICAgIGRlYnVnZ2VyOwotICAgIG5vdGlmeURvbmUoKTsKIH0KIAotZnVuY3Rpb24g
ZG9pdCgpCit2YXIgdGVzdCA9IGZ1bmN0aW9uKCkKIHsKLSAgICBldmFsdWF0ZUluV2ViSW5zcGVj
dG9yKCJmcm9udGVuZF90ZXN0UHJvdG9Qcm9wZXJ0eU9uUGF1c2UiLCBkdW1wQXJyYXkpOwotfQor
ICAgIEluc3BlY3RvclRlc3Quc3RhcnREZWJ1Z2dlclRlc3Qoc3RlcDEpOwogCi1mdW5jdGlvbiBm
cm9udGVuZF90ZXN0UHJvdG9Qcm9wZXJ0eU9uUGF1c2UodGVzdENvbnRyb2xsZXIpCi17Ci0gICAg
dGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotCi0gICAgV2ViSW5zcGVjdG9yLnNob3dQ
YW5lbCgic2NyaXB0cyIpOwotICAgIGZyb250ZW5kX2Vuc3VyZURlYnVnZ2VyRW5hYmxlZChkZWJ1
Z2dlcldhc0VuYWJsZWRDYWxsYmFjayk7Ci0KLSAgICBmdW5jdGlvbiBkZWJ1Z2dlcldhc0VuYWJs
ZWRDYWxsYmFjaygpCisgICAgZnVuY3Rpb24gc3RlcDEoKQogICAgIHsKLSAgICAgICAgdGVzdENv
bnRyb2xsZXIucmVzdWx0cy5wdXNoKCJEZWJ1Z2dlciB3YXMgZW5hYmxlZC4iKTsKLSAgICAgICAg
ZnJvbnRlbmRfZXZhbHVhdGVJbkNvbnNvbGUoInNldFRpbWVvdXQodGVzdEZ1bmN0aW9uLCAwKSIs
IGZ1bmN0aW9uKHJlc3VsdCkKLSAgICAgICAgewotICAgICAgICAgICAgdGVzdENvbnRyb2xsZXIu
cmVzdWx0cy5wdXNoKCJTZXQgdGltZXIgZm9yIHRlc3QgZnVuY3Rpb24uIik7Ci0gICAgICAgIH0p
OworICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5Db25zb2xlKCJzZXRUaW1lb3V0KHRl
c3RGdW5jdGlvbiwgMCkiKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC53YWl0VW50aWxQYXVzZWQo
c3RlcDIpOwogICAgIH0KIAotICAgIGZyb250ZW5kX2FkZFNuaWZmZXIoV2ViSW5zcGVjdG9yLCAi
cGF1c2VkU2NyaXB0IiwgZnVuY3Rpb24oY2FsbEZyYW1lcykKKyAgICBmdW5jdGlvbiBzdGVwMihj
YWxsRnJhbWVzKQogICAgIHsKLSAgICAgICAgdGVzdENvbnRyb2xsZXIucmVzdWx0cy5wdXNoKCJT
Y3JpcHQgZXhlY3V0aW9uIHBhdXNlZC4iKTsKICAgICAgICAgdmFyIHNlY3Rpb25zID0gV2ViSW5z
cGVjdG9yLmN1cnJlbnRQYW5lbC5zaWRlYmFyUGFuZXMuc2NvcGVjaGFpbi5zZWN0aW9uczsKICAg
ICAgICAgdmFyIGxvY2FsU2NvcGUgPSBzZWN0aW9uc1swXS5wcm9wZXJ0aWVzVHJlZU91dGxpbmU7
CiAgICAgICAgIHZhciBwcm9wZXJ0aWVzID0gWwogICAgICAgICAgICAgbG9jYWxTY29wZSwgWyJv
IiwgIl9fcHJvdG9fXyIsICJfX3Byb3RvX18iXSwKICAgICAgICAgICAgIGxvY2FsU2NvcGUsIFsi
ZCIsICJfX3Byb3RvX18iLCAiX19wcm90b19fIiwgIl9fcHJvdG9fXyIsICJfX3Byb3RvX18iLCAi
X19wcm90b19fIl0KICAgICAgICAgXTsKLSAgICAgICAgZnJvbnRlbmRfZXhwYW5kUHJvcGVydGll
cyh0ZXN0Q29udHJvbGxlciwgcHJvcGVydGllcywgZnJvbnRlbmRfY29tcGxldGVEZWJ1Z2dlclRl
c3QuYmluZChudWxsLCB0ZXN0Q29udHJvbGxlcikpOwotICAgIH0pOwotfQotCi1mdW5jdGlvbiBm
cm9udGVuZF9leHBhbmRQcm9wZXJ0aWVzKHRlc3RDb250cm9sbGVyLCBwcm9wZXJ0aWVzLCBjYWxs
YmFjaykKLXsKLSAgICB2YXIgaW5kZXggPSAwOwotICAgIGZ1bmN0aW9uIGV4cGFuZE5leHRQYXRo
KCkKLSAgICB7Ci0gICAgICAgIGlmIChpbmRleCA9PT0gcHJvcGVydGllcy5sZW5ndGgpIHsKLSAg
ICAgICAgICAgIGNhbGxiYWNrKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAg
ICAgICAgdmFyIHBhcmVudFRyZWVFbGVtZW50ID0gcHJvcGVydGllc1tpbmRleCsrXTsKLSAgICAg
ICAgdmFyIHBhdGggPSBwcm9wZXJ0aWVzW2luZGV4KytdOwotICAgICAgICBmcm9udGVuZF9leHBh
bmRQcm9wZXJ0eSh0ZXN0Q29udHJvbGxlciwgcGFyZW50VHJlZUVsZW1lbnQsIHBhdGgsIDAsIGV4
cGFuZE5leHRQYXRoKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBhbmRQcm9wZXJ0aWVzKHBy
b3BlcnRpZXMsIHN0ZXAzKTsKICAgICB9Ci0gICAgdGVzdENvbnRyb2xsZXIucnVuQWZ0ZXJQZW5k
aW5nRGlzcGF0Y2hlcyhleHBhbmROZXh0UGF0aCk7Ci19CiAKLWZ1bmN0aW9uIGZyb250ZW5kX2V4
cGFuZFByb3BlcnR5KHRlc3RDb250cm9sbGVyLCBwYXJlbnRUcmVlRWxlbWVudCwgcGF0aCwgcGF0
aEluZGV4LCBjYWxsYmFjaykKLXsKLSAgICBpZiAocGF0aEluZGV4ID09PSBwYXRoLmxlbmd0aCkg
ewotICAgICAgICB0ZXN0Q29udHJvbGxlci5yZXN1bHRzLnB1c2goIkV4cGFuZGVkIHByb3BlcnR5
OiAiICsgcGF0aC5qb2luKCIuIikpOwotICAgICAgICBjYWxsYmFjaygpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIHZhciBuYW1lID0gcGF0aFtwYXRoSW5kZXgrK107Ci0gICAgdmFyIHBy
b3BlcnR5VHJlZUVsZW1lbnQgPSBmcm9udGVuZF9maW5kQ2hpbGRQcm9wZXJ0eVRyZWVFbGVtZW50
KHBhcmVudFRyZWVFbGVtZW50LCBuYW1lKTsKLSAgICBpZiAoIXByb3BlcnR5VHJlZUVsZW1lbnQp
IHsKLSAgICAgICB0ZXN0Q29udHJvbGxlci5yZXN1bHRzLnB1c2goIkZhaWxlZCB0byBleHBhbmQg
cHJvcGVydHk6ICIgKyBwYXRoLnNsaWNlKDAsIHBhdGhJbmRleCkuam9pbigiLiIpKTsKLSAgICAg
ICB0ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Ci0gICAgICAgcmV0dXJuOwotICAgIH0KLSAg
ICBwcm9wZXJ0eVRyZWVFbGVtZW50LmV4cGFuZCgpOwotICAgIHRlc3RDb250cm9sbGVyLnJ1bkFm
dGVyUGVuZGluZ0Rpc3BhdGNoZXMoZnVuY3Rpb24oKQorICAgIGZ1bmN0aW9uIHN0ZXAzKCkKICAg
ICB7Ci0gICAgICAgIGZyb250ZW5kX2V4cGFuZFByb3BlcnR5KHRlc3RDb250cm9sbGVyLCBwcm9w
ZXJ0eVRyZWVFbGVtZW50LCBwYXRoLCBwYXRoSW5kZXgsIGNhbGxiYWNrKTsKLSAgICB9KTsKLX0K
LQotZnVuY3Rpb24gZnJvbnRlbmRfZmluZENoaWxkUHJvcGVydHlUcmVlRWxlbWVudChwYXJlbnQs
IGNoaWxkTmFtZSkKLXsKLSAgICB2YXIgY2hpbGRyZW4gPSBwYXJlbnQuY2hpbGRyZW47Ci0gICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykgewotICAgICAgICB2YXIg
dHJlZUVsZW1lbnQgPSBjaGlsZHJlbltpXTsKLSAgICAgICAgdmFyIHByb3BlcnR5ID0gdHJlZUVs
ZW1lbnQucHJvcGVydHk7Ci0gICAgICAgIGlmIChwcm9wZXJ0eS5uYW1lID09PSBjaGlsZE5hbWUp
Ci0gICAgICAgICAgICByZXR1cm4gdHJlZUVsZW1lbnQ7CisgICAgICAgIEluc3BlY3RvclRlc3Qu
Y29tcGxldGVEZWJ1Z2dlclRlc3QoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1zdGVwLWluLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9kZWJ1Z2dlci1zdGVwLWluLWV4cGVjdGVkLnR4dAppbmRleCA3ODc3MWFlLi4y
MWM3OWZiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItc3RlcC1p
bi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXN0ZXAt
aW4tZXhwZWN0ZWQudHh0CkBAIC0xLDE5ICsxLDIwIEBACiBUZXN0cyAic3RlcCBpbiIgZnVuY3Rp
b25hbGl0eSBpbiBkZWJ1Z2dlci4KIAogRGVidWdnZXIgd2FzIGVuYWJsZWQuCi1TZXQgdGltZXIg
Zm9yIHRlc3QgZnVuY3Rpb24uCiBTY3JpcHQgZXhlY3V0aW9uIHBhdXNlZC4KIENhbGwgc3RhY2s6
Ci0gICAgMCkgdGVzdEZ1bmN0aW9uIChkZWJ1Z2dlci1zdGVwLWluLmh0bWw6MTIpCisgICAgMCkg
dGVzdEZ1bmN0aW9uIChkZWJ1Z2dlci1zdGVwLWluLmh0bWw6MTQpCiBTdGVwcGluZyBpbnRvLi4u
CitTY3JpcHQgZXhlY3V0aW9uIHJlc3VtZWQuCiBTY3JpcHQgZXhlY3V0aW9uIHBhdXNlZC4KIENh
bGwgc3RhY2s6Ci0gICAgMCkgdGVzdEZ1bmN0aW9uIChkZWJ1Z2dlci1zdGVwLWluLmh0bWw6MTMp
CisgICAgMCkgdGVzdEZ1bmN0aW9uIChkZWJ1Z2dlci1zdGVwLWluLmh0bWw6MTUpCiBTdGVwcGlu
ZyBpbnRvLi4uCitTY3JpcHQgZXhlY3V0aW9uIHJlc3VtZWQuCiBTY3JpcHQgZXhlY3V0aW9uIHBh
dXNlZC4KIENhbGwgc3RhY2s6Ci0gICAgMCkgZCAoZGVidWdnZXItc3RlcC1pbi5odG1sOjcpCi0g
ICAgMSkgdGVzdEZ1bmN0aW9uIChkZWJ1Z2dlci1zdGVwLWluLmh0bWw6MTMpCi1SZXN1bWVkIHNj
cmlwdCBleGVjdXRpb24uCi1EaXNhYmxlZCBkZWJ1Z2dlci4KKyAgICAwKSBkIChkZWJ1Z2dlci1z
dGVwLWluLmh0bWw6OCkKKyAgICAxKSB0ZXN0RnVuY3Rpb24gKGRlYnVnZ2VyLXN0ZXAtaW4uaHRt
bDoxNSkKK1NjcmlwdCBleGVjdXRpb24gcmVzdW1lZC4KK0RlYnVnZ2VyIHdhcyBkaXNhYmxlZC4K
IApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXN0ZXAtaW4uaHRt
bCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1zdGVwLWluLmh0bWwKaW5kZXggMzM2
YTZlNi4uNjUyYWU2ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2Vy
LXN0ZXAtaW4uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItc3RlcC1p
bi5odG1sCkBAIC0xLDUzICsxLDQyIEBACiA8aHRtbD4KIDxoZWFkPgotPHNjcmlwdCBzcmM9Ii4u
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci10ZXN0LmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdDIu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2RlYnVn
Z2VyLXRlc3QyLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+CiAKLWZ1bmN0aW9uIGQoKSB7CitmdW5j
dGlvbiBkKCkKK3sKICAgICB2YXIgaSA9IDEwOwogfQogCi1mdW5jdGlvbiB0ZXN0RnVuY3Rpb24o
KSB7CitmdW5jdGlvbiB0ZXN0RnVuY3Rpb24oKQorewogICAgIGRlYnVnZ2VyOwogICAgIGQoKTsK
LSAgICBub3RpZnlEb25lKCk7CiB9CiAKLWZ1bmN0aW9uIGRvaXQoKQordmFyIHRlc3QgPSBmdW5j
dGlvbigpCiB7Ci0gICAgZXZhbHVhdGVJbldlYkluc3BlY3RvcigiZnJvbnRlbmRfdGVzdFN0ZXBJ
biIsIGR1bXBBcnJheSk7Ci19CisgICAgSW5zcGVjdG9yVGVzdC5zdGFydERlYnVnZ2VyVGVzdChz
dGVwMSk7CiAKLWZ1bmN0aW9uIGZyb250ZW5kX3Rlc3RTdGVwSW4odGVzdENvbnRyb2xsZXIpCi17
Ci0gICAgdGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotCi0gICAgV2ViSW5zcGVjdG9y
LnNob3dQYW5lbCgic2NyaXB0cyIpOwotICAgIGZyb250ZW5kX2Vuc3VyZURlYnVnZ2VyRW5hYmxl
ZChkZWJ1Z2dlcldhc0VuYWJsZWRDYWxsYmFjayk7Ci0KLSAgICBmdW5jdGlvbiBkZWJ1Z2dlcldh
c0VuYWJsZWRDYWxsYmFjaygpCisgICAgZnVuY3Rpb24gc3RlcDEoKQogICAgIHsKLSAgICAgICAg
dGVzdENvbnRyb2xsZXIucmVzdWx0cy5wdXNoKCJEZWJ1Z2dlciB3YXMgZW5hYmxlZC4iKTsKLSAg
ICAgICAgZnJvbnRlbmRfZXZhbHVhdGVJbkNvbnNvbGUoInNldFRpbWVvdXQodGVzdEZ1bmN0aW9u
LCAwKSIsIGZ1bmN0aW9uKHJlc3VsdCkKLSAgICAgICAgewotICAgICAgICAgICAgdGVzdENvbnRy
b2xsZXIucmVzdWx0cy5wdXNoKCJTZXQgdGltZXIgZm9yIHRlc3QgZnVuY3Rpb24uIik7Ci0gICAg
ICAgIH0pOworICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5Db25zb2xlKCJzZXRUaW1l
b3V0KHRlc3RGdW5jdGlvbiwgMCkiKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC53YWl0VW50aWxQ
YXVzZWQoc3RlcDIpOwogICAgIH0KIAogICAgIHZhciBzdGVwQ291bnQgPSAwOwotICAgIGZyb250
ZW5kX2FkZFNuaWZmZXIoV2ViSW5zcGVjdG9yLCAicGF1c2VkU2NyaXB0IiwgZnVuY3Rpb24oY2Fs
bEZyYW1lcykKKyAgICBmdW5jdGlvbiBzdGVwMihjYWxsRnJhbWVzKQogICAgIHsKLSAgICAgICAg
dGVzdENvbnRyb2xsZXIucmVzdWx0cy5wdXNoKCJTY3JpcHQgZXhlY3V0aW9uIHBhdXNlZC4iKTsK
LSAgICAgICAgZnJvbnRlbmRfY2FwdHVyZVN0YWNrVHJhY2UoY2FsbEZyYW1lcywgdGVzdENvbnRy
b2xsZXIpOwotICAgICAgICBpZiAoc3RlcENvdW50ID09IDIpCi0gICAgICAgICAgICBmcm9udGVu
ZF9jb21wbGV0ZURlYnVnZ2VyVGVzdCh0ZXN0Q29udHJvbGxlcik7Ci0gICAgICAgIGVsc2Ugewot
ICAgICAgICAgICAgdGVzdENvbnRyb2xsZXIucmVzdWx0cy5wdXNoKCJTdGVwcGluZyBpbnRvLi4u
Iik7CisgICAgICAgIEluc3BlY3RvclRlc3QuY2FwdHVyZVN0YWNrVHJhY2UoY2FsbEZyYW1lcyk7
CisgICAgICAgIGlmIChzdGVwQ291bnQgPCAyKSB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmFkZFJlc3VsdCgiU3RlcHBpbmcgaW50by4uLiIpOwogICAgICAgICAgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInNjcmlwdHMtc3RlcC1pbnRvIikuY2xpY2soKTsKLSAgICAgICAgfQorICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC53YWl0VW50aWxSZXN1bWVkKEluc3BlY3RvclRlc3Qud2Fp
dFVudGlsUGF1c2VkLmJpbmQoSW5zcGVjdG9yVGVzdCwgc3RlcDIpKTsKKyAgICAgICAgfSBlbHNl
CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlRGVidWdnZXJUZXN0KCk7CiAgICAg
ICAgIHN0ZXBDb3VudCsrOwotICAgIH0sIHRydWUpOworICAgIH0KIH0KIAogPC9zY3JpcHQ+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItc3RlcC1vdXQtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXN0ZXAtb3V0LWV4cGVjdGVk
LnR4dAppbmRleCAxZDg5ODk0Li42OWIxMTNlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZGVidWdnZXItc3RlcC1vdXQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9kZWJ1Z2dlci1zdGVwLW91dC1leHBlY3RlZC50eHQKQEAgLTEsMTUgKzEsMTUgQEAK
IFRlc3RzICJzdGVwIG91dCIgZnVuY3Rpb25hbGl0eSBpbiBkZWJ1Z2dlci4KIAogRGVidWdnZXIg
d2FzIGVuYWJsZWQuCi1TZXQgdGltZXIgZm9yIHRlc3QgZnVuY3Rpb24uCiBTY3JpcHQgZXhlY3V0
aW9uIHBhdXNlZC4KIENhbGwgc3RhY2s6Ci0gICAgMCkgZCAoZGVidWdnZXItc3RlcC1vdXQuaHRt
bDo4KQotICAgIDEpIHRlc3RGdW5jdGlvbiAoZGVidWdnZXItc3RlcC1vdXQuaHRtbDoxMikKKyAg
ICAwKSBkIChkZWJ1Z2dlci1zdGVwLW91dC5odG1sOjkpCisgICAgMSkgdGVzdEZ1bmN0aW9uIChk
ZWJ1Z2dlci1zdGVwLW91dC5odG1sOjE0KQogU3RlcHBpbmcgb3V0Li4uCitTY3JpcHQgZXhlY3V0
aW9uIHJlc3VtZWQuCiBTY3JpcHQgZXhlY3V0aW9uIHBhdXNlZC4KIENhbGwgc3RhY2s6Ci0gICAg
MCkgdGVzdEZ1bmN0aW9uIChkZWJ1Z2dlci1zdGVwLW91dC5odG1sOjEzKQotUmVzdW1lZCBzY3Jp
cHQgZXhlY3V0aW9uLgotRGlzYWJsZWQgZGVidWdnZXIuCisgICAgMCkgdGVzdEZ1bmN0aW9uIChk
ZWJ1Z2dlci1zdGVwLW91dC5odG1sOjE1KQorU2NyaXB0IGV4ZWN1dGlvbiByZXN1bWVkLgorRGVi
dWdnZXIgd2FzIGRpc2FibGVkLgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
ZGVidWdnZXItc3RlcC1vdXQuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1z
dGVwLW91dC5odG1sCmluZGV4IDAyZmVjMWEuLjE4OTNhYmEgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1zdGVwLW91dC5odG1sCisrKyBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9kZWJ1Z2dlci1zdGVwLW91dC5odG1sCkBAIC0xLDU2ICsxLDQyIEBACiA8aHRtbD4K
IDxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10
ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9k
ZWJ1Z2dlci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9pbnNwZWN0b3ItdGVzdDIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXRlc3QyLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+
CiAKLWZ1bmN0aW9uIGQoKSB7CitmdW5jdGlvbiBkKCkKK3sKICAgICBkZWJ1Z2dlcjsKIH0KIAot
ZnVuY3Rpb24gdGVzdEZ1bmN0aW9uKCkgewotICAgIGQoKTsKLSAgICBub3RpZnlEb25lKCk7Ci19
Ci0KLWZ1bmN0aW9uIGRvaXQoKQorZnVuY3Rpb24gdGVzdEZ1bmN0aW9uKCkKIHsKLSAgICBldmFs
dWF0ZUluV2ViSW5zcGVjdG9yKCJmcm9udGVuZF90ZXN0U3RlcE91dCIsIGR1bXBBcnJheSk7Cisg
ICAgZCgpOwogfQogCi1mdW5jdGlvbiBmcm9udGVuZF90ZXN0U3RlcE91dCh0ZXN0Q29udHJvbGxl
cikKK3ZhciB0ZXN0ID0gZnVuY3Rpb24oKQogewotICAgIHRlc3RDb250cm9sbGVyLndhaXRVbnRp
bERvbmUoKTsKKyAgICBJbnNwZWN0b3JUZXN0LnN0YXJ0RGVidWdnZXJUZXN0KHN0ZXAxKTsKIAot
ICAgIFdlYkluc3BlY3Rvci5zaG93UGFuZWwoInNjcmlwdHMiKTsKLSAgICBmcm9udGVuZF9lbnN1
cmVEZWJ1Z2dlckVuYWJsZWQoZGVidWdnZXJXYXNFbmFibGVkQ2FsbGJhY2spOwotCi0gICAgZnVu
Y3Rpb24gZGVidWdnZXJXYXNFbmFibGVkQ2FsbGJhY2soKQorICAgIGZ1bmN0aW9uIHN0ZXAxKCkK
ICAgICB7Ci0gICAgICAgIHRlc3RDb250cm9sbGVyLnJlc3VsdHMucHVzaCgiRGVidWdnZXIgd2Fz
IGVuYWJsZWQuIik7Ci0gICAgICAgIGZyb250ZW5kX2V2YWx1YXRlSW5Db25zb2xlKCJzZXRUaW1l
b3V0KHRlc3RGdW5jdGlvbiwgMCkiLCBmdW5jdGlvbihyZXN1bHQpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIHRlc3RDb250cm9sbGVyLnJlc3VsdHMucHVzaCgiU2V0IHRpbWVyIGZvciB0ZXN0IGZ1
bmN0aW9uLiIpOwotICAgICAgICB9KTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUlu
Q29uc29sZSgic2V0VGltZW91dCh0ZXN0RnVuY3Rpb24sIDApIik7CisgICAgICAgIEluc3BlY3Rv
clRlc3Qud2FpdFVudGlsUGF1c2VkKHN0ZXAyKTsKICAgICB9CiAKLSAgICBmcm9udGVuZF9hZGRT
bmlmZmVyKFdlYkluc3BlY3RvciwgInBhdXNlZFNjcmlwdCIsIGZ1bmN0aW9uKGNhbGxGcmFtZXMp
CisgICAgZnVuY3Rpb24gc3RlcDIoY2FsbEZyYW1lcykKICAgICB7Ci0gICAgICAgIHRlc3RDb250
cm9sbGVyLnJlc3VsdHMucHVzaCgiU2NyaXB0IGV4ZWN1dGlvbiBwYXVzZWQuIik7Ci0gICAgICAg
IGZyb250ZW5kX2NhcHR1cmVTdGFja1RyYWNlKGNhbGxGcmFtZXMsIHRlc3RDb250cm9sbGVyKTsK
LSAgICAgICAgdGVzdFN0ZXBPdXQoKTsKLSAgICB9KTsKLQotICAgIGZ1bmN0aW9uIHRlc3RTdGVw
T3V0KCkgewotICAgICAgICBmcm9udGVuZF9hZGRTbmlmZmVyKFdlYkluc3BlY3RvciwgInBhdXNl
ZFNjcmlwdCIsIGZ1bmN0aW9uKGNhbGxGcmFtZXMpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRl
c3RDb250cm9sbGVyLnJlc3VsdHMucHVzaCgiU2NyaXB0IGV4ZWN1dGlvbiBwYXVzZWQuIik7Ci0g
ICAgICAgICAgICBmcm9udGVuZF9jYXB0dXJlU3RhY2tUcmFjZShjYWxsRnJhbWVzLCB0ZXN0Q29u
dHJvbGxlcik7Ci0gICAgICAgICAgICBmcm9udGVuZF9jb21wbGV0ZURlYnVnZ2VyVGVzdCh0ZXN0
Q29udHJvbGxlcik7Ci0gICAgICAgIH0pOwotICAgICAgICB0ZXN0Q29udHJvbGxlci5yZXN1bHRz
LnB1c2goIlN0ZXBwaW5nIG91dC4uLiIpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmNhcHR1cmVT
dGFja1RyYWNlKGNhbGxGcmFtZXMpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgi
U3RlcHBpbmcgb3V0Li4uIik7CisgICAgICAgIEluc3BlY3RvclRlc3Qud2FpdFVudGlsUmVzdW1l
ZChJbnNwZWN0b3JUZXN0LndhaXRVbnRpbFBhdXNlZC5iaW5kKEluc3BlY3RvclRlc3QsIHN0ZXAz
KSk7CiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzY3JpcHRzLXN0ZXAtb3V0Iiku
Y2xpY2soKTsKICAgICB9CisKKyAgICBmdW5jdGlvbiBzdGVwMyhjYWxsRnJhbWVzKQorICAgIHsK
KyAgICAgICAgSW5zcGVjdG9yVGVzdC5jYXB0dXJlU3RhY2tUcmFjZShjYWxsRnJhbWVzKTsKKyAg
ICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZURlYnVnZ2VyVGVzdCgpOworICAgIH0KIH0KIAog
PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItc3Rl
cC1vdmVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1zdGVw
LW92ZXItZXhwZWN0ZWQudHh0CmluZGV4IDhiNzA0ODguLmMwZWY1NWQgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1zdGVwLW92ZXItZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1zdGVwLW92ZXItZXhwZWN0ZWQudHh0CkBA
IC0xLDIxICsxLDIyIEBACiBUZXN0cyAic3RlcCBvdmVyIiBmdW5jdGlvbmFsaXR5IGluIGRlYnVn
Z2VyLgogCiBEZWJ1Z2dlciB3YXMgZW5hYmxlZC4KLVNldCB0aW1lciBmb3IgdGVzdCBmdW5jdGlv
bi4KIFNjcmlwdCBleGVjdXRpb24gcGF1c2VkLgogQ2FsbCBzdGFjazoKLSAgICAwKSBkIChkZWJ1
Z2dlci1zdGVwLW92ZXIuaHRtbDoxMikKLSAgICAxKSB0ZXN0RnVuY3Rpb24gKGRlYnVnZ2VyLXN0
ZXAtb3Zlci5odG1sOjE3KQorICAgIDApIGQgKGRlYnVnZ2VyLXN0ZXAtb3Zlci5odG1sOjE0KQor
ICAgIDEpIHRlc3RGdW5jdGlvbiAoZGVidWdnZXItc3RlcC1vdmVyLmh0bWw6MjApCiBTdGVwcGlu
ZyBvdmVyLi4uCitTY3JpcHQgZXhlY3V0aW9uIHJlc3VtZWQuCiBTY3JpcHQgZXhlY3V0aW9uIHBh
dXNlZC4KIENhbGwgc3RhY2s6Ci0gICAgMCkgZCAoZGVidWdnZXItc3RlcC1vdmVyLmh0bWw6MTMp
Ci0gICAgMSkgdGVzdEZ1bmN0aW9uIChkZWJ1Z2dlci1zdGVwLW92ZXIuaHRtbDoxNykKKyAgICAw
KSBkIChkZWJ1Z2dlci1zdGVwLW92ZXIuaHRtbDoxNSkKKyAgICAxKSB0ZXN0RnVuY3Rpb24gKGRl
YnVnZ2VyLXN0ZXAtb3Zlci5odG1sOjIwKQogU3RlcHBpbmcgb3Zlci4uLgorU2NyaXB0IGV4ZWN1
dGlvbiByZXN1bWVkLgogU2NyaXB0IGV4ZWN1dGlvbiBwYXVzZWQuCiBDYWxsIHN0YWNrOgotICAg
IDApIGQgKGRlYnVnZ2VyLXN0ZXAtb3Zlci5odG1sOjE0KQotICAgIDEpIHRlc3RGdW5jdGlvbiAo
ZGVidWdnZXItc3RlcC1vdmVyLmh0bWw6MTcpCi1SZXN1bWVkIHNjcmlwdCBleGVjdXRpb24uCi1E
aXNhYmxlZCBkZWJ1Z2dlci4KKyAgICAwKSBkIChkZWJ1Z2dlci1zdGVwLW92ZXIuaHRtbDoxNikK
KyAgICAxKSB0ZXN0RnVuY3Rpb24gKGRlYnVnZ2VyLXN0ZXAtb3Zlci5odG1sOjIwKQorU2NyaXB0
IGV4ZWN1dGlvbiByZXN1bWVkLgorRGVidWdnZXIgd2FzIGRpc2FibGVkLgogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItc3RlcC1vdmVyLmh0bWwgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItc3RlcC1vdmVyLmh0bWwKaW5kZXggOGRiNGE5Zi4uOGFl
YzNjYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXN0ZXAtb3Zl
ci5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1zdGVwLW92ZXIuaHRt
bApAQCAtMSw1NyArMSw0NyBAQAogPGh0bWw+CiA8aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9odHRw
L3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNy
Yz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QyLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci10
ZXN0Mi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogCi1mdW5jdGlvbiBmKCkgeworZnVuY3Rpb24g
ZigpCit7CiAgICAgdmFyIGkgPSAxMDsKIH0KIAotZnVuY3Rpb24gZCgpIHsKK2Z1bmN0aW9uIGQo
KQorewogICAgIGRlYnVnZ2VyOwogICAgIGYoKTsKIH0KIAotZnVuY3Rpb24gdGVzdEZ1bmN0aW9u
KCkgewotICAgIGQoKTsKLSAgICBub3RpZnlEb25lKCk7Ci19Ci0KLWZ1bmN0aW9uIGRvaXQoKQor
ZnVuY3Rpb24gdGVzdEZ1bmN0aW9uKCkKIHsKLSAgICBldmFsdWF0ZUluV2ViSW5zcGVjdG9yKCJm
cm9udGVuZF90ZXN0U3RlcEluIiwgZHVtcEFycmF5KTsKKyAgICBkKCk7CiB9CiAKLWZ1bmN0aW9u
IGZyb250ZW5kX3Rlc3RTdGVwSW4odGVzdENvbnRyb2xsZXIpCit2YXIgdGVzdCA9IGZ1bmN0aW9u
KCkKIHsKLSAgICB0ZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgSW5zcGVjdG9y
VGVzdC5zdGFydERlYnVnZ2VyVGVzdChzdGVwMSk7CiAKLSAgICBXZWJJbnNwZWN0b3Iuc2hvd1Bh
bmVsKCJzY3JpcHRzIik7Ci0gICAgZnJvbnRlbmRfZW5zdXJlRGVidWdnZXJFbmFibGVkKGRlYnVn
Z2VyV2FzRW5hYmxlZENhbGxiYWNrKTsKLQotICAgIGZ1bmN0aW9uIGRlYnVnZ2VyV2FzRW5hYmxl
ZENhbGxiYWNrKCkKKyAgICBmdW5jdGlvbiBzdGVwMSgpCiAgICAgewotICAgICAgICB0ZXN0Q29u
dHJvbGxlci5yZXN1bHRzLnB1c2goIkRlYnVnZ2VyIHdhcyBlbmFibGVkLiIpOwotICAgICAgICBm
cm9udGVuZF9ldmFsdWF0ZUluQ29uc29sZSgic2V0VGltZW91dCh0ZXN0RnVuY3Rpb24sIDApIiwg
ZnVuY3Rpb24ocmVzdWx0KQotICAgICAgICB7Ci0gICAgICAgICAgICB0ZXN0Q29udHJvbGxlci5y
ZXN1bHRzLnB1c2goIlNldCB0aW1lciBmb3IgdGVzdCBmdW5jdGlvbi4iKTsKLSAgICAgICAgfSk7
CisgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJbkNvbnNvbGUoInNldFRpbWVvdXQodGVz
dEZ1bmN0aW9uLCAwKSIpOworICAgICAgICBJbnNwZWN0b3JUZXN0LndhaXRVbnRpbFBhdXNlZChz
dGVwMik7CiAgICAgfQogCiAgICAgdmFyIHN0ZXBDb3VudCA9IDA7Ci0gICAgZnJvbnRlbmRfYWRk
U25pZmZlcihXZWJJbnNwZWN0b3IsICJwYXVzZWRTY3JpcHQiLCBmdW5jdGlvbihjYWxsRnJhbWVz
KQorICAgIGZ1bmN0aW9uIHN0ZXAyKGNhbGxGcmFtZXMpCiAgICAgewotICAgICAgICB0ZXN0Q29u
dHJvbGxlci5yZXN1bHRzLnB1c2goIlNjcmlwdCBleGVjdXRpb24gcGF1c2VkLiIpOwotICAgICAg
ICBmcm9udGVuZF9jYXB0dXJlU3RhY2tUcmFjZShjYWxsRnJhbWVzLCB0ZXN0Q29udHJvbGxlcik7
Ci0gICAgICAgIGlmIChzdGVwQ291bnQgPT0gMikKLSAgICAgICAgICAgIGZyb250ZW5kX2NvbXBs
ZXRlRGVidWdnZXJUZXN0KHRlc3RDb250cm9sbGVyKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAg
ICAgICB0ZXN0Q29udHJvbGxlci5yZXN1bHRzLnB1c2goIlN0ZXBwaW5nIG92ZXIuLi4iKTsKKyAg
ICAgICAgSW5zcGVjdG9yVGVzdC5jYXB0dXJlU3RhY2tUcmFjZShjYWxsRnJhbWVzKTsKKyAgICAg
ICAgaWYgKHN0ZXBDb3VudCA8IDIpIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVz
dWx0KCJTdGVwcGluZyBvdmVyLi4uIik7CiAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgic2NyaXB0cy1zdGVwLW92ZXIiKS5jbGljaygpOwotICAgICAgICB9CisgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LndhaXRVbnRpbFJlc3VtZWQoSW5zcGVjdG9yVGVzdC53YWl0VW50aWxQ
YXVzZWQuYmluZChJbnNwZWN0b3JUZXN0LCBzdGVwMikpOworICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVEZWJ1Z2dlclRlc3QoKTsKICAgICAgICAgc3Rl
cENvdW50Kys7Ci0gICAgfSwgdHJ1ZSk7CisgICAgfQogfQogCiA8L3NjcmlwdD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20tYnJlYWtwb2ludHMtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1icmVha3BvaW50cy1leHBlY3RlZC50eHQKaW5kZXgg
OTNmMWU5Zi4uYzg1YjcxZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1i
cmVha3BvaW50cy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1i
cmVha3BvaW50cy1leHBlY3RlZC50eHQKQEAgLTMsMTIgKzMsMTggQEAgVGVzdHMgRE9NIGJyZWFr
cG9pbnRzLiBCdWcgNDI4ODYKIERlYnVnZ2VyIHdhcyBlbmFibGVkLgogRm91bmQgZG9tIG5vZGUg
ZDAuCiBTZXQgc3VidHJlZSBtb2RpZmllZCBET00gYnJlYWtwb2ludCBvbiBkMC4KLVBhdXNlZCBh
dCBsaW5lIDExIGluIGFwcGVuZEVsZW1lbnQKK1NjcmlwdCBleGVjdXRpb24gcGF1c2VkLgorbGlu
ZTogMTEsIGZ1bmN0aW9uOiBhcHBlbmRFbGVtZW50CitTY3JpcHQgZXhlY3V0aW9uIHJlc3VtZWQu
CiBGb3VuZCBkb20gbm9kZSBkMS4KIFNldCBhdHRyaWJ1dGUgbW9kaWZpZWQgRE9NIGJyZWFrcG9p
bnQgb24gZDEuCi1QYXVzZWQgYXQgbGluZSAxNyBpbiBtb2RpZnlBdHRyaWJ1dGUKK1NjcmlwdCBl
eGVjdXRpb24gcGF1c2VkLgorbGluZTogMTcsIGZ1bmN0aW9uOiBtb2RpZnlBdHRyaWJ1dGUKK1Nj
cmlwdCBleGVjdXRpb24gcmVzdW1lZC4KIEZvdW5kIGRvbSBub2RlIGQxLgogU2V0IG5vZGUgcmVt
b3ZlZCBET00gYnJlYWtwb2ludCBvbiBkMS4KLVBhdXNlZCBhdCBsaW5lIDIzIGluIHJlbW92ZUVs
ZW1lbnQKK1NjcmlwdCBleGVjdXRpb24gcGF1c2VkLgorbGluZTogMjMsIGZ1bmN0aW9uOiByZW1v
dmVFbGVtZW50CitTY3JpcHQgZXhlY3V0aW9uIHJlc3VtZWQuCiBEZWJ1Z2dlciB3YXMgZGlzYWJs
ZWQuCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20tYnJlYWtwb2ludHMu
aHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20tYnJlYWtwb2ludHMuaHRtbAppbmRleCBm
YmI2NTMyLi44YzRkMjBkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWJy
ZWFrcG9pbnRzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1icmVha3BvaW50
cy5odG1sCkBAIC00MSwxMSArNDEsMTEgQEAgdmFyIHRlc3QgPSBmdW5jdGlvbigpCiAgICAgICAg
IEluc3BlY3RvclRlc3Qud2FpdFVudGlsUGF1c2VkKHN0ZXAzLmJpbmQobnVsbCwgbm9kZSkpOwog
ICAgIH0KIAotICAgIGZ1bmN0aW9uIHN0ZXAzKG5vZGUpCisgICAgZnVuY3Rpb24gc3RlcDMobm9k
ZSwgY2FsbEZyYW1lcykKICAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJs
aW5lOiAiICsgY2FsbEZyYW1lc1swXS5saW5lICsgIiwgZnVuY3Rpb246ICIgKyBjYWxsRnJhbWVz
WzBdLmZ1bmN0aW9uTmFtZSk7CiAgICAgICAgIFdlYkluc3BlY3Rvci5kb21CcmVha3BvaW50TWFu
YWdlci5yZW1vdmVCcmVha3BvaW50c0Zvck5vZGUobm9kZSk7Ci0gICAgICAgIEluc3BlY3RvclRl
c3QucmVzdW1lRXhlY3V0aW9uKCk7Ci0gICAgICAgIGZpbmRET01Ob2RlQnlJZCgiZDEiLCBzdGVw
NCk7CisgICAgICAgIEluc3BlY3RvclRlc3QucmVzdW1lRXhlY3V0aW9uKGZpbmRET01Ob2RlQnlJ
ZC5iaW5kKG51bGwsICJkMSIsIHN0ZXA0KSk7CiAgICAgfQogCiAgICAgZnVuY3Rpb24gc3RlcDQo
bm9kZSkKQEAgLTU3LDExICs1NywxMSBAQCB2YXIgdGVzdCA9IGZ1bmN0aW9uKCkKICAgICAgICAg
SW5zcGVjdG9yVGVzdC53YWl0VW50aWxQYXVzZWQoc3RlcDUuYmluZChudWxsLCBub2RlKSk7CiAg
ICAgfQogCi0gICAgZnVuY3Rpb24gc3RlcDUobm9kZSkKKyAgICBmdW5jdGlvbiBzdGVwNShub2Rl
LCBjYWxsRnJhbWVzKQogICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoImxp
bmU6ICIgKyBjYWxsRnJhbWVzWzBdLmxpbmUgKyAiLCBmdW5jdGlvbjogIiArIGNhbGxGcmFtZXNb
MF0uZnVuY3Rpb25OYW1lKTsKICAgICAgICAgV2ViSW5zcGVjdG9yLmRvbUJyZWFrcG9pbnRNYW5h
Z2VyLnJlbW92ZUJyZWFrcG9pbnRzRm9yTm9kZShub2RlKTsKLSAgICAgICAgSW5zcGVjdG9yVGVz
dC5yZXN1bWVFeGVjdXRpb24oKTsKLSAgICAgICAgZmluZERPTU5vZGVCeUlkKCJkMSIsIHN0ZXA2
KTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5yZXN1bWVFeGVjdXRpb24oZmluZERPTU5vZGVCeUlk
LmJpbmQobnVsbCwgImQxIiwgc3RlcDYpKTsKICAgICB9CiAKICAgICBmdW5jdGlvbiBzdGVwNihu
b2RlKQpAQCAtNzMsOCArNzMsOSBAQCB2YXIgdGVzdCA9IGZ1bmN0aW9uKCkKICAgICAgICAgSW5z
cGVjdG9yVGVzdC53YWl0VW50aWxQYXVzZWQoc3RlcDcuYmluZChudWxsLCBub2RlKSk7CiAgICAg
fQogCi0gICAgZnVuY3Rpb24gc3RlcDcobm9kZSkKKyAgICBmdW5jdGlvbiBzdGVwNyhub2RlLCBj
YWxsRnJhbWVzKQogICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoImxpbmU6
ICIgKyBjYWxsRnJhbWVzWzBdLmxpbmUgKyAiLCBmdW5jdGlvbjogIiArIGNhbGxGcmFtZXNbMF0u
ZnVuY3Rpb25OYW1lKTsKICAgICAgICAgV2ViSW5zcGVjdG9yLmRvbUJyZWFrcG9pbnRNYW5hZ2Vy
LnJlbW92ZUJyZWFrcG9pbnRzRm9yTm9kZShub2RlKTsKICAgICAgICAgSW5zcGVjdG9yVGVzdC5j
b21wbGV0ZURlYnVnZ2VyVGVzdCgpOwogICAgIH0KQEAgLTkwLDcgKzkxLDcgQEAgdmFyIHRlc3Qg
PSBmdW5jdGlvbigpCiA8L3NjcmlwdD4KIDwvaGVhZD4KIAotPGJvZHkgb25sb2FkPSJydW5UZXN0
KCkiPgorPGJvZHkgb25sb2FkPSJvbmxvYWQoKSI+CiA8cD4KIFRlc3RzIERPTSBicmVha3BvaW50
cy4gPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQyODg2
Ij5CdWcgNDI4ODY8L2E+CiA8L3A+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS9pbnNwZWN0b3IvZGVidWdnZXItc3RlcC1pbi1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9pbnNwZWN0b3IvZGVidWdnZXItc3RlcC1pbi1leHBlY3Rl
ZC50eHQKb2xkIG1vZGUgMTAwNzU1Cm5ldyBtb2RlIDEwMDY0NAppbmRleCA3MmFmNmU4Li5mM2Y5
MGY4Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2luc3BlY3Rvci9kZWJ1Z2dl
ci1zdGVwLWluLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS9pbnNwZWN0b3IvZGVidWdnZXItc3RlcC1pbi1leHBlY3RlZC50eHQKQEAgLTEsMTggKzEsMjAg
QEAKLVRlc3RzICJzdGVwIGluIiBmdW5jdGlvbmFsaXR5IGluIGRlYnVnZ2VyLg0KLQ0KLURlYnVn
Z2VyIHdhcyBlbmFibGVkLg0KLVNldCB0aW1lciBmb3IgdGVzdCBmdW5jdGlvbi4NCi1TY3JpcHQg
ZXhlY3V0aW9uIHBhdXNlZC4NCi1DYWxsIHN0YWNrOg0KLSAgICAwKSB0ZXN0RnVuY3Rpb24gKGRl
YnVnZ2VyLXN0ZXAtaW4uaHRtbDoxMikNCi1TdGVwcGluZyBpbnRvLi4uDQotU2NyaXB0IGV4ZWN1
dGlvbiBwYXVzZWQuDQotQ2FsbCBzdGFjazoNCi0gICAgMCkgdGVzdEZ1bmN0aW9uIChkZWJ1Z2dl
ci1zdGVwLWluLmh0bWw6MTMpDQotU3RlcHBpbmcgaW50by4uLg0KLVNjcmlwdCBleGVjdXRpb24g
cGF1c2VkLg0KLUNhbGwgc3RhY2s6DQotICAgIDApIGQgKGRlYnVnZ2VyLXN0ZXAtaW4uaHRtbDo4
KQ0KLSAgICAxKSB0ZXN0RnVuY3Rpb24gKGRlYnVnZ2VyLXN0ZXAtaW4uaHRtbDoxMykNCi1SZXN1
bWVkIHNjcmlwdCBleGVjdXRpb24uDQotRGlzYWJsZWQgZGVidWdnZXIuDQorVGVzdHMgInN0ZXAg
aW4iIGZ1bmN0aW9uYWxpdHkgaW4gZGVidWdnZXIuCisKK0RlYnVnZ2VyIHdhcyBlbmFibGVkLgor
U2NyaXB0IGV4ZWN1dGlvbiBwYXVzZWQuCitDYWxsIHN0YWNrOgorICAgIDApIHRlc3RGdW5jdGlv
biAoZGVidWdnZXItc3RlcC1pbi5odG1sOjE0KQorU3RlcHBpbmcgaW50by4uLgorU2NyaXB0IGV4
ZWN1dGlvbiByZXN1bWVkLgorU2NyaXB0IGV4ZWN1dGlvbiBwYXVzZWQuCitDYWxsIHN0YWNrOgor
ICAgIDApIHRlc3RGdW5jdGlvbiAoZGVidWdnZXItc3RlcC1pbi5odG1sOjE1KQorU3RlcHBpbmcg
aW50by4uLgorU2NyaXB0IGV4ZWN1dGlvbiByZXN1bWVkLgorU2NyaXB0IGV4ZWN1dGlvbiBwYXVz
ZWQuCitDYWxsIHN0YWNrOgorICAgIDApIGQgKGRlYnVnZ2VyLXN0ZXAtaW4uaHRtbDo5KQorICAg
IDEpIHRlc3RGdW5jdGlvbiAoZGVidWdnZXItc3RlcC1pbi5odG1sOjE1KQorU2NyaXB0IGV4ZWN1
dGlvbiByZXN1bWVkLgorRGVidWdnZXIgd2FzIGRpc2FibGVkLgorCg==
</data>
<flag name="review"
          id="54935"
          type_id="1"
          status="-"
          setter="yurys"
    />
    <flag name="commit-queue"
          id="54936"
          type_id="3"
          status="-"
          setter="yurys"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>66063</attachid>
            <date>2010-08-31 09:17:19 -0700</date>
            <delta_ts>2010-09-01 03:46:38 -0700</delta_ts>
            <desc>Proposed patch.</desc>
            <filename>tests.patch</filename>
            <type>text/plain</type>
            <size>59635</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1ZTE5NmQzLi4wZjI5ZjEwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzMgQEAKKzIwMTAtMDgt
MzEgIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogbW92
ZSBkZWJ1Z2dlciB0ZXN0cyB0byB0aGUgbmV3IHRlc3QgaGFybmVzcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQ5MzkKKworICAgICAgICAqIGh0dHAv
dGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXRlc3QuanM6IFJlbW92ZWQuCisgICAgICAgICogaHR0
cC90ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItdGVzdDIuanM6CisgICAgICAgIChpbml0aWFsaXpl
X0RlYnVnZ2VyVGVzdC5JbnNwZWN0b3JUZXN0LnN0YXJ0RGVidWdnZXJUZXN0LnN0YXJ0VGVzdCk6
CisgICAgICAgIChpbml0aWFsaXplX0RlYnVnZ2VyVGVzdC5JbnNwZWN0b3JUZXN0LnN0YXJ0RGVi
dWdnZXJUZXN0KToKKyAgICAgICAgKGluaXRpYWxpemVfRGVidWdnZXJUZXN0Lkluc3BlY3RvclRl
c3QuY29tcGxldGVEZWJ1Z2dlclRlc3QuZGlzYWJsZURlYnVnZ2VyKToKKyAgICAgICAgKGluaXRp
YWxpemVfRGVidWdnZXJUZXN0Lkluc3BlY3RvclRlc3QucnVuVGVzdEZ1bmN0aW9uQW5kV2FpdFVu
dGlsUGF1c2VkKToKKyAgICAgICAgKGluaXRpYWxpemVfRGVidWdnZXJUZXN0Lkluc3BlY3RvclRl
c3Qud2FpdFVudGlsUGF1c2VkKToKKyAgICAgICAgKGluaXRpYWxpemVfRGVidWdnZXJUZXN0Lklu
c3BlY3RvclRlc3Qud2FpdFVudGlsUmVzdW1lZCk6CisgICAgICAgIChpbml0aWFsaXplX0RlYnVn
Z2VyVGVzdC5JbnNwZWN0b3JUZXN0LnJlc3VtZUV4ZWN1dGlvbik6CisgICAgICAgIChpbml0aWFs
aXplX0RlYnVnZ2VyVGVzdC5JbnNwZWN0b3JUZXN0LmNhcHR1cmVTdGFja1RyYWNlKToKKyAgICAg
ICAgKGluaXRpYWxpemVfRGVidWdnZXJUZXN0Lkluc3BlY3RvclRlc3QuX3BhdXNlZFNjcmlwdCk6
CisgICAgICAgIChpbml0aWFsaXplX0RlYnVnZ2VyVGVzdC5JbnNwZWN0b3JUZXN0Ll9yZXN1bWVk
U2NyaXB0KToKKyAgICAgICAgKGluaXRpYWxpemVfRGVidWdnZXJUZXN0Lkluc3BlY3RvclRlc3Qu
d2FpdFVudGlsQ3VycmVudFNvdXJjZUZyYW1lSXNMb2FkZWQpOgorICAgICAgICAoaW5pdGlhbGl6
ZV9EZWJ1Z2dlclRlc3QuSW5zcGVjdG9yVGVzdC5fc2hvd1NjcmlwdFNvdXJjZSk6CisgICAgICAg
IChpbml0aWFsaXplX0RlYnVnZ2VyVGVzdC5JbnNwZWN0b3JUZXN0LmV4cGFuZFByb3BlcnRpZXMu
ZXhwYW5kTmV4dFBhdGgpOgorICAgICAgICAoaW5pdGlhbGl6ZV9EZWJ1Z2dlclRlc3QuSW5zcGVj
dG9yVGVzdC5leHBhbmRQcm9wZXJ0aWVzKToKKyAgICAgICAgKGluaXRpYWxpemVfRGVidWdnZXJU
ZXN0Lkluc3BlY3RvclRlc3QuX2V4cGFuZFByb3BlcnR5KToKKyAgICAgICAgKGluaXRpYWxpemVf
RGVidWdnZXJUZXN0Lkluc3BlY3RvclRlc3QuX2ZpbmRDaGlsZFByb3BlcnR5VHJlZUVsZW1lbnQp
OgorICAgICAgICAoaW5pdGlhbGl6ZV9EZWJ1Z2dlclRlc3QpOgorICAgICAgICAqIGh0dHAvdGVz
dHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0Mi5qczoKKyAgICAgICAgKGluaXRpYWxpemVfSW5z
cGVjdG9yVGVzdC5JbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCk6CisgICAgICAgIChpbml0aWFs
aXplX0luc3BlY3RvclRlc3QuSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSk6CisgICAgICAg
IChpbml0aWFsaXplX0luc3BlY3RvclRlc3QuSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQpOgorICAg
ICAgICAoaW5pdGlhbGl6ZV9JbnNwZWN0b3JUZXN0Lkluc3BlY3RvclRlc3QucmVsb2FkUGFnZSk6
CisgICAgICAgIChpbml0aWFsaXplX0luc3BlY3RvclRlc3QuSW5zcGVjdG9yVGVzdC5wYWdlUmVs
b2FkZWQpOgorICAgICAgICAoaW5pdGlhbGl6ZV9JbnNwZWN0b3JUZXN0Lkluc3BlY3RvclRlc3Qu
cnVuQWZ0ZXJQZW5kaW5nRGlzcGF0Y2hlcyk6CisgICAgICAgIChpbml0aWFsaXplX0luc3BlY3Rv
clRlc3QuSW5zcGVjdG9yVGVzdC5lbmFibGVSZXNvdXJjZVRyYWNraW5nKToKKyAgICAgICAgKGlu
aXRpYWxpemVfSW5zcGVjdG9yVGVzdC5JbnNwZWN0b3JUZXN0Ll9hZGRTbmlmZmVyKToKKyAgICAg
ICAgKG9ubG9hZC5ydW5UZXN0SW5Gcm9udGVuZCk6CisgICAgICAgIChvbmxvYWQpOgorICAgICAg
ICAoZGlkRXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVuZCk6CisgICAgICAgIChkdW1wQXJyYXkpOgor
ICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci1icmVha3BvaW50cy1ub3QtYWN0aXZhdGVkLW9u
LXJlbG9hZC5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci1jeWNsaWMtcmVmLWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXItY3ljbGljLXJlZi5odG1s
OgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci1ldmFsLXdoaWxlLXBhdXNlZC1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyLWV2YWwtd2hpbGUtcGF1c2VkLmh0
bWw6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyLW5vLW5lc3RlZC1wYXVzZS1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyLW5vLW5lc3RlZC1wYXVzZS5odG1s
OgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci1wYXVzZS1pbi1ldmFsLXNjcmlwdC1leHBl
Y3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyLXBhdXNlLWluLWV2YWwtc2Ny
aXB0Lmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyLXBhdXNlLW9uLWRlYnVnZ2Vy
LXN0YXRlbWVudC1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyLXBh
dXNlLW9uLWRlYnVnZ2VyLXN0YXRlbWVudC5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1
Z2dlci1wcm90by1wcm9wZXJ0eS1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL2Rl
YnVnZ2VyLXByb3RvLXByb3BlcnR5Lmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2Vy
LXN0ZXAtaW4tZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci1zdGVw
LWluLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyLXN0ZXAtb3V0LWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXItc3RlcC1vdXQuaHRtbDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvZGVidWdnZXItc3RlcC1vdmVyLWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvZGVidWdnZXItc3RlcC1vdmVyLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9y
L2RvbS1icmVha3BvaW50cy1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL2RvbS1i
cmVha3BvaW50cy5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9leHRlbnNpb25zLWFwaS1leHBl
Y3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL2V4dGVuc2lvbnMtYXBpLmh0bWw6CisgICAg
ICAgICogaW5zcGVjdG9yL2V4dGVuc2lvbnMtYXVkaXRzLWFwaS1leHBlY3RlZC50eHQ6CisgICAg
ICAgICogaW5zcGVjdG9yL2V4dGVuc2lvbnMtYXVkaXRzLWFwaS5odG1sOgorICAgICAgICAqIGlu
c3BlY3Rvci9leHRlbnNpb25zLWF1ZGl0cy1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVj
dG9yL2V4dGVuc2lvbnMtYXVkaXRzLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2V4dGVuc2lv
bnMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9leHRlbnNpb25zLmh0bWw6Cisg
ICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vaW5zcGVjdG9yL2RlYnVnZ2VyLXN0ZXAtaW4tZXhw
ZWN0ZWQudHh0OgorCiAyMDEwLTA4LTMxICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci10ZXN0LmpzIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItdGVzdC5qcwpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMGY4NzAxMy4uMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9kZWJ1Z2dlci10ZXN0LmpzCisrKyAvZGV2L251bGwKQEAgLTEsMTEzICswLDAg
QEAKLQotZnVuY3Rpb24gZnJvbnRlbmRfZW5zdXJlRGVidWdnZXJFbmFibGVkKGNhbGxiYWNrKQot
ewotICAgIGlmIChXZWJJbnNwZWN0b3IucGFuZWxzLnNjcmlwdHMuX2RlYnVnZ2VyRW5hYmxlZCkg
ewotICAgICAgICBjYWxsYmFjaygpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgZnJv
bnRlbmRfYWRkU25pZmZlcihXZWJJbnNwZWN0b3IsICJkZWJ1Z2dlcldhc0VuYWJsZWQiLCBjYWxs
YmFjayk7Ci0gICAgV2ViSW5zcGVjdG9yLnBhbmVscy5zY3JpcHRzLl90b2dnbGVEZWJ1Z2dpbmco
ZmFsc2UpOwotfQotCi1mdW5jdGlvbiBmcm9udGVuZF9lbnN1cmVEZWJ1Z2dlckRpc2FibGVkKGNh
bGxiYWNrKQotewotICAgIGlmICghV2ViSW5zcGVjdG9yLnBhbmVscy5zY3JpcHRzLl9kZWJ1Z2dl
ckVuYWJsZWQpIHsKLSAgICAgICAgY2FsbGJhY2soKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIGZyb250ZW5kX2FkZFNuaWZmZXIoV2ViSW5zcGVjdG9yLCAiZGVidWdnZXJXYXNEaXNh
YmxlZCIsIGNhbGxiYWNrKTsKLSAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnNjcmlwdHMuX3RvZ2ds
ZURlYnVnZ2luZyhmYWxzZSk7Ci19Ci0KLWZ1bmN0aW9uIGZyb250ZW5kX2NvbXBsZXRlRGVidWdn
ZXJUZXN0KHRlc3RDb250cm9sbGVyKQotewotICAgIGlmIChXZWJJbnNwZWN0b3IucGFuZWxzLnNj
cmlwdHMucGF1c2VkKSB7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMuc2NyaXB0cy5fdG9n
Z2xlUGF1c2UoKTsKLSAgICAgICAgdGVzdENvbnRyb2xsZXIucmVzdWx0cy5wdXNoKCJSZXN1bWVk
IHNjcmlwdCBleGVjdXRpb24uIik7Ci0gICAgfQotICAgIGZyb250ZW5kX2Vuc3VyZURlYnVnZ2Vy
RGlzYWJsZWQoZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdGVzdENvbnRyb2xsZXIucmVzdWx0
cy5wdXNoKCJEaXNhYmxlZCBkZWJ1Z2dlci4iKTsKLSAgICAgICAgdGVzdENvbnRyb2xsZXIubm90
aWZ5RG9uZSgpOwotICAgIH0pOwotfQotCi1mdW5jdGlvbiBmcm9udGVuZF9zY3JpcHRzQXJlUGFy
c2VkKHNjcmlwdHMpCi17Ci0gICAgdmFyIHNjcmlwdFNlbGVjdCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJzY3JpcHRzLWZpbGVzIik7Ci0gICAgdmFyIG9wdGlvbnMgPSBzY3JpcHRTZWxlY3Qu
b3B0aW9uczsKLQotICAgIC8vIENoZWNrIHRoYXQgYWxsIHRoZSBleHBlY3RlZCBzY3JpcHRzIGFy
ZSBwcmVzZW50LgotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2NyaXB0cy5sZW5ndGg7IGkrKykg
ewotICAgICAgICB2YXIgZm91bmQgPSBmYWxzZTsKLSAgICAgICAgZm9yICh2YXIgaiA9IDA7IGog
PCBvcHRpb25zLmxlbmd0aDsgaisrKSB7Ci0gICAgICAgICAgICBpZiAob3B0aW9uc1tqXS50ZXh0
LnNlYXJjaChzY3JpcHRzW2ldKSAhPT0gLTEpIHsKLSAgICAgICAgICAgICAgICBmb3VuZCA9IHRy
dWU7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAg
ICAgICAgaWYgKCFmb3VuZCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAg
cmV0dXJuIHRydWU7Ci19OwotCi1mdW5jdGlvbiBmcm9udGVuZF93YWl0VW50aWxTY3JpcHRzQXJl
UGFyc2VkKHNjcmlwdHMsIGNhbGxiYWNrKQotewotICAgIGZ1bmN0aW9uIHdhaXRGb3JBbGxTY3Jp
cHRzKCkKLSAgICB7Ci0gICAgICAgIGlmIChmcm9udGVuZF9zY3JpcHRzQXJlUGFyc2VkKHNjcmlw
dHMpKQotICAgICAgICAgICAgY2FsbGJhY2soKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAg
ZnJvbnRlbmRfYWRkU25pZmZlcihXZWJJbnNwZWN0b3IsICJwYXJzZWRTY3JpcHRTb3VyY2UiLCB3
YWl0Rm9yQWxsU2NyaXB0cyk7Ci0gICAgfQotICAgIHdhaXRGb3JBbGxTY3JpcHRzKCk7Ci19Owot
Ci1mdW5jdGlvbiBmcm9udGVuZF9lbnN1cmVTb3VyY2VGcmFtZUxvYWRlZChzb3VyY2VGcmFtZSwg
Y2FsbGJhY2spCi17Ci0gICAgaWYgKCFzb3VyY2VGcmFtZS5fbG9hZGVkKQotICAgICAgICBmcm9u
dGVuZF9hZGRTbmlmZmVyKHNvdXJjZUZyYW1lLCAic2V0Q29udGVudCIsIGNhbGxiYWNrKTsKLSAg
ICBlbHNlCi0gICAgICAgIGNhbGxiYWNrKCk7Ci19Ci0KLWZ1bmN0aW9uIGZyb250ZW5kX3Nob3dT
Y3JpcHRTb3VyY2Uoc2NyaXB0TmFtZSwgY2FsbGJhY2spCi17Ci0gICAgdmFyIHNjcmlwdFNlbGVj
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzY3JpcHRzLWZpbGVzIik7Ci0gICAgdmFyIG9w
dGlvbnMgPSBzY3JpcHRTZWxlY3Qub3B0aW9uczsKLSAgICB2YXIgc2NyaXB0c1BhbmVsID0gV2Vi
SW5zcGVjdG9yLnBhbmVscy5zY3JpcHRzOwotCi0gICAgLy8gU2VsZWN0IHBhZ2UncyBzY3JpcHQg
aWYgaXQncyBub3QgY3VycmVudCBvcHRpb24uCi0gICAgdmFyIHNjcmlwdFJlc291cmNlOwotICAg
IGlmIChvcHRpb25zW3NjcmlwdFNlbGVjdC5zZWxlY3RlZEluZGV4XS50ZXh0ID09PSBzY3JpcHRO
YW1lKQotICAgICAgICBzY3JpcHRSZXNvdXJjZSA9IG9wdGlvbnNbc2NyaXB0U2VsZWN0LnNlbGVj
dGVkSW5kZXhdLnJlcHJlc2VudGVkT2JqZWN0OwotICAgIGVsc2UgewotICAgICAgICB2YXIgcGFn
ZVNjcmlwdEluZGV4ID0gLTE7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgb3B0aW9ucy5s
ZW5ndGg7IGkrKykgewotICAgICAgICAgICAgaWYgKG9wdGlvbnNbaV0udGV4dCA9PT0gc2NyaXB0
TmFtZSkgewotICAgICAgICAgICAgICAgIHBhZ2VTY3JpcHRJbmRleCA9IGk7Ci0gICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgc2NyaXB0UmVz
b3VyY2UgPSBvcHRpb25zW3BhZ2VTY3JpcHRJbmRleF0ucmVwcmVzZW50ZWRPYmplY3Q7Ci0gICAg
ICAgIHNjcmlwdHNQYW5lbC5fc2hvd1NjcmlwdE9yUmVzb3VyY2Uoc2NyaXB0UmVzb3VyY2UpOwot
ICAgIH0KLQotICAgIHZhciB2aWV3ID0gc2NyaXB0c1BhbmVsLnZpc2libGVWaWV3OwotICAgIGZy
b250ZW5kX2Vuc3VyZVNvdXJjZUZyYW1lTG9hZGVkKHZpZXcuc291cmNlRnJhbWUsIGNhbGxiYWNr
LmJpbmQobnVsbCwgdmlldykpOwotfTsKLQotZnVuY3Rpb24gZnJvbnRlbmRfY2FwdHVyZVN0YWNr
VHJhY2UoY2FsbEZyYW1lcywgdGVzdENvbnRyb2xsZXIpCi17Ci0gICAgdGVzdENvbnRyb2xsZXIu
cmVzdWx0cy5wdXNoKCJDYWxsIHN0YWNrOiIpOwotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2Fs
bEZyYW1lcy5sZW5ndGg7IGkrKykgewotICAgICAgICB2YXIgZnJhbWUgPSBjYWxsRnJhbWVzW2ld
OwotICAgICAgICB2YXIgc2NyaXB0T3JSZXNvdXJjZSA9IFdlYkluc3BlY3Rvci5wYW5lbHMuc2Ny
aXB0cy5fc291cmNlSURNYXBbZnJhbWUuc291cmNlSURdOwotICAgICAgICB2YXIgdXJsID0gc2Ny
aXB0T3JSZXNvdXJjZSAmJiBXZWJJbnNwZWN0b3IuZGlzcGxheU5hbWVGb3JVUkwoc2NyaXB0T3JS
ZXNvdXJjZS5zb3VyY2VVUkwgfHwgc2NyaXB0T3JSZXNvdXJjZS51cmwpOwotICAgICAgICB2YXIg
cyA9ICIgICAgIiArIGkgKyAiKSAiICsgZnJhbWUuZnVuY3Rpb25OYW1lICsgIiAoIiArIHVybCAr
ICI6IiArIGZyYW1lLmxpbmUgKyAiKSI7Ci0gICAgICAgIHRlc3RDb250cm9sbGVyLnJlc3VsdHMu
cHVzaChzKTsKLSAgICB9Ci19CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9kZWJ1Z2dlci10ZXN0Mi5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL2RlYnVnZ2VyLXRlc3QyLmpzCmluZGV4IDUyOGVlOGYuLjgwYjk4YTYgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXRlc3QyLmpzCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXRlc3QyLmpzCkBAIC0y
LDYgKzIsOCBAQCB2YXIgaW5pdGlhbGl6ZV9EZWJ1Z2dlclRlc3QgPSBmdW5jdGlvbigpIHsKIAog
SW5zcGVjdG9yVGVzdC5zdGFydERlYnVnZ2VyVGVzdCA9IGZ1bmN0aW9uKGNhbGxiYWNrKQogewor
ICAgIFdlYkluc3BlY3Rvci5zaG93UGFuZWwoInNjcmlwdHMiKTsKKwogICAgIGlmIChXZWJJbnNw
ZWN0b3IucGFuZWxzLnNjcmlwdHMuX2RlYnVnZ2VyRW5hYmxlZCkKICAgICAgICAgc3RhcnRUZXN0
KCk7CiAgICAgZWxzZSB7CkBAIC0xMiw5ICsxNCwxMSBAQCBJbnNwZWN0b3JUZXN0LnN0YXJ0RGVi
dWdnZXJUZXN0ID0gZnVuY3Rpb24oY2FsbGJhY2spCiAgICAgZnVuY3Rpb24gc3RhcnRUZXN0KCkK
ICAgICB7CiAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJEZWJ1Z2dlciB3YXMgZW5h
YmxlZC4iKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5fYWRkU25pZmZlcihXZWJJbnNwZWN0b3Is
ICJwYXVzZWRTY3JpcHQiLCBJbnNwZWN0b3JUZXN0Ll9wYXVzZWRTY3JpcHQsIHRydWUpOworICAg
ICAgICBJbnNwZWN0b3JUZXN0Ll9hZGRTbmlmZmVyKFdlYkluc3BlY3RvciwgInJlc3VtZWRTY3Jp
cHQiLCBJbnNwZWN0b3JUZXN0Ll9yZXN1bWVkU2NyaXB0LCB0cnVlKTsKICAgICAgICAgY2FsbGJh
Y2soKTsKICAgICB9Ci19Cit9OwogCiBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlRGVidWdnZXJUZXN0
ID0gZnVuY3Rpb24oKQogewpAQCAtMjMsMTMgKzI3LDE2IEBAIEluc3BlY3RvclRlc3QuY29tcGxl
dGVEZWJ1Z2dlclRlc3QgPSBmdW5jdGlvbigpCiAgICAgaWYgKCFzY3JpcHRzUGFuZWwuYnJlYWtw
b2ludHNBY3RpdmF0ZWQpCiAgICAgICAgIHNjcmlwdHNQYW5lbC50b2dnbGVCcmVha3BvaW50c0J1
dHRvbi5lbGVtZW50LmNsaWNrKCk7CiAKLSAgICBJbnNwZWN0b3JUZXN0LnJlc3VtZUV4ZWN1dGlv
bigpOworICAgIEluc3BlY3RvclRlc3QucmVzdW1lRXhlY3V0aW9uKGRpc2FibGVEZWJ1Z2dlcik7
CiAKLSAgICBpZiAoIXNjcmlwdHNQYW5lbC5fZGVidWdnZXJFbmFibGVkKQotICAgICAgICBjb21w
bGV0ZVRlc3QoKTsKLSAgICBlbHNlIHsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5fYWRkU25pZmZl
cihXZWJJbnNwZWN0b3IsICJkZWJ1Z2dlcldhc0Rpc2FibGVkIiwgY29tcGxldGVUZXN0KTsKLSAg
ICAgICAgc2NyaXB0c1BhbmVsLl90b2dnbGVEZWJ1Z2dpbmcoZmFsc2UpOworICAgIGZ1bmN0aW9u
IGRpc2FibGVEZWJ1Z2dlcigpCisgICAgeworICAgICAgICBpZiAoIXNjcmlwdHNQYW5lbC5fZGVi
dWdnZXJFbmFibGVkKQorICAgICAgICAgICAgY29tcGxldGVUZXN0KCk7CisgICAgICAgIGVsc2Ug
eworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5fYWRkU25pZmZlcihXZWJJbnNwZWN0b3IsICJk
ZWJ1Z2dlcldhc0Rpc2FibGVkIiwgY29tcGxldGVUZXN0KTsKKyAgICAgICAgICAgIHNjcmlwdHNQ
YW5lbC5fdG9nZ2xlRGVidWdnaW5nKGZhbHNlKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGZ1
bmN0aW9uIGNvbXBsZXRlVGVzdCgpCkBAIC0zOSwyMSArNDYsNjkgQEAgSW5zcGVjdG9yVGVzdC5j
b21wbGV0ZURlYnVnZ2VyVGVzdCA9IGZ1bmN0aW9uKCkKICAgICB9CiB9OwogCitJbnNwZWN0b3JU
ZXN0LnJ1blRlc3RGdW5jdGlvbkFuZFdhaXRVbnRpbFBhdXNlZCA9IGZ1bmN0aW9uKGNhbGxiYWNr
KQoreworICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJbkNvbnNvbGUoInNldFRpbWVvdXQodGVz
dEZ1bmN0aW9uLCAwKSIpOworICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJTZXQgdGltZXIg
Zm9yIHRlc3QgZnVuY3Rpb24uIik7CisgICAgSW5zcGVjdG9yVGVzdC53YWl0VW50aWxQYXVzZWQo
Y2FsbGJhY2spOworfTsKKwogSW5zcGVjdG9yVGVzdC53YWl0VW50aWxQYXVzZWQgPSBmdW5jdGlv
bihjYWxsYmFjaykKIHsKLSAgICBJbnNwZWN0b3JUZXN0Ll9hZGRTbmlmZmVyKFdlYkluc3BlY3Rv
ciwgInBhdXNlZFNjcmlwdCIsIHBhdXNlZFNjcmlwdCk7CisgICAgaWYgKEluc3BlY3RvclRlc3Qu
X2NhbGxGcmFtZXMpCisgICAgICAgIGNhbGxiYWNrKEluc3BlY3RvclRlc3QuX2NhbGxGcmFtZXMp
OworICAgIGVsc2UKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5fd2FpdFVudGlsUGF1c2VkQ2FsbGJh
Y2sgPSBjYWxsYmFjazsKK307CiAKLSAgICBmdW5jdGlvbiBwYXVzZWRTY3JpcHQoY2FsbEZyYW1l
cykKLSAgICB7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJQYXVzZWQgYXQgbGlu
ZSAiICsgY2FsbEZyYW1lc1swXS5saW5lICsgIiBpbiAiICsgY2FsbEZyYW1lc1swXS5mdW5jdGlv
bk5hbWUpOwotICAgICAgICBjYWxsYmFjayhjYWxsRnJhbWVzKTsKLSAgICB9CitJbnNwZWN0b3JU
ZXN0LndhaXRVbnRpbFJlc3VtZWQgPSBmdW5jdGlvbihjYWxsYmFjaykKK3sKKyAgICBpZiAoIUlu
c3BlY3RvclRlc3QuX2NhbGxGcmFtZXMpCisgICAgICAgIGNhbGxiYWNrKCk7CisgICAgZWxzZQor
ICAgICAgICBJbnNwZWN0b3JUZXN0Ll93YWl0VW50aWxSZXN1bWVkQ2FsbGJhY2sgPSBjYWxsYmFj
azsKIH07CiAKLUluc3BlY3RvclRlc3QucmVzdW1lRXhlY3V0aW9uID0gZnVuY3Rpb24oKQorSW5z
cGVjdG9yVGVzdC5yZXN1bWVFeGVjdXRpb24gPSBmdW5jdGlvbihjYWxsYmFjaykKIHsKICAgICBp
ZiAoV2ViSW5zcGVjdG9yLnBhbmVscy5zY3JpcHRzLnBhdXNlZCkKICAgICAgICAgV2ViSW5zcGVj
dG9yLnBhbmVscy5zY3JpcHRzLl90b2dnbGVQYXVzZSgpOworICAgIGlmIChjYWxsYmFjaykKKyAg
ICAgICAgSW5zcGVjdG9yVGVzdC53YWl0VW50aWxSZXN1bWVkKGNhbGxiYWNrKTsKK307CisKK0lu
c3BlY3RvclRlc3QuY2FwdHVyZVN0YWNrVHJhY2UgPSBmdW5jdGlvbihjYWxsRnJhbWVzKQorewor
ICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJDYWxsIHN0YWNrOiIpOworICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgY2FsbEZyYW1lcy5sZW5ndGg7IGkrKykgeworICAgICAgICB2YXIgZnJhbWUg
PSBjYWxsRnJhbWVzW2ldOworICAgICAgICB2YXIgc2NyaXB0T3JSZXNvdXJjZSA9IFdlYkluc3Bl
Y3Rvci5wYW5lbHMuc2NyaXB0cy5fc291cmNlSURNYXBbZnJhbWUuc291cmNlSURdOworICAgICAg
ICB2YXIgdXJsID0gc2NyaXB0T3JSZXNvdXJjZSAmJiBXZWJJbnNwZWN0b3IuZGlzcGxheU5hbWVG
b3JVUkwoc2NyaXB0T3JSZXNvdXJjZS5zb3VyY2VVUkwgfHwgc2NyaXB0T3JSZXNvdXJjZS51cmwp
OworICAgICAgICB2YXIgcyA9ICIgICAgIiArIGkgKyAiKSAiICsgZnJhbWUuZnVuY3Rpb25OYW1l
ICsgIiAoIiArIHVybCArICI6IiArIGZyYW1lLmxpbmUgKyAiKSI7CisgICAgICAgIEluc3BlY3Rv
clRlc3QuYWRkUmVzdWx0KHMpOworICAgIH0KK307CisKK0luc3BlY3RvclRlc3QuX3BhdXNlZFNj
cmlwdCA9IGZ1bmN0aW9uKGNhbGxGcmFtZXMpCit7CisgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1
bHQoIlNjcmlwdCBleGVjdXRpb24gcGF1c2VkLiIpOworICAgIEluc3BlY3RvclRlc3QuX2NhbGxG
cmFtZXMgPSBjYWxsRnJhbWVzOworICAgIGlmIChJbnNwZWN0b3JUZXN0Ll93YWl0VW50aWxQYXVz
ZWRDYWxsYmFjaykgeworICAgICAgICB2YXIgY2FsbGJhY2sgPSBJbnNwZWN0b3JUZXN0Ll93YWl0
VW50aWxQYXVzZWRDYWxsYmFjazsKKyAgICAgICAgZGVsZXRlIEluc3BlY3RvclRlc3QuX3dhaXRV
bnRpbFBhdXNlZENhbGxiYWNrOworICAgICAgICBjYWxsYmFjayhJbnNwZWN0b3JUZXN0Ll9jYWxs
RnJhbWVzKTsKKyAgICB9Cit9CisKK0luc3BlY3RvclRlc3QuX3Jlc3VtZWRTY3JpcHQgPSBmdW5j
dGlvbigpCit7CisgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIlNjcmlwdCBleGVjdXRpb24g
cmVzdW1lZC4iKTsKKyAgICBkZWxldGUgSW5zcGVjdG9yVGVzdC5fY2FsbEZyYW1lczsKKyAgICBp
ZiAoSW5zcGVjdG9yVGVzdC5fd2FpdFVudGlsUmVzdW1lZENhbGxiYWNrKSB7CisgICAgICAgIHZh
ciBjYWxsYmFjayA9IEluc3BlY3RvclRlc3QuX3dhaXRVbnRpbFJlc3VtZWRDYWxsYmFjazsKKyAg
ICAgICAgZGVsZXRlIEluc3BlY3RvclRlc3QuX3dhaXRVbnRpbFJlc3VtZWRDYWxsYmFjazsKKyAg
ICAgICAgY2FsbGJhY2soKTsKKyAgICB9CiB9OwogCiBJbnNwZWN0b3JUZXN0LnNob3dTY3JpcHRT
b3VyY2UgPSBmdW5jdGlvbihzY3JpcHROYW1lLCBjYWxsYmFjaykKQEAgLTY0LDYgKzExOSwxNSBA
QCBJbnNwZWN0b3JUZXN0LnNob3dTY3JpcHRTb3VyY2UgPSBmdW5jdGlvbihzY3JpcHROYW1lLCBj
YWxsYmFjaykKICAgICAgICAgSW5zcGVjdG9yVGVzdC5fYWRkU25pZmZlcihXZWJJbnNwZWN0b3Is
ICJwYXJzZWRTY3JpcHRTb3VyY2UiLCBJbnNwZWN0b3JUZXN0LnNob3dTY3JpcHRTb3VyY2UuYmlu
ZChJbnNwZWN0b3JUZXN0LCBzY3JpcHROYW1lLCBjYWxsYmFjaykpOwogfTsKIAorSW5zcGVjdG9y
VGVzdC53YWl0VW50aWxDdXJyZW50U291cmNlRnJhbWVJc0xvYWRlZCA9IGZ1bmN0aW9uKGNhbGxi
YWNrKQoreworICAgIHZhciBzb3VyY2VGcmFtZSA9IFdlYkluc3BlY3Rvci5jdXJyZW50UGFuZWwu
dmlzaWJsZVZpZXcuc291cmNlRnJhbWU7CisgICAgaWYgKHNvdXJjZUZyYW1lLl9sb2FkZWQpCisg
ICAgICAgIGNhbGxiYWNrKHNvdXJjZUZyYW1lKTsKKyAgICBlbHNlCisgICAgICAgIEluc3BlY3Rv
clRlc3QuX2FkZFNuaWZmZXIoc291cmNlRnJhbWUsICJzZXRDb250ZW50IiwgY2FsbGJhY2suYmlu
ZChudWxsLCBzb3VyY2VGcmFtZSkpOworfTsKKwogSW5zcGVjdG9yVGVzdC5fc2NyaXB0c0FyZVBh
cnNlZCA9IGZ1bmN0aW9uKHNjcmlwdHMpCiB7CiAgICAgdmFyIHNjcmlwdFNlbGVjdCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJzY3JpcHRzLWZpbGVzIik7CkBAIC0xMDYsMTIgKzE3MCw1MiBA
QCBJbnNwZWN0b3JUZXN0Ll9zaG93U2NyaXB0U291cmNlID0gZnVuY3Rpb24oc2NyaXB0TmFtZSwg
Y2FsbGJhY2spCiAgICAgICAgIHNjcmlwdHNQYW5lbC5fc2hvd1NjcmlwdE9yUmVzb3VyY2Uoc2Ny
aXB0UmVzb3VyY2UpOwogICAgIH0KIAotICAgIHZhciB2aWV3ID0gc2NyaXB0c1BhbmVsLnZpc2li
bGVWaWV3OwotICAgIGNhbGxiYWNrID0gY2FsbGJhY2suYmluZChudWxsLCB2aWV3KTsKLSAgICBp
ZiAoIXZpZXcuc291cmNlRnJhbWUuX2xvYWRlZCkKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5fYWRk
U25pZmZlcih2aWV3LnNvdXJjZUZyYW1lLCAic2V0Q29udGVudCIsIGNhbGxiYWNrKTsKLSAgICBl
bHNlCisgICAgSW5zcGVjdG9yVGVzdC53YWl0VW50aWxDdXJyZW50U291cmNlRnJhbWVJc0xvYWRl
ZChjYWxsYmFjayk7Cit9OworCitJbnNwZWN0b3JUZXN0LmV4cGFuZFByb3BlcnRpZXMgPSBmdW5j
dGlvbihwcm9wZXJ0aWVzLCBjYWxsYmFjaykKK3sKKyAgICB2YXIgaW5kZXggPSAwOworICAgIGZ1
bmN0aW9uIGV4cGFuZE5leHRQYXRoKCkKKyAgICB7CisgICAgICAgIGlmIChpbmRleCA9PT0gcHJv
cGVydGllcy5sZW5ndGgpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKCk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgdmFyIHBhcmVudFRyZWVFbGVtZW50ID0gcHJvcGVy
dGllc1tpbmRleCsrXTsKKyAgICAgICAgdmFyIHBhdGggPSBwcm9wZXJ0aWVzW2luZGV4KytdOwor
ICAgICAgICBJbnNwZWN0b3JUZXN0Ll9leHBhbmRQcm9wZXJ0eShwYXJlbnRUcmVlRWxlbWVudCwg
cGF0aCwgMCwgZXhwYW5kTmV4dFBhdGgpOworICAgIH0KKyAgICBJbnNwZWN0b3JUZXN0LnJ1bkFm
dGVyUGVuZGluZ0Rpc3BhdGNoZXMoZXhwYW5kTmV4dFBhdGgpOworfTsKKworSW5zcGVjdG9yVGVz
dC5fZXhwYW5kUHJvcGVydHkgPSBmdW5jdGlvbihwYXJlbnRUcmVlRWxlbWVudCwgcGF0aCwgcGF0
aEluZGV4LCBjYWxsYmFjaykKK3sKKyAgICBpZiAocGF0aEluZGV4ID09PSBwYXRoLmxlbmd0aCkg
eworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiRXhwYW5kZWQgcHJvcGVydHk6ICIg
KyBwYXRoLmpvaW4oIi4iKSk7CiAgICAgICAgIGNhbGxiYWNrKCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgdmFyIG5hbWUgPSBwYXRoW3BhdGhJbmRleCsrXTsKKyAgICB2YXIgcHJvcGVy
dHlUcmVlRWxlbWVudCA9IEluc3BlY3RvclRlc3QuX2ZpbmRDaGlsZFByb3BlcnR5VHJlZUVsZW1l
bnQocGFyZW50VHJlZUVsZW1lbnQsIG5hbWUpOworICAgIGlmICghcHJvcGVydHlUcmVlRWxlbWVu
dCkgeworICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJGYWlsZWQgdG8gZXhwYW5kIHBy
b3BlcnR5OiAiICsgcGF0aC5zbGljZSgwLCBwYXRoSW5kZXgpLmpvaW4oIi4iKSk7CisgICAgICAg
SW5zcGVjdG9yVGVzdC5jb21wbGV0ZURlYnVnZ2VyVGVzdCgpOworICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgcHJvcGVydHlUcmVlRWxlbWVudC5leHBhbmQoKTsKKyAgICBJbnNwZWN0b3JUZXN0
LnJ1bkFmdGVyUGVuZGluZ0Rpc3BhdGNoZXMoSW5zcGVjdG9yVGVzdC5fZXhwYW5kUHJvcGVydHku
YmluZChJbnNwZWN0b3JUZXN0LCBwcm9wZXJ0eVRyZWVFbGVtZW50LCBwYXRoLCBwYXRoSW5kZXgs
IGNhbGxiYWNrKSk7CiB9OwogCi19CitJbnNwZWN0b3JUZXN0Ll9maW5kQ2hpbGRQcm9wZXJ0eVRy
ZWVFbGVtZW50ID0gZnVuY3Rpb24ocGFyZW50LCBjaGlsZE5hbWUpCit7CisgICAgdmFyIGNoaWxk
cmVuID0gcGFyZW50LmNoaWxkcmVuOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW4u
bGVuZ3RoOyBpKyspIHsKKyAgICAgICAgdmFyIHRyZWVFbGVtZW50ID0gY2hpbGRyZW5baV07Cisg
ICAgICAgIHZhciBwcm9wZXJ0eSA9IHRyZWVFbGVtZW50LnByb3BlcnR5OworICAgICAgICBpZiAo
cHJvcGVydHkubmFtZSA9PT0gY2hpbGROYW1lKQorICAgICAgICAgICAgcmV0dXJuIHRyZWVFbGVt
ZW50OworICAgIH0KK307CisKK307CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdDIuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9pbnNwZWN0b3ItdGVzdDIuanMKaW5kZXggNGZiNTYyYi4uOGUzMWU2MyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QyLmpz
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0Mi5q
cwpAQCAtMSwxMCArMSwxMSBAQAotdmFyIGluaXRpYWxpemVfSW5zcGVjdG9yVGVzdCA9IChmdW5j
dGlvbigpIHsKK3ZhciBpbml0aWFsaXplX0luc3BlY3RvclRlc3QgPSBmdW5jdGlvbigpIHsKIAog
dmFyIHJlc3VsdHMgPSBbXTsKK3ZhciByZXN1bHRzU3luY2hyb25pemVkID0gZmFsc2U7CiAKIElu
c3BlY3RvclRlc3QuY29tcGxldGVUZXN0ID0gZnVuY3Rpb24oKQogewotICAgIEluc3BlY3RvckJh
Y2tlbmQuZGlkRXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVuZChJbnNwZWN0b3JUZXN0LmNvbXBsZXRl
VGVzdENhbGxJZCwgSlNPTi5zdHJpbmdpZnkocmVzdWx0cykpOworICAgIEluc3BlY3RvckJhY2tl
bmQuZGlkRXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVuZChJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVz
dENhbGxJZCwgIiIpOwogfTsKIAogSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluQ29uc29sZSA9IGZ1
bmN0aW9uKGNvZGUsIGNhbGxiYWNrKQpAQCAtMjEsMTUgKzIyLDM5IEBAIEluc3BlY3RvclRlc3Qu
ZXZhbHVhdGVJbkNvbnNvbGUgPSBmdW5jdGlvbihjb2RlLCBjYWxsYmFjaykKICAgICAgICAgfSk7
CiB9OwogCitJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlID0gZnVuY3Rpb24oY29kZSwgY2Fs
bGJhY2spCit7CisgICAgSW5qZWN0ZWRTY3JpcHRBY2Nlc3MuZ2V0RGVmYXVsdCgpLmV2YWx1YXRl
KGNvZGUsICJjb25zb2xlIiwgY2FsbGJhY2sgfHwgZnVuY3Rpb24oKSB7fSk7Cit9OworCiBJbnNw
ZWN0b3JUZXN0LmFkZFJlc3VsdCA9IGZ1bmN0aW9uKHRleHQpCiB7CiAgICAgcmVzdWx0cy5wdXNo
KHRleHQpOworICAgIHZhciByZXN1bHRzVG9TZW5kID0gcmVzdWx0c1N5bmNocm9uaXplZCA/IFt0
ZXh0XSA6IHJlc3VsdHM7CisgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgiZHVtcEFy
cmF5KEpTT04ucGFyc2UoJyIgKyBKU09OLnN0cmluZ2lmeShyZXN1bHRzVG9TZW5kKSArICInKSki
KTsKKyAgICByZXN1bHRzU3luY2hyb25pemVkID0gdHJ1ZTsKIH07CiAKIEluc3BlY3RvclRlc3Qu
cmVsb2FkUGFnZSA9IGZ1bmN0aW9uKGNhbGxiYWNrKQogeworICAgIEluc3BlY3RvclRlc3QuX3Jl
bG9hZFBhZ2VDYWxsYmFjayA9IGNhbGxiYWNrOwogICAgIEluc3BlY3RvckJhY2tlbmQucmVsb2Fk
UGFnZSgpOwotICAgIEluc3BlY3RvclRlc3QuX2FkZFNuaWZmZXIoV2ViSW5zcGVjdG9yLCAicmVz
ZXQiLCBjYWxsYmFjayk7Cit9OworCitJbnNwZWN0b3JUZXN0LnBhZ2VSZWxvYWRlZCA9IGZ1bmN0
aW9uKCkKK3sKKyAgICByZXN1bHRzU3luY2hyb25pemVkID0gZmFsc2U7CisgICAgSW5zcGVjdG9y
VGVzdC5hZGRSZXN1bHQoIlBhZ2UgcmVsb2FkZWQuIik7CisgICAgaWYgKEluc3BlY3RvclRlc3Qu
X3JlbG9hZFBhZ2VDYWxsYmFjaykgeworICAgICAgICB2YXIgY2FsbGJhY2sgPSBJbnNwZWN0b3JU
ZXN0Ll9yZWxvYWRQYWdlQ2FsbGJhY2s7CisgICAgICAgIGRlbGV0ZSBJbnNwZWN0b3JUZXN0Ll9y
ZWxvYWRQYWdlQ2FsbGJhY2s7CisgICAgICAgIGNhbGxiYWNrKCk7CisgICAgfQorfTsKKworSW5z
cGVjdG9yVGVzdC5ydW5BZnRlclBlbmRpbmdEaXNwYXRjaGVzID0gZnVuY3Rpb24oY2FsbGJhY2sp
Cit7CisgICAgV2ViSW5zcGVjdG9yLlRlc3RDb250cm9sbGVyLnByb3RvdHlwZS5ydW5BZnRlclBl
bmRpbmdEaXNwYXRjaGVzKGNhbGxiYWNrKTsKIH07CiAKIEluc3BlY3RvclRlc3QuZW5hYmxlUmVz
b3VyY2VUcmFja2luZyA9IGZ1bmN0aW9uKGNhbGxiYWNrKQpAQCAtMzcsNyArNjIsNyBAQCBJbnNw
ZWN0b3JUZXN0LmVuYWJsZVJlc291cmNlVHJhY2tpbmcgPSBmdW5jdGlvbihjYWxsYmFjaykKICAg
ICBpZiAoV2ViSW5zcGVjdG9yLnBhbmVscy5yZXNvdXJjZXMucmVzb3VyY2VUcmFja2luZ0VuYWJs
ZWQpCiAgICAgICAgIGNhbGxiYWNrKCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIEluc3BlY3RvclRl
c3QuX2FkZFNuaWZmZXIoV2ViSW5zcGVjdG9yLCAicmVzZXQiLCBjYWxsYmFjayk7CisgICAgICAg
IEluc3BlY3RvclRlc3QuX3JlbG9hZFBhZ2VDYWxsYmFjayA9IGNhbGxiYWNrOwogICAgICAgICBJ
bnNwZWN0b3JCYWNrZW5kLmVuYWJsZVJlc291cmNlVHJhY2tpbmcoZmFsc2UpOwogICAgIH0KIH0K
QEAgLTExMCwxNCArMTM1LDE0IEBAIEluc3BlY3RvclRlc3QuX2FkZFNuaWZmZXIgPSBmdW5jdGlv
bihyZWNlaXZlciwgbWV0aG9kTmFtZSwgb3ZlcnJpZGUsIG9wdF9zdGlja3kpCiAgICAgICAgIH0K
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9OwotfQorfTsKIAotfSk7Cit9OwogCiB2YXIg
cnVuVGVzdENhbGxJZCA9IDA7CiB2YXIgY29tcGxldGVUZXN0Q2FsbElkID0gMTsKIAotZnVuY3Rp
b24gcnVuVGVzdCgpCitmdW5jdGlvbiBvbmxvYWQoKQogewogICAgIGlmICghd2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQogICAgICAgICByZXR1cm47CkBAIC0xMjcsOCArMTUyLDEwIEBAIGZ1
bmN0aW9uIHJ1blRlc3QoKQogCiAgICAgZnVuY3Rpb24gcnVuVGVzdEluRnJvbnRlbmQoaW5pdGlh
bGl6YXRpb25GdW5jdGlvbnMsIHRlc3RGdW5jdGlvbiwgY29tcGxldGVUZXN0Q2FsbElkKQogICAg
IHsKLSAgICAgICAgaWYgKHdpbmRvdy5JbnNwZWN0b3JUZXN0KQorICAgICAgICBpZiAod2luZG93
Lkluc3BlY3RvclRlc3QpIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QucGFnZVJlbG9hZGVk
KCk7CiAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KIAogICAgICAgICBJbnNwZWN0b3JU
ZXN0ID0ge307CiAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0Q2FsbElkID0gY29t
cGxldGVUZXN0Q2FsbElkOwpAQCAtMTU1LDI0ICsxODIsMjAgQEAgZnVuY3Rpb24gcnVuVGVzdCgp
CiAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZXZhbHVhdGVJbldlYkluc3BlY3RvcihydW5UZXN0
Q2FsbElkLCB0b0V2YWx1YXRlKTsKIH0KIAotZnVuY3Rpb24gZGlkRXZhbHVhdGVGb3JUZXN0SW5G
cm9udGVuZChjYWxsSWQsIHJlc3VsdCkKK2Z1bmN0aW9uIGRpZEV2YWx1YXRlRm9yVGVzdEluRnJv
bnRlbmQoY2FsbElkKQogewogICAgIGlmIChjYWxsSWQgIT09IGNvbXBsZXRlVGVzdENhbGxJZCkK
ICAgICAgICAgcmV0dXJuOwotICAgIGR1bXBBcnJheShKU09OLnBhcnNlKHJlc3VsdCkpOwogICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmNsb3NlV2ViSW5zcGVjdG9yKCk7CiAgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsKICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgp
OwogICAgIH0sIDApOwogfQogCi1mdW5jdGlvbiBkdW1wQXJyYXkocmVzdWx0KQorZnVuY3Rpb24g
ZHVtcEFycmF5KHJlc3VsdHMpCiB7Ci0gICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIEFycmF5KSB7
Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzdWx0Lmxlbmd0aDsgKytpKQotICAgICAg
ICAgICAgb3V0cHV0KHJlc3VsdFtpXSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIG91dHB1dChyZXN1
bHQpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzdWx0cy5sZW5ndGg7ICsraSkKKyAgICAg
ICAgb3V0cHV0KHJlc3VsdHNbaV0pOwogfQogCiBmdW5jdGlvbiBkdW1wT2JqZWN0KG9iamVjdCwg
bm9uZGV0ZXJtaW5pc3RpY1Byb3BzLCBwcmVmaXgsIGZpcnN0TGluZVByZWZpeCkKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1icmVha3BvaW50cy1ub3QtYWN0aXZh
dGVkLW9uLXJlbG9hZC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLWJyZWFr
cG9pbnRzLW5vdC1hY3RpdmF0ZWQtb24tcmVsb2FkLmh0bWwKaW5kZXggMWM4YjBmYi4uNzA3YWE5
NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLWJyZWFrcG9pbnRz
LW5vdC1hY3RpdmF0ZWQtb24tcmVsb2FkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2RlYnVnZ2VyLWJyZWFrcG9pbnRzLW5vdC1hY3RpdmF0ZWQtb24tcmVsb2FkLmh0bWwKQEAgLTE0
LDI5ICsxNCwyNyBAQCB2YXIgdGVzdCA9IGZ1bmN0aW9uKCkKICAgICB2YXIgdGVzdE5hbWUgPSBX
ZWJJbnNwZWN0b3IubWFpblJlc291cmNlLnVybDsKICAgICB0ZXN0TmFtZSA9IHRlc3ROYW1lLnN1
YnN0cmluZyh0ZXN0TmFtZS5sYXN0SW5kZXhPZignLycpICsgMSk7CiAKLSAgICBXZWJJbnNwZWN0
b3Iuc2hvd1BhbmVsKCJzY3JpcHRzIik7Ci0gICAgSW5zcGVjdG9yVGVzdC5zdGFydERlYnVnZ2Vy
VGVzdChzdGFydERlYnVnZ2VyVGVzdENhbGxiYWNrKTsKKyAgICBJbnNwZWN0b3JUZXN0LnN0YXJ0
RGVidWdnZXJUZXN0KHN0ZXAxKTsKIAotICAgIGZ1bmN0aW9uIHN0YXJ0RGVidWdnZXJUZXN0Q2Fs
bGJhY2soKQorICAgIGZ1bmN0aW9uIHN0ZXAxKCkKICAgICB7Ci0gICAgICAgIEluc3BlY3RvclRl
c3Quc2hvd1NjcmlwdFNvdXJjZSh0ZXN0TmFtZSwgc2hvd1NjcmlwdFNvdXJjZUNhbGxiYWNrKTsK
KyAgICAgICAgSW5zcGVjdG9yVGVzdC5zaG93U2NyaXB0U291cmNlKHRlc3ROYW1lLCBzdGVwMik7
CiAgICAgfQogCi0gICAgZnVuY3Rpb24gc2hvd1NjcmlwdFNvdXJjZUNhbGxiYWNrKHZpZXcpCisg
ICAgZnVuY3Rpb24gc3RlcDIoKQogICAgIHsKICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1
bHQoIk1haW4gcmVzb3VyY2Ugd2FzIHNob3duLiIpOwotICAgICAgICB2aWV3Ll9hZGRCcmVha3Bv
aW50KDgpOworICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnNjcmlwdHMudmlzaWJsZVZpZXcu
X2FkZEJyZWFrcG9pbnQoOCk7CiAgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMuc2NyaXB0cy50
b2dnbGVCcmVha3BvaW50c0J1dHRvbi5lbGVtZW50LmNsaWNrKCk7Ci0gICAgICAgIEluc3BlY3Rv
clRlc3QucmVsb2FkUGFnZShyZWxvYWRQYWdlQ2FsbGJhY2spOworICAgICAgICBJbnNwZWN0b3JU
ZXN0LnJlbG9hZFBhZ2Uoc3RlcDMpOwogICAgIH0KIAotICAgIGZ1bmN0aW9uIHJlbG9hZFBhZ2VD
YWxsYmFjaygpCisgICAgZnVuY3Rpb24gc3RlcDMoKQogICAgIHsKLSAgICAgICAgSW5zcGVjdG9y
VGVzdC5hZGRSZXN1bHQoIlBhZ2UgcmVsb2FkZWQuIik7Ci0gICAgICAgIEluc3BlY3RvclRlc3Qu
c2hvd1NjcmlwdFNvdXJjZSh0ZXN0TmFtZSwgc2hvd1NjcmlwdFNvdXJjZUFmdGVyUmVsb2FkQ2Fs
bGJhY2spOworICAgICAgICBJbnNwZWN0b3JUZXN0LnNob3dTY3JpcHRTb3VyY2UodGVzdE5hbWUs
IHN0ZXA0KTsKICAgICB9CiAKLSAgICBmdW5jdGlvbiBzaG93U2NyaXB0U291cmNlQWZ0ZXJSZWxv
YWRDYWxsYmFjayh2aWV3KQorICAgIGZ1bmN0aW9uIHN0ZXA0KCkKICAgICB7CiAgICAgICAgIElu
c3BlY3RvclRlc3QuYWRkUmVzdWx0KCJNYWluIHJlc291cmNlIHdhcyBzaG93bi4iKTsKICAgICAg
ICAgaWYgKCFXZWJJbnNwZWN0b3IucGFuZWxzLnNjcmlwdHMuYnJlYWtwb2ludHNBY3RpdmF0ZWQp
CkBAIC01MCw3ICs0OCw3IEBAIHZhciB0ZXN0ID0gZnVuY3Rpb24oKQogPC9zY3JpcHQ+CiA8L2hl
YWQ+CiAKLTxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxib2R5IG9ubG9hZD0ib25sb2FkKCki
PgogPHA+CiBUZXN0cyB0aGF0IGJyZWFrcG9pbnRzIGFyZSBub3QgYWN0aXZhdGVkIG9uIHBhZ2Ug
cmVsb2FkLjxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00
MTQ2MSI+QnVnIDQxNDYxPC9hPgogPC9wPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2RlYnVnZ2VyLWN5Y2xpYy1yZWYtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2RlYnVnZ2VyLWN5Y2xpYy1yZWYtZXhwZWN0ZWQudHh0CmluZGV4IDUzZmNmOWEuLjczNTRl
MWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1jeWNsaWMtcmVm
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItY3ljbGlj
LXJlZi1leHBlY3RlZC50eHQKQEAgLTMsNiArMyw2IEBAIFRlc3RzIHRoYXQgZGVidWdnaW5nIGEg
cGFnZSB3aGVyZSBPYmplY3QgcHJvdG90eXBlIGhhcyBhIGN5Y2xpYyByZWZlcmVuY2Ugd29uJ3QK
IERlYnVnZ2VyIHdhcyBlbmFibGVkLgogU2V0IHRpbWVyIGZvciB0ZXN0IGZ1bmN0aW9uLgogU2Ny
aXB0IGV4ZWN1dGlvbiBwYXVzZWQuCi1SZXN1bWVkIHNjcmlwdCBleGVjdXRpb24uCi1EaXNhYmxl
ZCBkZWJ1Z2dlci4KK1NjcmlwdCBleGVjdXRpb24gcmVzdW1lZC4KK0RlYnVnZ2VyIHdhcyBkaXNh
YmxlZC4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLWN5Y2xp
Yy1yZWYuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1jeWNsaWMtcmVmLmh0
bWwKaW5kZXggOGQ1MWJjNC4uNmRjNGUwNCAxMDA3NTUKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2RlYnVnZ2VyLWN5Y2xpYy1yZWYuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
ZGVidWdnZXItY3ljbGljLXJlZi5odG1sCkBAIC0xLDcgKzEsNyBAQAogPGh0bWw+CiA8aGVhZD4K
LTxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcyI+
PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIt
dGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
aW5zcGVjdG9yLXRlc3QyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9kZWJ1Z2dlci10ZXN0Mi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogCiBPYmpl
Y3QucHJvdG90eXBlLmN5Y2xpY1JlZiA9IE9iamVjdC5wcm90b3R5cGU7CkBAIC0xMCwzNSArMTAs
MjEgQEAgZnVuY3Rpb24gdGVzdEZ1bmN0aW9uKCkKIHsKICAgICB2YXIgbyA9IG5ldyBPYmplY3Qo
KTsKICAgICBkZWJ1Z2dlcjsKLSAgICBub3RpZnlEb25lKCk7CiB9CiAKLWZ1bmN0aW9uIGRvaXQo
KQordmFyIHRlc3QgPSBmdW5jdGlvbigpCiB7Ci0gICAgZXZhbHVhdGVJbldlYkluc3BlY3Rvcigi
ZnJvbnRlbmRfdGVzdERlYnVnT2JqZWN0V2l0aEN5Y2xpY1JlZiIsIGR1bXBBcnJheSk7Ci19Ci0K
LWZ1bmN0aW9uIGZyb250ZW5kX3Rlc3REZWJ1Z09iamVjdFdpdGhDeWNsaWNSZWYodGVzdENvbnRy
b2xsZXIpCi17Ci0gICAgdGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIEluc3Bl
Y3RvclRlc3Quc3RhcnREZWJ1Z2dlclRlc3Qoc3RlcDEpOwogCi0gICAgV2ViSW5zcGVjdG9yLnNo
b3dQYW5lbCgic2NyaXB0cyIpOwotICAgIGZyb250ZW5kX2Vuc3VyZURlYnVnZ2VyRW5hYmxlZChk
ZWJ1Z2dlcldhc0VuYWJsZWRDYWxsYmFjayk7Ci0KLSAgICBmdW5jdGlvbiBkZWJ1Z2dlcldhc0Vu
YWJsZWRDYWxsYmFjaygpCisgICAgZnVuY3Rpb24gc3RlcDEoKQogICAgIHsKLSAgICAgICAgdGVz
dENvbnRyb2xsZXIucmVzdWx0cy5wdXNoKCJEZWJ1Z2dlciB3YXMgZW5hYmxlZC4iKTsKLSAgICAg
ICAgZnJvbnRlbmRfZXZhbHVhdGVJbkNvbnNvbGUoInNldFRpbWVvdXQodGVzdEZ1bmN0aW9uLCAw
KSIsIGZ1bmN0aW9uKHJlc3VsdCkKLSAgICAgICAgewotICAgICAgICAgICAgdGVzdENvbnRyb2xs
ZXIucmVzdWx0cy5wdXNoKCJTZXQgdGltZXIgZm9yIHRlc3QgZnVuY3Rpb24uIik7Ci0gICAgICAg
IH0pOworICAgICAgICBJbnNwZWN0b3JUZXN0LnJ1blRlc3RGdW5jdGlvbkFuZFdhaXRVbnRpbFBh
dXNlZChzdGVwMik7CiAgICAgfQogCi0gICAgZnJvbnRlbmRfYWRkU25pZmZlcihXZWJJbnNwZWN0
b3IsICJwYXVzZWRTY3JpcHQiLCBmdW5jdGlvbihjYWxsRnJhbWVzKQorICAgIGZ1bmN0aW9uIHN0
ZXAyKCkKICAgICB7Ci0gICAgICAgIHRlc3RDb250cm9sbGVyLnJlc3VsdHMucHVzaCgiU2NyaXB0
IGV4ZWN1dGlvbiBwYXVzZWQuIik7Ci0gICAgICAgIGZyb250ZW5kX2NvbXBsZXRlRGVidWdnZXJU
ZXN0KHRlc3RDb250cm9sbGVyKTsKLSAgICB9KTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21w
bGV0ZURlYnVnZ2VyVGVzdCgpOworICAgIH0KIH0KIAogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItZXZhbC13aGlsZS1wYXVzZWQtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLWV2YWwtd2hpbGUtcGF1c2VkLWV4
cGVjdGVkLnR4dAppbmRleCAyZDgzNzFjLi44ZjRkZDMwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZGVidWdnZXItZXZhbC13aGlsZS1wYXVzZWQtZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1ldmFsLXdoaWxlLXBhdXNlZC1leHBlY3Rl
ZC50eHQKQEAgLTUsNiArNSw2IEBAIFNldCB0aW1lciBmb3IgdGVzdCBmdW5jdGlvbi4KIFNjcmlw
dCBleGVjdXRpb24gcGF1c2VkLgogRXZhbHVhdGVkIHNjcmlwdCBvbiB0aGUgdG9wIGZyYW1lOiA0
MDIxCiBFdmFsdWF0ZWQgc2NyaXB0IG9uIHRoZSBjYWxsaW5nIGZyYW1lOiAzMDEKLVJlc3VtZWQg
c2NyaXB0IGV4ZWN1dGlvbi4KLURpc2FibGVkIGRlYnVnZ2VyLgorU2NyaXB0IGV4ZWN1dGlvbiBy
ZXN1bWVkLgorRGVidWdnZXIgd2FzIGRpc2FibGVkLgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZGVidWdnZXItZXZhbC13aGlsZS1wYXVzZWQuaHRtbCBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9kZWJ1Z2dlci1ldmFsLXdoaWxlLXBhdXNlZC5odG1sCmluZGV4IDE1YjIwYTgu
LjQxYzA3Y2IgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1ldmFs
LXdoaWxlLXBhdXNlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1l
dmFsLXdoaWxlLXBhdXNlZC5odG1sCkBAIC0xLDYyICsxLDU0IEBACiA8aHRtbD4KIDxoZWFkPgot
PHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci10
ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9p
bnNwZWN0b3ItdGVzdDIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL2RlYnVnZ2VyLXRlc3QyLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+CiAKIHZhciBn
bG9iYWxWYXIgPSB7IGI6IDEgfTsKIAotZnVuY3Rpb24gc2xhdmUoeCkgeworZnVuY3Rpb24gc2xh
dmUoeCkKK3sKICAgICB2YXIgeSA9IDIwOwogICAgIGRlYnVnZ2VyOwotICAgIG5vdGlmeURvbmUo
KTsKIH0KIAotZnVuY3Rpb24gdGVzdEZ1bmN0aW9uKCkgewotICAgIHZhciBsb2NhbE9iamVjdCA9
IHthOiAzMDB9OworZnVuY3Rpb24gdGVzdEZ1bmN0aW9uKCkKK3sKKyAgICB2YXIgbG9jYWxPYmpl
Y3QgPSB7IGE6IDMwMCB9OwogICAgIHNsYXZlKDQwMDApOwogfQogCi1mdW5jdGlvbiBkb2l0KCkK
K3ZhciB0ZXN0ID0gZnVuY3Rpb24oKQogewotICAgIGV2YWx1YXRlSW5XZWJJbnNwZWN0b3IoImZy
b250ZW5kX3Rlc3RQYXVzZU9uRGVidWdnZXJTdGF0ZW1lbnQiLCBkdW1wQXJyYXkpOwotfQorICAg
IEluc3BlY3RvclRlc3Quc3RhcnREZWJ1Z2dlclRlc3Qoc3RlcDEpOwogCi1mdW5jdGlvbiBmcm9u
dGVuZF90ZXN0UGF1c2VPbkRlYnVnZ2VyU3RhdGVtZW50KHRlc3RDb250cm9sbGVyKQotewotICAg
IHRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBmdW5jdGlvbiBzdGVwMSgpCisg
ICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0LnJ1blRlc3RGdW5jdGlvbkFuZFdhaXRVbnRpbFBh
dXNlZChzdGVwMik7CisgICAgfQogCi0gICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCgic2NyaXB0
cyIpOwotICAgIGZyb250ZW5kX2Vuc3VyZURlYnVnZ2VyRW5hYmxlZChkZWJ1Z2dlcldhc0VuYWJs
ZWRDYWxsYmFjayk7CisgICAgZnVuY3Rpb24gc3RlcDIoY2FsbEZyYW1lcykKKyAgICB7CisgICAg
ICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJbkNvbnNvbGUoInggKyB5ICsgZ2xvYmFsVmFyLmIi
LCBzdGVwMy5iaW5kKG51bGwsIGNhbGxGcmFtZXMpKTsKKyAgICB9CiAKLSAgICBmdW5jdGlvbiBk
ZWJ1Z2dlcldhc0VuYWJsZWRDYWxsYmFjaygpCisgICAgZnVuY3Rpb24gc3RlcDMoY2FsbEZyYW1l
cywgcmVzdWx0KQogICAgIHsKLSAgICAgICAgdGVzdENvbnRyb2xsZXIucmVzdWx0cy5wdXNoKCJE
ZWJ1Z2dlciB3YXMgZW5hYmxlZC4iKTsKLSAgICAgICAgZnJvbnRlbmRfZXZhbHVhdGVJbkNvbnNv
bGUoInNldFRpbWVvdXQodGVzdEZ1bmN0aW9uLCAwKSIsIGZ1bmN0aW9uKHJlc3VsdCkKLSAgICAg
ICAgewotICAgICAgICAgICAgdGVzdENvbnRyb2xsZXIucmVzdWx0cy5wdXNoKCJTZXQgdGltZXIg
Zm9yIHRlc3QgZnVuY3Rpb24uIik7Ci0gICAgICAgIH0pOworICAgICAgICBJbnNwZWN0b3JUZXN0
LmFkZFJlc3VsdCgiRXZhbHVhdGVkIHNjcmlwdCBvbiB0aGUgdG9wIGZyYW1lOiAiICsgcmVzdWx0
KTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5zY3JpcHRzLnNpZGViYXJQYW5lcy5jYWxs
c3RhY2suc2VsZWN0ZWRDYWxsRnJhbWUgPSBjYWxsRnJhbWVzWzFdOworICAgICAgICBJbnNwZWN0
b3JUZXN0LnJ1bkFmdGVyUGVuZGluZ0Rpc3BhdGNoZXMoc3RlcDQpOwogICAgIH0KIAotICAgIGZy
b250ZW5kX2FkZFNuaWZmZXIoV2ViSW5zcGVjdG9yLCAicGF1c2VkU2NyaXB0IiwgZnVuY3Rpb24o
Y2FsbEZyYW1lcykKKyAgICBmdW5jdGlvbiBzdGVwNCgpCiAgICAgewotICAgICAgICB0ZXN0Q29u
dHJvbGxlci5yZXN1bHRzLnB1c2goIlNjcmlwdCBleGVjdXRpb24gcGF1c2VkLiIpOwotICAgICAg
ICBmcm9udGVuZF9ldmFsdWF0ZUluQ29uc29sZSgieCArIHkgKyBnbG9iYWxWYXIuYiIsIGZ1bmN0
aW9uKHJlc3VsdCkKLSAgICAgICAgewotICAgICAgICAgICAgdGVzdENvbnRyb2xsZXIucmVzdWx0
cy5wdXNoKCJFdmFsdWF0ZWQgc2NyaXB0IG9uIHRoZSB0b3AgZnJhbWU6ICIgKyByZXN1bHQpOwot
ICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5zY3JpcHRzLnNpZGViYXJQYW5lcy5jYWxs
c3RhY2suc2VsZWN0ZWRDYWxsRnJhbWUgPSBjYWxsRnJhbWVzWzFdOwotICAgICAgICAgICAgdGVz
dENvbnRyb2xsZXIucnVuQWZ0ZXJQZW5kaW5nRGlzcGF0Y2hlcyh0ZXN0RXZhbEluQ2FsbGluZ0Zy
YW1lKTsKLSAgICAgICAgfSk7CisgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJbkNvbnNv
bGUoImxvY2FsT2JqZWN0LmEgKyBnbG9iYWxWYXIuYiIsIHN0ZXA1KTsKKyAgICB9CiAKLSAgICAg
ICAgZnVuY3Rpb24gdGVzdEV2YWxJbkNhbGxpbmdGcmFtZSgpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIGZyb250ZW5kX2V2YWx1YXRlSW5Db25zb2xlKCJsb2NhbE9iamVjdC5hICsgZ2xvYmFsVmFy
LmIiLCBmdW5jdGlvbihyZXN1bHQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdGVz
dENvbnRyb2xsZXIucmVzdWx0cy5wdXNoKCJFdmFsdWF0ZWQgc2NyaXB0IG9uIHRoZSBjYWxsaW5n
IGZyYW1lOiAiICsgcmVzdWx0KTsKLSAgICAgICAgICAgICAgICBmcm9udGVuZF9jb21wbGV0ZURl
YnVnZ2VyVGVzdCh0ZXN0Q29udHJvbGxlcik7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfQot
ICAgIH0pOworICAgIGZ1bmN0aW9uIHN0ZXA1KHJlc3VsdCkKKyAgICB7CisgICAgICAgIEluc3Bl
Y3RvclRlc3QuYWRkUmVzdWx0KCJFdmFsdWF0ZWQgc2NyaXB0IG9uIHRoZSBjYWxsaW5nIGZyYW1l
OiAiICsgcmVzdWx0KTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZURlYnVnZ2VyVGVz
dCgpOworICAgIH0KIH0KIAogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZGVidWdnZXItbm8tbmVzdGVkLXBhdXNlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9kZWJ1Z2dlci1uby1uZXN0ZWQtcGF1c2UtZXhwZWN0ZWQudHh0CmluZGV4IDBh
NjJmYTAuLjIzYjQ4ZjcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dl
ci1uby1uZXN0ZWQtcGF1c2UtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9kZWJ1Z2dlci1uby1uZXN0ZWQtcGF1c2UtZXhwZWN0ZWQudHh0CkBAIC01LDYgKzUsNiBAQCBT
ZXQgdGltZXIgZm9yIHRlc3QgZnVuY3Rpb24uCiBTY3JpcHQgZXhlY3V0aW9uIHBhdXNlZC4KIFNl
dCB0aW1lciBmb3IgdGVzdCBmdW5jdGlvbi4KIHRlc3RGdW5jdGlvbi5pbnZvY2F0aW9uQ291bnQg
PSAyCi1SZXN1bWVkIHNjcmlwdCBleGVjdXRpb24uCi1EaXNhYmxlZCBkZWJ1Z2dlci4KK1Njcmlw
dCBleGVjdXRpb24gcmVzdW1lZC4KK0RlYnVnZ2VyIHdhcyBkaXNhYmxlZC4KIApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLW5vLW5lc3RlZC1wYXVzZS5odG1sIGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLW5vLW5lc3RlZC1wYXVzZS5odG1sCmluZGV4
IGRmOGM1ZTYuLjA1NDI1YzAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1
Z2dlci1uby1uZXN0ZWQtcGF1c2UuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVi
dWdnZXItbm8tbmVzdGVkLXBhdXNlLmh0bWwKQEAgLTEsNTggKzEsMzcgQEAKIDxodG1sPgogPGhl
YWQ+Ci08c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3Qu
anMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2RlYnVn
Z2VyLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL2luc3BlY3Rvci10ZXN0Mi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vaHR0cC90
ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItdGVzdDIuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KIAog
ZnVuY3Rpb24gdGVzdEZ1bmN0aW9uKCkKIHsKICAgICB0ZXN0RnVuY3Rpb24uaW52b2NhdGlvbkNv
dW50Kys7CiAgICAgZGVidWdnZXI7Ci0gICAgaWYgKHRlc3RGdW5jdGlvbi5kaWRFeGl0RnJvbU5l
c3RlZENhbGwpCi0gICAgICAgIG5vdGlmeURvbmUoKTsKLSAgICB0ZXN0RnVuY3Rpb24uZGlkRXhp
dEZyb21OZXN0ZWRDYWxsID0gdHJ1ZTsKIH0KLXRlc3RGdW5jdGlvbi5pbnZvY2F0aW9uQ291bnQg
PSAwOwogCi1mdW5jdGlvbiBkb2l0KCkKLXsKLSAgICBldmFsdWF0ZUluV2ViSW5zcGVjdG9yKCJm
cm9udGVuZF90ZXN0Tm9OZXN0ZWRQYXVzZSIsIGR1bXBBcnJheSk7Ci19Cit0ZXN0RnVuY3Rpb24u
aW52b2NhdGlvbkNvdW50ID0gMDsKIAotZnVuY3Rpb24gZnJvbnRlbmRfdGVzdE5vTmVzdGVkUGF1
c2UodGVzdENvbnRyb2xsZXIpCit2YXIgdGVzdCA9IGZ1bmN0aW9uKCkKIHsKLSAgICB0ZXN0Q29u
dHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgSW5zcGVjdG9yVGVzdC5zdGFydERlYnVnZ2Vy
VGVzdChzdGVwMSk7CiAKLSAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJzY3JpcHRzIik7Ci0g
ICAgZnJvbnRlbmRfZW5zdXJlRGVidWdnZXJFbmFibGVkKGRlYnVnZ2VyV2FzRW5hYmxlZENhbGxi
YWNrKTsKLQotICAgIGZ1bmN0aW9uIGRlYnVnZ2VyV2FzRW5hYmxlZENhbGxiYWNrKCkKKyAgICBm
dW5jdGlvbiBzdGVwMSgpCiAgICAgewotICAgICAgICB0ZXN0Q29udHJvbGxlci5yZXN1bHRzLnB1
c2goIkRlYnVnZ2VyIHdhcyBlbmFibGVkLiIpOwotICAgICAgICBmcm9udGVuZF9ldmFsdWF0ZUlu
Q29uc29sZSgic2V0VGltZW91dCh0ZXN0RnVuY3Rpb24sIDApIiwgZnVuY3Rpb24ocmVzdWx0KQot
ICAgICAgICB7Ci0gICAgICAgICAgICB0ZXN0Q29udHJvbGxlci5yZXN1bHRzLnB1c2goIlNldCB0
aW1lciBmb3IgdGVzdCBmdW5jdGlvbi4iKTsKLSAgICAgICAgfSk7CisgICAgICAgIEluc3BlY3Rv
clRlc3QucnVuVGVzdEZ1bmN0aW9uQW5kV2FpdFVudGlsUGF1c2VkKHN0ZXAyKTsKICAgICB9CiAK
LSAgICB2YXIgcGF1c2VkID0gZmFsc2U7Ci0gICAgZnJvbnRlbmRfYWRkU25pZmZlcihXZWJJbnNw
ZWN0b3IsICJwYXVzZWRTY3JpcHQiLCBmdW5jdGlvbihjYWxsRnJhbWVzKQorICAgIGZ1bmN0aW9u
IHN0ZXAyKCkKICAgICB7Ci0gICAgICAgIGlmIChwYXVzZWQpIHsKLSAgICAgICAgICAgIHRlc3RD
b250cm9sbGVyLnJlc3VsdHMucHVzaCgiU2NyaXB0IGV4ZWN1dGlvbiBwYXVzZWQgc2Vjb25kIHRp
bWUuIik7Ci0gICAgICAgICAgICB0ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgcGF1c2VkID0gdHJ1ZTsKLSAgICAgICAg
dGVzdENvbnRyb2xsZXIucmVzdWx0cy5wdXNoKCJTY3JpcHQgZXhlY3V0aW9uIHBhdXNlZC4iKTsK
KyAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluQ29uc29sZSgidGVzdEZ1bmN0aW9uKCk7
IHRlc3RGdW5jdGlvbi5pbnZvY2F0aW9uQ291bnQiLCBzdGVwMyk7CisgICAgICAgIEluc3BlY3Rv
clRlc3QuYWRkUmVzdWx0KCJTZXQgdGltZXIgZm9yIHRlc3QgZnVuY3Rpb24uIik7CisgICAgfQog
Ci0gICAgICAgIHRlc3RDb250cm9sbGVyLnJlc3VsdHMucHVzaCgiU2V0IHRpbWVyIGZvciB0ZXN0
IGZ1bmN0aW9uLiIpOwotICAgICAgICBmcm9udGVuZF9ldmFsdWF0ZUluQ29uc29sZSgidGVzdEZ1
bmN0aW9uKCk7IHRlc3RGdW5jdGlvbi5pbnZvY2F0aW9uQ291bnQiLCBmdW5jdGlvbihyZXN1bHQp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHRlc3RDb250cm9sbGVyLnJlc3VsdHMucHVzaCgidGVz
dEZ1bmN0aW9uLmludm9jYXRpb25Db3VudCA9ICIgKyByZXN1bHQpOwotICAgICAgICAgICAgZnJv
bnRlbmRfY29tcGxldGVEZWJ1Z2dlclRlc3QodGVzdENvbnRyb2xsZXIpOwotICAgICAgICB9KTsK
LSAgICB9KTsKKyAgICBmdW5jdGlvbiBzdGVwMyhyZXN1bHQpCisgICAgeworICAgICAgICBJbnNw
ZWN0b3JUZXN0LmFkZFJlc3VsdCgidGVzdEZ1bmN0aW9uLmludm9jYXRpb25Db3VudCA9ICIgKyBy
ZXN1bHQpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlRGVidWdnZXJUZXN0KCk7Cisg
ICAgfQogfQogCiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9k
ZWJ1Z2dlci1wYXVzZS1pbi1ldmFsLXNjcmlwdC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZGVidWdnZXItcGF1c2UtaW4tZXZhbC1zY3JpcHQtZXhwZWN0ZWQudHh0CmluZGV4
IDU4NTMwZmMuLmY2ZGQ0NzkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1
Z2dlci1wYXVzZS1pbi1ldmFsLXNjcmlwdC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2RlYnVnZ2VyLXBhdXNlLWluLWV2YWwtc2NyaXB0LWV4cGVjdGVkLnR4dApAQCAt
NSw2ICs1LDYgQEAgRXZhbHVhdGVkIHNjcmlwdCBpbiBjb25zb2xlLgogU2NyaXB0IGV4ZWN1dGlv
biBwYXVzZWQuCiBFeGVjdXRpb24gbGluZSBudW1iZXI6IDMKIEV4ZWN1dGlvbiBsaW5lIHRleHQ6
ICAgICBkZWJ1Z2dlcjsKLVJlc3VtZWQgc2NyaXB0IGV4ZWN1dGlvbi4KLURpc2FibGVkIGRlYnVn
Z2VyLgorU2NyaXB0IGV4ZWN1dGlvbiByZXN1bWVkLgorRGVidWdnZXIgd2FzIGRpc2FibGVkLgog
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItcGF1c2UtaW4tZXZh
bC1zY3JpcHQuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1wYXVzZS1pbi1l
dmFsLXNjcmlwdC5odG1sCmluZGV4IGM2NTVhYjYuLmMyOGVhZjUgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1wYXVzZS1pbi1ldmFsLXNjcmlwdC5odG1sCisrKyBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1wYXVzZS1pbi1ldmFsLXNjcmlwdC5odG1s
CkBAIC0xLDU2ICsxLDM1IEBACiA8aHRtbD4KIDxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3Jj
PSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci10ZXN0LmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdDIuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXRl
c3QyLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+CiAKLWZ1bmN0aW9uIGRvaXQoKQotewotICAgIGV2
YWx1YXRlSW5XZWJJbnNwZWN0b3IoImZyb250ZW5kX3Rlc3RQYXVzZU9uRGVidWdnZXJTdGF0ZW1l
bnQiLCBkdW1wQXJyYXkpOwotfQogCi1mdW5jdGlvbiBmcm9udGVuZF90ZXN0UGF1c2VPbkRlYnVn
Z2VyU3RhdGVtZW50KHRlc3RDb250cm9sbGVyKQordmFyIHRlc3QgPSBmdW5jdGlvbigpCiB7Ci0g
ICAgdGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotCi0gICAgV2ViSW5zcGVjdG9yLnNo
b3dQYW5lbCgic2NyaXB0cyIpOwotCiAgICAgdmFyIHNjcmlwdFRvRXZhbHVhdGUgPSAiZnVuY3Rp
b24gdGVzdEZ1bmN0aW9uKCkge1xuIiArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAg
IGRlYnVnZ2VyO1xuIiArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIG5vdGlmeURv
bmUoKTtcbiIgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIn1cbiIgKwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgInNldFRpbWVvdXQodGVzdEZ1bmN0aW9uLCAwKTtcbiI7Ci0gICAg
ZnVuY3Rpb24gZGVidWdnZXJXYXNFbmFibGVkQ2FsbGJhY2soKQotICAgIHsKLSAgICAgICAgdGVz
dENvbnRyb2xsZXIucmVzdWx0cy5wdXNoKCJEZWJ1Z2dlciB3YXMgZW5hYmxlZC4iKTsKIAotICAg
ICAgICBmcm9udGVuZF9ldmFsdWF0ZUluQ29uc29sZShzY3JpcHRUb0V2YWx1YXRlLAotICAgICAg
ICBmdW5jdGlvbihyZXN1bHQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRlc3RDb250cm9sbGVy
LnJlc3VsdHMucHVzaCgiRXZhbHVhdGVkIHNjcmlwdCBpbiBjb25zb2xlLiIpOwotICAgICAgICB9
KTsKLSAgICB9CisgICAgSW5zcGVjdG9yVGVzdC5zdGFydERlYnVnZ2VyVGVzdChzdGVwMSk7CiAK
LSAgICBmcm9udGVuZF9lbnN1cmVEZWJ1Z2dlckVuYWJsZWQoZGVidWdnZXJXYXNFbmFibGVkQ2Fs
bGJhY2spOworICAgIGZ1bmN0aW9uIHN0ZXAxKCkKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRl
c3QuZXZhbHVhdGVJbkNvbnNvbGUoc2NyaXB0VG9FdmFsdWF0ZSwgSW5zcGVjdG9yVGVzdC5hZGRS
ZXN1bHQuYmluZChJbnNwZWN0b3JUZXN0LCAiRXZhbHVhdGVkIHNjcmlwdCBpbiBjb25zb2xlLiIp
KTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC53YWl0VW50aWxQYXVzZWQoc3RlcDIpOworICAgIH0K
IAotICAgIGZyb250ZW5kX2FkZFNuaWZmZXIoV2ViSW5zcGVjdG9yLCAicGF1c2VkU2NyaXB0Iiwg
ZnVuY3Rpb24oY2FsbEZyYW1lcykKKyAgICBmdW5jdGlvbiBzdGVwMigpCiAgICAgewotICAgICAg
ICB0ZXN0Q29udHJvbGxlci5yZXN1bHRzLnB1c2goIlNjcmlwdCBleGVjdXRpb24gcGF1c2VkLiIp
OwotICAgICAgICBmcm9udGVuZF9jaGVja0V4ZWN1dGlvbkxpbmVXaGVuU291cmNlRnJhbWVJc0xv
YWRlZCh0ZXN0Q29udHJvbGxlciwgZnJvbnRlbmRfY29tcGxldGVEZWJ1Z2dlclRlc3QuYmluZChu
dWxsLCB0ZXN0Q29udHJvbGxlcikpOwotICAgIH0pOwotfQorICAgICAgICBJbnNwZWN0b3JUZXN0
LndhaXRVbnRpbEN1cnJlbnRTb3VyY2VGcmFtZUlzTG9hZGVkKHN0ZXAzKTsKKyAgICB9CiAKLWZ1
bmN0aW9uIGZyb250ZW5kX2NoZWNrRXhlY3V0aW9uTGluZVdoZW5Tb3VyY2VGcmFtZUlzTG9hZGVk
KHRlc3RDb250cm9sbGVyLCBjYWxsYmFjaykKLXsKLSAgICB2YXIgc291cmNlRnJhbWUgPSBXZWJJ
bnNwZWN0b3IuY3VycmVudFBhbmVsLnZpc2libGVWaWV3LnNvdXJjZUZyYW1lOwotICAgIGlmIChz
b3VyY2VGcmFtZS5fbG9hZGVkKSB7Ci0gICAgICAgIHRlc3RDb250cm9sbGVyLnJlc3VsdHMucHVz
aCgiRXhlY3V0aW9uIGxpbmUgbnVtYmVyOiAiICsgc291cmNlRnJhbWUuZXhlY3V0aW9uTGluZSk7
Ci0gICAgICAgIHRlc3RDb250cm9sbGVyLnJlc3VsdHMucHVzaCgiRXhlY3V0aW9uIGxpbmUgdGV4
dDogIiArIHNvdXJjZUZyYW1lLl90ZXh0TW9kZWwubGluZShzb3VyY2VGcmFtZS5leGVjdXRpb25M
aW5lIC0gMSkpOwotICAgICAgICBjYWxsYmFjaygpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGZy
b250ZW5kX2FkZFNuaWZmZXIoc291cmNlRnJhbWUsICJzZXRDb250ZW50IiwgZnVuY3Rpb24oKSB7
Ci0gICAgICAgICAgICBmcm9udGVuZF9jaGVja0V4ZWN1dGlvbkxpbmVXaGVuU291cmNlRnJhbWVJ
c0xvYWRlZCh0ZXN0Q29udHJvbGxlciwgY2FsbGJhY2spOwotICAgICAgICB9KTsKKyAgICBmdW5j
dGlvbiBzdGVwMyhzb3VyY2VGcmFtZSkKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRk
UmVzdWx0KCJFeGVjdXRpb24gbGluZSBudW1iZXI6ICIgKyBzb3VyY2VGcmFtZS5leGVjdXRpb25M
aW5lKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIkV4ZWN1dGlvbiBsaW5lIHRl
eHQ6ICIgKyBzb3VyY2VGcmFtZS5fdGV4dE1vZGVsLmxpbmUoc291cmNlRnJhbWUuZXhlY3V0aW9u
TGluZSAtIDEpKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZURlYnVnZ2VyVGVzdCgp
OwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2Vy
LXBhdXNlLW9uLWRlYnVnZ2VyLXN0YXRlbWVudC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZGVidWdnZXItcGF1c2Utb24tZGVidWdnZXItc3RhdGVtZW50LWV4cGVjdGVkLnR4
dAppbmRleCAzOWVhZjBjLi5kNzhlZTdiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZGVidWdnZXItcGF1c2Utb24tZGVidWdnZXItc3RhdGVtZW50LWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItcGF1c2Utb24tZGVidWdnZXItc3RhdGVt
ZW50LWV4cGVjdGVkLnR4dApAQCAtMyw2ICszLDYgQEAgVGVzdHMgdGhhdCBkZWJ1Z2dlciB3aWxs
IHN0b3Agb24gImRlYnVnZ2VyIiBzdGF0ZW1lbnQuCiBEZWJ1Z2dlciB3YXMgZW5hYmxlZC4KIFNl
dCB0aW1lciBmb3IgdGVzdCBmdW5jdGlvbi4KIFNjcmlwdCBleGVjdXRpb24gcGF1c2VkLgotUmVz
dW1lZCBzY3JpcHQgZXhlY3V0aW9uLgotRGlzYWJsZWQgZGVidWdnZXIuCitTY3JpcHQgZXhlY3V0
aW9uIHJlc3VtZWQuCitEZWJ1Z2dlciB3YXMgZGlzYWJsZWQuCiAKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1wYXVzZS1vbi1kZWJ1Z2dlci1zdGF0ZW1lbnQuaHRt
bCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1wYXVzZS1vbi1kZWJ1Z2dlci1zdGF0
ZW1lbnQuaHRtbAppbmRleCA3NDE5NmNhLi4yNDY4MWI1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZGVidWdnZXItcGF1c2Utb24tZGVidWdnZXItc3RhdGVtZW50Lmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXBhdXNlLW9uLWRlYnVnZ2VyLXN0YXRl
bWVudC5odG1sCkBAIC0xLDQwICsxLDI3IEBACiA8aHRtbD4KIDxoZWFkPgotPHNjcmlwdCBzcmM9
Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci10ZXN0LmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVz
dDIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2Rl
YnVnZ2VyLXRlc3QyLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+CiAKLWZ1bmN0aW9uIHRlc3RGdW5j
dGlvbigpIHsKLSAgICBkZWJ1Z2dlcjsKLSAgICBub3RpZnlEb25lKCk7Ci19Ci0KLWZ1bmN0aW9u
IGRvaXQoKQorZnVuY3Rpb24gdGVzdEZ1bmN0aW9uKCkKIHsKLSAgICBldmFsdWF0ZUluV2ViSW5z
cGVjdG9yKCJmcm9udGVuZF90ZXN0UGF1c2VPbkRlYnVnZ2VyU3RhdGVtZW50IiwgZHVtcEFycmF5
KTsKKyAgICBkZWJ1Z2dlcjsKIH0KIAotZnVuY3Rpb24gZnJvbnRlbmRfdGVzdFBhdXNlT25EZWJ1
Z2dlclN0YXRlbWVudCh0ZXN0Q29udHJvbGxlcikKK3ZhciB0ZXN0ID0gZnVuY3Rpb24oKQogewot
ICAgIHRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLQotICAgIFdlYkluc3BlY3Rvci5z
aG93UGFuZWwoInNjcmlwdHMiKTsKLSAgICBmcm9udGVuZF9lbnN1cmVEZWJ1Z2dlckVuYWJsZWQo
ZGVidWdnZXJXYXNFbmFibGVkQ2FsbGJhY2spOworICAgIEluc3BlY3RvclRlc3Quc3RhcnREZWJ1
Z2dlclRlc3Qoc3RlcDEpOwogCi0gICAgZnVuY3Rpb24gZGVidWdnZXJXYXNFbmFibGVkQ2FsbGJh
Y2soKQorICAgIGZ1bmN0aW9uIHN0ZXAxKCkKICAgICB7Ci0gICAgICAgIHRlc3RDb250cm9sbGVy
LnJlc3VsdHMucHVzaCgiRGVidWdnZXIgd2FzIGVuYWJsZWQuIik7Ci0gICAgICAgIGZyb250ZW5k
X2V2YWx1YXRlSW5Db25zb2xlKCJzZXRUaW1lb3V0KHRlc3RGdW5jdGlvbiwgMCkiLCBmdW5jdGlv
bihyZXN1bHQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRlc3RDb250cm9sbGVyLnJlc3VsdHMu
cHVzaCgiU2V0IHRpbWVyIGZvciB0ZXN0IGZ1bmN0aW9uLiIpOwotICAgICAgICB9KTsKKyAgICAg
ICAgSW5zcGVjdG9yVGVzdC5ydW5UZXN0RnVuY3Rpb25BbmRXYWl0VW50aWxQYXVzZWQoc3RlcDIp
OwogICAgIH0KIAotICAgIGZyb250ZW5kX2FkZFNuaWZmZXIoV2ViSW5zcGVjdG9yLCAicGF1c2Vk
U2NyaXB0IiwgZnVuY3Rpb24oY2FsbEZyYW1lcykKKyAgICBmdW5jdGlvbiBzdGVwMigpCiAgICAg
ewotICAgICAgICB0ZXN0Q29udHJvbGxlci5yZXN1bHRzLnB1c2goIlNjcmlwdCBleGVjdXRpb24g
cGF1c2VkLiIpOwotICAgICAgICBmcm9udGVuZF9jb21wbGV0ZURlYnVnZ2VyVGVzdCh0ZXN0Q29u
dHJvbGxlcik7Ci0gICAgfSk7CisgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVEZWJ1Z2dl
clRlc3QoKTsKKyAgICB9CiB9CiAKIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2RlYnVnZ2VyLXByb3RvLXByb3BlcnR5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1wcm90by1wcm9wZXJ0eS1leHBlY3RlZC50eHQKaW5kZXgg
Y2YyZWNhYS4uMDAxOTZjOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVn
Z2VyLXByb3RvLXByb3BlcnR5LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZGVidWdnZXItcHJvdG8tcHJvcGVydHktZXhwZWN0ZWQudHh0CkBAIC01LDYgKzUsNiBAQCBT
ZXQgdGltZXIgZm9yIHRlc3QgZnVuY3Rpb24uCiBTY3JpcHQgZXhlY3V0aW9uIHBhdXNlZC4KIEV4
cGFuZGVkIHByb3BlcnR5OiBvLl9fcHJvdG9fXy5fX3Byb3RvX18KIEV4cGFuZGVkIHByb3BlcnR5
OiBkLl9fcHJvdG9fXy5fX3Byb3RvX18uX19wcm90b19fLl9fcHJvdG9fXy5fX3Byb3RvX18KLVJl
c3VtZWQgc2NyaXB0IGV4ZWN1dGlvbi4KLURpc2FibGVkIGRlYnVnZ2VyLgorU2NyaXB0IGV4ZWN1
dGlvbiByZXN1bWVkLgorRGVidWdnZXIgd2FzIGRpc2FibGVkLgogCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItcHJvdG8tcHJvcGVydHkuaHRtbCBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1wcm90by1wcm9wZXJ0eS5odG1sCmluZGV4IDUxYTc0NjYu
LjgwYTcwYWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1wcm90
by1wcm9wZXJ0eS5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1wcm90
by1wcm9wZXJ0eS5odG1sCkBAIC0xLDEwMSArMSw0NyBAQAogPGh0bWw+CiA8aGVhZD4KLTxzY3Jp
cHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItdGVzdC5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVj
dG9yLXRlc3QyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9kZWJ1Z2dlci10ZXN0Mi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogCi1mdW5jdGlvbiBD
KCkgeworZnVuY3Rpb24gQygpCit7CiB9CisKIEMucHJvdG90eXBlID0gewogICAgIG06IGZ1bmN0
aW9uKCkgeyB9CiB9CiAKLWZ1bmN0aW9uIHRlc3RGdW5jdGlvbigpIHsKK2Z1bmN0aW9uIHRlc3RG
dW5jdGlvbigpCit7CiAgICAgdmFyIG8gPSBuZXcgQygpOwogICAgIHZhciBkID0gZG9jdW1lbnQu
ZG9jdW1lbnRFbGVtZW50OwogICAgIGRlYnVnZ2VyOwotICAgIG5vdGlmeURvbmUoKTsKIH0KIAot
ZnVuY3Rpb24gZG9pdCgpCit2YXIgdGVzdCA9IGZ1bmN0aW9uKCkKIHsKLSAgICBldmFsdWF0ZUlu
V2ViSW5zcGVjdG9yKCJmcm9udGVuZF90ZXN0UHJvdG9Qcm9wZXJ0eU9uUGF1c2UiLCBkdW1wQXJy
YXkpOwotfQorICAgIEluc3BlY3RvclRlc3Quc3RhcnREZWJ1Z2dlclRlc3Qoc3RlcDEpOwogCi1m
dW5jdGlvbiBmcm9udGVuZF90ZXN0UHJvdG9Qcm9wZXJ0eU9uUGF1c2UodGVzdENvbnRyb2xsZXIp
Ci17Ci0gICAgdGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotCi0gICAgV2ViSW5zcGVj
dG9yLnNob3dQYW5lbCgic2NyaXB0cyIpOwotICAgIGZyb250ZW5kX2Vuc3VyZURlYnVnZ2VyRW5h
YmxlZChkZWJ1Z2dlcldhc0VuYWJsZWRDYWxsYmFjayk7Ci0KLSAgICBmdW5jdGlvbiBkZWJ1Z2dl
cldhc0VuYWJsZWRDYWxsYmFjaygpCisgICAgZnVuY3Rpb24gc3RlcDEoKQogICAgIHsKLSAgICAg
ICAgdGVzdENvbnRyb2xsZXIucmVzdWx0cy5wdXNoKCJEZWJ1Z2dlciB3YXMgZW5hYmxlZC4iKTsK
LSAgICAgICAgZnJvbnRlbmRfZXZhbHVhdGVJbkNvbnNvbGUoInNldFRpbWVvdXQodGVzdEZ1bmN0
aW9uLCAwKSIsIGZ1bmN0aW9uKHJlc3VsdCkKLSAgICAgICAgewotICAgICAgICAgICAgdGVzdENv
bnRyb2xsZXIucmVzdWx0cy5wdXNoKCJTZXQgdGltZXIgZm9yIHRlc3QgZnVuY3Rpb24uIik7Ci0g
ICAgICAgIH0pOworICAgICAgICBJbnNwZWN0b3JUZXN0LnJ1blRlc3RGdW5jdGlvbkFuZFdhaXRV
bnRpbFBhdXNlZChzdGVwMik7CiAgICAgfQogCi0gICAgZnJvbnRlbmRfYWRkU25pZmZlcihXZWJJ
bnNwZWN0b3IsICJwYXVzZWRTY3JpcHQiLCBmdW5jdGlvbihjYWxsRnJhbWVzKQorICAgIGZ1bmN0
aW9uIHN0ZXAyKGNhbGxGcmFtZXMpCiAgICAgewotICAgICAgICB0ZXN0Q29udHJvbGxlci5yZXN1
bHRzLnB1c2goIlNjcmlwdCBleGVjdXRpb24gcGF1c2VkLiIpOwogICAgICAgICB2YXIgc2VjdGlv
bnMgPSBXZWJJbnNwZWN0b3IuY3VycmVudFBhbmVsLnNpZGViYXJQYW5lcy5zY29wZWNoYWluLnNl
Y3Rpb25zOwogICAgICAgICB2YXIgbG9jYWxTY29wZSA9IHNlY3Rpb25zWzBdLnByb3BlcnRpZXNU
cmVlT3V0bGluZTsKICAgICAgICAgdmFyIHByb3BlcnRpZXMgPSBbCiAgICAgICAgICAgICBsb2Nh
bFNjb3BlLCBbIm8iLCAiX19wcm90b19fIiwgIl9fcHJvdG9fXyJdLAogICAgICAgICAgICAgbG9j
YWxTY29wZSwgWyJkIiwgIl9fcHJvdG9fXyIsICJfX3Byb3RvX18iLCAiX19wcm90b19fIiwgIl9f
cHJvdG9fXyIsICJfX3Byb3RvX18iXQogICAgICAgICBdOwotICAgICAgICBmcm9udGVuZF9leHBh
bmRQcm9wZXJ0aWVzKHRlc3RDb250cm9sbGVyLCBwcm9wZXJ0aWVzLCBmcm9udGVuZF9jb21wbGV0
ZURlYnVnZ2VyVGVzdC5iaW5kKG51bGwsIHRlc3RDb250cm9sbGVyKSk7Ci0gICAgfSk7Ci19Ci0K
LWZ1bmN0aW9uIGZyb250ZW5kX2V4cGFuZFByb3BlcnRpZXModGVzdENvbnRyb2xsZXIsIHByb3Bl
cnRpZXMsIGNhbGxiYWNrKQotewotICAgIHZhciBpbmRleCA9IDA7Ci0gICAgZnVuY3Rpb24gZXhw
YW5kTmV4dFBhdGgoKQotICAgIHsKLSAgICAgICAgaWYgKGluZGV4ID09PSBwcm9wZXJ0aWVzLmxl
bmd0aCkgewotICAgICAgICAgICAgY2FsbGJhY2soKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgfQotICAgICAgICB2YXIgcGFyZW50VHJlZUVsZW1lbnQgPSBwcm9wZXJ0aWVzW2luZGV4
KytdOwotICAgICAgICB2YXIgcGF0aCA9IHByb3BlcnRpZXNbaW5kZXgrK107Ci0gICAgICAgIGZy
b250ZW5kX2V4cGFuZFByb3BlcnR5KHRlc3RDb250cm9sbGVyLCBwYXJlbnRUcmVlRWxlbWVudCwg
cGF0aCwgMCwgZXhwYW5kTmV4dFBhdGgpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGFuZFBy
b3BlcnRpZXMocHJvcGVydGllcywgc3RlcDMpOwogICAgIH0KLSAgICB0ZXN0Q29udHJvbGxlci5y
dW5BZnRlclBlbmRpbmdEaXNwYXRjaGVzKGV4cGFuZE5leHRQYXRoKTsKLX0KIAotZnVuY3Rpb24g
ZnJvbnRlbmRfZXhwYW5kUHJvcGVydHkodGVzdENvbnRyb2xsZXIsIHBhcmVudFRyZWVFbGVtZW50
LCBwYXRoLCBwYXRoSW5kZXgsIGNhbGxiYWNrKQotewotICAgIGlmIChwYXRoSW5kZXggPT09IHBh
dGgubGVuZ3RoKSB7Ci0gICAgICAgIHRlc3RDb250cm9sbGVyLnJlc3VsdHMucHVzaCgiRXhwYW5k
ZWQgcHJvcGVydHk6ICIgKyBwYXRoLmpvaW4oIi4iKSk7Ci0gICAgICAgIGNhbGxiYWNrKCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgdmFyIG5hbWUgPSBwYXRoW3BhdGhJbmRleCsrXTsK
LSAgICB2YXIgcHJvcGVydHlUcmVlRWxlbWVudCA9IGZyb250ZW5kX2ZpbmRDaGlsZFByb3BlcnR5
VHJlZUVsZW1lbnQocGFyZW50VHJlZUVsZW1lbnQsIG5hbWUpOwotICAgIGlmICghcHJvcGVydHlU
cmVlRWxlbWVudCkgewotICAgICAgIHRlc3RDb250cm9sbGVyLnJlc3VsdHMucHVzaCgiRmFpbGVk
IHRvIGV4cGFuZCBwcm9wZXJ0eTogIiArIHBhdGguc2xpY2UoMCwgcGF0aEluZGV4KS5qb2luKCIu
IikpOwotICAgICAgIHRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKLSAgICAgICByZXR1cm47
Ci0gICAgfQotICAgIHByb3BlcnR5VHJlZUVsZW1lbnQuZXhwYW5kKCk7Ci0gICAgdGVzdENvbnRy
b2xsZXIucnVuQWZ0ZXJQZW5kaW5nRGlzcGF0Y2hlcyhmdW5jdGlvbigpCisgICAgZnVuY3Rpb24g
c3RlcDMoKQogICAgIHsKLSAgICAgICAgZnJvbnRlbmRfZXhwYW5kUHJvcGVydHkodGVzdENvbnRy
b2xsZXIsIHByb3BlcnR5VHJlZUVsZW1lbnQsIHBhdGgsIHBhdGhJbmRleCwgY2FsbGJhY2spOwot
ICAgIH0pOwotfQotCi1mdW5jdGlvbiBmcm9udGVuZF9maW5kQ2hpbGRQcm9wZXJ0eVRyZWVFbGVt
ZW50KHBhcmVudCwgY2hpbGROYW1lKQotewotICAgIHZhciBjaGlsZHJlbiA9IHBhcmVudC5jaGls
ZHJlbjsKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7Ci0g
ICAgICAgIHZhciB0cmVlRWxlbWVudCA9IGNoaWxkcmVuW2ldOwotICAgICAgICB2YXIgcHJvcGVy
dHkgPSB0cmVlRWxlbWVudC5wcm9wZXJ0eTsKLSAgICAgICAgaWYgKHByb3BlcnR5Lm5hbWUgPT09
IGNoaWxkTmFtZSkKLSAgICAgICAgICAgIHJldHVybiB0cmVlRWxlbWVudDsKKyAgICAgICAgSW5z
cGVjdG9yVGVzdC5jb21wbGV0ZURlYnVnZ2VyVGVzdCgpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXN0ZXAtaW4tZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXN0ZXAtaW4tZXhwZWN0ZWQudHh0CmluZGV4
IDc4NzcxYWUuLjYzOWUyMDggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1
Z2dlci1zdGVwLWluLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVi
dWdnZXItc3RlcC1pbi1leHBlY3RlZC50eHQKQEAgLTQsMTYgKzQsMTggQEAgRGVidWdnZXIgd2Fz
IGVuYWJsZWQuCiBTZXQgdGltZXIgZm9yIHRlc3QgZnVuY3Rpb24uCiBTY3JpcHQgZXhlY3V0aW9u
IHBhdXNlZC4KIENhbGwgc3RhY2s6Ci0gICAgMCkgdGVzdEZ1bmN0aW9uIChkZWJ1Z2dlci1zdGVw
LWluLmh0bWw6MTIpCisgICAgMCkgdGVzdEZ1bmN0aW9uIChkZWJ1Z2dlci1zdGVwLWluLmh0bWw6
MTQpCiBTdGVwcGluZyBpbnRvLi4uCitTY3JpcHQgZXhlY3V0aW9uIHJlc3VtZWQuCiBTY3JpcHQg
ZXhlY3V0aW9uIHBhdXNlZC4KIENhbGwgc3RhY2s6Ci0gICAgMCkgdGVzdEZ1bmN0aW9uIChkZWJ1
Z2dlci1zdGVwLWluLmh0bWw6MTMpCisgICAgMCkgdGVzdEZ1bmN0aW9uIChkZWJ1Z2dlci1zdGVw
LWluLmh0bWw6MTUpCiBTdGVwcGluZyBpbnRvLi4uCitTY3JpcHQgZXhlY3V0aW9uIHJlc3VtZWQu
CiBTY3JpcHQgZXhlY3V0aW9uIHBhdXNlZC4KIENhbGwgc3RhY2s6Ci0gICAgMCkgZCAoZGVidWdn
ZXItc3RlcC1pbi5odG1sOjcpCi0gICAgMSkgdGVzdEZ1bmN0aW9uIChkZWJ1Z2dlci1zdGVwLWlu
Lmh0bWw6MTMpCi1SZXN1bWVkIHNjcmlwdCBleGVjdXRpb24uCi1EaXNhYmxlZCBkZWJ1Z2dlci4K
KyAgICAwKSBkIChkZWJ1Z2dlci1zdGVwLWluLmh0bWw6OCkKKyAgICAxKSB0ZXN0RnVuY3Rpb24g
KGRlYnVnZ2VyLXN0ZXAtaW4uaHRtbDoxNSkKK1NjcmlwdCBleGVjdXRpb24gcmVzdW1lZC4KK0Rl
YnVnZ2VyIHdhcyBkaXNhYmxlZC4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2RlYnVnZ2VyLXN0ZXAtaW4uaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1z
dGVwLWluLmh0bWwKaW5kZXggMzM2YTZlNi4uOTc1NWNhNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXN0ZXAtaW4uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZGVidWdnZXItc3RlcC1pbi5odG1sCkBAIC0xLDUzICsxLDQxIEBACiA8aHRtbD4KIDxo
ZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0
LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1
Z2dlci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9pbnNwZWN0b3ItdGVzdDIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXRlc3QyLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+CiAK
LWZ1bmN0aW9uIGQoKSB7CitmdW5jdGlvbiBkKCkKK3sKICAgICB2YXIgaSA9IDEwOwogfQogCi1m
dW5jdGlvbiB0ZXN0RnVuY3Rpb24oKSB7CitmdW5jdGlvbiB0ZXN0RnVuY3Rpb24oKQorewogICAg
IGRlYnVnZ2VyOwogICAgIGQoKTsKLSAgICBub3RpZnlEb25lKCk7CiB9CiAKLWZ1bmN0aW9uIGRv
aXQoKQordmFyIHRlc3QgPSBmdW5jdGlvbigpCiB7Ci0gICAgZXZhbHVhdGVJbldlYkluc3BlY3Rv
cigiZnJvbnRlbmRfdGVzdFN0ZXBJbiIsIGR1bXBBcnJheSk7Ci19CisgICAgSW5zcGVjdG9yVGVz
dC5zdGFydERlYnVnZ2VyVGVzdChzdGVwMSk7CiAKLWZ1bmN0aW9uIGZyb250ZW5kX3Rlc3RTdGVw
SW4odGVzdENvbnRyb2xsZXIpCi17Ci0gICAgdGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgp
OwotCi0gICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCgic2NyaXB0cyIpOwotICAgIGZyb250ZW5k
X2Vuc3VyZURlYnVnZ2VyRW5hYmxlZChkZWJ1Z2dlcldhc0VuYWJsZWRDYWxsYmFjayk7Ci0KLSAg
ICBmdW5jdGlvbiBkZWJ1Z2dlcldhc0VuYWJsZWRDYWxsYmFjaygpCisgICAgZnVuY3Rpb24gc3Rl
cDEoKQogICAgIHsKLSAgICAgICAgdGVzdENvbnRyb2xsZXIucmVzdWx0cy5wdXNoKCJEZWJ1Z2dl
ciB3YXMgZW5hYmxlZC4iKTsKLSAgICAgICAgZnJvbnRlbmRfZXZhbHVhdGVJbkNvbnNvbGUoInNl
dFRpbWVvdXQodGVzdEZ1bmN0aW9uLCAwKSIsIGZ1bmN0aW9uKHJlc3VsdCkKLSAgICAgICAgewot
ICAgICAgICAgICAgdGVzdENvbnRyb2xsZXIucmVzdWx0cy5wdXNoKCJTZXQgdGltZXIgZm9yIHRl
c3QgZnVuY3Rpb24uIik7Ci0gICAgICAgIH0pOworICAgICAgICBJbnNwZWN0b3JUZXN0LnJ1blRl
c3RGdW5jdGlvbkFuZFdhaXRVbnRpbFBhdXNlZChzdGVwMik7CiAgICAgfQogCiAgICAgdmFyIHN0
ZXBDb3VudCA9IDA7Ci0gICAgZnJvbnRlbmRfYWRkU25pZmZlcihXZWJJbnNwZWN0b3IsICJwYXVz
ZWRTY3JpcHQiLCBmdW5jdGlvbihjYWxsRnJhbWVzKQorICAgIGZ1bmN0aW9uIHN0ZXAyKGNhbGxG
cmFtZXMpCiAgICAgewotICAgICAgICB0ZXN0Q29udHJvbGxlci5yZXN1bHRzLnB1c2goIlNjcmlw
dCBleGVjdXRpb24gcGF1c2VkLiIpOwotICAgICAgICBmcm9udGVuZF9jYXB0dXJlU3RhY2tUcmFj
ZShjYWxsRnJhbWVzLCB0ZXN0Q29udHJvbGxlcik7Ci0gICAgICAgIGlmIChzdGVwQ291bnQgPT0g
MikKLSAgICAgICAgICAgIGZyb250ZW5kX2NvbXBsZXRlRGVidWdnZXJUZXN0KHRlc3RDb250cm9s
bGVyKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICB0ZXN0Q29udHJvbGxlci5yZXN1bHRz
LnB1c2goIlN0ZXBwaW5nIGludG8uLi4iKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5jYXB0dXJl
U3RhY2tUcmFjZShjYWxsRnJhbWVzKTsKKyAgICAgICAgaWYgKHN0ZXBDb3VudCA8IDIpIHsKKyAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJTdGVwcGluZyBpbnRvLi4uIik7CiAg
ICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2NyaXB0cy1zdGVwLWludG8iKS5j
bGljaygpOwotICAgICAgICB9CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LndhaXRVbnRpbFJl
c3VtZWQoSW5zcGVjdG9yVGVzdC53YWl0VW50aWxQYXVzZWQuYmluZChJbnNwZWN0b3JUZXN0LCBz
dGVwMikpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxl
dGVEZWJ1Z2dlclRlc3QoKTsKICAgICAgICAgc3RlcENvdW50Kys7Ci0gICAgfSwgdHJ1ZSk7Cisg
ICAgfQogfQogCiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9k
ZWJ1Z2dlci1zdGVwLW91dC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVi
dWdnZXItc3RlcC1vdXQtZXhwZWN0ZWQudHh0CmluZGV4IDFkODk4OTQuLmRhMmQwYzQgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1zdGVwLW91dC1leHBlY3RlZC50
eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXN0ZXAtb3V0LWV4cGVjdGVk
LnR4dApAQCAtNCwxMiArNCwxMyBAQCBEZWJ1Z2dlciB3YXMgZW5hYmxlZC4KIFNldCB0aW1lciBm
b3IgdGVzdCBmdW5jdGlvbi4KIFNjcmlwdCBleGVjdXRpb24gcGF1c2VkLgogQ2FsbCBzdGFjazoK
LSAgICAwKSBkIChkZWJ1Z2dlci1zdGVwLW91dC5odG1sOjgpCi0gICAgMSkgdGVzdEZ1bmN0aW9u
IChkZWJ1Z2dlci1zdGVwLW91dC5odG1sOjEyKQorICAgIDApIGQgKGRlYnVnZ2VyLXN0ZXAtb3V0
Lmh0bWw6OSkKKyAgICAxKSB0ZXN0RnVuY3Rpb24gKGRlYnVnZ2VyLXN0ZXAtb3V0Lmh0bWw6MTQp
CiBTdGVwcGluZyBvdXQuLi4KK1NjcmlwdCBleGVjdXRpb24gcmVzdW1lZC4KIFNjcmlwdCBleGVj
dXRpb24gcGF1c2VkLgogQ2FsbCBzdGFjazoKLSAgICAwKSB0ZXN0RnVuY3Rpb24gKGRlYnVnZ2Vy
LXN0ZXAtb3V0Lmh0bWw6MTMpCi1SZXN1bWVkIHNjcmlwdCBleGVjdXRpb24uCi1EaXNhYmxlZCBk
ZWJ1Z2dlci4KKyAgICAwKSB0ZXN0RnVuY3Rpb24gKGRlYnVnZ2VyLXN0ZXAtb3V0Lmh0bWw6MTUp
CitTY3JpcHQgZXhlY3V0aW9uIHJlc3VtZWQuCitEZWJ1Z2dlciB3YXMgZGlzYWJsZWQuCiAKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1zdGVwLW91dC5odG1sIGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXN0ZXAtb3V0Lmh0bWwKaW5kZXggMDJmZWMx
YS4uMmYzOWRiYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXN0
ZXAtb3V0Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXN0ZXAtb3V0
Lmh0bWwKQEAgLTEsNTYgKzEsNDEgQEAKIDxodG1sPgogPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4v
aHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgotPHNjcmlw
dCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXRlc3QuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0Mi5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvZGVidWdn
ZXItdGVzdDIuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KIAotZnVuY3Rpb24gZCgpIHsKK2Z1bmN0
aW9uIGQoKQorewogICAgIGRlYnVnZ2VyOwogfQogCi1mdW5jdGlvbiB0ZXN0RnVuY3Rpb24oKSB7
Ci0gICAgZCgpOwotICAgIG5vdGlmeURvbmUoKTsKLX0KLQotZnVuY3Rpb24gZG9pdCgpCitmdW5j
dGlvbiB0ZXN0RnVuY3Rpb24oKQogewotICAgIGV2YWx1YXRlSW5XZWJJbnNwZWN0b3IoImZyb250
ZW5kX3Rlc3RTdGVwT3V0IiwgZHVtcEFycmF5KTsKKyAgICBkKCk7CiB9CiAKLWZ1bmN0aW9uIGZy
b250ZW5kX3Rlc3RTdGVwT3V0KHRlc3RDb250cm9sbGVyKQordmFyIHRlc3QgPSBmdW5jdGlvbigp
CiB7Ci0gICAgdGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIEluc3BlY3RvclRl
c3Quc3RhcnREZWJ1Z2dlclRlc3Qoc3RlcDEpOwogCi0gICAgV2ViSW5zcGVjdG9yLnNob3dQYW5l
bCgic2NyaXB0cyIpOwotICAgIGZyb250ZW5kX2Vuc3VyZURlYnVnZ2VyRW5hYmxlZChkZWJ1Z2dl
cldhc0VuYWJsZWRDYWxsYmFjayk7Ci0KLSAgICBmdW5jdGlvbiBkZWJ1Z2dlcldhc0VuYWJsZWRD
YWxsYmFjaygpCisgICAgZnVuY3Rpb24gc3RlcDEoKQogICAgIHsKLSAgICAgICAgdGVzdENvbnRy
b2xsZXIucmVzdWx0cy5wdXNoKCJEZWJ1Z2dlciB3YXMgZW5hYmxlZC4iKTsKLSAgICAgICAgZnJv
bnRlbmRfZXZhbHVhdGVJbkNvbnNvbGUoInNldFRpbWVvdXQodGVzdEZ1bmN0aW9uLCAwKSIsIGZ1
bmN0aW9uKHJlc3VsdCkKLSAgICAgICAgewotICAgICAgICAgICAgdGVzdENvbnRyb2xsZXIucmVz
dWx0cy5wdXNoKCJTZXQgdGltZXIgZm9yIHRlc3QgZnVuY3Rpb24uIik7Ci0gICAgICAgIH0pOwor
ICAgICAgICBJbnNwZWN0b3JUZXN0LnJ1blRlc3RGdW5jdGlvbkFuZFdhaXRVbnRpbFBhdXNlZChz
dGVwMik7CiAgICAgfQogCi0gICAgZnJvbnRlbmRfYWRkU25pZmZlcihXZWJJbnNwZWN0b3IsICJw
YXVzZWRTY3JpcHQiLCBmdW5jdGlvbihjYWxsRnJhbWVzKQorICAgIGZ1bmN0aW9uIHN0ZXAyKGNh
bGxGcmFtZXMpCiAgICAgewotICAgICAgICB0ZXN0Q29udHJvbGxlci5yZXN1bHRzLnB1c2goIlNj
cmlwdCBleGVjdXRpb24gcGF1c2VkLiIpOwotICAgICAgICBmcm9udGVuZF9jYXB0dXJlU3RhY2tU
cmFjZShjYWxsRnJhbWVzLCB0ZXN0Q29udHJvbGxlcik7Ci0gICAgICAgIHRlc3RTdGVwT3V0KCk7
Ci0gICAgfSk7Ci0KLSAgICBmdW5jdGlvbiB0ZXN0U3RlcE91dCgpIHsKLSAgICAgICAgZnJvbnRl
bmRfYWRkU25pZmZlcihXZWJJbnNwZWN0b3IsICJwYXVzZWRTY3JpcHQiLCBmdW5jdGlvbihjYWxs
RnJhbWVzKQotICAgICAgICB7Ci0gICAgICAgICAgICB0ZXN0Q29udHJvbGxlci5yZXN1bHRzLnB1
c2goIlNjcmlwdCBleGVjdXRpb24gcGF1c2VkLiIpOwotICAgICAgICAgICAgZnJvbnRlbmRfY2Fw
dHVyZVN0YWNrVHJhY2UoY2FsbEZyYW1lcywgdGVzdENvbnRyb2xsZXIpOwotICAgICAgICAgICAg
ZnJvbnRlbmRfY29tcGxldGVEZWJ1Z2dlclRlc3QodGVzdENvbnRyb2xsZXIpOwotICAgICAgICB9
KTsKLSAgICAgICAgdGVzdENvbnRyb2xsZXIucmVzdWx0cy5wdXNoKCJTdGVwcGluZyBvdXQuLi4i
KTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5jYXB0dXJlU3RhY2tUcmFjZShjYWxsRnJhbWVzKTsK
KyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIlN0ZXBwaW5nIG91dC4uLiIpOworICAg
ICAgICBJbnNwZWN0b3JUZXN0LndhaXRVbnRpbFJlc3VtZWQoSW5zcGVjdG9yVGVzdC53YWl0VW50
aWxQYXVzZWQuYmluZChJbnNwZWN0b3JUZXN0LCBzdGVwMykpOwogICAgICAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgic2NyaXB0cy1zdGVwLW91dCIpLmNsaWNrKCk7CiAgICAgfQorCisgICAg
ZnVuY3Rpb24gc3RlcDMoY2FsbEZyYW1lcykKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3Qu
Y2FwdHVyZVN0YWNrVHJhY2UoY2FsbEZyYW1lcyk7CisgICAgICAgIEluc3BlY3RvclRlc3QuY29t
cGxldGVEZWJ1Z2dlclRlc3QoKTsKKyAgICB9CiB9CiAKIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXN0ZXAtb3Zlci1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItc3RlcC1vdmVyLWV4cGVjdGVkLnR4dAppbmRl
eCA4YjcwNDg4Li44Njk0M2E5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVi
dWdnZXItc3RlcC1vdmVyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
ZGVidWdnZXItc3RlcC1vdmVyLWV4cGVjdGVkLnR4dApAQCAtNCwxOCArNCwyMCBAQCBEZWJ1Z2dl
ciB3YXMgZW5hYmxlZC4KIFNldCB0aW1lciBmb3IgdGVzdCBmdW5jdGlvbi4KIFNjcmlwdCBleGVj
dXRpb24gcGF1c2VkLgogQ2FsbCBzdGFjazoKLSAgICAwKSBkIChkZWJ1Z2dlci1zdGVwLW92ZXIu
aHRtbDoxMikKLSAgICAxKSB0ZXN0RnVuY3Rpb24gKGRlYnVnZ2VyLXN0ZXAtb3Zlci5odG1sOjE3
KQorICAgIDApIGQgKGRlYnVnZ2VyLXN0ZXAtb3Zlci5odG1sOjE0KQorICAgIDEpIHRlc3RGdW5j
dGlvbiAoZGVidWdnZXItc3RlcC1vdmVyLmh0bWw6MjApCiBTdGVwcGluZyBvdmVyLi4uCitTY3Jp
cHQgZXhlY3V0aW9uIHJlc3VtZWQuCiBTY3JpcHQgZXhlY3V0aW9uIHBhdXNlZC4KIENhbGwgc3Rh
Y2s6Ci0gICAgMCkgZCAoZGVidWdnZXItc3RlcC1vdmVyLmh0bWw6MTMpCi0gICAgMSkgdGVzdEZ1
bmN0aW9uIChkZWJ1Z2dlci1zdGVwLW92ZXIuaHRtbDoxNykKKyAgICAwKSBkIChkZWJ1Z2dlci1z
dGVwLW92ZXIuaHRtbDoxNSkKKyAgICAxKSB0ZXN0RnVuY3Rpb24gKGRlYnVnZ2VyLXN0ZXAtb3Zl
ci5odG1sOjIwKQogU3RlcHBpbmcgb3Zlci4uLgorU2NyaXB0IGV4ZWN1dGlvbiByZXN1bWVkLgog
U2NyaXB0IGV4ZWN1dGlvbiBwYXVzZWQuCiBDYWxsIHN0YWNrOgotICAgIDApIGQgKGRlYnVnZ2Vy
LXN0ZXAtb3Zlci5odG1sOjE0KQotICAgIDEpIHRlc3RGdW5jdGlvbiAoZGVidWdnZXItc3RlcC1v
dmVyLmh0bWw6MTcpCi1SZXN1bWVkIHNjcmlwdCBleGVjdXRpb24uCi1EaXNhYmxlZCBkZWJ1Z2dl
ci4KKyAgICAwKSBkIChkZWJ1Z2dlci1zdGVwLW92ZXIuaHRtbDoxNikKKyAgICAxKSB0ZXN0RnVu
Y3Rpb24gKGRlYnVnZ2VyLXN0ZXAtb3Zlci5odG1sOjIwKQorU2NyaXB0IGV4ZWN1dGlvbiByZXN1
bWVkLgorRGVidWdnZXIgd2FzIGRpc2FibGVkLgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZGVidWdnZXItc3RlcC1vdmVyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
ZGVidWdnZXItc3RlcC1vdmVyLmh0bWwKaW5kZXggOGRiNGE5Zi4uNjY2OGMyNCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXN0ZXAtb3Zlci5odG1sCisrKyBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1zdGVwLW92ZXIuaHRtbApAQCAtMSw1NyArMSw0
NiBAQAogPGh0bWw+CiA8aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0
cy9pbnNwZWN0b3IvZGVidWdnZXItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
aHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QyLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci10ZXN0Mi5qcyI+PC9zY3Jp
cHQ+CiA8c2NyaXB0PgogCi1mdW5jdGlvbiBmKCkgeworZnVuY3Rpb24gZigpCit7CiAgICAgdmFy
IGkgPSAxMDsKIH0KIAotZnVuY3Rpb24gZCgpIHsKK2Z1bmN0aW9uIGQoKQorewogICAgIGRlYnVn
Z2VyOwogICAgIGYoKTsKIH0KIAotZnVuY3Rpb24gdGVzdEZ1bmN0aW9uKCkgewotICAgIGQoKTsK
LSAgICBub3RpZnlEb25lKCk7Ci19Ci0KLWZ1bmN0aW9uIGRvaXQoKQorZnVuY3Rpb24gdGVzdEZ1
bmN0aW9uKCkKIHsKLSAgICBldmFsdWF0ZUluV2ViSW5zcGVjdG9yKCJmcm9udGVuZF90ZXN0U3Rl
cEluIiwgZHVtcEFycmF5KTsKKyAgICBkKCk7CiB9CiAKLWZ1bmN0aW9uIGZyb250ZW5kX3Rlc3RT
dGVwSW4odGVzdENvbnRyb2xsZXIpCit2YXIgdGVzdCA9IGZ1bmN0aW9uKCkKIHsKLSAgICB0ZXN0
Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgSW5zcGVjdG9yVGVzdC5zdGFydERlYnVn
Z2VyVGVzdChzdGVwMSk7CiAKLSAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJzY3JpcHRzIik7
Ci0gICAgZnJvbnRlbmRfZW5zdXJlRGVidWdnZXJFbmFibGVkKGRlYnVnZ2VyV2FzRW5hYmxlZENh
bGxiYWNrKTsKLQotICAgIGZ1bmN0aW9uIGRlYnVnZ2VyV2FzRW5hYmxlZENhbGxiYWNrKCkKKyAg
ICBmdW5jdGlvbiBzdGVwMSgpCiAgICAgewotICAgICAgICB0ZXN0Q29udHJvbGxlci5yZXN1bHRz
LnB1c2goIkRlYnVnZ2VyIHdhcyBlbmFibGVkLiIpOwotICAgICAgICBmcm9udGVuZF9ldmFsdWF0
ZUluQ29uc29sZSgic2V0VGltZW91dCh0ZXN0RnVuY3Rpb24sIDApIiwgZnVuY3Rpb24ocmVzdWx0
KQotICAgICAgICB7Ci0gICAgICAgICAgICB0ZXN0Q29udHJvbGxlci5yZXN1bHRzLnB1c2goIlNl
dCB0aW1lciBmb3IgdGVzdCBmdW5jdGlvbi4iKTsKLSAgICAgICAgfSk7CisgICAgICAgIEluc3Bl
Y3RvclRlc3QucnVuVGVzdEZ1bmN0aW9uQW5kV2FpdFVudGlsUGF1c2VkKHN0ZXAyKTsKICAgICB9
CiAKICAgICB2YXIgc3RlcENvdW50ID0gMDsKLSAgICBmcm9udGVuZF9hZGRTbmlmZmVyKFdlYklu
c3BlY3RvciwgInBhdXNlZFNjcmlwdCIsIGZ1bmN0aW9uKGNhbGxGcmFtZXMpCisgICAgZnVuY3Rp
b24gc3RlcDIoY2FsbEZyYW1lcykKICAgICB7Ci0gICAgICAgIHRlc3RDb250cm9sbGVyLnJlc3Vs
dHMucHVzaCgiU2NyaXB0IGV4ZWN1dGlvbiBwYXVzZWQuIik7Ci0gICAgICAgIGZyb250ZW5kX2Nh
cHR1cmVTdGFja1RyYWNlKGNhbGxGcmFtZXMsIHRlc3RDb250cm9sbGVyKTsKLSAgICAgICAgaWYg
KHN0ZXBDb3VudCA9PSAyKQotICAgICAgICAgICAgZnJvbnRlbmRfY29tcGxldGVEZWJ1Z2dlclRl
c3QodGVzdENvbnRyb2xsZXIpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHRlc3RDb250
cm9sbGVyLnJlc3VsdHMucHVzaCgiU3RlcHBpbmcgb3Zlci4uLiIpOworICAgICAgICBJbnNwZWN0
b3JUZXN0LmNhcHR1cmVTdGFja1RyYWNlKGNhbGxGcmFtZXMpOworICAgICAgICBpZiAoc3RlcENv
dW50IDwgMikgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIlN0ZXBwaW5n
IG92ZXIuLi4iKTsKICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzY3JpcHRz
LXN0ZXAtb3ZlciIpLmNsaWNrKCk7Ci0gICAgICAgIH0KKyAgICAgICAgICAgIEluc3BlY3RvclRl
c3Qud2FpdFVudGlsUmVzdW1lZChJbnNwZWN0b3JUZXN0LndhaXRVbnRpbFBhdXNlZC5iaW5kKElu
c3BlY3RvclRlc3QsIHN0ZXAyKSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5jb21wbGV0ZURlYnVnZ2VyVGVzdCgpOwogICAgICAgICBzdGVwQ291bnQrKzsKLSAg
ICB9LCB0cnVlKTsKKyAgICB9CiB9CiAKIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2RvbS1icmVha3BvaW50cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZG9tLWJyZWFrcG9pbnRzLWV4cGVjdGVkLnR4dAppbmRleCA5M2YxZTlmLi5jODVi
NzFlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWJyZWFrcG9pbnRzLWV4
cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWJyZWFrcG9pbnRzLWV4
cGVjdGVkLnR4dApAQCAtMywxMiArMywxOCBAQCBUZXN0cyBET00gYnJlYWtwb2ludHMuIEJ1ZyA0
Mjg4NgogRGVidWdnZXIgd2FzIGVuYWJsZWQuCiBGb3VuZCBkb20gbm9kZSBkMC4KIFNldCBzdWJ0
cmVlIG1vZGlmaWVkIERPTSBicmVha3BvaW50IG9uIGQwLgotUGF1c2VkIGF0IGxpbmUgMTEgaW4g
YXBwZW5kRWxlbWVudAorU2NyaXB0IGV4ZWN1dGlvbiBwYXVzZWQuCitsaW5lOiAxMSwgZnVuY3Rp
b246IGFwcGVuZEVsZW1lbnQKK1NjcmlwdCBleGVjdXRpb24gcmVzdW1lZC4KIEZvdW5kIGRvbSBu
b2RlIGQxLgogU2V0IGF0dHJpYnV0ZSBtb2RpZmllZCBET00gYnJlYWtwb2ludCBvbiBkMS4KLVBh
dXNlZCBhdCBsaW5lIDE3IGluIG1vZGlmeUF0dHJpYnV0ZQorU2NyaXB0IGV4ZWN1dGlvbiBwYXVz
ZWQuCitsaW5lOiAxNywgZnVuY3Rpb246IG1vZGlmeUF0dHJpYnV0ZQorU2NyaXB0IGV4ZWN1dGlv
biByZXN1bWVkLgogRm91bmQgZG9tIG5vZGUgZDEuCiBTZXQgbm9kZSByZW1vdmVkIERPTSBicmVh
a3BvaW50IG9uIGQxLgotUGF1c2VkIGF0IGxpbmUgMjMgaW4gcmVtb3ZlRWxlbWVudAorU2NyaXB0
IGV4ZWN1dGlvbiBwYXVzZWQuCitsaW5lOiAyMywgZnVuY3Rpb246IHJlbW92ZUVsZW1lbnQKK1Nj
cmlwdCBleGVjdXRpb24gcmVzdW1lZC4KIERlYnVnZ2VyIHdhcyBkaXNhYmxlZC4KIApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1icmVha3BvaW50cy5odG1sIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2RvbS1icmVha3BvaW50cy5odG1sCmluZGV4IGZiYjY1MzIuLjhjNGQy
MGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20tYnJlYWtwb2ludHMuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWJyZWFrcG9pbnRzLmh0bWwKQEAgLTQx
LDExICs0MSwxMSBAQCB2YXIgdGVzdCA9IGZ1bmN0aW9uKCkKICAgICAgICAgSW5zcGVjdG9yVGVz
dC53YWl0VW50aWxQYXVzZWQoc3RlcDMuYmluZChudWxsLCBub2RlKSk7CiAgICAgfQogCi0gICAg
ZnVuY3Rpb24gc3RlcDMobm9kZSkKKyAgICBmdW5jdGlvbiBzdGVwMyhub2RlLCBjYWxsRnJhbWVz
KQogICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoImxpbmU6ICIgKyBjYWxs
RnJhbWVzWzBdLmxpbmUgKyAiLCBmdW5jdGlvbjogIiArIGNhbGxGcmFtZXNbMF0uZnVuY3Rpb25O
YW1lKTsKICAgICAgICAgV2ViSW5zcGVjdG9yLmRvbUJyZWFrcG9pbnRNYW5hZ2VyLnJlbW92ZUJy
ZWFrcG9pbnRzRm9yTm9kZShub2RlKTsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5yZXN1bWVFeGVj
dXRpb24oKTsKLSAgICAgICAgZmluZERPTU5vZGVCeUlkKCJkMSIsIHN0ZXA0KTsKKyAgICAgICAg
SW5zcGVjdG9yVGVzdC5yZXN1bWVFeGVjdXRpb24oZmluZERPTU5vZGVCeUlkLmJpbmQobnVsbCwg
ImQxIiwgc3RlcDQpKTsKICAgICB9CiAKICAgICBmdW5jdGlvbiBzdGVwNChub2RlKQpAQCAtNTcs
MTEgKzU3LDExIEBAIHZhciB0ZXN0ID0gZnVuY3Rpb24oKQogICAgICAgICBJbnNwZWN0b3JUZXN0
LndhaXRVbnRpbFBhdXNlZChzdGVwNS5iaW5kKG51bGwsIG5vZGUpKTsKICAgICB9CiAKLSAgICBm
dW5jdGlvbiBzdGVwNShub2RlKQorICAgIGZ1bmN0aW9uIHN0ZXA1KG5vZGUsIGNhbGxGcmFtZXMp
CiAgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgibGluZTogIiArIGNhbGxG
cmFtZXNbMF0ubGluZSArICIsIGZ1bmN0aW9uOiAiICsgY2FsbEZyYW1lc1swXS5mdW5jdGlvbk5h
bWUpOwogICAgICAgICBXZWJJbnNwZWN0b3IuZG9tQnJlYWtwb2ludE1hbmFnZXIucmVtb3ZlQnJl
YWtwb2ludHNGb3JOb2RlKG5vZGUpOwotICAgICAgICBJbnNwZWN0b3JUZXN0LnJlc3VtZUV4ZWN1
dGlvbigpOwotICAgICAgICBmaW5kRE9NTm9kZUJ5SWQoImQxIiwgc3RlcDYpOworICAgICAgICBJ
bnNwZWN0b3JUZXN0LnJlc3VtZUV4ZWN1dGlvbihmaW5kRE9NTm9kZUJ5SWQuYmluZChudWxsLCAi
ZDEiLCBzdGVwNikpOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHN0ZXA2KG5vZGUpCkBAIC03Myw4
ICs3Myw5IEBAIHZhciB0ZXN0ID0gZnVuY3Rpb24oKQogICAgICAgICBJbnNwZWN0b3JUZXN0Lndh
aXRVbnRpbFBhdXNlZChzdGVwNy5iaW5kKG51bGwsIG5vZGUpKTsKICAgICB9CiAKLSAgICBmdW5j
dGlvbiBzdGVwNyhub2RlKQorICAgIGZ1bmN0aW9uIHN0ZXA3KG5vZGUsIGNhbGxGcmFtZXMpCiAg
ICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgibGluZTogIiArIGNhbGxGcmFt
ZXNbMF0ubGluZSArICIsIGZ1bmN0aW9uOiAiICsgY2FsbEZyYW1lc1swXS5mdW5jdGlvbk5hbWUp
OwogICAgICAgICBXZWJJbnNwZWN0b3IuZG9tQnJlYWtwb2ludE1hbmFnZXIucmVtb3ZlQnJlYWtw
b2ludHNGb3JOb2RlKG5vZGUpOwogICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlRGVidWdn
ZXJUZXN0KCk7CiAgICAgfQpAQCAtOTAsNyArOTEsNyBAQCB2YXIgdGVzdCA9IGZ1bmN0aW9uKCkK
IDwvc2NyaXB0PgogPC9oZWFkPgogCi08Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8Ym9keSBv
bmxvYWQ9Im9ubG9hZCgpIj4KIDxwPgogVGVzdHMgRE9NIGJyZWFrcG9pbnRzLiA8YSBocmVmPSJo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDI4ODYiPkJ1ZyA0Mjg4Njwv
YT4KIDwvcD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zLWFw
aS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy1hcGktZXhw
ZWN0ZWQudHh0CmluZGV4IGMwNzQ3MWIuLmE5ZmQyZTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9leHRlbnNpb25zLWFwaS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2V4dGVuc2lvbnMtYXBpLWV4cGVjdGVkLnR4dApAQCAtMSw1ICsxLDYgQEAKIFRl
c3RzIHB1YmxpYyBpbnRlcmZhY2Ugb2YgV2ViSW5zcGVjdG9yIEV4dGVuc2lvbnMgQVBJCiAKK1Bh
Z2UgcmVsb2FkZWQuCiBTdGFydGVkIGV4dGVuc2lvbi4KIFJ1bm5pbmcgdGVzdHMuLi4KIFJVTk5J
TkcgVEVTVDogZXh0ZW5zaW9uX3Rlc3RBUEkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9leHRlbnNpb25zLWFwaS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lv
bnMtYXBpLmh0bWwKaW5kZXggZmM5ZGEwZi4uOGUyNjIyMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMtYXBpLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2V4dGVuc2lvbnMtYXBpLmh0bWwKQEAgLTEyLDcgKzEyLDcgQEAgZnVuY3Rpb24gZXh0ZW5z
aW9uX3Rlc3RBUEkobmV4dFRlc3QpCiAKIDwvc2NyaXB0PgogPC9oZWFkPgotPGJvZHkgb25sb2Fk
PSJydW5UZXN0KCkiPgorPGJvZHkgb25sb2FkPSJvbmxvYWQoKSI+CiA8cD5UZXN0cyBwdWJsaWMg
aW50ZXJmYWNlIG9mIFdlYkluc3BlY3RvciBFeHRlbnNpb25zIEFQSTwvcD4KIDwvYm9keT4KIDwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zLWF1ZGl0
cy1hcGktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMtYXVk
aXRzLWFwaS1leHBlY3RlZC50eHQKaW5kZXggMTA3MmFhNS4uOTIwYjNjMyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMtYXVkaXRzLWFwaS1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMtYXVkaXRzLWFwaS1leHBlY3Rl
ZC50eHQKQEAgLTEsNSArMSw2IEBACiBUZXN0cyBhdWRpdHMgc3VwcG9ydCBpbiBXZWJJbnNwZWN0
b3IgRXh0ZW5zaW9ucyBBUEkKIAorUGFnZSByZWxvYWRlZC4KIFN0YXJ0ZWQgZXh0ZW5zaW9uLgog
UnVubmluZyB0ZXN0cy4uLgogUlVOTklORyBURVNUOiBleHRlbnNpb25fdGVzdEF1ZGl0c0FQSQpA
QCAtMzMsNiArMzQsNiBAQCBjYXRlZ29yeS5vbkF1ZGl0U3RhcnRlZCBmaXJlZCwgcmVzdWx0cyBk
dW1wIGZvbGxvd3M6CiAgICAgZXhwYW5kZWQgOiBmYWxzZQogICAgIGFkZENoaWxkIDogPGZ1bmN0
aW9uPgogfQotQWxsIHRlc3RzIGRvbmUuCiAgIEV4dGVuc2lvbiBhdWRpdHMKK0FsbCB0ZXN0cyBk
b25lLgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy1hdWRp
dHMtYXBpLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy1hdWRpdHMtYXBp
Lmh0bWwKaW5kZXggMTE4ZmUwZC4uZGQxZjE3OSAxMDA3NTUKLS0tIGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2V4dGVuc2lvbnMtYXVkaXRzLWFwaS5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9leHRlbnNpb25zLWF1ZGl0cy1hcGkuaHRtbApAQCAtMjYsNyArMjYsNyBAQCBmdW5jdGlv
biBleHRlbnNpb25fdGVzdEF1ZGl0c0FQSShuZXh0VGVzdCkKIAogPC9zY3JpcHQ+CiA8L2hlYWQ+
Ci08Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8Ym9keSBvbmxvYWQ9Im9ubG9hZCgpIj4KIDxw
PlRlc3RzIGF1ZGl0cyBzdXBwb3J0IGluIFdlYkluc3BlY3RvciBFeHRlbnNpb25zIEFQSTwvcD4K
IDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9leHRl
bnNpb25zLWF1ZGl0cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5z
aW9ucy1hdWRpdHMtZXhwZWN0ZWQudHh0CmluZGV4IGExZWVlNzMuLmUyNWYzMmMgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zLWF1ZGl0cy1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMtYXVkaXRzLWV4cGVjdGVkLnR4
dApAQCAtMSwxMiArMSwxMiBAQAogVGVzdHMgYXVkaXRzIHN1cHBvcnQgaW4gV2ViSW5zcGVjdG9y
IEV4dGVuc2lvbnMgQVBJCiAKK1BhZ2UgcmVsb2FkZWQuCiBTdGFydGVkIGV4dGVuc2lvbi4KIFJ1
bm5pbmcgdGVzdHMuLi4KIFJVTk5JTkcgVEVTVDogZXh0ZW5zaW9uX3Rlc3RBdWRpdHMKIEFkZGVk
IGF1ZGl0IGNhdGVnb3J5LgogY2F0ZWdvcnkub25BdWRpdFN0YXJ0ZWQgZmlyZWQKIGZhaWxlZENh
dGVnb3J5Lm9uQXVkaXRTdGFydGVkIGZpcmVkLCB0aHJvd2luZyBleGNlcHRpb24KLUFsbCB0ZXN0
cyBkb25lLgogICBFeHRlbnNpb24gYXVkaXRzCiAgICAgRmFpbGVkIHJ1bGUgKDQyKQogICAgICB0
aGlzIHJ1bGUgYWx3YXlzIGZhaWxzCkBAIC0yNSw0ICsyNSw1IEBAIEFsbCB0ZXN0cyBkb25lLgog
ICAgIFBhc3NlZCBydWxlCiAgICAgIHRoaXMgcnVsZSBhbHdheXMgcGFzc2VzIG9rCiAgIEV4dGVu
c2lvbiBhdWRpdHMgdGhhdCBmYWlsCitBbGwgdGVzdHMgZG9uZS4KIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMtYXVkaXRzLmh0bWwgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZXh0ZW5zaW9ucy1hdWRpdHMuaHRtbAppbmRleCBlZjY1ZDUxLi45YWY5NTg5IDEw
MDc1NQotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy1hdWRpdHMuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy1hdWRpdHMuaHRtbApAQCAtNTMs
NyArNTMsNyBAQCBmdW5jdGlvbiBleHRlbnNpb25fdGVzdEF1ZGl0cyhuZXh0VGVzdCkKIAogPC9z
Y3JpcHQ+CiA8L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8Ym9keSBvbmxvYWQ9
Im9ubG9hZCgpIj4KIDxwPlRlc3RzIGF1ZGl0cyBzdXBwb3J0IGluIFdlYkluc3BlY3RvciBFeHRl
bnNpb25zIEFQSTwvcD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9leHRlbnNpb25zLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9leHRlbnNpb25zLWV4cGVjdGVkLnR4dAppbmRleCA4MzE5NDM0Li5iZTU3MDZjIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMtZXhwZWN0ZWQudHh0CkBAIC0xLDUgKzEs
NiBAQAogVGVzdHMgV2ViSW5zcGVjdG9yIGV4dGVuc2lvbiBBUEkKIAorUGFnZSByZWxvYWRlZC4K
IFN0YXJ0ZWQgZXh0ZW5zaW9uLgogUnVubmluZyB0ZXN0cy4uLgogUlVOTklORyBURVNUOiBleHRl
bnNpb25fdGVzdENyZWF0ZVBhbmVsCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
ZXh0ZW5zaW9ucy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMuaHRtbApp
bmRleCA5MjU5Yjk0Li5lNGQzNzdkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
ZXh0ZW5zaW9ucy5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zLmh0
bWwKQEAgLTgxLDcgKzgxLDcgQEAgZnVuY3Rpb24gZXh0ZW5zaW9uX29uRXZhbHVhdGUocmVzdWx0
KQogCiA8L3NjcmlwdD4KIDwvaGVhZD4KLTxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxib2R5
IG9ubG9hZD0ib25sb2FkKCkiPgogPHA+VGVzdHMgV2ViSW5zcGVjdG9yIGV4dGVuc2lvbiBBUEk8
L3A+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS9pbnNwZWN0b3IvZGVidWdnZXItc3RlcC1pbi1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9pbnNwZWN0b3IvZGVidWdnZXItc3RlcC1pbi1leHBlY3Rl
ZC50eHQKb2xkIG1vZGUgMTAwNzU1Cm5ldyBtb2RlIDEwMDY0NAppbmRleCA3MmFmNmU4Li5kNzUy
NjUyCi0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2luc3BlY3Rvci9kZWJ1Z2dl
ci1zdGVwLWluLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS9pbnNwZWN0b3IvZGVidWdnZXItc3RlcC1pbi1leHBlY3RlZC50eHQKQEAgLTEsMTggKzEsMjEg
QEAKLVRlc3RzICJzdGVwIGluIiBmdW5jdGlvbmFsaXR5IGluIGRlYnVnZ2VyLg0KLQ0KLURlYnVn
Z2VyIHdhcyBlbmFibGVkLg0KLVNldCB0aW1lciBmb3IgdGVzdCBmdW5jdGlvbi4NCi1TY3JpcHQg
ZXhlY3V0aW9uIHBhdXNlZC4NCi1DYWxsIHN0YWNrOg0KLSAgICAwKSB0ZXN0RnVuY3Rpb24gKGRl
YnVnZ2VyLXN0ZXAtaW4uaHRtbDoxMikNCi1TdGVwcGluZyBpbnRvLi4uDQotU2NyaXB0IGV4ZWN1
dGlvbiBwYXVzZWQuDQotQ2FsbCBzdGFjazoNCi0gICAgMCkgdGVzdEZ1bmN0aW9uIChkZWJ1Z2dl
ci1zdGVwLWluLmh0bWw6MTMpDQotU3RlcHBpbmcgaW50by4uLg0KLVNjcmlwdCBleGVjdXRpb24g
cGF1c2VkLg0KLUNhbGwgc3RhY2s6DQotICAgIDApIGQgKGRlYnVnZ2VyLXN0ZXAtaW4uaHRtbDo4
KQ0KLSAgICAxKSB0ZXN0RnVuY3Rpb24gKGRlYnVnZ2VyLXN0ZXAtaW4uaHRtbDoxMykNCi1SZXN1
bWVkIHNjcmlwdCBleGVjdXRpb24uDQotRGlzYWJsZWQgZGVidWdnZXIuDQorVGVzdHMgInN0ZXAg
aW4iIGZ1bmN0aW9uYWxpdHkgaW4gZGVidWdnZXIuCisKK0RlYnVnZ2VyIHdhcyBlbmFibGVkLgor
U2V0IHRpbWVyIGZvciB0ZXN0IGZ1bmN0aW9uLgorU2NyaXB0IGV4ZWN1dGlvbiBwYXVzZWQuCitD
YWxsIHN0YWNrOgorICAgIDApIHRlc3RGdW5jdGlvbiAoZGVidWdnZXItc3RlcC1pbi5odG1sOjE0
KQorU3RlcHBpbmcgaW50by4uLgorU2NyaXB0IGV4ZWN1dGlvbiByZXN1bWVkLgorU2NyaXB0IGV4
ZWN1dGlvbiBwYXVzZWQuCitDYWxsIHN0YWNrOgorICAgIDApIHRlc3RGdW5jdGlvbiAoZGVidWdn
ZXItc3RlcC1pbi5odG1sOjE1KQorU3RlcHBpbmcgaW50by4uLgorU2NyaXB0IGV4ZWN1dGlvbiBy
ZXN1bWVkLgorU2NyaXB0IGV4ZWN1dGlvbiBwYXVzZWQuCitDYWxsIHN0YWNrOgorICAgIDApIGQg
KGRlYnVnZ2VyLXN0ZXAtaW4uaHRtbDo5KQorICAgIDEpIHRlc3RGdW5jdGlvbiAoZGVidWdnZXIt
c3RlcC1pbi5odG1sOjE1KQorU2NyaXB0IGV4ZWN1dGlvbiByZXN1bWVkLgorRGVidWdnZXIgd2Fz
IGRpc2FibGVkLgorCg==
</data>
<flag name="review"
          id="54977"
          type_id="1"
          status="+"
          setter="yurys"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>66192</attachid>
            <date>2010-09-01 03:46:38 -0700</date>
            <delta_ts>2010-09-01 03:50:29 -0700</delta_ts>
            <desc>Proposed patch.</desc>
            <filename>tests.patch</filename>
            <type>text/plain</type>
            <size>62744</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlYWU5MTE1Li4xZGQ3Yjk4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzMgQEAKKzIwMTAtMDkt
MDEgIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogbW92
ZSBkZWJ1Z2dlciB0ZXN0cyB0byB0aGUgbmV3IHRlc3QgaGFybmVzcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQ5MzkKKworICAgICAgICAqIGh0dHAv
dGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXRlc3QuanM6IFJlbW92ZWQuCisgICAgICAgICogaHR0
cC90ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItdGVzdDIuanM6CisgICAgICAgIChpbml0aWFsaXpl
X0RlYnVnZ2VyVGVzdC5JbnNwZWN0b3JUZXN0LnN0YXJ0RGVidWdnZXJUZXN0LnN0YXJ0VGVzdCk6
CisgICAgICAgIChpbml0aWFsaXplX0RlYnVnZ2VyVGVzdC5JbnNwZWN0b3JUZXN0LnN0YXJ0RGVi
dWdnZXJUZXN0KToKKyAgICAgICAgKGluaXRpYWxpemVfRGVidWdnZXJUZXN0Lkluc3BlY3RvclRl
c3QuY29tcGxldGVEZWJ1Z2dlclRlc3QuZGlzYWJsZURlYnVnZ2VyKToKKyAgICAgICAgKGluaXRp
YWxpemVfRGVidWdnZXJUZXN0Lkluc3BlY3RvclRlc3QucnVuVGVzdEZ1bmN0aW9uQW5kV2FpdFVu
dGlsUGF1c2VkKToKKyAgICAgICAgKGluaXRpYWxpemVfRGVidWdnZXJUZXN0Lkluc3BlY3RvclRl
c3Qud2FpdFVudGlsUGF1c2VkKToKKyAgICAgICAgKGluaXRpYWxpemVfRGVidWdnZXJUZXN0Lklu
c3BlY3RvclRlc3Qud2FpdFVudGlsUmVzdW1lZCk6CisgICAgICAgIChpbml0aWFsaXplX0RlYnVn
Z2VyVGVzdC5JbnNwZWN0b3JUZXN0LnJlc3VtZUV4ZWN1dGlvbik6CisgICAgICAgIChpbml0aWFs
aXplX0RlYnVnZ2VyVGVzdC5JbnNwZWN0b3JUZXN0LmNhcHR1cmVTdGFja1RyYWNlKToKKyAgICAg
ICAgKGluaXRpYWxpemVfRGVidWdnZXJUZXN0Lkluc3BlY3RvclRlc3QuX3BhdXNlZFNjcmlwdCk6
CisgICAgICAgIChpbml0aWFsaXplX0RlYnVnZ2VyVGVzdC5JbnNwZWN0b3JUZXN0Ll9yZXN1bWVk
U2NyaXB0KToKKyAgICAgICAgKGluaXRpYWxpemVfRGVidWdnZXJUZXN0Lkluc3BlY3RvclRlc3Qu
d2FpdFVudGlsQ3VycmVudFNvdXJjZUZyYW1lSXNMb2FkZWQpOgorICAgICAgICAoaW5pdGlhbGl6
ZV9EZWJ1Z2dlclRlc3QuSW5zcGVjdG9yVGVzdC5fc2hvd1NjcmlwdFNvdXJjZSk6CisgICAgICAg
IChpbml0aWFsaXplX0RlYnVnZ2VyVGVzdC5JbnNwZWN0b3JUZXN0LmV4cGFuZFByb3BlcnRpZXMu
ZXhwYW5kTmV4dFBhdGgpOgorICAgICAgICAoaW5pdGlhbGl6ZV9EZWJ1Z2dlclRlc3QuSW5zcGVj
dG9yVGVzdC5leHBhbmRQcm9wZXJ0aWVzKToKKyAgICAgICAgKGluaXRpYWxpemVfRGVidWdnZXJU
ZXN0Lkluc3BlY3RvclRlc3QuX2V4cGFuZFByb3BlcnR5KToKKyAgICAgICAgKGluaXRpYWxpemVf
RGVidWdnZXJUZXN0Lkluc3BlY3RvclRlc3QuX2ZpbmRDaGlsZFByb3BlcnR5VHJlZUVsZW1lbnQp
OgorICAgICAgICAoaW5pdGlhbGl6ZV9EZWJ1Z2dlclRlc3QpOgorICAgICAgICAqIGh0dHAvdGVz
dHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0Mi5qczoKKyAgICAgICAgKGluaXRpYWxpemVfSW5z
cGVjdG9yVGVzdC5JbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCk6CisgICAgICAgIChpbml0aWFs
aXplX0luc3BlY3RvclRlc3QuSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSk6CisgICAgICAg
IChpbml0aWFsaXplX0luc3BlY3RvclRlc3QuSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQuYWRkUmVz
dWx0VG9QYWdlKToKKyAgICAgICAgKGluaXRpYWxpemVfSW5zcGVjdG9yVGVzdC5JbnNwZWN0b3JU
ZXN0LmFkZFJlc3VsdCk6CisgICAgICAgIChpbml0aWFsaXplX0luc3BlY3RvclRlc3QuSW5zcGVj
dG9yVGVzdC5hZGRPYmplY3QpOgorICAgICAgICAoaW5pdGlhbGl6ZV9JbnNwZWN0b3JUZXN0Lklu
c3BlY3RvclRlc3QucmVsb2FkUGFnZSk6CisgICAgICAgIChpbml0aWFsaXplX0luc3BlY3RvclRl
c3QuSW5zcGVjdG9yVGVzdC5wYWdlUmVsb2FkZWQpOgorICAgICAgICAoaW5pdGlhbGl6ZV9JbnNw
ZWN0b3JUZXN0Lkluc3BlY3RvclRlc3QucnVuQWZ0ZXJQZW5kaW5nRGlzcGF0Y2hlcyk6CisgICAg
ICAgIChpbml0aWFsaXplX0luc3BlY3RvclRlc3QuSW5zcGVjdG9yVGVzdC5lbmFibGVSZXNvdXJj
ZVRyYWNraW5nKToKKyAgICAgICAgKGluaXRpYWxpemVfSW5zcGVjdG9yVGVzdC5JbnNwZWN0b3JU
ZXN0LmRpc2FibGVSZXNvdXJjZVRyYWNraW5nKToKKyAgICAgICAgKGluaXRpYWxpemVfSW5zcGVj
dG9yVGVzdC5JbnNwZWN0b3JUZXN0Ll9hZGRTbmlmZmVyKToKKyAgICAgICAgKHJ1blRlc3QucnVu
VGVzdEluRnJvbnRlbmQpOgorICAgICAgICAocnVuVGVzdCk6CisgICAgICAgIChkaWRFdmFsdWF0
ZUZvclRlc3RJbkZyb250ZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXItYnJlYWtw
b2ludHMtbm90LWFjdGl2YXRlZC1vbi1yZWxvYWQuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZGVidWdnZXItY3ljbGljLXJlZi1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL2Rl
YnVnZ2VyLWN5Y2xpYy1yZWYuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXItZXZh
bC13aGlsZS1wYXVzZWQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dl
ci1ldmFsLXdoaWxlLXBhdXNlZC5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci1u
by1uZXN0ZWQtcGF1c2UtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dl
ci1uby1uZXN0ZWQtcGF1c2UuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXItcGF1
c2UtaW4tZXZhbC1zY3JpcHQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1
Z2dlci1wYXVzZS1pbi1ldmFsLXNjcmlwdC5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1
Z2dlci1wYXVzZS1vbi1kZWJ1Z2dlci1zdGF0ZW1lbnQtZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IGluc3BlY3Rvci9kZWJ1Z2dlci1wYXVzZS1vbi1kZWJ1Z2dlci1zdGF0ZW1lbnQuaHRtbDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXItcHJvdG8tcHJvcGVydHktZXhwZWN0ZWQudHh0Ogor
ICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci1wcm90by1wcm9wZXJ0eS5odG1sOgorICAgICAg
ICAqIGluc3BlY3Rvci9kZWJ1Z2dlci1zdGVwLWluLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBp
bnNwZWN0b3IvZGVidWdnZXItc3RlcC1pbi5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1
Z2dlci1zdGVwLW91dC1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2Vy
LXN0ZXAtb3V0Lmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyLXN0ZXAtb3Zlci1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyLXN0ZXAtb3Zlci5odG1s
OgorICAgICAgICAqIGluc3BlY3Rvci9kb20tYnJlYWtwb2ludHMtZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIGluc3BlY3Rvci9kb20tYnJlYWtwb2ludHMuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvZXh0ZW5zaW9ucy1hcGktZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9leHRl
bnNpb25zLWF1ZGl0cy1hcGktZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9leHRl
bnNpb25zLWF1ZGl0cy1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL2V4dGVuc2lv
bnMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9yZXBvcnQtcHJvdG9jb2wtZXJy
b3JzLmh0bWw6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vaW5zcGVjdG9yL2RlYnVnZ2Vy
LXN0ZXAtaW4tZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3Rlc3Rf
ZXhwZWN0YXRpb25zLnR4dDoKKwogMjAxMC0wOC0zMSAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgdGVzdCBleHBlY3RhdGlvbiB1cGRhdGUu
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci10
ZXN0LmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItdGVzdC5q
cwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGY4NzAxMy4uMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci10ZXN0LmpzCisrKyAvZGV2
L251bGwKQEAgLTEsMTEzICswLDAgQEAKLQotZnVuY3Rpb24gZnJvbnRlbmRfZW5zdXJlRGVidWdn
ZXJFbmFibGVkKGNhbGxiYWNrKQotewotICAgIGlmIChXZWJJbnNwZWN0b3IucGFuZWxzLnNjcmlw
dHMuX2RlYnVnZ2VyRW5hYmxlZCkgewotICAgICAgICBjYWxsYmFjaygpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgZnJvbnRlbmRfYWRkU25pZmZlcihXZWJJbnNwZWN0b3IsICJkZWJ1
Z2dlcldhc0VuYWJsZWQiLCBjYWxsYmFjayk7Ci0gICAgV2ViSW5zcGVjdG9yLnBhbmVscy5zY3Jp
cHRzLl90b2dnbGVEZWJ1Z2dpbmcoZmFsc2UpOwotfQotCi1mdW5jdGlvbiBmcm9udGVuZF9lbnN1
cmVEZWJ1Z2dlckRpc2FibGVkKGNhbGxiYWNrKQotewotICAgIGlmICghV2ViSW5zcGVjdG9yLnBh
bmVscy5zY3JpcHRzLl9kZWJ1Z2dlckVuYWJsZWQpIHsKLSAgICAgICAgY2FsbGJhY2soKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGZyb250ZW5kX2FkZFNuaWZmZXIoV2ViSW5zcGVj
dG9yLCAiZGVidWdnZXJXYXNEaXNhYmxlZCIsIGNhbGxiYWNrKTsKLSAgICBXZWJJbnNwZWN0b3Iu
cGFuZWxzLnNjcmlwdHMuX3RvZ2dsZURlYnVnZ2luZyhmYWxzZSk7Ci19Ci0KLWZ1bmN0aW9uIGZy
b250ZW5kX2NvbXBsZXRlRGVidWdnZXJUZXN0KHRlc3RDb250cm9sbGVyKQotewotICAgIGlmIChX
ZWJJbnNwZWN0b3IucGFuZWxzLnNjcmlwdHMucGF1c2VkKSB7Ci0gICAgICAgIFdlYkluc3BlY3Rv
ci5wYW5lbHMuc2NyaXB0cy5fdG9nZ2xlUGF1c2UoKTsKLSAgICAgICAgdGVzdENvbnRyb2xsZXIu
cmVzdWx0cy5wdXNoKCJSZXN1bWVkIHNjcmlwdCBleGVjdXRpb24uIik7Ci0gICAgfQotICAgIGZy
b250ZW5kX2Vuc3VyZURlYnVnZ2VyRGlzYWJsZWQoZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAg
dGVzdENvbnRyb2xsZXIucmVzdWx0cy5wdXNoKCJEaXNhYmxlZCBkZWJ1Z2dlci4iKTsKLSAgICAg
ICAgdGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwotICAgIH0pOwotfQotCi1mdW5jdGlvbiBm
cm9udGVuZF9zY3JpcHRzQXJlUGFyc2VkKHNjcmlwdHMpCi17Ci0gICAgdmFyIHNjcmlwdFNlbGVj
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzY3JpcHRzLWZpbGVzIik7Ci0gICAgdmFyIG9w
dGlvbnMgPSBzY3JpcHRTZWxlY3Qub3B0aW9uczsKLQotICAgIC8vIENoZWNrIHRoYXQgYWxsIHRo
ZSBleHBlY3RlZCBzY3JpcHRzIGFyZSBwcmVzZW50LgotICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
c2NyaXB0cy5sZW5ndGg7IGkrKykgewotICAgICAgICB2YXIgZm91bmQgPSBmYWxzZTsKLSAgICAg
ICAgZm9yICh2YXIgaiA9IDA7IGogPCBvcHRpb25zLmxlbmd0aDsgaisrKSB7Ci0gICAgICAgICAg
ICBpZiAob3B0aW9uc1tqXS50ZXh0LnNlYXJjaChzY3JpcHRzW2ldKSAhPT0gLTEpIHsKLSAgICAg
ICAgICAgICAgICBmb3VuZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCFmb3VuZCkKLSAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19OwotCi1mdW5jdGlvbiBmcm9udGVu
ZF93YWl0VW50aWxTY3JpcHRzQXJlUGFyc2VkKHNjcmlwdHMsIGNhbGxiYWNrKQotewotICAgIGZ1
bmN0aW9uIHdhaXRGb3JBbGxTY3JpcHRzKCkKLSAgICB7Ci0gICAgICAgIGlmIChmcm9udGVuZF9z
Y3JpcHRzQXJlUGFyc2VkKHNjcmlwdHMpKQotICAgICAgICAgICAgY2FsbGJhY2soKTsKLSAgICAg
ICAgZWxzZQotICAgICAgICAgICAgZnJvbnRlbmRfYWRkU25pZmZlcihXZWJJbnNwZWN0b3IsICJw
YXJzZWRTY3JpcHRTb3VyY2UiLCB3YWl0Rm9yQWxsU2NyaXB0cyk7Ci0gICAgfQotICAgIHdhaXRG
b3JBbGxTY3JpcHRzKCk7Ci19OwotCi1mdW5jdGlvbiBmcm9udGVuZF9lbnN1cmVTb3VyY2VGcmFt
ZUxvYWRlZChzb3VyY2VGcmFtZSwgY2FsbGJhY2spCi17Ci0gICAgaWYgKCFzb3VyY2VGcmFtZS5f
bG9hZGVkKQotICAgICAgICBmcm9udGVuZF9hZGRTbmlmZmVyKHNvdXJjZUZyYW1lLCAic2V0Q29u
dGVudCIsIGNhbGxiYWNrKTsKLSAgICBlbHNlCi0gICAgICAgIGNhbGxiYWNrKCk7Ci19Ci0KLWZ1
bmN0aW9uIGZyb250ZW5kX3Nob3dTY3JpcHRTb3VyY2Uoc2NyaXB0TmFtZSwgY2FsbGJhY2spCi17
Ci0gICAgdmFyIHNjcmlwdFNlbGVjdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzY3JpcHRz
LWZpbGVzIik7Ci0gICAgdmFyIG9wdGlvbnMgPSBzY3JpcHRTZWxlY3Qub3B0aW9uczsKLSAgICB2
YXIgc2NyaXB0c1BhbmVsID0gV2ViSW5zcGVjdG9yLnBhbmVscy5zY3JpcHRzOwotCi0gICAgLy8g
U2VsZWN0IHBhZ2UncyBzY3JpcHQgaWYgaXQncyBub3QgY3VycmVudCBvcHRpb24uCi0gICAgdmFy
IHNjcmlwdFJlc291cmNlOwotICAgIGlmIChvcHRpb25zW3NjcmlwdFNlbGVjdC5zZWxlY3RlZElu
ZGV4XS50ZXh0ID09PSBzY3JpcHROYW1lKQotICAgICAgICBzY3JpcHRSZXNvdXJjZSA9IG9wdGlv
bnNbc2NyaXB0U2VsZWN0LnNlbGVjdGVkSW5kZXhdLnJlcHJlc2VudGVkT2JqZWN0OwotICAgIGVs
c2UgewotICAgICAgICB2YXIgcGFnZVNjcmlwdEluZGV4ID0gLTE7Ci0gICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgb3B0aW9ucy5sZW5ndGg7IGkrKykgewotICAgICAgICAgICAgaWYgKG9wdGlv
bnNbaV0udGV4dCA9PT0gc2NyaXB0TmFtZSkgewotICAgICAgICAgICAgICAgIHBhZ2VTY3JpcHRJ
bmRleCA9IGk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KLSAgICAgICAgc2NyaXB0UmVzb3VyY2UgPSBvcHRpb25zW3BhZ2VTY3JpcHRJbmRleF0ucmVw
cmVzZW50ZWRPYmplY3Q7Ci0gICAgICAgIHNjcmlwdHNQYW5lbC5fc2hvd1NjcmlwdE9yUmVzb3Vy
Y2Uoc2NyaXB0UmVzb3VyY2UpOwotICAgIH0KLQotICAgIHZhciB2aWV3ID0gc2NyaXB0c1BhbmVs
LnZpc2libGVWaWV3OwotICAgIGZyb250ZW5kX2Vuc3VyZVNvdXJjZUZyYW1lTG9hZGVkKHZpZXcu
c291cmNlRnJhbWUsIGNhbGxiYWNrLmJpbmQobnVsbCwgdmlldykpOwotfTsKLQotZnVuY3Rpb24g
ZnJvbnRlbmRfY2FwdHVyZVN0YWNrVHJhY2UoY2FsbEZyYW1lcywgdGVzdENvbnRyb2xsZXIpCi17
Ci0gICAgdGVzdENvbnRyb2xsZXIucmVzdWx0cy5wdXNoKCJDYWxsIHN0YWNrOiIpOwotICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgY2FsbEZyYW1lcy5sZW5ndGg7IGkrKykgewotICAgICAgICB2YXIg
ZnJhbWUgPSBjYWxsRnJhbWVzW2ldOwotICAgICAgICB2YXIgc2NyaXB0T3JSZXNvdXJjZSA9IFdl
Ykluc3BlY3Rvci5wYW5lbHMuc2NyaXB0cy5fc291cmNlSURNYXBbZnJhbWUuc291cmNlSURdOwot
ICAgICAgICB2YXIgdXJsID0gc2NyaXB0T3JSZXNvdXJjZSAmJiBXZWJJbnNwZWN0b3IuZGlzcGxh
eU5hbWVGb3JVUkwoc2NyaXB0T3JSZXNvdXJjZS5zb3VyY2VVUkwgfHwgc2NyaXB0T3JSZXNvdXJj
ZS51cmwpOwotICAgICAgICB2YXIgcyA9ICIgICAgIiArIGkgKyAiKSAiICsgZnJhbWUuZnVuY3Rp
b25OYW1lICsgIiAoIiArIHVybCArICI6IiArIGZyYW1lLmxpbmUgKyAiKSI7Ci0gICAgICAgIHRl
c3RDb250cm9sbGVyLnJlc3VsdHMucHVzaChzKTsKLSAgICB9Ci19CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci10ZXN0Mi5qcyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXRlc3QyLmpzCmluZGV4IDUyOGVlOGYu
LjgwYjk4YTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2Rl
YnVnZ2VyLXRlc3QyLmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2Rl
YnVnZ2VyLXRlc3QyLmpzCkBAIC0yLDYgKzIsOCBAQCB2YXIgaW5pdGlhbGl6ZV9EZWJ1Z2dlclRl
c3QgPSBmdW5jdGlvbigpIHsKIAogSW5zcGVjdG9yVGVzdC5zdGFydERlYnVnZ2VyVGVzdCA9IGZ1
bmN0aW9uKGNhbGxiYWNrKQogeworICAgIFdlYkluc3BlY3Rvci5zaG93UGFuZWwoInNjcmlwdHMi
KTsKKwogICAgIGlmIChXZWJJbnNwZWN0b3IucGFuZWxzLnNjcmlwdHMuX2RlYnVnZ2VyRW5hYmxl
ZCkKICAgICAgICAgc3RhcnRUZXN0KCk7CiAgICAgZWxzZSB7CkBAIC0xMiw5ICsxNCwxMSBAQCBJ
bnNwZWN0b3JUZXN0LnN0YXJ0RGVidWdnZXJUZXN0ID0gZnVuY3Rpb24oY2FsbGJhY2spCiAgICAg
ZnVuY3Rpb24gc3RhcnRUZXN0KCkKICAgICB7CiAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVz
dWx0KCJEZWJ1Z2dlciB3YXMgZW5hYmxlZC4iKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5fYWRk
U25pZmZlcihXZWJJbnNwZWN0b3IsICJwYXVzZWRTY3JpcHQiLCBJbnNwZWN0b3JUZXN0Ll9wYXVz
ZWRTY3JpcHQsIHRydWUpOworICAgICAgICBJbnNwZWN0b3JUZXN0Ll9hZGRTbmlmZmVyKFdlYklu
c3BlY3RvciwgInJlc3VtZWRTY3JpcHQiLCBJbnNwZWN0b3JUZXN0Ll9yZXN1bWVkU2NyaXB0LCB0
cnVlKTsKICAgICAgICAgY2FsbGJhY2soKTsKICAgICB9Ci19Cit9OwogCiBJbnNwZWN0b3JUZXN0
LmNvbXBsZXRlRGVidWdnZXJUZXN0ID0gZnVuY3Rpb24oKQogewpAQCAtMjMsMTMgKzI3LDE2IEBA
IEluc3BlY3RvclRlc3QuY29tcGxldGVEZWJ1Z2dlclRlc3QgPSBmdW5jdGlvbigpCiAgICAgaWYg
KCFzY3JpcHRzUGFuZWwuYnJlYWtwb2ludHNBY3RpdmF0ZWQpCiAgICAgICAgIHNjcmlwdHNQYW5l
bC50b2dnbGVCcmVha3BvaW50c0J1dHRvbi5lbGVtZW50LmNsaWNrKCk7CiAKLSAgICBJbnNwZWN0
b3JUZXN0LnJlc3VtZUV4ZWN1dGlvbigpOworICAgIEluc3BlY3RvclRlc3QucmVzdW1lRXhlY3V0
aW9uKGRpc2FibGVEZWJ1Z2dlcik7CiAKLSAgICBpZiAoIXNjcmlwdHNQYW5lbC5fZGVidWdnZXJF
bmFibGVkKQotICAgICAgICBjb21wbGV0ZVRlc3QoKTsKLSAgICBlbHNlIHsKLSAgICAgICAgSW5z
cGVjdG9yVGVzdC5fYWRkU25pZmZlcihXZWJJbnNwZWN0b3IsICJkZWJ1Z2dlcldhc0Rpc2FibGVk
IiwgY29tcGxldGVUZXN0KTsKLSAgICAgICAgc2NyaXB0c1BhbmVsLl90b2dnbGVEZWJ1Z2dpbmco
ZmFsc2UpOworICAgIGZ1bmN0aW9uIGRpc2FibGVEZWJ1Z2dlcigpCisgICAgeworICAgICAgICBp
ZiAoIXNjcmlwdHNQYW5lbC5fZGVidWdnZXJFbmFibGVkKQorICAgICAgICAgICAgY29tcGxldGVU
ZXN0KCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5fYWRkU25p
ZmZlcihXZWJJbnNwZWN0b3IsICJkZWJ1Z2dlcldhc0Rpc2FibGVkIiwgY29tcGxldGVUZXN0KTsK
KyAgICAgICAgICAgIHNjcmlwdHNQYW5lbC5fdG9nZ2xlRGVidWdnaW5nKGZhbHNlKTsKKyAgICAg
ICAgfQogICAgIH0KIAogICAgIGZ1bmN0aW9uIGNvbXBsZXRlVGVzdCgpCkBAIC0zOSwyMSArNDYs
NjkgQEAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZURlYnVnZ2VyVGVzdCA9IGZ1bmN0aW9uKCkKICAg
ICB9CiB9OwogCitJbnNwZWN0b3JUZXN0LnJ1blRlc3RGdW5jdGlvbkFuZFdhaXRVbnRpbFBhdXNl
ZCA9IGZ1bmN0aW9uKGNhbGxiYWNrKQoreworICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJbkNv
bnNvbGUoInNldFRpbWVvdXQodGVzdEZ1bmN0aW9uLCAwKSIpOworICAgIEluc3BlY3RvclRlc3Qu
YWRkUmVzdWx0KCJTZXQgdGltZXIgZm9yIHRlc3QgZnVuY3Rpb24uIik7CisgICAgSW5zcGVjdG9y
VGVzdC53YWl0VW50aWxQYXVzZWQoY2FsbGJhY2spOworfTsKKwogSW5zcGVjdG9yVGVzdC53YWl0
VW50aWxQYXVzZWQgPSBmdW5jdGlvbihjYWxsYmFjaykKIHsKLSAgICBJbnNwZWN0b3JUZXN0Ll9h
ZGRTbmlmZmVyKFdlYkluc3BlY3RvciwgInBhdXNlZFNjcmlwdCIsIHBhdXNlZFNjcmlwdCk7Cisg
ICAgaWYgKEluc3BlY3RvclRlc3QuX2NhbGxGcmFtZXMpCisgICAgICAgIGNhbGxiYWNrKEluc3Bl
Y3RvclRlc3QuX2NhbGxGcmFtZXMpOworICAgIGVsc2UKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5f
d2FpdFVudGlsUGF1c2VkQ2FsbGJhY2sgPSBjYWxsYmFjazsKK307CiAKLSAgICBmdW5jdGlvbiBw
YXVzZWRTY3JpcHQoY2FsbEZyYW1lcykKLSAgICB7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuYWRk
UmVzdWx0KCJQYXVzZWQgYXQgbGluZSAiICsgY2FsbEZyYW1lc1swXS5saW5lICsgIiBpbiAiICsg
Y2FsbEZyYW1lc1swXS5mdW5jdGlvbk5hbWUpOwotICAgICAgICBjYWxsYmFjayhjYWxsRnJhbWVz
KTsKLSAgICB9CitJbnNwZWN0b3JUZXN0LndhaXRVbnRpbFJlc3VtZWQgPSBmdW5jdGlvbihjYWxs
YmFjaykKK3sKKyAgICBpZiAoIUluc3BlY3RvclRlc3QuX2NhbGxGcmFtZXMpCisgICAgICAgIGNh
bGxiYWNrKCk7CisgICAgZWxzZQorICAgICAgICBJbnNwZWN0b3JUZXN0Ll93YWl0VW50aWxSZXN1
bWVkQ2FsbGJhY2sgPSBjYWxsYmFjazsKIH07CiAKLUluc3BlY3RvclRlc3QucmVzdW1lRXhlY3V0
aW9uID0gZnVuY3Rpb24oKQorSW5zcGVjdG9yVGVzdC5yZXN1bWVFeGVjdXRpb24gPSBmdW5jdGlv
bihjYWxsYmFjaykKIHsKICAgICBpZiAoV2ViSW5zcGVjdG9yLnBhbmVscy5zY3JpcHRzLnBhdXNl
ZCkKICAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5zY3JpcHRzLl90b2dnbGVQYXVzZSgpOwor
ICAgIGlmIChjYWxsYmFjaykKKyAgICAgICAgSW5zcGVjdG9yVGVzdC53YWl0VW50aWxSZXN1bWVk
KGNhbGxiYWNrKTsKK307CisKK0luc3BlY3RvclRlc3QuY2FwdHVyZVN0YWNrVHJhY2UgPSBmdW5j
dGlvbihjYWxsRnJhbWVzKQoreworICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJDYWxsIHN0
YWNrOiIpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2FsbEZyYW1lcy5sZW5ndGg7IGkrKykg
eworICAgICAgICB2YXIgZnJhbWUgPSBjYWxsRnJhbWVzW2ldOworICAgICAgICB2YXIgc2NyaXB0
T3JSZXNvdXJjZSA9IFdlYkluc3BlY3Rvci5wYW5lbHMuc2NyaXB0cy5fc291cmNlSURNYXBbZnJh
bWUuc291cmNlSURdOworICAgICAgICB2YXIgdXJsID0gc2NyaXB0T3JSZXNvdXJjZSAmJiBXZWJJ
bnNwZWN0b3IuZGlzcGxheU5hbWVGb3JVUkwoc2NyaXB0T3JSZXNvdXJjZS5zb3VyY2VVUkwgfHwg
c2NyaXB0T3JSZXNvdXJjZS51cmwpOworICAgICAgICB2YXIgcyA9ICIgICAgIiArIGkgKyAiKSAi
ICsgZnJhbWUuZnVuY3Rpb25OYW1lICsgIiAoIiArIHVybCArICI6IiArIGZyYW1lLmxpbmUgKyAi
KSI7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KHMpOworICAgIH0KK307CisKK0lu
c3BlY3RvclRlc3QuX3BhdXNlZFNjcmlwdCA9IGZ1bmN0aW9uKGNhbGxGcmFtZXMpCit7CisgICAg
SW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIlNjcmlwdCBleGVjdXRpb24gcGF1c2VkLiIpOworICAg
IEluc3BlY3RvclRlc3QuX2NhbGxGcmFtZXMgPSBjYWxsRnJhbWVzOworICAgIGlmIChJbnNwZWN0
b3JUZXN0Ll93YWl0VW50aWxQYXVzZWRDYWxsYmFjaykgeworICAgICAgICB2YXIgY2FsbGJhY2sg
PSBJbnNwZWN0b3JUZXN0Ll93YWl0VW50aWxQYXVzZWRDYWxsYmFjazsKKyAgICAgICAgZGVsZXRl
IEluc3BlY3RvclRlc3QuX3dhaXRVbnRpbFBhdXNlZENhbGxiYWNrOworICAgICAgICBjYWxsYmFj
ayhJbnNwZWN0b3JUZXN0Ll9jYWxsRnJhbWVzKTsKKyAgICB9Cit9CisKK0luc3BlY3RvclRlc3Qu
X3Jlc3VtZWRTY3JpcHQgPSBmdW5jdGlvbigpCit7CisgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1
bHQoIlNjcmlwdCBleGVjdXRpb24gcmVzdW1lZC4iKTsKKyAgICBkZWxldGUgSW5zcGVjdG9yVGVz
dC5fY2FsbEZyYW1lczsKKyAgICBpZiAoSW5zcGVjdG9yVGVzdC5fd2FpdFVudGlsUmVzdW1lZENh
bGxiYWNrKSB7CisgICAgICAgIHZhciBjYWxsYmFjayA9IEluc3BlY3RvclRlc3QuX3dhaXRVbnRp
bFJlc3VtZWRDYWxsYmFjazsKKyAgICAgICAgZGVsZXRlIEluc3BlY3RvclRlc3QuX3dhaXRVbnRp
bFJlc3VtZWRDYWxsYmFjazsKKyAgICAgICAgY2FsbGJhY2soKTsKKyAgICB9CiB9OwogCiBJbnNw
ZWN0b3JUZXN0LnNob3dTY3JpcHRTb3VyY2UgPSBmdW5jdGlvbihzY3JpcHROYW1lLCBjYWxsYmFj
aykKQEAgLTY0LDYgKzExOSwxNSBAQCBJbnNwZWN0b3JUZXN0LnNob3dTY3JpcHRTb3VyY2UgPSBm
dW5jdGlvbihzY3JpcHROYW1lLCBjYWxsYmFjaykKICAgICAgICAgSW5zcGVjdG9yVGVzdC5fYWRk
U25pZmZlcihXZWJJbnNwZWN0b3IsICJwYXJzZWRTY3JpcHRTb3VyY2UiLCBJbnNwZWN0b3JUZXN0
LnNob3dTY3JpcHRTb3VyY2UuYmluZChJbnNwZWN0b3JUZXN0LCBzY3JpcHROYW1lLCBjYWxsYmFj
aykpOwogfTsKIAorSW5zcGVjdG9yVGVzdC53YWl0VW50aWxDdXJyZW50U291cmNlRnJhbWVJc0xv
YWRlZCA9IGZ1bmN0aW9uKGNhbGxiYWNrKQoreworICAgIHZhciBzb3VyY2VGcmFtZSA9IFdlYklu
c3BlY3Rvci5jdXJyZW50UGFuZWwudmlzaWJsZVZpZXcuc291cmNlRnJhbWU7CisgICAgaWYgKHNv
dXJjZUZyYW1lLl9sb2FkZWQpCisgICAgICAgIGNhbGxiYWNrKHNvdXJjZUZyYW1lKTsKKyAgICBl
bHNlCisgICAgICAgIEluc3BlY3RvclRlc3QuX2FkZFNuaWZmZXIoc291cmNlRnJhbWUsICJzZXRD
b250ZW50IiwgY2FsbGJhY2suYmluZChudWxsLCBzb3VyY2VGcmFtZSkpOworfTsKKwogSW5zcGVj
dG9yVGVzdC5fc2NyaXB0c0FyZVBhcnNlZCA9IGZ1bmN0aW9uKHNjcmlwdHMpCiB7CiAgICAgdmFy
IHNjcmlwdFNlbGVjdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzY3JpcHRzLWZpbGVzIik7
CkBAIC0xMDYsMTIgKzE3MCw1MiBAQCBJbnNwZWN0b3JUZXN0Ll9zaG93U2NyaXB0U291cmNlID0g
ZnVuY3Rpb24oc2NyaXB0TmFtZSwgY2FsbGJhY2spCiAgICAgICAgIHNjcmlwdHNQYW5lbC5fc2hv
d1NjcmlwdE9yUmVzb3VyY2Uoc2NyaXB0UmVzb3VyY2UpOwogICAgIH0KIAotICAgIHZhciB2aWV3
ID0gc2NyaXB0c1BhbmVsLnZpc2libGVWaWV3OwotICAgIGNhbGxiYWNrID0gY2FsbGJhY2suYmlu
ZChudWxsLCB2aWV3KTsKLSAgICBpZiAoIXZpZXcuc291cmNlRnJhbWUuX2xvYWRlZCkKLSAgICAg
ICAgSW5zcGVjdG9yVGVzdC5fYWRkU25pZmZlcih2aWV3LnNvdXJjZUZyYW1lLCAic2V0Q29udGVu
dCIsIGNhbGxiYWNrKTsKLSAgICBlbHNlCisgICAgSW5zcGVjdG9yVGVzdC53YWl0VW50aWxDdXJy
ZW50U291cmNlRnJhbWVJc0xvYWRlZChjYWxsYmFjayk7Cit9OworCitJbnNwZWN0b3JUZXN0LmV4
cGFuZFByb3BlcnRpZXMgPSBmdW5jdGlvbihwcm9wZXJ0aWVzLCBjYWxsYmFjaykKK3sKKyAgICB2
YXIgaW5kZXggPSAwOworICAgIGZ1bmN0aW9uIGV4cGFuZE5leHRQYXRoKCkKKyAgICB7CisgICAg
ICAgIGlmIChpbmRleCA9PT0gcHJvcGVydGllcy5sZW5ndGgpIHsKKyAgICAgICAgICAgIGNhbGxi
YWNrKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgdmFyIHBhcmVu
dFRyZWVFbGVtZW50ID0gcHJvcGVydGllc1tpbmRleCsrXTsKKyAgICAgICAgdmFyIHBhdGggPSBw
cm9wZXJ0aWVzW2luZGV4KytdOworICAgICAgICBJbnNwZWN0b3JUZXN0Ll9leHBhbmRQcm9wZXJ0
eShwYXJlbnRUcmVlRWxlbWVudCwgcGF0aCwgMCwgZXhwYW5kTmV4dFBhdGgpOworICAgIH0KKyAg
ICBJbnNwZWN0b3JUZXN0LnJ1bkFmdGVyUGVuZGluZ0Rpc3BhdGNoZXMoZXhwYW5kTmV4dFBhdGgp
OworfTsKKworSW5zcGVjdG9yVGVzdC5fZXhwYW5kUHJvcGVydHkgPSBmdW5jdGlvbihwYXJlbnRU
cmVlRWxlbWVudCwgcGF0aCwgcGF0aEluZGV4LCBjYWxsYmFjaykKK3sKKyAgICBpZiAocGF0aElu
ZGV4ID09PSBwYXRoLmxlbmd0aCkgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgi
RXhwYW5kZWQgcHJvcGVydHk6ICIgKyBwYXRoLmpvaW4oIi4iKSk7CiAgICAgICAgIGNhbGxiYWNr
KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgdmFyIG5hbWUgPSBwYXRoW3BhdGhJbmRl
eCsrXTsKKyAgICB2YXIgcHJvcGVydHlUcmVlRWxlbWVudCA9IEluc3BlY3RvclRlc3QuX2ZpbmRD
aGlsZFByb3BlcnR5VHJlZUVsZW1lbnQocGFyZW50VHJlZUVsZW1lbnQsIG5hbWUpOworICAgIGlm
ICghcHJvcGVydHlUcmVlRWxlbWVudCkgeworICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0
KCJGYWlsZWQgdG8gZXhwYW5kIHByb3BlcnR5OiAiICsgcGF0aC5zbGljZSgwLCBwYXRoSW5kZXgp
LmpvaW4oIi4iKSk7CisgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZURlYnVnZ2VyVGVzdCgp
OworICAgICAgIHJldHVybjsKKyAgICB9CisgICAgcHJvcGVydHlUcmVlRWxlbWVudC5leHBhbmQo
KTsKKyAgICBJbnNwZWN0b3JUZXN0LnJ1bkFmdGVyUGVuZGluZ0Rpc3BhdGNoZXMoSW5zcGVjdG9y
VGVzdC5fZXhwYW5kUHJvcGVydHkuYmluZChJbnNwZWN0b3JUZXN0LCBwcm9wZXJ0eVRyZWVFbGVt
ZW50LCBwYXRoLCBwYXRoSW5kZXgsIGNhbGxiYWNrKSk7CiB9OwogCi19CitJbnNwZWN0b3JUZXN0
Ll9maW5kQ2hpbGRQcm9wZXJ0eVRyZWVFbGVtZW50ID0gZnVuY3Rpb24ocGFyZW50LCBjaGlsZE5h
bWUpCit7CisgICAgdmFyIGNoaWxkcmVuID0gcGFyZW50LmNoaWxkcmVuOworICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgdmFyIHRyZWVFbGVt
ZW50ID0gY2hpbGRyZW5baV07CisgICAgICAgIHZhciBwcm9wZXJ0eSA9IHRyZWVFbGVtZW50LnBy
b3BlcnR5OworICAgICAgICBpZiAocHJvcGVydHkubmFtZSA9PT0gY2hpbGROYW1lKQorICAgICAg
ICAgICAgcmV0dXJuIHRyZWVFbGVtZW50OworICAgIH0KK307CisKK307CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdDIuanMgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdDIuanMKaW5kZXggNGNi
MzE0MS4uZWEyYzJjMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3IvaW5zcGVjdG9yLXRlc3QyLmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL2luc3BlY3Rvci10ZXN0Mi5qcwpAQCAtMSwxMCArMSwxMSBAQAotdmFyIGluaXRpYWxpemVf
SW5zcGVjdG9yVGVzdCA9IChmdW5jdGlvbigpIHsKK3ZhciBpbml0aWFsaXplX0luc3BlY3RvclRl
c3QgPSBmdW5jdGlvbigpIHsKIAogdmFyIHJlc3VsdHMgPSBbXTsKK3ZhciByZXN1bHRzU3luY2hy
b25pemVkID0gZmFsc2U7CiAKIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0ID0gZnVuY3Rpb24o
KQogewotICAgIEluc3BlY3RvckJhY2tlbmQuZGlkRXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVuZChJ
bnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdENhbGxJZCwgSlNPTi5zdHJpbmdpZnkocmVzdWx0cykp
OworICAgIEluc3BlY3RvckJhY2tlbmQuZGlkRXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVuZChJbnNw
ZWN0b3JUZXN0LmNvbXBsZXRlVGVzdENhbGxJZCwgIiIpOwogfTsKIAogSW5zcGVjdG9yVGVzdC5l
dmFsdWF0ZUluQ29uc29sZSA9IGZ1bmN0aW9uKGNvZGUsIGNhbGxiYWNrKQpAQCAtMjEsMTUgKzIy
LDcwIEBAIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJbkNvbnNvbGUgPSBmdW5jdGlvbihjb2RlLCBj
YWxsYmFjaykKICAgICAgICAgfSk7CiB9OwogCitJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdl
ID0gZnVuY3Rpb24oY29kZSwgY2FsbGJhY2spCit7CisgICAgSW5qZWN0ZWRTY3JpcHRBY2Nlc3Mu
Z2V0RGVmYXVsdCgpLmV2YWx1YXRlKGNvZGUsICJjb25zb2xlIiwgY2FsbGJhY2sgfHwgZnVuY3Rp
b24oKSB7fSk7Cit9OworCiBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCA9IGZ1bmN0aW9uKHRleHQp
CiB7CiAgICAgcmVzdWx0cy5wdXNoKHRleHQpOworICAgIGlmIChyZXN1bHRzU3luY2hyb25pemVk
KQorICAgICAgICBhZGRSZXN1bHRUb1BhZ2UodGV4dCk7CisgICAgZWxzZSB7CisgICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgcmVzdWx0cy5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgIGFkZFJl
c3VsdFRvUGFnZShyZXN1bHRzW2ldKTsKKyAgICAgICAgcmVzdWx0c1N5bmNocm9uaXplZCA9IHRy
dWU7CisgICAgfQorCisgICAgZnVuY3Rpb24gYWRkUmVzdWx0VG9QYWdlKHRleHQpCisgICAgewor
ICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJvdXRwdXQodW5lc2NhcGUoJyIg
KyBlc2NhcGUodGV4dCkgKyAiJykpIik7CisgICAgfQorfTsKKworSW5zcGVjdG9yVGVzdC5hZGRP
YmplY3QgPSBmdW5jdGlvbihvYmplY3QsIG5vbmRldGVybWluaXN0aWNQcm9wcywgcHJlZml4LCBm
aXJzdExpbmVQcmVmaXgpCit7CisgICAgcHJlZml4ID0gcHJlZml4IHx8ICIiOworICAgIGZpcnN0
TGluZVByZWZpeCA9IGZpcnN0TGluZVByZWZpeCB8fCBwcmVmaXg7CisgICAgSW5zcGVjdG9yVGVz
dC5hZGRSZXN1bHQoZmlyc3RMaW5lUHJlZml4ICsgInsiKTsKKyAgICBmb3IgKHZhciBwcm9wIGlu
IG9iamVjdCkgeworICAgICAgICBpZiAoIW9iamVjdC5oYXNPd25Qcm9wZXJ0eShwcm9wKSkKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB2YXIgcHJlZml4V2l0aE5hbWUgPSBwcmVmaXgg
KyAiICAgICIgKyBwcm9wICsgIiA6ICI7CisgICAgICAgIHZhciBwcm9wVmFsdWUgPSBvYmplY3Rb
cHJvcF07CisgICAgICAgIGlmIChub25kZXRlcm1pbmlzdGljUHJvcHMgJiYgcHJvcCBpbiBub25k
ZXRlcm1pbmlzdGljUHJvcHMpCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChw
cmVmaXhXaXRoTmFtZSArICI8IiArIHR5cGVvZiBwcm9wVmFsdWUgKyAiPiIpOworICAgICAgICBl
bHNlIGlmICh0eXBlb2YgcHJvcFZhbHVlID09PSAib2JqZWN0IikKKyAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuYWRkT2JqZWN0KHByb3BWYWx1ZSwgbm9uZGV0ZXJtaW5pc3RpY1Byb3BzLCBwcmVm
aXggKyAiICAgICIsIHByZWZpeFdpdGhOYW1lKTsKKyAgICAgICAgZWxzZSBpZiAodHlwZW9mIHBy
b3BWYWx1ZSA9PT0gInN0cmluZyIpCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3Vs
dChwcmVmaXhXaXRoTmFtZSArICJcIiIgKyBwcm9wVmFsdWUgKyAiXCIiKTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQocHJlZml4V2l0aE5hbWUgKyBw
cm9wVmFsdWUpOworICAgIH0KKyAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChwcmVmaXggKyAi
fSIpOwogfTsKIAogSW5zcGVjdG9yVGVzdC5yZWxvYWRQYWdlID0gZnVuY3Rpb24oY2FsbGJhY2sp
CiB7CisgICAgSW5zcGVjdG9yVGVzdC5fcmVsb2FkUGFnZUNhbGxiYWNrID0gY2FsbGJhY2s7CiAg
ICAgSW5zcGVjdG9yQmFja2VuZC5yZWxvYWRQYWdlKCk7Ci0gICAgSW5zcGVjdG9yVGVzdC5fYWRk
U25pZmZlcihXZWJJbnNwZWN0b3IsICJyZXNldCIsIGNhbGxiYWNrKTsKK307CisKK0luc3BlY3Rv
clRlc3QucGFnZVJlbG9hZGVkID0gZnVuY3Rpb24oKQoreworICAgIHJlc3VsdHNTeW5jaHJvbml6
ZWQgPSBmYWxzZTsKKyAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiUGFnZSByZWxvYWRlZC4i
KTsKKyAgICBpZiAoSW5zcGVjdG9yVGVzdC5fcmVsb2FkUGFnZUNhbGxiYWNrKSB7CisgICAgICAg
IHZhciBjYWxsYmFjayA9IEluc3BlY3RvclRlc3QuX3JlbG9hZFBhZ2VDYWxsYmFjazsKKyAgICAg
ICAgZGVsZXRlIEluc3BlY3RvclRlc3QuX3JlbG9hZFBhZ2VDYWxsYmFjazsKKyAgICAgICAgY2Fs
bGJhY2soKTsKKyAgICB9Cit9OworCitJbnNwZWN0b3JUZXN0LnJ1bkFmdGVyUGVuZGluZ0Rpc3Bh
dGNoZXMgPSBmdW5jdGlvbihjYWxsYmFjaykKK3sKKyAgICBXZWJJbnNwZWN0b3IuVGVzdENvbnRy
b2xsZXIucHJvdG90eXBlLnJ1bkFmdGVyUGVuZGluZ0Rpc3BhdGNoZXMoY2FsbGJhY2spOwogfTsK
IAogSW5zcGVjdG9yVGVzdC5lbmFibGVSZXNvdXJjZVRyYWNraW5nID0gZnVuY3Rpb24oY2FsbGJh
Y2spCkBAIC0zNywxNSArOTMsMTUgQEAgSW5zcGVjdG9yVGVzdC5lbmFibGVSZXNvdXJjZVRyYWNr
aW5nID0gZnVuY3Rpb24oY2FsbGJhY2spCiAgICAgaWYgKFdlYkluc3BlY3Rvci5wYW5lbHMucmVz
b3VyY2VzLnJlc291cmNlVHJhY2tpbmdFbmFibGVkKQogICAgICAgICBjYWxsYmFjaygpOwogICAg
IGVsc2UgewotICAgICAgICBJbnNwZWN0b3JUZXN0Ll9hZGRTbmlmZmVyKFdlYkluc3BlY3Rvciwg
InJlc2V0IiwgY2FsbGJhY2spOworICAgICAgICBJbnNwZWN0b3JUZXN0Ll9yZWxvYWRQYWdlQ2Fs
bGJhY2sgPSBjYWxsYmFjazsKICAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5lbmFibGVSZXNvdXJj
ZVRyYWNraW5nKGZhbHNlKTsKICAgICB9Ci19Cit9OwogCiBJbnNwZWN0b3JUZXN0LmRpc2FibGVS
ZXNvdXJjZVRyYWNraW5nID0gZnVuY3Rpb24oKQogewogICAgIEluc3BlY3RvckJhY2tlbmQuZGlz
YWJsZVJlc291cmNlVHJhY2tpbmcoZmFsc2UpOwotfQorfTsKIAogSW5zcGVjdG9yVGVzdC5maW5k
RE9NTm9kZSA9IGZ1bmN0aW9uKHJvb3QsIGZpbHRlciwgY2FsbGJhY2spCiB7CkBAIC0xMTAsOSAr
MTY2LDkgQEAgSW5zcGVjdG9yVGVzdC5fYWRkU25pZmZlciA9IGZ1bmN0aW9uKHJlY2VpdmVyLCBt
ZXRob2ROYW1lLCBvdmVycmlkZSwgb3B0X3N0aWNreSkKICAgICAgICAgfQogICAgICAgICByZXR1
cm4gcmVzdWx0OwogICAgIH07Ci19Cit9OwogCi19KTsKK307CiAKIHZhciBydW5UZXN0Q2FsbElk
ID0gMDsKIHZhciBjb21wbGV0ZVRlc3RDYWxsSWQgPSAxOwpAQCAtMTI3LDggKzE4MywxMCBAQCBm
dW5jdGlvbiBydW5UZXN0KCkKIAogICAgIGZ1bmN0aW9uIHJ1blRlc3RJbkZyb250ZW5kKGluaXRp
YWxpemF0aW9uRnVuY3Rpb25zLCB0ZXN0RnVuY3Rpb24sIGNvbXBsZXRlVGVzdENhbGxJZCkKICAg
ICB7Ci0gICAgICAgIGlmICh3aW5kb3cuSW5zcGVjdG9yVGVzdCkKKyAgICAgICAgaWYgKHdpbmRv
dy5JbnNwZWN0b3JUZXN0KSB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnBhZ2VSZWxvYWRl
ZCgpOwogICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAKICAgICAgICAgSW5zcGVjdG9y
VGVzdCA9IHt9OwogICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdENhbGxJZCA9IGNv
bXBsZXRlVGVzdENhbGxJZDsKQEAgLTE1NSw2NSArMjEzLDE2IEBAIGZ1bmN0aW9uIHJ1blRlc3Qo
KQogICAgIGxheW91dFRlc3RDb250cm9sbGVyLmV2YWx1YXRlSW5XZWJJbnNwZWN0b3IocnVuVGVz
dENhbGxJZCwgdG9FdmFsdWF0ZSk7CiB9CiAKLWZ1bmN0aW9uIGRpZEV2YWx1YXRlRm9yVGVzdElu
RnJvbnRlbmQoY2FsbElkLCByZXN1bHQpCitmdW5jdGlvbiBkaWRFdmFsdWF0ZUZvclRlc3RJbkZy
b250ZW5kKGNhbGxJZCkKIHsKICAgICBpZiAoY2FsbElkICE9PSBjb21wbGV0ZVRlc3RDYWxsSWQp
CiAgICAgICAgIHJldHVybjsKLSAgICBkdW1wQXJyYXkoSlNPTi5wYXJzZShyZXN1bHQpKTsKICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5jbG9zZVdlYkluc3BlY3RvcigpOwogICAgIHNldFRpbWVv
dXQoZnVuY3Rpb24oKSB7CiAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUo
KTsKICAgICB9LCAwKTsKIH0KIAotZnVuY3Rpb24gZHVtcChkYXRhKQotewotICAgIGlmICh0eXBl
b2YgZGF0YSA9PT0gInN0cmluZyIpIHsKLSAgICAgICAgb3V0cHV0KGRhdGEpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKHR5cGVvZiBkYXRhID09PSAib2JqZWN0IikgewotICAg
ICAgICBkdW1wT2JqZWN0KGRhdGEpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYg
KHR5cGVvZiBkYXRhID09PSAiYXJyYXkiKSB7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
cmVzdWx0Lmxlbmd0aDsgKytpKQotICAgICAgICAgICAgZHVtcChyZXN1bHRbaV0pOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotfQotCi1mdW5jdGlvbiBkdW1wQXJyYXkocmVzdWx0KQotewotICAg
IGlmIChyZXN1bHQgaW5zdGFuY2VvZiBBcnJheSkgewotICAgICAgICBmb3IgKHZhciBpID0gMDsg
aSA8IHJlc3VsdC5sZW5ndGg7ICsraSkKLSAgICAgICAgICAgIGR1bXAocmVzdWx0W2ldKTsKLSAg
ICB9IGVsc2UKLSAgICAgICAgb3V0cHV0KHJlc3VsdCk7Ci19Ci0KLWZ1bmN0aW9uIGR1bXBPYmpl
Y3Qob2JqZWN0LCBub25kZXRlcm1pbmlzdGljUHJvcHMsIHByZWZpeCwgZmlyc3RMaW5lUHJlZml4
KQotewotICAgIHByZWZpeCA9IHByZWZpeCB8fCAiIjsKLSAgICBmaXJzdExpbmVQcmVmaXggPSBm
aXJzdExpbmVQcmVmaXggfHwgcHJlZml4OwotICAgIG91dHB1dChmaXJzdExpbmVQcmVmaXggKyAi
eyIpOwotICAgIGZvciAodmFyIHByb3AgaW4gb2JqZWN0KSB7Ci0gICAgICAgIHZhciBwcmVmaXhX
aXRoTmFtZSA9IHByZWZpeCArICIgICAgIiArIHByb3AgKyAiIDogIjsKLSAgICAgICAgdmFyIHBy
b3BWYWx1ZSA9IG9iamVjdFtwcm9wXTsKLSAgICAgICAgaWYgKG5vbmRldGVybWluaXN0aWNQcm9w
cyAmJiBwcm9wIGluIG5vbmRldGVybWluaXN0aWNQcm9wcykKLSAgICAgICAgICAgIG91dHB1dChw
cmVmaXhXaXRoTmFtZSArICI8IiArIHR5cGVvZiBwcm9wVmFsdWUgKyAiPiIpOwotICAgICAgICBl
bHNlIGlmICh0eXBlb2YgcHJvcFZhbHVlID09PSAib2JqZWN0IikKLSAgICAgICAgICAgIGR1bXBP
YmplY3QocHJvcFZhbHVlLCBub25kZXRlcm1pbmlzdGljUHJvcHMsIHByZWZpeCArICIgICAgIiwg
cHJlZml4V2l0aE5hbWUpOwotICAgICAgICBlbHNlIGlmICh0eXBlb2YgcHJvcFZhbHVlID09PSAi
c3RyaW5nIikKLSAgICAgICAgICAgIG91dHB1dChwcmVmaXhXaXRoTmFtZSArICJcIiIgKyBwcm9w
VmFsdWUgKyAiXCIiKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgb3V0cHV0KHByZWZpeFdp
dGhOYW1lICsgcHJvcFZhbHVlKTsKLSAgICB9Ci0gICAgb3V0cHV0KHByZWZpeCArICJ9Iik7Ci19
Ci0KIGZ1bmN0aW9uIG91dHB1dCh0ZXh0KQogewogICAgIHZhciBvdXRwdXRFbGVtZW50ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZGVidWdnZXItYnJlYWtwb2ludHMtbm90LWFjdGl2YXRlZC1vbi1yZWxvYWQuaHRtbCBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1icmVha3BvaW50cy1ub3QtYWN0aXZhdGVk
LW9uLXJlbG9hZC5odG1sCmluZGV4IDFjOGIwZmIuLmMwNjY2NGQgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1icmVha3BvaW50cy1ub3QtYWN0aXZhdGVkLW9uLXJl
bG9hZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1icmVha3BvaW50
cy1ub3QtYWN0aXZhdGVkLW9uLXJlbG9hZC5odG1sCkBAIC0xNCwyOSArMTQsMjcgQEAgdmFyIHRl
c3QgPSBmdW5jdGlvbigpCiAgICAgdmFyIHRlc3ROYW1lID0gV2ViSW5zcGVjdG9yLm1haW5SZXNv
dXJjZS51cmw7CiAgICAgdGVzdE5hbWUgPSB0ZXN0TmFtZS5zdWJzdHJpbmcodGVzdE5hbWUubGFz
dEluZGV4T2YoJy8nKSArIDEpOwogCi0gICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCgic2NyaXB0
cyIpOwotICAgIEluc3BlY3RvclRlc3Quc3RhcnREZWJ1Z2dlclRlc3Qoc3RhcnREZWJ1Z2dlclRl
c3RDYWxsYmFjayk7CisgICAgSW5zcGVjdG9yVGVzdC5zdGFydERlYnVnZ2VyVGVzdChzdGVwMSk7
CiAKLSAgICBmdW5jdGlvbiBzdGFydERlYnVnZ2VyVGVzdENhbGxiYWNrKCkKKyAgICBmdW5jdGlv
biBzdGVwMSgpCiAgICAgewotICAgICAgICBJbnNwZWN0b3JUZXN0LnNob3dTY3JpcHRTb3VyY2Uo
dGVzdE5hbWUsIHNob3dTY3JpcHRTb3VyY2VDYWxsYmFjayk7CisgICAgICAgIEluc3BlY3RvclRl
c3Quc2hvd1NjcmlwdFNvdXJjZSh0ZXN0TmFtZSwgc3RlcDIpOwogICAgIH0KIAotICAgIGZ1bmN0
aW9uIHNob3dTY3JpcHRTb3VyY2VDYWxsYmFjayh2aWV3KQorICAgIGZ1bmN0aW9uIHN0ZXAyKCkK
ICAgICB7CiAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJNYWluIHJlc291cmNlIHdh
cyBzaG93bi4iKTsKLSAgICAgICAgdmlldy5fYWRkQnJlYWtwb2ludCg4KTsKKyAgICAgICAgV2Vi
SW5zcGVjdG9yLnBhbmVscy5zY3JpcHRzLnZpc2libGVWaWV3Ll9hZGRCcmVha3BvaW50KDgpOwog
ICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnNjcmlwdHMudG9nZ2xlQnJlYWtwb2ludHNCdXR0
b24uZWxlbWVudC5jbGljaygpOwotICAgICAgICBJbnNwZWN0b3JUZXN0LnJlbG9hZFBhZ2UocmVs
b2FkUGFnZUNhbGxiYWNrKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5yZWxvYWRQYWdlKHN0ZXAz
KTsKICAgICB9CiAKLSAgICBmdW5jdGlvbiByZWxvYWRQYWdlQ2FsbGJhY2soKQorICAgIGZ1bmN0
aW9uIHN0ZXAzKCkKICAgICB7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJQYWdl
IHJlbG9hZGVkLiIpOwotICAgICAgICBJbnNwZWN0b3JUZXN0LnNob3dTY3JpcHRTb3VyY2UodGVz
dE5hbWUsIHNob3dTY3JpcHRTb3VyY2VBZnRlclJlbG9hZENhbGxiYWNrKTsKKyAgICAgICAgSW5z
cGVjdG9yVGVzdC5zaG93U2NyaXB0U291cmNlKHRlc3ROYW1lLCBzdGVwNCk7CiAgICAgfQogCi0g
ICAgZnVuY3Rpb24gc2hvd1NjcmlwdFNvdXJjZUFmdGVyUmVsb2FkQ2FsbGJhY2sodmlldykKKyAg
ICBmdW5jdGlvbiBzdGVwNCgpCiAgICAgewogICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3Vs
dCgiTWFpbiByZXNvdXJjZSB3YXMgc2hvd24uIik7CiAgICAgICAgIGlmICghV2ViSW5zcGVjdG9y
LnBhbmVscy5zY3JpcHRzLmJyZWFrcG9pbnRzQWN0aXZhdGVkKQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLWN5Y2xpYy1yZWYtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLWN5Y2xpYy1yZWYtZXhwZWN0ZWQudHh0CmluZGV4IDUz
ZmNmOWEuLjczNTRlMWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dl
ci1jeWNsaWMtcmVmLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVi
dWdnZXItY3ljbGljLXJlZi1leHBlY3RlZC50eHQKQEAgLTMsNiArMyw2IEBAIFRlc3RzIHRoYXQg
ZGVidWdnaW5nIGEgcGFnZSB3aGVyZSBPYmplY3QgcHJvdG90eXBlIGhhcyBhIGN5Y2xpYyByZWZl
cmVuY2Ugd29uJ3QKIERlYnVnZ2VyIHdhcyBlbmFibGVkLgogU2V0IHRpbWVyIGZvciB0ZXN0IGZ1
bmN0aW9uLgogU2NyaXB0IGV4ZWN1dGlvbiBwYXVzZWQuCi1SZXN1bWVkIHNjcmlwdCBleGVjdXRp
b24uCi1EaXNhYmxlZCBkZWJ1Z2dlci4KK1NjcmlwdCBleGVjdXRpb24gcmVzdW1lZC4KK0RlYnVn
Z2VyIHdhcyBkaXNhYmxlZC4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Rl
YnVnZ2VyLWN5Y2xpYy1yZWYuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1j
eWNsaWMtcmVmLmh0bWwKaW5kZXggOGQ1MWJjNC4uMTdmZTYzOSAxMDA3NTUKLS0tIGEvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLWN5Y2xpYy1yZWYuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZGVidWdnZXItY3ljbGljLXJlZi5odG1sCkBAIC0xLDcgKzEsNyBAQAogPGh0
bWw+CiA8aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0
b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0
b3IvZGVidWdnZXItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0
cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li9odHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci10ZXN0Mi5qcyI+PC9zY3JpcHQ+CiA8c2Ny
aXB0PgogCiBPYmplY3QucHJvdG90eXBlLmN5Y2xpY1JlZiA9IE9iamVjdC5wcm90b3R5cGU7CkBA
IC0xMCw0MSArMTAsMjcgQEAgZnVuY3Rpb24gdGVzdEZ1bmN0aW9uKCkKIHsKICAgICB2YXIgbyA9
IG5ldyBPYmplY3QoKTsKICAgICBkZWJ1Z2dlcjsKLSAgICBub3RpZnlEb25lKCk7CiB9CiAKLWZ1
bmN0aW9uIGRvaXQoKQordmFyIHRlc3QgPSBmdW5jdGlvbigpCiB7Ci0gICAgZXZhbHVhdGVJbldl
Ykluc3BlY3RvcigiZnJvbnRlbmRfdGVzdERlYnVnT2JqZWN0V2l0aEN5Y2xpY1JlZiIsIGR1bXBB
cnJheSk7Ci19Ci0KLWZ1bmN0aW9uIGZyb250ZW5kX3Rlc3REZWJ1Z09iamVjdFdpdGhDeWNsaWNS
ZWYodGVzdENvbnRyb2xsZXIpCi17Ci0gICAgdGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgp
OworICAgIEluc3BlY3RvclRlc3Quc3RhcnREZWJ1Z2dlclRlc3Qoc3RlcDEpOwogCi0gICAgV2Vi
SW5zcGVjdG9yLnNob3dQYW5lbCgic2NyaXB0cyIpOwotICAgIGZyb250ZW5kX2Vuc3VyZURlYnVn
Z2VyRW5hYmxlZChkZWJ1Z2dlcldhc0VuYWJsZWRDYWxsYmFjayk7Ci0KLSAgICBmdW5jdGlvbiBk
ZWJ1Z2dlcldhc0VuYWJsZWRDYWxsYmFjaygpCisgICAgZnVuY3Rpb24gc3RlcDEoKQogICAgIHsK
LSAgICAgICAgdGVzdENvbnRyb2xsZXIucmVzdWx0cy5wdXNoKCJEZWJ1Z2dlciB3YXMgZW5hYmxl
ZC4iKTsKLSAgICAgICAgZnJvbnRlbmRfZXZhbHVhdGVJbkNvbnNvbGUoInNldFRpbWVvdXQodGVz
dEZ1bmN0aW9uLCAwKSIsIGZ1bmN0aW9uKHJlc3VsdCkKLSAgICAgICAgewotICAgICAgICAgICAg
dGVzdENvbnRyb2xsZXIucmVzdWx0cy5wdXNoKCJTZXQgdGltZXIgZm9yIHRlc3QgZnVuY3Rpb24u
Iik7Ci0gICAgICAgIH0pOworICAgICAgICBJbnNwZWN0b3JUZXN0LnJ1blRlc3RGdW5jdGlvbkFu
ZFdhaXRVbnRpbFBhdXNlZChzdGVwMik7CiAgICAgfQogCi0gICAgZnJvbnRlbmRfYWRkU25pZmZl
cihXZWJJbnNwZWN0b3IsICJwYXVzZWRTY3JpcHQiLCBmdW5jdGlvbihjYWxsRnJhbWVzKQorICAg
IGZ1bmN0aW9uIHN0ZXAyKCkKICAgICB7Ci0gICAgICAgIHRlc3RDb250cm9sbGVyLnJlc3VsdHMu
cHVzaCgiU2NyaXB0IGV4ZWN1dGlvbiBwYXVzZWQuIik7Ci0gICAgICAgIGZyb250ZW5kX2NvbXBs
ZXRlRGVidWdnZXJUZXN0KHRlc3RDb250cm9sbGVyKTsKLSAgICB9KTsKKyAgICAgICAgSW5zcGVj
dG9yVGVzdC5jb21wbGV0ZURlYnVnZ2VyVGVzdCgpOworICAgIH0KIH0KIAogPC9zY3JpcHQ+CiA8
L2hlYWQ+CiAKLTxib2R5IG9ubG9hZD0ib25sb2FkKCkiPgorPGJvZHkgb25sb2FkPSJydW5UZXN0
KCkiPgogPHA+CiBUZXN0cyB0aGF0IGRlYnVnZ2luZyBhIHBhZ2Ugd2hlcmUgT2JqZWN0IHByb3Rv
dHlwZSBoYXMgYSBjeWNsaWMgcmVmZXJlbmNlIHdvbid0CiBjcmFzaCB0aGUgYnJvd3Nlci48YSBo
cmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDM1NTgiPkJ1ZyA0
MzU1ODwvYT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1ldmFs
LXdoaWxlLXBhdXNlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdn
ZXItZXZhbC13aGlsZS1wYXVzZWQtZXhwZWN0ZWQudHh0CmluZGV4IDJkODM3MWMuLjhmNGRkMzAg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1ldmFsLXdoaWxlLXBh
dXNlZC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLWV2
YWwtd2hpbGUtcGF1c2VkLWV4cGVjdGVkLnR4dApAQCAtNSw2ICs1LDYgQEAgU2V0IHRpbWVyIGZv
ciB0ZXN0IGZ1bmN0aW9uLgogU2NyaXB0IGV4ZWN1dGlvbiBwYXVzZWQuCiBFdmFsdWF0ZWQgc2Ny
aXB0IG9uIHRoZSB0b3AgZnJhbWU6IDQwMjEKIEV2YWx1YXRlZCBzY3JpcHQgb24gdGhlIGNhbGxp
bmcgZnJhbWU6IDMwMQotUmVzdW1lZCBzY3JpcHQgZXhlY3V0aW9uLgotRGlzYWJsZWQgZGVidWdn
ZXIuCitTY3JpcHQgZXhlY3V0aW9uIHJlc3VtZWQuCitEZWJ1Z2dlciB3YXMgZGlzYWJsZWQuCiAK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1ldmFsLXdoaWxlLXBh
dXNlZC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLWV2YWwtd2hpbGUtcGF1
c2VkLmh0bWwKaW5kZXggMTViMjBhOC4uZDgzMmFhMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2RlYnVnZ2VyLWV2YWwtd2hpbGUtcGF1c2VkLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2RlYnVnZ2VyLWV2YWwtd2hpbGUtcGF1c2VkLmh0bWwKQEAgLTEsNjggKzEs
NjAgQEAKIDxodG1sPgogPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0
b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0Mi5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItdGVzdDIuanMiPjwvc2Ny
aXB0PgogPHNjcmlwdD4KIAogdmFyIGdsb2JhbFZhciA9IHsgYjogMSB9OwogCi1mdW5jdGlvbiBz
bGF2ZSh4KSB7CitmdW5jdGlvbiBzbGF2ZSh4KQorewogICAgIHZhciB5ID0gMjA7CiAgICAgZGVi
dWdnZXI7Ci0gICAgbm90aWZ5RG9uZSgpOwogfQogCi1mdW5jdGlvbiB0ZXN0RnVuY3Rpb24oKSB7
Ci0gICAgdmFyIGxvY2FsT2JqZWN0ID0ge2E6IDMwMH07CitmdW5jdGlvbiB0ZXN0RnVuY3Rpb24o
KQoreworICAgIHZhciBsb2NhbE9iamVjdCA9IHsgYTogMzAwIH07CiAgICAgc2xhdmUoNDAwMCk7
CiB9CiAKLWZ1bmN0aW9uIGRvaXQoKQordmFyIHRlc3QgPSBmdW5jdGlvbigpCiB7Ci0gICAgZXZh
bHVhdGVJbldlYkluc3BlY3RvcigiZnJvbnRlbmRfdGVzdFBhdXNlT25EZWJ1Z2dlclN0YXRlbWVu
dCIsIGR1bXBBcnJheSk7Ci19CisgICAgSW5zcGVjdG9yVGVzdC5zdGFydERlYnVnZ2VyVGVzdChz
dGVwMSk7CiAKLWZ1bmN0aW9uIGZyb250ZW5kX3Rlc3RQYXVzZU9uRGVidWdnZXJTdGF0ZW1lbnQo
dGVzdENvbnRyb2xsZXIpCi17Ci0gICAgdGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwor
ICAgIGZ1bmN0aW9uIHN0ZXAxKCkKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QucnVuVGVz
dEZ1bmN0aW9uQW5kV2FpdFVudGlsUGF1c2VkKHN0ZXAyKTsKKyAgICB9CiAKLSAgICBXZWJJbnNw
ZWN0b3Iuc2hvd1BhbmVsKCJzY3JpcHRzIik7Ci0gICAgZnJvbnRlbmRfZW5zdXJlRGVidWdnZXJF
bmFibGVkKGRlYnVnZ2VyV2FzRW5hYmxlZENhbGxiYWNrKTsKKyAgICBmdW5jdGlvbiBzdGVwMihj
YWxsRnJhbWVzKQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluQ29uc29s
ZSgieCArIHkgKyBnbG9iYWxWYXIuYiIsIHN0ZXAzLmJpbmQobnVsbCwgY2FsbEZyYW1lcykpOwor
ICAgIH0KIAotICAgIGZ1bmN0aW9uIGRlYnVnZ2VyV2FzRW5hYmxlZENhbGxiYWNrKCkKKyAgICBm
dW5jdGlvbiBzdGVwMyhjYWxsRnJhbWVzLCByZXN1bHQpCiAgICAgewotICAgICAgICB0ZXN0Q29u
dHJvbGxlci5yZXN1bHRzLnB1c2goIkRlYnVnZ2VyIHdhcyBlbmFibGVkLiIpOwotICAgICAgICBm
cm9udGVuZF9ldmFsdWF0ZUluQ29uc29sZSgic2V0VGltZW91dCh0ZXN0RnVuY3Rpb24sIDApIiwg
ZnVuY3Rpb24ocmVzdWx0KQotICAgICAgICB7Ci0gICAgICAgICAgICB0ZXN0Q29udHJvbGxlci5y
ZXN1bHRzLnB1c2goIlNldCB0aW1lciBmb3IgdGVzdCBmdW5jdGlvbi4iKTsKLSAgICAgICAgfSk7
CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJFdmFsdWF0ZWQgc2NyaXB0IG9uIHRo
ZSB0b3AgZnJhbWU6ICIgKyByZXN1bHQpOworICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnNj
cmlwdHMuc2lkZWJhclBhbmVzLmNhbGxzdGFjay5zZWxlY3RlZENhbGxGcmFtZSA9IGNhbGxGcmFt
ZXNbMV07CisgICAgICAgIEluc3BlY3RvclRlc3QucnVuQWZ0ZXJQZW5kaW5nRGlzcGF0Y2hlcyhz
dGVwNCk7CiAgICAgfQogCi0gICAgZnJvbnRlbmRfYWRkU25pZmZlcihXZWJJbnNwZWN0b3IsICJw
YXVzZWRTY3JpcHQiLCBmdW5jdGlvbihjYWxsRnJhbWVzKQorICAgIGZ1bmN0aW9uIHN0ZXA0KCkK
ICAgICB7Ci0gICAgICAgIHRlc3RDb250cm9sbGVyLnJlc3VsdHMucHVzaCgiU2NyaXB0IGV4ZWN1
dGlvbiBwYXVzZWQuIik7Ci0gICAgICAgIGZyb250ZW5kX2V2YWx1YXRlSW5Db25zb2xlKCJ4ICsg
eSArIGdsb2JhbFZhci5iIiwgZnVuY3Rpb24ocmVzdWx0KQotICAgICAgICB7Ci0gICAgICAgICAg
ICB0ZXN0Q29udHJvbGxlci5yZXN1bHRzLnB1c2goIkV2YWx1YXRlZCBzY3JpcHQgb24gdGhlIHRv
cCBmcmFtZTogIiArIHJlc3VsdCk7Ci0gICAgICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnNj
cmlwdHMuc2lkZWJhclBhbmVzLmNhbGxzdGFjay5zZWxlY3RlZENhbGxGcmFtZSA9IGNhbGxGcmFt
ZXNbMV07Ci0gICAgICAgICAgICB0ZXN0Q29udHJvbGxlci5ydW5BZnRlclBlbmRpbmdEaXNwYXRj
aGVzKHRlc3RFdmFsSW5DYWxsaW5nRnJhbWUpOwotICAgICAgICB9KTsKKyAgICAgICAgSW5zcGVj
dG9yVGVzdC5ldmFsdWF0ZUluQ29uc29sZSgibG9jYWxPYmplY3QuYSArIGdsb2JhbFZhci5iIiwg
c3RlcDUpOworICAgIH0KIAotICAgICAgICBmdW5jdGlvbiB0ZXN0RXZhbEluQ2FsbGluZ0ZyYW1l
KCkKLSAgICAgICAgewotICAgICAgICAgICAgZnJvbnRlbmRfZXZhbHVhdGVJbkNvbnNvbGUoImxv
Y2FsT2JqZWN0LmEgKyBnbG9iYWxWYXIuYiIsIGZ1bmN0aW9uKHJlc3VsdCkKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICB0ZXN0Q29udHJvbGxlci5yZXN1bHRzLnB1c2goIkV2YWx1YXRl
ZCBzY3JpcHQgb24gdGhlIGNhbGxpbmcgZnJhbWU6ICIgKyByZXN1bHQpOwotICAgICAgICAgICAg
ICAgIGZyb250ZW5kX2NvbXBsZXRlRGVidWdnZXJUZXN0KHRlc3RDb250cm9sbGVyKTsKLSAgICAg
ICAgICAgIH0pOwotICAgICAgICB9Ci0gICAgfSk7CisgICAgZnVuY3Rpb24gc3RlcDUocmVzdWx0
KQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIkV2YWx1YXRlZCBzY3Jp
cHQgb24gdGhlIGNhbGxpbmcgZnJhbWU6ICIgKyByZXN1bHQpOworICAgICAgICBJbnNwZWN0b3JU
ZXN0LmNvbXBsZXRlRGVidWdnZXJUZXN0KCk7CisgICAgfQogfQogCiA8L3NjcmlwdD4KIDwvaGVh
ZD4KIAotPGJvZHkgb25sb2FkPSJvbmxvYWQoKSI+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+
CiA8cD4KIFRlc3RzIHRoYXQgZXZhbHVhdGlvbiBpbiBjb25zb2xlIHdvcmtzIGZpbmUgd2hlbiBz
Y3JpcHQgaXMgcGF1c2VkLiBJdCBhbHNvIGNoZWNrcyB0aGF0CiBzdGFjayBhbmQgZ2xvYmFsIHZh
cmlhYmxlcyBhcmUgYWNjZXNzaWJsZSBmcm9tIHRoZSBjb25zb2xlLgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLW5vLW5lc3RlZC1wYXVzZS1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItbm8tbmVzdGVkLXBhdXNlLWV4cGVjdGVk
LnR4dAppbmRleCAwYTYyZmEwLi4yM2I0OGY3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZGVidWdnZXItbm8tbmVzdGVkLXBhdXNlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItbm8tbmVzdGVkLXBhdXNlLWV4cGVjdGVkLnR4dApAQCAt
NSw2ICs1LDYgQEAgU2V0IHRpbWVyIGZvciB0ZXN0IGZ1bmN0aW9uLgogU2NyaXB0IGV4ZWN1dGlv
biBwYXVzZWQuCiBTZXQgdGltZXIgZm9yIHRlc3QgZnVuY3Rpb24uCiB0ZXN0RnVuY3Rpb24uaW52
b2NhdGlvbkNvdW50ID0gMgotUmVzdW1lZCBzY3JpcHQgZXhlY3V0aW9uLgotRGlzYWJsZWQgZGVi
dWdnZXIuCitTY3JpcHQgZXhlY3V0aW9uIHJlc3VtZWQuCitEZWJ1Z2dlciB3YXMgZGlzYWJsZWQu
CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1uby1uZXN0ZWQt
cGF1c2UuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1uby1uZXN0ZWQtcGF1
c2UuaHRtbAppbmRleCBkZjhjNWU2Li44YTZjZmI3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZGVidWdnZXItbm8tbmVzdGVkLXBhdXNlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2RlYnVnZ2VyLW5vLW5lc3RlZC1wYXVzZS5odG1sCkBAIC0xLDY0ICsxLDQzIEBA
CiA8aHRtbD4KIDxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2lu
c3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9kZWJ1Z2dlci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9odHRw
L3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdDIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXRlc3QyLmpzIj48L3NjcmlwdD4K
IDxzY3JpcHQ+CiAKIGZ1bmN0aW9uIHRlc3RGdW5jdGlvbigpCiB7CiAgICAgdGVzdEZ1bmN0aW9u
Lmludm9jYXRpb25Db3VudCsrOwogICAgIGRlYnVnZ2VyOwotICAgIGlmICh0ZXN0RnVuY3Rpb24u
ZGlkRXhpdEZyb21OZXN0ZWRDYWxsKQotICAgICAgICBub3RpZnlEb25lKCk7Ci0gICAgdGVzdEZ1
bmN0aW9uLmRpZEV4aXRGcm9tTmVzdGVkQ2FsbCA9IHRydWU7CiB9Ci10ZXN0RnVuY3Rpb24uaW52
b2NhdGlvbkNvdW50ID0gMDsKIAotZnVuY3Rpb24gZG9pdCgpCi17Ci0gICAgZXZhbHVhdGVJbldl
Ykluc3BlY3RvcigiZnJvbnRlbmRfdGVzdE5vTmVzdGVkUGF1c2UiLCBkdW1wQXJyYXkpOwotfQor
dGVzdEZ1bmN0aW9uLmludm9jYXRpb25Db3VudCA9IDA7CiAKLWZ1bmN0aW9uIGZyb250ZW5kX3Rl
c3ROb05lc3RlZFBhdXNlKHRlc3RDb250cm9sbGVyKQordmFyIHRlc3QgPSBmdW5jdGlvbigpCiB7
Ci0gICAgdGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIEluc3BlY3RvclRlc3Qu
c3RhcnREZWJ1Z2dlclRlc3Qoc3RlcDEpOwogCi0gICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCgi
c2NyaXB0cyIpOwotICAgIGZyb250ZW5kX2Vuc3VyZURlYnVnZ2VyRW5hYmxlZChkZWJ1Z2dlcldh
c0VuYWJsZWRDYWxsYmFjayk7Ci0KLSAgICBmdW5jdGlvbiBkZWJ1Z2dlcldhc0VuYWJsZWRDYWxs
YmFjaygpCisgICAgZnVuY3Rpb24gc3RlcDEoKQogICAgIHsKLSAgICAgICAgdGVzdENvbnRyb2xs
ZXIucmVzdWx0cy5wdXNoKCJEZWJ1Z2dlciB3YXMgZW5hYmxlZC4iKTsKLSAgICAgICAgZnJvbnRl
bmRfZXZhbHVhdGVJbkNvbnNvbGUoInNldFRpbWVvdXQodGVzdEZ1bmN0aW9uLCAwKSIsIGZ1bmN0
aW9uKHJlc3VsdCkKLSAgICAgICAgewotICAgICAgICAgICAgdGVzdENvbnRyb2xsZXIucmVzdWx0
cy5wdXNoKCJTZXQgdGltZXIgZm9yIHRlc3QgZnVuY3Rpb24uIik7Ci0gICAgICAgIH0pOworICAg
ICAgICBJbnNwZWN0b3JUZXN0LnJ1blRlc3RGdW5jdGlvbkFuZFdhaXRVbnRpbFBhdXNlZChzdGVw
Mik7CiAgICAgfQogCi0gICAgdmFyIHBhdXNlZCA9IGZhbHNlOwotICAgIGZyb250ZW5kX2FkZFNu
aWZmZXIoV2ViSW5zcGVjdG9yLCAicGF1c2VkU2NyaXB0IiwgZnVuY3Rpb24oY2FsbEZyYW1lcykK
KyAgICBmdW5jdGlvbiBzdGVwMigpCiAgICAgewotICAgICAgICBpZiAocGF1c2VkKSB7Ci0gICAg
ICAgICAgICB0ZXN0Q29udHJvbGxlci5yZXN1bHRzLnB1c2goIlNjcmlwdCBleGVjdXRpb24gcGF1
c2VkIHNlY29uZCB0aW1lLiIpOwotICAgICAgICAgICAgdGVzdENvbnRyb2xsZXIubm90aWZ5RG9u
ZSgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIHBhdXNlZCA9IHRy
dWU7Ci0gICAgICAgIHRlc3RDb250cm9sbGVyLnJlc3VsdHMucHVzaCgiU2NyaXB0IGV4ZWN1dGlv
biBwYXVzZWQuIik7CisgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJbkNvbnNvbGUoInRl
c3RGdW5jdGlvbigpOyB0ZXN0RnVuY3Rpb24uaW52b2NhdGlvbkNvdW50Iiwgc3RlcDMpOworICAg
ICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiU2V0IHRpbWVyIGZvciB0ZXN0IGZ1bmN0aW9u
LiIpOworICAgIH0KIAotICAgICAgICB0ZXN0Q29udHJvbGxlci5yZXN1bHRzLnB1c2goIlNldCB0
aW1lciBmb3IgdGVzdCBmdW5jdGlvbi4iKTsKLSAgICAgICAgZnJvbnRlbmRfZXZhbHVhdGVJbkNv
bnNvbGUoInRlc3RGdW5jdGlvbigpOyB0ZXN0RnVuY3Rpb24uaW52b2NhdGlvbkNvdW50IiwgZnVu
Y3Rpb24ocmVzdWx0KQotICAgICAgICB7Ci0gICAgICAgICAgICB0ZXN0Q29udHJvbGxlci5yZXN1
bHRzLnB1c2goInRlc3RGdW5jdGlvbi5pbnZvY2F0aW9uQ291bnQgPSAiICsgcmVzdWx0KTsKLSAg
ICAgICAgICAgIGZyb250ZW5kX2NvbXBsZXRlRGVidWdnZXJUZXN0KHRlc3RDb250cm9sbGVyKTsK
LSAgICAgICAgfSk7Ci0gICAgfSk7CisgICAgZnVuY3Rpb24gc3RlcDMocmVzdWx0KQorICAgIHsK
KyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoInRlc3RGdW5jdGlvbi5pbnZvY2F0aW9u
Q291bnQgPSAiICsgcmVzdWx0KTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZURlYnVn
Z2VyVGVzdCgpOworICAgIH0KIH0KIAogPC9zY3JpcHQ+CiA8L2hlYWQ+CiAKLTxib2R5IG9ubG9h
ZD0ib25sb2FkKCkiPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgogPHA+CiBUZXN0cyB0aGF0
IGRlYnVnZ2VyIHdpbGwgc2tpcCBicmVha3BvaW50IGhpdCB3aGVuIHNjcmlwdCBleGVjdXRpb24g
aXMgYWxyZWFkeSBwYXVzZWQuIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD00MTc2OCI+U2VlIGJ1ZzwvYT4KIDwvcD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1wYXVzZS1pbi1ldmFsLXNjcmlwdC1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItcGF1c2UtaW4tZXZhbC1zY3JpcHQtZXhw
ZWN0ZWQudHh0CmluZGV4IDU4NTMwZmMuLmY2ZGQ0NzkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9kZWJ1Z2dlci1wYXVzZS1pbi1ldmFsLXNjcmlwdC1leHBlY3RlZC50eHQKKysr
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXBhdXNlLWluLWV2YWwtc2NyaXB0LWV4
cGVjdGVkLnR4dApAQCAtNSw2ICs1LDYgQEAgRXZhbHVhdGVkIHNjcmlwdCBpbiBjb25zb2xlLgog
U2NyaXB0IGV4ZWN1dGlvbiBwYXVzZWQuCiBFeGVjdXRpb24gbGluZSBudW1iZXI6IDMKIEV4ZWN1
dGlvbiBsaW5lIHRleHQ6ICAgICBkZWJ1Z2dlcjsKLVJlc3VtZWQgc2NyaXB0IGV4ZWN1dGlvbi4K
LURpc2FibGVkIGRlYnVnZ2VyLgorU2NyaXB0IGV4ZWN1dGlvbiByZXN1bWVkLgorRGVidWdnZXIg
d2FzIGRpc2FibGVkLgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdn
ZXItcGF1c2UtaW4tZXZhbC1zY3JpcHQuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1
Z2dlci1wYXVzZS1pbi1ldmFsLXNjcmlwdC5odG1sCmluZGV4IGM2NTVhYjYuLmJlNGU3ZWEgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1wYXVzZS1pbi1ldmFsLXNj
cmlwdC5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1wYXVzZS1pbi1l
dmFsLXNjcmlwdC5odG1sCkBAIC0xLDYzICsxLDQyIEBACiA8aHRtbD4KIDxoZWFkPgotPHNjcmlw
dCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3Njcmlw
dD4KLTxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci10ZXN0Lmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0
b3ItdGVzdDIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL2RlYnVnZ2VyLXRlc3QyLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+CiAKLWZ1bmN0aW9uIGRv
aXQoKQotewotICAgIGV2YWx1YXRlSW5XZWJJbnNwZWN0b3IoImZyb250ZW5kX3Rlc3RQYXVzZU9u
RGVidWdnZXJTdGF0ZW1lbnQiLCBkdW1wQXJyYXkpOwotfQogCi1mdW5jdGlvbiBmcm9udGVuZF90
ZXN0UGF1c2VPbkRlYnVnZ2VyU3RhdGVtZW50KHRlc3RDb250cm9sbGVyKQordmFyIHRlc3QgPSBm
dW5jdGlvbigpCiB7Ci0gICAgdGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotCi0gICAg
V2ViSW5zcGVjdG9yLnNob3dQYW5lbCgic2NyaXB0cyIpOwotCiAgICAgdmFyIHNjcmlwdFRvRXZh
bHVhdGUgPSAiZnVuY3Rpb24gdGVzdEZ1bmN0aW9uKCkge1xuIiArCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiICAgIGRlYnVnZ2VyO1xuIiArCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAiICAgIG5vdGlmeURvbmUoKTtcbiIgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIn1c
biIgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgInNldFRpbWVvdXQodGVzdEZ1bmN0aW9u
LCAwKTtcbiI7Ci0gICAgZnVuY3Rpb24gZGVidWdnZXJXYXNFbmFibGVkQ2FsbGJhY2soKQotICAg
IHsKLSAgICAgICAgdGVzdENvbnRyb2xsZXIucmVzdWx0cy5wdXNoKCJEZWJ1Z2dlciB3YXMgZW5h
YmxlZC4iKTsKIAotICAgICAgICBmcm9udGVuZF9ldmFsdWF0ZUluQ29uc29sZShzY3JpcHRUb0V2
YWx1YXRlLAotICAgICAgICBmdW5jdGlvbihyZXN1bHQpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IHRlc3RDb250cm9sbGVyLnJlc3VsdHMucHVzaCgiRXZhbHVhdGVkIHNjcmlwdCBpbiBjb25zb2xl
LiIpOwotICAgICAgICB9KTsKLSAgICB9CisgICAgSW5zcGVjdG9yVGVzdC5zdGFydERlYnVnZ2Vy
VGVzdChzdGVwMSk7CiAKLSAgICBmcm9udGVuZF9lbnN1cmVEZWJ1Z2dlckVuYWJsZWQoZGVidWdn
ZXJXYXNFbmFibGVkQ2FsbGJhY2spOworICAgIGZ1bmN0aW9uIHN0ZXAxKCkKKyAgICB7CisgICAg
ICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJbkNvbnNvbGUoc2NyaXB0VG9FdmFsdWF0ZSwgSW5z
cGVjdG9yVGVzdC5hZGRSZXN1bHQuYmluZChJbnNwZWN0b3JUZXN0LCAiRXZhbHVhdGVkIHNjcmlw
dCBpbiBjb25zb2xlLiIpKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC53YWl0VW50aWxQYXVzZWQo
c3RlcDIpOworICAgIH0KIAotICAgIGZyb250ZW5kX2FkZFNuaWZmZXIoV2ViSW5zcGVjdG9yLCAi
cGF1c2VkU2NyaXB0IiwgZnVuY3Rpb24oY2FsbEZyYW1lcykKKyAgICBmdW5jdGlvbiBzdGVwMigp
CiAgICAgewotICAgICAgICB0ZXN0Q29udHJvbGxlci5yZXN1bHRzLnB1c2goIlNjcmlwdCBleGVj
dXRpb24gcGF1c2VkLiIpOwotICAgICAgICBmcm9udGVuZF9jaGVja0V4ZWN1dGlvbkxpbmVXaGVu
U291cmNlRnJhbWVJc0xvYWRlZCh0ZXN0Q29udHJvbGxlciwgZnJvbnRlbmRfY29tcGxldGVEZWJ1
Z2dlclRlc3QuYmluZChudWxsLCB0ZXN0Q29udHJvbGxlcikpOwotICAgIH0pOwotfQorICAgICAg
ICBJbnNwZWN0b3JUZXN0LndhaXRVbnRpbEN1cnJlbnRTb3VyY2VGcmFtZUlzTG9hZGVkKHN0ZXAz
KTsKKyAgICB9CiAKLWZ1bmN0aW9uIGZyb250ZW5kX2NoZWNrRXhlY3V0aW9uTGluZVdoZW5Tb3Vy
Y2VGcmFtZUlzTG9hZGVkKHRlc3RDb250cm9sbGVyLCBjYWxsYmFjaykKLXsKLSAgICB2YXIgc291
cmNlRnJhbWUgPSBXZWJJbnNwZWN0b3IuY3VycmVudFBhbmVsLnZpc2libGVWaWV3LnNvdXJjZUZy
YW1lOwotICAgIGlmIChzb3VyY2VGcmFtZS5fbG9hZGVkKSB7Ci0gICAgICAgIHRlc3RDb250cm9s
bGVyLnJlc3VsdHMucHVzaCgiRXhlY3V0aW9uIGxpbmUgbnVtYmVyOiAiICsgc291cmNlRnJhbWUu
ZXhlY3V0aW9uTGluZSk7Ci0gICAgICAgIHRlc3RDb250cm9sbGVyLnJlc3VsdHMucHVzaCgiRXhl
Y3V0aW9uIGxpbmUgdGV4dDogIiArIHNvdXJjZUZyYW1lLl90ZXh0TW9kZWwubGluZShzb3VyY2VG
cmFtZS5leGVjdXRpb25MaW5lIC0gMSkpOwotICAgICAgICBjYWxsYmFjaygpOwotICAgIH0gZWxz
ZSB7Ci0gICAgICAgIGZyb250ZW5kX2FkZFNuaWZmZXIoc291cmNlRnJhbWUsICJzZXRDb250ZW50
IiwgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBmcm9udGVuZF9jaGVja0V4ZWN1dGlvbkxpbmVX
aGVuU291cmNlRnJhbWVJc0xvYWRlZCh0ZXN0Q29udHJvbGxlciwgY2FsbGJhY2spOwotICAgICAg
ICB9KTsKKyAgICBmdW5jdGlvbiBzdGVwMyhzb3VyY2VGcmFtZSkKKyAgICB7CisgICAgICAgIElu
c3BlY3RvclRlc3QuYWRkUmVzdWx0KCJFeGVjdXRpb24gbGluZSBudW1iZXI6ICIgKyBzb3VyY2VG
cmFtZS5leGVjdXRpb25MaW5lKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIkV4
ZWN1dGlvbiBsaW5lIHRleHQ6ICIgKyBzb3VyY2VGcmFtZS5fdGV4dE1vZGVsLmxpbmUoc291cmNl
RnJhbWUuZXhlY3V0aW9uTGluZSAtIDEpKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0
ZURlYnVnZ2VyVGVzdCgpOwogICAgIH0KIH0KIAogPC9zY3JpcHQ+CiA8L2hlYWQ+CiAKLTxib2R5
IG9ubG9hZD0ib25sb2FkKCkiPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgogPHA+CiBUZXN0
cyB0aGF0IGRlYnVnZ2VyIHdpbGwgc3RvcCBvbiAiZGVidWdnZXIiIHN0YXRlbWVudCBpbiBhIGZ1
bmN0aW9uIHRoYXQgd2FzIGFkZGVkCiB0byB0aGUgaW5zcGVjdGVkIHBhZ2UgdmlhIGV2YWx1YXRp
b24gaW4gV2ViIEluc3BlY3RvciBjb25zb2xlLjxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD00MTA1OCI+QnVnIDQxMDU4PC9hPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXBhdXNlLW9uLWRlYnVnZ2VyLXN0YXRlbWVudC1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItcGF1c2Utb24tZGVi
dWdnZXItc3RhdGVtZW50LWV4cGVjdGVkLnR4dAppbmRleCAzOWVhZjBjLi5kNzhlZTdiIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItcGF1c2Utb24tZGVidWdnZXIt
c3RhdGVtZW50LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdn
ZXItcGF1c2Utb24tZGVidWdnZXItc3RhdGVtZW50LWV4cGVjdGVkLnR4dApAQCAtMyw2ICszLDYg
QEAgVGVzdHMgdGhhdCBkZWJ1Z2dlciB3aWxsIHN0b3Agb24gImRlYnVnZ2VyIiBzdGF0ZW1lbnQu
CiBEZWJ1Z2dlciB3YXMgZW5hYmxlZC4KIFNldCB0aW1lciBmb3IgdGVzdCBmdW5jdGlvbi4KIFNj
cmlwdCBleGVjdXRpb24gcGF1c2VkLgotUmVzdW1lZCBzY3JpcHQgZXhlY3V0aW9uLgotRGlzYWJs
ZWQgZGVidWdnZXIuCitTY3JpcHQgZXhlY3V0aW9uIHJlc3VtZWQuCitEZWJ1Z2dlciB3YXMgZGlz
YWJsZWQuCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1wYXVz
ZS1vbi1kZWJ1Z2dlci1zdGF0ZW1lbnQuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1
Z2dlci1wYXVzZS1vbi1kZWJ1Z2dlci1zdGF0ZW1lbnQuaHRtbAppbmRleCA3NDE5NmNhLi5jYmIw
NDdjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItcGF1c2Utb24t
ZGVidWdnZXItc3RhdGVtZW50Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVn
Z2VyLXBhdXNlLW9uLWRlYnVnZ2VyLXN0YXRlbWVudC5odG1sCkBAIC0xLDQ2ICsxLDMzIEBACiA8
aHRtbD4KIDxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3Bl
Y3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9kZWJ1Z2dlci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9odHRwL3Rl
c3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdDIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXRlc3QyLmpzIj48L3NjcmlwdD4KIDxz
Y3JpcHQ+CiAKLWZ1bmN0aW9uIHRlc3RGdW5jdGlvbigpIHsKLSAgICBkZWJ1Z2dlcjsKLSAgICBu
b3RpZnlEb25lKCk7Ci19Ci0KLWZ1bmN0aW9uIGRvaXQoKQorZnVuY3Rpb24gdGVzdEZ1bmN0aW9u
KCkKIHsKLSAgICBldmFsdWF0ZUluV2ViSW5zcGVjdG9yKCJmcm9udGVuZF90ZXN0UGF1c2VPbkRl
YnVnZ2VyU3RhdGVtZW50IiwgZHVtcEFycmF5KTsKKyAgICBkZWJ1Z2dlcjsKIH0KIAotZnVuY3Rp
b24gZnJvbnRlbmRfdGVzdFBhdXNlT25EZWJ1Z2dlclN0YXRlbWVudCh0ZXN0Q29udHJvbGxlcikK
K3ZhciB0ZXN0ID0gZnVuY3Rpb24oKQogewotICAgIHRlc3RDb250cm9sbGVyLndhaXRVbnRpbERv
bmUoKTsKLQotICAgIFdlYkluc3BlY3Rvci5zaG93UGFuZWwoInNjcmlwdHMiKTsKLSAgICBmcm9u
dGVuZF9lbnN1cmVEZWJ1Z2dlckVuYWJsZWQoZGVidWdnZXJXYXNFbmFibGVkQ2FsbGJhY2spOwor
ICAgIEluc3BlY3RvclRlc3Quc3RhcnREZWJ1Z2dlclRlc3Qoc3RlcDEpOwogCi0gICAgZnVuY3Rp
b24gZGVidWdnZXJXYXNFbmFibGVkQ2FsbGJhY2soKQorICAgIGZ1bmN0aW9uIHN0ZXAxKCkKICAg
ICB7Ci0gICAgICAgIHRlc3RDb250cm9sbGVyLnJlc3VsdHMucHVzaCgiRGVidWdnZXIgd2FzIGVu
YWJsZWQuIik7Ci0gICAgICAgIGZyb250ZW5kX2V2YWx1YXRlSW5Db25zb2xlKCJzZXRUaW1lb3V0
KHRlc3RGdW5jdGlvbiwgMCkiLCBmdW5jdGlvbihyZXN1bHQpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIHRlc3RDb250cm9sbGVyLnJlc3VsdHMucHVzaCgiU2V0IHRpbWVyIGZvciB0ZXN0IGZ1bmN0
aW9uLiIpOwotICAgICAgICB9KTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5ydW5UZXN0RnVuY3Rp
b25BbmRXYWl0VW50aWxQYXVzZWQoc3RlcDIpOwogICAgIH0KIAotICAgIGZyb250ZW5kX2FkZFNu
aWZmZXIoV2ViSW5zcGVjdG9yLCAicGF1c2VkU2NyaXB0IiwgZnVuY3Rpb24oY2FsbEZyYW1lcykK
KyAgICBmdW5jdGlvbiBzdGVwMigpCiAgICAgewotICAgICAgICB0ZXN0Q29udHJvbGxlci5yZXN1
bHRzLnB1c2goIlNjcmlwdCBleGVjdXRpb24gcGF1c2VkLiIpOwotICAgICAgICBmcm9udGVuZF9j
b21wbGV0ZURlYnVnZ2VyVGVzdCh0ZXN0Q29udHJvbGxlcik7Ci0gICAgfSk7CisgICAgICAgIElu
c3BlY3RvclRlc3QuY29tcGxldGVEZWJ1Z2dlclRlc3QoKTsKKyAgICB9CiB9CiAKIDwvc2NyaXB0
PgogPC9oZWFkPgogCi08Ym9keSBvbmxvYWQ9Im9ubG9hZCgpIj4KKzxib2R5IG9ubG9hZD0icnVu
VGVzdCgpIj4KIDxwPgogVGVzdHMgdGhhdCBkZWJ1Z2dlciB3aWxsIHN0b3Agb24gImRlYnVnZ2Vy
IiBzdGF0ZW1lbnQuCiA8L3A+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVi
dWdnZXItcHJvdG8tcHJvcGVydHktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2RlYnVnZ2VyLXByb3RvLXByb3BlcnR5LWV4cGVjdGVkLnR4dAppbmRleCBjZjJlY2FhLi4wMDE5
NmM4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItcHJvdG8tcHJv
cGVydHktZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1w
cm90by1wcm9wZXJ0eS1leHBlY3RlZC50eHQKQEAgLTUsNiArNSw2IEBAIFNldCB0aW1lciBmb3Ig
dGVzdCBmdW5jdGlvbi4KIFNjcmlwdCBleGVjdXRpb24gcGF1c2VkLgogRXhwYW5kZWQgcHJvcGVy
dHk6IG8uX19wcm90b19fLl9fcHJvdG9fXwogRXhwYW5kZWQgcHJvcGVydHk6IGQuX19wcm90b19f
Ll9fcHJvdG9fXy5fX3Byb3RvX18uX19wcm90b19fLl9fcHJvdG9fXwotUmVzdW1lZCBzY3JpcHQg
ZXhlY3V0aW9uLgotRGlzYWJsZWQgZGVidWdnZXIuCitTY3JpcHQgZXhlY3V0aW9uIHJlc3VtZWQu
CitEZWJ1Z2dlciB3YXMgZGlzYWJsZWQuCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9kZWJ1Z2dlci1wcm90by1wcm9wZXJ0eS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2RlYnVnZ2VyLXByb3RvLXByb3BlcnR5Lmh0bWwKaW5kZXggNTFhNzQ2Ni4uMjhlZjEwYSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXByb3RvLXByb3BlcnR5Lmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXByb3RvLXByb3BlcnR5Lmh0
bWwKQEAgLTEsMTA4ICsxLDU0IEBACiA8aHRtbD4KIDxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQg
c3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci10ZXN0LmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdDIuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2Vy
LXRlc3QyLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+CiAKLWZ1bmN0aW9uIEMoKSB7CitmdW5jdGlv
biBDKCkKK3sKIH0KKwogQy5wcm90b3R5cGUgPSB7CiAgICAgbTogZnVuY3Rpb24oKSB7IH0KIH0K
IAotZnVuY3Rpb24gdGVzdEZ1bmN0aW9uKCkgeworZnVuY3Rpb24gdGVzdEZ1bmN0aW9uKCkKK3sK
ICAgICB2YXIgbyA9IG5ldyBDKCk7CiAgICAgdmFyIGQgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1l
bnQ7CiAgICAgZGVidWdnZXI7Ci0gICAgbm90aWZ5RG9uZSgpOwogfQogCi1mdW5jdGlvbiBkb2l0
KCkKK3ZhciB0ZXN0ID0gZnVuY3Rpb24oKQogewotICAgIGV2YWx1YXRlSW5XZWJJbnNwZWN0b3Io
ImZyb250ZW5kX3Rlc3RQcm90b1Byb3BlcnR5T25QYXVzZSIsIGR1bXBBcnJheSk7Ci19CisgICAg
SW5zcGVjdG9yVGVzdC5zdGFydERlYnVnZ2VyVGVzdChzdGVwMSk7CiAKLWZ1bmN0aW9uIGZyb250
ZW5kX3Rlc3RQcm90b1Byb3BlcnR5T25QYXVzZSh0ZXN0Q29udHJvbGxlcikKLXsKLSAgICB0ZXN0
Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0KLSAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVs
KCJzY3JpcHRzIik7Ci0gICAgZnJvbnRlbmRfZW5zdXJlRGVidWdnZXJFbmFibGVkKGRlYnVnZ2Vy
V2FzRW5hYmxlZENhbGxiYWNrKTsKLQotICAgIGZ1bmN0aW9uIGRlYnVnZ2VyV2FzRW5hYmxlZENh
bGxiYWNrKCkKKyAgICBmdW5jdGlvbiBzdGVwMSgpCiAgICAgewotICAgICAgICB0ZXN0Q29udHJv
bGxlci5yZXN1bHRzLnB1c2goIkRlYnVnZ2VyIHdhcyBlbmFibGVkLiIpOwotICAgICAgICBmcm9u
dGVuZF9ldmFsdWF0ZUluQ29uc29sZSgic2V0VGltZW91dCh0ZXN0RnVuY3Rpb24sIDApIiwgZnVu
Y3Rpb24ocmVzdWx0KQotICAgICAgICB7Ci0gICAgICAgICAgICB0ZXN0Q29udHJvbGxlci5yZXN1
bHRzLnB1c2goIlNldCB0aW1lciBmb3IgdGVzdCBmdW5jdGlvbi4iKTsKLSAgICAgICAgfSk7Cisg
ICAgICAgIEluc3BlY3RvclRlc3QucnVuVGVzdEZ1bmN0aW9uQW5kV2FpdFVudGlsUGF1c2VkKHN0
ZXAyKTsKICAgICB9CiAKLSAgICBmcm9udGVuZF9hZGRTbmlmZmVyKFdlYkluc3BlY3RvciwgInBh
dXNlZFNjcmlwdCIsIGZ1bmN0aW9uKGNhbGxGcmFtZXMpCisgICAgZnVuY3Rpb24gc3RlcDIoY2Fs
bEZyYW1lcykKICAgICB7Ci0gICAgICAgIHRlc3RDb250cm9sbGVyLnJlc3VsdHMucHVzaCgiU2Ny
aXB0IGV4ZWN1dGlvbiBwYXVzZWQuIik7CiAgICAgICAgIHZhciBzZWN0aW9ucyA9IFdlYkluc3Bl
Y3Rvci5jdXJyZW50UGFuZWwuc2lkZWJhclBhbmVzLnNjb3BlY2hhaW4uc2VjdGlvbnM7CiAgICAg
ICAgIHZhciBsb2NhbFNjb3BlID0gc2VjdGlvbnNbMF0ucHJvcGVydGllc1RyZWVPdXRsaW5lOwog
ICAgICAgICB2YXIgcHJvcGVydGllcyA9IFsKICAgICAgICAgICAgIGxvY2FsU2NvcGUsIFsibyIs
ICJfX3Byb3RvX18iLCAiX19wcm90b19fIl0sCiAgICAgICAgICAgICBsb2NhbFNjb3BlLCBbImQi
LCAiX19wcm90b19fIiwgIl9fcHJvdG9fXyIsICJfX3Byb3RvX18iLCAiX19wcm90b19fIiwgIl9f
cHJvdG9fXyJdCiAgICAgICAgIF07Ci0gICAgICAgIGZyb250ZW5kX2V4cGFuZFByb3BlcnRpZXMo
dGVzdENvbnRyb2xsZXIsIHByb3BlcnRpZXMsIGZyb250ZW5kX2NvbXBsZXRlRGVidWdnZXJUZXN0
LmJpbmQobnVsbCwgdGVzdENvbnRyb2xsZXIpKTsKLSAgICB9KTsKLX0KLQotZnVuY3Rpb24gZnJv
bnRlbmRfZXhwYW5kUHJvcGVydGllcyh0ZXN0Q29udHJvbGxlciwgcHJvcGVydGllcywgY2FsbGJh
Y2spCi17Ci0gICAgdmFyIGluZGV4ID0gMDsKLSAgICBmdW5jdGlvbiBleHBhbmROZXh0UGF0aCgp
Ci0gICAgewotICAgICAgICBpZiAoaW5kZXggPT09IHByb3BlcnRpZXMubGVuZ3RoKSB7Ci0gICAg
ICAgICAgICBjYWxsYmFjaygpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAg
ICAgIHZhciBwYXJlbnRUcmVlRWxlbWVudCA9IHByb3BlcnRpZXNbaW5kZXgrK107Ci0gICAgICAg
IHZhciBwYXRoID0gcHJvcGVydGllc1tpbmRleCsrXTsKLSAgICAgICAgZnJvbnRlbmRfZXhwYW5k
UHJvcGVydHkodGVzdENvbnRyb2xsZXIsIHBhcmVudFRyZWVFbGVtZW50LCBwYXRoLCAwLCBleHBh
bmROZXh0UGF0aCk7CisgICAgICAgIEluc3BlY3RvclRlc3QuZXhwYW5kUHJvcGVydGllcyhwcm9w
ZXJ0aWVzLCBzdGVwMyk7CiAgICAgfQotICAgIHRlc3RDb250cm9sbGVyLnJ1bkFmdGVyUGVuZGlu
Z0Rpc3BhdGNoZXMoZXhwYW5kTmV4dFBhdGgpOwotfQogCi1mdW5jdGlvbiBmcm9udGVuZF9leHBh
bmRQcm9wZXJ0eSh0ZXN0Q29udHJvbGxlciwgcGFyZW50VHJlZUVsZW1lbnQsIHBhdGgsIHBhdGhJ
bmRleCwgY2FsbGJhY2spCi17Ci0gICAgaWYgKHBhdGhJbmRleCA9PT0gcGF0aC5sZW5ndGgpIHsK
LSAgICAgICAgdGVzdENvbnRyb2xsZXIucmVzdWx0cy5wdXNoKCJFeHBhbmRlZCBwcm9wZXJ0eTog
IiArIHBhdGguam9pbigiLiIpKTsKLSAgICAgICAgY2FsbGJhY2soKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLSAgICB2YXIgbmFtZSA9IHBhdGhbcGF0aEluZGV4KytdOwotICAgIHZhciBwcm9w
ZXJ0eVRyZWVFbGVtZW50ID0gZnJvbnRlbmRfZmluZENoaWxkUHJvcGVydHlUcmVlRWxlbWVudChw
YXJlbnRUcmVlRWxlbWVudCwgbmFtZSk7Ci0gICAgaWYgKCFwcm9wZXJ0eVRyZWVFbGVtZW50KSB7
Ci0gICAgICAgdGVzdENvbnRyb2xsZXIucmVzdWx0cy5wdXNoKCJGYWlsZWQgdG8gZXhwYW5kIHBy
b3BlcnR5OiAiICsgcGF0aC5zbGljZSgwLCBwYXRoSW5kZXgpLmpvaW4oIi4iKSk7Ci0gICAgICAg
dGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwotICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAg
cHJvcGVydHlUcmVlRWxlbWVudC5leHBhbmQoKTsKLSAgICB0ZXN0Q29udHJvbGxlci5ydW5BZnRl
clBlbmRpbmdEaXNwYXRjaGVzKGZ1bmN0aW9uKCkKKyAgICBmdW5jdGlvbiBzdGVwMygpCiAgICAg
ewotICAgICAgICBmcm9udGVuZF9leHBhbmRQcm9wZXJ0eSh0ZXN0Q29udHJvbGxlciwgcHJvcGVy
dHlUcmVlRWxlbWVudCwgcGF0aCwgcGF0aEluZGV4LCBjYWxsYmFjayk7Ci0gICAgfSk7Ci19Ci0K
LWZ1bmN0aW9uIGZyb250ZW5kX2ZpbmRDaGlsZFByb3BlcnR5VHJlZUVsZW1lbnQocGFyZW50LCBj
aGlsZE5hbWUpCi17Ci0gICAgdmFyIGNoaWxkcmVuID0gcGFyZW50LmNoaWxkcmVuOwotICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgdmFyIHRy
ZWVFbGVtZW50ID0gY2hpbGRyZW5baV07Ci0gICAgICAgIHZhciBwcm9wZXJ0eSA9IHRyZWVFbGVt
ZW50LnByb3BlcnR5OwotICAgICAgICBpZiAocHJvcGVydHkubmFtZSA9PT0gY2hpbGROYW1lKQot
ICAgICAgICAgICAgcmV0dXJuIHRyZWVFbGVtZW50OworICAgICAgICBJbnNwZWN0b3JUZXN0LmNv
bXBsZXRlRGVidWdnZXJUZXN0KCk7CiAgICAgfQogfQogCiA8L3NjcmlwdD4KIDwvaGVhZD4KIAot
PGJvZHkgb25sb2FkPSJvbmxvYWQoKSI+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+CiA8cD4K
IFRlc3RzIHRoYXQgb2JqZWN0J3MgX19wcm90b19fIHByb3BlcnR5IGlzIHByZXNlbnQgaW4gb2Jq
ZWN0IHByb3BlcnRpZXMgc2VjdGlvbiB3aGVuCiBzY3JpcHQgaXMgcGF1c2VkIG9uIGEgYnJlYWtw
b2ludC48YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDEy
MTQiPkJ1ZyA0MTIxNDwvYT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1
Z2dlci1zdGVwLWluLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dl
ci1zdGVwLWluLWV4cGVjdGVkLnR4dAppbmRleCA3ODc3MWFlLi42MzllMjA4IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItc3RlcC1pbi1leHBlY3RlZC50eHQKKysr
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXN0ZXAtaW4tZXhwZWN0ZWQudHh0CkBA
IC00LDE2ICs0LDE4IEBAIERlYnVnZ2VyIHdhcyBlbmFibGVkLgogU2V0IHRpbWVyIGZvciB0ZXN0
IGZ1bmN0aW9uLgogU2NyaXB0IGV4ZWN1dGlvbiBwYXVzZWQuCiBDYWxsIHN0YWNrOgotICAgIDAp
IHRlc3RGdW5jdGlvbiAoZGVidWdnZXItc3RlcC1pbi5odG1sOjEyKQorICAgIDApIHRlc3RGdW5j
dGlvbiAoZGVidWdnZXItc3RlcC1pbi5odG1sOjE0KQogU3RlcHBpbmcgaW50by4uLgorU2NyaXB0
IGV4ZWN1dGlvbiByZXN1bWVkLgogU2NyaXB0IGV4ZWN1dGlvbiBwYXVzZWQuCiBDYWxsIHN0YWNr
OgotICAgIDApIHRlc3RGdW5jdGlvbiAoZGVidWdnZXItc3RlcC1pbi5odG1sOjEzKQorICAgIDAp
IHRlc3RGdW5jdGlvbiAoZGVidWdnZXItc3RlcC1pbi5odG1sOjE1KQogU3RlcHBpbmcgaW50by4u
LgorU2NyaXB0IGV4ZWN1dGlvbiByZXN1bWVkLgogU2NyaXB0IGV4ZWN1dGlvbiBwYXVzZWQuCiBD
YWxsIHN0YWNrOgotICAgIDApIGQgKGRlYnVnZ2VyLXN0ZXAtaW4uaHRtbDo3KQotICAgIDEpIHRl
c3RGdW5jdGlvbiAoZGVidWdnZXItc3RlcC1pbi5odG1sOjEzKQotUmVzdW1lZCBzY3JpcHQgZXhl
Y3V0aW9uLgotRGlzYWJsZWQgZGVidWdnZXIuCisgICAgMCkgZCAoZGVidWdnZXItc3RlcC1pbi5o
dG1sOjgpCisgICAgMSkgdGVzdEZ1bmN0aW9uIChkZWJ1Z2dlci1zdGVwLWluLmh0bWw6MTUpCitT
Y3JpcHQgZXhlY3V0aW9uIHJlc3VtZWQuCitEZWJ1Z2dlciB3YXMgZGlzYWJsZWQuCiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1zdGVwLWluLmh0bWwgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItc3RlcC1pbi5odG1sCmluZGV4IDMzNmE2ZTYuLjI1
OTNjOTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1zdGVwLWlu
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXN0ZXAtaW4uaHRtbApA
QCAtMSw1OSArMSw0NyBAQAogPGh0bWw+CiA8aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9odHRwL3Rl
c3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0i
Li4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QyLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci10ZXN0
Mi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogCi1mdW5jdGlvbiBkKCkgeworZnVuY3Rpb24gZCgp
Cit7CiAgICAgdmFyIGkgPSAxMDsKIH0KIAotZnVuY3Rpb24gdGVzdEZ1bmN0aW9uKCkgeworZnVu
Y3Rpb24gdGVzdEZ1bmN0aW9uKCkKK3sKICAgICBkZWJ1Z2dlcjsKICAgICBkKCk7Ci0gICAgbm90
aWZ5RG9uZSgpOwogfQogCi1mdW5jdGlvbiBkb2l0KCkKK3ZhciB0ZXN0ID0gZnVuY3Rpb24oKQog
ewotICAgIGV2YWx1YXRlSW5XZWJJbnNwZWN0b3IoImZyb250ZW5kX3Rlc3RTdGVwSW4iLCBkdW1w
QXJyYXkpOwotfQorICAgIEluc3BlY3RvclRlc3Quc3RhcnREZWJ1Z2dlclRlc3Qoc3RlcDEpOwog
Ci1mdW5jdGlvbiBmcm9udGVuZF90ZXN0U3RlcEluKHRlc3RDb250cm9sbGVyKQotewotICAgIHRl
c3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLQotICAgIFdlYkluc3BlY3Rvci5zaG93UGFu
ZWwoInNjcmlwdHMiKTsKLSAgICBmcm9udGVuZF9lbnN1cmVEZWJ1Z2dlckVuYWJsZWQoZGVidWdn
ZXJXYXNFbmFibGVkQ2FsbGJhY2spOwotCi0gICAgZnVuY3Rpb24gZGVidWdnZXJXYXNFbmFibGVk
Q2FsbGJhY2soKQorICAgIGZ1bmN0aW9uIHN0ZXAxKCkKICAgICB7Ci0gICAgICAgIHRlc3RDb250
cm9sbGVyLnJlc3VsdHMucHVzaCgiRGVidWdnZXIgd2FzIGVuYWJsZWQuIik7Ci0gICAgICAgIGZy
b250ZW5kX2V2YWx1YXRlSW5Db25zb2xlKCJzZXRUaW1lb3V0KHRlc3RGdW5jdGlvbiwgMCkiLCBm
dW5jdGlvbihyZXN1bHQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRlc3RDb250cm9sbGVyLnJl
c3VsdHMucHVzaCgiU2V0IHRpbWVyIGZvciB0ZXN0IGZ1bmN0aW9uLiIpOwotICAgICAgICB9KTsK
KyAgICAgICAgSW5zcGVjdG9yVGVzdC5ydW5UZXN0RnVuY3Rpb25BbmRXYWl0VW50aWxQYXVzZWQo
c3RlcDIpOwogICAgIH0KIAogICAgIHZhciBzdGVwQ291bnQgPSAwOwotICAgIGZyb250ZW5kX2Fk
ZFNuaWZmZXIoV2ViSW5zcGVjdG9yLCAicGF1c2VkU2NyaXB0IiwgZnVuY3Rpb24oY2FsbEZyYW1l
cykKKyAgICBmdW5jdGlvbiBzdGVwMihjYWxsRnJhbWVzKQogICAgIHsKLSAgICAgICAgdGVzdENv
bnRyb2xsZXIucmVzdWx0cy5wdXNoKCJTY3JpcHQgZXhlY3V0aW9uIHBhdXNlZC4iKTsKLSAgICAg
ICAgZnJvbnRlbmRfY2FwdHVyZVN0YWNrVHJhY2UoY2FsbEZyYW1lcywgdGVzdENvbnRyb2xsZXIp
OwotICAgICAgICBpZiAoc3RlcENvdW50ID09IDIpCi0gICAgICAgICAgICBmcm9udGVuZF9jb21w
bGV0ZURlYnVnZ2VyVGVzdCh0ZXN0Q29udHJvbGxlcik7Ci0gICAgICAgIGVsc2UgewotICAgICAg
ICAgICAgdGVzdENvbnRyb2xsZXIucmVzdWx0cy5wdXNoKCJTdGVwcGluZyBpbnRvLi4uIik7Cisg
ICAgICAgIEluc3BlY3RvclRlc3QuY2FwdHVyZVN0YWNrVHJhY2UoY2FsbEZyYW1lcyk7CisgICAg
ICAgIGlmIChzdGVwQ291bnQgPCAyKSB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJl
c3VsdCgiU3RlcHBpbmcgaW50by4uLiIpOwogICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInNjcmlwdHMtc3RlcC1pbnRvIikuY2xpY2soKTsKLSAgICAgICAgfQorICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC53YWl0VW50aWxSZXN1bWVkKEluc3BlY3RvclRlc3Qud2FpdFVudGls
UGF1c2VkLmJpbmQoSW5zcGVjdG9yVGVzdCwgc3RlcDIpKTsKKyAgICAgICAgfSBlbHNlCisgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlRGVidWdnZXJUZXN0KCk7CiAgICAgICAgIHN0
ZXBDb3VudCsrOwotICAgIH0sIHRydWUpOworICAgIH0KIH0KIAogPC9zY3JpcHQ+CiA8L2hlYWQ+
CiAKLTxib2R5IG9ubG9hZD0ib25sb2FkKCkiPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgog
PHA+CiBUZXN0cyAic3RlcCBpbiIgZnVuY3Rpb25hbGl0eSBpbiBkZWJ1Z2dlci4KIDwvcD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1zdGVwLW91dC1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItc3RlcC1vdXQtZXhwZWN0ZWQu
dHh0CmluZGV4IDFkODk4OTQuLmRhMmQwYzQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9kZWJ1Z2dlci1zdGVwLW91dC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2RlYnVnZ2VyLXN0ZXAtb3V0LWV4cGVjdGVkLnR4dApAQCAtNCwxMiArNCwxMyBAQCBE
ZWJ1Z2dlciB3YXMgZW5hYmxlZC4KIFNldCB0aW1lciBmb3IgdGVzdCBmdW5jdGlvbi4KIFNjcmlw
dCBleGVjdXRpb24gcGF1c2VkLgogQ2FsbCBzdGFjazoKLSAgICAwKSBkIChkZWJ1Z2dlci1zdGVw
LW91dC5odG1sOjgpCi0gICAgMSkgdGVzdEZ1bmN0aW9uIChkZWJ1Z2dlci1zdGVwLW91dC5odG1s
OjEyKQorICAgIDApIGQgKGRlYnVnZ2VyLXN0ZXAtb3V0Lmh0bWw6OSkKKyAgICAxKSB0ZXN0RnVu
Y3Rpb24gKGRlYnVnZ2VyLXN0ZXAtb3V0Lmh0bWw6MTQpCiBTdGVwcGluZyBvdXQuLi4KK1Njcmlw
dCBleGVjdXRpb24gcmVzdW1lZC4KIFNjcmlwdCBleGVjdXRpb24gcGF1c2VkLgogQ2FsbCBzdGFj
azoKLSAgICAwKSB0ZXN0RnVuY3Rpb24gKGRlYnVnZ2VyLXN0ZXAtb3V0Lmh0bWw6MTMpCi1SZXN1
bWVkIHNjcmlwdCBleGVjdXRpb24uCi1EaXNhYmxlZCBkZWJ1Z2dlci4KKyAgICAwKSB0ZXN0RnVu
Y3Rpb24gKGRlYnVnZ2VyLXN0ZXAtb3V0Lmh0bWw6MTUpCitTY3JpcHQgZXhlY3V0aW9uIHJlc3Vt
ZWQuCitEZWJ1Z2dlciB3YXMgZGlzYWJsZWQuCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9kZWJ1Z2dlci1zdGVwLW91dC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Rl
YnVnZ2VyLXN0ZXAtb3V0Lmh0bWwKaW5kZXggMDJmZWMxYS4uOGYwMGIxNCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXN0ZXAtb3V0Lmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXN0ZXAtb3V0Lmh0bWwKQEAgLTEsNjIgKzEsNDcgQEAK
IDxodG1sPgogPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5z
cGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL2RlYnVnZ2VyLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0Mi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItdGVzdDIuanMiPjwvc2NyaXB0Pgog
PHNjcmlwdD4KIAotZnVuY3Rpb24gZCgpIHsKK2Z1bmN0aW9uIGQoKQorewogICAgIGRlYnVnZ2Vy
OwogfQogCi1mdW5jdGlvbiB0ZXN0RnVuY3Rpb24oKSB7Ci0gICAgZCgpOwotICAgIG5vdGlmeURv
bmUoKTsKLX0KLQotZnVuY3Rpb24gZG9pdCgpCitmdW5jdGlvbiB0ZXN0RnVuY3Rpb24oKQogewot
ICAgIGV2YWx1YXRlSW5XZWJJbnNwZWN0b3IoImZyb250ZW5kX3Rlc3RTdGVwT3V0IiwgZHVtcEFy
cmF5KTsKKyAgICBkKCk7CiB9CiAKLWZ1bmN0aW9uIGZyb250ZW5kX3Rlc3RTdGVwT3V0KHRlc3RD
b250cm9sbGVyKQordmFyIHRlc3QgPSBmdW5jdGlvbigpCiB7Ci0gICAgdGVzdENvbnRyb2xsZXIu
d2FpdFVudGlsRG9uZSgpOworICAgIEluc3BlY3RvclRlc3Quc3RhcnREZWJ1Z2dlclRlc3Qoc3Rl
cDEpOwogCi0gICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCgic2NyaXB0cyIpOwotICAgIGZyb250
ZW5kX2Vuc3VyZURlYnVnZ2VyRW5hYmxlZChkZWJ1Z2dlcldhc0VuYWJsZWRDYWxsYmFjayk7Ci0K
LSAgICBmdW5jdGlvbiBkZWJ1Z2dlcldhc0VuYWJsZWRDYWxsYmFjaygpCisgICAgZnVuY3Rpb24g
c3RlcDEoKQogICAgIHsKLSAgICAgICAgdGVzdENvbnRyb2xsZXIucmVzdWx0cy5wdXNoKCJEZWJ1
Z2dlciB3YXMgZW5hYmxlZC4iKTsKLSAgICAgICAgZnJvbnRlbmRfZXZhbHVhdGVJbkNvbnNvbGUo
InNldFRpbWVvdXQodGVzdEZ1bmN0aW9uLCAwKSIsIGZ1bmN0aW9uKHJlc3VsdCkKLSAgICAgICAg
ewotICAgICAgICAgICAgdGVzdENvbnRyb2xsZXIucmVzdWx0cy5wdXNoKCJTZXQgdGltZXIgZm9y
IHRlc3QgZnVuY3Rpb24uIik7Ci0gICAgICAgIH0pOworICAgICAgICBJbnNwZWN0b3JUZXN0LnJ1
blRlc3RGdW5jdGlvbkFuZFdhaXRVbnRpbFBhdXNlZChzdGVwMik7CiAgICAgfQogCi0gICAgZnJv
bnRlbmRfYWRkU25pZmZlcihXZWJJbnNwZWN0b3IsICJwYXVzZWRTY3JpcHQiLCBmdW5jdGlvbihj
YWxsRnJhbWVzKQorICAgIGZ1bmN0aW9uIHN0ZXAyKGNhbGxGcmFtZXMpCiAgICAgewotICAgICAg
ICB0ZXN0Q29udHJvbGxlci5yZXN1bHRzLnB1c2goIlNjcmlwdCBleGVjdXRpb24gcGF1c2VkLiIp
OwotICAgICAgICBmcm9udGVuZF9jYXB0dXJlU3RhY2tUcmFjZShjYWxsRnJhbWVzLCB0ZXN0Q29u
dHJvbGxlcik7Ci0gICAgICAgIHRlc3RTdGVwT3V0KCk7Ci0gICAgfSk7Ci0KLSAgICBmdW5jdGlv
biB0ZXN0U3RlcE91dCgpIHsKLSAgICAgICAgZnJvbnRlbmRfYWRkU25pZmZlcihXZWJJbnNwZWN0
b3IsICJwYXVzZWRTY3JpcHQiLCBmdW5jdGlvbihjYWxsRnJhbWVzKQotICAgICAgICB7Ci0gICAg
ICAgICAgICB0ZXN0Q29udHJvbGxlci5yZXN1bHRzLnB1c2goIlNjcmlwdCBleGVjdXRpb24gcGF1
c2VkLiIpOwotICAgICAgICAgICAgZnJvbnRlbmRfY2FwdHVyZVN0YWNrVHJhY2UoY2FsbEZyYW1l
cywgdGVzdENvbnRyb2xsZXIpOwotICAgICAgICAgICAgZnJvbnRlbmRfY29tcGxldGVEZWJ1Z2dl
clRlc3QodGVzdENvbnRyb2xsZXIpOwotICAgICAgICB9KTsKLSAgICAgICAgdGVzdENvbnRyb2xs
ZXIucmVzdWx0cy5wdXNoKCJTdGVwcGluZyBvdXQuLi4iKTsKKyAgICAgICAgSW5zcGVjdG9yVGVz
dC5jYXB0dXJlU3RhY2tUcmFjZShjYWxsRnJhbWVzKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5h
ZGRSZXN1bHQoIlN0ZXBwaW5nIG91dC4uLiIpOworICAgICAgICBJbnNwZWN0b3JUZXN0LndhaXRV
bnRpbFJlc3VtZWQoSW5zcGVjdG9yVGVzdC53YWl0VW50aWxQYXVzZWQuYmluZChJbnNwZWN0b3JU
ZXN0LCBzdGVwMykpOwogICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2NyaXB0cy1z
dGVwLW91dCIpLmNsaWNrKCk7CiAgICAgfQorCisgICAgZnVuY3Rpb24gc3RlcDMoY2FsbEZyYW1l
cykKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QuY2FwdHVyZVN0YWNrVHJhY2UoY2FsbEZy
YW1lcyk7CisgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVEZWJ1Z2dlclRlc3QoKTsKKyAg
ICB9CiB9CiAKIDwvc2NyaXB0PgogPC9oZWFkPgogCi08Ym9keSBvbmxvYWQ9Im9ubG9hZCgpIj4K
Kzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KIDxwPgogVGVzdHMgInN0ZXAgb3V0IiBmdW5jdGlv
bmFsaXR5IGluIGRlYnVnZ2VyLgogPC9wPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2RlYnVnZ2VyLXN0ZXAtb3Zlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZGVidWdnZXItc3RlcC1vdmVyLWV4cGVjdGVkLnR4dAppbmRleCA4YjcwNDg4Li44Njk0M2E5
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItc3RlcC1vdmVyLWV4
cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItc3RlcC1vdmVy
LWV4cGVjdGVkLnR4dApAQCAtNCwxOCArNCwyMCBAQCBEZWJ1Z2dlciB3YXMgZW5hYmxlZC4KIFNl
dCB0aW1lciBmb3IgdGVzdCBmdW5jdGlvbi4KIFNjcmlwdCBleGVjdXRpb24gcGF1c2VkLgogQ2Fs
bCBzdGFjazoKLSAgICAwKSBkIChkZWJ1Z2dlci1zdGVwLW92ZXIuaHRtbDoxMikKLSAgICAxKSB0
ZXN0RnVuY3Rpb24gKGRlYnVnZ2VyLXN0ZXAtb3Zlci5odG1sOjE3KQorICAgIDApIGQgKGRlYnVn
Z2VyLXN0ZXAtb3Zlci5odG1sOjE0KQorICAgIDEpIHRlc3RGdW5jdGlvbiAoZGVidWdnZXItc3Rl
cC1vdmVyLmh0bWw6MjApCiBTdGVwcGluZyBvdmVyLi4uCitTY3JpcHQgZXhlY3V0aW9uIHJlc3Vt
ZWQuCiBTY3JpcHQgZXhlY3V0aW9uIHBhdXNlZC4KIENhbGwgc3RhY2s6Ci0gICAgMCkgZCAoZGVi
dWdnZXItc3RlcC1vdmVyLmh0bWw6MTMpCi0gICAgMSkgdGVzdEZ1bmN0aW9uIChkZWJ1Z2dlci1z
dGVwLW92ZXIuaHRtbDoxNykKKyAgICAwKSBkIChkZWJ1Z2dlci1zdGVwLW92ZXIuaHRtbDoxNSkK
KyAgICAxKSB0ZXN0RnVuY3Rpb24gKGRlYnVnZ2VyLXN0ZXAtb3Zlci5odG1sOjIwKQogU3RlcHBp
bmcgb3Zlci4uLgorU2NyaXB0IGV4ZWN1dGlvbiByZXN1bWVkLgogU2NyaXB0IGV4ZWN1dGlvbiBw
YXVzZWQuCiBDYWxsIHN0YWNrOgotICAgIDApIGQgKGRlYnVnZ2VyLXN0ZXAtb3Zlci5odG1sOjE0
KQotICAgIDEpIHRlc3RGdW5jdGlvbiAoZGVidWdnZXItc3RlcC1vdmVyLmh0bWw6MTcpCi1SZXN1
bWVkIHNjcmlwdCBleGVjdXRpb24uCi1EaXNhYmxlZCBkZWJ1Z2dlci4KKyAgICAwKSBkIChkZWJ1
Z2dlci1zdGVwLW92ZXIuaHRtbDoxNikKKyAgICAxKSB0ZXN0RnVuY3Rpb24gKGRlYnVnZ2VyLXN0
ZXAtb3Zlci5odG1sOjIwKQorU2NyaXB0IGV4ZWN1dGlvbiByZXN1bWVkLgorRGVidWdnZXIgd2Fz
IGRpc2FibGVkLgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIt
c3RlcC1vdmVyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItc3RlcC1vdmVy
Lmh0bWwKaW5kZXggOGRiNGE5Zi4uYjIzZGUwNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2RlYnVnZ2VyLXN0ZXAtb3Zlci5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9kZWJ1Z2dlci1zdGVwLW92ZXIuaHRtbApAQCAtMSw2MyArMSw1MiBAQAogPGh0bWw+CiA8aGVh
ZD4KLTxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5q
cyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvZGVidWdn
ZXItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0
b3IvaW5zcGVjdG9yLXRlc3QyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9odHRwL3Rl
c3RzL2luc3BlY3Rvci9kZWJ1Z2dlci10ZXN0Mi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogCi1m
dW5jdGlvbiBmKCkgeworZnVuY3Rpb24gZigpCit7CiAgICAgdmFyIGkgPSAxMDsKIH0KIAotZnVu
Y3Rpb24gZCgpIHsKK2Z1bmN0aW9uIGQoKQorewogICAgIGRlYnVnZ2VyOwogICAgIGYoKTsKIH0K
IAotZnVuY3Rpb24gdGVzdEZ1bmN0aW9uKCkgewotICAgIGQoKTsKLSAgICBub3RpZnlEb25lKCk7
Ci19Ci0KLWZ1bmN0aW9uIGRvaXQoKQorZnVuY3Rpb24gdGVzdEZ1bmN0aW9uKCkKIHsKLSAgICBl
dmFsdWF0ZUluV2ViSW5zcGVjdG9yKCJmcm9udGVuZF90ZXN0U3RlcEluIiwgZHVtcEFycmF5KTsK
KyAgICBkKCk7CiB9CiAKLWZ1bmN0aW9uIGZyb250ZW5kX3Rlc3RTdGVwSW4odGVzdENvbnRyb2xs
ZXIpCit2YXIgdGVzdCA9IGZ1bmN0aW9uKCkKIHsKLSAgICB0ZXN0Q29udHJvbGxlci53YWl0VW50
aWxEb25lKCk7CisgICAgSW5zcGVjdG9yVGVzdC5zdGFydERlYnVnZ2VyVGVzdChzdGVwMSk7CiAK
LSAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJzY3JpcHRzIik7Ci0gICAgZnJvbnRlbmRfZW5z
dXJlRGVidWdnZXJFbmFibGVkKGRlYnVnZ2VyV2FzRW5hYmxlZENhbGxiYWNrKTsKLQotICAgIGZ1
bmN0aW9uIGRlYnVnZ2VyV2FzRW5hYmxlZENhbGxiYWNrKCkKKyAgICBmdW5jdGlvbiBzdGVwMSgp
CiAgICAgewotICAgICAgICB0ZXN0Q29udHJvbGxlci5yZXN1bHRzLnB1c2goIkRlYnVnZ2VyIHdh
cyBlbmFibGVkLiIpOwotICAgICAgICBmcm9udGVuZF9ldmFsdWF0ZUluQ29uc29sZSgic2V0VGlt
ZW91dCh0ZXN0RnVuY3Rpb24sIDApIiwgZnVuY3Rpb24ocmVzdWx0KQotICAgICAgICB7Ci0gICAg
ICAgICAgICB0ZXN0Q29udHJvbGxlci5yZXN1bHRzLnB1c2goIlNldCB0aW1lciBmb3IgdGVzdCBm
dW5jdGlvbi4iKTsKLSAgICAgICAgfSk7CisgICAgICAgIEluc3BlY3RvclRlc3QucnVuVGVzdEZ1
bmN0aW9uQW5kV2FpdFVudGlsUGF1c2VkKHN0ZXAyKTsKICAgICB9CiAKICAgICB2YXIgc3RlcENv
dW50ID0gMDsKLSAgICBmcm9udGVuZF9hZGRTbmlmZmVyKFdlYkluc3BlY3RvciwgInBhdXNlZFNj
cmlwdCIsIGZ1bmN0aW9uKGNhbGxGcmFtZXMpCisgICAgZnVuY3Rpb24gc3RlcDIoY2FsbEZyYW1l
cykKICAgICB7Ci0gICAgICAgIHRlc3RDb250cm9sbGVyLnJlc3VsdHMucHVzaCgiU2NyaXB0IGV4
ZWN1dGlvbiBwYXVzZWQuIik7Ci0gICAgICAgIGZyb250ZW5kX2NhcHR1cmVTdGFja1RyYWNlKGNh
bGxGcmFtZXMsIHRlc3RDb250cm9sbGVyKTsKLSAgICAgICAgaWYgKHN0ZXBDb3VudCA9PSAyKQot
ICAgICAgICAgICAgZnJvbnRlbmRfY29tcGxldGVEZWJ1Z2dlclRlc3QodGVzdENvbnRyb2xsZXIp
OwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHRlc3RDb250cm9sbGVyLnJlc3VsdHMucHVz
aCgiU3RlcHBpbmcgb3Zlci4uLiIpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmNhcHR1cmVTdGFj
a1RyYWNlKGNhbGxGcmFtZXMpOworICAgICAgICBpZiAoc3RlcENvdW50IDwgMikgeworICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIlN0ZXBwaW5nIG92ZXIuLi4iKTsKICAgICAg
ICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzY3JpcHRzLXN0ZXAtb3ZlciIpLmNsaWNr
KCk7Ci0gICAgICAgIH0KKyAgICAgICAgICAgIEluc3BlY3RvclRlc3Qud2FpdFVudGlsUmVzdW1l
ZChJbnNwZWN0b3JUZXN0LndhaXRVbnRpbFBhdXNlZC5iaW5kKEluc3BlY3RvclRlc3QsIHN0ZXAy
KSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZURl
YnVnZ2VyVGVzdCgpOwogICAgICAgICBzdGVwQ291bnQrKzsKLSAgICB9LCB0cnVlKTsKKyAgICB9
CiB9CiAKIDwvc2NyaXB0PgogPC9oZWFkPgogCi08Ym9keSBvbmxvYWQ9Im9ubG9hZCgpIj4KKzxi
b2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KIDxwPgogVGVzdHMgInN0ZXAgb3ZlciIgZnVuY3Rpb25h
bGl0eSBpbiBkZWJ1Z2dlci4KIDwvcD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9kb20tYnJlYWtwb2ludHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Rv
bS1icmVha3BvaW50cy1leHBlY3RlZC50eHQKaW5kZXggOTNmMWU5Zi4uYzg1YjcxZSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1icmVha3BvaW50cy1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1icmVha3BvaW50cy1leHBlY3RlZC50eHQK
QEAgLTMsMTIgKzMsMTggQEAgVGVzdHMgRE9NIGJyZWFrcG9pbnRzLiBCdWcgNDI4ODYKIERlYnVn
Z2VyIHdhcyBlbmFibGVkLgogRm91bmQgZG9tIG5vZGUgZDAuCiBTZXQgc3VidHJlZSBtb2RpZmll
ZCBET00gYnJlYWtwb2ludCBvbiBkMC4KLVBhdXNlZCBhdCBsaW5lIDExIGluIGFwcGVuZEVsZW1l
bnQKK1NjcmlwdCBleGVjdXRpb24gcGF1c2VkLgorbGluZTogMTEsIGZ1bmN0aW9uOiBhcHBlbmRF
bGVtZW50CitTY3JpcHQgZXhlY3V0aW9uIHJlc3VtZWQuCiBGb3VuZCBkb20gbm9kZSBkMS4KIFNl
dCBhdHRyaWJ1dGUgbW9kaWZpZWQgRE9NIGJyZWFrcG9pbnQgb24gZDEuCi1QYXVzZWQgYXQgbGlu
ZSAxNyBpbiBtb2RpZnlBdHRyaWJ1dGUKK1NjcmlwdCBleGVjdXRpb24gcGF1c2VkLgorbGluZTog
MTcsIGZ1bmN0aW9uOiBtb2RpZnlBdHRyaWJ1dGUKK1NjcmlwdCBleGVjdXRpb24gcmVzdW1lZC4K
IEZvdW5kIGRvbSBub2RlIGQxLgogU2V0IG5vZGUgcmVtb3ZlZCBET00gYnJlYWtwb2ludCBvbiBk
MS4KLVBhdXNlZCBhdCBsaW5lIDIzIGluIHJlbW92ZUVsZW1lbnQKK1NjcmlwdCBleGVjdXRpb24g
cGF1c2VkLgorbGluZTogMjMsIGZ1bmN0aW9uOiByZW1vdmVFbGVtZW50CitTY3JpcHQgZXhlY3V0
aW9uIHJlc3VtZWQuCiBEZWJ1Z2dlciB3YXMgZGlzYWJsZWQuCiAKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9kb20tYnJlYWtwb2ludHMuaHRtbCBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9kb20tYnJlYWtwb2ludHMuaHRtbAppbmRleCBmYmI2NTMyLi4xYWUzMGQ3IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWJyZWFrcG9pbnRzLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1icmVha3BvaW50cy5odG1sCkBAIC00MSwxMSArNDEsMTEg
QEAgdmFyIHRlc3QgPSBmdW5jdGlvbigpCiAgICAgICAgIEluc3BlY3RvclRlc3Qud2FpdFVudGls
UGF1c2VkKHN0ZXAzLmJpbmQobnVsbCwgbm9kZSkpOwogICAgIH0KIAotICAgIGZ1bmN0aW9uIHN0
ZXAzKG5vZGUpCisgICAgZnVuY3Rpb24gc3RlcDMobm9kZSwgY2FsbEZyYW1lcykKICAgICB7Cisg
ICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJsaW5lOiAiICsgY2FsbEZyYW1lc1swXS5s
aW5lICsgIiwgZnVuY3Rpb246ICIgKyBjYWxsRnJhbWVzWzBdLmZ1bmN0aW9uTmFtZSk7CiAgICAg
ICAgIFdlYkluc3BlY3Rvci5kb21CcmVha3BvaW50TWFuYWdlci5yZW1vdmVCcmVha3BvaW50c0Zv
ck5vZGUobm9kZSk7Ci0gICAgICAgIEluc3BlY3RvclRlc3QucmVzdW1lRXhlY3V0aW9uKCk7Ci0g
ICAgICAgIGZpbmRET01Ob2RlQnlJZCgiZDEiLCBzdGVwNCk7CisgICAgICAgIEluc3BlY3RvclRl
c3QucmVzdW1lRXhlY3V0aW9uKGZpbmRET01Ob2RlQnlJZC5iaW5kKG51bGwsICJkMSIsIHN0ZXA0
KSk7CiAgICAgfQogCiAgICAgZnVuY3Rpb24gc3RlcDQobm9kZSkKQEAgLTU3LDExICs1NywxMSBA
QCB2YXIgdGVzdCA9IGZ1bmN0aW9uKCkKICAgICAgICAgSW5zcGVjdG9yVGVzdC53YWl0VW50aWxQ
YXVzZWQoc3RlcDUuYmluZChudWxsLCBub2RlKSk7CiAgICAgfQogCi0gICAgZnVuY3Rpb24gc3Rl
cDUobm9kZSkKKyAgICBmdW5jdGlvbiBzdGVwNShub2RlLCBjYWxsRnJhbWVzKQogICAgIHsKKyAg
ICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoImxpbmU6ICIgKyBjYWxsRnJhbWVzWzBdLmxp
bmUgKyAiLCBmdW5jdGlvbjogIiArIGNhbGxGcmFtZXNbMF0uZnVuY3Rpb25OYW1lKTsKICAgICAg
ICAgV2ViSW5zcGVjdG9yLmRvbUJyZWFrcG9pbnRNYW5hZ2VyLnJlbW92ZUJyZWFrcG9pbnRzRm9y
Tm9kZShub2RlKTsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5yZXN1bWVFeGVjdXRpb24oKTsKLSAg
ICAgICAgZmluZERPTU5vZGVCeUlkKCJkMSIsIHN0ZXA2KTsKKyAgICAgICAgSW5zcGVjdG9yVGVz
dC5yZXN1bWVFeGVjdXRpb24oZmluZERPTU5vZGVCeUlkLmJpbmQobnVsbCwgImQxIiwgc3RlcDYp
KTsKICAgICB9CiAKICAgICBmdW5jdGlvbiBzdGVwNihub2RlKQpAQCAtNzMsOCArNzMsOSBAQCB2
YXIgdGVzdCA9IGZ1bmN0aW9uKCkKICAgICAgICAgSW5zcGVjdG9yVGVzdC53YWl0VW50aWxQYXVz
ZWQoc3RlcDcuYmluZChudWxsLCBub2RlKSk7CiAgICAgfQogCi0gICAgZnVuY3Rpb24gc3RlcDco
bm9kZSkKKyAgICBmdW5jdGlvbiBzdGVwNyhub2RlLCBjYWxsRnJhbWVzKQogICAgIHsKKyAgICAg
ICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoImxpbmU6ICIgKyBjYWxsRnJhbWVzWzBdLmxpbmUg
KyAiLCBmdW5jdGlvbjogIiArIGNhbGxGcmFtZXNbMF0uZnVuY3Rpb25OYW1lKTsKICAgICAgICAg
V2ViSW5zcGVjdG9yLmRvbUJyZWFrcG9pbnRNYW5hZ2VyLnJlbW92ZUJyZWFrcG9pbnRzRm9yTm9k
ZShub2RlKTsKICAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZURlYnVnZ2VyVGVzdCgpOwog
ICAgIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zLWFwaS1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy1hcGktZXhwZWN0
ZWQudHh0CmluZGV4IGMwNzQ3MWIuLmE5ZmQyZTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9leHRlbnNpb25zLWFwaS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2V4dGVuc2lvbnMtYXBpLWV4cGVjdGVkLnR4dApAQCAtMSw1ICsxLDYgQEAKIFRlc3Rz
IHB1YmxpYyBpbnRlcmZhY2Ugb2YgV2ViSW5zcGVjdG9yIEV4dGVuc2lvbnMgQVBJCiAKK1BhZ2Ug
cmVsb2FkZWQuCiBTdGFydGVkIGV4dGVuc2lvbi4KIFJ1bm5pbmcgdGVzdHMuLi4KIFJVTk5JTkcg
VEVTVDogZXh0ZW5zaW9uX3Rlc3RBUEkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9leHRlbnNpb25zLWF1ZGl0cy1hcGktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2V4dGVuc2lvbnMtYXVkaXRzLWFwaS1leHBlY3RlZC50eHQKaW5kZXggMTA3MmFhNS4uOTIw
YjNjMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMtYXVkaXRz
LWFwaS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMt
YXVkaXRzLWFwaS1leHBlY3RlZC50eHQKQEAgLTEsNSArMSw2IEBACiBUZXN0cyBhdWRpdHMgc3Vw
cG9ydCBpbiBXZWJJbnNwZWN0b3IgRXh0ZW5zaW9ucyBBUEkKIAorUGFnZSByZWxvYWRlZC4KIFN0
YXJ0ZWQgZXh0ZW5zaW9uLgogUnVubmluZyB0ZXN0cy4uLgogUlVOTklORyBURVNUOiBleHRlbnNp
b25fdGVzdEF1ZGl0c0FQSQpAQCAtMzMsNiArMzQsNiBAQCBjYXRlZ29yeS5vbkF1ZGl0U3RhcnRl
ZCBmaXJlZCwgcmVzdWx0cyBkdW1wIGZvbGxvd3M6CiAgICAgZXhwYW5kZWQgOiBmYWxzZQogICAg
IGFkZENoaWxkIDogPGZ1bmN0aW9uPgogfQotQWxsIHRlc3RzIGRvbmUuCiAgIEV4dGVuc2lvbiBh
dWRpdHMKK0FsbCB0ZXN0cyBkb25lLgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZXh0ZW5zaW9ucy1hdWRpdHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2V4dGVuc2lvbnMtYXVkaXRzLWV4cGVjdGVkLnR4dAppbmRleCBhMWVlZTczLi5lMjVmMzJjIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy1hdWRpdHMtZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zLWF1ZGl0cy1leHBl
Y3RlZC50eHQKQEAgLTEsMTIgKzEsMTIgQEAKIFRlc3RzIGF1ZGl0cyBzdXBwb3J0IGluIFdlYklu
c3BlY3RvciBFeHRlbnNpb25zIEFQSQogCitQYWdlIHJlbG9hZGVkLgogU3RhcnRlZCBleHRlbnNp
b24uCiBSdW5uaW5nIHRlc3RzLi4uCiBSVU5OSU5HIFRFU1Q6IGV4dGVuc2lvbl90ZXN0QXVkaXRz
CiBBZGRlZCBhdWRpdCBjYXRlZ29yeS4KIGNhdGVnb3J5Lm9uQXVkaXRTdGFydGVkIGZpcmVkCiBm
YWlsZWRDYXRlZ29yeS5vbkF1ZGl0U3RhcnRlZCBmaXJlZCwgdGhyb3dpbmcgZXhjZXB0aW9uCi1B
bGwgdGVzdHMgZG9uZS4KICAgRXh0ZW5zaW9uIGF1ZGl0cwogICAgIEZhaWxlZCBydWxlICg0MikK
ICAgICAgdGhpcyBydWxlIGFsd2F5cyBmYWlscwpAQCAtMjUsNCArMjUsNSBAQCBBbGwgdGVzdHMg
ZG9uZS4KICAgICBQYXNzZWQgcnVsZQogICAgICB0aGlzIHJ1bGUgYWx3YXlzIHBhc3NlcyBvawog
ICBFeHRlbnNpb24gYXVkaXRzIHRoYXQgZmFpbAorQWxsIHRlc3RzIGRvbmUuCiAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zLWV4cGVjdGVkLnR4dAppbmRleCA4MzE5NDM0Li5i
ZTU3MDZjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy1leHBl
Y3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMtZXhwZWN0ZWQu
dHh0CkBAIC0xLDUgKzEsNiBAQAogVGVzdHMgV2ViSW5zcGVjdG9yIGV4dGVuc2lvbiBBUEkKIAor
UGFnZSByZWxvYWRlZC4KIFN0YXJ0ZWQgZXh0ZW5zaW9uLgogUnVubmluZyB0ZXN0cy4uLgogUlVO
TklORyBURVNUOiBleHRlbnNpb25fdGVzdENyZWF0ZVBhbmVsCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvcmVwb3J0LXByb3RvY29sLWVycm9ycy5odG1sIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL3JlcG9ydC1wcm90b2NvbC1lcnJvcnMuaHRtbAppbmRleCBkMDM2NGI2Li5hNWU3
ODc0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcmVwb3J0LXByb3RvY29sLWVy
cm9ycy5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9yZXBvcnQtcHJvdG9jb2wtZXJy
b3JzLmh0bWwKQEAgLTI0LDcgKzI0LDggQEAgZnVuY3Rpb24gdGVzdCgpCiAKICAgICBmdW5jdGlv
biBjYWxsYmFjayhtZXNzYWdlKQogICAgIHsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1
bHQobWVzc2FnZSk7CisgICAgICAgIGlmIChudW1iZXJPZlJlcG9ydHMgPCBtZXNzYWdlcy5sZW5n
dGgpCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZE9iamVjdChtZXNzYWdlKTsKIAogICAg
ICAgICBpZiAoKytudW1iZXJPZlJlcG9ydHMgPT09IG1lc3NhZ2VzLmxlbmd0aCkKICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS9pbnNwZWN0b3IvZGVidWdnZXItc3RlcC1pbi1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9pbnNwZWN0b3IvZGVidWdnZXItc3Rl
cC1pbi1leHBlY3RlZC50eHQKb2xkIG1vZGUgMTAwNzU1Cm5ldyBtb2RlIDEwMDY0NAppbmRleCA3
MmFmNmU4Li5kNzUyNjUyCi0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2luc3Bl
Y3Rvci9kZWJ1Z2dlci1zdGVwLWluLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS9pbnNwZWN0b3IvZGVidWdnZXItc3RlcC1pbi1leHBlY3RlZC50eHQKQEAg
LTEsMTggKzEsMjEgQEAKLVRlc3RzICJzdGVwIGluIiBmdW5jdGlvbmFsaXR5IGluIGRlYnVnZ2Vy
Lg0KLQ0KLURlYnVnZ2VyIHdhcyBlbmFibGVkLg0KLVNldCB0aW1lciBmb3IgdGVzdCBmdW5jdGlv
bi4NCi1TY3JpcHQgZXhlY3V0aW9uIHBhdXNlZC4NCi1DYWxsIHN0YWNrOg0KLSAgICAwKSB0ZXN0
RnVuY3Rpb24gKGRlYnVnZ2VyLXN0ZXAtaW4uaHRtbDoxMikNCi1TdGVwcGluZyBpbnRvLi4uDQot
U2NyaXB0IGV4ZWN1dGlvbiBwYXVzZWQuDQotQ2FsbCBzdGFjazoNCi0gICAgMCkgdGVzdEZ1bmN0
aW9uIChkZWJ1Z2dlci1zdGVwLWluLmh0bWw6MTMpDQotU3RlcHBpbmcgaW50by4uLg0KLVNjcmlw
dCBleGVjdXRpb24gcGF1c2VkLg0KLUNhbGwgc3RhY2s6DQotICAgIDApIGQgKGRlYnVnZ2VyLXN0
ZXAtaW4uaHRtbDo4KQ0KLSAgICAxKSB0ZXN0RnVuY3Rpb24gKGRlYnVnZ2VyLXN0ZXAtaW4uaHRt
bDoxMykNCi1SZXN1bWVkIHNjcmlwdCBleGVjdXRpb24uDQotRGlzYWJsZWQgZGVidWdnZXIuDQor
VGVzdHMgInN0ZXAgaW4iIGZ1bmN0aW9uYWxpdHkgaW4gZGVidWdnZXIuCisKK0RlYnVnZ2VyIHdh
cyBlbmFibGVkLgorU2V0IHRpbWVyIGZvciB0ZXN0IGZ1bmN0aW9uLgorU2NyaXB0IGV4ZWN1dGlv
biBwYXVzZWQuCitDYWxsIHN0YWNrOgorICAgIDApIHRlc3RGdW5jdGlvbiAoZGVidWdnZXItc3Rl
cC1pbi5odG1sOjE0KQorU3RlcHBpbmcgaW50by4uLgorU2NyaXB0IGV4ZWN1dGlvbiByZXN1bWVk
LgorU2NyaXB0IGV4ZWN1dGlvbiBwYXVzZWQuCitDYWxsIHN0YWNrOgorICAgIDApIHRlc3RGdW5j
dGlvbiAoZGVidWdnZXItc3RlcC1pbi5odG1sOjE1KQorU3RlcHBpbmcgaW50by4uLgorU2NyaXB0
IGV4ZWN1dGlvbiByZXN1bWVkLgorU2NyaXB0IGV4ZWN1dGlvbiBwYXVzZWQuCitDYWxsIHN0YWNr
OgorICAgIDApIGQgKGRlYnVnZ2VyLXN0ZXAtaW4uaHRtbDo5KQorICAgIDEpIHRlc3RGdW5jdGlv
biAoZGVidWdnZXItc3RlcC1pbi5odG1sOjE1KQorU2NyaXB0IGV4ZWN1dGlvbiByZXN1bWVkLgor
RGVidWdnZXIgd2FzIGRpc2FibGVkLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKaW5kZXggZjhmNDlhMS4uNGI2ZDdlYyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMu
dHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25z
LnR4dApAQCAtMzE2Myw1ICszMTYzLDQgQEAgQlVHV0s0NDk2MSA6IGZhc3Qvbm90aWZpY2F0aW9u
cy9ub3RpZmljYXRpb25zLWNsaWNrLWV2ZW50Lmh0bWwgPSBUSU1FT1VUCiBCVUdXSzQ0OTY3IE1B
QyA6IGZhc3QvbXVsdGljb2wvcGFnaW5hdGUtYmxvY2stcmVwbGFjZWQuaHRtbCA9IElNQUdFCiAK
IC8vIE5ldyB0ZXN0cyBpbiByNjY1MjMgYW5kIHI2NjUxNgotQlVHV0s0NDk5NiBXSU4gOiBpbnNw
ZWN0b3IvcmVwb3J0LUFQSS1lcnJvcnMuaHRtbCA9IFRFWFQKLUJVR1dLNDQ5OTYgV0lOIDogaW5z
cGVjdG9yL3JlcG9ydC1wcm90b2NvbC1lcnJvcnMuaHRtbCA9IFRFWFQKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>66193</attachid>
            <date>2010-09-01 03:50:29 -0700</date>
            <delta_ts>2010-09-01 03:53:36 -0700</delta_ts>
            <desc>Proposed patch.</desc>
            <filename>tests.patch</filename>
            <type>text/plain</type>
            <size>63051</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlYWU5MTE1Li5jMjMxNGQzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzIgQEAKKzIwMTAtMDkt
MDEgIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogbW92
ZSBkZWJ1Z2dlciB0ZXN0cyB0byB0aGUgbmV3IHRlc3QgaGFybmVzcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQ5MzkKKworICAgICAgICAqIGh0dHAv
dGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXRlc3QuanM6IFJlbW92ZWQuCisgICAgICAgICogaHR0
cC90ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItdGVzdDIuanM6CisgICAgICAgIChpbml0aWFsaXpl
X0RlYnVnZ2VyVGVzdC5JbnNwZWN0b3JUZXN0LnN0YXJ0RGVidWdnZXJUZXN0LnN0YXJ0VGVzdCk6
CisgICAgICAgIChpbml0aWFsaXplX0RlYnVnZ2VyVGVzdC5JbnNwZWN0b3JUZXN0LnN0YXJ0RGVi
dWdnZXJUZXN0KToKKyAgICAgICAgKGluaXRpYWxpemVfRGVidWdnZXJUZXN0Lkluc3BlY3RvclRl
c3QuY29tcGxldGVEZWJ1Z2dlclRlc3QuZGlzYWJsZURlYnVnZ2VyKToKKyAgICAgICAgKGluaXRp
YWxpemVfRGVidWdnZXJUZXN0Lkluc3BlY3RvclRlc3QucnVuVGVzdEZ1bmN0aW9uQW5kV2FpdFVu
dGlsUGF1c2VkKToKKyAgICAgICAgKGluaXRpYWxpemVfRGVidWdnZXJUZXN0Lkluc3BlY3RvclRl
c3Qud2FpdFVudGlsUGF1c2VkKToKKyAgICAgICAgKGluaXRpYWxpemVfRGVidWdnZXJUZXN0Lklu
c3BlY3RvclRlc3Qud2FpdFVudGlsUmVzdW1lZCk6CisgICAgICAgIChpbml0aWFsaXplX0RlYnVn
Z2VyVGVzdC5JbnNwZWN0b3JUZXN0LnJlc3VtZUV4ZWN1dGlvbik6CisgICAgICAgIChpbml0aWFs
aXplX0RlYnVnZ2VyVGVzdC5JbnNwZWN0b3JUZXN0LmNhcHR1cmVTdGFja1RyYWNlKToKKyAgICAg
ICAgKGluaXRpYWxpemVfRGVidWdnZXJUZXN0Lkluc3BlY3RvclRlc3QuX3BhdXNlZFNjcmlwdCk6
CisgICAgICAgIChpbml0aWFsaXplX0RlYnVnZ2VyVGVzdC5JbnNwZWN0b3JUZXN0Ll9yZXN1bWVk
U2NyaXB0KToKKyAgICAgICAgKGluaXRpYWxpemVfRGVidWdnZXJUZXN0Lkluc3BlY3RvclRlc3Qu
d2FpdFVudGlsQ3VycmVudFNvdXJjZUZyYW1lSXNMb2FkZWQpOgorICAgICAgICAoaW5pdGlhbGl6
ZV9EZWJ1Z2dlclRlc3QuSW5zcGVjdG9yVGVzdC5fc2hvd1NjcmlwdFNvdXJjZSk6CisgICAgICAg
IChpbml0aWFsaXplX0RlYnVnZ2VyVGVzdC5JbnNwZWN0b3JUZXN0LmV4cGFuZFByb3BlcnRpZXMu
ZXhwYW5kTmV4dFBhdGgpOgorICAgICAgICAoaW5pdGlhbGl6ZV9EZWJ1Z2dlclRlc3QuSW5zcGVj
dG9yVGVzdC5leHBhbmRQcm9wZXJ0aWVzKToKKyAgICAgICAgKGluaXRpYWxpemVfRGVidWdnZXJU
ZXN0Lkluc3BlY3RvclRlc3QuX2V4cGFuZFByb3BlcnR5KToKKyAgICAgICAgKGluaXRpYWxpemVf
RGVidWdnZXJUZXN0Lkluc3BlY3RvclRlc3QuX2ZpbmRDaGlsZFByb3BlcnR5VHJlZUVsZW1lbnQp
OgorICAgICAgICAoaW5pdGlhbGl6ZV9EZWJ1Z2dlclRlc3QpOgorICAgICAgICAqIGh0dHAvdGVz
dHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0Mi5qczoKKyAgICAgICAgKGluaXRpYWxpemVfSW5z
cGVjdG9yVGVzdC5JbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCk6CisgICAgICAgIChpbml0aWFs
aXplX0luc3BlY3RvclRlc3QuSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSk6CisgICAgICAg
IChpbml0aWFsaXplX0luc3BlY3RvclRlc3QuSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQuYWRkUmVz
dWx0VG9QYWdlKToKKyAgICAgICAgKGluaXRpYWxpemVfSW5zcGVjdG9yVGVzdC5JbnNwZWN0b3JU
ZXN0LmFkZFJlc3VsdCk6CisgICAgICAgIChpbml0aWFsaXplX0luc3BlY3RvclRlc3QuSW5zcGVj
dG9yVGVzdC5hZGRPYmplY3QpOgorICAgICAgICAoaW5pdGlhbGl6ZV9JbnNwZWN0b3JUZXN0Lklu
c3BlY3RvclRlc3QucmVsb2FkUGFnZSk6CisgICAgICAgIChpbml0aWFsaXplX0luc3BlY3RvclRl
c3QuSW5zcGVjdG9yVGVzdC5wYWdlUmVsb2FkZWQpOgorICAgICAgICAoaW5pdGlhbGl6ZV9JbnNw
ZWN0b3JUZXN0Lkluc3BlY3RvclRlc3QucnVuQWZ0ZXJQZW5kaW5nRGlzcGF0Y2hlcyk6CisgICAg
ICAgIChpbml0aWFsaXplX0luc3BlY3RvclRlc3QuSW5zcGVjdG9yVGVzdC5lbmFibGVSZXNvdXJj
ZVRyYWNraW5nKToKKyAgICAgICAgKGluaXRpYWxpemVfSW5zcGVjdG9yVGVzdC5JbnNwZWN0b3JU
ZXN0LmRpc2FibGVSZXNvdXJjZVRyYWNraW5nKToKKyAgICAgICAgKGluaXRpYWxpemVfSW5zcGVj
dG9yVGVzdC5JbnNwZWN0b3JUZXN0Ll9hZGRTbmlmZmVyKToKKyAgICAgICAgKHJ1blRlc3QucnVu
VGVzdEluRnJvbnRlbmQpOgorICAgICAgICAocnVuVGVzdCk6CisgICAgICAgIChkaWRFdmFsdWF0
ZUZvclRlc3RJbkZyb250ZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXItYnJlYWtw
b2ludHMtbm90LWFjdGl2YXRlZC1vbi1yZWxvYWQuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZGVidWdnZXItY3ljbGljLXJlZi1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL2Rl
YnVnZ2VyLWN5Y2xpYy1yZWYuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXItZXZh
bC13aGlsZS1wYXVzZWQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dl
ci1ldmFsLXdoaWxlLXBhdXNlZC5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci1u
by1uZXN0ZWQtcGF1c2UtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dl
ci1uby1uZXN0ZWQtcGF1c2UuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXItcGF1
c2UtaW4tZXZhbC1zY3JpcHQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1
Z2dlci1wYXVzZS1pbi1ldmFsLXNjcmlwdC5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1
Z2dlci1wYXVzZS1vbi1kZWJ1Z2dlci1zdGF0ZW1lbnQtZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IGluc3BlY3Rvci9kZWJ1Z2dlci1wYXVzZS1vbi1kZWJ1Z2dlci1zdGF0ZW1lbnQuaHRtbDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXItcHJvdG8tcHJvcGVydHktZXhwZWN0ZWQudHh0Ogor
ICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci1wcm90by1wcm9wZXJ0eS5odG1sOgorICAgICAg
ICAqIGluc3BlY3Rvci9kZWJ1Z2dlci1zdGVwLWluLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBp
bnNwZWN0b3IvZGVidWdnZXItc3RlcC1pbi5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1
Z2dlci1zdGVwLW91dC1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2Vy
LXN0ZXAtb3V0Lmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyLXN0ZXAtb3Zlci1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyLXN0ZXAtb3Zlci5odG1s
OgorICAgICAgICAqIGluc3BlY3Rvci9kb20tYnJlYWtwb2ludHMtZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIGluc3BlY3Rvci9kb20tYnJlYWtwb2ludHMuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvZXh0ZW5zaW9ucy1hcGktZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9leHRl
bnNpb25zLWF1ZGl0cy1hcGktZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9leHRl
bnNpb25zLWF1ZGl0cy1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL2V4dGVuc2lv
bnMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9yZXBvcnQtcHJvdG9jb2wtZXJy
b3JzLmh0bWw6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vaW5zcGVjdG9yL2RlYnVnZ2Vy
LXN0ZXAtaW4tZXhwZWN0ZWQudHh0OgorCiAyMDEwLTA4LTMxICBLZW50IFRhbXVyYSAgPHRrZW50
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCB0ZXN0IGV4cGVjdGF0aW9uIHVw
ZGF0ZS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2RlYnVn
Z2VyLXRlc3QuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci10
ZXN0LmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZjg3MDEzLi4wMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXRlc3QuanMKKysr
IC9kZXYvbnVsbApAQCAtMSwxMTMgKzAsMCBAQAotCi1mdW5jdGlvbiBmcm9udGVuZF9lbnN1cmVE
ZWJ1Z2dlckVuYWJsZWQoY2FsbGJhY2spCi17Ci0gICAgaWYgKFdlYkluc3BlY3Rvci5wYW5lbHMu
c2NyaXB0cy5fZGVidWdnZXJFbmFibGVkKSB7Ci0gICAgICAgIGNhbGxiYWNrKCk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBmcm9udGVuZF9hZGRTbmlmZmVyKFdlYkluc3BlY3Rvciwg
ImRlYnVnZ2VyV2FzRW5hYmxlZCIsIGNhbGxiYWNrKTsKLSAgICBXZWJJbnNwZWN0b3IucGFuZWxz
LnNjcmlwdHMuX3RvZ2dsZURlYnVnZ2luZyhmYWxzZSk7Ci19Ci0KLWZ1bmN0aW9uIGZyb250ZW5k
X2Vuc3VyZURlYnVnZ2VyRGlzYWJsZWQoY2FsbGJhY2spCi17Ci0gICAgaWYgKCFXZWJJbnNwZWN0
b3IucGFuZWxzLnNjcmlwdHMuX2RlYnVnZ2VyRW5hYmxlZCkgewotICAgICAgICBjYWxsYmFjaygp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgZnJvbnRlbmRfYWRkU25pZmZlcihXZWJJ
bnNwZWN0b3IsICJkZWJ1Z2dlcldhc0Rpc2FibGVkIiwgY2FsbGJhY2spOwotICAgIFdlYkluc3Bl
Y3Rvci5wYW5lbHMuc2NyaXB0cy5fdG9nZ2xlRGVidWdnaW5nKGZhbHNlKTsKLX0KLQotZnVuY3Rp
b24gZnJvbnRlbmRfY29tcGxldGVEZWJ1Z2dlclRlc3QodGVzdENvbnRyb2xsZXIpCi17Ci0gICAg
aWYgKFdlYkluc3BlY3Rvci5wYW5lbHMuc2NyaXB0cy5wYXVzZWQpIHsKLSAgICAgICAgV2ViSW5z
cGVjdG9yLnBhbmVscy5zY3JpcHRzLl90b2dnbGVQYXVzZSgpOwotICAgICAgICB0ZXN0Q29udHJv
bGxlci5yZXN1bHRzLnB1c2goIlJlc3VtZWQgc2NyaXB0IGV4ZWN1dGlvbi4iKTsKLSAgICB9Ci0g
ICAgZnJvbnRlbmRfZW5zdXJlRGVidWdnZXJEaXNhYmxlZChmdW5jdGlvbigpCi0gICAgewotICAg
ICAgICB0ZXN0Q29udHJvbGxlci5yZXN1bHRzLnB1c2goIkRpc2FibGVkIGRlYnVnZ2VyLiIpOwot
ICAgICAgICB0ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7Ci19Ci0KLWZ1bmN0
aW9uIGZyb250ZW5kX3NjcmlwdHNBcmVQYXJzZWQoc2NyaXB0cykKLXsKLSAgICB2YXIgc2NyaXB0
U2VsZWN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNjcmlwdHMtZmlsZXMiKTsKLSAgICB2
YXIgb3B0aW9ucyA9IHNjcmlwdFNlbGVjdC5vcHRpb25zOwotCi0gICAgLy8gQ2hlY2sgdGhhdCBh
bGwgdGhlIGV4cGVjdGVkIHNjcmlwdHMgYXJlIHByZXNlbnQuCi0gICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBzY3JpcHRzLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgIHZhciBmb3VuZCA9IGZhbHNlOwot
ICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IG9wdGlvbnMubGVuZ3RoOyBqKyspIHsKLSAgICAg
ICAgICAgIGlmIChvcHRpb25zW2pdLnRleHQuc2VhcmNoKHNjcmlwdHNbaV0pICE9PSAtMSkgewot
ICAgICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBpZiAoIWZvdW5kKQotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX07Ci0KLWZ1bmN0aW9uIGZy
b250ZW5kX3dhaXRVbnRpbFNjcmlwdHNBcmVQYXJzZWQoc2NyaXB0cywgY2FsbGJhY2spCi17Ci0g
ICAgZnVuY3Rpb24gd2FpdEZvckFsbFNjcmlwdHMoKQotICAgIHsKLSAgICAgICAgaWYgKGZyb250
ZW5kX3NjcmlwdHNBcmVQYXJzZWQoc2NyaXB0cykpCi0gICAgICAgICAgICBjYWxsYmFjaygpOwot
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBmcm9udGVuZF9hZGRTbmlmZmVyKFdlYkluc3BlY3Rv
ciwgInBhcnNlZFNjcmlwdFNvdXJjZSIsIHdhaXRGb3JBbGxTY3JpcHRzKTsKLSAgICB9Ci0gICAg
d2FpdEZvckFsbFNjcmlwdHMoKTsKLX07Ci0KLWZ1bmN0aW9uIGZyb250ZW5kX2Vuc3VyZVNvdXJj
ZUZyYW1lTG9hZGVkKHNvdXJjZUZyYW1lLCBjYWxsYmFjaykKLXsKLSAgICBpZiAoIXNvdXJjZUZy
YW1lLl9sb2FkZWQpCi0gICAgICAgIGZyb250ZW5kX2FkZFNuaWZmZXIoc291cmNlRnJhbWUsICJz
ZXRDb250ZW50IiwgY2FsbGJhY2spOwotICAgIGVsc2UKLSAgICAgICAgY2FsbGJhY2soKTsKLX0K
LQotZnVuY3Rpb24gZnJvbnRlbmRfc2hvd1NjcmlwdFNvdXJjZShzY3JpcHROYW1lLCBjYWxsYmFj
aykKLXsKLSAgICB2YXIgc2NyaXB0U2VsZWN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNj
cmlwdHMtZmlsZXMiKTsKLSAgICB2YXIgb3B0aW9ucyA9IHNjcmlwdFNlbGVjdC5vcHRpb25zOwot
ICAgIHZhciBzY3JpcHRzUGFuZWwgPSBXZWJJbnNwZWN0b3IucGFuZWxzLnNjcmlwdHM7Ci0KLSAg
ICAvLyBTZWxlY3QgcGFnZSdzIHNjcmlwdCBpZiBpdCdzIG5vdCBjdXJyZW50IG9wdGlvbi4KLSAg
ICB2YXIgc2NyaXB0UmVzb3VyY2U7Ci0gICAgaWYgKG9wdGlvbnNbc2NyaXB0U2VsZWN0LnNlbGVj
dGVkSW5kZXhdLnRleHQgPT09IHNjcmlwdE5hbWUpCi0gICAgICAgIHNjcmlwdFJlc291cmNlID0g
b3B0aW9uc1tzY3JpcHRTZWxlY3Quc2VsZWN0ZWRJbmRleF0ucmVwcmVzZW50ZWRPYmplY3Q7Ci0g
ICAgZWxzZSB7Ci0gICAgICAgIHZhciBwYWdlU2NyaXB0SW5kZXggPSAtMTsKLSAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBvcHRpb25zLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgICAgICBpZiAo
b3B0aW9uc1tpXS50ZXh0ID09PSBzY3JpcHROYW1lKSB7Ci0gICAgICAgICAgICAgICAgcGFnZVNj
cmlwdEluZGV4ID0gaTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfQotICAgICAgICBzY3JpcHRSZXNvdXJjZSA9IG9wdGlvbnNbcGFnZVNjcmlwdEluZGV4
XS5yZXByZXNlbnRlZE9iamVjdDsKLSAgICAgICAgc2NyaXB0c1BhbmVsLl9zaG93U2NyaXB0T3JS
ZXNvdXJjZShzY3JpcHRSZXNvdXJjZSk7Ci0gICAgfQotCi0gICAgdmFyIHZpZXcgPSBzY3JpcHRz
UGFuZWwudmlzaWJsZVZpZXc7Ci0gICAgZnJvbnRlbmRfZW5zdXJlU291cmNlRnJhbWVMb2FkZWQo
dmlldy5zb3VyY2VGcmFtZSwgY2FsbGJhY2suYmluZChudWxsLCB2aWV3KSk7Ci19OwotCi1mdW5j
dGlvbiBmcm9udGVuZF9jYXB0dXJlU3RhY2tUcmFjZShjYWxsRnJhbWVzLCB0ZXN0Q29udHJvbGxl
cikKLXsKLSAgICB0ZXN0Q29udHJvbGxlci5yZXN1bHRzLnB1c2goIkNhbGwgc3RhY2s6Iik7Ci0g
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjYWxsRnJhbWVzLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAg
IHZhciBmcmFtZSA9IGNhbGxGcmFtZXNbaV07Ci0gICAgICAgIHZhciBzY3JpcHRPclJlc291cmNl
ID0gV2ViSW5zcGVjdG9yLnBhbmVscy5zY3JpcHRzLl9zb3VyY2VJRE1hcFtmcmFtZS5zb3VyY2VJ
RF07Ci0gICAgICAgIHZhciB1cmwgPSBzY3JpcHRPclJlc291cmNlICYmIFdlYkluc3BlY3Rvci5k
aXNwbGF5TmFtZUZvclVSTChzY3JpcHRPclJlc291cmNlLnNvdXJjZVVSTCB8fCBzY3JpcHRPclJl
c291cmNlLnVybCk7Ci0gICAgICAgIHZhciBzID0gIiAgICAiICsgaSArICIpICIgKyBmcmFtZS5m
dW5jdGlvbk5hbWUgKyAiICgiICsgdXJsICsgIjoiICsgZnJhbWUubGluZSArICIpIjsKLSAgICAg
ICAgdGVzdENvbnRyb2xsZXIucmVzdWx0cy5wdXNoKHMpOwotICAgIH0KLX0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXRlc3QyLmpzIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItdGVzdDIuanMKaW5kZXggNTI4
ZWU4Zi4uODBiOThhNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3IvZGVidWdnZXItdGVzdDIuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3IvZGVidWdnZXItdGVzdDIuanMKQEAgLTIsNiArMiw4IEBAIHZhciBpbml0aWFsaXplX0RlYnVn
Z2VyVGVzdCA9IGZ1bmN0aW9uKCkgewogCiBJbnNwZWN0b3JUZXN0LnN0YXJ0RGVidWdnZXJUZXN0
ID0gZnVuY3Rpb24oY2FsbGJhY2spCiB7CisgICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCgic2Ny
aXB0cyIpOworCiAgICAgaWYgKFdlYkluc3BlY3Rvci5wYW5lbHMuc2NyaXB0cy5fZGVidWdnZXJF
bmFibGVkKQogICAgICAgICBzdGFydFRlc3QoKTsKICAgICBlbHNlIHsKQEAgLTEyLDkgKzE0LDEx
IEBAIEluc3BlY3RvclRlc3Quc3RhcnREZWJ1Z2dlclRlc3QgPSBmdW5jdGlvbihjYWxsYmFjaykK
ICAgICBmdW5jdGlvbiBzdGFydFRlc3QoKQogICAgIHsKICAgICAgICAgSW5zcGVjdG9yVGVzdC5h
ZGRSZXN1bHQoIkRlYnVnZ2VyIHdhcyBlbmFibGVkLiIpOworICAgICAgICBJbnNwZWN0b3JUZXN0
Ll9hZGRTbmlmZmVyKFdlYkluc3BlY3RvciwgInBhdXNlZFNjcmlwdCIsIEluc3BlY3RvclRlc3Qu
X3BhdXNlZFNjcmlwdCwgdHJ1ZSk7CisgICAgICAgIEluc3BlY3RvclRlc3QuX2FkZFNuaWZmZXIo
V2ViSW5zcGVjdG9yLCAicmVzdW1lZFNjcmlwdCIsIEluc3BlY3RvclRlc3QuX3Jlc3VtZWRTY3Jp
cHQsIHRydWUpOwogICAgICAgICBjYWxsYmFjaygpOwogICAgIH0KLX0KK307CiAKIEluc3BlY3Rv
clRlc3QuY29tcGxldGVEZWJ1Z2dlclRlc3QgPSBmdW5jdGlvbigpCiB7CkBAIC0yMywxMyArMjcs
MTYgQEAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZURlYnVnZ2VyVGVzdCA9IGZ1bmN0aW9uKCkKICAg
ICBpZiAoIXNjcmlwdHNQYW5lbC5icmVha3BvaW50c0FjdGl2YXRlZCkKICAgICAgICAgc2NyaXB0
c1BhbmVsLnRvZ2dsZUJyZWFrcG9pbnRzQnV0dG9uLmVsZW1lbnQuY2xpY2soKTsKIAotICAgIElu
c3BlY3RvclRlc3QucmVzdW1lRXhlY3V0aW9uKCk7CisgICAgSW5zcGVjdG9yVGVzdC5yZXN1bWVF
eGVjdXRpb24oZGlzYWJsZURlYnVnZ2VyKTsKIAotICAgIGlmICghc2NyaXB0c1BhbmVsLl9kZWJ1
Z2dlckVuYWJsZWQpCi0gICAgICAgIGNvbXBsZXRlVGVzdCgpOwotICAgIGVsc2UgewotICAgICAg
ICBJbnNwZWN0b3JUZXN0Ll9hZGRTbmlmZmVyKFdlYkluc3BlY3RvciwgImRlYnVnZ2VyV2FzRGlz
YWJsZWQiLCBjb21wbGV0ZVRlc3QpOwotICAgICAgICBzY3JpcHRzUGFuZWwuX3RvZ2dsZURlYnVn
Z2luZyhmYWxzZSk7CisgICAgZnVuY3Rpb24gZGlzYWJsZURlYnVnZ2VyKCkKKyAgICB7CisgICAg
ICAgIGlmICghc2NyaXB0c1BhbmVsLl9kZWJ1Z2dlckVuYWJsZWQpCisgICAgICAgICAgICBjb21w
bGV0ZVRlc3QoKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0Ll9h
ZGRTbmlmZmVyKFdlYkluc3BlY3RvciwgImRlYnVnZ2VyV2FzRGlzYWJsZWQiLCBjb21wbGV0ZVRl
c3QpOworICAgICAgICAgICAgc2NyaXB0c1BhbmVsLl90b2dnbGVEZWJ1Z2dpbmcoZmFsc2UpOwor
ICAgICAgICB9CiAgICAgfQogCiAgICAgZnVuY3Rpb24gY29tcGxldGVUZXN0KCkKQEAgLTM5LDIx
ICs0Niw2OSBAQCBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlRGVidWdnZXJUZXN0ID0gZnVuY3Rpb24o
KQogICAgIH0KIH07CiAKK0luc3BlY3RvclRlc3QucnVuVGVzdEZ1bmN0aW9uQW5kV2FpdFVudGls
UGF1c2VkID0gZnVuY3Rpb24oY2FsbGJhY2spCit7CisgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0
ZUluQ29uc29sZSgic2V0VGltZW91dCh0ZXN0RnVuY3Rpb24sIDApIik7CisgICAgSW5zcGVjdG9y
VGVzdC5hZGRSZXN1bHQoIlNldCB0aW1lciBmb3IgdGVzdCBmdW5jdGlvbi4iKTsKKyAgICBJbnNw
ZWN0b3JUZXN0LndhaXRVbnRpbFBhdXNlZChjYWxsYmFjayk7Cit9OworCiBJbnNwZWN0b3JUZXN0
LndhaXRVbnRpbFBhdXNlZCA9IGZ1bmN0aW9uKGNhbGxiYWNrKQogewotICAgIEluc3BlY3RvclRl
c3QuX2FkZFNuaWZmZXIoV2ViSW5zcGVjdG9yLCAicGF1c2VkU2NyaXB0IiwgcGF1c2VkU2NyaXB0
KTsKKyAgICBpZiAoSW5zcGVjdG9yVGVzdC5fY2FsbEZyYW1lcykKKyAgICAgICAgY2FsbGJhY2so
SW5zcGVjdG9yVGVzdC5fY2FsbEZyYW1lcyk7CisgICAgZWxzZQorICAgICAgICBJbnNwZWN0b3JU
ZXN0Ll93YWl0VW50aWxQYXVzZWRDYWxsYmFjayA9IGNhbGxiYWNrOworfTsKIAotICAgIGZ1bmN0
aW9uIHBhdXNlZFNjcmlwdChjYWxsRnJhbWVzKQotICAgIHsKLSAgICAgICAgSW5zcGVjdG9yVGVz
dC5hZGRSZXN1bHQoIlBhdXNlZCBhdCBsaW5lICIgKyBjYWxsRnJhbWVzWzBdLmxpbmUgKyAiIGlu
ICIgKyBjYWxsRnJhbWVzWzBdLmZ1bmN0aW9uTmFtZSk7Ci0gICAgICAgIGNhbGxiYWNrKGNhbGxG
cmFtZXMpOwotICAgIH0KK0luc3BlY3RvclRlc3Qud2FpdFVudGlsUmVzdW1lZCA9IGZ1bmN0aW9u
KGNhbGxiYWNrKQoreworICAgIGlmICghSW5zcGVjdG9yVGVzdC5fY2FsbEZyYW1lcykKKyAgICAg
ICAgY2FsbGJhY2soKTsKKyAgICBlbHNlCisgICAgICAgIEluc3BlY3RvclRlc3QuX3dhaXRVbnRp
bFJlc3VtZWRDYWxsYmFjayA9IGNhbGxiYWNrOwogfTsKIAotSW5zcGVjdG9yVGVzdC5yZXN1bWVF
eGVjdXRpb24gPSBmdW5jdGlvbigpCitJbnNwZWN0b3JUZXN0LnJlc3VtZUV4ZWN1dGlvbiA9IGZ1
bmN0aW9uKGNhbGxiYWNrKQogewogICAgIGlmIChXZWJJbnNwZWN0b3IucGFuZWxzLnNjcmlwdHMu
cGF1c2VkKQogICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnNjcmlwdHMuX3RvZ2dsZVBhdXNl
KCk7CisgICAgaWYgKGNhbGxiYWNrKQorICAgICAgICBJbnNwZWN0b3JUZXN0LndhaXRVbnRpbFJl
c3VtZWQoY2FsbGJhY2spOworfTsKKworSW5zcGVjdG9yVGVzdC5jYXB0dXJlU3RhY2tUcmFjZSA9
IGZ1bmN0aW9uKGNhbGxGcmFtZXMpCit7CisgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIkNh
bGwgc3RhY2s6Iik7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjYWxsRnJhbWVzLmxlbmd0aDsg
aSsrKSB7CisgICAgICAgIHZhciBmcmFtZSA9IGNhbGxGcmFtZXNbaV07CisgICAgICAgIHZhciBz
Y3JpcHRPclJlc291cmNlID0gV2ViSW5zcGVjdG9yLnBhbmVscy5zY3JpcHRzLl9zb3VyY2VJRE1h
cFtmcmFtZS5zb3VyY2VJRF07CisgICAgICAgIHZhciB1cmwgPSBzY3JpcHRPclJlc291cmNlICYm
IFdlYkluc3BlY3Rvci5kaXNwbGF5TmFtZUZvclVSTChzY3JpcHRPclJlc291cmNlLnNvdXJjZVVS
TCB8fCBzY3JpcHRPclJlc291cmNlLnVybCk7CisgICAgICAgIHZhciBzID0gIiAgICAiICsgaSAr
ICIpICIgKyBmcmFtZS5mdW5jdGlvbk5hbWUgKyAiICgiICsgdXJsICsgIjoiICsgZnJhbWUubGlu
ZSArICIpIjsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQocyk7CisgICAgfQorfTsK
KworSW5zcGVjdG9yVGVzdC5fcGF1c2VkU2NyaXB0ID0gZnVuY3Rpb24oY2FsbEZyYW1lcykKK3sK
KyAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiU2NyaXB0IGV4ZWN1dGlvbiBwYXVzZWQuIik7
CisgICAgSW5zcGVjdG9yVGVzdC5fY2FsbEZyYW1lcyA9IGNhbGxGcmFtZXM7CisgICAgaWYgKElu
c3BlY3RvclRlc3QuX3dhaXRVbnRpbFBhdXNlZENhbGxiYWNrKSB7CisgICAgICAgIHZhciBjYWxs
YmFjayA9IEluc3BlY3RvclRlc3QuX3dhaXRVbnRpbFBhdXNlZENhbGxiYWNrOworICAgICAgICBk
ZWxldGUgSW5zcGVjdG9yVGVzdC5fd2FpdFVudGlsUGF1c2VkQ2FsbGJhY2s7CisgICAgICAgIGNh
bGxiYWNrKEluc3BlY3RvclRlc3QuX2NhbGxGcmFtZXMpOworICAgIH0KK30KKworSW5zcGVjdG9y
VGVzdC5fcmVzdW1lZFNjcmlwdCA9IGZ1bmN0aW9uKCkKK3sKKyAgICBJbnNwZWN0b3JUZXN0LmFk
ZFJlc3VsdCgiU2NyaXB0IGV4ZWN1dGlvbiByZXN1bWVkLiIpOworICAgIGRlbGV0ZSBJbnNwZWN0
b3JUZXN0Ll9jYWxsRnJhbWVzOworICAgIGlmIChJbnNwZWN0b3JUZXN0Ll93YWl0VW50aWxSZXN1
bWVkQ2FsbGJhY2spIHsKKyAgICAgICAgdmFyIGNhbGxiYWNrID0gSW5zcGVjdG9yVGVzdC5fd2Fp
dFVudGlsUmVzdW1lZENhbGxiYWNrOworICAgICAgICBkZWxldGUgSW5zcGVjdG9yVGVzdC5fd2Fp
dFVudGlsUmVzdW1lZENhbGxiYWNrOworICAgICAgICBjYWxsYmFjaygpOworICAgIH0KIH07CiAK
IEluc3BlY3RvclRlc3Quc2hvd1NjcmlwdFNvdXJjZSA9IGZ1bmN0aW9uKHNjcmlwdE5hbWUsIGNh
bGxiYWNrKQpAQCAtNjQsNiArMTE5LDE1IEBAIEluc3BlY3RvclRlc3Quc2hvd1NjcmlwdFNvdXJj
ZSA9IGZ1bmN0aW9uKHNjcmlwdE5hbWUsIGNhbGxiYWNrKQogICAgICAgICBJbnNwZWN0b3JUZXN0
Ll9hZGRTbmlmZmVyKFdlYkluc3BlY3RvciwgInBhcnNlZFNjcmlwdFNvdXJjZSIsIEluc3BlY3Rv
clRlc3Quc2hvd1NjcmlwdFNvdXJjZS5iaW5kKEluc3BlY3RvclRlc3QsIHNjcmlwdE5hbWUsIGNh
bGxiYWNrKSk7CiB9OwogCitJbnNwZWN0b3JUZXN0LndhaXRVbnRpbEN1cnJlbnRTb3VyY2VGcmFt
ZUlzTG9hZGVkID0gZnVuY3Rpb24oY2FsbGJhY2spCit7CisgICAgdmFyIHNvdXJjZUZyYW1lID0g
V2ViSW5zcGVjdG9yLmN1cnJlbnRQYW5lbC52aXNpYmxlVmlldy5zb3VyY2VGcmFtZTsKKyAgICBp
ZiAoc291cmNlRnJhbWUuX2xvYWRlZCkKKyAgICAgICAgY2FsbGJhY2soc291cmNlRnJhbWUpOwor
ICAgIGVsc2UKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5fYWRkU25pZmZlcihzb3VyY2VGcmFtZSwg
InNldENvbnRlbnQiLCBjYWxsYmFjay5iaW5kKG51bGwsIHNvdXJjZUZyYW1lKSk7Cit9OworCiBJ
bnNwZWN0b3JUZXN0Ll9zY3JpcHRzQXJlUGFyc2VkID0gZnVuY3Rpb24oc2NyaXB0cykKIHsKICAg
ICB2YXIgc2NyaXB0U2VsZWN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNjcmlwdHMtZmls
ZXMiKTsKQEAgLTEwNiwxMiArMTcwLDUyIEBAIEluc3BlY3RvclRlc3QuX3Nob3dTY3JpcHRTb3Vy
Y2UgPSBmdW5jdGlvbihzY3JpcHROYW1lLCBjYWxsYmFjaykKICAgICAgICAgc2NyaXB0c1BhbmVs
Ll9zaG93U2NyaXB0T3JSZXNvdXJjZShzY3JpcHRSZXNvdXJjZSk7CiAgICAgfQogCi0gICAgdmFy
IHZpZXcgPSBzY3JpcHRzUGFuZWwudmlzaWJsZVZpZXc7Ci0gICAgY2FsbGJhY2sgPSBjYWxsYmFj
ay5iaW5kKG51bGwsIHZpZXcpOwotICAgIGlmICghdmlldy5zb3VyY2VGcmFtZS5fbG9hZGVkKQot
ICAgICAgICBJbnNwZWN0b3JUZXN0Ll9hZGRTbmlmZmVyKHZpZXcuc291cmNlRnJhbWUsICJzZXRD
b250ZW50IiwgY2FsbGJhY2spOwotICAgIGVsc2UKKyAgICBJbnNwZWN0b3JUZXN0LndhaXRVbnRp
bEN1cnJlbnRTb3VyY2VGcmFtZUlzTG9hZGVkKGNhbGxiYWNrKTsKK307CisKK0luc3BlY3RvclRl
c3QuZXhwYW5kUHJvcGVydGllcyA9IGZ1bmN0aW9uKHByb3BlcnRpZXMsIGNhbGxiYWNrKQorewor
ICAgIHZhciBpbmRleCA9IDA7CisgICAgZnVuY3Rpb24gZXhwYW5kTmV4dFBhdGgoKQorICAgIHsK
KyAgICAgICAgaWYgKGluZGV4ID09PSBwcm9wZXJ0aWVzLmxlbmd0aCkgeworICAgICAgICAgICAg
Y2FsbGJhY2soKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICB2YXIg
cGFyZW50VHJlZUVsZW1lbnQgPSBwcm9wZXJ0aWVzW2luZGV4KytdOworICAgICAgICB2YXIgcGF0
aCA9IHByb3BlcnRpZXNbaW5kZXgrK107CisgICAgICAgIEluc3BlY3RvclRlc3QuX2V4cGFuZFBy
b3BlcnR5KHBhcmVudFRyZWVFbGVtZW50LCBwYXRoLCAwLCBleHBhbmROZXh0UGF0aCk7CisgICAg
fQorICAgIEluc3BlY3RvclRlc3QucnVuQWZ0ZXJQZW5kaW5nRGlzcGF0Y2hlcyhleHBhbmROZXh0
UGF0aCk7Cit9OworCitJbnNwZWN0b3JUZXN0Ll9leHBhbmRQcm9wZXJ0eSA9IGZ1bmN0aW9uKHBh
cmVudFRyZWVFbGVtZW50LCBwYXRoLCBwYXRoSW5kZXgsIGNhbGxiYWNrKQoreworICAgIGlmIChw
YXRoSW5kZXggPT09IHBhdGgubGVuZ3RoKSB7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVz
dWx0KCJFeHBhbmRlZCBwcm9wZXJ0eTogIiArIHBhdGguam9pbigiLiIpKTsKICAgICAgICAgY2Fs
bGJhY2soKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICB2YXIgbmFtZSA9IHBhdGhbcGF0
aEluZGV4KytdOworICAgIHZhciBwcm9wZXJ0eVRyZWVFbGVtZW50ID0gSW5zcGVjdG9yVGVzdC5f
ZmluZENoaWxkUHJvcGVydHlUcmVlRWxlbWVudChwYXJlbnRUcmVlRWxlbWVudCwgbmFtZSk7Cisg
ICAgaWYgKCFwcm9wZXJ0eVRyZWVFbGVtZW50KSB7CisgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRS
ZXN1bHQoIkZhaWxlZCB0byBleHBhbmQgcHJvcGVydHk6ICIgKyBwYXRoLnNsaWNlKDAsIHBhdGhJ
bmRleCkuam9pbigiLiIpKTsKKyAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlRGVidWdnZXJU
ZXN0KCk7CisgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBwcm9wZXJ0eVRyZWVFbGVtZW50LmV4
cGFuZCgpOworICAgIEluc3BlY3RvclRlc3QucnVuQWZ0ZXJQZW5kaW5nRGlzcGF0Y2hlcyhJbnNw
ZWN0b3JUZXN0Ll9leHBhbmRQcm9wZXJ0eS5iaW5kKEluc3BlY3RvclRlc3QsIHByb3BlcnR5VHJl
ZUVsZW1lbnQsIHBhdGgsIHBhdGhJbmRleCwgY2FsbGJhY2spKTsKIH07CiAKLX0KK0luc3BlY3Rv
clRlc3QuX2ZpbmRDaGlsZFByb3BlcnR5VHJlZUVsZW1lbnQgPSBmdW5jdGlvbihwYXJlbnQsIGNo
aWxkTmFtZSkKK3sKKyAgICB2YXIgY2hpbGRyZW4gPSBwYXJlbnQuY2hpbGRyZW47CisgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykgeworICAgICAgICB2YXIgdHJl
ZUVsZW1lbnQgPSBjaGlsZHJlbltpXTsKKyAgICAgICAgdmFyIHByb3BlcnR5ID0gdHJlZUVsZW1l
bnQucHJvcGVydHk7CisgICAgICAgIGlmIChwcm9wZXJ0eS5uYW1lID09PSBjaGlsZE5hbWUpCisg
ICAgICAgICAgICByZXR1cm4gdHJlZUVsZW1lbnQ7CisgICAgfQorfTsKKworfTsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0Mi5qcyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0Mi5qcwppbmRl
eCA0Y2IzMTQxLi5lYTJjMmMwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9pbnNwZWN0b3ItdGVzdDIuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9p
bnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QyLmpzCkBAIC0xLDEwICsxLDExIEBACi12YXIgaW5pdGlh
bGl6ZV9JbnNwZWN0b3JUZXN0ID0gKGZ1bmN0aW9uKCkgewordmFyIGluaXRpYWxpemVfSW5zcGVj
dG9yVGVzdCA9IGZ1bmN0aW9uKCkgewogCiB2YXIgcmVzdWx0cyA9IFtdOwordmFyIHJlc3VsdHNT
eW5jaHJvbml6ZWQgPSBmYWxzZTsKIAogSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QgPSBmdW5j
dGlvbigpCiB7Ci0gICAgSW5zcGVjdG9yQmFja2VuZC5kaWRFdmFsdWF0ZUZvclRlc3RJbkZyb250
ZW5kKEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0Q2FsbElkLCBKU09OLnN0cmluZ2lmeShyZXN1
bHRzKSk7CisgICAgSW5zcGVjdG9yQmFja2VuZC5kaWRFdmFsdWF0ZUZvclRlc3RJbkZyb250ZW5k
KEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0Q2FsbElkLCAiIik7CiB9OwogCiBJbnNwZWN0b3JU
ZXN0LmV2YWx1YXRlSW5Db25zb2xlID0gZnVuY3Rpb24oY29kZSwgY2FsbGJhY2spCkBAIC0yMSwx
NSArMjIsNzAgQEAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluQ29uc29sZSA9IGZ1bmN0aW9uKGNv
ZGUsIGNhbGxiYWNrKQogICAgICAgICB9KTsKIH07CiAKK0luc3BlY3RvclRlc3QuZXZhbHVhdGVJ
blBhZ2UgPSBmdW5jdGlvbihjb2RlLCBjYWxsYmFjaykKK3sKKyAgICBJbmplY3RlZFNjcmlwdEFj
Y2Vzcy5nZXREZWZhdWx0KCkuZXZhbHVhdGUoY29kZSwgImNvbnNvbGUiLCBjYWxsYmFjayB8fCBm
dW5jdGlvbigpIHt9KTsKK307CisKIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0ID0gZnVuY3Rpb24o
dGV4dCkKIHsKICAgICByZXN1bHRzLnB1c2godGV4dCk7CisgICAgaWYgKHJlc3VsdHNTeW5jaHJv
bml6ZWQpCisgICAgICAgIGFkZFJlc3VsdFRvUGFnZSh0ZXh0KTsKKyAgICBlbHNlIHsKKyAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZXN1bHRzLmxlbmd0aDsgKytpKQorICAgICAgICAgICAg
YWRkUmVzdWx0VG9QYWdlKHJlc3VsdHNbaV0pOworICAgICAgICByZXN1bHRzU3luY2hyb25pemVk
ID0gdHJ1ZTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBhZGRSZXN1bHRUb1BhZ2UodGV4dCkKKyAg
ICB7CisgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoIm91dHB1dCh1bmVzY2Fw
ZSgnIiArIGVzY2FwZSh0ZXh0KSArICInKSkiKTsKKyAgICB9Cit9OworCitJbnNwZWN0b3JUZXN0
LmFkZE9iamVjdCA9IGZ1bmN0aW9uKG9iamVjdCwgbm9uZGV0ZXJtaW5pc3RpY1Byb3BzLCBwcmVm
aXgsIGZpcnN0TGluZVByZWZpeCkKK3sKKyAgICBwcmVmaXggPSBwcmVmaXggfHwgIiI7CisgICAg
Zmlyc3RMaW5lUHJlZml4ID0gZmlyc3RMaW5lUHJlZml4IHx8IHByZWZpeDsKKyAgICBJbnNwZWN0
b3JUZXN0LmFkZFJlc3VsdChmaXJzdExpbmVQcmVmaXggKyAieyIpOworICAgIGZvciAodmFyIHBy
b3AgaW4gb2JqZWN0KSB7CisgICAgICAgIGlmICghb2JqZWN0Lmhhc093blByb3BlcnR5KHByb3Ap
KQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIHZhciBwcmVmaXhXaXRoTmFtZSA9IHBy
ZWZpeCArICIgICAgIiArIHByb3AgKyAiIDogIjsKKyAgICAgICAgdmFyIHByb3BWYWx1ZSA9IG9i
amVjdFtwcm9wXTsKKyAgICAgICAgaWYgKG5vbmRldGVybWluaXN0aWNQcm9wcyAmJiBwcm9wIGlu
IG5vbmRldGVybWluaXN0aWNQcm9wcykKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVz
dWx0KHByZWZpeFdpdGhOYW1lICsgIjwiICsgdHlwZW9mIHByb3BWYWx1ZSArICI+Iik7CisgICAg
ICAgIGVsc2UgaWYgKHR5cGVvZiBwcm9wVmFsdWUgPT09ICJvYmplY3QiKQorICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5hZGRPYmplY3QocHJvcFZhbHVlLCBub25kZXRlcm1pbmlzdGljUHJvcHMs
IHByZWZpeCArICIgICAgIiwgcHJlZml4V2l0aE5hbWUpOworICAgICAgICBlbHNlIGlmICh0eXBl
b2YgcHJvcFZhbHVlID09PSAic3RyaW5nIikKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRk
UmVzdWx0KHByZWZpeFdpdGhOYW1lICsgIlwiIiArIHByb3BWYWx1ZSArICJcIiIpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChwcmVmaXhXaXRoTmFt
ZSArIHByb3BWYWx1ZSk7CisgICAgfQorICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KHByZWZp
eCArICJ9Iik7CiB9OwogCiBJbnNwZWN0b3JUZXN0LnJlbG9hZFBhZ2UgPSBmdW5jdGlvbihjYWxs
YmFjaykKIHsKKyAgICBJbnNwZWN0b3JUZXN0Ll9yZWxvYWRQYWdlQ2FsbGJhY2sgPSBjYWxsYmFj
azsKICAgICBJbnNwZWN0b3JCYWNrZW5kLnJlbG9hZFBhZ2UoKTsKLSAgICBJbnNwZWN0b3JUZXN0
Ll9hZGRTbmlmZmVyKFdlYkluc3BlY3RvciwgInJlc2V0IiwgY2FsbGJhY2spOworfTsKKworSW5z
cGVjdG9yVGVzdC5wYWdlUmVsb2FkZWQgPSBmdW5jdGlvbigpCit7CisgICAgcmVzdWx0c1N5bmNo
cm9uaXplZCA9IGZhbHNlOworICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJQYWdlIHJlbG9h
ZGVkLiIpOworICAgIGlmIChJbnNwZWN0b3JUZXN0Ll9yZWxvYWRQYWdlQ2FsbGJhY2spIHsKKyAg
ICAgICAgdmFyIGNhbGxiYWNrID0gSW5zcGVjdG9yVGVzdC5fcmVsb2FkUGFnZUNhbGxiYWNrOwor
ICAgICAgICBkZWxldGUgSW5zcGVjdG9yVGVzdC5fcmVsb2FkUGFnZUNhbGxiYWNrOworICAgICAg
ICBjYWxsYmFjaygpOworICAgIH0KK307CisKK0luc3BlY3RvclRlc3QucnVuQWZ0ZXJQZW5kaW5n
RGlzcGF0Y2hlcyA9IGZ1bmN0aW9uKGNhbGxiYWNrKQoreworICAgIFdlYkluc3BlY3Rvci5UZXN0
Q29udHJvbGxlci5wcm90b3R5cGUucnVuQWZ0ZXJQZW5kaW5nRGlzcGF0Y2hlcyhjYWxsYmFjayk7
CiB9OwogCiBJbnNwZWN0b3JUZXN0LmVuYWJsZVJlc291cmNlVHJhY2tpbmcgPSBmdW5jdGlvbihj
YWxsYmFjaykKQEAgLTM3LDE1ICs5MywxNSBAQCBJbnNwZWN0b3JUZXN0LmVuYWJsZVJlc291cmNl
VHJhY2tpbmcgPSBmdW5jdGlvbihjYWxsYmFjaykKICAgICBpZiAoV2ViSW5zcGVjdG9yLnBhbmVs
cy5yZXNvdXJjZXMucmVzb3VyY2VUcmFja2luZ0VuYWJsZWQpCiAgICAgICAgIGNhbGxiYWNrKCk7
CiAgICAgZWxzZSB7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuX2FkZFNuaWZmZXIoV2ViSW5zcGVj
dG9yLCAicmVzZXQiLCBjYWxsYmFjayk7CisgICAgICAgIEluc3BlY3RvclRlc3QuX3JlbG9hZFBh
Z2VDYWxsYmFjayA9IGNhbGxiYWNrOwogICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLmVuYWJsZVJl
c291cmNlVHJhY2tpbmcoZmFsc2UpOwogICAgIH0KLX0KK307CiAKIEluc3BlY3RvclRlc3QuZGlz
YWJsZVJlc291cmNlVHJhY2tpbmcgPSBmdW5jdGlvbigpCiB7CiAgICAgSW5zcGVjdG9yQmFja2Vu
ZC5kaXNhYmxlUmVzb3VyY2VUcmFja2luZyhmYWxzZSk7Ci19Cit9OwogCiBJbnNwZWN0b3JUZXN0
LmZpbmRET01Ob2RlID0gZnVuY3Rpb24ocm9vdCwgZmlsdGVyLCBjYWxsYmFjaykKIHsKQEAgLTEx
MCw5ICsxNjYsOSBAQCBJbnNwZWN0b3JUZXN0Ll9hZGRTbmlmZmVyID0gZnVuY3Rpb24ocmVjZWl2
ZXIsIG1ldGhvZE5hbWUsIG92ZXJyaWRlLCBvcHRfc3RpY2t5KQogICAgICAgICB9CiAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAgICAgfTsKLX0KK307CiAKLX0pOworfTsKIAogdmFyIHJ1blRlc3RD
YWxsSWQgPSAwOwogdmFyIGNvbXBsZXRlVGVzdENhbGxJZCA9IDE7CkBAIC0xMjcsOCArMTgzLDEw
IEBAIGZ1bmN0aW9uIHJ1blRlc3QoKQogCiAgICAgZnVuY3Rpb24gcnVuVGVzdEluRnJvbnRlbmQo
aW5pdGlhbGl6YXRpb25GdW5jdGlvbnMsIHRlc3RGdW5jdGlvbiwgY29tcGxldGVUZXN0Q2FsbElk
KQogICAgIHsKLSAgICAgICAgaWYgKHdpbmRvdy5JbnNwZWN0b3JUZXN0KQorICAgICAgICBpZiAo
d2luZG93Lkluc3BlY3RvclRlc3QpIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QucGFnZVJl
bG9hZGVkKCk7CiAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KIAogICAgICAgICBJbnNw
ZWN0b3JUZXN0ID0ge307CiAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0Q2FsbElk
ID0gY29tcGxldGVUZXN0Q2FsbElkOwpAQCAtMTU1LDY1ICsyMTMsMTYgQEAgZnVuY3Rpb24gcnVu
VGVzdCgpCiAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZXZhbHVhdGVJbldlYkluc3BlY3Rvcihy
dW5UZXN0Q2FsbElkLCB0b0V2YWx1YXRlKTsKIH0KIAotZnVuY3Rpb24gZGlkRXZhbHVhdGVGb3JU
ZXN0SW5Gcm9udGVuZChjYWxsSWQsIHJlc3VsdCkKK2Z1bmN0aW9uIGRpZEV2YWx1YXRlRm9yVGVz
dEluRnJvbnRlbmQoY2FsbElkKQogewogICAgIGlmIChjYWxsSWQgIT09IGNvbXBsZXRlVGVzdENh
bGxJZCkKICAgICAgICAgcmV0dXJuOwotICAgIGR1bXBBcnJheShKU09OLnBhcnNlKHJlc3VsdCkp
OwogICAgIGxheW91dFRlc3RDb250cm9sbGVyLmNsb3NlV2ViSW5zcGVjdG9yKCk7CiAgICAgc2V0
VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5
RG9uZSgpOwogICAgIH0sIDApOwogfQogCi1mdW5jdGlvbiBkdW1wKGRhdGEpCi17Ci0gICAgaWYg
KHR5cGVvZiBkYXRhID09PSAic3RyaW5nIikgewotICAgICAgICBvdXRwdXQoZGF0YSk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAodHlwZW9mIGRhdGEgPT09ICJvYmplY3QiKSB7
Ci0gICAgICAgIGR1bXBPYmplY3QoZGF0YSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBpZiAodHlwZW9mIGRhdGEgPT09ICJhcnJheSIpIHsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCByZXN1bHQubGVuZ3RoOyArK2kpCi0gICAgICAgICAgICBkdW1wKHJlc3VsdFtpXSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIGR1bXBBcnJheShyZXN1bHQpCi17
Ci0gICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIEFycmF5KSB7Ci0gICAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgcmVzdWx0Lmxlbmd0aDsgKytpKQotICAgICAgICAgICAgZHVtcChyZXN1bHRbaV0p
OwotICAgIH0gZWxzZQotICAgICAgICBvdXRwdXQocmVzdWx0KTsKLX0KLQotZnVuY3Rpb24gZHVt
cE9iamVjdChvYmplY3QsIG5vbmRldGVybWluaXN0aWNQcm9wcywgcHJlZml4LCBmaXJzdExpbmVQ
cmVmaXgpCi17Ci0gICAgcHJlZml4ID0gcHJlZml4IHx8ICIiOwotICAgIGZpcnN0TGluZVByZWZp
eCA9IGZpcnN0TGluZVByZWZpeCB8fCBwcmVmaXg7Ci0gICAgb3V0cHV0KGZpcnN0TGluZVByZWZp
eCArICJ7Iik7Ci0gICAgZm9yICh2YXIgcHJvcCBpbiBvYmplY3QpIHsKLSAgICAgICAgdmFyIHBy
ZWZpeFdpdGhOYW1lID0gcHJlZml4ICsgIiAgICAiICsgcHJvcCArICIgOiAiOwotICAgICAgICB2
YXIgcHJvcFZhbHVlID0gb2JqZWN0W3Byb3BdOwotICAgICAgICBpZiAobm9uZGV0ZXJtaW5pc3Rp
Y1Byb3BzICYmIHByb3AgaW4gbm9uZGV0ZXJtaW5pc3RpY1Byb3BzKQotICAgICAgICAgICAgb3V0
cHV0KHByZWZpeFdpdGhOYW1lICsgIjwiICsgdHlwZW9mIHByb3BWYWx1ZSArICI+Iik7Ci0gICAg
ICAgIGVsc2UgaWYgKHR5cGVvZiBwcm9wVmFsdWUgPT09ICJvYmplY3QiKQotICAgICAgICAgICAg
ZHVtcE9iamVjdChwcm9wVmFsdWUsIG5vbmRldGVybWluaXN0aWNQcm9wcywgcHJlZml4ICsgIiAg
ICAiLCBwcmVmaXhXaXRoTmFtZSk7Ci0gICAgICAgIGVsc2UgaWYgKHR5cGVvZiBwcm9wVmFsdWUg
PT09ICJzdHJpbmciKQotICAgICAgICAgICAgb3V0cHV0KHByZWZpeFdpdGhOYW1lICsgIlwiIiAr
IHByb3BWYWx1ZSArICJcIiIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBvdXRwdXQocHJl
Zml4V2l0aE5hbWUgKyBwcm9wVmFsdWUpOwotICAgIH0KLSAgICBvdXRwdXQocHJlZml4ICsgIn0i
KTsKLX0KLQogZnVuY3Rpb24gb3V0cHV0KHRleHQpCiB7CiAgICAgdmFyIG91dHB1dEVsZW1lbnQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9kZWJ1Z2dlci1icmVha3BvaW50cy1ub3QtYWN0aXZhdGVkLW9uLXJlbG9hZC5o
dG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLWJyZWFrcG9pbnRzLW5vdC1hY3Rp
dmF0ZWQtb24tcmVsb2FkLmh0bWwKaW5kZXggMWM4YjBmYi4uYzA2NjY0ZCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLWJyZWFrcG9pbnRzLW5vdC1hY3RpdmF0ZWQt
b24tcmVsb2FkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLWJyZWFr
cG9pbnRzLW5vdC1hY3RpdmF0ZWQtb24tcmVsb2FkLmh0bWwKQEAgLTE0LDI5ICsxNCwyNyBAQCB2
YXIgdGVzdCA9IGZ1bmN0aW9uKCkKICAgICB2YXIgdGVzdE5hbWUgPSBXZWJJbnNwZWN0b3IubWFp
blJlc291cmNlLnVybDsKICAgICB0ZXN0TmFtZSA9IHRlc3ROYW1lLnN1YnN0cmluZyh0ZXN0TmFt
ZS5sYXN0SW5kZXhPZignLycpICsgMSk7CiAKLSAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJz
Y3JpcHRzIik7Ci0gICAgSW5zcGVjdG9yVGVzdC5zdGFydERlYnVnZ2VyVGVzdChzdGFydERlYnVn
Z2VyVGVzdENhbGxiYWNrKTsKKyAgICBJbnNwZWN0b3JUZXN0LnN0YXJ0RGVidWdnZXJUZXN0KHN0
ZXAxKTsKIAotICAgIGZ1bmN0aW9uIHN0YXJ0RGVidWdnZXJUZXN0Q2FsbGJhY2soKQorICAgIGZ1
bmN0aW9uIHN0ZXAxKCkKICAgICB7Ci0gICAgICAgIEluc3BlY3RvclRlc3Quc2hvd1NjcmlwdFNv
dXJjZSh0ZXN0TmFtZSwgc2hvd1NjcmlwdFNvdXJjZUNhbGxiYWNrKTsKKyAgICAgICAgSW5zcGVj
dG9yVGVzdC5zaG93U2NyaXB0U291cmNlKHRlc3ROYW1lLCBzdGVwMik7CiAgICAgfQogCi0gICAg
ZnVuY3Rpb24gc2hvd1NjcmlwdFNvdXJjZUNhbGxiYWNrKHZpZXcpCisgICAgZnVuY3Rpb24gc3Rl
cDIoKQogICAgIHsKICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIk1haW4gcmVzb3Vy
Y2Ugd2FzIHNob3duLiIpOwotICAgICAgICB2aWV3Ll9hZGRCcmVha3BvaW50KDgpOworICAgICAg
ICBXZWJJbnNwZWN0b3IucGFuZWxzLnNjcmlwdHMudmlzaWJsZVZpZXcuX2FkZEJyZWFrcG9pbnQo
OCk7CiAgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMuc2NyaXB0cy50b2dnbGVCcmVha3BvaW50
c0J1dHRvbi5lbGVtZW50LmNsaWNrKCk7Ci0gICAgICAgIEluc3BlY3RvclRlc3QucmVsb2FkUGFn
ZShyZWxvYWRQYWdlQ2FsbGJhY2spOworICAgICAgICBJbnNwZWN0b3JUZXN0LnJlbG9hZFBhZ2Uo
c3RlcDMpOwogICAgIH0KIAotICAgIGZ1bmN0aW9uIHJlbG9hZFBhZ2VDYWxsYmFjaygpCisgICAg
ZnVuY3Rpb24gc3RlcDMoKQogICAgIHsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQo
IlBhZ2UgcmVsb2FkZWQuIik7Ci0gICAgICAgIEluc3BlY3RvclRlc3Quc2hvd1NjcmlwdFNvdXJj
ZSh0ZXN0TmFtZSwgc2hvd1NjcmlwdFNvdXJjZUFmdGVyUmVsb2FkQ2FsbGJhY2spOworICAgICAg
ICBJbnNwZWN0b3JUZXN0LnNob3dTY3JpcHRTb3VyY2UodGVzdE5hbWUsIHN0ZXA0KTsKICAgICB9
CiAKLSAgICBmdW5jdGlvbiBzaG93U2NyaXB0U291cmNlQWZ0ZXJSZWxvYWRDYWxsYmFjayh2aWV3
KQorICAgIGZ1bmN0aW9uIHN0ZXA0KCkKICAgICB7CiAgICAgICAgIEluc3BlY3RvclRlc3QuYWRk
UmVzdWx0KCJNYWluIHJlc291cmNlIHdhcyBzaG93bi4iKTsKICAgICAgICAgaWYgKCFXZWJJbnNw
ZWN0b3IucGFuZWxzLnNjcmlwdHMuYnJlYWtwb2ludHNBY3RpdmF0ZWQpCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItY3ljbGljLXJlZi1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItY3ljbGljLXJlZi1leHBlY3RlZC50eHQKaW5k
ZXggNTNmY2Y5YS4uNzM1NGUxYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Rl
YnVnZ2VyLWN5Y2xpYy1yZWYtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9kZWJ1Z2dlci1jeWNsaWMtcmVmLWV4cGVjdGVkLnR4dApAQCAtMyw2ICszLDYgQEAgVGVzdHMg
dGhhdCBkZWJ1Z2dpbmcgYSBwYWdlIHdoZXJlIE9iamVjdCBwcm90b3R5cGUgaGFzIGEgY3ljbGlj
IHJlZmVyZW5jZSB3b24ndAogRGVidWdnZXIgd2FzIGVuYWJsZWQuCiBTZXQgdGltZXIgZm9yIHRl
c3QgZnVuY3Rpb24uCiBTY3JpcHQgZXhlY3V0aW9uIHBhdXNlZC4KLVJlc3VtZWQgc2NyaXB0IGV4
ZWN1dGlvbi4KLURpc2FibGVkIGRlYnVnZ2VyLgorU2NyaXB0IGV4ZWN1dGlvbiByZXN1bWVkLgor
RGVidWdnZXIgd2FzIGRpc2FibGVkLgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZGVidWdnZXItY3ljbGljLXJlZi5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVn
Z2VyLWN5Y2xpYy1yZWYuaHRtbAppbmRleCA4ZDUxYmM0Li4xN2ZlNjM5IDEwMDc1NQotLS0gYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItY3ljbGljLXJlZi5odG1sCisrKyBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1jeWNsaWMtcmVmLmh0bWwKQEAgLTEsNyArMSw3IEBA
CiA8aHRtbD4KIDxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2lu
c3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9kZWJ1Z2dlci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9odHRw
L3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdDIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXRlc3QyLmpzIj48L3NjcmlwdD4K
IDxzY3JpcHQ+CiAKIE9iamVjdC5wcm90b3R5cGUuY3ljbGljUmVmID0gT2JqZWN0LnByb3RvdHlw
ZTsKQEAgLTEwLDQxICsxMCwyNyBAQCBmdW5jdGlvbiB0ZXN0RnVuY3Rpb24oKQogewogICAgIHZh
ciBvID0gbmV3IE9iamVjdCgpOwogICAgIGRlYnVnZ2VyOwotICAgIG5vdGlmeURvbmUoKTsKIH0K
IAotZnVuY3Rpb24gZG9pdCgpCit2YXIgdGVzdCA9IGZ1bmN0aW9uKCkKIHsKLSAgICBldmFsdWF0
ZUluV2ViSW5zcGVjdG9yKCJmcm9udGVuZF90ZXN0RGVidWdPYmplY3RXaXRoQ3ljbGljUmVmIiwg
ZHVtcEFycmF5KTsKLX0KLQotZnVuY3Rpb24gZnJvbnRlbmRfdGVzdERlYnVnT2JqZWN0V2l0aEN5
Y2xpY1JlZih0ZXN0Q29udHJvbGxlcikKLXsKLSAgICB0ZXN0Q29udHJvbGxlci53YWl0VW50aWxE
b25lKCk7CisgICAgSW5zcGVjdG9yVGVzdC5zdGFydERlYnVnZ2VyVGVzdChzdGVwMSk7CiAKLSAg
ICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJzY3JpcHRzIik7Ci0gICAgZnJvbnRlbmRfZW5zdXJl
RGVidWdnZXJFbmFibGVkKGRlYnVnZ2VyV2FzRW5hYmxlZENhbGxiYWNrKTsKLQotICAgIGZ1bmN0
aW9uIGRlYnVnZ2VyV2FzRW5hYmxlZENhbGxiYWNrKCkKKyAgICBmdW5jdGlvbiBzdGVwMSgpCiAg
ICAgewotICAgICAgICB0ZXN0Q29udHJvbGxlci5yZXN1bHRzLnB1c2goIkRlYnVnZ2VyIHdhcyBl
bmFibGVkLiIpOwotICAgICAgICBmcm9udGVuZF9ldmFsdWF0ZUluQ29uc29sZSgic2V0VGltZW91
dCh0ZXN0RnVuY3Rpb24sIDApIiwgZnVuY3Rpb24ocmVzdWx0KQotICAgICAgICB7Ci0gICAgICAg
ICAgICB0ZXN0Q29udHJvbGxlci5yZXN1bHRzLnB1c2goIlNldCB0aW1lciBmb3IgdGVzdCBmdW5j
dGlvbi4iKTsKLSAgICAgICAgfSk7CisgICAgICAgIEluc3BlY3RvclRlc3QucnVuVGVzdEZ1bmN0
aW9uQW5kV2FpdFVudGlsUGF1c2VkKHN0ZXAyKTsKICAgICB9CiAKLSAgICBmcm9udGVuZF9hZGRT
bmlmZmVyKFdlYkluc3BlY3RvciwgInBhdXNlZFNjcmlwdCIsIGZ1bmN0aW9uKGNhbGxGcmFtZXMp
CisgICAgZnVuY3Rpb24gc3RlcDIoKQogICAgIHsKLSAgICAgICAgdGVzdENvbnRyb2xsZXIucmVz
dWx0cy5wdXNoKCJTY3JpcHQgZXhlY3V0aW9uIHBhdXNlZC4iKTsKLSAgICAgICAgZnJvbnRlbmRf
Y29tcGxldGVEZWJ1Z2dlclRlc3QodGVzdENvbnRyb2xsZXIpOwotICAgIH0pOworICAgICAgICBJ
bnNwZWN0b3JUZXN0LmNvbXBsZXRlRGVidWdnZXJUZXN0KCk7CisgICAgfQogfQogCiA8L3Njcmlw
dD4KIDwvaGVhZD4KIAotPGJvZHkgb25sb2FkPSJvbmxvYWQoKSI+Cis8Ym9keSBvbmxvYWQ9InJ1
blRlc3QoKSI+CiA8cD4KIFRlc3RzIHRoYXQgZGVidWdnaW5nIGEgcGFnZSB3aGVyZSBPYmplY3Qg
cHJvdG90eXBlIGhhcyBhIGN5Y2xpYyByZWZlcmVuY2Ugd29uJ3QKIGNyYXNoIHRoZSBicm93c2Vy
LjxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MzU1OCI+
QnVnIDQzNTU4PC9hPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2Vy
LWV2YWwtd2hpbGUtcGF1c2VkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9k
ZWJ1Z2dlci1ldmFsLXdoaWxlLXBhdXNlZC1leHBlY3RlZC50eHQKaW5kZXggMmQ4MzcxYy4uOGY0
ZGQzMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLWV2YWwtd2hp
bGUtcGF1c2VkLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdn
ZXItZXZhbC13aGlsZS1wYXVzZWQtZXhwZWN0ZWQudHh0CkBAIC01LDYgKzUsNiBAQCBTZXQgdGlt
ZXIgZm9yIHRlc3QgZnVuY3Rpb24uCiBTY3JpcHQgZXhlY3V0aW9uIHBhdXNlZC4KIEV2YWx1YXRl
ZCBzY3JpcHQgb24gdGhlIHRvcCBmcmFtZTogNDAyMQogRXZhbHVhdGVkIHNjcmlwdCBvbiB0aGUg
Y2FsbGluZyBmcmFtZTogMzAxCi1SZXN1bWVkIHNjcmlwdCBleGVjdXRpb24uCi1EaXNhYmxlZCBk
ZWJ1Z2dlci4KK1NjcmlwdCBleGVjdXRpb24gcmVzdW1lZC4KK0RlYnVnZ2VyIHdhcyBkaXNhYmxl
ZC4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLWV2YWwtd2hp
bGUtcGF1c2VkLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItZXZhbC13aGls
ZS1wYXVzZWQuaHRtbAppbmRleCAxNWIyMGE4Li5kODMyYWEyIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItZXZhbC13aGlsZS1wYXVzZWQuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItZXZhbC13aGlsZS1wYXVzZWQuaHRtbApAQCAtMSw2
OCArMSw2MCBAQAogPGh0bWw+CiA8aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vaHR0
cC90ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QyLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci10ZXN0Mi5qcyI+
PC9zY3JpcHQ+CiA8c2NyaXB0PgogCiB2YXIgZ2xvYmFsVmFyID0geyBiOiAxIH07CiAKLWZ1bmN0
aW9uIHNsYXZlKHgpIHsKK2Z1bmN0aW9uIHNsYXZlKHgpCit7CiAgICAgdmFyIHkgPSAyMDsKICAg
ICBkZWJ1Z2dlcjsKLSAgICBub3RpZnlEb25lKCk7CiB9CiAKLWZ1bmN0aW9uIHRlc3RGdW5jdGlv
bigpIHsKLSAgICB2YXIgbG9jYWxPYmplY3QgPSB7YTogMzAwfTsKK2Z1bmN0aW9uIHRlc3RGdW5j
dGlvbigpCit7CisgICAgdmFyIGxvY2FsT2JqZWN0ID0geyBhOiAzMDAgfTsKICAgICBzbGF2ZSg0
MDAwKTsKIH0KIAotZnVuY3Rpb24gZG9pdCgpCit2YXIgdGVzdCA9IGZ1bmN0aW9uKCkKIHsKLSAg
ICBldmFsdWF0ZUluV2ViSW5zcGVjdG9yKCJmcm9udGVuZF90ZXN0UGF1c2VPbkRlYnVnZ2VyU3Rh
dGVtZW50IiwgZHVtcEFycmF5KTsKLX0KKyAgICBJbnNwZWN0b3JUZXN0LnN0YXJ0RGVidWdnZXJU
ZXN0KHN0ZXAxKTsKIAotZnVuY3Rpb24gZnJvbnRlbmRfdGVzdFBhdXNlT25EZWJ1Z2dlclN0YXRl
bWVudCh0ZXN0Q29udHJvbGxlcikKLXsKLSAgICB0ZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25l
KCk7CisgICAgZnVuY3Rpb24gc3RlcDEoKQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5y
dW5UZXN0RnVuY3Rpb25BbmRXYWl0VW50aWxQYXVzZWQoc3RlcDIpOworICAgIH0KIAotICAgIFdl
Ykluc3BlY3Rvci5zaG93UGFuZWwoInNjcmlwdHMiKTsKLSAgICBmcm9udGVuZF9lbnN1cmVEZWJ1
Z2dlckVuYWJsZWQoZGVidWdnZXJXYXNFbmFibGVkQ2FsbGJhY2spOworICAgIGZ1bmN0aW9uIHN0
ZXAyKGNhbGxGcmFtZXMpCisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5D
b25zb2xlKCJ4ICsgeSArIGdsb2JhbFZhci5iIiwgc3RlcDMuYmluZChudWxsLCBjYWxsRnJhbWVz
KSk7CisgICAgfQogCi0gICAgZnVuY3Rpb24gZGVidWdnZXJXYXNFbmFibGVkQ2FsbGJhY2soKQor
ICAgIGZ1bmN0aW9uIHN0ZXAzKGNhbGxGcmFtZXMsIHJlc3VsdCkKICAgICB7Ci0gICAgICAgIHRl
c3RDb250cm9sbGVyLnJlc3VsdHMucHVzaCgiRGVidWdnZXIgd2FzIGVuYWJsZWQuIik7Ci0gICAg
ICAgIGZyb250ZW5kX2V2YWx1YXRlSW5Db25zb2xlKCJzZXRUaW1lb3V0KHRlc3RGdW5jdGlvbiwg
MCkiLCBmdW5jdGlvbihyZXN1bHQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRlc3RDb250cm9s
bGVyLnJlc3VsdHMucHVzaCgiU2V0IHRpbWVyIGZvciB0ZXN0IGZ1bmN0aW9uLiIpOwotICAgICAg
ICB9KTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIkV2YWx1YXRlZCBzY3JpcHQg
b24gdGhlIHRvcCBmcmFtZTogIiArIHJlc3VsdCk7CisgICAgICAgIFdlYkluc3BlY3Rvci5wYW5l
bHMuc2NyaXB0cy5zaWRlYmFyUGFuZXMuY2FsbHN0YWNrLnNlbGVjdGVkQ2FsbEZyYW1lID0gY2Fs
bEZyYW1lc1sxXTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5ydW5BZnRlclBlbmRpbmdEaXNwYXRj
aGVzKHN0ZXA0KTsKICAgICB9CiAKLSAgICBmcm9udGVuZF9hZGRTbmlmZmVyKFdlYkluc3BlY3Rv
ciwgInBhdXNlZFNjcmlwdCIsIGZ1bmN0aW9uKGNhbGxGcmFtZXMpCisgICAgZnVuY3Rpb24gc3Rl
cDQoKQogICAgIHsKLSAgICAgICAgdGVzdENvbnRyb2xsZXIucmVzdWx0cy5wdXNoKCJTY3JpcHQg
ZXhlY3V0aW9uIHBhdXNlZC4iKTsKLSAgICAgICAgZnJvbnRlbmRfZXZhbHVhdGVJbkNvbnNvbGUo
InggKyB5ICsgZ2xvYmFsVmFyLmIiLCBmdW5jdGlvbihyZXN1bHQpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIHRlc3RDb250cm9sbGVyLnJlc3VsdHMucHVzaCgiRXZhbHVhdGVkIHNjcmlwdCBvbiB0
aGUgdG9wIGZyYW1lOiAiICsgcmVzdWx0KTsKLSAgICAgICAgICAgIFdlYkluc3BlY3Rvci5wYW5l
bHMuc2NyaXB0cy5zaWRlYmFyUGFuZXMuY2FsbHN0YWNrLnNlbGVjdGVkQ2FsbEZyYW1lID0gY2Fs
bEZyYW1lc1sxXTsKLSAgICAgICAgICAgIHRlc3RDb250cm9sbGVyLnJ1bkFmdGVyUGVuZGluZ0Rp
c3BhdGNoZXModGVzdEV2YWxJbkNhbGxpbmdGcmFtZSk7Ci0gICAgICAgIH0pOworICAgICAgICBJ
bnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5Db25zb2xlKCJsb2NhbE9iamVjdC5hICsgZ2xvYmFsVmFy
LmIiLCBzdGVwNSk7CisgICAgfQogCi0gICAgICAgIGZ1bmN0aW9uIHRlc3RFdmFsSW5DYWxsaW5n
RnJhbWUoKQotICAgICAgICB7Ci0gICAgICAgICAgICBmcm9udGVuZF9ldmFsdWF0ZUluQ29uc29s
ZSgibG9jYWxPYmplY3QuYSArIGdsb2JhbFZhci5iIiwgZnVuY3Rpb24ocmVzdWx0KQotICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIHRlc3RDb250cm9sbGVyLnJlc3VsdHMucHVzaCgiRXZh
bHVhdGVkIHNjcmlwdCBvbiB0aGUgY2FsbGluZyBmcmFtZTogIiArIHJlc3VsdCk7Ci0gICAgICAg
ICAgICAgICAgZnJvbnRlbmRfY29tcGxldGVEZWJ1Z2dlclRlc3QodGVzdENvbnRyb2xsZXIpOwot
ICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0KLSAgICB9KTsKKyAgICBmdW5jdGlvbiBzdGVwNShy
ZXN1bHQpCisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiRXZhbHVhdGVk
IHNjcmlwdCBvbiB0aGUgY2FsbGluZyBmcmFtZTogIiArIHJlc3VsdCk7CisgICAgICAgIEluc3Bl
Y3RvclRlc3QuY29tcGxldGVEZWJ1Z2dlclRlc3QoKTsKKyAgICB9CiB9CiAKIDwvc2NyaXB0Pgog
PC9oZWFkPgogCi08Ym9keSBvbmxvYWQ9Im9ubG9hZCgpIj4KKzxib2R5IG9ubG9hZD0icnVuVGVz
dCgpIj4KIDxwPgogVGVzdHMgdGhhdCBldmFsdWF0aW9uIGluIGNvbnNvbGUgd29ya3MgZmluZSB3
aGVuIHNjcmlwdCBpcyBwYXVzZWQuIEl0IGFsc28gY2hlY2tzIHRoYXQKIHN0YWNrIGFuZCBnbG9i
YWwgdmFyaWFibGVzIGFyZSBhY2Nlc3NpYmxlIGZyb20gdGhlIGNvbnNvbGUuCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItbm8tbmVzdGVkLXBhdXNlLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1uby1uZXN0ZWQtcGF1c2UtZXhw
ZWN0ZWQudHh0CmluZGV4IDBhNjJmYTAuLjIzYjQ4ZjcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9kZWJ1Z2dlci1uby1uZXN0ZWQtcGF1c2UtZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1uby1uZXN0ZWQtcGF1c2UtZXhwZWN0ZWQudHh0
CkBAIC01LDYgKzUsNiBAQCBTZXQgdGltZXIgZm9yIHRlc3QgZnVuY3Rpb24uCiBTY3JpcHQgZXhl
Y3V0aW9uIHBhdXNlZC4KIFNldCB0aW1lciBmb3IgdGVzdCBmdW5jdGlvbi4KIHRlc3RGdW5jdGlv
bi5pbnZvY2F0aW9uQ291bnQgPSAyCi1SZXN1bWVkIHNjcmlwdCBleGVjdXRpb24uCi1EaXNhYmxl
ZCBkZWJ1Z2dlci4KK1NjcmlwdCBleGVjdXRpb24gcmVzdW1lZC4KK0RlYnVnZ2VyIHdhcyBkaXNh
YmxlZC4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLW5vLW5l
c3RlZC1wYXVzZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLW5vLW5lc3Rl
ZC1wYXVzZS5odG1sCmluZGV4IGRmOGM1ZTYuLjhhNmNmYjcgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1uby1uZXN0ZWQtcGF1c2UuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItbm8tbmVzdGVkLXBhdXNlLmh0bWwKQEAgLTEsNjQgKzEs
NDMgQEAKIDxodG1sPgogPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0
b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0Mi5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItdGVzdDIuanMiPjwvc2Ny
aXB0PgogPHNjcmlwdD4KIAogZnVuY3Rpb24gdGVzdEZ1bmN0aW9uKCkKIHsKICAgICB0ZXN0RnVu
Y3Rpb24uaW52b2NhdGlvbkNvdW50Kys7CiAgICAgZGVidWdnZXI7Ci0gICAgaWYgKHRlc3RGdW5j
dGlvbi5kaWRFeGl0RnJvbU5lc3RlZENhbGwpCi0gICAgICAgIG5vdGlmeURvbmUoKTsKLSAgICB0
ZXN0RnVuY3Rpb24uZGlkRXhpdEZyb21OZXN0ZWRDYWxsID0gdHJ1ZTsKIH0KLXRlc3RGdW5jdGlv
bi5pbnZvY2F0aW9uQ291bnQgPSAwOwogCi1mdW5jdGlvbiBkb2l0KCkKLXsKLSAgICBldmFsdWF0
ZUluV2ViSW5zcGVjdG9yKCJmcm9udGVuZF90ZXN0Tm9OZXN0ZWRQYXVzZSIsIGR1bXBBcnJheSk7
Ci19Cit0ZXN0RnVuY3Rpb24uaW52b2NhdGlvbkNvdW50ID0gMDsKIAotZnVuY3Rpb24gZnJvbnRl
bmRfdGVzdE5vTmVzdGVkUGF1c2UodGVzdENvbnRyb2xsZXIpCit2YXIgdGVzdCA9IGZ1bmN0aW9u
KCkKIHsKLSAgICB0ZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgSW5zcGVjdG9y
VGVzdC5zdGFydERlYnVnZ2VyVGVzdChzdGVwMSk7CiAKLSAgICBXZWJJbnNwZWN0b3Iuc2hvd1Bh
bmVsKCJzY3JpcHRzIik7Ci0gICAgZnJvbnRlbmRfZW5zdXJlRGVidWdnZXJFbmFibGVkKGRlYnVn
Z2VyV2FzRW5hYmxlZENhbGxiYWNrKTsKLQotICAgIGZ1bmN0aW9uIGRlYnVnZ2VyV2FzRW5hYmxl
ZENhbGxiYWNrKCkKKyAgICBmdW5jdGlvbiBzdGVwMSgpCiAgICAgewotICAgICAgICB0ZXN0Q29u
dHJvbGxlci5yZXN1bHRzLnB1c2goIkRlYnVnZ2VyIHdhcyBlbmFibGVkLiIpOwotICAgICAgICBm
cm9udGVuZF9ldmFsdWF0ZUluQ29uc29sZSgic2V0VGltZW91dCh0ZXN0RnVuY3Rpb24sIDApIiwg
ZnVuY3Rpb24ocmVzdWx0KQotICAgICAgICB7Ci0gICAgICAgICAgICB0ZXN0Q29udHJvbGxlci5y
ZXN1bHRzLnB1c2goIlNldCB0aW1lciBmb3IgdGVzdCBmdW5jdGlvbi4iKTsKLSAgICAgICAgfSk7
CisgICAgICAgIEluc3BlY3RvclRlc3QucnVuVGVzdEZ1bmN0aW9uQW5kV2FpdFVudGlsUGF1c2Vk
KHN0ZXAyKTsKICAgICB9CiAKLSAgICB2YXIgcGF1c2VkID0gZmFsc2U7Ci0gICAgZnJvbnRlbmRf
YWRkU25pZmZlcihXZWJJbnNwZWN0b3IsICJwYXVzZWRTY3JpcHQiLCBmdW5jdGlvbihjYWxsRnJh
bWVzKQorICAgIGZ1bmN0aW9uIHN0ZXAyKCkKICAgICB7Ci0gICAgICAgIGlmIChwYXVzZWQpIHsK
LSAgICAgICAgICAgIHRlc3RDb250cm9sbGVyLnJlc3VsdHMucHVzaCgiU2NyaXB0IGV4ZWN1dGlv
biBwYXVzZWQgc2Vjb25kIHRpbWUuIik7Ci0gICAgICAgICAgICB0ZXN0Q29udHJvbGxlci5ub3Rp
ZnlEb25lKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgcGF1c2Vk
ID0gdHJ1ZTsKLSAgICAgICAgdGVzdENvbnRyb2xsZXIucmVzdWx0cy5wdXNoKCJTY3JpcHQgZXhl
Y3V0aW9uIHBhdXNlZC4iKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluQ29uc29s
ZSgidGVzdEZ1bmN0aW9uKCk7IHRlc3RGdW5jdGlvbi5pbnZvY2F0aW9uQ291bnQiLCBzdGVwMyk7
CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJTZXQgdGltZXIgZm9yIHRlc3QgZnVu
Y3Rpb24uIik7CisgICAgfQogCi0gICAgICAgIHRlc3RDb250cm9sbGVyLnJlc3VsdHMucHVzaCgi
U2V0IHRpbWVyIGZvciB0ZXN0IGZ1bmN0aW9uLiIpOwotICAgICAgICBmcm9udGVuZF9ldmFsdWF0
ZUluQ29uc29sZSgidGVzdEZ1bmN0aW9uKCk7IHRlc3RGdW5jdGlvbi5pbnZvY2F0aW9uQ291bnQi
LCBmdW5jdGlvbihyZXN1bHQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRlc3RDb250cm9sbGVy
LnJlc3VsdHMucHVzaCgidGVzdEZ1bmN0aW9uLmludm9jYXRpb25Db3VudCA9ICIgKyByZXN1bHQp
OwotICAgICAgICAgICAgZnJvbnRlbmRfY29tcGxldGVEZWJ1Z2dlclRlc3QodGVzdENvbnRyb2xs
ZXIpOwotICAgICAgICB9KTsKLSAgICB9KTsKKyAgICBmdW5jdGlvbiBzdGVwMyhyZXN1bHQpCisg
ICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgidGVzdEZ1bmN0aW9uLmludm9j
YXRpb25Db3VudCA9ICIgKyByZXN1bHQpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRl
RGVidWdnZXJUZXN0KCk7CisgICAgfQogfQogCiA8L3NjcmlwdD4KIDwvaGVhZD4KIAotPGJvZHkg
b25sb2FkPSJvbmxvYWQoKSI+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+CiA8cD4KIFRlc3Rz
IHRoYXQgZGVidWdnZXIgd2lsbCBza2lwIGJyZWFrcG9pbnQgaGl0IHdoZW4gc2NyaXB0IGV4ZWN1
dGlvbiBpcyBhbHJlYWR5IHBhdXNlZC4gPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTQxNzY4Ij5TZWUgYnVnPC9hPgogPC9wPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXBhdXNlLWluLWV2YWwtc2NyaXB0LWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1wYXVzZS1pbi1ldmFsLXNjcmlw
dC1leHBlY3RlZC50eHQKaW5kZXggNTg1MzBmYy4uZjZkZDQ3OSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXBhdXNlLWluLWV2YWwtc2NyaXB0LWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItcGF1c2UtaW4tZXZhbC1zY3Jp
cHQtZXhwZWN0ZWQudHh0CkBAIC01LDYgKzUsNiBAQCBFdmFsdWF0ZWQgc2NyaXB0IGluIGNvbnNv
bGUuCiBTY3JpcHQgZXhlY3V0aW9uIHBhdXNlZC4KIEV4ZWN1dGlvbiBsaW5lIG51bWJlcjogMwog
RXhlY3V0aW9uIGxpbmUgdGV4dDogICAgIGRlYnVnZ2VyOwotUmVzdW1lZCBzY3JpcHQgZXhlY3V0
aW9uLgotRGlzYWJsZWQgZGVidWdnZXIuCitTY3JpcHQgZXhlY3V0aW9uIHJlc3VtZWQuCitEZWJ1
Z2dlciB3YXMgZGlzYWJsZWQuCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9k
ZWJ1Z2dlci1wYXVzZS1pbi1ldmFsLXNjcmlwdC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2RlYnVnZ2VyLXBhdXNlLWluLWV2YWwtc2NyaXB0Lmh0bWwKaW5kZXggYzY1NWFiNi4uYmU0ZTdl
YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXBhdXNlLWluLWV2
YWwtc2NyaXB0Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXBhdXNl
LWluLWV2YWwtc2NyaXB0Lmh0bWwKQEAgLTEsNjMgKzEsNDIgQEAKIDxodG1sPgogPGhlYWQ+Ci08
c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwv
c2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXRl
c3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2lu
c3BlY3Rvci10ZXN0Mi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9p
bnNwZWN0b3IvZGVidWdnZXItdGVzdDIuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KIAotZnVuY3Rp
b24gZG9pdCgpCi17Ci0gICAgZXZhbHVhdGVJbldlYkluc3BlY3RvcigiZnJvbnRlbmRfdGVzdFBh
dXNlT25EZWJ1Z2dlclN0YXRlbWVudCIsIGR1bXBBcnJheSk7Ci19CiAKLWZ1bmN0aW9uIGZyb250
ZW5kX3Rlc3RQYXVzZU9uRGVidWdnZXJTdGF0ZW1lbnQodGVzdENvbnRyb2xsZXIpCit2YXIgdGVz
dCA9IGZ1bmN0aW9uKCkKIHsKLSAgICB0ZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0K
LSAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJzY3JpcHRzIik7Ci0KICAgICB2YXIgc2NyaXB0
VG9FdmFsdWF0ZSA9ICJmdW5jdGlvbiB0ZXN0RnVuY3Rpb24oKSB7XG4iICsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICIgICAgZGVidWdnZXI7XG4iICsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICIgICAgbm90aWZ5RG9uZSgpO1xuIiArCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAifVxuIiArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2V0VGltZW91dCh0ZXN0RnVu
Y3Rpb24sIDApO1xuIjsKLSAgICBmdW5jdGlvbiBkZWJ1Z2dlcldhc0VuYWJsZWRDYWxsYmFjaygp
Ci0gICAgewotICAgICAgICB0ZXN0Q29udHJvbGxlci5yZXN1bHRzLnB1c2goIkRlYnVnZ2VyIHdh
cyBlbmFibGVkLiIpOwogCi0gICAgICAgIGZyb250ZW5kX2V2YWx1YXRlSW5Db25zb2xlKHNjcmlw
dFRvRXZhbHVhdGUsCi0gICAgICAgIGZ1bmN0aW9uKHJlc3VsdCkKLSAgICAgICAgewotICAgICAg
ICAgICAgdGVzdENvbnRyb2xsZXIucmVzdWx0cy5wdXNoKCJFdmFsdWF0ZWQgc2NyaXB0IGluIGNv
bnNvbGUuIik7Ci0gICAgICAgIH0pOwotICAgIH0KKyAgICBJbnNwZWN0b3JUZXN0LnN0YXJ0RGVi
dWdnZXJUZXN0KHN0ZXAxKTsKIAotICAgIGZyb250ZW5kX2Vuc3VyZURlYnVnZ2VyRW5hYmxlZChk
ZWJ1Z2dlcldhc0VuYWJsZWRDYWxsYmFjayk7CisgICAgZnVuY3Rpb24gc3RlcDEoKQorICAgIHsK
KyAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluQ29uc29sZShzY3JpcHRUb0V2YWx1YXRl
LCBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdC5iaW5kKEluc3BlY3RvclRlc3QsICJFdmFsdWF0ZWQg
c2NyaXB0IGluIGNvbnNvbGUuIikpOworICAgICAgICBJbnNwZWN0b3JUZXN0LndhaXRVbnRpbFBh
dXNlZChzdGVwMik7CisgICAgfQogCi0gICAgZnJvbnRlbmRfYWRkU25pZmZlcihXZWJJbnNwZWN0
b3IsICJwYXVzZWRTY3JpcHQiLCBmdW5jdGlvbihjYWxsRnJhbWVzKQorICAgIGZ1bmN0aW9uIHN0
ZXAyKCkKICAgICB7Ci0gICAgICAgIHRlc3RDb250cm9sbGVyLnJlc3VsdHMucHVzaCgiU2NyaXB0
IGV4ZWN1dGlvbiBwYXVzZWQuIik7Ci0gICAgICAgIGZyb250ZW5kX2NoZWNrRXhlY3V0aW9uTGlu
ZVdoZW5Tb3VyY2VGcmFtZUlzTG9hZGVkKHRlc3RDb250cm9sbGVyLCBmcm9udGVuZF9jb21wbGV0
ZURlYnVnZ2VyVGVzdC5iaW5kKG51bGwsIHRlc3RDb250cm9sbGVyKSk7Ci0gICAgfSk7Ci19Cisg
ICAgICAgIEluc3BlY3RvclRlc3Qud2FpdFVudGlsQ3VycmVudFNvdXJjZUZyYW1lSXNMb2FkZWQo
c3RlcDMpOworICAgIH0KIAotZnVuY3Rpb24gZnJvbnRlbmRfY2hlY2tFeGVjdXRpb25MaW5lV2hl
blNvdXJjZUZyYW1lSXNMb2FkZWQodGVzdENvbnRyb2xsZXIsIGNhbGxiYWNrKQotewotICAgIHZh
ciBzb3VyY2VGcmFtZSA9IFdlYkluc3BlY3Rvci5jdXJyZW50UGFuZWwudmlzaWJsZVZpZXcuc291
cmNlRnJhbWU7Ci0gICAgaWYgKHNvdXJjZUZyYW1lLl9sb2FkZWQpIHsKLSAgICAgICAgdGVzdENv
bnRyb2xsZXIucmVzdWx0cy5wdXNoKCJFeGVjdXRpb24gbGluZSBudW1iZXI6ICIgKyBzb3VyY2VG
cmFtZS5leGVjdXRpb25MaW5lKTsKLSAgICAgICAgdGVzdENvbnRyb2xsZXIucmVzdWx0cy5wdXNo
KCJFeGVjdXRpb24gbGluZSB0ZXh0OiAiICsgc291cmNlRnJhbWUuX3RleHRNb2RlbC5saW5lKHNv
dXJjZUZyYW1lLmV4ZWN1dGlvbkxpbmUgLSAxKSk7Ci0gICAgICAgIGNhbGxiYWNrKCk7Ci0gICAg
fSBlbHNlIHsKLSAgICAgICAgZnJvbnRlbmRfYWRkU25pZmZlcihzb3VyY2VGcmFtZSwgInNldENv
bnRlbnQiLCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGZyb250ZW5kX2NoZWNrRXhlY3V0aW9u
TGluZVdoZW5Tb3VyY2VGcmFtZUlzTG9hZGVkKHRlc3RDb250cm9sbGVyLCBjYWxsYmFjayk7Ci0g
ICAgICAgIH0pOworICAgIGZ1bmN0aW9uIHN0ZXAzKHNvdXJjZUZyYW1lKQorICAgIHsKKyAgICAg
ICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIkV4ZWN1dGlvbiBsaW5lIG51bWJlcjogIiArIHNv
dXJjZUZyYW1lLmV4ZWN1dGlvbkxpbmUpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3Vs
dCgiRXhlY3V0aW9uIGxpbmUgdGV4dDogIiArIHNvdXJjZUZyYW1lLl90ZXh0TW9kZWwubGluZShz
b3VyY2VGcmFtZS5leGVjdXRpb25MaW5lIC0gMSkpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmNv
bXBsZXRlRGVidWdnZXJUZXN0KCk7CiAgICAgfQogfQogCiA8L3NjcmlwdD4KIDwvaGVhZD4KIAot
PGJvZHkgb25sb2FkPSJvbmxvYWQoKSI+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+CiA8cD4K
IFRlc3RzIHRoYXQgZGVidWdnZXIgd2lsbCBzdG9wIG9uICJkZWJ1Z2dlciIgc3RhdGVtZW50IGlu
IGEgZnVuY3Rpb24gdGhhdCB3YXMgYWRkZWQKIHRvIHRoZSBpbnNwZWN0ZWQgcGFnZSB2aWEgZXZh
bHVhdGlvbiBpbiBXZWIgSW5zcGVjdG9yIGNvbnNvbGUuPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQxMDU4Ij5CdWcgNDEwNTg8L2E+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItcGF1c2Utb24tZGVidWdnZXItc3RhdGVt
ZW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1wYXVzZS1v
bi1kZWJ1Z2dlci1zdGF0ZW1lbnQtZXhwZWN0ZWQudHh0CmluZGV4IDM5ZWFmMGMuLmQ3OGVlN2Ig
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1wYXVzZS1vbi1kZWJ1
Z2dlci1zdGF0ZW1lbnQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9k
ZWJ1Z2dlci1wYXVzZS1vbi1kZWJ1Z2dlci1zdGF0ZW1lbnQtZXhwZWN0ZWQudHh0CkBAIC0zLDYg
KzMsNiBAQCBUZXN0cyB0aGF0IGRlYnVnZ2VyIHdpbGwgc3RvcCBvbiAiZGVidWdnZXIiIHN0YXRl
bWVudC4KIERlYnVnZ2VyIHdhcyBlbmFibGVkLgogU2V0IHRpbWVyIGZvciB0ZXN0IGZ1bmN0aW9u
LgogU2NyaXB0IGV4ZWN1dGlvbiBwYXVzZWQuCi1SZXN1bWVkIHNjcmlwdCBleGVjdXRpb24uCi1E
aXNhYmxlZCBkZWJ1Z2dlci4KK1NjcmlwdCBleGVjdXRpb24gcmVzdW1lZC4KK0RlYnVnZ2VyIHdh
cyBkaXNhYmxlZC4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2Vy
LXBhdXNlLW9uLWRlYnVnZ2VyLXN0YXRlbWVudC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2RlYnVnZ2VyLXBhdXNlLW9uLWRlYnVnZ2VyLXN0YXRlbWVudC5odG1sCmluZGV4IDc0MTk2Y2Eu
LmNiYjA0N2MgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1wYXVz
ZS1vbi1kZWJ1Z2dlci1zdGF0ZW1lbnQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
ZGVidWdnZXItcGF1c2Utb24tZGVidWdnZXItc3RhdGVtZW50Lmh0bWwKQEAgLTEsNDYgKzEsMzMg
QEAKIDxodG1sPgogPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
aW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL2RlYnVnZ2VyLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0Mi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItdGVzdDIuanMiPjwvc2NyaXB0
PgogPHNjcmlwdD4KIAotZnVuY3Rpb24gdGVzdEZ1bmN0aW9uKCkgewotICAgIGRlYnVnZ2VyOwot
ICAgIG5vdGlmeURvbmUoKTsKLX0KLQotZnVuY3Rpb24gZG9pdCgpCitmdW5jdGlvbiB0ZXN0RnVu
Y3Rpb24oKQogewotICAgIGV2YWx1YXRlSW5XZWJJbnNwZWN0b3IoImZyb250ZW5kX3Rlc3RQYXVz
ZU9uRGVidWdnZXJTdGF0ZW1lbnQiLCBkdW1wQXJyYXkpOworICAgIGRlYnVnZ2VyOwogfQogCi1m
dW5jdGlvbiBmcm9udGVuZF90ZXN0UGF1c2VPbkRlYnVnZ2VyU3RhdGVtZW50KHRlc3RDb250cm9s
bGVyKQordmFyIHRlc3QgPSBmdW5jdGlvbigpCiB7Ci0gICAgdGVzdENvbnRyb2xsZXIud2FpdFVu
dGlsRG9uZSgpOwotCi0gICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCgic2NyaXB0cyIpOwotICAg
IGZyb250ZW5kX2Vuc3VyZURlYnVnZ2VyRW5hYmxlZChkZWJ1Z2dlcldhc0VuYWJsZWRDYWxsYmFj
ayk7CisgICAgSW5zcGVjdG9yVGVzdC5zdGFydERlYnVnZ2VyVGVzdChzdGVwMSk7CiAKLSAgICBm
dW5jdGlvbiBkZWJ1Z2dlcldhc0VuYWJsZWRDYWxsYmFjaygpCisgICAgZnVuY3Rpb24gc3RlcDEo
KQogICAgIHsKLSAgICAgICAgdGVzdENvbnRyb2xsZXIucmVzdWx0cy5wdXNoKCJEZWJ1Z2dlciB3
YXMgZW5hYmxlZC4iKTsKLSAgICAgICAgZnJvbnRlbmRfZXZhbHVhdGVJbkNvbnNvbGUoInNldFRp
bWVvdXQodGVzdEZ1bmN0aW9uLCAwKSIsIGZ1bmN0aW9uKHJlc3VsdCkKLSAgICAgICAgewotICAg
ICAgICAgICAgdGVzdENvbnRyb2xsZXIucmVzdWx0cy5wdXNoKCJTZXQgdGltZXIgZm9yIHRlc3Qg
ZnVuY3Rpb24uIik7Ci0gICAgICAgIH0pOworICAgICAgICBJbnNwZWN0b3JUZXN0LnJ1blRlc3RG
dW5jdGlvbkFuZFdhaXRVbnRpbFBhdXNlZChzdGVwMik7CiAgICAgfQogCi0gICAgZnJvbnRlbmRf
YWRkU25pZmZlcihXZWJJbnNwZWN0b3IsICJwYXVzZWRTY3JpcHQiLCBmdW5jdGlvbihjYWxsRnJh
bWVzKQorICAgIGZ1bmN0aW9uIHN0ZXAyKCkKICAgICB7Ci0gICAgICAgIHRlc3RDb250cm9sbGVy
LnJlc3VsdHMucHVzaCgiU2NyaXB0IGV4ZWN1dGlvbiBwYXVzZWQuIik7Ci0gICAgICAgIGZyb250
ZW5kX2NvbXBsZXRlRGVidWdnZXJUZXN0KHRlc3RDb250cm9sbGVyKTsKLSAgICB9KTsKKyAgICAg
ICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZURlYnVnZ2VyVGVzdCgpOworICAgIH0KIH0KIAogPC9z
Y3JpcHQ+CiA8L2hlYWQ+CiAKLTxib2R5IG9ubG9hZD0ib25sb2FkKCkiPgorPGJvZHkgb25sb2Fk
PSJydW5UZXN0KCkiPgogPHA+CiBUZXN0cyB0aGF0IGRlYnVnZ2VyIHdpbGwgc3RvcCBvbiAiZGVi
dWdnZXIiIHN0YXRlbWVudC4KIDwvcD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9kZWJ1Z2dlci1wcm90by1wcm9wZXJ0eS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZGVidWdnZXItcHJvdG8tcHJvcGVydHktZXhwZWN0ZWQudHh0CmluZGV4IGNmMmVjYWEu
LjAwMTk2YzggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1wcm90
by1wcm9wZXJ0eS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVn
Z2VyLXByb3RvLXByb3BlcnR5LWV4cGVjdGVkLnR4dApAQCAtNSw2ICs1LDYgQEAgU2V0IHRpbWVy
IGZvciB0ZXN0IGZ1bmN0aW9uLgogU2NyaXB0IGV4ZWN1dGlvbiBwYXVzZWQuCiBFeHBhbmRlZCBw
cm9wZXJ0eTogby5fX3Byb3RvX18uX19wcm90b19fCiBFeHBhbmRlZCBwcm9wZXJ0eTogZC5fX3By
b3RvX18uX19wcm90b19fLl9fcHJvdG9fXy5fX3Byb3RvX18uX19wcm90b19fCi1SZXN1bWVkIHNj
cmlwdCBleGVjdXRpb24uCi1EaXNhYmxlZCBkZWJ1Z2dlci4KK1NjcmlwdCBleGVjdXRpb24gcmVz
dW1lZC4KK0RlYnVnZ2VyIHdhcyBkaXNhYmxlZC4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2RlYnVnZ2VyLXByb3RvLXByb3BlcnR5Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZGVidWdnZXItcHJvdG8tcHJvcGVydHkuaHRtbAppbmRleCA1MWE3NDY2Li4yOGVmMTBh
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItcHJvdG8tcHJvcGVy
dHkuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItcHJvdG8tcHJvcGVy
dHkuaHRtbApAQCAtMSwxMDggKzEsNTQgQEAKIDxodG1sPgogPGhlYWQ+Ci08c2NyaXB0IHNyYz0i
Li4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgotPHNj
cmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXRlc3QuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0
Mi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvZGVi
dWdnZXItdGVzdDIuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KIAotZnVuY3Rpb24gQygpIHsKK2Z1
bmN0aW9uIEMoKQorewogfQorCiBDLnByb3RvdHlwZSA9IHsKICAgICBtOiBmdW5jdGlvbigpIHsg
fQogfQogCi1mdW5jdGlvbiB0ZXN0RnVuY3Rpb24oKSB7CitmdW5jdGlvbiB0ZXN0RnVuY3Rpb24o
KQorewogICAgIHZhciBvID0gbmV3IEMoKTsKICAgICB2YXIgZCA9IGRvY3VtZW50LmRvY3VtZW50
RWxlbWVudDsKICAgICBkZWJ1Z2dlcjsKLSAgICBub3RpZnlEb25lKCk7CiB9CiAKLWZ1bmN0aW9u
IGRvaXQoKQordmFyIHRlc3QgPSBmdW5jdGlvbigpCiB7Ci0gICAgZXZhbHVhdGVJbldlYkluc3Bl
Y3RvcigiZnJvbnRlbmRfdGVzdFByb3RvUHJvcGVydHlPblBhdXNlIiwgZHVtcEFycmF5KTsKLX0K
KyAgICBJbnNwZWN0b3JUZXN0LnN0YXJ0RGVidWdnZXJUZXN0KHN0ZXAxKTsKIAotZnVuY3Rpb24g
ZnJvbnRlbmRfdGVzdFByb3RvUHJvcGVydHlPblBhdXNlKHRlc3RDb250cm9sbGVyKQotewotICAg
IHRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLQotICAgIFdlYkluc3BlY3Rvci5zaG93
UGFuZWwoInNjcmlwdHMiKTsKLSAgICBmcm9udGVuZF9lbnN1cmVEZWJ1Z2dlckVuYWJsZWQoZGVi
dWdnZXJXYXNFbmFibGVkQ2FsbGJhY2spOwotCi0gICAgZnVuY3Rpb24gZGVidWdnZXJXYXNFbmFi
bGVkQ2FsbGJhY2soKQorICAgIGZ1bmN0aW9uIHN0ZXAxKCkKICAgICB7Ci0gICAgICAgIHRlc3RD
b250cm9sbGVyLnJlc3VsdHMucHVzaCgiRGVidWdnZXIgd2FzIGVuYWJsZWQuIik7Ci0gICAgICAg
IGZyb250ZW5kX2V2YWx1YXRlSW5Db25zb2xlKCJzZXRUaW1lb3V0KHRlc3RGdW5jdGlvbiwgMCki
LCBmdW5jdGlvbihyZXN1bHQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRlc3RDb250cm9sbGVy
LnJlc3VsdHMucHVzaCgiU2V0IHRpbWVyIGZvciB0ZXN0IGZ1bmN0aW9uLiIpOwotICAgICAgICB9
KTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5ydW5UZXN0RnVuY3Rpb25BbmRXYWl0VW50aWxQYXVz
ZWQoc3RlcDIpOwogICAgIH0KIAotICAgIGZyb250ZW5kX2FkZFNuaWZmZXIoV2ViSW5zcGVjdG9y
LCAicGF1c2VkU2NyaXB0IiwgZnVuY3Rpb24oY2FsbEZyYW1lcykKKyAgICBmdW5jdGlvbiBzdGVw
MihjYWxsRnJhbWVzKQogICAgIHsKLSAgICAgICAgdGVzdENvbnRyb2xsZXIucmVzdWx0cy5wdXNo
KCJTY3JpcHQgZXhlY3V0aW9uIHBhdXNlZC4iKTsKICAgICAgICAgdmFyIHNlY3Rpb25zID0gV2Vi
SW5zcGVjdG9yLmN1cnJlbnRQYW5lbC5zaWRlYmFyUGFuZXMuc2NvcGVjaGFpbi5zZWN0aW9uczsK
ICAgICAgICAgdmFyIGxvY2FsU2NvcGUgPSBzZWN0aW9uc1swXS5wcm9wZXJ0aWVzVHJlZU91dGxp
bmU7CiAgICAgICAgIHZhciBwcm9wZXJ0aWVzID0gWwogICAgICAgICAgICAgbG9jYWxTY29wZSwg
WyJvIiwgIl9fcHJvdG9fXyIsICJfX3Byb3RvX18iXSwKICAgICAgICAgICAgIGxvY2FsU2NvcGUs
IFsiZCIsICJfX3Byb3RvX18iLCAiX19wcm90b19fIiwgIl9fcHJvdG9fXyIsICJfX3Byb3RvX18i
LCAiX19wcm90b19fIl0KICAgICAgICAgXTsKLSAgICAgICAgZnJvbnRlbmRfZXhwYW5kUHJvcGVy
dGllcyh0ZXN0Q29udHJvbGxlciwgcHJvcGVydGllcywgZnJvbnRlbmRfY29tcGxldGVEZWJ1Z2dl
clRlc3QuYmluZChudWxsLCB0ZXN0Q29udHJvbGxlcikpOwotICAgIH0pOwotfQotCi1mdW5jdGlv
biBmcm9udGVuZF9leHBhbmRQcm9wZXJ0aWVzKHRlc3RDb250cm9sbGVyLCBwcm9wZXJ0aWVzLCBj
YWxsYmFjaykKLXsKLSAgICB2YXIgaW5kZXggPSAwOwotICAgIGZ1bmN0aW9uIGV4cGFuZE5leHRQ
YXRoKCkKLSAgICB7Ci0gICAgICAgIGlmIChpbmRleCA9PT0gcHJvcGVydGllcy5sZW5ndGgpIHsK
LSAgICAgICAgICAgIGNhbGxiYWNrKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0K
LSAgICAgICAgdmFyIHBhcmVudFRyZWVFbGVtZW50ID0gcHJvcGVydGllc1tpbmRleCsrXTsKLSAg
ICAgICAgdmFyIHBhdGggPSBwcm9wZXJ0aWVzW2luZGV4KytdOwotICAgICAgICBmcm9udGVuZF9l
eHBhbmRQcm9wZXJ0eSh0ZXN0Q29udHJvbGxlciwgcGFyZW50VHJlZUVsZW1lbnQsIHBhdGgsIDAs
IGV4cGFuZE5leHRQYXRoKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBhbmRQcm9wZXJ0aWVz
KHByb3BlcnRpZXMsIHN0ZXAzKTsKICAgICB9Ci0gICAgdGVzdENvbnRyb2xsZXIucnVuQWZ0ZXJQ
ZW5kaW5nRGlzcGF0Y2hlcyhleHBhbmROZXh0UGF0aCk7Ci19CiAKLWZ1bmN0aW9uIGZyb250ZW5k
X2V4cGFuZFByb3BlcnR5KHRlc3RDb250cm9sbGVyLCBwYXJlbnRUcmVlRWxlbWVudCwgcGF0aCwg
cGF0aEluZGV4LCBjYWxsYmFjaykKLXsKLSAgICBpZiAocGF0aEluZGV4ID09PSBwYXRoLmxlbmd0
aCkgewotICAgICAgICB0ZXN0Q29udHJvbGxlci5yZXN1bHRzLnB1c2goIkV4cGFuZGVkIHByb3Bl
cnR5OiAiICsgcGF0aC5qb2luKCIuIikpOwotICAgICAgICBjYWxsYmFjaygpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotICAgIHZhciBuYW1lID0gcGF0aFtwYXRoSW5kZXgrK107Ci0gICAgdmFy
IHByb3BlcnR5VHJlZUVsZW1lbnQgPSBmcm9udGVuZF9maW5kQ2hpbGRQcm9wZXJ0eVRyZWVFbGVt
ZW50KHBhcmVudFRyZWVFbGVtZW50LCBuYW1lKTsKLSAgICBpZiAoIXByb3BlcnR5VHJlZUVsZW1l
bnQpIHsKLSAgICAgICB0ZXN0Q29udHJvbGxlci5yZXN1bHRzLnB1c2goIkZhaWxlZCB0byBleHBh
bmQgcHJvcGVydHk6ICIgKyBwYXRoLnNsaWNlKDAsIHBhdGhJbmRleCkuam9pbigiLiIpKTsKLSAg
ICAgICB0ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Ci0gICAgICAgcmV0dXJuOwotICAgIH0K
LSAgICBwcm9wZXJ0eVRyZWVFbGVtZW50LmV4cGFuZCgpOwotICAgIHRlc3RDb250cm9sbGVyLnJ1
bkFmdGVyUGVuZGluZ0Rpc3BhdGNoZXMoZnVuY3Rpb24oKQorICAgIGZ1bmN0aW9uIHN0ZXAzKCkK
ICAgICB7Ci0gICAgICAgIGZyb250ZW5kX2V4cGFuZFByb3BlcnR5KHRlc3RDb250cm9sbGVyLCBw
cm9wZXJ0eVRyZWVFbGVtZW50LCBwYXRoLCBwYXRoSW5kZXgsIGNhbGxiYWNrKTsKLSAgICB9KTsK
LX0KLQotZnVuY3Rpb24gZnJvbnRlbmRfZmluZENoaWxkUHJvcGVydHlUcmVlRWxlbWVudChwYXJl
bnQsIGNoaWxkTmFtZSkKLXsKLSAgICB2YXIgY2hpbGRyZW4gPSBwYXJlbnQuY2hpbGRyZW47Ci0g
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykgewotICAgICAgICB2
YXIgdHJlZUVsZW1lbnQgPSBjaGlsZHJlbltpXTsKLSAgICAgICAgdmFyIHByb3BlcnR5ID0gdHJl
ZUVsZW1lbnQucHJvcGVydHk7Ci0gICAgICAgIGlmIChwcm9wZXJ0eS5uYW1lID09PSBjaGlsZE5h
bWUpCi0gICAgICAgICAgICByZXR1cm4gdHJlZUVsZW1lbnQ7CisgICAgICAgIEluc3BlY3RvclRl
c3QuY29tcGxldGVEZWJ1Z2dlclRlc3QoKTsKICAgICB9CiB9CiAKIDwvc2NyaXB0PgogPC9oZWFk
PgogCi08Ym9keSBvbmxvYWQ9Im9ubG9hZCgpIj4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4K
IDxwPgogVGVzdHMgdGhhdCBvYmplY3QncyBfX3Byb3RvX18gcHJvcGVydHkgaXMgcHJlc2VudCBp
biBvYmplY3QgcHJvcGVydGllcyBzZWN0aW9uIHdoZW4KIHNjcmlwdCBpcyBwYXVzZWQgb24gYSBi
cmVha3BvaW50LjxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD00MTIxNCI+QnVnIDQxMjE0PC9hPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2RlYnVnZ2VyLXN0ZXAtaW4tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Rl
YnVnZ2VyLXN0ZXAtaW4tZXhwZWN0ZWQudHh0CmluZGV4IDc4NzcxYWUuLjYzOWUyMDggMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1zdGVwLWluLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItc3RlcC1pbi1leHBlY3RlZC50
eHQKQEAgLTQsMTYgKzQsMTggQEAgRGVidWdnZXIgd2FzIGVuYWJsZWQuCiBTZXQgdGltZXIgZm9y
IHRlc3QgZnVuY3Rpb24uCiBTY3JpcHQgZXhlY3V0aW9uIHBhdXNlZC4KIENhbGwgc3RhY2s6Ci0g
ICAgMCkgdGVzdEZ1bmN0aW9uIChkZWJ1Z2dlci1zdGVwLWluLmh0bWw6MTIpCisgICAgMCkgdGVz
dEZ1bmN0aW9uIChkZWJ1Z2dlci1zdGVwLWluLmh0bWw6MTQpCiBTdGVwcGluZyBpbnRvLi4uCitT
Y3JpcHQgZXhlY3V0aW9uIHJlc3VtZWQuCiBTY3JpcHQgZXhlY3V0aW9uIHBhdXNlZC4KIENhbGwg
c3RhY2s6Ci0gICAgMCkgdGVzdEZ1bmN0aW9uIChkZWJ1Z2dlci1zdGVwLWluLmh0bWw6MTMpCisg
ICAgMCkgdGVzdEZ1bmN0aW9uIChkZWJ1Z2dlci1zdGVwLWluLmh0bWw6MTUpCiBTdGVwcGluZyBp
bnRvLi4uCitTY3JpcHQgZXhlY3V0aW9uIHJlc3VtZWQuCiBTY3JpcHQgZXhlY3V0aW9uIHBhdXNl
ZC4KIENhbGwgc3RhY2s6Ci0gICAgMCkgZCAoZGVidWdnZXItc3RlcC1pbi5odG1sOjcpCi0gICAg
MSkgdGVzdEZ1bmN0aW9uIChkZWJ1Z2dlci1zdGVwLWluLmh0bWw6MTMpCi1SZXN1bWVkIHNjcmlw
dCBleGVjdXRpb24uCi1EaXNhYmxlZCBkZWJ1Z2dlci4KKyAgICAwKSBkIChkZWJ1Z2dlci1zdGVw
LWluLmh0bWw6OCkKKyAgICAxKSB0ZXN0RnVuY3Rpb24gKGRlYnVnZ2VyLXN0ZXAtaW4uaHRtbDox
NSkKK1NjcmlwdCBleGVjdXRpb24gcmVzdW1lZC4KK0RlYnVnZ2VyIHdhcyBkaXNhYmxlZC4KIApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXN0ZXAtaW4uaHRtbCBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1zdGVwLWluLmh0bWwKaW5kZXggMzM2YTZl
Ni4uMjU5M2M5MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXN0
ZXAtaW4uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItc3RlcC1pbi5o
dG1sCkBAIC0xLDU5ICsxLDQ3IEBACiA8aHRtbD4KIDxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQg
c3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci10ZXN0LmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdDIuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2Vy
LXRlc3QyLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+CiAKLWZ1bmN0aW9uIGQoKSB7CitmdW5jdGlv
biBkKCkKK3sKICAgICB2YXIgaSA9IDEwOwogfQogCi1mdW5jdGlvbiB0ZXN0RnVuY3Rpb24oKSB7
CitmdW5jdGlvbiB0ZXN0RnVuY3Rpb24oKQorewogICAgIGRlYnVnZ2VyOwogICAgIGQoKTsKLSAg
ICBub3RpZnlEb25lKCk7CiB9CiAKLWZ1bmN0aW9uIGRvaXQoKQordmFyIHRlc3QgPSBmdW5jdGlv
bigpCiB7Ci0gICAgZXZhbHVhdGVJbldlYkluc3BlY3RvcigiZnJvbnRlbmRfdGVzdFN0ZXBJbiIs
IGR1bXBBcnJheSk7Ci19CisgICAgSW5zcGVjdG9yVGVzdC5zdGFydERlYnVnZ2VyVGVzdChzdGVw
MSk7CiAKLWZ1bmN0aW9uIGZyb250ZW5kX3Rlc3RTdGVwSW4odGVzdENvbnRyb2xsZXIpCi17Ci0g
ICAgdGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotCi0gICAgV2ViSW5zcGVjdG9yLnNo
b3dQYW5lbCgic2NyaXB0cyIpOwotICAgIGZyb250ZW5kX2Vuc3VyZURlYnVnZ2VyRW5hYmxlZChk
ZWJ1Z2dlcldhc0VuYWJsZWRDYWxsYmFjayk7Ci0KLSAgICBmdW5jdGlvbiBkZWJ1Z2dlcldhc0Vu
YWJsZWRDYWxsYmFjaygpCisgICAgZnVuY3Rpb24gc3RlcDEoKQogICAgIHsKLSAgICAgICAgdGVz
dENvbnRyb2xsZXIucmVzdWx0cy5wdXNoKCJEZWJ1Z2dlciB3YXMgZW5hYmxlZC4iKTsKLSAgICAg
ICAgZnJvbnRlbmRfZXZhbHVhdGVJbkNvbnNvbGUoInNldFRpbWVvdXQodGVzdEZ1bmN0aW9uLCAw
KSIsIGZ1bmN0aW9uKHJlc3VsdCkKLSAgICAgICAgewotICAgICAgICAgICAgdGVzdENvbnRyb2xs
ZXIucmVzdWx0cy5wdXNoKCJTZXQgdGltZXIgZm9yIHRlc3QgZnVuY3Rpb24uIik7Ci0gICAgICAg
IH0pOworICAgICAgICBJbnNwZWN0b3JUZXN0LnJ1blRlc3RGdW5jdGlvbkFuZFdhaXRVbnRpbFBh
dXNlZChzdGVwMik7CiAgICAgfQogCiAgICAgdmFyIHN0ZXBDb3VudCA9IDA7Ci0gICAgZnJvbnRl
bmRfYWRkU25pZmZlcihXZWJJbnNwZWN0b3IsICJwYXVzZWRTY3JpcHQiLCBmdW5jdGlvbihjYWxs
RnJhbWVzKQorICAgIGZ1bmN0aW9uIHN0ZXAyKGNhbGxGcmFtZXMpCiAgICAgewotICAgICAgICB0
ZXN0Q29udHJvbGxlci5yZXN1bHRzLnB1c2goIlNjcmlwdCBleGVjdXRpb24gcGF1c2VkLiIpOwot
ICAgICAgICBmcm9udGVuZF9jYXB0dXJlU3RhY2tUcmFjZShjYWxsRnJhbWVzLCB0ZXN0Q29udHJv
bGxlcik7Ci0gICAgICAgIGlmIChzdGVwQ291bnQgPT0gMikKLSAgICAgICAgICAgIGZyb250ZW5k
X2NvbXBsZXRlRGVidWdnZXJUZXN0KHRlc3RDb250cm9sbGVyKTsKLSAgICAgICAgZWxzZSB7Ci0g
ICAgICAgICAgICB0ZXN0Q29udHJvbGxlci5yZXN1bHRzLnB1c2goIlN0ZXBwaW5nIGludG8uLi4i
KTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5jYXB0dXJlU3RhY2tUcmFjZShjYWxsRnJhbWVzKTsK
KyAgICAgICAgaWYgKHN0ZXBDb3VudCA8IDIpIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
YWRkUmVzdWx0KCJTdGVwcGluZyBpbnRvLi4uIik7CiAgICAgICAgICAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgic2NyaXB0cy1zdGVwLWludG8iKS5jbGljaygpOwotICAgICAgICB9CisgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LndhaXRVbnRpbFJlc3VtZWQoSW5zcGVjdG9yVGVzdC53YWl0
VW50aWxQYXVzZWQuYmluZChJbnNwZWN0b3JUZXN0LCBzdGVwMikpOworICAgICAgICB9IGVsc2UK
KyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVEZWJ1Z2dlclRlc3QoKTsKICAgICAg
ICAgc3RlcENvdW50Kys7Ci0gICAgfSwgdHJ1ZSk7CisgICAgfQogfQogCiA8L3NjcmlwdD4KIDwv
aGVhZD4KIAotPGJvZHkgb25sb2FkPSJvbmxvYWQoKSI+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3Qo
KSI+CiA8cD4KIFRlc3RzICJzdGVwIGluIiBmdW5jdGlvbmFsaXR5IGluIGRlYnVnZ2VyLgogPC9w
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXN0ZXAtb3V0LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1zdGVwLW91dC1leHBl
Y3RlZC50eHQKaW5kZXggMWQ4OTg5NC4uZGEyZDBjNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2RlYnVnZ2VyLXN0ZXAtb3V0LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZGVidWdnZXItc3RlcC1vdXQtZXhwZWN0ZWQudHh0CkBAIC00LDEyICs0LDEz
IEBAIERlYnVnZ2VyIHdhcyBlbmFibGVkLgogU2V0IHRpbWVyIGZvciB0ZXN0IGZ1bmN0aW9uLgog
U2NyaXB0IGV4ZWN1dGlvbiBwYXVzZWQuCiBDYWxsIHN0YWNrOgotICAgIDApIGQgKGRlYnVnZ2Vy
LXN0ZXAtb3V0Lmh0bWw6OCkKLSAgICAxKSB0ZXN0RnVuY3Rpb24gKGRlYnVnZ2VyLXN0ZXAtb3V0
Lmh0bWw6MTIpCisgICAgMCkgZCAoZGVidWdnZXItc3RlcC1vdXQuaHRtbDo5KQorICAgIDEpIHRl
c3RGdW5jdGlvbiAoZGVidWdnZXItc3RlcC1vdXQuaHRtbDoxNCkKIFN0ZXBwaW5nIG91dC4uLgor
U2NyaXB0IGV4ZWN1dGlvbiByZXN1bWVkLgogU2NyaXB0IGV4ZWN1dGlvbiBwYXVzZWQuCiBDYWxs
IHN0YWNrOgotICAgIDApIHRlc3RGdW5jdGlvbiAoZGVidWdnZXItc3RlcC1vdXQuaHRtbDoxMykK
LVJlc3VtZWQgc2NyaXB0IGV4ZWN1dGlvbi4KLURpc2FibGVkIGRlYnVnZ2VyLgorICAgIDApIHRl
c3RGdW5jdGlvbiAoZGVidWdnZXItc3RlcC1vdXQuaHRtbDoxNSkKK1NjcmlwdCBleGVjdXRpb24g
cmVzdW1lZC4KK0RlYnVnZ2VyIHdhcyBkaXNhYmxlZC4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXN0ZXAtb3V0Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZGVidWdnZXItc3RlcC1vdXQuaHRtbAppbmRleCAwMmZlYzFhLi44ZjAwYjE0IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItc3RlcC1vdXQuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItc3RlcC1vdXQuaHRtbApAQCAtMSw2MiArMSw0
NyBAQAogPGh0bWw+CiA8aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0
cy9pbnNwZWN0b3IvZGVidWdnZXItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
aHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QyLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci10ZXN0Mi5qcyI+PC9zY3Jp
cHQ+CiA8c2NyaXB0PgogCi1mdW5jdGlvbiBkKCkgeworZnVuY3Rpb24gZCgpCit7CiAgICAgZGVi
dWdnZXI7CiB9CiAKLWZ1bmN0aW9uIHRlc3RGdW5jdGlvbigpIHsKLSAgICBkKCk7Ci0gICAgbm90
aWZ5RG9uZSgpOwotfQotCi1mdW5jdGlvbiBkb2l0KCkKK2Z1bmN0aW9uIHRlc3RGdW5jdGlvbigp
CiB7Ci0gICAgZXZhbHVhdGVJbldlYkluc3BlY3RvcigiZnJvbnRlbmRfdGVzdFN0ZXBPdXQiLCBk
dW1wQXJyYXkpOworICAgIGQoKTsKIH0KIAotZnVuY3Rpb24gZnJvbnRlbmRfdGVzdFN0ZXBPdXQo
dGVzdENvbnRyb2xsZXIpCit2YXIgdGVzdCA9IGZ1bmN0aW9uKCkKIHsKLSAgICB0ZXN0Q29udHJv
bGxlci53YWl0VW50aWxEb25lKCk7CisgICAgSW5zcGVjdG9yVGVzdC5zdGFydERlYnVnZ2VyVGVz
dChzdGVwMSk7CiAKLSAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJzY3JpcHRzIik7Ci0gICAg
ZnJvbnRlbmRfZW5zdXJlRGVidWdnZXJFbmFibGVkKGRlYnVnZ2VyV2FzRW5hYmxlZENhbGxiYWNr
KTsKLQotICAgIGZ1bmN0aW9uIGRlYnVnZ2VyV2FzRW5hYmxlZENhbGxiYWNrKCkKKyAgICBmdW5j
dGlvbiBzdGVwMSgpCiAgICAgewotICAgICAgICB0ZXN0Q29udHJvbGxlci5yZXN1bHRzLnB1c2go
IkRlYnVnZ2VyIHdhcyBlbmFibGVkLiIpOwotICAgICAgICBmcm9udGVuZF9ldmFsdWF0ZUluQ29u
c29sZSgic2V0VGltZW91dCh0ZXN0RnVuY3Rpb24sIDApIiwgZnVuY3Rpb24ocmVzdWx0KQotICAg
ICAgICB7Ci0gICAgICAgICAgICB0ZXN0Q29udHJvbGxlci5yZXN1bHRzLnB1c2goIlNldCB0aW1l
ciBmb3IgdGVzdCBmdW5jdGlvbi4iKTsKLSAgICAgICAgfSk7CisgICAgICAgIEluc3BlY3RvclRl
c3QucnVuVGVzdEZ1bmN0aW9uQW5kV2FpdFVudGlsUGF1c2VkKHN0ZXAyKTsKICAgICB9CiAKLSAg
ICBmcm9udGVuZF9hZGRTbmlmZmVyKFdlYkluc3BlY3RvciwgInBhdXNlZFNjcmlwdCIsIGZ1bmN0
aW9uKGNhbGxGcmFtZXMpCisgICAgZnVuY3Rpb24gc3RlcDIoY2FsbEZyYW1lcykKICAgICB7Ci0g
ICAgICAgIHRlc3RDb250cm9sbGVyLnJlc3VsdHMucHVzaCgiU2NyaXB0IGV4ZWN1dGlvbiBwYXVz
ZWQuIik7Ci0gICAgICAgIGZyb250ZW5kX2NhcHR1cmVTdGFja1RyYWNlKGNhbGxGcmFtZXMsIHRl
c3RDb250cm9sbGVyKTsKLSAgICAgICAgdGVzdFN0ZXBPdXQoKTsKLSAgICB9KTsKLQotICAgIGZ1
bmN0aW9uIHRlc3RTdGVwT3V0KCkgewotICAgICAgICBmcm9udGVuZF9hZGRTbmlmZmVyKFdlYklu
c3BlY3RvciwgInBhdXNlZFNjcmlwdCIsIGZ1bmN0aW9uKGNhbGxGcmFtZXMpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIHRlc3RDb250cm9sbGVyLnJlc3VsdHMucHVzaCgiU2NyaXB0IGV4ZWN1dGlv
biBwYXVzZWQuIik7Ci0gICAgICAgICAgICBmcm9udGVuZF9jYXB0dXJlU3RhY2tUcmFjZShjYWxs
RnJhbWVzLCB0ZXN0Q29udHJvbGxlcik7Ci0gICAgICAgICAgICBmcm9udGVuZF9jb21wbGV0ZURl
YnVnZ2VyVGVzdCh0ZXN0Q29udHJvbGxlcik7Ci0gICAgICAgIH0pOwotICAgICAgICB0ZXN0Q29u
dHJvbGxlci5yZXN1bHRzLnB1c2goIlN0ZXBwaW5nIG91dC4uLiIpOworICAgICAgICBJbnNwZWN0
b3JUZXN0LmNhcHR1cmVTdGFja1RyYWNlKGNhbGxGcmFtZXMpOworICAgICAgICBJbnNwZWN0b3JU
ZXN0LmFkZFJlc3VsdCgiU3RlcHBpbmcgb3V0Li4uIik7CisgICAgICAgIEluc3BlY3RvclRlc3Qu
d2FpdFVudGlsUmVzdW1lZChJbnNwZWN0b3JUZXN0LndhaXRVbnRpbFBhdXNlZC5iaW5kKEluc3Bl
Y3RvclRlc3QsIHN0ZXAzKSk7CiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzY3Jp
cHRzLXN0ZXAtb3V0IikuY2xpY2soKTsKICAgICB9CisKKyAgICBmdW5jdGlvbiBzdGVwMyhjYWxs
RnJhbWVzKQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5jYXB0dXJlU3RhY2tUcmFjZShj
YWxsRnJhbWVzKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZURlYnVnZ2VyVGVzdCgp
OworICAgIH0KIH0KIAogPC9zY3JpcHQ+CiA8L2hlYWQ+CiAKLTxib2R5IG9ubG9hZD0ib25sb2Fk
KCkiPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgogPHA+CiBUZXN0cyAic3RlcCBvdXQiIGZ1
bmN0aW9uYWxpdHkgaW4gZGVidWdnZXIuCiA8L3A+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZGVidWdnZXItc3RlcC1vdmVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9kZWJ1Z2dlci1zdGVwLW92ZXItZXhwZWN0ZWQudHh0CmluZGV4IDhiNzA0ODguLjg2
OTQzYTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1zdGVwLW92
ZXItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1zdGVw
LW92ZXItZXhwZWN0ZWQudHh0CkBAIC00LDE4ICs0LDIwIEBAIERlYnVnZ2VyIHdhcyBlbmFibGVk
LgogU2V0IHRpbWVyIGZvciB0ZXN0IGZ1bmN0aW9uLgogU2NyaXB0IGV4ZWN1dGlvbiBwYXVzZWQu
CiBDYWxsIHN0YWNrOgotICAgIDApIGQgKGRlYnVnZ2VyLXN0ZXAtb3Zlci5odG1sOjEyKQotICAg
IDEpIHRlc3RGdW5jdGlvbiAoZGVidWdnZXItc3RlcC1vdmVyLmh0bWw6MTcpCisgICAgMCkgZCAo
ZGVidWdnZXItc3RlcC1vdmVyLmh0bWw6MTQpCisgICAgMSkgdGVzdEZ1bmN0aW9uIChkZWJ1Z2dl
ci1zdGVwLW92ZXIuaHRtbDoyMCkKIFN0ZXBwaW5nIG92ZXIuLi4KK1NjcmlwdCBleGVjdXRpb24g
cmVzdW1lZC4KIFNjcmlwdCBleGVjdXRpb24gcGF1c2VkLgogQ2FsbCBzdGFjazoKLSAgICAwKSBk
IChkZWJ1Z2dlci1zdGVwLW92ZXIuaHRtbDoxMykKLSAgICAxKSB0ZXN0RnVuY3Rpb24gKGRlYnVn
Z2VyLXN0ZXAtb3Zlci5odG1sOjE3KQorICAgIDApIGQgKGRlYnVnZ2VyLXN0ZXAtb3Zlci5odG1s
OjE1KQorICAgIDEpIHRlc3RGdW5jdGlvbiAoZGVidWdnZXItc3RlcC1vdmVyLmh0bWw6MjApCiBT
dGVwcGluZyBvdmVyLi4uCitTY3JpcHQgZXhlY3V0aW9uIHJlc3VtZWQuCiBTY3JpcHQgZXhlY3V0
aW9uIHBhdXNlZC4KIENhbGwgc3RhY2s6Ci0gICAgMCkgZCAoZGVidWdnZXItc3RlcC1vdmVyLmh0
bWw6MTQpCi0gICAgMSkgdGVzdEZ1bmN0aW9uIChkZWJ1Z2dlci1zdGVwLW92ZXIuaHRtbDoxNykK
LVJlc3VtZWQgc2NyaXB0IGV4ZWN1dGlvbi4KLURpc2FibGVkIGRlYnVnZ2VyLgorICAgIDApIGQg
KGRlYnVnZ2VyLXN0ZXAtb3Zlci5odG1sOjE2KQorICAgIDEpIHRlc3RGdW5jdGlvbiAoZGVidWdn
ZXItc3RlcC1vdmVyLmh0bWw6MjApCitTY3JpcHQgZXhlY3V0aW9uIHJlc3VtZWQuCitEZWJ1Z2dl
ciB3YXMgZGlzYWJsZWQuCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1
Z2dlci1zdGVwLW92ZXIuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1zdGVw
LW92ZXIuaHRtbAppbmRleCA4ZGI0YTlmLi5iMjNkZTA1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZGVidWdnZXItc3RlcC1vdmVyLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2RlYnVnZ2VyLXN0ZXAtb3Zlci5odG1sCkBAIC0xLDYzICsxLDUyIEBACiA8aHRtbD4K
IDxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10
ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9k
ZWJ1Z2dlci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9pbnNwZWN0b3ItdGVzdDIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXRlc3QyLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+
CiAKLWZ1bmN0aW9uIGYoKSB7CitmdW5jdGlvbiBmKCkKK3sKICAgICB2YXIgaSA9IDEwOwogfQog
Ci1mdW5jdGlvbiBkKCkgeworZnVuY3Rpb24gZCgpCit7CiAgICAgZGVidWdnZXI7CiAgICAgZigp
OwogfQogCi1mdW5jdGlvbiB0ZXN0RnVuY3Rpb24oKSB7Ci0gICAgZCgpOwotICAgIG5vdGlmeURv
bmUoKTsKLX0KLQotZnVuY3Rpb24gZG9pdCgpCitmdW5jdGlvbiB0ZXN0RnVuY3Rpb24oKQogewot
ICAgIGV2YWx1YXRlSW5XZWJJbnNwZWN0b3IoImZyb250ZW5kX3Rlc3RTdGVwSW4iLCBkdW1wQXJy
YXkpOworICAgIGQoKTsKIH0KIAotZnVuY3Rpb24gZnJvbnRlbmRfdGVzdFN0ZXBJbih0ZXN0Q29u
dHJvbGxlcikKK3ZhciB0ZXN0ID0gZnVuY3Rpb24oKQogewotICAgIHRlc3RDb250cm9sbGVyLndh
aXRVbnRpbERvbmUoKTsKKyAgICBJbnNwZWN0b3JUZXN0LnN0YXJ0RGVidWdnZXJUZXN0KHN0ZXAx
KTsKIAotICAgIFdlYkluc3BlY3Rvci5zaG93UGFuZWwoInNjcmlwdHMiKTsKLSAgICBmcm9udGVu
ZF9lbnN1cmVEZWJ1Z2dlckVuYWJsZWQoZGVidWdnZXJXYXNFbmFibGVkQ2FsbGJhY2spOwotCi0g
ICAgZnVuY3Rpb24gZGVidWdnZXJXYXNFbmFibGVkQ2FsbGJhY2soKQorICAgIGZ1bmN0aW9uIHN0
ZXAxKCkKICAgICB7Ci0gICAgICAgIHRlc3RDb250cm9sbGVyLnJlc3VsdHMucHVzaCgiRGVidWdn
ZXIgd2FzIGVuYWJsZWQuIik7Ci0gICAgICAgIGZyb250ZW5kX2V2YWx1YXRlSW5Db25zb2xlKCJz
ZXRUaW1lb3V0KHRlc3RGdW5jdGlvbiwgMCkiLCBmdW5jdGlvbihyZXN1bHQpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIHRlc3RDb250cm9sbGVyLnJlc3VsdHMucHVzaCgiU2V0IHRpbWVyIGZvciB0
ZXN0IGZ1bmN0aW9uLiIpOwotICAgICAgICB9KTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5ydW5U
ZXN0RnVuY3Rpb25BbmRXYWl0VW50aWxQYXVzZWQoc3RlcDIpOwogICAgIH0KIAogICAgIHZhciBz
dGVwQ291bnQgPSAwOwotICAgIGZyb250ZW5kX2FkZFNuaWZmZXIoV2ViSW5zcGVjdG9yLCAicGF1
c2VkU2NyaXB0IiwgZnVuY3Rpb24oY2FsbEZyYW1lcykKKyAgICBmdW5jdGlvbiBzdGVwMihjYWxs
RnJhbWVzKQogICAgIHsKLSAgICAgICAgdGVzdENvbnRyb2xsZXIucmVzdWx0cy5wdXNoKCJTY3Jp
cHQgZXhlY3V0aW9uIHBhdXNlZC4iKTsKLSAgICAgICAgZnJvbnRlbmRfY2FwdHVyZVN0YWNrVHJh
Y2UoY2FsbEZyYW1lcywgdGVzdENvbnRyb2xsZXIpOwotICAgICAgICBpZiAoc3RlcENvdW50ID09
IDIpCi0gICAgICAgICAgICBmcm9udGVuZF9jb21wbGV0ZURlYnVnZ2VyVGVzdCh0ZXN0Q29udHJv
bGxlcik7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgdGVzdENvbnRyb2xsZXIucmVzdWx0
cy5wdXNoKCJTdGVwcGluZyBvdmVyLi4uIik7CisgICAgICAgIEluc3BlY3RvclRlc3QuY2FwdHVy
ZVN0YWNrVHJhY2UoY2FsbEZyYW1lcyk7CisgICAgICAgIGlmIChzdGVwQ291bnQgPCAyKSB7Cisg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiU3RlcHBpbmcgb3Zlci4uLiIpOwog
ICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNjcmlwdHMtc3RlcC1vdmVyIiku
Y2xpY2soKTsKLSAgICAgICAgfQorICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC53YWl0VW50aWxS
ZXN1bWVkKEluc3BlY3RvclRlc3Qud2FpdFVudGlsUGF1c2VkLmJpbmQoSW5zcGVjdG9yVGVzdCwg
c3RlcDIpKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBs
ZXRlRGVidWdnZXJUZXN0KCk7CiAgICAgICAgIHN0ZXBDb3VudCsrOwotICAgIH0sIHRydWUpOwor
ICAgIH0KIH0KIAogPC9zY3JpcHQ+CiA8L2hlYWQ+CiAKLTxib2R5IG9ubG9hZD0ib25sb2FkKCki
PgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgogPHA+CiBUZXN0cyAic3RlcCBvdmVyIiBmdW5j
dGlvbmFsaXR5IGluIGRlYnVnZ2VyLgogPC9wPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2RvbS1icmVha3BvaW50cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZG9tLWJyZWFrcG9pbnRzLWV4cGVjdGVkLnR4dAppbmRleCA5M2YxZTlmLi5jODViNzFlIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWJyZWFrcG9pbnRzLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWJyZWFrcG9pbnRzLWV4cGVjdGVk
LnR4dApAQCAtMywxMiArMywxOCBAQCBUZXN0cyBET00gYnJlYWtwb2ludHMuIEJ1ZyA0Mjg4Ngog
RGVidWdnZXIgd2FzIGVuYWJsZWQuCiBGb3VuZCBkb20gbm9kZSBkMC4KIFNldCBzdWJ0cmVlIG1v
ZGlmaWVkIERPTSBicmVha3BvaW50IG9uIGQwLgotUGF1c2VkIGF0IGxpbmUgMTEgaW4gYXBwZW5k
RWxlbWVudAorU2NyaXB0IGV4ZWN1dGlvbiBwYXVzZWQuCitsaW5lOiAxMSwgZnVuY3Rpb246IGFw
cGVuZEVsZW1lbnQKK1NjcmlwdCBleGVjdXRpb24gcmVzdW1lZC4KIEZvdW5kIGRvbSBub2RlIGQx
LgogU2V0IGF0dHJpYnV0ZSBtb2RpZmllZCBET00gYnJlYWtwb2ludCBvbiBkMS4KLVBhdXNlZCBh
dCBsaW5lIDE3IGluIG1vZGlmeUF0dHJpYnV0ZQorU2NyaXB0IGV4ZWN1dGlvbiBwYXVzZWQuCits
aW5lOiAxNywgZnVuY3Rpb246IG1vZGlmeUF0dHJpYnV0ZQorU2NyaXB0IGV4ZWN1dGlvbiByZXN1
bWVkLgogRm91bmQgZG9tIG5vZGUgZDEuCiBTZXQgbm9kZSByZW1vdmVkIERPTSBicmVha3BvaW50
IG9uIGQxLgotUGF1c2VkIGF0IGxpbmUgMjMgaW4gcmVtb3ZlRWxlbWVudAorU2NyaXB0IGV4ZWN1
dGlvbiBwYXVzZWQuCitsaW5lOiAyMywgZnVuY3Rpb246IHJlbW92ZUVsZW1lbnQKK1NjcmlwdCBl
eGVjdXRpb24gcmVzdW1lZC4KIERlYnVnZ2VyIHdhcyBkaXNhYmxlZC4KIApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1icmVha3BvaW50cy5odG1sIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2RvbS1icmVha3BvaW50cy5odG1sCmluZGV4IGZiYjY1MzIuLjFhZTMwZDcgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20tYnJlYWtwb2ludHMuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWJyZWFrcG9pbnRzLmh0bWwKQEAgLTQxLDExICs0
MSwxMSBAQCB2YXIgdGVzdCA9IGZ1bmN0aW9uKCkKICAgICAgICAgSW5zcGVjdG9yVGVzdC53YWl0
VW50aWxQYXVzZWQoc3RlcDMuYmluZChudWxsLCBub2RlKSk7CiAgICAgfQogCi0gICAgZnVuY3Rp
b24gc3RlcDMobm9kZSkKKyAgICBmdW5jdGlvbiBzdGVwMyhub2RlLCBjYWxsRnJhbWVzKQogICAg
IHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoImxpbmU6ICIgKyBjYWxsRnJhbWVz
WzBdLmxpbmUgKyAiLCBmdW5jdGlvbjogIiArIGNhbGxGcmFtZXNbMF0uZnVuY3Rpb25OYW1lKTsK
ICAgICAgICAgV2ViSW5zcGVjdG9yLmRvbUJyZWFrcG9pbnRNYW5hZ2VyLnJlbW92ZUJyZWFrcG9p
bnRzRm9yTm9kZShub2RlKTsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5yZXN1bWVFeGVjdXRpb24o
KTsKLSAgICAgICAgZmluZERPTU5vZGVCeUlkKCJkMSIsIHN0ZXA0KTsKKyAgICAgICAgSW5zcGVj
dG9yVGVzdC5yZXN1bWVFeGVjdXRpb24oZmluZERPTU5vZGVCeUlkLmJpbmQobnVsbCwgImQxIiwg
c3RlcDQpKTsKICAgICB9CiAKICAgICBmdW5jdGlvbiBzdGVwNChub2RlKQpAQCAtNTcsMTEgKzU3
LDExIEBAIHZhciB0ZXN0ID0gZnVuY3Rpb24oKQogICAgICAgICBJbnNwZWN0b3JUZXN0LndhaXRV
bnRpbFBhdXNlZChzdGVwNS5iaW5kKG51bGwsIG5vZGUpKTsKICAgICB9CiAKLSAgICBmdW5jdGlv
biBzdGVwNShub2RlKQorICAgIGZ1bmN0aW9uIHN0ZXA1KG5vZGUsIGNhbGxGcmFtZXMpCiAgICAg
eworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgibGluZTogIiArIGNhbGxGcmFtZXNb
MF0ubGluZSArICIsIGZ1bmN0aW9uOiAiICsgY2FsbEZyYW1lc1swXS5mdW5jdGlvbk5hbWUpOwog
ICAgICAgICBXZWJJbnNwZWN0b3IuZG9tQnJlYWtwb2ludE1hbmFnZXIucmVtb3ZlQnJlYWtwb2lu
dHNGb3JOb2RlKG5vZGUpOwotICAgICAgICBJbnNwZWN0b3JUZXN0LnJlc3VtZUV4ZWN1dGlvbigp
OwotICAgICAgICBmaW5kRE9NTm9kZUJ5SWQoImQxIiwgc3RlcDYpOworICAgICAgICBJbnNwZWN0
b3JUZXN0LnJlc3VtZUV4ZWN1dGlvbihmaW5kRE9NTm9kZUJ5SWQuYmluZChudWxsLCAiZDEiLCBz
dGVwNikpOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHN0ZXA2KG5vZGUpCkBAIC03Myw4ICs3Myw5
IEBAIHZhciB0ZXN0ID0gZnVuY3Rpb24oKQogICAgICAgICBJbnNwZWN0b3JUZXN0LndhaXRVbnRp
bFBhdXNlZChzdGVwNy5iaW5kKG51bGwsIG5vZGUpKTsKICAgICB9CiAKLSAgICBmdW5jdGlvbiBz
dGVwNyhub2RlKQorICAgIGZ1bmN0aW9uIHN0ZXA3KG5vZGUsIGNhbGxGcmFtZXMpCiAgICAgewor
ICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgibGluZTogIiArIGNhbGxGcmFtZXNbMF0u
bGluZSArICIsIGZ1bmN0aW9uOiAiICsgY2FsbEZyYW1lc1swXS5mdW5jdGlvbk5hbWUpOwogICAg
ICAgICBXZWJJbnNwZWN0b3IuZG9tQnJlYWtwb2ludE1hbmFnZXIucmVtb3ZlQnJlYWtwb2ludHNG
b3JOb2RlKG5vZGUpOwogICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlRGVidWdnZXJUZXN0
KCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMt
YXBpLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zLWFwaS1l
eHBlY3RlZC50eHQKaW5kZXggYzA3NDcxYi4uYTlmZDJlNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMtYXBpLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy1hcGktZXhwZWN0ZWQudHh0CkBAIC0xLDUgKzEsNiBAQAog
VGVzdHMgcHVibGljIGludGVyZmFjZSBvZiBXZWJJbnNwZWN0b3IgRXh0ZW5zaW9ucyBBUEkKIAor
UGFnZSByZWxvYWRlZC4KIFN0YXJ0ZWQgZXh0ZW5zaW9uLgogUnVubmluZyB0ZXN0cy4uLgogUlVO
TklORyBURVNUOiBleHRlbnNpb25fdGVzdEFQSQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2V4dGVuc2lvbnMtYXVkaXRzLWFwaS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZXh0ZW5zaW9ucy1hdWRpdHMtYXBpLWV4cGVjdGVkLnR4dAppbmRleCAxMDcyYWE1
Li45MjBiM2MzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy1h
dWRpdHMtYXBpLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5z
aW9ucy1hdWRpdHMtYXBpLWV4cGVjdGVkLnR4dApAQCAtMSw1ICsxLDYgQEAKIFRlc3RzIGF1ZGl0
cyBzdXBwb3J0IGluIFdlYkluc3BlY3RvciBFeHRlbnNpb25zIEFQSQogCitQYWdlIHJlbG9hZGVk
LgogU3RhcnRlZCBleHRlbnNpb24uCiBSdW5uaW5nIHRlc3RzLi4uCiBSVU5OSU5HIFRFU1Q6IGV4
dGVuc2lvbl90ZXN0QXVkaXRzQVBJCkBAIC0zMyw2ICszNCw2IEBAIGNhdGVnb3J5Lm9uQXVkaXRT
dGFydGVkIGZpcmVkLCByZXN1bHRzIGR1bXAgZm9sbG93czoKICAgICBleHBhbmRlZCA6IGZhbHNl
CiAgICAgYWRkQ2hpbGQgOiA8ZnVuY3Rpb24+CiB9Ci1BbGwgdGVzdHMgZG9uZS4KICAgRXh0ZW5z
aW9uIGF1ZGl0cworQWxsIHRlc3RzIGRvbmUuCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9leHRlbnNpb25zLWF1ZGl0cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZXh0ZW5zaW9ucy1hdWRpdHMtZXhwZWN0ZWQudHh0CmluZGV4IGExZWVlNzMuLmUyNWYz
MmMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zLWF1ZGl0cy1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMtYXVkaXRz
LWV4cGVjdGVkLnR4dApAQCAtMSwxMiArMSwxMiBAQAogVGVzdHMgYXVkaXRzIHN1cHBvcnQgaW4g
V2ViSW5zcGVjdG9yIEV4dGVuc2lvbnMgQVBJCiAKK1BhZ2UgcmVsb2FkZWQuCiBTdGFydGVkIGV4
dGVuc2lvbi4KIFJ1bm5pbmcgdGVzdHMuLi4KIFJVTk5JTkcgVEVTVDogZXh0ZW5zaW9uX3Rlc3RB
dWRpdHMKIEFkZGVkIGF1ZGl0IGNhdGVnb3J5LgogY2F0ZWdvcnkub25BdWRpdFN0YXJ0ZWQgZmly
ZWQKIGZhaWxlZENhdGVnb3J5Lm9uQXVkaXRTdGFydGVkIGZpcmVkLCB0aHJvd2luZyBleGNlcHRp
b24KLUFsbCB0ZXN0cyBkb25lLgogICBFeHRlbnNpb24gYXVkaXRzCiAgICAgRmFpbGVkIHJ1bGUg
KDQyKQogICAgICB0aGlzIHJ1bGUgYWx3YXlzIGZhaWxzCkBAIC0yNSw0ICsyNSw1IEBAIEFsbCB0
ZXN0cyBkb25lLgogICAgIFBhc3NlZCBydWxlCiAgICAgIHRoaXMgcnVsZSBhbHdheXMgcGFzc2Vz
IG9rCiAgIEV4dGVuc2lvbiBhdWRpdHMgdGhhdCBmYWlsCitBbGwgdGVzdHMgZG9uZS4KIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMtZXhwZWN0ZWQudHh0CmluZGV4IDgzMTk0
MzQuLmJlNTcwNmMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25z
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy1leHBl
Y3RlZC50eHQKQEAgLTEsNSArMSw2IEBACiBUZXN0cyBXZWJJbnNwZWN0b3IgZXh0ZW5zaW9uIEFQ
SQogCitQYWdlIHJlbG9hZGVkLgogU3RhcnRlZCBleHRlbnNpb24uCiBSdW5uaW5nIHRlc3RzLi4u
CiBSVU5OSU5HIFRFU1Q6IGV4dGVuc2lvbl90ZXN0Q3JlYXRlUGFuZWwKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9yZXBvcnQtQVBJLWVycm9ycy5odG1sIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL3JlcG9ydC1BUEktZXJyb3JzLmh0bWwKaW5kZXggMDdkMGI2Ni4uZDdjNzBiNyAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3JlcG9ydC1BUEktZXJyb3JzLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3JlcG9ydC1BUEktZXJyb3JzLmh0bWwKQEAgLTEy
LDEwICsxMiwxMyBAQCBmdW5jdGlvbiB0ZXN0KCkKIAogICAgIEluc3BlY3RvclRlc3QuX2FkZFNu
aWZmZXIoY29uc29sZSwgImVycm9yIiwgY2FsbGJhY2ssIHRydWUpOwogCit0cnl7CiAgICAgSW5z
cGVjdG9yQmFja2VuZC5lbmFibGVSZXNvdXJjZVRyYWNraW5nKDEsIGNhbGxiYWNrKTsKLSAgICBJ
bnNwZWN0b3JCYWNrZW5kLmVuYWJsZVJlc291cmNlVHJhY2tpbmcoKTsKLSAgICBJbnNwZWN0b3JC
YWNrZW5kLmVuYWJsZVJlc291cmNlVHJhY2tpbmcodHJ1ZSwgIm5vdCBhIGZ1bmN0aW9uIik7Ci0g
ICAgV2ViSW5zcGVjdG9yX3N5bmNEaXNwYXRjaCgneyJ0eXBlIjogImV2ZW50IiwgImRvbWFpbiI6
ICJkb20iLCAiZXZlbnQiOiAic29tZXRoaW5nLXN0cmFuZ2UiLCAiZGF0YSI6IHt9fScpOworfSBj
YXRjaChlKQoreyBjb25zb2xlLmVycm9yKGUpO30KKy8vICAgIEluc3BlY3RvckJhY2tlbmQuZW5h
YmxlUmVzb3VyY2VUcmFja2luZygpOworLy8gICAgSW5zcGVjdG9yQmFja2VuZC5lbmFibGVSZXNv
dXJjZVRyYWNraW5nKHRydWUsICJub3QgYSBmdW5jdGlvbiIpOworLy8gICAgV2ViSW5zcGVjdG9y
X3N5bmNEaXNwYXRjaCgneyJ0eXBlIjogImV2ZW50IiwgImRvbWFpbiI6ICJkb20iLCAiZXZlbnQi
OiAic29tZXRoaW5nLXN0cmFuZ2UiLCAiZGF0YSI6IHt9fScpOwogCiAgICAgSW5zcGVjdG9yVGVz
dC5jb21wbGV0ZVRlc3QoKTsKIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9y
ZXBvcnQtcHJvdG9jb2wtZXJyb3JzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcmVwb3J0
LXByb3RvY29sLWVycm9ycy5odG1sCmluZGV4IGQwMzY0YjYuLmE1ZTc4NzQgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9yZXBvcnQtcHJvdG9jb2wtZXJyb3JzLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL3JlcG9ydC1wcm90b2NvbC1lcnJvcnMuaHRtbApAQCAtMjQs
NyArMjQsOCBAQCBmdW5jdGlvbiB0ZXN0KCkKIAogICAgIGZ1bmN0aW9uIGNhbGxiYWNrKG1lc3Nh
Z2UpCiAgICAgewotICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChtZXNzYWdlKTsKKyAg
ICAgICAgaWYgKG51bWJlck9mUmVwb3J0cyA8IG1lc3NhZ2VzLmxlbmd0aCkKKyAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuYWRkT2JqZWN0KG1lc3NhZ2UpOwogCiAgICAgICAgIGlmICgrK251bWJl
ck9mUmVwb3J0cyA9PT0gbWVzc2FnZXMubGVuZ3RoKQogICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5jb21wbGV0ZVRlc3QoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtL2luc3BlY3Rvci9kZWJ1Z2dlci1zdGVwLWluLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtL2luc3BlY3Rvci9kZWJ1Z2dlci1zdGVwLWluLWV4cGVjdGVkLnR4
dApvbGQgbW9kZSAxMDA3NTUKbmV3IG1vZGUgMTAwNjQ0CmluZGV4IDcyYWY2ZTguLmQ3NTI2NTIK
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaW5zcGVjdG9yL2RlYnVnZ2VyLXN0
ZXAtaW4tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2lu
c3BlY3Rvci9kZWJ1Z2dlci1zdGVwLWluLWV4cGVjdGVkLnR4dApAQCAtMSwxOCArMSwyMSBAQAot
VGVzdHMgInN0ZXAgaW4iIGZ1bmN0aW9uYWxpdHkgaW4gZGVidWdnZXIuDQotDQotRGVidWdnZXIg
d2FzIGVuYWJsZWQuDQotU2V0IHRpbWVyIGZvciB0ZXN0IGZ1bmN0aW9uLg0KLVNjcmlwdCBleGVj
dXRpb24gcGF1c2VkLg0KLUNhbGwgc3RhY2s6DQotICAgIDApIHRlc3RGdW5jdGlvbiAoZGVidWdn
ZXItc3RlcC1pbi5odG1sOjEyKQ0KLVN0ZXBwaW5nIGludG8uLi4NCi1TY3JpcHQgZXhlY3V0aW9u
IHBhdXNlZC4NCi1DYWxsIHN0YWNrOg0KLSAgICAwKSB0ZXN0RnVuY3Rpb24gKGRlYnVnZ2VyLXN0
ZXAtaW4uaHRtbDoxMykNCi1TdGVwcGluZyBpbnRvLi4uDQotU2NyaXB0IGV4ZWN1dGlvbiBwYXVz
ZWQuDQotQ2FsbCBzdGFjazoNCi0gICAgMCkgZCAoZGVidWdnZXItc3RlcC1pbi5odG1sOjgpDQot
ICAgIDEpIHRlc3RGdW5jdGlvbiAoZGVidWdnZXItc3RlcC1pbi5odG1sOjEzKQ0KLVJlc3VtZWQg
c2NyaXB0IGV4ZWN1dGlvbi4NCi1EaXNhYmxlZCBkZWJ1Z2dlci4NCitUZXN0cyAic3RlcCBpbiIg
ZnVuY3Rpb25hbGl0eSBpbiBkZWJ1Z2dlci4KKworRGVidWdnZXIgd2FzIGVuYWJsZWQuCitTZXQg
dGltZXIgZm9yIHRlc3QgZnVuY3Rpb24uCitTY3JpcHQgZXhlY3V0aW9uIHBhdXNlZC4KK0NhbGwg
c3RhY2s6CisgICAgMCkgdGVzdEZ1bmN0aW9uIChkZWJ1Z2dlci1zdGVwLWluLmh0bWw6MTQpCitT
dGVwcGluZyBpbnRvLi4uCitTY3JpcHQgZXhlY3V0aW9uIHJlc3VtZWQuCitTY3JpcHQgZXhlY3V0
aW9uIHBhdXNlZC4KK0NhbGwgc3RhY2s6CisgICAgMCkgdGVzdEZ1bmN0aW9uIChkZWJ1Z2dlci1z
dGVwLWluLmh0bWw6MTUpCitTdGVwcGluZyBpbnRvLi4uCitTY3JpcHQgZXhlY3V0aW9uIHJlc3Vt
ZWQuCitTY3JpcHQgZXhlY3V0aW9uIHBhdXNlZC4KK0NhbGwgc3RhY2s6CisgICAgMCkgZCAoZGVi
dWdnZXItc3RlcC1pbi5odG1sOjkpCisgICAgMSkgdGVzdEZ1bmN0aW9uIChkZWJ1Z2dlci1zdGVw
LWluLmh0bWw6MTUpCitTY3JpcHQgZXhlY3V0aW9uIHJlc3VtZWQuCitEZWJ1Z2dlciB3YXMgZGlz
YWJsZWQuCisK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>66194</attachid>
            <date>2010-09-01 03:53:36 -0700</date>
            <delta_ts>2010-09-01 05:13:40 -0700</delta_ts>
            <desc>Proposed patch.</desc>
            <filename>tests.patch</filename>
            <type>text/plain</type>
            <size>62103</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlYWU5MTE1Li5jMjMxNGQzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzIgQEAKKzIwMTAtMDkt
MDEgIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogbW92
ZSBkZWJ1Z2dlciB0ZXN0cyB0byB0aGUgbmV3IHRlc3QgaGFybmVzcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQ5MzkKKworICAgICAgICAqIGh0dHAv
dGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXRlc3QuanM6IFJlbW92ZWQuCisgICAgICAgICogaHR0
cC90ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItdGVzdDIuanM6CisgICAgICAgIChpbml0aWFsaXpl
X0RlYnVnZ2VyVGVzdC5JbnNwZWN0b3JUZXN0LnN0YXJ0RGVidWdnZXJUZXN0LnN0YXJ0VGVzdCk6
CisgICAgICAgIChpbml0aWFsaXplX0RlYnVnZ2VyVGVzdC5JbnNwZWN0b3JUZXN0LnN0YXJ0RGVi
dWdnZXJUZXN0KToKKyAgICAgICAgKGluaXRpYWxpemVfRGVidWdnZXJUZXN0Lkluc3BlY3RvclRl
c3QuY29tcGxldGVEZWJ1Z2dlclRlc3QuZGlzYWJsZURlYnVnZ2VyKToKKyAgICAgICAgKGluaXRp
YWxpemVfRGVidWdnZXJUZXN0Lkluc3BlY3RvclRlc3QucnVuVGVzdEZ1bmN0aW9uQW5kV2FpdFVu
dGlsUGF1c2VkKToKKyAgICAgICAgKGluaXRpYWxpemVfRGVidWdnZXJUZXN0Lkluc3BlY3RvclRl
c3Qud2FpdFVudGlsUGF1c2VkKToKKyAgICAgICAgKGluaXRpYWxpemVfRGVidWdnZXJUZXN0Lklu
c3BlY3RvclRlc3Qud2FpdFVudGlsUmVzdW1lZCk6CisgICAgICAgIChpbml0aWFsaXplX0RlYnVn
Z2VyVGVzdC5JbnNwZWN0b3JUZXN0LnJlc3VtZUV4ZWN1dGlvbik6CisgICAgICAgIChpbml0aWFs
aXplX0RlYnVnZ2VyVGVzdC5JbnNwZWN0b3JUZXN0LmNhcHR1cmVTdGFja1RyYWNlKToKKyAgICAg
ICAgKGluaXRpYWxpemVfRGVidWdnZXJUZXN0Lkluc3BlY3RvclRlc3QuX3BhdXNlZFNjcmlwdCk6
CisgICAgICAgIChpbml0aWFsaXplX0RlYnVnZ2VyVGVzdC5JbnNwZWN0b3JUZXN0Ll9yZXN1bWVk
U2NyaXB0KToKKyAgICAgICAgKGluaXRpYWxpemVfRGVidWdnZXJUZXN0Lkluc3BlY3RvclRlc3Qu
d2FpdFVudGlsQ3VycmVudFNvdXJjZUZyYW1lSXNMb2FkZWQpOgorICAgICAgICAoaW5pdGlhbGl6
ZV9EZWJ1Z2dlclRlc3QuSW5zcGVjdG9yVGVzdC5fc2hvd1NjcmlwdFNvdXJjZSk6CisgICAgICAg
IChpbml0aWFsaXplX0RlYnVnZ2VyVGVzdC5JbnNwZWN0b3JUZXN0LmV4cGFuZFByb3BlcnRpZXMu
ZXhwYW5kTmV4dFBhdGgpOgorICAgICAgICAoaW5pdGlhbGl6ZV9EZWJ1Z2dlclRlc3QuSW5zcGVj
dG9yVGVzdC5leHBhbmRQcm9wZXJ0aWVzKToKKyAgICAgICAgKGluaXRpYWxpemVfRGVidWdnZXJU
ZXN0Lkluc3BlY3RvclRlc3QuX2V4cGFuZFByb3BlcnR5KToKKyAgICAgICAgKGluaXRpYWxpemVf
RGVidWdnZXJUZXN0Lkluc3BlY3RvclRlc3QuX2ZpbmRDaGlsZFByb3BlcnR5VHJlZUVsZW1lbnQp
OgorICAgICAgICAoaW5pdGlhbGl6ZV9EZWJ1Z2dlclRlc3QpOgorICAgICAgICAqIGh0dHAvdGVz
dHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0Mi5qczoKKyAgICAgICAgKGluaXRpYWxpemVfSW5z
cGVjdG9yVGVzdC5JbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCk6CisgICAgICAgIChpbml0aWFs
aXplX0luc3BlY3RvclRlc3QuSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSk6CisgICAgICAg
IChpbml0aWFsaXplX0luc3BlY3RvclRlc3QuSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQuYWRkUmVz
dWx0VG9QYWdlKToKKyAgICAgICAgKGluaXRpYWxpemVfSW5zcGVjdG9yVGVzdC5JbnNwZWN0b3JU
ZXN0LmFkZFJlc3VsdCk6CisgICAgICAgIChpbml0aWFsaXplX0luc3BlY3RvclRlc3QuSW5zcGVj
dG9yVGVzdC5hZGRPYmplY3QpOgorICAgICAgICAoaW5pdGlhbGl6ZV9JbnNwZWN0b3JUZXN0Lklu
c3BlY3RvclRlc3QucmVsb2FkUGFnZSk6CisgICAgICAgIChpbml0aWFsaXplX0luc3BlY3RvclRl
c3QuSW5zcGVjdG9yVGVzdC5wYWdlUmVsb2FkZWQpOgorICAgICAgICAoaW5pdGlhbGl6ZV9JbnNw
ZWN0b3JUZXN0Lkluc3BlY3RvclRlc3QucnVuQWZ0ZXJQZW5kaW5nRGlzcGF0Y2hlcyk6CisgICAg
ICAgIChpbml0aWFsaXplX0luc3BlY3RvclRlc3QuSW5zcGVjdG9yVGVzdC5lbmFibGVSZXNvdXJj
ZVRyYWNraW5nKToKKyAgICAgICAgKGluaXRpYWxpemVfSW5zcGVjdG9yVGVzdC5JbnNwZWN0b3JU
ZXN0LmRpc2FibGVSZXNvdXJjZVRyYWNraW5nKToKKyAgICAgICAgKGluaXRpYWxpemVfSW5zcGVj
dG9yVGVzdC5JbnNwZWN0b3JUZXN0Ll9hZGRTbmlmZmVyKToKKyAgICAgICAgKHJ1blRlc3QucnVu
VGVzdEluRnJvbnRlbmQpOgorICAgICAgICAocnVuVGVzdCk6CisgICAgICAgIChkaWRFdmFsdWF0
ZUZvclRlc3RJbkZyb250ZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXItYnJlYWtw
b2ludHMtbm90LWFjdGl2YXRlZC1vbi1yZWxvYWQuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZGVidWdnZXItY3ljbGljLXJlZi1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL2Rl
YnVnZ2VyLWN5Y2xpYy1yZWYuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXItZXZh
bC13aGlsZS1wYXVzZWQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dl
ci1ldmFsLXdoaWxlLXBhdXNlZC5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci1u
by1uZXN0ZWQtcGF1c2UtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dl
ci1uby1uZXN0ZWQtcGF1c2UuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXItcGF1
c2UtaW4tZXZhbC1zY3JpcHQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1
Z2dlci1wYXVzZS1pbi1ldmFsLXNjcmlwdC5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1
Z2dlci1wYXVzZS1vbi1kZWJ1Z2dlci1zdGF0ZW1lbnQtZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IGluc3BlY3Rvci9kZWJ1Z2dlci1wYXVzZS1vbi1kZWJ1Z2dlci1zdGF0ZW1lbnQuaHRtbDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXItcHJvdG8tcHJvcGVydHktZXhwZWN0ZWQudHh0Ogor
ICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci1wcm90by1wcm9wZXJ0eS5odG1sOgorICAgICAg
ICAqIGluc3BlY3Rvci9kZWJ1Z2dlci1zdGVwLWluLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBp
bnNwZWN0b3IvZGVidWdnZXItc3RlcC1pbi5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1
Z2dlci1zdGVwLW91dC1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2Vy
LXN0ZXAtb3V0Lmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyLXN0ZXAtb3Zlci1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyLXN0ZXAtb3Zlci5odG1s
OgorICAgICAgICAqIGluc3BlY3Rvci9kb20tYnJlYWtwb2ludHMtZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIGluc3BlY3Rvci9kb20tYnJlYWtwb2ludHMuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvZXh0ZW5zaW9ucy1hcGktZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9leHRl
bnNpb25zLWF1ZGl0cy1hcGktZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9leHRl
bnNpb25zLWF1ZGl0cy1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL2V4dGVuc2lv
bnMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9yZXBvcnQtcHJvdG9jb2wtZXJy
b3JzLmh0bWw6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vaW5zcGVjdG9yL2RlYnVnZ2Vy
LXN0ZXAtaW4tZXhwZWN0ZWQudHh0OgorCiAyMDEwLTA4LTMxICBLZW50IFRhbXVyYSAgPHRrZW50
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCB0ZXN0IGV4cGVjdGF0aW9uIHVw
ZGF0ZS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2RlYnVn
Z2VyLXRlc3QuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci10
ZXN0LmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZjg3MDEzLi4wMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXRlc3QuanMKKysr
IC9kZXYvbnVsbApAQCAtMSwxMTMgKzAsMCBAQAotCi1mdW5jdGlvbiBmcm9udGVuZF9lbnN1cmVE
ZWJ1Z2dlckVuYWJsZWQoY2FsbGJhY2spCi17Ci0gICAgaWYgKFdlYkluc3BlY3Rvci5wYW5lbHMu
c2NyaXB0cy5fZGVidWdnZXJFbmFibGVkKSB7Ci0gICAgICAgIGNhbGxiYWNrKCk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBmcm9udGVuZF9hZGRTbmlmZmVyKFdlYkluc3BlY3Rvciwg
ImRlYnVnZ2VyV2FzRW5hYmxlZCIsIGNhbGxiYWNrKTsKLSAgICBXZWJJbnNwZWN0b3IucGFuZWxz
LnNjcmlwdHMuX3RvZ2dsZURlYnVnZ2luZyhmYWxzZSk7Ci19Ci0KLWZ1bmN0aW9uIGZyb250ZW5k
X2Vuc3VyZURlYnVnZ2VyRGlzYWJsZWQoY2FsbGJhY2spCi17Ci0gICAgaWYgKCFXZWJJbnNwZWN0
b3IucGFuZWxzLnNjcmlwdHMuX2RlYnVnZ2VyRW5hYmxlZCkgewotICAgICAgICBjYWxsYmFjaygp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgZnJvbnRlbmRfYWRkU25pZmZlcihXZWJJ
bnNwZWN0b3IsICJkZWJ1Z2dlcldhc0Rpc2FibGVkIiwgY2FsbGJhY2spOwotICAgIFdlYkluc3Bl
Y3Rvci5wYW5lbHMuc2NyaXB0cy5fdG9nZ2xlRGVidWdnaW5nKGZhbHNlKTsKLX0KLQotZnVuY3Rp
b24gZnJvbnRlbmRfY29tcGxldGVEZWJ1Z2dlclRlc3QodGVzdENvbnRyb2xsZXIpCi17Ci0gICAg
aWYgKFdlYkluc3BlY3Rvci5wYW5lbHMuc2NyaXB0cy5wYXVzZWQpIHsKLSAgICAgICAgV2ViSW5z
cGVjdG9yLnBhbmVscy5zY3JpcHRzLl90b2dnbGVQYXVzZSgpOwotICAgICAgICB0ZXN0Q29udHJv
bGxlci5yZXN1bHRzLnB1c2goIlJlc3VtZWQgc2NyaXB0IGV4ZWN1dGlvbi4iKTsKLSAgICB9Ci0g
ICAgZnJvbnRlbmRfZW5zdXJlRGVidWdnZXJEaXNhYmxlZChmdW5jdGlvbigpCi0gICAgewotICAg
ICAgICB0ZXN0Q29udHJvbGxlci5yZXN1bHRzLnB1c2goIkRpc2FibGVkIGRlYnVnZ2VyLiIpOwot
ICAgICAgICB0ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7Ci19Ci0KLWZ1bmN0
aW9uIGZyb250ZW5kX3NjcmlwdHNBcmVQYXJzZWQoc2NyaXB0cykKLXsKLSAgICB2YXIgc2NyaXB0
U2VsZWN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNjcmlwdHMtZmlsZXMiKTsKLSAgICB2
YXIgb3B0aW9ucyA9IHNjcmlwdFNlbGVjdC5vcHRpb25zOwotCi0gICAgLy8gQ2hlY2sgdGhhdCBh
bGwgdGhlIGV4cGVjdGVkIHNjcmlwdHMgYXJlIHByZXNlbnQuCi0gICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBzY3JpcHRzLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgIHZhciBmb3VuZCA9IGZhbHNlOwot
ICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IG9wdGlvbnMubGVuZ3RoOyBqKyspIHsKLSAgICAg
ICAgICAgIGlmIChvcHRpb25zW2pdLnRleHQuc2VhcmNoKHNjcmlwdHNbaV0pICE9PSAtMSkgewot
ICAgICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBpZiAoIWZvdW5kKQotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX07Ci0KLWZ1bmN0aW9uIGZy
b250ZW5kX3dhaXRVbnRpbFNjcmlwdHNBcmVQYXJzZWQoc2NyaXB0cywgY2FsbGJhY2spCi17Ci0g
ICAgZnVuY3Rpb24gd2FpdEZvckFsbFNjcmlwdHMoKQotICAgIHsKLSAgICAgICAgaWYgKGZyb250
ZW5kX3NjcmlwdHNBcmVQYXJzZWQoc2NyaXB0cykpCi0gICAgICAgICAgICBjYWxsYmFjaygpOwot
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBmcm9udGVuZF9hZGRTbmlmZmVyKFdlYkluc3BlY3Rv
ciwgInBhcnNlZFNjcmlwdFNvdXJjZSIsIHdhaXRGb3JBbGxTY3JpcHRzKTsKLSAgICB9Ci0gICAg
d2FpdEZvckFsbFNjcmlwdHMoKTsKLX07Ci0KLWZ1bmN0aW9uIGZyb250ZW5kX2Vuc3VyZVNvdXJj
ZUZyYW1lTG9hZGVkKHNvdXJjZUZyYW1lLCBjYWxsYmFjaykKLXsKLSAgICBpZiAoIXNvdXJjZUZy
YW1lLl9sb2FkZWQpCi0gICAgICAgIGZyb250ZW5kX2FkZFNuaWZmZXIoc291cmNlRnJhbWUsICJz
ZXRDb250ZW50IiwgY2FsbGJhY2spOwotICAgIGVsc2UKLSAgICAgICAgY2FsbGJhY2soKTsKLX0K
LQotZnVuY3Rpb24gZnJvbnRlbmRfc2hvd1NjcmlwdFNvdXJjZShzY3JpcHROYW1lLCBjYWxsYmFj
aykKLXsKLSAgICB2YXIgc2NyaXB0U2VsZWN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNj
cmlwdHMtZmlsZXMiKTsKLSAgICB2YXIgb3B0aW9ucyA9IHNjcmlwdFNlbGVjdC5vcHRpb25zOwot
ICAgIHZhciBzY3JpcHRzUGFuZWwgPSBXZWJJbnNwZWN0b3IucGFuZWxzLnNjcmlwdHM7Ci0KLSAg
ICAvLyBTZWxlY3QgcGFnZSdzIHNjcmlwdCBpZiBpdCdzIG5vdCBjdXJyZW50IG9wdGlvbi4KLSAg
ICB2YXIgc2NyaXB0UmVzb3VyY2U7Ci0gICAgaWYgKG9wdGlvbnNbc2NyaXB0U2VsZWN0LnNlbGVj
dGVkSW5kZXhdLnRleHQgPT09IHNjcmlwdE5hbWUpCi0gICAgICAgIHNjcmlwdFJlc291cmNlID0g
b3B0aW9uc1tzY3JpcHRTZWxlY3Quc2VsZWN0ZWRJbmRleF0ucmVwcmVzZW50ZWRPYmplY3Q7Ci0g
ICAgZWxzZSB7Ci0gICAgICAgIHZhciBwYWdlU2NyaXB0SW5kZXggPSAtMTsKLSAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBvcHRpb25zLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgICAgICBpZiAo
b3B0aW9uc1tpXS50ZXh0ID09PSBzY3JpcHROYW1lKSB7Ci0gICAgICAgICAgICAgICAgcGFnZVNj
cmlwdEluZGV4ID0gaTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfQotICAgICAgICBzY3JpcHRSZXNvdXJjZSA9IG9wdGlvbnNbcGFnZVNjcmlwdEluZGV4
XS5yZXByZXNlbnRlZE9iamVjdDsKLSAgICAgICAgc2NyaXB0c1BhbmVsLl9zaG93U2NyaXB0T3JS
ZXNvdXJjZShzY3JpcHRSZXNvdXJjZSk7Ci0gICAgfQotCi0gICAgdmFyIHZpZXcgPSBzY3JpcHRz
UGFuZWwudmlzaWJsZVZpZXc7Ci0gICAgZnJvbnRlbmRfZW5zdXJlU291cmNlRnJhbWVMb2FkZWQo
dmlldy5zb3VyY2VGcmFtZSwgY2FsbGJhY2suYmluZChudWxsLCB2aWV3KSk7Ci19OwotCi1mdW5j
dGlvbiBmcm9udGVuZF9jYXB0dXJlU3RhY2tUcmFjZShjYWxsRnJhbWVzLCB0ZXN0Q29udHJvbGxl
cikKLXsKLSAgICB0ZXN0Q29udHJvbGxlci5yZXN1bHRzLnB1c2goIkNhbGwgc3RhY2s6Iik7Ci0g
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjYWxsRnJhbWVzLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAg
IHZhciBmcmFtZSA9IGNhbGxGcmFtZXNbaV07Ci0gICAgICAgIHZhciBzY3JpcHRPclJlc291cmNl
ID0gV2ViSW5zcGVjdG9yLnBhbmVscy5zY3JpcHRzLl9zb3VyY2VJRE1hcFtmcmFtZS5zb3VyY2VJ
RF07Ci0gICAgICAgIHZhciB1cmwgPSBzY3JpcHRPclJlc291cmNlICYmIFdlYkluc3BlY3Rvci5k
aXNwbGF5TmFtZUZvclVSTChzY3JpcHRPclJlc291cmNlLnNvdXJjZVVSTCB8fCBzY3JpcHRPclJl
c291cmNlLnVybCk7Ci0gICAgICAgIHZhciBzID0gIiAgICAiICsgaSArICIpICIgKyBmcmFtZS5m
dW5jdGlvbk5hbWUgKyAiICgiICsgdXJsICsgIjoiICsgZnJhbWUubGluZSArICIpIjsKLSAgICAg
ICAgdGVzdENvbnRyb2xsZXIucmVzdWx0cy5wdXNoKHMpOwotICAgIH0KLX0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXRlc3QyLmpzIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItdGVzdDIuanMKaW5kZXggNTI4
ZWU4Zi4uODBiOThhNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3IvZGVidWdnZXItdGVzdDIuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3IvZGVidWdnZXItdGVzdDIuanMKQEAgLTIsNiArMiw4IEBAIHZhciBpbml0aWFsaXplX0RlYnVn
Z2VyVGVzdCA9IGZ1bmN0aW9uKCkgewogCiBJbnNwZWN0b3JUZXN0LnN0YXJ0RGVidWdnZXJUZXN0
ID0gZnVuY3Rpb24oY2FsbGJhY2spCiB7CisgICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCgic2Ny
aXB0cyIpOworCiAgICAgaWYgKFdlYkluc3BlY3Rvci5wYW5lbHMuc2NyaXB0cy5fZGVidWdnZXJF
bmFibGVkKQogICAgICAgICBzdGFydFRlc3QoKTsKICAgICBlbHNlIHsKQEAgLTEyLDkgKzE0LDEx
IEBAIEluc3BlY3RvclRlc3Quc3RhcnREZWJ1Z2dlclRlc3QgPSBmdW5jdGlvbihjYWxsYmFjaykK
ICAgICBmdW5jdGlvbiBzdGFydFRlc3QoKQogICAgIHsKICAgICAgICAgSW5zcGVjdG9yVGVzdC5h
ZGRSZXN1bHQoIkRlYnVnZ2VyIHdhcyBlbmFibGVkLiIpOworICAgICAgICBJbnNwZWN0b3JUZXN0
Ll9hZGRTbmlmZmVyKFdlYkluc3BlY3RvciwgInBhdXNlZFNjcmlwdCIsIEluc3BlY3RvclRlc3Qu
X3BhdXNlZFNjcmlwdCwgdHJ1ZSk7CisgICAgICAgIEluc3BlY3RvclRlc3QuX2FkZFNuaWZmZXIo
V2ViSW5zcGVjdG9yLCAicmVzdW1lZFNjcmlwdCIsIEluc3BlY3RvclRlc3QuX3Jlc3VtZWRTY3Jp
cHQsIHRydWUpOwogICAgICAgICBjYWxsYmFjaygpOwogICAgIH0KLX0KK307CiAKIEluc3BlY3Rv
clRlc3QuY29tcGxldGVEZWJ1Z2dlclRlc3QgPSBmdW5jdGlvbigpCiB7CkBAIC0yMywxMyArMjcs
MTYgQEAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZURlYnVnZ2VyVGVzdCA9IGZ1bmN0aW9uKCkKICAg
ICBpZiAoIXNjcmlwdHNQYW5lbC5icmVha3BvaW50c0FjdGl2YXRlZCkKICAgICAgICAgc2NyaXB0
c1BhbmVsLnRvZ2dsZUJyZWFrcG9pbnRzQnV0dG9uLmVsZW1lbnQuY2xpY2soKTsKIAotICAgIElu
c3BlY3RvclRlc3QucmVzdW1lRXhlY3V0aW9uKCk7CisgICAgSW5zcGVjdG9yVGVzdC5yZXN1bWVF
eGVjdXRpb24oZGlzYWJsZURlYnVnZ2VyKTsKIAotICAgIGlmICghc2NyaXB0c1BhbmVsLl9kZWJ1
Z2dlckVuYWJsZWQpCi0gICAgICAgIGNvbXBsZXRlVGVzdCgpOwotICAgIGVsc2UgewotICAgICAg
ICBJbnNwZWN0b3JUZXN0Ll9hZGRTbmlmZmVyKFdlYkluc3BlY3RvciwgImRlYnVnZ2VyV2FzRGlz
YWJsZWQiLCBjb21wbGV0ZVRlc3QpOwotICAgICAgICBzY3JpcHRzUGFuZWwuX3RvZ2dsZURlYnVn
Z2luZyhmYWxzZSk7CisgICAgZnVuY3Rpb24gZGlzYWJsZURlYnVnZ2VyKCkKKyAgICB7CisgICAg
ICAgIGlmICghc2NyaXB0c1BhbmVsLl9kZWJ1Z2dlckVuYWJsZWQpCisgICAgICAgICAgICBjb21w
bGV0ZVRlc3QoKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0Ll9h
ZGRTbmlmZmVyKFdlYkluc3BlY3RvciwgImRlYnVnZ2VyV2FzRGlzYWJsZWQiLCBjb21wbGV0ZVRl
c3QpOworICAgICAgICAgICAgc2NyaXB0c1BhbmVsLl90b2dnbGVEZWJ1Z2dpbmcoZmFsc2UpOwor
ICAgICAgICB9CiAgICAgfQogCiAgICAgZnVuY3Rpb24gY29tcGxldGVUZXN0KCkKQEAgLTM5LDIx
ICs0Niw2OSBAQCBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlRGVidWdnZXJUZXN0ID0gZnVuY3Rpb24o
KQogICAgIH0KIH07CiAKK0luc3BlY3RvclRlc3QucnVuVGVzdEZ1bmN0aW9uQW5kV2FpdFVudGls
UGF1c2VkID0gZnVuY3Rpb24oY2FsbGJhY2spCit7CisgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0
ZUluQ29uc29sZSgic2V0VGltZW91dCh0ZXN0RnVuY3Rpb24sIDApIik7CisgICAgSW5zcGVjdG9y
VGVzdC5hZGRSZXN1bHQoIlNldCB0aW1lciBmb3IgdGVzdCBmdW5jdGlvbi4iKTsKKyAgICBJbnNw
ZWN0b3JUZXN0LndhaXRVbnRpbFBhdXNlZChjYWxsYmFjayk7Cit9OworCiBJbnNwZWN0b3JUZXN0
LndhaXRVbnRpbFBhdXNlZCA9IGZ1bmN0aW9uKGNhbGxiYWNrKQogewotICAgIEluc3BlY3RvclRl
c3QuX2FkZFNuaWZmZXIoV2ViSW5zcGVjdG9yLCAicGF1c2VkU2NyaXB0IiwgcGF1c2VkU2NyaXB0
KTsKKyAgICBpZiAoSW5zcGVjdG9yVGVzdC5fY2FsbEZyYW1lcykKKyAgICAgICAgY2FsbGJhY2so
SW5zcGVjdG9yVGVzdC5fY2FsbEZyYW1lcyk7CisgICAgZWxzZQorICAgICAgICBJbnNwZWN0b3JU
ZXN0Ll93YWl0VW50aWxQYXVzZWRDYWxsYmFjayA9IGNhbGxiYWNrOworfTsKIAotICAgIGZ1bmN0
aW9uIHBhdXNlZFNjcmlwdChjYWxsRnJhbWVzKQotICAgIHsKLSAgICAgICAgSW5zcGVjdG9yVGVz
dC5hZGRSZXN1bHQoIlBhdXNlZCBhdCBsaW5lICIgKyBjYWxsRnJhbWVzWzBdLmxpbmUgKyAiIGlu
ICIgKyBjYWxsRnJhbWVzWzBdLmZ1bmN0aW9uTmFtZSk7Ci0gICAgICAgIGNhbGxiYWNrKGNhbGxG
cmFtZXMpOwotICAgIH0KK0luc3BlY3RvclRlc3Qud2FpdFVudGlsUmVzdW1lZCA9IGZ1bmN0aW9u
KGNhbGxiYWNrKQoreworICAgIGlmICghSW5zcGVjdG9yVGVzdC5fY2FsbEZyYW1lcykKKyAgICAg
ICAgY2FsbGJhY2soKTsKKyAgICBlbHNlCisgICAgICAgIEluc3BlY3RvclRlc3QuX3dhaXRVbnRp
bFJlc3VtZWRDYWxsYmFjayA9IGNhbGxiYWNrOwogfTsKIAotSW5zcGVjdG9yVGVzdC5yZXN1bWVF
eGVjdXRpb24gPSBmdW5jdGlvbigpCitJbnNwZWN0b3JUZXN0LnJlc3VtZUV4ZWN1dGlvbiA9IGZ1
bmN0aW9uKGNhbGxiYWNrKQogewogICAgIGlmIChXZWJJbnNwZWN0b3IucGFuZWxzLnNjcmlwdHMu
cGF1c2VkKQogICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnNjcmlwdHMuX3RvZ2dsZVBhdXNl
KCk7CisgICAgaWYgKGNhbGxiYWNrKQorICAgICAgICBJbnNwZWN0b3JUZXN0LndhaXRVbnRpbFJl
c3VtZWQoY2FsbGJhY2spOworfTsKKworSW5zcGVjdG9yVGVzdC5jYXB0dXJlU3RhY2tUcmFjZSA9
IGZ1bmN0aW9uKGNhbGxGcmFtZXMpCit7CisgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIkNh
bGwgc3RhY2s6Iik7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjYWxsRnJhbWVzLmxlbmd0aDsg
aSsrKSB7CisgICAgICAgIHZhciBmcmFtZSA9IGNhbGxGcmFtZXNbaV07CisgICAgICAgIHZhciBz
Y3JpcHRPclJlc291cmNlID0gV2ViSW5zcGVjdG9yLnBhbmVscy5zY3JpcHRzLl9zb3VyY2VJRE1h
cFtmcmFtZS5zb3VyY2VJRF07CisgICAgICAgIHZhciB1cmwgPSBzY3JpcHRPclJlc291cmNlICYm
IFdlYkluc3BlY3Rvci5kaXNwbGF5TmFtZUZvclVSTChzY3JpcHRPclJlc291cmNlLnNvdXJjZVVS
TCB8fCBzY3JpcHRPclJlc291cmNlLnVybCk7CisgICAgICAgIHZhciBzID0gIiAgICAiICsgaSAr
ICIpICIgKyBmcmFtZS5mdW5jdGlvbk5hbWUgKyAiICgiICsgdXJsICsgIjoiICsgZnJhbWUubGlu
ZSArICIpIjsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQocyk7CisgICAgfQorfTsK
KworSW5zcGVjdG9yVGVzdC5fcGF1c2VkU2NyaXB0ID0gZnVuY3Rpb24oY2FsbEZyYW1lcykKK3sK
KyAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiU2NyaXB0IGV4ZWN1dGlvbiBwYXVzZWQuIik7
CisgICAgSW5zcGVjdG9yVGVzdC5fY2FsbEZyYW1lcyA9IGNhbGxGcmFtZXM7CisgICAgaWYgKElu
c3BlY3RvclRlc3QuX3dhaXRVbnRpbFBhdXNlZENhbGxiYWNrKSB7CisgICAgICAgIHZhciBjYWxs
YmFjayA9IEluc3BlY3RvclRlc3QuX3dhaXRVbnRpbFBhdXNlZENhbGxiYWNrOworICAgICAgICBk
ZWxldGUgSW5zcGVjdG9yVGVzdC5fd2FpdFVudGlsUGF1c2VkQ2FsbGJhY2s7CisgICAgICAgIGNh
bGxiYWNrKEluc3BlY3RvclRlc3QuX2NhbGxGcmFtZXMpOworICAgIH0KK30KKworSW5zcGVjdG9y
VGVzdC5fcmVzdW1lZFNjcmlwdCA9IGZ1bmN0aW9uKCkKK3sKKyAgICBJbnNwZWN0b3JUZXN0LmFk
ZFJlc3VsdCgiU2NyaXB0IGV4ZWN1dGlvbiByZXN1bWVkLiIpOworICAgIGRlbGV0ZSBJbnNwZWN0
b3JUZXN0Ll9jYWxsRnJhbWVzOworICAgIGlmIChJbnNwZWN0b3JUZXN0Ll93YWl0VW50aWxSZXN1
bWVkQ2FsbGJhY2spIHsKKyAgICAgICAgdmFyIGNhbGxiYWNrID0gSW5zcGVjdG9yVGVzdC5fd2Fp
dFVudGlsUmVzdW1lZENhbGxiYWNrOworICAgICAgICBkZWxldGUgSW5zcGVjdG9yVGVzdC5fd2Fp
dFVudGlsUmVzdW1lZENhbGxiYWNrOworICAgICAgICBjYWxsYmFjaygpOworICAgIH0KIH07CiAK
IEluc3BlY3RvclRlc3Quc2hvd1NjcmlwdFNvdXJjZSA9IGZ1bmN0aW9uKHNjcmlwdE5hbWUsIGNh
bGxiYWNrKQpAQCAtNjQsNiArMTE5LDE1IEBAIEluc3BlY3RvclRlc3Quc2hvd1NjcmlwdFNvdXJj
ZSA9IGZ1bmN0aW9uKHNjcmlwdE5hbWUsIGNhbGxiYWNrKQogICAgICAgICBJbnNwZWN0b3JUZXN0
Ll9hZGRTbmlmZmVyKFdlYkluc3BlY3RvciwgInBhcnNlZFNjcmlwdFNvdXJjZSIsIEluc3BlY3Rv
clRlc3Quc2hvd1NjcmlwdFNvdXJjZS5iaW5kKEluc3BlY3RvclRlc3QsIHNjcmlwdE5hbWUsIGNh
bGxiYWNrKSk7CiB9OwogCitJbnNwZWN0b3JUZXN0LndhaXRVbnRpbEN1cnJlbnRTb3VyY2VGcmFt
ZUlzTG9hZGVkID0gZnVuY3Rpb24oY2FsbGJhY2spCit7CisgICAgdmFyIHNvdXJjZUZyYW1lID0g
V2ViSW5zcGVjdG9yLmN1cnJlbnRQYW5lbC52aXNpYmxlVmlldy5zb3VyY2VGcmFtZTsKKyAgICBp
ZiAoc291cmNlRnJhbWUuX2xvYWRlZCkKKyAgICAgICAgY2FsbGJhY2soc291cmNlRnJhbWUpOwor
ICAgIGVsc2UKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5fYWRkU25pZmZlcihzb3VyY2VGcmFtZSwg
InNldENvbnRlbnQiLCBjYWxsYmFjay5iaW5kKG51bGwsIHNvdXJjZUZyYW1lKSk7Cit9OworCiBJ
bnNwZWN0b3JUZXN0Ll9zY3JpcHRzQXJlUGFyc2VkID0gZnVuY3Rpb24oc2NyaXB0cykKIHsKICAg
ICB2YXIgc2NyaXB0U2VsZWN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNjcmlwdHMtZmls
ZXMiKTsKQEAgLTEwNiwxMiArMTcwLDUyIEBAIEluc3BlY3RvclRlc3QuX3Nob3dTY3JpcHRTb3Vy
Y2UgPSBmdW5jdGlvbihzY3JpcHROYW1lLCBjYWxsYmFjaykKICAgICAgICAgc2NyaXB0c1BhbmVs
Ll9zaG93U2NyaXB0T3JSZXNvdXJjZShzY3JpcHRSZXNvdXJjZSk7CiAgICAgfQogCi0gICAgdmFy
IHZpZXcgPSBzY3JpcHRzUGFuZWwudmlzaWJsZVZpZXc7Ci0gICAgY2FsbGJhY2sgPSBjYWxsYmFj
ay5iaW5kKG51bGwsIHZpZXcpOwotICAgIGlmICghdmlldy5zb3VyY2VGcmFtZS5fbG9hZGVkKQot
ICAgICAgICBJbnNwZWN0b3JUZXN0Ll9hZGRTbmlmZmVyKHZpZXcuc291cmNlRnJhbWUsICJzZXRD
b250ZW50IiwgY2FsbGJhY2spOwotICAgIGVsc2UKKyAgICBJbnNwZWN0b3JUZXN0LndhaXRVbnRp
bEN1cnJlbnRTb3VyY2VGcmFtZUlzTG9hZGVkKGNhbGxiYWNrKTsKK307CisKK0luc3BlY3RvclRl
c3QuZXhwYW5kUHJvcGVydGllcyA9IGZ1bmN0aW9uKHByb3BlcnRpZXMsIGNhbGxiYWNrKQorewor
ICAgIHZhciBpbmRleCA9IDA7CisgICAgZnVuY3Rpb24gZXhwYW5kTmV4dFBhdGgoKQorICAgIHsK
KyAgICAgICAgaWYgKGluZGV4ID09PSBwcm9wZXJ0aWVzLmxlbmd0aCkgeworICAgICAgICAgICAg
Y2FsbGJhY2soKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICB2YXIg
cGFyZW50VHJlZUVsZW1lbnQgPSBwcm9wZXJ0aWVzW2luZGV4KytdOworICAgICAgICB2YXIgcGF0
aCA9IHByb3BlcnRpZXNbaW5kZXgrK107CisgICAgICAgIEluc3BlY3RvclRlc3QuX2V4cGFuZFBy
b3BlcnR5KHBhcmVudFRyZWVFbGVtZW50LCBwYXRoLCAwLCBleHBhbmROZXh0UGF0aCk7CisgICAg
fQorICAgIEluc3BlY3RvclRlc3QucnVuQWZ0ZXJQZW5kaW5nRGlzcGF0Y2hlcyhleHBhbmROZXh0
UGF0aCk7Cit9OworCitJbnNwZWN0b3JUZXN0Ll9leHBhbmRQcm9wZXJ0eSA9IGZ1bmN0aW9uKHBh
cmVudFRyZWVFbGVtZW50LCBwYXRoLCBwYXRoSW5kZXgsIGNhbGxiYWNrKQoreworICAgIGlmIChw
YXRoSW5kZXggPT09IHBhdGgubGVuZ3RoKSB7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVz
dWx0KCJFeHBhbmRlZCBwcm9wZXJ0eTogIiArIHBhdGguam9pbigiLiIpKTsKICAgICAgICAgY2Fs
bGJhY2soKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICB2YXIgbmFtZSA9IHBhdGhbcGF0
aEluZGV4KytdOworICAgIHZhciBwcm9wZXJ0eVRyZWVFbGVtZW50ID0gSW5zcGVjdG9yVGVzdC5f
ZmluZENoaWxkUHJvcGVydHlUcmVlRWxlbWVudChwYXJlbnRUcmVlRWxlbWVudCwgbmFtZSk7Cisg
ICAgaWYgKCFwcm9wZXJ0eVRyZWVFbGVtZW50KSB7CisgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRS
ZXN1bHQoIkZhaWxlZCB0byBleHBhbmQgcHJvcGVydHk6ICIgKyBwYXRoLnNsaWNlKDAsIHBhdGhJ
bmRleCkuam9pbigiLiIpKTsKKyAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlRGVidWdnZXJU
ZXN0KCk7CisgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBwcm9wZXJ0eVRyZWVFbGVtZW50LmV4
cGFuZCgpOworICAgIEluc3BlY3RvclRlc3QucnVuQWZ0ZXJQZW5kaW5nRGlzcGF0Y2hlcyhJbnNw
ZWN0b3JUZXN0Ll9leHBhbmRQcm9wZXJ0eS5iaW5kKEluc3BlY3RvclRlc3QsIHByb3BlcnR5VHJl
ZUVsZW1lbnQsIHBhdGgsIHBhdGhJbmRleCwgY2FsbGJhY2spKTsKIH07CiAKLX0KK0luc3BlY3Rv
clRlc3QuX2ZpbmRDaGlsZFByb3BlcnR5VHJlZUVsZW1lbnQgPSBmdW5jdGlvbihwYXJlbnQsIGNo
aWxkTmFtZSkKK3sKKyAgICB2YXIgY2hpbGRyZW4gPSBwYXJlbnQuY2hpbGRyZW47CisgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykgeworICAgICAgICB2YXIgdHJl
ZUVsZW1lbnQgPSBjaGlsZHJlbltpXTsKKyAgICAgICAgdmFyIHByb3BlcnR5ID0gdHJlZUVsZW1l
bnQucHJvcGVydHk7CisgICAgICAgIGlmIChwcm9wZXJ0eS5uYW1lID09PSBjaGlsZE5hbWUpCisg
ICAgICAgICAgICByZXR1cm4gdHJlZUVsZW1lbnQ7CisgICAgfQorfTsKKworfTsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0Mi5qcyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0Mi5qcwppbmRl
eCA0Y2IzMTQxLi5lYTJjMmMwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9pbnNwZWN0b3ItdGVzdDIuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9p
bnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QyLmpzCkBAIC0xLDEwICsxLDExIEBACi12YXIgaW5pdGlh
bGl6ZV9JbnNwZWN0b3JUZXN0ID0gKGZ1bmN0aW9uKCkgewordmFyIGluaXRpYWxpemVfSW5zcGVj
dG9yVGVzdCA9IGZ1bmN0aW9uKCkgewogCiB2YXIgcmVzdWx0cyA9IFtdOwordmFyIHJlc3VsdHNT
eW5jaHJvbml6ZWQgPSBmYWxzZTsKIAogSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QgPSBmdW5j
dGlvbigpCiB7Ci0gICAgSW5zcGVjdG9yQmFja2VuZC5kaWRFdmFsdWF0ZUZvclRlc3RJbkZyb250
ZW5kKEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0Q2FsbElkLCBKU09OLnN0cmluZ2lmeShyZXN1
bHRzKSk7CisgICAgSW5zcGVjdG9yQmFja2VuZC5kaWRFdmFsdWF0ZUZvclRlc3RJbkZyb250ZW5k
KEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0Q2FsbElkLCAiIik7CiB9OwogCiBJbnNwZWN0b3JU
ZXN0LmV2YWx1YXRlSW5Db25zb2xlID0gZnVuY3Rpb24oY29kZSwgY2FsbGJhY2spCkBAIC0yMSwx
NSArMjIsNzAgQEAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluQ29uc29sZSA9IGZ1bmN0aW9uKGNv
ZGUsIGNhbGxiYWNrKQogICAgICAgICB9KTsKIH07CiAKK0luc3BlY3RvclRlc3QuZXZhbHVhdGVJ
blBhZ2UgPSBmdW5jdGlvbihjb2RlLCBjYWxsYmFjaykKK3sKKyAgICBJbmplY3RlZFNjcmlwdEFj
Y2Vzcy5nZXREZWZhdWx0KCkuZXZhbHVhdGUoY29kZSwgImNvbnNvbGUiLCBjYWxsYmFjayB8fCBm
dW5jdGlvbigpIHt9KTsKK307CisKIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0ID0gZnVuY3Rpb24o
dGV4dCkKIHsKICAgICByZXN1bHRzLnB1c2godGV4dCk7CisgICAgaWYgKHJlc3VsdHNTeW5jaHJv
bml6ZWQpCisgICAgICAgIGFkZFJlc3VsdFRvUGFnZSh0ZXh0KTsKKyAgICBlbHNlIHsKKyAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZXN1bHRzLmxlbmd0aDsgKytpKQorICAgICAgICAgICAg
YWRkUmVzdWx0VG9QYWdlKHJlc3VsdHNbaV0pOworICAgICAgICByZXN1bHRzU3luY2hyb25pemVk
ID0gdHJ1ZTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBhZGRSZXN1bHRUb1BhZ2UodGV4dCkKKyAg
ICB7CisgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoIm91dHB1dCh1bmVzY2Fw
ZSgnIiArIGVzY2FwZSh0ZXh0KSArICInKSkiKTsKKyAgICB9Cit9OworCitJbnNwZWN0b3JUZXN0
LmFkZE9iamVjdCA9IGZ1bmN0aW9uKG9iamVjdCwgbm9uZGV0ZXJtaW5pc3RpY1Byb3BzLCBwcmVm
aXgsIGZpcnN0TGluZVByZWZpeCkKK3sKKyAgICBwcmVmaXggPSBwcmVmaXggfHwgIiI7CisgICAg
Zmlyc3RMaW5lUHJlZml4ID0gZmlyc3RMaW5lUHJlZml4IHx8IHByZWZpeDsKKyAgICBJbnNwZWN0
b3JUZXN0LmFkZFJlc3VsdChmaXJzdExpbmVQcmVmaXggKyAieyIpOworICAgIGZvciAodmFyIHBy
b3AgaW4gb2JqZWN0KSB7CisgICAgICAgIGlmICghb2JqZWN0Lmhhc093blByb3BlcnR5KHByb3Ap
KQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIHZhciBwcmVmaXhXaXRoTmFtZSA9IHBy
ZWZpeCArICIgICAgIiArIHByb3AgKyAiIDogIjsKKyAgICAgICAgdmFyIHByb3BWYWx1ZSA9IG9i
amVjdFtwcm9wXTsKKyAgICAgICAgaWYgKG5vbmRldGVybWluaXN0aWNQcm9wcyAmJiBwcm9wIGlu
IG5vbmRldGVybWluaXN0aWNQcm9wcykKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVz
dWx0KHByZWZpeFdpdGhOYW1lICsgIjwiICsgdHlwZW9mIHByb3BWYWx1ZSArICI+Iik7CisgICAg
ICAgIGVsc2UgaWYgKHR5cGVvZiBwcm9wVmFsdWUgPT09ICJvYmplY3QiKQorICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5hZGRPYmplY3QocHJvcFZhbHVlLCBub25kZXRlcm1pbmlzdGljUHJvcHMs
IHByZWZpeCArICIgICAgIiwgcHJlZml4V2l0aE5hbWUpOworICAgICAgICBlbHNlIGlmICh0eXBl
b2YgcHJvcFZhbHVlID09PSAic3RyaW5nIikKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRk
UmVzdWx0KHByZWZpeFdpdGhOYW1lICsgIlwiIiArIHByb3BWYWx1ZSArICJcIiIpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChwcmVmaXhXaXRoTmFt
ZSArIHByb3BWYWx1ZSk7CisgICAgfQorICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KHByZWZp
eCArICJ9Iik7CiB9OwogCiBJbnNwZWN0b3JUZXN0LnJlbG9hZFBhZ2UgPSBmdW5jdGlvbihjYWxs
YmFjaykKIHsKKyAgICBJbnNwZWN0b3JUZXN0Ll9yZWxvYWRQYWdlQ2FsbGJhY2sgPSBjYWxsYmFj
azsKICAgICBJbnNwZWN0b3JCYWNrZW5kLnJlbG9hZFBhZ2UoKTsKLSAgICBJbnNwZWN0b3JUZXN0
Ll9hZGRTbmlmZmVyKFdlYkluc3BlY3RvciwgInJlc2V0IiwgY2FsbGJhY2spOworfTsKKworSW5z
cGVjdG9yVGVzdC5wYWdlUmVsb2FkZWQgPSBmdW5jdGlvbigpCit7CisgICAgcmVzdWx0c1N5bmNo
cm9uaXplZCA9IGZhbHNlOworICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJQYWdlIHJlbG9h
ZGVkLiIpOworICAgIGlmIChJbnNwZWN0b3JUZXN0Ll9yZWxvYWRQYWdlQ2FsbGJhY2spIHsKKyAg
ICAgICAgdmFyIGNhbGxiYWNrID0gSW5zcGVjdG9yVGVzdC5fcmVsb2FkUGFnZUNhbGxiYWNrOwor
ICAgICAgICBkZWxldGUgSW5zcGVjdG9yVGVzdC5fcmVsb2FkUGFnZUNhbGxiYWNrOworICAgICAg
ICBjYWxsYmFjaygpOworICAgIH0KK307CisKK0luc3BlY3RvclRlc3QucnVuQWZ0ZXJQZW5kaW5n
RGlzcGF0Y2hlcyA9IGZ1bmN0aW9uKGNhbGxiYWNrKQoreworICAgIFdlYkluc3BlY3Rvci5UZXN0
Q29udHJvbGxlci5wcm90b3R5cGUucnVuQWZ0ZXJQZW5kaW5nRGlzcGF0Y2hlcyhjYWxsYmFjayk7
CiB9OwogCiBJbnNwZWN0b3JUZXN0LmVuYWJsZVJlc291cmNlVHJhY2tpbmcgPSBmdW5jdGlvbihj
YWxsYmFjaykKQEAgLTM3LDE1ICs5MywxNSBAQCBJbnNwZWN0b3JUZXN0LmVuYWJsZVJlc291cmNl
VHJhY2tpbmcgPSBmdW5jdGlvbihjYWxsYmFjaykKICAgICBpZiAoV2ViSW5zcGVjdG9yLnBhbmVs
cy5yZXNvdXJjZXMucmVzb3VyY2VUcmFja2luZ0VuYWJsZWQpCiAgICAgICAgIGNhbGxiYWNrKCk7
CiAgICAgZWxzZSB7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuX2FkZFNuaWZmZXIoV2ViSW5zcGVj
dG9yLCAicmVzZXQiLCBjYWxsYmFjayk7CisgICAgICAgIEluc3BlY3RvclRlc3QuX3JlbG9hZFBh
Z2VDYWxsYmFjayA9IGNhbGxiYWNrOwogICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLmVuYWJsZVJl
c291cmNlVHJhY2tpbmcoZmFsc2UpOwogICAgIH0KLX0KK307CiAKIEluc3BlY3RvclRlc3QuZGlz
YWJsZVJlc291cmNlVHJhY2tpbmcgPSBmdW5jdGlvbigpCiB7CiAgICAgSW5zcGVjdG9yQmFja2Vu
ZC5kaXNhYmxlUmVzb3VyY2VUcmFja2luZyhmYWxzZSk7Ci19Cit9OwogCiBJbnNwZWN0b3JUZXN0
LmZpbmRET01Ob2RlID0gZnVuY3Rpb24ocm9vdCwgZmlsdGVyLCBjYWxsYmFjaykKIHsKQEAgLTEx
MCw5ICsxNjYsOSBAQCBJbnNwZWN0b3JUZXN0Ll9hZGRTbmlmZmVyID0gZnVuY3Rpb24ocmVjZWl2
ZXIsIG1ldGhvZE5hbWUsIG92ZXJyaWRlLCBvcHRfc3RpY2t5KQogICAgICAgICB9CiAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAgICAgfTsKLX0KK307CiAKLX0pOworfTsKIAogdmFyIHJ1blRlc3RD
YWxsSWQgPSAwOwogdmFyIGNvbXBsZXRlVGVzdENhbGxJZCA9IDE7CkBAIC0xMjcsOCArMTgzLDEw
IEBAIGZ1bmN0aW9uIHJ1blRlc3QoKQogCiAgICAgZnVuY3Rpb24gcnVuVGVzdEluRnJvbnRlbmQo
aW5pdGlhbGl6YXRpb25GdW5jdGlvbnMsIHRlc3RGdW5jdGlvbiwgY29tcGxldGVUZXN0Q2FsbElk
KQogICAgIHsKLSAgICAgICAgaWYgKHdpbmRvdy5JbnNwZWN0b3JUZXN0KQorICAgICAgICBpZiAo
d2luZG93Lkluc3BlY3RvclRlc3QpIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QucGFnZVJl
bG9hZGVkKCk7CiAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KIAogICAgICAgICBJbnNw
ZWN0b3JUZXN0ID0ge307CiAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0Q2FsbElk
ID0gY29tcGxldGVUZXN0Q2FsbElkOwpAQCAtMTU1LDY1ICsyMTMsMTYgQEAgZnVuY3Rpb24gcnVu
VGVzdCgpCiAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZXZhbHVhdGVJbldlYkluc3BlY3Rvcihy
dW5UZXN0Q2FsbElkLCB0b0V2YWx1YXRlKTsKIH0KIAotZnVuY3Rpb24gZGlkRXZhbHVhdGVGb3JU
ZXN0SW5Gcm9udGVuZChjYWxsSWQsIHJlc3VsdCkKK2Z1bmN0aW9uIGRpZEV2YWx1YXRlRm9yVGVz
dEluRnJvbnRlbmQoY2FsbElkKQogewogICAgIGlmIChjYWxsSWQgIT09IGNvbXBsZXRlVGVzdENh
bGxJZCkKICAgICAgICAgcmV0dXJuOwotICAgIGR1bXBBcnJheShKU09OLnBhcnNlKHJlc3VsdCkp
OwogICAgIGxheW91dFRlc3RDb250cm9sbGVyLmNsb3NlV2ViSW5zcGVjdG9yKCk7CiAgICAgc2V0
VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5
RG9uZSgpOwogICAgIH0sIDApOwogfQogCi1mdW5jdGlvbiBkdW1wKGRhdGEpCi17Ci0gICAgaWYg
KHR5cGVvZiBkYXRhID09PSAic3RyaW5nIikgewotICAgICAgICBvdXRwdXQoZGF0YSk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAodHlwZW9mIGRhdGEgPT09ICJvYmplY3QiKSB7
Ci0gICAgICAgIGR1bXBPYmplY3QoZGF0YSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBpZiAodHlwZW9mIGRhdGEgPT09ICJhcnJheSIpIHsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCByZXN1bHQubGVuZ3RoOyArK2kpCi0gICAgICAgICAgICBkdW1wKHJlc3VsdFtpXSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIGR1bXBBcnJheShyZXN1bHQpCi17
Ci0gICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIEFycmF5KSB7Ci0gICAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgcmVzdWx0Lmxlbmd0aDsgKytpKQotICAgICAgICAgICAgZHVtcChyZXN1bHRbaV0p
OwotICAgIH0gZWxzZQotICAgICAgICBvdXRwdXQocmVzdWx0KTsKLX0KLQotZnVuY3Rpb24gZHVt
cE9iamVjdChvYmplY3QsIG5vbmRldGVybWluaXN0aWNQcm9wcywgcHJlZml4LCBmaXJzdExpbmVQ
cmVmaXgpCi17Ci0gICAgcHJlZml4ID0gcHJlZml4IHx8ICIiOwotICAgIGZpcnN0TGluZVByZWZp
eCA9IGZpcnN0TGluZVByZWZpeCB8fCBwcmVmaXg7Ci0gICAgb3V0cHV0KGZpcnN0TGluZVByZWZp
eCArICJ7Iik7Ci0gICAgZm9yICh2YXIgcHJvcCBpbiBvYmplY3QpIHsKLSAgICAgICAgdmFyIHBy
ZWZpeFdpdGhOYW1lID0gcHJlZml4ICsgIiAgICAiICsgcHJvcCArICIgOiAiOwotICAgICAgICB2
YXIgcHJvcFZhbHVlID0gb2JqZWN0W3Byb3BdOwotICAgICAgICBpZiAobm9uZGV0ZXJtaW5pc3Rp
Y1Byb3BzICYmIHByb3AgaW4gbm9uZGV0ZXJtaW5pc3RpY1Byb3BzKQotICAgICAgICAgICAgb3V0
cHV0KHByZWZpeFdpdGhOYW1lICsgIjwiICsgdHlwZW9mIHByb3BWYWx1ZSArICI+Iik7Ci0gICAg
ICAgIGVsc2UgaWYgKHR5cGVvZiBwcm9wVmFsdWUgPT09ICJvYmplY3QiKQotICAgICAgICAgICAg
ZHVtcE9iamVjdChwcm9wVmFsdWUsIG5vbmRldGVybWluaXN0aWNQcm9wcywgcHJlZml4ICsgIiAg
ICAiLCBwcmVmaXhXaXRoTmFtZSk7Ci0gICAgICAgIGVsc2UgaWYgKHR5cGVvZiBwcm9wVmFsdWUg
PT09ICJzdHJpbmciKQotICAgICAgICAgICAgb3V0cHV0KHByZWZpeFdpdGhOYW1lICsgIlwiIiAr
IHByb3BWYWx1ZSArICJcIiIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBvdXRwdXQocHJl
Zml4V2l0aE5hbWUgKyBwcm9wVmFsdWUpOwotICAgIH0KLSAgICBvdXRwdXQocHJlZml4ICsgIn0i
KTsKLX0KLQogZnVuY3Rpb24gb3V0cHV0KHRleHQpCiB7CiAgICAgdmFyIG91dHB1dEVsZW1lbnQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9kZWJ1Z2dlci1icmVha3BvaW50cy1ub3QtYWN0aXZhdGVkLW9uLXJlbG9hZC5o
dG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLWJyZWFrcG9pbnRzLW5vdC1hY3Rp
dmF0ZWQtb24tcmVsb2FkLmh0bWwKaW5kZXggMWM4YjBmYi4uYzA2NjY0ZCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLWJyZWFrcG9pbnRzLW5vdC1hY3RpdmF0ZWQt
b24tcmVsb2FkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLWJyZWFr
cG9pbnRzLW5vdC1hY3RpdmF0ZWQtb24tcmVsb2FkLmh0bWwKQEAgLTE0LDI5ICsxNCwyNyBAQCB2
YXIgdGVzdCA9IGZ1bmN0aW9uKCkKICAgICB2YXIgdGVzdE5hbWUgPSBXZWJJbnNwZWN0b3IubWFp
blJlc291cmNlLnVybDsKICAgICB0ZXN0TmFtZSA9IHRlc3ROYW1lLnN1YnN0cmluZyh0ZXN0TmFt
ZS5sYXN0SW5kZXhPZignLycpICsgMSk7CiAKLSAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJz
Y3JpcHRzIik7Ci0gICAgSW5zcGVjdG9yVGVzdC5zdGFydERlYnVnZ2VyVGVzdChzdGFydERlYnVn
Z2VyVGVzdENhbGxiYWNrKTsKKyAgICBJbnNwZWN0b3JUZXN0LnN0YXJ0RGVidWdnZXJUZXN0KHN0
ZXAxKTsKIAotICAgIGZ1bmN0aW9uIHN0YXJ0RGVidWdnZXJUZXN0Q2FsbGJhY2soKQorICAgIGZ1
bmN0aW9uIHN0ZXAxKCkKICAgICB7Ci0gICAgICAgIEluc3BlY3RvclRlc3Quc2hvd1NjcmlwdFNv
dXJjZSh0ZXN0TmFtZSwgc2hvd1NjcmlwdFNvdXJjZUNhbGxiYWNrKTsKKyAgICAgICAgSW5zcGVj
dG9yVGVzdC5zaG93U2NyaXB0U291cmNlKHRlc3ROYW1lLCBzdGVwMik7CiAgICAgfQogCi0gICAg
ZnVuY3Rpb24gc2hvd1NjcmlwdFNvdXJjZUNhbGxiYWNrKHZpZXcpCisgICAgZnVuY3Rpb24gc3Rl
cDIoKQogICAgIHsKICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIk1haW4gcmVzb3Vy
Y2Ugd2FzIHNob3duLiIpOwotICAgICAgICB2aWV3Ll9hZGRCcmVha3BvaW50KDgpOworICAgICAg
ICBXZWJJbnNwZWN0b3IucGFuZWxzLnNjcmlwdHMudmlzaWJsZVZpZXcuX2FkZEJyZWFrcG9pbnQo
OCk7CiAgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMuc2NyaXB0cy50b2dnbGVCcmVha3BvaW50
c0J1dHRvbi5lbGVtZW50LmNsaWNrKCk7Ci0gICAgICAgIEluc3BlY3RvclRlc3QucmVsb2FkUGFn
ZShyZWxvYWRQYWdlQ2FsbGJhY2spOworICAgICAgICBJbnNwZWN0b3JUZXN0LnJlbG9hZFBhZ2Uo
c3RlcDMpOwogICAgIH0KIAotICAgIGZ1bmN0aW9uIHJlbG9hZFBhZ2VDYWxsYmFjaygpCisgICAg
ZnVuY3Rpb24gc3RlcDMoKQogICAgIHsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQo
IlBhZ2UgcmVsb2FkZWQuIik7Ci0gICAgICAgIEluc3BlY3RvclRlc3Quc2hvd1NjcmlwdFNvdXJj
ZSh0ZXN0TmFtZSwgc2hvd1NjcmlwdFNvdXJjZUFmdGVyUmVsb2FkQ2FsbGJhY2spOworICAgICAg
ICBJbnNwZWN0b3JUZXN0LnNob3dTY3JpcHRTb3VyY2UodGVzdE5hbWUsIHN0ZXA0KTsKICAgICB9
CiAKLSAgICBmdW5jdGlvbiBzaG93U2NyaXB0U291cmNlQWZ0ZXJSZWxvYWRDYWxsYmFjayh2aWV3
KQorICAgIGZ1bmN0aW9uIHN0ZXA0KCkKICAgICB7CiAgICAgICAgIEluc3BlY3RvclRlc3QuYWRk
UmVzdWx0KCJNYWluIHJlc291cmNlIHdhcyBzaG93bi4iKTsKICAgICAgICAgaWYgKCFXZWJJbnNw
ZWN0b3IucGFuZWxzLnNjcmlwdHMuYnJlYWtwb2ludHNBY3RpdmF0ZWQpCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItY3ljbGljLXJlZi1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItY3ljbGljLXJlZi1leHBlY3RlZC50eHQKaW5k
ZXggNTNmY2Y5YS4uNzM1NGUxYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Rl
YnVnZ2VyLWN5Y2xpYy1yZWYtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9kZWJ1Z2dlci1jeWNsaWMtcmVmLWV4cGVjdGVkLnR4dApAQCAtMyw2ICszLDYgQEAgVGVzdHMg
dGhhdCBkZWJ1Z2dpbmcgYSBwYWdlIHdoZXJlIE9iamVjdCBwcm90b3R5cGUgaGFzIGEgY3ljbGlj
IHJlZmVyZW5jZSB3b24ndAogRGVidWdnZXIgd2FzIGVuYWJsZWQuCiBTZXQgdGltZXIgZm9yIHRl
c3QgZnVuY3Rpb24uCiBTY3JpcHQgZXhlY3V0aW9uIHBhdXNlZC4KLVJlc3VtZWQgc2NyaXB0IGV4
ZWN1dGlvbi4KLURpc2FibGVkIGRlYnVnZ2VyLgorU2NyaXB0IGV4ZWN1dGlvbiByZXN1bWVkLgor
RGVidWdnZXIgd2FzIGRpc2FibGVkLgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZGVidWdnZXItY3ljbGljLXJlZi5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVn
Z2VyLWN5Y2xpYy1yZWYuaHRtbAppbmRleCA4ZDUxYmM0Li4xN2ZlNjM5IDEwMDc1NQotLS0gYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItY3ljbGljLXJlZi5odG1sCisrKyBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1jeWNsaWMtcmVmLmh0bWwKQEAgLTEsNyArMSw3IEBA
CiA8aHRtbD4KIDxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2lu
c3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9kZWJ1Z2dlci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9odHRw
L3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdDIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXRlc3QyLmpzIj48L3NjcmlwdD4K
IDxzY3JpcHQ+CiAKIE9iamVjdC5wcm90b3R5cGUuY3ljbGljUmVmID0gT2JqZWN0LnByb3RvdHlw
ZTsKQEAgLTEwLDQxICsxMCwyNyBAQCBmdW5jdGlvbiB0ZXN0RnVuY3Rpb24oKQogewogICAgIHZh
ciBvID0gbmV3IE9iamVjdCgpOwogICAgIGRlYnVnZ2VyOwotICAgIG5vdGlmeURvbmUoKTsKIH0K
IAotZnVuY3Rpb24gZG9pdCgpCit2YXIgdGVzdCA9IGZ1bmN0aW9uKCkKIHsKLSAgICBldmFsdWF0
ZUluV2ViSW5zcGVjdG9yKCJmcm9udGVuZF90ZXN0RGVidWdPYmplY3RXaXRoQ3ljbGljUmVmIiwg
ZHVtcEFycmF5KTsKLX0KLQotZnVuY3Rpb24gZnJvbnRlbmRfdGVzdERlYnVnT2JqZWN0V2l0aEN5
Y2xpY1JlZih0ZXN0Q29udHJvbGxlcikKLXsKLSAgICB0ZXN0Q29udHJvbGxlci53YWl0VW50aWxE
b25lKCk7CisgICAgSW5zcGVjdG9yVGVzdC5zdGFydERlYnVnZ2VyVGVzdChzdGVwMSk7CiAKLSAg
ICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJzY3JpcHRzIik7Ci0gICAgZnJvbnRlbmRfZW5zdXJl
RGVidWdnZXJFbmFibGVkKGRlYnVnZ2VyV2FzRW5hYmxlZENhbGxiYWNrKTsKLQotICAgIGZ1bmN0
aW9uIGRlYnVnZ2VyV2FzRW5hYmxlZENhbGxiYWNrKCkKKyAgICBmdW5jdGlvbiBzdGVwMSgpCiAg
ICAgewotICAgICAgICB0ZXN0Q29udHJvbGxlci5yZXN1bHRzLnB1c2goIkRlYnVnZ2VyIHdhcyBl
bmFibGVkLiIpOwotICAgICAgICBmcm9udGVuZF9ldmFsdWF0ZUluQ29uc29sZSgic2V0VGltZW91
dCh0ZXN0RnVuY3Rpb24sIDApIiwgZnVuY3Rpb24ocmVzdWx0KQotICAgICAgICB7Ci0gICAgICAg
ICAgICB0ZXN0Q29udHJvbGxlci5yZXN1bHRzLnB1c2goIlNldCB0aW1lciBmb3IgdGVzdCBmdW5j
dGlvbi4iKTsKLSAgICAgICAgfSk7CisgICAgICAgIEluc3BlY3RvclRlc3QucnVuVGVzdEZ1bmN0
aW9uQW5kV2FpdFVudGlsUGF1c2VkKHN0ZXAyKTsKICAgICB9CiAKLSAgICBmcm9udGVuZF9hZGRT
bmlmZmVyKFdlYkluc3BlY3RvciwgInBhdXNlZFNjcmlwdCIsIGZ1bmN0aW9uKGNhbGxGcmFtZXMp
CisgICAgZnVuY3Rpb24gc3RlcDIoKQogICAgIHsKLSAgICAgICAgdGVzdENvbnRyb2xsZXIucmVz
dWx0cy5wdXNoKCJTY3JpcHQgZXhlY3V0aW9uIHBhdXNlZC4iKTsKLSAgICAgICAgZnJvbnRlbmRf
Y29tcGxldGVEZWJ1Z2dlclRlc3QodGVzdENvbnRyb2xsZXIpOwotICAgIH0pOworICAgICAgICBJ
bnNwZWN0b3JUZXN0LmNvbXBsZXRlRGVidWdnZXJUZXN0KCk7CisgICAgfQogfQogCiA8L3Njcmlw
dD4KIDwvaGVhZD4KIAotPGJvZHkgb25sb2FkPSJvbmxvYWQoKSI+Cis8Ym9keSBvbmxvYWQ9InJ1
blRlc3QoKSI+CiA8cD4KIFRlc3RzIHRoYXQgZGVidWdnaW5nIGEgcGFnZSB3aGVyZSBPYmplY3Qg
cHJvdG90eXBlIGhhcyBhIGN5Y2xpYyByZWZlcmVuY2Ugd29uJ3QKIGNyYXNoIHRoZSBicm93c2Vy
LjxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MzU1OCI+
QnVnIDQzNTU4PC9hPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2Vy
LWV2YWwtd2hpbGUtcGF1c2VkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9k
ZWJ1Z2dlci1ldmFsLXdoaWxlLXBhdXNlZC1leHBlY3RlZC50eHQKaW5kZXggMmQ4MzcxYy4uOGY0
ZGQzMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLWV2YWwtd2hp
bGUtcGF1c2VkLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdn
ZXItZXZhbC13aGlsZS1wYXVzZWQtZXhwZWN0ZWQudHh0CkBAIC01LDYgKzUsNiBAQCBTZXQgdGlt
ZXIgZm9yIHRlc3QgZnVuY3Rpb24uCiBTY3JpcHQgZXhlY3V0aW9uIHBhdXNlZC4KIEV2YWx1YXRl
ZCBzY3JpcHQgb24gdGhlIHRvcCBmcmFtZTogNDAyMQogRXZhbHVhdGVkIHNjcmlwdCBvbiB0aGUg
Y2FsbGluZyBmcmFtZTogMzAxCi1SZXN1bWVkIHNjcmlwdCBleGVjdXRpb24uCi1EaXNhYmxlZCBk
ZWJ1Z2dlci4KK1NjcmlwdCBleGVjdXRpb24gcmVzdW1lZC4KK0RlYnVnZ2VyIHdhcyBkaXNhYmxl
ZC4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLWV2YWwtd2hp
bGUtcGF1c2VkLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItZXZhbC13aGls
ZS1wYXVzZWQuaHRtbAppbmRleCAxNWIyMGE4Li5kODMyYWEyIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItZXZhbC13aGlsZS1wYXVzZWQuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItZXZhbC13aGlsZS1wYXVzZWQuaHRtbApAQCAtMSw2
OCArMSw2MCBAQAogPGh0bWw+CiA8aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vaHR0
cC90ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QyLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci10ZXN0Mi5qcyI+
PC9zY3JpcHQ+CiA8c2NyaXB0PgogCiB2YXIgZ2xvYmFsVmFyID0geyBiOiAxIH07CiAKLWZ1bmN0
aW9uIHNsYXZlKHgpIHsKK2Z1bmN0aW9uIHNsYXZlKHgpCit7CiAgICAgdmFyIHkgPSAyMDsKICAg
ICBkZWJ1Z2dlcjsKLSAgICBub3RpZnlEb25lKCk7CiB9CiAKLWZ1bmN0aW9uIHRlc3RGdW5jdGlv
bigpIHsKLSAgICB2YXIgbG9jYWxPYmplY3QgPSB7YTogMzAwfTsKK2Z1bmN0aW9uIHRlc3RGdW5j
dGlvbigpCit7CisgICAgdmFyIGxvY2FsT2JqZWN0ID0geyBhOiAzMDAgfTsKICAgICBzbGF2ZSg0
MDAwKTsKIH0KIAotZnVuY3Rpb24gZG9pdCgpCit2YXIgdGVzdCA9IGZ1bmN0aW9uKCkKIHsKLSAg
ICBldmFsdWF0ZUluV2ViSW5zcGVjdG9yKCJmcm9udGVuZF90ZXN0UGF1c2VPbkRlYnVnZ2VyU3Rh
dGVtZW50IiwgZHVtcEFycmF5KTsKLX0KKyAgICBJbnNwZWN0b3JUZXN0LnN0YXJ0RGVidWdnZXJU
ZXN0KHN0ZXAxKTsKIAotZnVuY3Rpb24gZnJvbnRlbmRfdGVzdFBhdXNlT25EZWJ1Z2dlclN0YXRl
bWVudCh0ZXN0Q29udHJvbGxlcikKLXsKLSAgICB0ZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25l
KCk7CisgICAgZnVuY3Rpb24gc3RlcDEoKQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5y
dW5UZXN0RnVuY3Rpb25BbmRXYWl0VW50aWxQYXVzZWQoc3RlcDIpOworICAgIH0KIAotICAgIFdl
Ykluc3BlY3Rvci5zaG93UGFuZWwoInNjcmlwdHMiKTsKLSAgICBmcm9udGVuZF9lbnN1cmVEZWJ1
Z2dlckVuYWJsZWQoZGVidWdnZXJXYXNFbmFibGVkQ2FsbGJhY2spOworICAgIGZ1bmN0aW9uIHN0
ZXAyKGNhbGxGcmFtZXMpCisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5D
b25zb2xlKCJ4ICsgeSArIGdsb2JhbFZhci5iIiwgc3RlcDMuYmluZChudWxsLCBjYWxsRnJhbWVz
KSk7CisgICAgfQogCi0gICAgZnVuY3Rpb24gZGVidWdnZXJXYXNFbmFibGVkQ2FsbGJhY2soKQor
ICAgIGZ1bmN0aW9uIHN0ZXAzKGNhbGxGcmFtZXMsIHJlc3VsdCkKICAgICB7Ci0gICAgICAgIHRl
c3RDb250cm9sbGVyLnJlc3VsdHMucHVzaCgiRGVidWdnZXIgd2FzIGVuYWJsZWQuIik7Ci0gICAg
ICAgIGZyb250ZW5kX2V2YWx1YXRlSW5Db25zb2xlKCJzZXRUaW1lb3V0KHRlc3RGdW5jdGlvbiwg
MCkiLCBmdW5jdGlvbihyZXN1bHQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRlc3RDb250cm9s
bGVyLnJlc3VsdHMucHVzaCgiU2V0IHRpbWVyIGZvciB0ZXN0IGZ1bmN0aW9uLiIpOwotICAgICAg
ICB9KTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIkV2YWx1YXRlZCBzY3JpcHQg
b24gdGhlIHRvcCBmcmFtZTogIiArIHJlc3VsdCk7CisgICAgICAgIFdlYkluc3BlY3Rvci5wYW5l
bHMuc2NyaXB0cy5zaWRlYmFyUGFuZXMuY2FsbHN0YWNrLnNlbGVjdGVkQ2FsbEZyYW1lID0gY2Fs
bEZyYW1lc1sxXTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5ydW5BZnRlclBlbmRpbmdEaXNwYXRj
aGVzKHN0ZXA0KTsKICAgICB9CiAKLSAgICBmcm9udGVuZF9hZGRTbmlmZmVyKFdlYkluc3BlY3Rv
ciwgInBhdXNlZFNjcmlwdCIsIGZ1bmN0aW9uKGNhbGxGcmFtZXMpCisgICAgZnVuY3Rpb24gc3Rl
cDQoKQogICAgIHsKLSAgICAgICAgdGVzdENvbnRyb2xsZXIucmVzdWx0cy5wdXNoKCJTY3JpcHQg
ZXhlY3V0aW9uIHBhdXNlZC4iKTsKLSAgICAgICAgZnJvbnRlbmRfZXZhbHVhdGVJbkNvbnNvbGUo
InggKyB5ICsgZ2xvYmFsVmFyLmIiLCBmdW5jdGlvbihyZXN1bHQpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIHRlc3RDb250cm9sbGVyLnJlc3VsdHMucHVzaCgiRXZhbHVhdGVkIHNjcmlwdCBvbiB0
aGUgdG9wIGZyYW1lOiAiICsgcmVzdWx0KTsKLSAgICAgICAgICAgIFdlYkluc3BlY3Rvci5wYW5l
bHMuc2NyaXB0cy5zaWRlYmFyUGFuZXMuY2FsbHN0YWNrLnNlbGVjdGVkQ2FsbEZyYW1lID0gY2Fs
bEZyYW1lc1sxXTsKLSAgICAgICAgICAgIHRlc3RDb250cm9sbGVyLnJ1bkFmdGVyUGVuZGluZ0Rp
c3BhdGNoZXModGVzdEV2YWxJbkNhbGxpbmdGcmFtZSk7Ci0gICAgICAgIH0pOworICAgICAgICBJ
bnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5Db25zb2xlKCJsb2NhbE9iamVjdC5hICsgZ2xvYmFsVmFy
LmIiLCBzdGVwNSk7CisgICAgfQogCi0gICAgICAgIGZ1bmN0aW9uIHRlc3RFdmFsSW5DYWxsaW5n
RnJhbWUoKQotICAgICAgICB7Ci0gICAgICAgICAgICBmcm9udGVuZF9ldmFsdWF0ZUluQ29uc29s
ZSgibG9jYWxPYmplY3QuYSArIGdsb2JhbFZhci5iIiwgZnVuY3Rpb24ocmVzdWx0KQotICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIHRlc3RDb250cm9sbGVyLnJlc3VsdHMucHVzaCgiRXZh
bHVhdGVkIHNjcmlwdCBvbiB0aGUgY2FsbGluZyBmcmFtZTogIiArIHJlc3VsdCk7Ci0gICAgICAg
ICAgICAgICAgZnJvbnRlbmRfY29tcGxldGVEZWJ1Z2dlclRlc3QodGVzdENvbnRyb2xsZXIpOwot
ICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0KLSAgICB9KTsKKyAgICBmdW5jdGlvbiBzdGVwNShy
ZXN1bHQpCisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiRXZhbHVhdGVk
IHNjcmlwdCBvbiB0aGUgY2FsbGluZyBmcmFtZTogIiArIHJlc3VsdCk7CisgICAgICAgIEluc3Bl
Y3RvclRlc3QuY29tcGxldGVEZWJ1Z2dlclRlc3QoKTsKKyAgICB9CiB9CiAKIDwvc2NyaXB0Pgog
PC9oZWFkPgogCi08Ym9keSBvbmxvYWQ9Im9ubG9hZCgpIj4KKzxib2R5IG9ubG9hZD0icnVuVGVz
dCgpIj4KIDxwPgogVGVzdHMgdGhhdCBldmFsdWF0aW9uIGluIGNvbnNvbGUgd29ya3MgZmluZSB3
aGVuIHNjcmlwdCBpcyBwYXVzZWQuIEl0IGFsc28gY2hlY2tzIHRoYXQKIHN0YWNrIGFuZCBnbG9i
YWwgdmFyaWFibGVzIGFyZSBhY2Nlc3NpYmxlIGZyb20gdGhlIGNvbnNvbGUuCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItbm8tbmVzdGVkLXBhdXNlLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1uby1uZXN0ZWQtcGF1c2UtZXhw
ZWN0ZWQudHh0CmluZGV4IDBhNjJmYTAuLjIzYjQ4ZjcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9kZWJ1Z2dlci1uby1uZXN0ZWQtcGF1c2UtZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1uby1uZXN0ZWQtcGF1c2UtZXhwZWN0ZWQudHh0
CkBAIC01LDYgKzUsNiBAQCBTZXQgdGltZXIgZm9yIHRlc3QgZnVuY3Rpb24uCiBTY3JpcHQgZXhl
Y3V0aW9uIHBhdXNlZC4KIFNldCB0aW1lciBmb3IgdGVzdCBmdW5jdGlvbi4KIHRlc3RGdW5jdGlv
bi5pbnZvY2F0aW9uQ291bnQgPSAyCi1SZXN1bWVkIHNjcmlwdCBleGVjdXRpb24uCi1EaXNhYmxl
ZCBkZWJ1Z2dlci4KK1NjcmlwdCBleGVjdXRpb24gcmVzdW1lZC4KK0RlYnVnZ2VyIHdhcyBkaXNh
YmxlZC4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLW5vLW5l
c3RlZC1wYXVzZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLW5vLW5lc3Rl
ZC1wYXVzZS5odG1sCmluZGV4IGRmOGM1ZTYuLjhhNmNmYjcgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1uby1uZXN0ZWQtcGF1c2UuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItbm8tbmVzdGVkLXBhdXNlLmh0bWwKQEAgLTEsNjQgKzEs
NDMgQEAKIDxodG1sPgogPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0
b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0Mi5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItdGVzdDIuanMiPjwvc2Ny
aXB0PgogPHNjcmlwdD4KIAogZnVuY3Rpb24gdGVzdEZ1bmN0aW9uKCkKIHsKICAgICB0ZXN0RnVu
Y3Rpb24uaW52b2NhdGlvbkNvdW50Kys7CiAgICAgZGVidWdnZXI7Ci0gICAgaWYgKHRlc3RGdW5j
dGlvbi5kaWRFeGl0RnJvbU5lc3RlZENhbGwpCi0gICAgICAgIG5vdGlmeURvbmUoKTsKLSAgICB0
ZXN0RnVuY3Rpb24uZGlkRXhpdEZyb21OZXN0ZWRDYWxsID0gdHJ1ZTsKIH0KLXRlc3RGdW5jdGlv
bi5pbnZvY2F0aW9uQ291bnQgPSAwOwogCi1mdW5jdGlvbiBkb2l0KCkKLXsKLSAgICBldmFsdWF0
ZUluV2ViSW5zcGVjdG9yKCJmcm9udGVuZF90ZXN0Tm9OZXN0ZWRQYXVzZSIsIGR1bXBBcnJheSk7
Ci19Cit0ZXN0RnVuY3Rpb24uaW52b2NhdGlvbkNvdW50ID0gMDsKIAotZnVuY3Rpb24gZnJvbnRl
bmRfdGVzdE5vTmVzdGVkUGF1c2UodGVzdENvbnRyb2xsZXIpCit2YXIgdGVzdCA9IGZ1bmN0aW9u
KCkKIHsKLSAgICB0ZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgSW5zcGVjdG9y
VGVzdC5zdGFydERlYnVnZ2VyVGVzdChzdGVwMSk7CiAKLSAgICBXZWJJbnNwZWN0b3Iuc2hvd1Bh
bmVsKCJzY3JpcHRzIik7Ci0gICAgZnJvbnRlbmRfZW5zdXJlRGVidWdnZXJFbmFibGVkKGRlYnVn
Z2VyV2FzRW5hYmxlZENhbGxiYWNrKTsKLQotICAgIGZ1bmN0aW9uIGRlYnVnZ2VyV2FzRW5hYmxl
ZENhbGxiYWNrKCkKKyAgICBmdW5jdGlvbiBzdGVwMSgpCiAgICAgewotICAgICAgICB0ZXN0Q29u
dHJvbGxlci5yZXN1bHRzLnB1c2goIkRlYnVnZ2VyIHdhcyBlbmFibGVkLiIpOwotICAgICAgICBm
cm9udGVuZF9ldmFsdWF0ZUluQ29uc29sZSgic2V0VGltZW91dCh0ZXN0RnVuY3Rpb24sIDApIiwg
ZnVuY3Rpb24ocmVzdWx0KQotICAgICAgICB7Ci0gICAgICAgICAgICB0ZXN0Q29udHJvbGxlci5y
ZXN1bHRzLnB1c2goIlNldCB0aW1lciBmb3IgdGVzdCBmdW5jdGlvbi4iKTsKLSAgICAgICAgfSk7
CisgICAgICAgIEluc3BlY3RvclRlc3QucnVuVGVzdEZ1bmN0aW9uQW5kV2FpdFVudGlsUGF1c2Vk
KHN0ZXAyKTsKICAgICB9CiAKLSAgICB2YXIgcGF1c2VkID0gZmFsc2U7Ci0gICAgZnJvbnRlbmRf
YWRkU25pZmZlcihXZWJJbnNwZWN0b3IsICJwYXVzZWRTY3JpcHQiLCBmdW5jdGlvbihjYWxsRnJh
bWVzKQorICAgIGZ1bmN0aW9uIHN0ZXAyKCkKICAgICB7Ci0gICAgICAgIGlmIChwYXVzZWQpIHsK
LSAgICAgICAgICAgIHRlc3RDb250cm9sbGVyLnJlc3VsdHMucHVzaCgiU2NyaXB0IGV4ZWN1dGlv
biBwYXVzZWQgc2Vjb25kIHRpbWUuIik7Ci0gICAgICAgICAgICB0ZXN0Q29udHJvbGxlci5ub3Rp
ZnlEb25lKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgcGF1c2Vk
ID0gdHJ1ZTsKLSAgICAgICAgdGVzdENvbnRyb2xsZXIucmVzdWx0cy5wdXNoKCJTY3JpcHQgZXhl
Y3V0aW9uIHBhdXNlZC4iKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluQ29uc29s
ZSgidGVzdEZ1bmN0aW9uKCk7IHRlc3RGdW5jdGlvbi5pbnZvY2F0aW9uQ291bnQiLCBzdGVwMyk7
CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJTZXQgdGltZXIgZm9yIHRlc3QgZnVu
Y3Rpb24uIik7CisgICAgfQogCi0gICAgICAgIHRlc3RDb250cm9sbGVyLnJlc3VsdHMucHVzaCgi
U2V0IHRpbWVyIGZvciB0ZXN0IGZ1bmN0aW9uLiIpOwotICAgICAgICBmcm9udGVuZF9ldmFsdWF0
ZUluQ29uc29sZSgidGVzdEZ1bmN0aW9uKCk7IHRlc3RGdW5jdGlvbi5pbnZvY2F0aW9uQ291bnQi
LCBmdW5jdGlvbihyZXN1bHQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRlc3RDb250cm9sbGVy
LnJlc3VsdHMucHVzaCgidGVzdEZ1bmN0aW9uLmludm9jYXRpb25Db3VudCA9ICIgKyByZXN1bHQp
OwotICAgICAgICAgICAgZnJvbnRlbmRfY29tcGxldGVEZWJ1Z2dlclRlc3QodGVzdENvbnRyb2xs
ZXIpOwotICAgICAgICB9KTsKLSAgICB9KTsKKyAgICBmdW5jdGlvbiBzdGVwMyhyZXN1bHQpCisg
ICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgidGVzdEZ1bmN0aW9uLmludm9j
YXRpb25Db3VudCA9ICIgKyByZXN1bHQpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRl
RGVidWdnZXJUZXN0KCk7CisgICAgfQogfQogCiA8L3NjcmlwdD4KIDwvaGVhZD4KIAotPGJvZHkg
b25sb2FkPSJvbmxvYWQoKSI+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+CiA8cD4KIFRlc3Rz
IHRoYXQgZGVidWdnZXIgd2lsbCBza2lwIGJyZWFrcG9pbnQgaGl0IHdoZW4gc2NyaXB0IGV4ZWN1
dGlvbiBpcyBhbHJlYWR5IHBhdXNlZC4gPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTQxNzY4Ij5TZWUgYnVnPC9hPgogPC9wPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXBhdXNlLWluLWV2YWwtc2NyaXB0LWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1wYXVzZS1pbi1ldmFsLXNjcmlw
dC1leHBlY3RlZC50eHQKaW5kZXggNTg1MzBmYy4uZjZkZDQ3OSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXBhdXNlLWluLWV2YWwtc2NyaXB0LWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItcGF1c2UtaW4tZXZhbC1zY3Jp
cHQtZXhwZWN0ZWQudHh0CkBAIC01LDYgKzUsNiBAQCBFdmFsdWF0ZWQgc2NyaXB0IGluIGNvbnNv
bGUuCiBTY3JpcHQgZXhlY3V0aW9uIHBhdXNlZC4KIEV4ZWN1dGlvbiBsaW5lIG51bWJlcjogMwog
RXhlY3V0aW9uIGxpbmUgdGV4dDogICAgIGRlYnVnZ2VyOwotUmVzdW1lZCBzY3JpcHQgZXhlY3V0
aW9uLgotRGlzYWJsZWQgZGVidWdnZXIuCitTY3JpcHQgZXhlY3V0aW9uIHJlc3VtZWQuCitEZWJ1
Z2dlciB3YXMgZGlzYWJsZWQuCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9k
ZWJ1Z2dlci1wYXVzZS1pbi1ldmFsLXNjcmlwdC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2RlYnVnZ2VyLXBhdXNlLWluLWV2YWwtc2NyaXB0Lmh0bWwKaW5kZXggYzY1NWFiNi4uYmU0ZTdl
YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXBhdXNlLWluLWV2
YWwtc2NyaXB0Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXBhdXNl
LWluLWV2YWwtc2NyaXB0Lmh0bWwKQEAgLTEsNjMgKzEsNDIgQEAKIDxodG1sPgogPGhlYWQ+Ci08
c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwv
c2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXRl
c3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2lu
c3BlY3Rvci10ZXN0Mi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9p
bnNwZWN0b3IvZGVidWdnZXItdGVzdDIuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KIAotZnVuY3Rp
b24gZG9pdCgpCi17Ci0gICAgZXZhbHVhdGVJbldlYkluc3BlY3RvcigiZnJvbnRlbmRfdGVzdFBh
dXNlT25EZWJ1Z2dlclN0YXRlbWVudCIsIGR1bXBBcnJheSk7Ci19CiAKLWZ1bmN0aW9uIGZyb250
ZW5kX3Rlc3RQYXVzZU9uRGVidWdnZXJTdGF0ZW1lbnQodGVzdENvbnRyb2xsZXIpCit2YXIgdGVz
dCA9IGZ1bmN0aW9uKCkKIHsKLSAgICB0ZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0K
LSAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJzY3JpcHRzIik7Ci0KICAgICB2YXIgc2NyaXB0
VG9FdmFsdWF0ZSA9ICJmdW5jdGlvbiB0ZXN0RnVuY3Rpb24oKSB7XG4iICsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICIgICAgZGVidWdnZXI7XG4iICsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICIgICAgbm90aWZ5RG9uZSgpO1xuIiArCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAifVxuIiArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2V0VGltZW91dCh0ZXN0RnVu
Y3Rpb24sIDApO1xuIjsKLSAgICBmdW5jdGlvbiBkZWJ1Z2dlcldhc0VuYWJsZWRDYWxsYmFjaygp
Ci0gICAgewotICAgICAgICB0ZXN0Q29udHJvbGxlci5yZXN1bHRzLnB1c2goIkRlYnVnZ2VyIHdh
cyBlbmFibGVkLiIpOwogCi0gICAgICAgIGZyb250ZW5kX2V2YWx1YXRlSW5Db25zb2xlKHNjcmlw
dFRvRXZhbHVhdGUsCi0gICAgICAgIGZ1bmN0aW9uKHJlc3VsdCkKLSAgICAgICAgewotICAgICAg
ICAgICAgdGVzdENvbnRyb2xsZXIucmVzdWx0cy5wdXNoKCJFdmFsdWF0ZWQgc2NyaXB0IGluIGNv
bnNvbGUuIik7Ci0gICAgICAgIH0pOwotICAgIH0KKyAgICBJbnNwZWN0b3JUZXN0LnN0YXJ0RGVi
dWdnZXJUZXN0KHN0ZXAxKTsKIAotICAgIGZyb250ZW5kX2Vuc3VyZURlYnVnZ2VyRW5hYmxlZChk
ZWJ1Z2dlcldhc0VuYWJsZWRDYWxsYmFjayk7CisgICAgZnVuY3Rpb24gc3RlcDEoKQorICAgIHsK
KyAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluQ29uc29sZShzY3JpcHRUb0V2YWx1YXRl
LCBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdC5iaW5kKEluc3BlY3RvclRlc3QsICJFdmFsdWF0ZWQg
c2NyaXB0IGluIGNvbnNvbGUuIikpOworICAgICAgICBJbnNwZWN0b3JUZXN0LndhaXRVbnRpbFBh
dXNlZChzdGVwMik7CisgICAgfQogCi0gICAgZnJvbnRlbmRfYWRkU25pZmZlcihXZWJJbnNwZWN0
b3IsICJwYXVzZWRTY3JpcHQiLCBmdW5jdGlvbihjYWxsRnJhbWVzKQorICAgIGZ1bmN0aW9uIHN0
ZXAyKCkKICAgICB7Ci0gICAgICAgIHRlc3RDb250cm9sbGVyLnJlc3VsdHMucHVzaCgiU2NyaXB0
IGV4ZWN1dGlvbiBwYXVzZWQuIik7Ci0gICAgICAgIGZyb250ZW5kX2NoZWNrRXhlY3V0aW9uTGlu
ZVdoZW5Tb3VyY2VGcmFtZUlzTG9hZGVkKHRlc3RDb250cm9sbGVyLCBmcm9udGVuZF9jb21wbGV0
ZURlYnVnZ2VyVGVzdC5iaW5kKG51bGwsIHRlc3RDb250cm9sbGVyKSk7Ci0gICAgfSk7Ci19Cisg
ICAgICAgIEluc3BlY3RvclRlc3Qud2FpdFVudGlsQ3VycmVudFNvdXJjZUZyYW1lSXNMb2FkZWQo
c3RlcDMpOworICAgIH0KIAotZnVuY3Rpb24gZnJvbnRlbmRfY2hlY2tFeGVjdXRpb25MaW5lV2hl
blNvdXJjZUZyYW1lSXNMb2FkZWQodGVzdENvbnRyb2xsZXIsIGNhbGxiYWNrKQotewotICAgIHZh
ciBzb3VyY2VGcmFtZSA9IFdlYkluc3BlY3Rvci5jdXJyZW50UGFuZWwudmlzaWJsZVZpZXcuc291
cmNlRnJhbWU7Ci0gICAgaWYgKHNvdXJjZUZyYW1lLl9sb2FkZWQpIHsKLSAgICAgICAgdGVzdENv
bnRyb2xsZXIucmVzdWx0cy5wdXNoKCJFeGVjdXRpb24gbGluZSBudW1iZXI6ICIgKyBzb3VyY2VG
cmFtZS5leGVjdXRpb25MaW5lKTsKLSAgICAgICAgdGVzdENvbnRyb2xsZXIucmVzdWx0cy5wdXNo
KCJFeGVjdXRpb24gbGluZSB0ZXh0OiAiICsgc291cmNlRnJhbWUuX3RleHRNb2RlbC5saW5lKHNv
dXJjZUZyYW1lLmV4ZWN1dGlvbkxpbmUgLSAxKSk7Ci0gICAgICAgIGNhbGxiYWNrKCk7Ci0gICAg
fSBlbHNlIHsKLSAgICAgICAgZnJvbnRlbmRfYWRkU25pZmZlcihzb3VyY2VGcmFtZSwgInNldENv
bnRlbnQiLCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGZyb250ZW5kX2NoZWNrRXhlY3V0aW9u
TGluZVdoZW5Tb3VyY2VGcmFtZUlzTG9hZGVkKHRlc3RDb250cm9sbGVyLCBjYWxsYmFjayk7Ci0g
ICAgICAgIH0pOworICAgIGZ1bmN0aW9uIHN0ZXAzKHNvdXJjZUZyYW1lKQorICAgIHsKKyAgICAg
ICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIkV4ZWN1dGlvbiBsaW5lIG51bWJlcjogIiArIHNv
dXJjZUZyYW1lLmV4ZWN1dGlvbkxpbmUpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3Vs
dCgiRXhlY3V0aW9uIGxpbmUgdGV4dDogIiArIHNvdXJjZUZyYW1lLl90ZXh0TW9kZWwubGluZShz
b3VyY2VGcmFtZS5leGVjdXRpb25MaW5lIC0gMSkpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmNv
bXBsZXRlRGVidWdnZXJUZXN0KCk7CiAgICAgfQogfQogCiA8L3NjcmlwdD4KIDwvaGVhZD4KIAot
PGJvZHkgb25sb2FkPSJvbmxvYWQoKSI+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+CiA8cD4K
IFRlc3RzIHRoYXQgZGVidWdnZXIgd2lsbCBzdG9wIG9uICJkZWJ1Z2dlciIgc3RhdGVtZW50IGlu
IGEgZnVuY3Rpb24gdGhhdCB3YXMgYWRkZWQKIHRvIHRoZSBpbnNwZWN0ZWQgcGFnZSB2aWEgZXZh
bHVhdGlvbiBpbiBXZWIgSW5zcGVjdG9yIGNvbnNvbGUuPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQxMDU4Ij5CdWcgNDEwNTg8L2E+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItcGF1c2Utb24tZGVidWdnZXItc3RhdGVt
ZW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1wYXVzZS1v
bi1kZWJ1Z2dlci1zdGF0ZW1lbnQtZXhwZWN0ZWQudHh0CmluZGV4IDM5ZWFmMGMuLmQ3OGVlN2Ig
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1wYXVzZS1vbi1kZWJ1
Z2dlci1zdGF0ZW1lbnQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9k
ZWJ1Z2dlci1wYXVzZS1vbi1kZWJ1Z2dlci1zdGF0ZW1lbnQtZXhwZWN0ZWQudHh0CkBAIC0zLDYg
KzMsNiBAQCBUZXN0cyB0aGF0IGRlYnVnZ2VyIHdpbGwgc3RvcCBvbiAiZGVidWdnZXIiIHN0YXRl
bWVudC4KIERlYnVnZ2VyIHdhcyBlbmFibGVkLgogU2V0IHRpbWVyIGZvciB0ZXN0IGZ1bmN0aW9u
LgogU2NyaXB0IGV4ZWN1dGlvbiBwYXVzZWQuCi1SZXN1bWVkIHNjcmlwdCBleGVjdXRpb24uCi1E
aXNhYmxlZCBkZWJ1Z2dlci4KK1NjcmlwdCBleGVjdXRpb24gcmVzdW1lZC4KK0RlYnVnZ2VyIHdh
cyBkaXNhYmxlZC4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2Vy
LXBhdXNlLW9uLWRlYnVnZ2VyLXN0YXRlbWVudC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2RlYnVnZ2VyLXBhdXNlLW9uLWRlYnVnZ2VyLXN0YXRlbWVudC5odG1sCmluZGV4IDc0MTk2Y2Eu
LmNiYjA0N2MgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1wYXVz
ZS1vbi1kZWJ1Z2dlci1zdGF0ZW1lbnQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
ZGVidWdnZXItcGF1c2Utb24tZGVidWdnZXItc3RhdGVtZW50Lmh0bWwKQEAgLTEsNDYgKzEsMzMg
QEAKIDxodG1sPgogPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
aW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL2RlYnVnZ2VyLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0Mi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItdGVzdDIuanMiPjwvc2NyaXB0
PgogPHNjcmlwdD4KIAotZnVuY3Rpb24gdGVzdEZ1bmN0aW9uKCkgewotICAgIGRlYnVnZ2VyOwot
ICAgIG5vdGlmeURvbmUoKTsKLX0KLQotZnVuY3Rpb24gZG9pdCgpCitmdW5jdGlvbiB0ZXN0RnVu
Y3Rpb24oKQogewotICAgIGV2YWx1YXRlSW5XZWJJbnNwZWN0b3IoImZyb250ZW5kX3Rlc3RQYXVz
ZU9uRGVidWdnZXJTdGF0ZW1lbnQiLCBkdW1wQXJyYXkpOworICAgIGRlYnVnZ2VyOwogfQogCi1m
dW5jdGlvbiBmcm9udGVuZF90ZXN0UGF1c2VPbkRlYnVnZ2VyU3RhdGVtZW50KHRlc3RDb250cm9s
bGVyKQordmFyIHRlc3QgPSBmdW5jdGlvbigpCiB7Ci0gICAgdGVzdENvbnRyb2xsZXIud2FpdFVu
dGlsRG9uZSgpOwotCi0gICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCgic2NyaXB0cyIpOwotICAg
IGZyb250ZW5kX2Vuc3VyZURlYnVnZ2VyRW5hYmxlZChkZWJ1Z2dlcldhc0VuYWJsZWRDYWxsYmFj
ayk7CisgICAgSW5zcGVjdG9yVGVzdC5zdGFydERlYnVnZ2VyVGVzdChzdGVwMSk7CiAKLSAgICBm
dW5jdGlvbiBkZWJ1Z2dlcldhc0VuYWJsZWRDYWxsYmFjaygpCisgICAgZnVuY3Rpb24gc3RlcDEo
KQogICAgIHsKLSAgICAgICAgdGVzdENvbnRyb2xsZXIucmVzdWx0cy5wdXNoKCJEZWJ1Z2dlciB3
YXMgZW5hYmxlZC4iKTsKLSAgICAgICAgZnJvbnRlbmRfZXZhbHVhdGVJbkNvbnNvbGUoInNldFRp
bWVvdXQodGVzdEZ1bmN0aW9uLCAwKSIsIGZ1bmN0aW9uKHJlc3VsdCkKLSAgICAgICAgewotICAg
ICAgICAgICAgdGVzdENvbnRyb2xsZXIucmVzdWx0cy5wdXNoKCJTZXQgdGltZXIgZm9yIHRlc3Qg
ZnVuY3Rpb24uIik7Ci0gICAgICAgIH0pOworICAgICAgICBJbnNwZWN0b3JUZXN0LnJ1blRlc3RG
dW5jdGlvbkFuZFdhaXRVbnRpbFBhdXNlZChzdGVwMik7CiAgICAgfQogCi0gICAgZnJvbnRlbmRf
YWRkU25pZmZlcihXZWJJbnNwZWN0b3IsICJwYXVzZWRTY3JpcHQiLCBmdW5jdGlvbihjYWxsRnJh
bWVzKQorICAgIGZ1bmN0aW9uIHN0ZXAyKCkKICAgICB7Ci0gICAgICAgIHRlc3RDb250cm9sbGVy
LnJlc3VsdHMucHVzaCgiU2NyaXB0IGV4ZWN1dGlvbiBwYXVzZWQuIik7Ci0gICAgICAgIGZyb250
ZW5kX2NvbXBsZXRlRGVidWdnZXJUZXN0KHRlc3RDb250cm9sbGVyKTsKLSAgICB9KTsKKyAgICAg
ICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZURlYnVnZ2VyVGVzdCgpOworICAgIH0KIH0KIAogPC9z
Y3JpcHQ+CiA8L2hlYWQ+CiAKLTxib2R5IG9ubG9hZD0ib25sb2FkKCkiPgorPGJvZHkgb25sb2Fk
PSJydW5UZXN0KCkiPgogPHA+CiBUZXN0cyB0aGF0IGRlYnVnZ2VyIHdpbGwgc3RvcCBvbiAiZGVi
dWdnZXIiIHN0YXRlbWVudC4KIDwvcD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9kZWJ1Z2dlci1wcm90by1wcm9wZXJ0eS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZGVidWdnZXItcHJvdG8tcHJvcGVydHktZXhwZWN0ZWQudHh0CmluZGV4IGNmMmVjYWEu
LjAwMTk2YzggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1wcm90
by1wcm9wZXJ0eS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVn
Z2VyLXByb3RvLXByb3BlcnR5LWV4cGVjdGVkLnR4dApAQCAtNSw2ICs1LDYgQEAgU2V0IHRpbWVy
IGZvciB0ZXN0IGZ1bmN0aW9uLgogU2NyaXB0IGV4ZWN1dGlvbiBwYXVzZWQuCiBFeHBhbmRlZCBw
cm9wZXJ0eTogby5fX3Byb3RvX18uX19wcm90b19fCiBFeHBhbmRlZCBwcm9wZXJ0eTogZC5fX3By
b3RvX18uX19wcm90b19fLl9fcHJvdG9fXy5fX3Byb3RvX18uX19wcm90b19fCi1SZXN1bWVkIHNj
cmlwdCBleGVjdXRpb24uCi1EaXNhYmxlZCBkZWJ1Z2dlci4KK1NjcmlwdCBleGVjdXRpb24gcmVz
dW1lZC4KK0RlYnVnZ2VyIHdhcyBkaXNhYmxlZC4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2RlYnVnZ2VyLXByb3RvLXByb3BlcnR5Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZGVidWdnZXItcHJvdG8tcHJvcGVydHkuaHRtbAppbmRleCA1MWE3NDY2Li4yOGVmMTBh
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItcHJvdG8tcHJvcGVy
dHkuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItcHJvdG8tcHJvcGVy
dHkuaHRtbApAQCAtMSwxMDggKzEsNTQgQEAKIDxodG1sPgogPGhlYWQ+Ci08c2NyaXB0IHNyYz0i
Li4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgotPHNj
cmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXRlc3QuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0
Mi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvZGVi
dWdnZXItdGVzdDIuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KIAotZnVuY3Rpb24gQygpIHsKK2Z1
bmN0aW9uIEMoKQorewogfQorCiBDLnByb3RvdHlwZSA9IHsKICAgICBtOiBmdW5jdGlvbigpIHsg
fQogfQogCi1mdW5jdGlvbiB0ZXN0RnVuY3Rpb24oKSB7CitmdW5jdGlvbiB0ZXN0RnVuY3Rpb24o
KQorewogICAgIHZhciBvID0gbmV3IEMoKTsKICAgICB2YXIgZCA9IGRvY3VtZW50LmRvY3VtZW50
RWxlbWVudDsKICAgICBkZWJ1Z2dlcjsKLSAgICBub3RpZnlEb25lKCk7CiB9CiAKLWZ1bmN0aW9u
IGRvaXQoKQordmFyIHRlc3QgPSBmdW5jdGlvbigpCiB7Ci0gICAgZXZhbHVhdGVJbldlYkluc3Bl
Y3RvcigiZnJvbnRlbmRfdGVzdFByb3RvUHJvcGVydHlPblBhdXNlIiwgZHVtcEFycmF5KTsKLX0K
KyAgICBJbnNwZWN0b3JUZXN0LnN0YXJ0RGVidWdnZXJUZXN0KHN0ZXAxKTsKIAotZnVuY3Rpb24g
ZnJvbnRlbmRfdGVzdFByb3RvUHJvcGVydHlPblBhdXNlKHRlc3RDb250cm9sbGVyKQotewotICAg
IHRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLQotICAgIFdlYkluc3BlY3Rvci5zaG93
UGFuZWwoInNjcmlwdHMiKTsKLSAgICBmcm9udGVuZF9lbnN1cmVEZWJ1Z2dlckVuYWJsZWQoZGVi
dWdnZXJXYXNFbmFibGVkQ2FsbGJhY2spOwotCi0gICAgZnVuY3Rpb24gZGVidWdnZXJXYXNFbmFi
bGVkQ2FsbGJhY2soKQorICAgIGZ1bmN0aW9uIHN0ZXAxKCkKICAgICB7Ci0gICAgICAgIHRlc3RD
b250cm9sbGVyLnJlc3VsdHMucHVzaCgiRGVidWdnZXIgd2FzIGVuYWJsZWQuIik7Ci0gICAgICAg
IGZyb250ZW5kX2V2YWx1YXRlSW5Db25zb2xlKCJzZXRUaW1lb3V0KHRlc3RGdW5jdGlvbiwgMCki
LCBmdW5jdGlvbihyZXN1bHQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRlc3RDb250cm9sbGVy
LnJlc3VsdHMucHVzaCgiU2V0IHRpbWVyIGZvciB0ZXN0IGZ1bmN0aW9uLiIpOwotICAgICAgICB9
KTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5ydW5UZXN0RnVuY3Rpb25BbmRXYWl0VW50aWxQYXVz
ZWQoc3RlcDIpOwogICAgIH0KIAotICAgIGZyb250ZW5kX2FkZFNuaWZmZXIoV2ViSW5zcGVjdG9y
LCAicGF1c2VkU2NyaXB0IiwgZnVuY3Rpb24oY2FsbEZyYW1lcykKKyAgICBmdW5jdGlvbiBzdGVw
MihjYWxsRnJhbWVzKQogICAgIHsKLSAgICAgICAgdGVzdENvbnRyb2xsZXIucmVzdWx0cy5wdXNo
KCJTY3JpcHQgZXhlY3V0aW9uIHBhdXNlZC4iKTsKICAgICAgICAgdmFyIHNlY3Rpb25zID0gV2Vi
SW5zcGVjdG9yLmN1cnJlbnRQYW5lbC5zaWRlYmFyUGFuZXMuc2NvcGVjaGFpbi5zZWN0aW9uczsK
ICAgICAgICAgdmFyIGxvY2FsU2NvcGUgPSBzZWN0aW9uc1swXS5wcm9wZXJ0aWVzVHJlZU91dGxp
bmU7CiAgICAgICAgIHZhciBwcm9wZXJ0aWVzID0gWwogICAgICAgICAgICAgbG9jYWxTY29wZSwg
WyJvIiwgIl9fcHJvdG9fXyIsICJfX3Byb3RvX18iXSwKICAgICAgICAgICAgIGxvY2FsU2NvcGUs
IFsiZCIsICJfX3Byb3RvX18iLCAiX19wcm90b19fIiwgIl9fcHJvdG9fXyIsICJfX3Byb3RvX18i
LCAiX19wcm90b19fIl0KICAgICAgICAgXTsKLSAgICAgICAgZnJvbnRlbmRfZXhwYW5kUHJvcGVy
dGllcyh0ZXN0Q29udHJvbGxlciwgcHJvcGVydGllcywgZnJvbnRlbmRfY29tcGxldGVEZWJ1Z2dl
clRlc3QuYmluZChudWxsLCB0ZXN0Q29udHJvbGxlcikpOwotICAgIH0pOwotfQotCi1mdW5jdGlv
biBmcm9udGVuZF9leHBhbmRQcm9wZXJ0aWVzKHRlc3RDb250cm9sbGVyLCBwcm9wZXJ0aWVzLCBj
YWxsYmFjaykKLXsKLSAgICB2YXIgaW5kZXggPSAwOwotICAgIGZ1bmN0aW9uIGV4cGFuZE5leHRQ
YXRoKCkKLSAgICB7Ci0gICAgICAgIGlmIChpbmRleCA9PT0gcHJvcGVydGllcy5sZW5ndGgpIHsK
LSAgICAgICAgICAgIGNhbGxiYWNrKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0K
LSAgICAgICAgdmFyIHBhcmVudFRyZWVFbGVtZW50ID0gcHJvcGVydGllc1tpbmRleCsrXTsKLSAg
ICAgICAgdmFyIHBhdGggPSBwcm9wZXJ0aWVzW2luZGV4KytdOwotICAgICAgICBmcm9udGVuZF9l
eHBhbmRQcm9wZXJ0eSh0ZXN0Q29udHJvbGxlciwgcGFyZW50VHJlZUVsZW1lbnQsIHBhdGgsIDAs
IGV4cGFuZE5leHRQYXRoKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBhbmRQcm9wZXJ0aWVz
KHByb3BlcnRpZXMsIHN0ZXAzKTsKICAgICB9Ci0gICAgdGVzdENvbnRyb2xsZXIucnVuQWZ0ZXJQ
ZW5kaW5nRGlzcGF0Y2hlcyhleHBhbmROZXh0UGF0aCk7Ci19CiAKLWZ1bmN0aW9uIGZyb250ZW5k
X2V4cGFuZFByb3BlcnR5KHRlc3RDb250cm9sbGVyLCBwYXJlbnRUcmVlRWxlbWVudCwgcGF0aCwg
cGF0aEluZGV4LCBjYWxsYmFjaykKLXsKLSAgICBpZiAocGF0aEluZGV4ID09PSBwYXRoLmxlbmd0
aCkgewotICAgICAgICB0ZXN0Q29udHJvbGxlci5yZXN1bHRzLnB1c2goIkV4cGFuZGVkIHByb3Bl
cnR5OiAiICsgcGF0aC5qb2luKCIuIikpOwotICAgICAgICBjYWxsYmFjaygpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotICAgIHZhciBuYW1lID0gcGF0aFtwYXRoSW5kZXgrK107Ci0gICAgdmFy
IHByb3BlcnR5VHJlZUVsZW1lbnQgPSBmcm9udGVuZF9maW5kQ2hpbGRQcm9wZXJ0eVRyZWVFbGVt
ZW50KHBhcmVudFRyZWVFbGVtZW50LCBuYW1lKTsKLSAgICBpZiAoIXByb3BlcnR5VHJlZUVsZW1l
bnQpIHsKLSAgICAgICB0ZXN0Q29udHJvbGxlci5yZXN1bHRzLnB1c2goIkZhaWxlZCB0byBleHBh
bmQgcHJvcGVydHk6ICIgKyBwYXRoLnNsaWNlKDAsIHBhdGhJbmRleCkuam9pbigiLiIpKTsKLSAg
ICAgICB0ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Ci0gICAgICAgcmV0dXJuOwotICAgIH0K
LSAgICBwcm9wZXJ0eVRyZWVFbGVtZW50LmV4cGFuZCgpOwotICAgIHRlc3RDb250cm9sbGVyLnJ1
bkFmdGVyUGVuZGluZ0Rpc3BhdGNoZXMoZnVuY3Rpb24oKQorICAgIGZ1bmN0aW9uIHN0ZXAzKCkK
ICAgICB7Ci0gICAgICAgIGZyb250ZW5kX2V4cGFuZFByb3BlcnR5KHRlc3RDb250cm9sbGVyLCBw
cm9wZXJ0eVRyZWVFbGVtZW50LCBwYXRoLCBwYXRoSW5kZXgsIGNhbGxiYWNrKTsKLSAgICB9KTsK
LX0KLQotZnVuY3Rpb24gZnJvbnRlbmRfZmluZENoaWxkUHJvcGVydHlUcmVlRWxlbWVudChwYXJl
bnQsIGNoaWxkTmFtZSkKLXsKLSAgICB2YXIgY2hpbGRyZW4gPSBwYXJlbnQuY2hpbGRyZW47Ci0g
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykgewotICAgICAgICB2
YXIgdHJlZUVsZW1lbnQgPSBjaGlsZHJlbltpXTsKLSAgICAgICAgdmFyIHByb3BlcnR5ID0gdHJl
ZUVsZW1lbnQucHJvcGVydHk7Ci0gICAgICAgIGlmIChwcm9wZXJ0eS5uYW1lID09PSBjaGlsZE5h
bWUpCi0gICAgICAgICAgICByZXR1cm4gdHJlZUVsZW1lbnQ7CisgICAgICAgIEluc3BlY3RvclRl
c3QuY29tcGxldGVEZWJ1Z2dlclRlc3QoKTsKICAgICB9CiB9CiAKIDwvc2NyaXB0PgogPC9oZWFk
PgogCi08Ym9keSBvbmxvYWQ9Im9ubG9hZCgpIj4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4K
IDxwPgogVGVzdHMgdGhhdCBvYmplY3QncyBfX3Byb3RvX18gcHJvcGVydHkgaXMgcHJlc2VudCBp
biBvYmplY3QgcHJvcGVydGllcyBzZWN0aW9uIHdoZW4KIHNjcmlwdCBpcyBwYXVzZWQgb24gYSBi
cmVha3BvaW50LjxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD00MTIxNCI+QnVnIDQxMjE0PC9hPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2RlYnVnZ2VyLXN0ZXAtaW4tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Rl
YnVnZ2VyLXN0ZXAtaW4tZXhwZWN0ZWQudHh0CmluZGV4IDc4NzcxYWUuLjYzOWUyMDggMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1zdGVwLWluLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItc3RlcC1pbi1leHBlY3RlZC50
eHQKQEAgLTQsMTYgKzQsMTggQEAgRGVidWdnZXIgd2FzIGVuYWJsZWQuCiBTZXQgdGltZXIgZm9y
IHRlc3QgZnVuY3Rpb24uCiBTY3JpcHQgZXhlY3V0aW9uIHBhdXNlZC4KIENhbGwgc3RhY2s6Ci0g
ICAgMCkgdGVzdEZ1bmN0aW9uIChkZWJ1Z2dlci1zdGVwLWluLmh0bWw6MTIpCisgICAgMCkgdGVz
dEZ1bmN0aW9uIChkZWJ1Z2dlci1zdGVwLWluLmh0bWw6MTQpCiBTdGVwcGluZyBpbnRvLi4uCitT
Y3JpcHQgZXhlY3V0aW9uIHJlc3VtZWQuCiBTY3JpcHQgZXhlY3V0aW9uIHBhdXNlZC4KIENhbGwg
c3RhY2s6Ci0gICAgMCkgdGVzdEZ1bmN0aW9uIChkZWJ1Z2dlci1zdGVwLWluLmh0bWw6MTMpCisg
ICAgMCkgdGVzdEZ1bmN0aW9uIChkZWJ1Z2dlci1zdGVwLWluLmh0bWw6MTUpCiBTdGVwcGluZyBp
bnRvLi4uCitTY3JpcHQgZXhlY3V0aW9uIHJlc3VtZWQuCiBTY3JpcHQgZXhlY3V0aW9uIHBhdXNl
ZC4KIENhbGwgc3RhY2s6Ci0gICAgMCkgZCAoZGVidWdnZXItc3RlcC1pbi5odG1sOjcpCi0gICAg
MSkgdGVzdEZ1bmN0aW9uIChkZWJ1Z2dlci1zdGVwLWluLmh0bWw6MTMpCi1SZXN1bWVkIHNjcmlw
dCBleGVjdXRpb24uCi1EaXNhYmxlZCBkZWJ1Z2dlci4KKyAgICAwKSBkIChkZWJ1Z2dlci1zdGVw
LWluLmh0bWw6OCkKKyAgICAxKSB0ZXN0RnVuY3Rpb24gKGRlYnVnZ2VyLXN0ZXAtaW4uaHRtbDox
NSkKK1NjcmlwdCBleGVjdXRpb24gcmVzdW1lZC4KK0RlYnVnZ2VyIHdhcyBkaXNhYmxlZC4KIApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXN0ZXAtaW4uaHRtbCBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1zdGVwLWluLmh0bWwKaW5kZXggMzM2YTZl
Ni4uMjU5M2M5MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXN0
ZXAtaW4uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItc3RlcC1pbi5o
dG1sCkBAIC0xLDU5ICsxLDQ3IEBACiA8aHRtbD4KIDxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQg
c3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci10ZXN0LmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdDIuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2Vy
LXRlc3QyLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+CiAKLWZ1bmN0aW9uIGQoKSB7CitmdW5jdGlv
biBkKCkKK3sKICAgICB2YXIgaSA9IDEwOwogfQogCi1mdW5jdGlvbiB0ZXN0RnVuY3Rpb24oKSB7
CitmdW5jdGlvbiB0ZXN0RnVuY3Rpb24oKQorewogICAgIGRlYnVnZ2VyOwogICAgIGQoKTsKLSAg
ICBub3RpZnlEb25lKCk7CiB9CiAKLWZ1bmN0aW9uIGRvaXQoKQordmFyIHRlc3QgPSBmdW5jdGlv
bigpCiB7Ci0gICAgZXZhbHVhdGVJbldlYkluc3BlY3RvcigiZnJvbnRlbmRfdGVzdFN0ZXBJbiIs
IGR1bXBBcnJheSk7Ci19CisgICAgSW5zcGVjdG9yVGVzdC5zdGFydERlYnVnZ2VyVGVzdChzdGVw
MSk7CiAKLWZ1bmN0aW9uIGZyb250ZW5kX3Rlc3RTdGVwSW4odGVzdENvbnRyb2xsZXIpCi17Ci0g
ICAgdGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotCi0gICAgV2ViSW5zcGVjdG9yLnNo
b3dQYW5lbCgic2NyaXB0cyIpOwotICAgIGZyb250ZW5kX2Vuc3VyZURlYnVnZ2VyRW5hYmxlZChk
ZWJ1Z2dlcldhc0VuYWJsZWRDYWxsYmFjayk7Ci0KLSAgICBmdW5jdGlvbiBkZWJ1Z2dlcldhc0Vu
YWJsZWRDYWxsYmFjaygpCisgICAgZnVuY3Rpb24gc3RlcDEoKQogICAgIHsKLSAgICAgICAgdGVz
dENvbnRyb2xsZXIucmVzdWx0cy5wdXNoKCJEZWJ1Z2dlciB3YXMgZW5hYmxlZC4iKTsKLSAgICAg
ICAgZnJvbnRlbmRfZXZhbHVhdGVJbkNvbnNvbGUoInNldFRpbWVvdXQodGVzdEZ1bmN0aW9uLCAw
KSIsIGZ1bmN0aW9uKHJlc3VsdCkKLSAgICAgICAgewotICAgICAgICAgICAgdGVzdENvbnRyb2xs
ZXIucmVzdWx0cy5wdXNoKCJTZXQgdGltZXIgZm9yIHRlc3QgZnVuY3Rpb24uIik7Ci0gICAgICAg
IH0pOworICAgICAgICBJbnNwZWN0b3JUZXN0LnJ1blRlc3RGdW5jdGlvbkFuZFdhaXRVbnRpbFBh
dXNlZChzdGVwMik7CiAgICAgfQogCiAgICAgdmFyIHN0ZXBDb3VudCA9IDA7Ci0gICAgZnJvbnRl
bmRfYWRkU25pZmZlcihXZWJJbnNwZWN0b3IsICJwYXVzZWRTY3JpcHQiLCBmdW5jdGlvbihjYWxs
RnJhbWVzKQorICAgIGZ1bmN0aW9uIHN0ZXAyKGNhbGxGcmFtZXMpCiAgICAgewotICAgICAgICB0
ZXN0Q29udHJvbGxlci5yZXN1bHRzLnB1c2goIlNjcmlwdCBleGVjdXRpb24gcGF1c2VkLiIpOwot
ICAgICAgICBmcm9udGVuZF9jYXB0dXJlU3RhY2tUcmFjZShjYWxsRnJhbWVzLCB0ZXN0Q29udHJv
bGxlcik7Ci0gICAgICAgIGlmIChzdGVwQ291bnQgPT0gMikKLSAgICAgICAgICAgIGZyb250ZW5k
X2NvbXBsZXRlRGVidWdnZXJUZXN0KHRlc3RDb250cm9sbGVyKTsKLSAgICAgICAgZWxzZSB7Ci0g
ICAgICAgICAgICB0ZXN0Q29udHJvbGxlci5yZXN1bHRzLnB1c2goIlN0ZXBwaW5nIGludG8uLi4i
KTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5jYXB0dXJlU3RhY2tUcmFjZShjYWxsRnJhbWVzKTsK
KyAgICAgICAgaWYgKHN0ZXBDb3VudCA8IDIpIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
YWRkUmVzdWx0KCJTdGVwcGluZyBpbnRvLi4uIik7CiAgICAgICAgICAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgic2NyaXB0cy1zdGVwLWludG8iKS5jbGljaygpOwotICAgICAgICB9CisgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LndhaXRVbnRpbFJlc3VtZWQoSW5zcGVjdG9yVGVzdC53YWl0
VW50aWxQYXVzZWQuYmluZChJbnNwZWN0b3JUZXN0LCBzdGVwMikpOworICAgICAgICB9IGVsc2UK
KyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVEZWJ1Z2dlclRlc3QoKTsKICAgICAg
ICAgc3RlcENvdW50Kys7Ci0gICAgfSwgdHJ1ZSk7CisgICAgfQogfQogCiA8L3NjcmlwdD4KIDwv
aGVhZD4KIAotPGJvZHkgb25sb2FkPSJvbmxvYWQoKSI+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3Qo
KSI+CiA8cD4KIFRlc3RzICJzdGVwIGluIiBmdW5jdGlvbmFsaXR5IGluIGRlYnVnZ2VyLgogPC9w
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXN0ZXAtb3V0LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1zdGVwLW91dC1leHBl
Y3RlZC50eHQKaW5kZXggMWQ4OTg5NC4uZGEyZDBjNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2RlYnVnZ2VyLXN0ZXAtb3V0LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZGVidWdnZXItc3RlcC1vdXQtZXhwZWN0ZWQudHh0CkBAIC00LDEyICs0LDEz
IEBAIERlYnVnZ2VyIHdhcyBlbmFibGVkLgogU2V0IHRpbWVyIGZvciB0ZXN0IGZ1bmN0aW9uLgog
U2NyaXB0IGV4ZWN1dGlvbiBwYXVzZWQuCiBDYWxsIHN0YWNrOgotICAgIDApIGQgKGRlYnVnZ2Vy
LXN0ZXAtb3V0Lmh0bWw6OCkKLSAgICAxKSB0ZXN0RnVuY3Rpb24gKGRlYnVnZ2VyLXN0ZXAtb3V0
Lmh0bWw6MTIpCisgICAgMCkgZCAoZGVidWdnZXItc3RlcC1vdXQuaHRtbDo5KQorICAgIDEpIHRl
c3RGdW5jdGlvbiAoZGVidWdnZXItc3RlcC1vdXQuaHRtbDoxNCkKIFN0ZXBwaW5nIG91dC4uLgor
U2NyaXB0IGV4ZWN1dGlvbiByZXN1bWVkLgogU2NyaXB0IGV4ZWN1dGlvbiBwYXVzZWQuCiBDYWxs
IHN0YWNrOgotICAgIDApIHRlc3RGdW5jdGlvbiAoZGVidWdnZXItc3RlcC1vdXQuaHRtbDoxMykK
LVJlc3VtZWQgc2NyaXB0IGV4ZWN1dGlvbi4KLURpc2FibGVkIGRlYnVnZ2VyLgorICAgIDApIHRl
c3RGdW5jdGlvbiAoZGVidWdnZXItc3RlcC1vdXQuaHRtbDoxNSkKK1NjcmlwdCBleGVjdXRpb24g
cmVzdW1lZC4KK0RlYnVnZ2VyIHdhcyBkaXNhYmxlZC4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXN0ZXAtb3V0Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZGVidWdnZXItc3RlcC1vdXQuaHRtbAppbmRleCAwMmZlYzFhLi44ZjAwYjE0IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItc3RlcC1vdXQuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItc3RlcC1vdXQuaHRtbApAQCAtMSw2MiArMSw0
NyBAQAogPGh0bWw+CiA8aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0
cy9pbnNwZWN0b3IvZGVidWdnZXItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
aHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QyLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci10ZXN0Mi5qcyI+PC9zY3Jp
cHQ+CiA8c2NyaXB0PgogCi1mdW5jdGlvbiBkKCkgeworZnVuY3Rpb24gZCgpCit7CiAgICAgZGVi
dWdnZXI7CiB9CiAKLWZ1bmN0aW9uIHRlc3RGdW5jdGlvbigpIHsKLSAgICBkKCk7Ci0gICAgbm90
aWZ5RG9uZSgpOwotfQotCi1mdW5jdGlvbiBkb2l0KCkKK2Z1bmN0aW9uIHRlc3RGdW5jdGlvbigp
CiB7Ci0gICAgZXZhbHVhdGVJbldlYkluc3BlY3RvcigiZnJvbnRlbmRfdGVzdFN0ZXBPdXQiLCBk
dW1wQXJyYXkpOworICAgIGQoKTsKIH0KIAotZnVuY3Rpb24gZnJvbnRlbmRfdGVzdFN0ZXBPdXQo
dGVzdENvbnRyb2xsZXIpCit2YXIgdGVzdCA9IGZ1bmN0aW9uKCkKIHsKLSAgICB0ZXN0Q29udHJv
bGxlci53YWl0VW50aWxEb25lKCk7CisgICAgSW5zcGVjdG9yVGVzdC5zdGFydERlYnVnZ2VyVGVz
dChzdGVwMSk7CiAKLSAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJzY3JpcHRzIik7Ci0gICAg
ZnJvbnRlbmRfZW5zdXJlRGVidWdnZXJFbmFibGVkKGRlYnVnZ2VyV2FzRW5hYmxlZENhbGxiYWNr
KTsKLQotICAgIGZ1bmN0aW9uIGRlYnVnZ2VyV2FzRW5hYmxlZENhbGxiYWNrKCkKKyAgICBmdW5j
dGlvbiBzdGVwMSgpCiAgICAgewotICAgICAgICB0ZXN0Q29udHJvbGxlci5yZXN1bHRzLnB1c2go
IkRlYnVnZ2VyIHdhcyBlbmFibGVkLiIpOwotICAgICAgICBmcm9udGVuZF9ldmFsdWF0ZUluQ29u
c29sZSgic2V0VGltZW91dCh0ZXN0RnVuY3Rpb24sIDApIiwgZnVuY3Rpb24ocmVzdWx0KQotICAg
ICAgICB7Ci0gICAgICAgICAgICB0ZXN0Q29udHJvbGxlci5yZXN1bHRzLnB1c2goIlNldCB0aW1l
ciBmb3IgdGVzdCBmdW5jdGlvbi4iKTsKLSAgICAgICAgfSk7CisgICAgICAgIEluc3BlY3RvclRl
c3QucnVuVGVzdEZ1bmN0aW9uQW5kV2FpdFVudGlsUGF1c2VkKHN0ZXAyKTsKICAgICB9CiAKLSAg
ICBmcm9udGVuZF9hZGRTbmlmZmVyKFdlYkluc3BlY3RvciwgInBhdXNlZFNjcmlwdCIsIGZ1bmN0
aW9uKGNhbGxGcmFtZXMpCisgICAgZnVuY3Rpb24gc3RlcDIoY2FsbEZyYW1lcykKICAgICB7Ci0g
ICAgICAgIHRlc3RDb250cm9sbGVyLnJlc3VsdHMucHVzaCgiU2NyaXB0IGV4ZWN1dGlvbiBwYXVz
ZWQuIik7Ci0gICAgICAgIGZyb250ZW5kX2NhcHR1cmVTdGFja1RyYWNlKGNhbGxGcmFtZXMsIHRl
c3RDb250cm9sbGVyKTsKLSAgICAgICAgdGVzdFN0ZXBPdXQoKTsKLSAgICB9KTsKLQotICAgIGZ1
bmN0aW9uIHRlc3RTdGVwT3V0KCkgewotICAgICAgICBmcm9udGVuZF9hZGRTbmlmZmVyKFdlYklu
c3BlY3RvciwgInBhdXNlZFNjcmlwdCIsIGZ1bmN0aW9uKGNhbGxGcmFtZXMpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIHRlc3RDb250cm9sbGVyLnJlc3VsdHMucHVzaCgiU2NyaXB0IGV4ZWN1dGlv
biBwYXVzZWQuIik7Ci0gICAgICAgICAgICBmcm9udGVuZF9jYXB0dXJlU3RhY2tUcmFjZShjYWxs
RnJhbWVzLCB0ZXN0Q29udHJvbGxlcik7Ci0gICAgICAgICAgICBmcm9udGVuZF9jb21wbGV0ZURl
YnVnZ2VyVGVzdCh0ZXN0Q29udHJvbGxlcik7Ci0gICAgICAgIH0pOwotICAgICAgICB0ZXN0Q29u
dHJvbGxlci5yZXN1bHRzLnB1c2goIlN0ZXBwaW5nIG91dC4uLiIpOworICAgICAgICBJbnNwZWN0
b3JUZXN0LmNhcHR1cmVTdGFja1RyYWNlKGNhbGxGcmFtZXMpOworICAgICAgICBJbnNwZWN0b3JU
ZXN0LmFkZFJlc3VsdCgiU3RlcHBpbmcgb3V0Li4uIik7CisgICAgICAgIEluc3BlY3RvclRlc3Qu
d2FpdFVudGlsUmVzdW1lZChJbnNwZWN0b3JUZXN0LndhaXRVbnRpbFBhdXNlZC5iaW5kKEluc3Bl
Y3RvclRlc3QsIHN0ZXAzKSk7CiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzY3Jp
cHRzLXN0ZXAtb3V0IikuY2xpY2soKTsKICAgICB9CisKKyAgICBmdW5jdGlvbiBzdGVwMyhjYWxs
RnJhbWVzKQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5jYXB0dXJlU3RhY2tUcmFjZShj
YWxsRnJhbWVzKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZURlYnVnZ2VyVGVzdCgp
OworICAgIH0KIH0KIAogPC9zY3JpcHQ+CiA8L2hlYWQ+CiAKLTxib2R5IG9ubG9hZD0ib25sb2Fk
KCkiPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgogPHA+CiBUZXN0cyAic3RlcCBvdXQiIGZ1
bmN0aW9uYWxpdHkgaW4gZGVidWdnZXIuCiA8L3A+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZGVidWdnZXItc3RlcC1vdmVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9kZWJ1Z2dlci1zdGVwLW92ZXItZXhwZWN0ZWQudHh0CmluZGV4IDhiNzA0ODguLjg2
OTQzYTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1zdGVwLW92
ZXItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1zdGVw
LW92ZXItZXhwZWN0ZWQudHh0CkBAIC00LDE4ICs0LDIwIEBAIERlYnVnZ2VyIHdhcyBlbmFibGVk
LgogU2V0IHRpbWVyIGZvciB0ZXN0IGZ1bmN0aW9uLgogU2NyaXB0IGV4ZWN1dGlvbiBwYXVzZWQu
CiBDYWxsIHN0YWNrOgotICAgIDApIGQgKGRlYnVnZ2VyLXN0ZXAtb3Zlci5odG1sOjEyKQotICAg
IDEpIHRlc3RGdW5jdGlvbiAoZGVidWdnZXItc3RlcC1vdmVyLmh0bWw6MTcpCisgICAgMCkgZCAo
ZGVidWdnZXItc3RlcC1vdmVyLmh0bWw6MTQpCisgICAgMSkgdGVzdEZ1bmN0aW9uIChkZWJ1Z2dl
ci1zdGVwLW92ZXIuaHRtbDoyMCkKIFN0ZXBwaW5nIG92ZXIuLi4KK1NjcmlwdCBleGVjdXRpb24g
cmVzdW1lZC4KIFNjcmlwdCBleGVjdXRpb24gcGF1c2VkLgogQ2FsbCBzdGFjazoKLSAgICAwKSBk
IChkZWJ1Z2dlci1zdGVwLW92ZXIuaHRtbDoxMykKLSAgICAxKSB0ZXN0RnVuY3Rpb24gKGRlYnVn
Z2VyLXN0ZXAtb3Zlci5odG1sOjE3KQorICAgIDApIGQgKGRlYnVnZ2VyLXN0ZXAtb3Zlci5odG1s
OjE1KQorICAgIDEpIHRlc3RGdW5jdGlvbiAoZGVidWdnZXItc3RlcC1vdmVyLmh0bWw6MjApCiBT
dGVwcGluZyBvdmVyLi4uCitTY3JpcHQgZXhlY3V0aW9uIHJlc3VtZWQuCiBTY3JpcHQgZXhlY3V0
aW9uIHBhdXNlZC4KIENhbGwgc3RhY2s6Ci0gICAgMCkgZCAoZGVidWdnZXItc3RlcC1vdmVyLmh0
bWw6MTQpCi0gICAgMSkgdGVzdEZ1bmN0aW9uIChkZWJ1Z2dlci1zdGVwLW92ZXIuaHRtbDoxNykK
LVJlc3VtZWQgc2NyaXB0IGV4ZWN1dGlvbi4KLURpc2FibGVkIGRlYnVnZ2VyLgorICAgIDApIGQg
KGRlYnVnZ2VyLXN0ZXAtb3Zlci5odG1sOjE2KQorICAgIDEpIHRlc3RGdW5jdGlvbiAoZGVidWdn
ZXItc3RlcC1vdmVyLmh0bWw6MjApCitTY3JpcHQgZXhlY3V0aW9uIHJlc3VtZWQuCitEZWJ1Z2dl
ciB3YXMgZGlzYWJsZWQuCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1
Z2dlci1zdGVwLW92ZXIuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1zdGVw
LW92ZXIuaHRtbAppbmRleCA4ZGI0YTlmLi5iMjNkZTA1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZGVidWdnZXItc3RlcC1vdmVyLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2RlYnVnZ2VyLXN0ZXAtb3Zlci5odG1sCkBAIC0xLDYzICsxLDUyIEBACiA8aHRtbD4K
IDxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10
ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9k
ZWJ1Z2dlci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9pbnNwZWN0b3ItdGVzdDIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXRlc3QyLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+
CiAKLWZ1bmN0aW9uIGYoKSB7CitmdW5jdGlvbiBmKCkKK3sKICAgICB2YXIgaSA9IDEwOwogfQog
Ci1mdW5jdGlvbiBkKCkgeworZnVuY3Rpb24gZCgpCit7CiAgICAgZGVidWdnZXI7CiAgICAgZigp
OwogfQogCi1mdW5jdGlvbiB0ZXN0RnVuY3Rpb24oKSB7Ci0gICAgZCgpOwotICAgIG5vdGlmeURv
bmUoKTsKLX0KLQotZnVuY3Rpb24gZG9pdCgpCitmdW5jdGlvbiB0ZXN0RnVuY3Rpb24oKQogewot
ICAgIGV2YWx1YXRlSW5XZWJJbnNwZWN0b3IoImZyb250ZW5kX3Rlc3RTdGVwSW4iLCBkdW1wQXJy
YXkpOworICAgIGQoKTsKIH0KIAotZnVuY3Rpb24gZnJvbnRlbmRfdGVzdFN0ZXBJbih0ZXN0Q29u
dHJvbGxlcikKK3ZhciB0ZXN0ID0gZnVuY3Rpb24oKQogewotICAgIHRlc3RDb250cm9sbGVyLndh
aXRVbnRpbERvbmUoKTsKKyAgICBJbnNwZWN0b3JUZXN0LnN0YXJ0RGVidWdnZXJUZXN0KHN0ZXAx
KTsKIAotICAgIFdlYkluc3BlY3Rvci5zaG93UGFuZWwoInNjcmlwdHMiKTsKLSAgICBmcm9udGVu
ZF9lbnN1cmVEZWJ1Z2dlckVuYWJsZWQoZGVidWdnZXJXYXNFbmFibGVkQ2FsbGJhY2spOwotCi0g
ICAgZnVuY3Rpb24gZGVidWdnZXJXYXNFbmFibGVkQ2FsbGJhY2soKQorICAgIGZ1bmN0aW9uIHN0
ZXAxKCkKICAgICB7Ci0gICAgICAgIHRlc3RDb250cm9sbGVyLnJlc3VsdHMucHVzaCgiRGVidWdn
ZXIgd2FzIGVuYWJsZWQuIik7Ci0gICAgICAgIGZyb250ZW5kX2V2YWx1YXRlSW5Db25zb2xlKCJz
ZXRUaW1lb3V0KHRlc3RGdW5jdGlvbiwgMCkiLCBmdW5jdGlvbihyZXN1bHQpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIHRlc3RDb250cm9sbGVyLnJlc3VsdHMucHVzaCgiU2V0IHRpbWVyIGZvciB0
ZXN0IGZ1bmN0aW9uLiIpOwotICAgICAgICB9KTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5ydW5U
ZXN0RnVuY3Rpb25BbmRXYWl0VW50aWxQYXVzZWQoc3RlcDIpOwogICAgIH0KIAogICAgIHZhciBz
dGVwQ291bnQgPSAwOwotICAgIGZyb250ZW5kX2FkZFNuaWZmZXIoV2ViSW5zcGVjdG9yLCAicGF1
c2VkU2NyaXB0IiwgZnVuY3Rpb24oY2FsbEZyYW1lcykKKyAgICBmdW5jdGlvbiBzdGVwMihjYWxs
RnJhbWVzKQogICAgIHsKLSAgICAgICAgdGVzdENvbnRyb2xsZXIucmVzdWx0cy5wdXNoKCJTY3Jp
cHQgZXhlY3V0aW9uIHBhdXNlZC4iKTsKLSAgICAgICAgZnJvbnRlbmRfY2FwdHVyZVN0YWNrVHJh
Y2UoY2FsbEZyYW1lcywgdGVzdENvbnRyb2xsZXIpOwotICAgICAgICBpZiAoc3RlcENvdW50ID09
IDIpCi0gICAgICAgICAgICBmcm9udGVuZF9jb21wbGV0ZURlYnVnZ2VyVGVzdCh0ZXN0Q29udHJv
bGxlcik7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgdGVzdENvbnRyb2xsZXIucmVzdWx0
cy5wdXNoKCJTdGVwcGluZyBvdmVyLi4uIik7CisgICAgICAgIEluc3BlY3RvclRlc3QuY2FwdHVy
ZVN0YWNrVHJhY2UoY2FsbEZyYW1lcyk7CisgICAgICAgIGlmIChzdGVwQ291bnQgPCAyKSB7Cisg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiU3RlcHBpbmcgb3Zlci4uLiIpOwog
ICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNjcmlwdHMtc3RlcC1vdmVyIiku
Y2xpY2soKTsKLSAgICAgICAgfQorICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC53YWl0VW50aWxS
ZXN1bWVkKEluc3BlY3RvclRlc3Qud2FpdFVudGlsUGF1c2VkLmJpbmQoSW5zcGVjdG9yVGVzdCwg
c3RlcDIpKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBs
ZXRlRGVidWdnZXJUZXN0KCk7CiAgICAgICAgIHN0ZXBDb3VudCsrOwotICAgIH0sIHRydWUpOwor
ICAgIH0KIH0KIAogPC9zY3JpcHQ+CiA8L2hlYWQ+CiAKLTxib2R5IG9ubG9hZD0ib25sb2FkKCki
PgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgogPHA+CiBUZXN0cyAic3RlcCBvdmVyIiBmdW5j
dGlvbmFsaXR5IGluIGRlYnVnZ2VyLgogPC9wPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2RvbS1icmVha3BvaW50cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZG9tLWJyZWFrcG9pbnRzLWV4cGVjdGVkLnR4dAppbmRleCA5M2YxZTlmLi5jODViNzFlIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWJyZWFrcG9pbnRzLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWJyZWFrcG9pbnRzLWV4cGVjdGVk
LnR4dApAQCAtMywxMiArMywxOCBAQCBUZXN0cyBET00gYnJlYWtwb2ludHMuIEJ1ZyA0Mjg4Ngog
RGVidWdnZXIgd2FzIGVuYWJsZWQuCiBGb3VuZCBkb20gbm9kZSBkMC4KIFNldCBzdWJ0cmVlIG1v
ZGlmaWVkIERPTSBicmVha3BvaW50IG9uIGQwLgotUGF1c2VkIGF0IGxpbmUgMTEgaW4gYXBwZW5k
RWxlbWVudAorU2NyaXB0IGV4ZWN1dGlvbiBwYXVzZWQuCitsaW5lOiAxMSwgZnVuY3Rpb246IGFw
cGVuZEVsZW1lbnQKK1NjcmlwdCBleGVjdXRpb24gcmVzdW1lZC4KIEZvdW5kIGRvbSBub2RlIGQx
LgogU2V0IGF0dHJpYnV0ZSBtb2RpZmllZCBET00gYnJlYWtwb2ludCBvbiBkMS4KLVBhdXNlZCBh
dCBsaW5lIDE3IGluIG1vZGlmeUF0dHJpYnV0ZQorU2NyaXB0IGV4ZWN1dGlvbiBwYXVzZWQuCits
aW5lOiAxNywgZnVuY3Rpb246IG1vZGlmeUF0dHJpYnV0ZQorU2NyaXB0IGV4ZWN1dGlvbiByZXN1
bWVkLgogRm91bmQgZG9tIG5vZGUgZDEuCiBTZXQgbm9kZSByZW1vdmVkIERPTSBicmVha3BvaW50
IG9uIGQxLgotUGF1c2VkIGF0IGxpbmUgMjMgaW4gcmVtb3ZlRWxlbWVudAorU2NyaXB0IGV4ZWN1
dGlvbiBwYXVzZWQuCitsaW5lOiAyMywgZnVuY3Rpb246IHJlbW92ZUVsZW1lbnQKK1NjcmlwdCBl
eGVjdXRpb24gcmVzdW1lZC4KIERlYnVnZ2VyIHdhcyBkaXNhYmxlZC4KIApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1icmVha3BvaW50cy5odG1sIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2RvbS1icmVha3BvaW50cy5odG1sCmluZGV4IGZiYjY1MzIuLjFhZTMwZDcgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20tYnJlYWtwb2ludHMuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWJyZWFrcG9pbnRzLmh0bWwKQEAgLTQxLDExICs0
MSwxMSBAQCB2YXIgdGVzdCA9IGZ1bmN0aW9uKCkKICAgICAgICAgSW5zcGVjdG9yVGVzdC53YWl0
VW50aWxQYXVzZWQoc3RlcDMuYmluZChudWxsLCBub2RlKSk7CiAgICAgfQogCi0gICAgZnVuY3Rp
b24gc3RlcDMobm9kZSkKKyAgICBmdW5jdGlvbiBzdGVwMyhub2RlLCBjYWxsRnJhbWVzKQogICAg
IHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoImxpbmU6ICIgKyBjYWxsRnJhbWVz
WzBdLmxpbmUgKyAiLCBmdW5jdGlvbjogIiArIGNhbGxGcmFtZXNbMF0uZnVuY3Rpb25OYW1lKTsK
ICAgICAgICAgV2ViSW5zcGVjdG9yLmRvbUJyZWFrcG9pbnRNYW5hZ2VyLnJlbW92ZUJyZWFrcG9p
bnRzRm9yTm9kZShub2RlKTsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5yZXN1bWVFeGVjdXRpb24o
KTsKLSAgICAgICAgZmluZERPTU5vZGVCeUlkKCJkMSIsIHN0ZXA0KTsKKyAgICAgICAgSW5zcGVj
dG9yVGVzdC5yZXN1bWVFeGVjdXRpb24oZmluZERPTU5vZGVCeUlkLmJpbmQobnVsbCwgImQxIiwg
c3RlcDQpKTsKICAgICB9CiAKICAgICBmdW5jdGlvbiBzdGVwNChub2RlKQpAQCAtNTcsMTEgKzU3
LDExIEBAIHZhciB0ZXN0ID0gZnVuY3Rpb24oKQogICAgICAgICBJbnNwZWN0b3JUZXN0LndhaXRV
bnRpbFBhdXNlZChzdGVwNS5iaW5kKG51bGwsIG5vZGUpKTsKICAgICB9CiAKLSAgICBmdW5jdGlv
biBzdGVwNShub2RlKQorICAgIGZ1bmN0aW9uIHN0ZXA1KG5vZGUsIGNhbGxGcmFtZXMpCiAgICAg
eworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgibGluZTogIiArIGNhbGxGcmFtZXNb
MF0ubGluZSArICIsIGZ1bmN0aW9uOiAiICsgY2FsbEZyYW1lc1swXS5mdW5jdGlvbk5hbWUpOwog
ICAgICAgICBXZWJJbnNwZWN0b3IuZG9tQnJlYWtwb2ludE1hbmFnZXIucmVtb3ZlQnJlYWtwb2lu
dHNGb3JOb2RlKG5vZGUpOwotICAgICAgICBJbnNwZWN0b3JUZXN0LnJlc3VtZUV4ZWN1dGlvbigp
OwotICAgICAgICBmaW5kRE9NTm9kZUJ5SWQoImQxIiwgc3RlcDYpOworICAgICAgICBJbnNwZWN0
b3JUZXN0LnJlc3VtZUV4ZWN1dGlvbihmaW5kRE9NTm9kZUJ5SWQuYmluZChudWxsLCAiZDEiLCBz
dGVwNikpOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHN0ZXA2KG5vZGUpCkBAIC03Myw4ICs3Myw5
IEBAIHZhciB0ZXN0ID0gZnVuY3Rpb24oKQogICAgICAgICBJbnNwZWN0b3JUZXN0LndhaXRVbnRp
bFBhdXNlZChzdGVwNy5iaW5kKG51bGwsIG5vZGUpKTsKICAgICB9CiAKLSAgICBmdW5jdGlvbiBz
dGVwNyhub2RlKQorICAgIGZ1bmN0aW9uIHN0ZXA3KG5vZGUsIGNhbGxGcmFtZXMpCiAgICAgewor
ICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgibGluZTogIiArIGNhbGxGcmFtZXNbMF0u
bGluZSArICIsIGZ1bmN0aW9uOiAiICsgY2FsbEZyYW1lc1swXS5mdW5jdGlvbk5hbWUpOwogICAg
ICAgICBXZWJJbnNwZWN0b3IuZG9tQnJlYWtwb2ludE1hbmFnZXIucmVtb3ZlQnJlYWtwb2ludHNG
b3JOb2RlKG5vZGUpOwogICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlRGVidWdnZXJUZXN0
KCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMt
YXBpLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zLWFwaS1l
eHBlY3RlZC50eHQKaW5kZXggYzA3NDcxYi4uYTlmZDJlNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMtYXBpLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy1hcGktZXhwZWN0ZWQudHh0CkBAIC0xLDUgKzEsNiBAQAog
VGVzdHMgcHVibGljIGludGVyZmFjZSBvZiBXZWJJbnNwZWN0b3IgRXh0ZW5zaW9ucyBBUEkKIAor
UGFnZSByZWxvYWRlZC4KIFN0YXJ0ZWQgZXh0ZW5zaW9uLgogUnVubmluZyB0ZXN0cy4uLgogUlVO
TklORyBURVNUOiBleHRlbnNpb25fdGVzdEFQSQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2V4dGVuc2lvbnMtYXVkaXRzLWFwaS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZXh0ZW5zaW9ucy1hdWRpdHMtYXBpLWV4cGVjdGVkLnR4dAppbmRleCAxMDcyYWE1
Li45MjBiM2MzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy1h
dWRpdHMtYXBpLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5z
aW9ucy1hdWRpdHMtYXBpLWV4cGVjdGVkLnR4dApAQCAtMSw1ICsxLDYgQEAKIFRlc3RzIGF1ZGl0
cyBzdXBwb3J0IGluIFdlYkluc3BlY3RvciBFeHRlbnNpb25zIEFQSQogCitQYWdlIHJlbG9hZGVk
LgogU3RhcnRlZCBleHRlbnNpb24uCiBSdW5uaW5nIHRlc3RzLi4uCiBSVU5OSU5HIFRFU1Q6IGV4
dGVuc2lvbl90ZXN0QXVkaXRzQVBJCkBAIC0zMyw2ICszNCw2IEBAIGNhdGVnb3J5Lm9uQXVkaXRT
dGFydGVkIGZpcmVkLCByZXN1bHRzIGR1bXAgZm9sbG93czoKICAgICBleHBhbmRlZCA6IGZhbHNl
CiAgICAgYWRkQ2hpbGQgOiA8ZnVuY3Rpb24+CiB9Ci1BbGwgdGVzdHMgZG9uZS4KICAgRXh0ZW5z
aW9uIGF1ZGl0cworQWxsIHRlc3RzIGRvbmUuCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9leHRlbnNpb25zLWF1ZGl0cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZXh0ZW5zaW9ucy1hdWRpdHMtZXhwZWN0ZWQudHh0CmluZGV4IGExZWVlNzMuLmUyNWYz
MmMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zLWF1ZGl0cy1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMtYXVkaXRz
LWV4cGVjdGVkLnR4dApAQCAtMSwxMiArMSwxMiBAQAogVGVzdHMgYXVkaXRzIHN1cHBvcnQgaW4g
V2ViSW5zcGVjdG9yIEV4dGVuc2lvbnMgQVBJCiAKK1BhZ2UgcmVsb2FkZWQuCiBTdGFydGVkIGV4
dGVuc2lvbi4KIFJ1bm5pbmcgdGVzdHMuLi4KIFJVTk5JTkcgVEVTVDogZXh0ZW5zaW9uX3Rlc3RB
dWRpdHMKIEFkZGVkIGF1ZGl0IGNhdGVnb3J5LgogY2F0ZWdvcnkub25BdWRpdFN0YXJ0ZWQgZmly
ZWQKIGZhaWxlZENhdGVnb3J5Lm9uQXVkaXRTdGFydGVkIGZpcmVkLCB0aHJvd2luZyBleGNlcHRp
b24KLUFsbCB0ZXN0cyBkb25lLgogICBFeHRlbnNpb24gYXVkaXRzCiAgICAgRmFpbGVkIHJ1bGUg
KDQyKQogICAgICB0aGlzIHJ1bGUgYWx3YXlzIGZhaWxzCkBAIC0yNSw0ICsyNSw1IEBAIEFsbCB0
ZXN0cyBkb25lLgogICAgIFBhc3NlZCBydWxlCiAgICAgIHRoaXMgcnVsZSBhbHdheXMgcGFzc2Vz
IG9rCiAgIEV4dGVuc2lvbiBhdWRpdHMgdGhhdCBmYWlsCitBbGwgdGVzdHMgZG9uZS4KIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMtZXhwZWN0ZWQudHh0CmluZGV4IDgzMTk0
MzQuLmJlNTcwNmMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25z
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy1leHBl
Y3RlZC50eHQKQEAgLTEsNSArMSw2IEBACiBUZXN0cyBXZWJJbnNwZWN0b3IgZXh0ZW5zaW9uIEFQ
SQogCitQYWdlIHJlbG9hZGVkLgogU3RhcnRlZCBleHRlbnNpb24uCiBSdW5uaW5nIHRlc3RzLi4u
CiBSVU5OSU5HIFRFU1Q6IGV4dGVuc2lvbl90ZXN0Q3JlYXRlUGFuZWwKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9yZXBvcnQtcHJvdG9jb2wtZXJyb3JzLmh0bWwgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvcmVwb3J0LXByb3RvY29sLWVycm9ycy5odG1sCmluZGV4IGQwMzY0YjYu
LmE1ZTc4NzQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9yZXBvcnQtcHJvdG9j
b2wtZXJyb3JzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3JlcG9ydC1wcm90b2Nv
bC1lcnJvcnMuaHRtbApAQCAtMjQsNyArMjQsOCBAQCBmdW5jdGlvbiB0ZXN0KCkKIAogICAgIGZ1
bmN0aW9uIGNhbGxiYWNrKG1lc3NhZ2UpCiAgICAgewotICAgICAgICBJbnNwZWN0b3JUZXN0LmFk
ZFJlc3VsdChtZXNzYWdlKTsKKyAgICAgICAgaWYgKG51bWJlck9mUmVwb3J0cyA8IG1lc3NhZ2Vz
Lmxlbmd0aCkKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkT2JqZWN0KG1lc3NhZ2UpOwog
CiAgICAgICAgIGlmICgrK251bWJlck9mUmVwb3J0cyA9PT0gbWVzc2FnZXMubGVuZ3RoKQogICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2luc3BlY3Rvci9kZWJ1Z2dlci1zdGVwLWluLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2luc3BlY3Rvci9kZWJ1Z2dl
ci1zdGVwLWluLWV4cGVjdGVkLnR4dApvbGQgbW9kZSAxMDA3NTUKbmV3IG1vZGUgMTAwNjQ0Cmlu
ZGV4IDcyYWY2ZTguLmQ3NTI2NTIKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0v
aW5zcGVjdG9yL2RlYnVnZ2VyLXN0ZXAtaW4tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtL2luc3BlY3Rvci9kZWJ1Z2dlci1zdGVwLWluLWV4cGVjdGVkLnR4
dApAQCAtMSwxOCArMSwyMSBAQAotVGVzdHMgInN0ZXAgaW4iIGZ1bmN0aW9uYWxpdHkgaW4gZGVi
dWdnZXIuDQotDQotRGVidWdnZXIgd2FzIGVuYWJsZWQuDQotU2V0IHRpbWVyIGZvciB0ZXN0IGZ1
bmN0aW9uLg0KLVNjcmlwdCBleGVjdXRpb24gcGF1c2VkLg0KLUNhbGwgc3RhY2s6DQotICAgIDAp
IHRlc3RGdW5jdGlvbiAoZGVidWdnZXItc3RlcC1pbi5odG1sOjEyKQ0KLVN0ZXBwaW5nIGludG8u
Li4NCi1TY3JpcHQgZXhlY3V0aW9uIHBhdXNlZC4NCi1DYWxsIHN0YWNrOg0KLSAgICAwKSB0ZXN0
RnVuY3Rpb24gKGRlYnVnZ2VyLXN0ZXAtaW4uaHRtbDoxMykNCi1TdGVwcGluZyBpbnRvLi4uDQot
U2NyaXB0IGV4ZWN1dGlvbiBwYXVzZWQuDQotQ2FsbCBzdGFjazoNCi0gICAgMCkgZCAoZGVidWdn
ZXItc3RlcC1pbi5odG1sOjgpDQotICAgIDEpIHRlc3RGdW5jdGlvbiAoZGVidWdnZXItc3RlcC1p
bi5odG1sOjEzKQ0KLVJlc3VtZWQgc2NyaXB0IGV4ZWN1dGlvbi4NCi1EaXNhYmxlZCBkZWJ1Z2dl
ci4NCitUZXN0cyAic3RlcCBpbiIgZnVuY3Rpb25hbGl0eSBpbiBkZWJ1Z2dlci4KKworRGVidWdn
ZXIgd2FzIGVuYWJsZWQuCitTZXQgdGltZXIgZm9yIHRlc3QgZnVuY3Rpb24uCitTY3JpcHQgZXhl
Y3V0aW9uIHBhdXNlZC4KK0NhbGwgc3RhY2s6CisgICAgMCkgdGVzdEZ1bmN0aW9uIChkZWJ1Z2dl
ci1zdGVwLWluLmh0bWw6MTQpCitTdGVwcGluZyBpbnRvLi4uCitTY3JpcHQgZXhlY3V0aW9uIHJl
c3VtZWQuCitTY3JpcHQgZXhlY3V0aW9uIHBhdXNlZC4KK0NhbGwgc3RhY2s6CisgICAgMCkgdGVz
dEZ1bmN0aW9uIChkZWJ1Z2dlci1zdGVwLWluLmh0bWw6MTUpCitTdGVwcGluZyBpbnRvLi4uCitT
Y3JpcHQgZXhlY3V0aW9uIHJlc3VtZWQuCitTY3JpcHQgZXhlY3V0aW9uIHBhdXNlZC4KK0NhbGwg
c3RhY2s6CisgICAgMCkgZCAoZGVidWdnZXItc3RlcC1pbi5odG1sOjkpCisgICAgMSkgdGVzdEZ1
bmN0aW9uIChkZWJ1Z2dlci1zdGVwLWluLmh0bWw6MTUpCitTY3JpcHQgZXhlY3V0aW9uIHJlc3Vt
ZWQuCitEZWJ1Z2dlciB3YXMgZGlzYWJsZWQuCisK
</data>

          </attachment>
      

    </bug>

</bugzilla>