<?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>154170</bug_id>
          
          <creation_ts>2016-02-12 08:59:41 -0800</creation_ts>
          <short_desc>Window and WorkerGlobalScope should inherit EventTarget</short_desc>
          <delta_ts>2016-02-22 12:23:12 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Bindings</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar, WebExposed</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>154121</dependson>
    
    <dependson>154245</dependson>
    
    <dependson>154547</dependson>
          <blocked>154171</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>barraclough</cc>
    
    <cc>cgarcia</cc>
    
    <cc>clopez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ggaren</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>ossy</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1164159</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-02-12 08:59:41 -0800</bug_when>
    <thetext>Window and WorkerGlobalScope should inherit EventTarget instead of duplicating its API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1164430</commentid>
    <comment_count>1</comment_count>
      <attachid>271245</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-02-12 16:38:09 -0800</bug_when>
    <thetext>Created attachment 271245
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1164431</commentid>
    <comment_count>2</comment_count>
      <attachid>271246</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-02-12 16:40:21 -0800</bug_when>
    <thetext>Created attachment 271246
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1164446</commentid>
    <comment_count>3</comment_count>
      <attachid>271251</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-02-12 17:16:15 -0800</bug_when>
    <thetext>Created attachment 271251
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1164479</commentid>
    <comment_count>4</comment_count>
      <attachid>271267</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-02-12 20:45:18 -0800</bug_when>
    <thetext>Created attachment 271267
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1164480</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-02-12 20:47:44 -0800</bug_when>
    <thetext>&lt;rdar://problem/24642377&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1164631</commentid>
    <comment_count>6</comment_count>
      <attachid>271267</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-02-14 14:36:05 -0800</bug_when>
    <thetext>Comment on attachment 271267
Patch

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

&gt; Source/WebCore/ChangeLog:24
&gt; +        * bindings/js/JSDOMWindowCustom.cpp:
&gt; +        Drop custom bindings for Window&apos;s addEventListener() and
&gt; +        removeEventListener(). The only reason these needed custom
&gt; +        code was to add a check for frameless windows. The frameless
&gt; +        Window checks was moved to the respective methods in the
&gt; +        JSEventTarget generated bindings.

Which test covers the frameless window check?

&gt; Source/WebCore/bindings/js/JSEventTargetCustom.cpp:84
&gt; +    if (auto* jsEventTarget = JSC::jsDynamicCast&lt;JSEventTarget*&gt;(thisValue))
&gt; +        return std::make_unique&lt;JSEventTargetOrGlobalScope&gt;(jsEventTarget-&gt;wrapped(), *jsEventTarget);
&gt; +    if (auto* jsDOMWindow = toJSDOMWindow(thisValue))
&gt; +        return std::make_unique&lt;JSEventTargetOrGlobalScope&gt;(jsDOMWindow-&gt;wrapped(), *jsDOMWindow);
&gt; +    if (auto* jsWorkerGlobalScope = toJSWorkerGlobalScope(thisValue))
&gt; +        return std::make_unique&lt;JSEventTargetOrGlobalScope&gt;(jsWorkerGlobalScope-&gt;wrapped(), *jsWorkerGlobalScope);

I don’t think these &quot;js&quot; prefixes are needed for the local variable names. I suggest the names &quot;target&quot;, &quot;window&quot;, and &quot;scope&quot;.

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:1739
&gt; +    return &quot;JSEventTargetOrGlobalScope::create&quot; if $interfaceName eq &quot;EventTarget&quot;;

Can we make this a global level function, too, like the others? It could even be named jsEventTargetCast. Does it really need to be a static member function? I understand that its return type will need to be a JSEventTargetOrGlobalScope (but we might be able to come up with a better name for that class). Maybe JSEventTargetWrapper is a suitable name. Comments in the header can explain that JSEventTargetWrapper makes it so we can wrap both literal EventTarget objects and also understand the wrappers for global scopes, which are equivalent to EventTarget even though they are not actually derived from EventTarget.

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:1740
&gt; +    return &quot;jsDynamicCast&lt;JS&quot; . $interfaceName . &quot;*&gt;&quot;;

It was the &quot;-&gt;&quot; that meant we had to use explicit concatenation. We can not just write this more simply:

    return &quot;jsDynamicCast&lt;JS$interfaceName*&gt;&quot;;

&gt; Source/WebCore/dom/ScriptExecutionContext.cpp:394
&gt; +    auto targetIsWindow = !!target-&gt;toDOMWindow();
&gt; +    if (targetIsWindow &amp;&amp; is&lt;Document&gt;(*this)) {

I think bool is clearer than auto here. I also think we’d be OK without the local variable.

&gt; LayoutTests/ChangeLog:15
&gt; +        * http/tests/security/cross-frame-access-call-expected.txt:
&gt; +        * http/tests/security/cross-frame-access-call.html:
&gt; +        Add test coverage for cross-origin access to window.postMessage() which
&gt; +        should not be allowed, in addition to window.addEventListener() and
&gt; +        window.removeEventListener().

The code change adds coverage for dispatchEvent; but this comment instead mentions postMessage, addEventListener, and removeEventListener. What’s going on?

&gt; LayoutTests/http/tests/security/cross-frame-access-call.html:46
&gt; +    clickEvent = new Event(&quot;click&quot;);
&gt; +    shouldBe(&quot;window.dispatchEvent.call(targetWindow, clickEvent);&quot;, &quot;undefined&quot;);

Would read better in a single line:

    shouldBe(&quot;window.dispatchEvent.call(targetWindow, new Event(&apos;click&apos;));&quot;, &quot;undefined&quot;);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1164649</commentid>
    <comment_count>7</comment_count>
      <attachid>271317</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-02-14 18:14:49 -0800</bug_when>
    <thetext>Created attachment 271317
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1164650</commentid>
    <comment_count>8</comment_count>
      <attachid>271317</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-02-14 18:17:32 -0800</bug_when>
    <thetext>Comment on attachment 271317
Patch

Clearing flags on attachment: 271317

Committed r196563: &lt;http://trac.webkit.org/changeset/196563&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1164651</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-02-14 18:17:37 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1164695</commentid>
    <comment_count>10</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2016-02-15 01:48:58 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; Comment on attachment 271317 [details]
&gt; Patch
&gt; 
&gt; Clearing flags on attachment: 271317
&gt; 
&gt; Committed r196563: &lt;http://trac.webkit.org/changeset/196563&gt;

It made Dromaeo/cssquery-dojo.html performance test stuck in an 
infinite loop, see performance bots on build.webkit.org for details:
- https://build.webkit.org/builders/Apple%20Yosemite%20Release%20WK2%20%28Perf%29/builds/4188
- https://build.webkit.org/builders/Apple%20El%20Capitan%20Release%20WK2%20%28Perf%29/builds/1166
- https://build.webkit.org/builders/GTK%20Linux%2064-bit%20Release%20%28Perf%29/builds/5275</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1164740</commentid>
    <comment_count>11</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-02-15 07:27:39 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #8)
&gt; &gt; Comment on attachment 271317 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; Clearing flags on attachment: 271317
&gt; &gt; 
&gt; &gt; Committed r196563: &lt;http://trac.webkit.org/changeset/196563&gt;
&gt; 
&gt; It made Dromaeo/cssquery-dojo.html performance test stuck in an 
&gt; infinite loop, see performance bots on build.webkit.org for details:
&gt; -
&gt; https://build.webkit.org/builders/
&gt; Apple%20Yosemite%20Release%20WK2%20%28Perf%29/builds/4188
&gt; -
&gt; https://build.webkit.org/builders/
&gt; Apple%20El%20Capitan%20Release%20WK2%20%28Perf%29/builds/1166
&gt; -
&gt; https://build.webkit.org/builders/GTK%20Linux%2064-
&gt; bit%20Release%20%28Perf%29/builds/5275

Ok, I Will fix it asap, thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1164747</commentid>
    <comment_count>12</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-02-15 08:40:14 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #10)
&gt; &gt; (In reply to comment #8)
&gt; &gt; &gt; Comment on attachment 271317 [details]
&gt; &gt; &gt; Patch
&gt; &gt; &gt; 
&gt; &gt; &gt; Clearing flags on attachment: 271317
&gt; &gt; &gt; 
&gt; &gt; &gt; Committed r196563: &lt;http://trac.webkit.org/changeset/196563&gt;
&gt; &gt; 
&gt; &gt; It made Dromaeo/cssquery-dojo.html performance test stuck in an 
&gt; &gt; infinite loop, see performance bots on build.webkit.org for details:
&gt; &gt; -
&gt; &gt; https://build.webkit.org/builders/
&gt; &gt; Apple%20Yosemite%20Release%20WK2%20%28Perf%29/builds/4188
&gt; &gt; -
&gt; &gt; https://build.webkit.org/builders/
&gt; &gt; Apple%20El%20Capitan%20Release%20WK2%20%28Perf%29/builds/1166
&gt; &gt; -
&gt; &gt; https://build.webkit.org/builders/GTK%20Linux%2064-
&gt; &gt; bit%20Release%20%28Perf%29/builds/5275
&gt; 
&gt; Ok, I Will fix it asap, thanks.

The test seems to run fine in the browser, I&apos;ll try with run-perf-tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1164757</commentid>
    <comment_count>13</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-02-15 08:58:13 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #11)
&gt; &gt; (In reply to comment #10)
&gt; &gt; &gt; (In reply to comment #8)
&gt; &gt; &gt; &gt; Comment on attachment 271317 [details]
&gt; &gt; &gt; &gt; Patch
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Clearing flags on attachment: 271317
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Committed r196563: &lt;http://trac.webkit.org/changeset/196563&gt;
&gt; &gt; &gt; 
&gt; &gt; &gt; It made Dromaeo/cssquery-dojo.html performance test stuck in an 
&gt; &gt; &gt; infinite loop, see performance bots on build.webkit.org for details:
&gt; &gt; &gt; -
&gt; &gt; &gt; https://build.webkit.org/builders/
&gt; &gt; &gt; Apple%20Yosemite%20Release%20WK2%20%28Perf%29/builds/4188
&gt; &gt; &gt; -
&gt; &gt; &gt; https://build.webkit.org/builders/
&gt; &gt; &gt; Apple%20El%20Capitan%20Release%20WK2%20%28Perf%29/builds/1166
&gt; &gt; &gt; -
&gt; &gt; &gt; https://build.webkit.org/builders/GTK%20Linux%2064-
&gt; &gt; &gt; bit%20Release%20%28Perf%29/builds/5275
&gt; &gt; 
&gt; &gt; Ok, I Will fix it asap, thanks.
&gt; 
&gt; The test seems to run fine in the browser, I&apos;ll try with run-perf-tests.

Ok, I can reproduce, it looks like it is hitting a JS error:
addEventListener — dojo-1.6.1.js:1628 TypeError: Can only call EventTarget.addEventListener on instances of EventTarget

I am investigating.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1167141</commentid>
    <comment_count>14</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2016-02-22 12:22:09 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #8)
&gt; &gt; Comment on attachment 271317 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; Clearing flags on attachment: 271317
&gt; &gt; 
&gt; &gt; Committed r196563: &lt;http://trac.webkit.org/changeset/196563&gt;
&gt; 
&gt; It made Dromaeo/cssquery-dojo.html performance test stuck in an 
&gt; infinite loop, see performance bots on build.webkit.org for details:
&gt; -
&gt; https://build.webkit.org/builders/
&gt; Apple%20Yosemite%20Release%20WK2%20%28Perf%29/builds/4188
&gt; -
&gt; https://build.webkit.org/builders/
&gt; Apple%20El%20Capitan%20Release%20WK2%20%28Perf%29/builds/1166
&gt; -
&gt; https://build.webkit.org/builders/GTK%20Linux%2064-
&gt; bit%20Release%20%28Perf%29/builds/5275

Seems this was fixed in https://trac.webkit.org/changeset/196588</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>271245</attachid>
            <date>2016-02-12 16:38:09 -0800</date>
            <delta_ts>2016-02-12 16:40:21 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>154170_Window_EventTarget_wip.patch</filename>
            <type>text/plain</type>
            <size>21911</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3dpbmRvdy1jbGVhcmluZy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci93aW5kb3ctY2xlYXJpbmctZXhwZWN0
ZWQudHh0CmluZGV4IGM3NmJiNjUuLmM4YzZlNzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zh
c3QvbG9hZGVyL3dpbmRvdy1jbGVhcmluZy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9sb2FkZXIvd2luZG93LWNsZWFyaW5nLWV4cGVjdGVkLnR4dApAQCAtNywzICs3LDUgQEAg
UEFTUzogZWxlbWVudCAwIGluIHRoZSB3aW5kb3cncyBwcm90b3R5cGUgY2hhaW4gd2FzIGNsZWFy
ZWQKIFBBU1M6IGVsZW1lbnQgMSBpbiB0aGUgd2luZG93J3MgcHJvdG90eXBlIGNoYWluIHdhcyBj
bGVhcmVkCiAKIFBBU1M6IGVsZW1lbnQgMiBpbiB0aGUgd2luZG93J3MgcHJvdG90eXBlIGNoYWlu
IHdhcyBjbGVhcmVkCisKK1BBU1M6IGVsZW1lbnQgMyBpbiB0aGUgd2luZG93J3MgcHJvdG90eXBl
IGNoYWluIHdhcyBjbGVhcmVkCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvZG9tL2ludGVyZmFjZXMtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2RvbS9pbnRlcmZh
Y2VzLWV4cGVjdGVkLnR4dAppbmRleCAyNjgwMzYxLi5kOGQzODQ3IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvZG9tL2ludGVyZmFj
ZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvaHRtbC9kb20vaW50ZXJmYWNlcy1leHBlY3RlZC50eHQKQEAgLTM3OTksMTQgKzM3
OTksMTAgQEAgRkFJTCBEcmFnRXZlbnQgaW50ZXJmYWNlIG9iamVjdCBuYW1lIGFzc2VydF9vd25f
cHJvcGVydHk6IHNlbGYgZG9lcyBub3QgaGF2ZSBvd24KIEZBSUwgRHJhZ0V2ZW50IGludGVyZmFj
ZTogZXhpc3RlbmNlIGFuZCBwcm9wZXJ0aWVzIG9mIGludGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0
IGFzc2VydF9vd25fcHJvcGVydHk6IHNlbGYgZG9lcyBub3QgaGF2ZSBvd24gcHJvcGVydHkgIkRy
YWdFdmVudCIgZXhwZWN0ZWQgcHJvcGVydHkgIkRyYWdFdmVudCIgbWlzc2luZwogRkFJTCBEcmFn
RXZlbnQgaW50ZXJmYWNlOiBleGlzdGVuY2UgYW5kIHByb3BlcnRpZXMgb2YgaW50ZXJmYWNlIHBy
b3RvdHlwZSBvYmplY3QncyAiY29uc3RydWN0b3IiIHByb3BlcnR5IGFzc2VydF9vd25fcHJvcGVy
dHk6IHNlbGYgZG9lcyBub3QgaGF2ZSBvd24gcHJvcGVydHkgIkRyYWdFdmVudCIgZXhwZWN0ZWQg
cHJvcGVydHkgIkRyYWdFdmVudCIgbWlzc2luZwogRkFJTCBEcmFnRXZlbnQgaW50ZXJmYWNlOiBh
dHRyaWJ1dGUgZGF0YVRyYW5zZmVyIGFzc2VydF9vd25fcHJvcGVydHk6IHNlbGYgZG9lcyBub3Qg
aGF2ZSBvd24gcHJvcGVydHkgIkRyYWdFdmVudCIgZXhwZWN0ZWQgcHJvcGVydHkgIkRyYWdFdmVu
dCIgbWlzc2luZwotRkFJTCBXaW5kb3cgaW50ZXJmYWNlOiBleGlzdGVuY2UgYW5kIHByb3BlcnRp
ZXMgb2YgaW50ZXJmYWNlIG9iamVjdCBhc3NlcnRfZXF1YWxzOiBwcm90b3R5cGUgb2YgV2luZG93
IGlzIG5vdCBFdmVudFRhcmdldCBleHBlY3RlZCBmdW5jdGlvbiAiZnVuY3Rpb24gRXZlbnRUYXJn
ZXQoKSB7Ci0gICAgW25hdGl2ZSBjb2RlXQotfSIgYnV0IGdvdCBmdW5jdGlvbiAiZnVuY3Rpb24g
KCkgewotICAgIFtuYXRpdmUgY29kZV0KLX0iCitQQVNTIFdpbmRvdyBpbnRlcmZhY2U6IGV4aXN0
ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBpbnRlcmZhY2Ugb2JqZWN0IAogUEFTUyBXaW5kb3cgaW50
ZXJmYWNlIG9iamVjdCBsZW5ndGggCiBQQVNTIFdpbmRvdyBpbnRlcmZhY2Ugb2JqZWN0IG5hbWUg
Ci1GQUlMIFdpbmRvdyBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBpbnRl
cmZhY2UgcHJvdG90eXBlIG9iamVjdCBhc3NlcnRfZXF1YWxzOiBDbGFzcyBuYW1lIGZvciBwcm90
b3R5cGUgb2YgV2luZG93LnByb3RvdHlwZSBpcyBub3QgIldpbmRvd1Byb3BlcnRpZXMiIGV4cGVj
dGVkICJbb2JqZWN0IFdpbmRvd1Byb3BlcnRpZXNdIiBidXQgZ290ICJbb2JqZWN0IE9iamVjdF0i
CitGQUlMIFdpbmRvdyBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBpbnRl
cmZhY2UgcHJvdG90eXBlIG9iamVjdCBhc3NlcnRfZXF1YWxzOiBDbGFzcyBuYW1lIGZvciBwcm90
b3R5cGUgb2YgV2luZG93LnByb3RvdHlwZSBpcyBub3QgIldpbmRvd1Byb3BlcnRpZXMiIGV4cGVj
dGVkICJbb2JqZWN0IFdpbmRvd1Byb3BlcnRpZXNdIiBidXQgZ290ICJbb2JqZWN0IEV2ZW50VGFy
Z2V0UHJvdG90eXBlXSIKIEZBSUwgV2luZG93IGludGVyZmFjZTogZXhpc3RlbmNlIGFuZCBwcm9w
ZXJ0aWVzIG9mIGludGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0J3MgImNvbnN0cnVjdG9yIiBwcm9w
ZXJ0eSBhc3NlcnRfb3duX3Byb3BlcnR5OiBXaW5kb3cucHJvdG90eXBlIGRvZXMgbm90IGhhdmUg
b3duIHByb3BlcnR5ICJjb25zdHJ1Y3RvciIgZXhwZWN0ZWQgcHJvcGVydHkgImNvbnN0cnVjdG9y
IiBtaXNzaW5nCiBQQVNTIFdpbmRvdyBpbnRlcmZhY2U6IGF0dHJpYnV0ZSBzZWxmIAogUEFTUyBX
aW5kb3cgaW50ZXJmYWNlOiBhdHRyaWJ1dGUgbmFtZSAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA4N2E5YzMwLi42OWNmZWZiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0xNzA2LDYgKzE3MDYsNyBAQAogCQk0NjY5QjI4NzFCODUyQTBCMDAwRjkwNUYgLyogSlNE
T01OYW1lZEZsb3dDb2xsZWN0aW9uQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RjI3NjhFMUI4NTI5N0YwMDVDMjU1NiAvKiBKU0RPTU5h
bWVkRmxvd0NvbGxlY3Rpb25DdXN0b20uY3BwICovOyB9OwogCQk0NjczMDIwMjFDNEVGRTc4MDBC
Q0IzNTcgLyogSWdub3JlT3BlbnNEdXJpbmdVbmxvYWRDb3VudEluY3JlbWVudGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjczMDIwMTFDNEVGRTY2
MDBCQ0IzNTcgLyogSWdub3JlT3BlbnNEdXJpbmdVbmxvYWRDb3VudEluY3JlbWVudGVyLmggKi87
IH07CiAJCTQ2ODlGMUFGMTI2N0JBRTEwMEU4RDM4MCAvKiBGaWxlTWV0YWRhdGEuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODlGMUFFMTI2N0JBRTEw
MEU4RDM4MCAvKiBGaWxlTWV0YWRhdGEuaCAqLzsgfTsKKwkJNDZCNjNGNkMxQzZFOEQxOTAwMkU5
MTRCIC8qIEpTRXZlbnRUYXJnZXRDdXN0b20uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QjYzRjZCMUM2RThDREYwMDJFOTE0QiAvKiBKU0V2ZW50VGFy
Z2V0Q3VzdG9tLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNDZDODNFRkQxQTlCQkUyOTAwQTc5QTQxIC8qIEdlb05vdGlmaWVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzgzRUZCMUE5QkJFMjkw
MEE3OUE0MSAvKiBHZW9Ob3RpZmllci5jcHAgKi87IH07CiAJCTQ2QzgzRUZFMUE5QkJFMjkwMEE3
OUE0MSAvKiBHZW9Ob3RpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDZDODNFRkMxQTlCQkUyOTAwQTc5QTQxIC8qIEdlb05vdGlmaWVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZEQjdENTcx
QjIwRkU0NjAwNTY1MUIyIC8qIFZOb2RlVHJhY2tlckNvY29hLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2REI3RDU2MUIyMEZFM0MwMDU2NTFCMiAv
KiBWTm9kZVRyYWNrZXJDb2NvYS5jcHAgKi87IH07CkBAIC05MTgzLDYgKzkxODQsNyBAQAogCQk0
NjNFQjYyMTFCODc4OUNCMDA5NkVENTEgLyogVGFnQ29sbGVjdGlvbi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBUYWdDb2xsZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQ2NzMwMjAxMUM0RUZFNjYwMEJDQjM1NyAvKiBJZ25vcmVPcGVuc0R1cmluZ1Vu
bG9hZENvdW50SW5jcmVtZW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SWdub3JlT3BlbnNEdXJpbmdVbmxvYWRDb3VudEluY3JlbWVudGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQ2ODlGMUFFMTI2N0JBRTEwMEU4RDM4MCAvKiBGaWxlTWV0YWRhdGEu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmlsZU1ldGFkYXRhLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2QjYzRjZCMUM2RThDREYwMDJFOTE0QiAvKiBKU0V2
ZW50VGFyZ2V0Q3VzdG9tLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRXZl
bnRUYXJnZXRDdXN0b20uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZDODNFRkIx
QTlCQkUyOTAwQTc5QTQxIC8qIEdlb05vdGlmaWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEdlb05vdGlmaWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDZDODNFRkMxQTlCQkUyOTAwQTc5QTQxIC8qIEdlb05vdGlmaWVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdlb05vdGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQ2REI3RDU2MUIyMEZFM0MwMDU2NTFCMiAvKiBWTm9kZVRyYWNrZXJDb2Nv
YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWTm9kZVRyYWNrZXJD
b2NvYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMjE4NSw2ICsyMjE4Nyw3
IEBACiAJCQkJRjNENDYxNDYxMTYxRDUzMjAwQ0EwRDA5IC8qIEpTRXJyb3JIYW5kbGVyLmNwcCAq
LywKIAkJCQlGM0Q0NjE0NzExNjFENTMyMDBDQTBEMDkgLyogSlNFcnJvckhhbmRsZXIuaCAqLywK
IAkJCQlCQzYwOTAxRTBFOTFCOEVDMDAwQzY4QjUgLyogSlNFdmVudFRhcmdldEN1c3RvbS5jcHAg
Ki8sCisJCQkJNDZCNjNGNkIxQzZFOENERjAwMkU5MTRCIC8qIEpTRXZlbnRUYXJnZXRDdXN0b20u
aCAqLywKIAkJCQkzMzE0QUNFOTEwODkyMDg2MDAwRjBFNTYgLyogSlNFeGNlcHRpb25CYXNlLmNw
cCAqLywKIAkJCQkzMzE0QUNFQTEwODkyMDg2MDAwRjBFNTYgLyogSlNFeGNlcHRpb25CYXNlLmgg
Ki8sCiAJCQkJOEY5MzREODQxMTg5RjFFRTAwNTA4RDVEIC8qIEpTTWFpblRocmVhZEV4ZWNTdGF0
ZS5jcHAgKi8sCkBAIC0yNDk2OSw2ICsyNDk3Miw3IEBACiAJCQkJMkVERUYxRjcxMjFCMEVGQzAw
NzI2REIyIC8qIEJsb2JSZWdpc3RyeUltcGwuaCBpbiBIZWFkZXJzICovLAogCQkJCTJFQjRCQ0Qz
MTIxRjAzRTMwMEVDNDg4NSAvKiBCbG9iUmVzb3VyY2VIYW5kbGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTk3NkQ2QzdGMTIyQjhBM0QwMDFGRDFGNyAvKiBCbG9iVVJMLmggaW4gSGVhZGVycyAqLywK
KwkJCQk0NkI2M0Y2QzFDNkU4RDE5MDAyRTkxNEIgLyogSlNFdmVudFRhcmdldEN1c3RvbS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTNGMTk5QkUwODI0NUU1OTAwMUU5QUJDIC8qIEJsb2NrRXhjZXB0
aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1RUI1RTEwRTgxQkU4NzAwQjI1OTY1IC8qIEJv
cmRlckRhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTU4OTU1NkVEMThENEE0NDAwMDc2NEIwMyAv
KiBCb3JkZXJFZGdlLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAppbmRleCAwM2ZkOTQxLi40ZjZlNDdmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCkBA
IC02ODMsMzQgKzY4Myw2IEBAIEpTVmFsdWUgSlNET01XaW5kb3c6OnNldEludGVydmFsKEV4ZWNT
dGF0ZSYgc3RhdGUpCiAgICAgcmV0dXJuIGpzTnVtYmVyKHJlc3VsdCk7CiB9CiAKLUpTVmFsdWUg
SlNET01XaW5kb3c6OmFkZEV2ZW50TGlzdGVuZXIoRXhlY1N0YXRlJiBzdGF0ZSkKLXsKLSAgICBG
cmFtZSogZnJhbWUgPSB3cmFwcGVkKCkuZnJhbWUoKTsKLSAgICBpZiAoIWZyYW1lKQotICAgICAg
ICByZXR1cm4ganNVbmRlZmluZWQoKTsKLQotICAgIEpTVmFsdWUgbGlzdGVuZXIgPSBzdGF0ZS5h
cmd1bWVudCgxKTsKLSAgICBpZiAoIWxpc3RlbmVyLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVy
biBqc1VuZGVmaW5lZCgpOwotCi0gICAgd3JhcHBlZCgpLmFkZEV2ZW50TGlzdGVuZXIoc3RhdGUu
YXJndW1lbnQoMCkudG9TdHJpbmcoJnN0YXRlKS0+dG9BdG9taWNTdHJpbmcoJnN0YXRlKSwgSlNF
dmVudExpc3RlbmVyOjpjcmVhdGUoYXNPYmplY3QobGlzdGVuZXIpLCB0aGlzLCBmYWxzZSwgZ2xv
YmFsT2JqZWN0KCktPndvcmxkKCkpLCBzdGF0ZS5hcmd1bWVudCgyKS50b0Jvb2xlYW4oJnN0YXRl
KSk7Ci0gICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci19Ci0KLUpTVmFsdWUgSlNET01XaW5kb3c6
OnJlbW92ZUV2ZW50TGlzdGVuZXIoRXhlY1N0YXRlJiBzdGF0ZSkKLXsKLSAgICBGcmFtZSogZnJh
bWUgPSB3cmFwcGVkKCkuZnJhbWUoKTsKLSAgICBpZiAoIWZyYW1lKQotICAgICAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKLQotICAgIEpTVmFsdWUgbGlzdGVuZXIgPSBzdGF0ZS5hcmd1bWVudCgx
KTsKLSAgICBpZiAoIWxpc3RlbmVyLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOwotCi0gICAgd3JhcHBlZCgpLnJlbW92ZUV2ZW50TGlzdGVuZXIoc3RhdGUuYXJndW1l
bnQoMCkudG9TdHJpbmcoJnN0YXRlKS0+dG9BdG9taWNTdHJpbmcoJnN0YXRlKSwgSlNFdmVudExp
c3RlbmVyOjpjcmVhdGUoYXNPYmplY3QobGlzdGVuZXIpLCB0aGlzLCBmYWxzZSwgZ2xvYmFsT2Jq
ZWN0KCktPndvcmxkKCkpLnB0cigpLCBzdGF0ZS5hcmd1bWVudCgyKS50b0Jvb2xlYW4oJnN0YXRl
KSk7Ci0gICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci19Ci0KIERPTVdpbmRvdyogSlNET01XaW5k
b3c6OnRvV3JhcHBlZChKU1ZhbHVlIHZhbHVlKQogewogICAgIGlmICghdmFsdWUuaXNPYmplY3Qo
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hl
bGwuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5jcHAK
aW5kZXggMTEyMDY2OC4uNjYwMzU0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01XaW5kb3dTaGVsbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01XaW5kb3dTaGVsbC5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJGcmFt
ZS5oIgogI2luY2x1ZGUgIkdDQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkpTRE9NV2luZG93Lmgi
Ci0jaW5jbHVkZSAiRE9NV2luZG93LmgiCisjaW5jbHVkZSAiSlNFdmVudFRhcmdldC5oIgogI2lu
Y2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlIDxoZWFwL1N0cm9uZ0lubGluZXMu
aD4KICNpbmNsdWRlIDxydW50aW1lL0pTT2JqZWN0Lmg+CkBAIC04NSw2ICs4NSw3IEBAIHZvaWQg
SlNET01XaW5kb3dTaGVsbDo6c2V0V2luZG93KFBhc3NSZWZQdHI8RE9NV2luZG93PiBkb21XaW5k
b3cpCiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBKU0RPTVdpbmRvdzo6Y3JlYXRlU3RydWN0
dXJlKHZtLCAwLCBwcm90b3R5cGUuZ2V0KCkpOwogICAgIEpTRE9NV2luZG93KiBqc0RPTVdpbmRv
dyA9IEpTRE9NV2luZG93OjpjcmVhdGUodm0sIHN0cnVjdHVyZSwgKmRvbVdpbmRvdywgdGhpcyk7
CiAgICAgcHJvdG90eXBlLT5zdHJ1Y3R1cmUoKS0+c2V0R2xvYmFsT2JqZWN0KHZtLCBqc0RPTVdp
bmRvdyk7CisgICAgcHJvdG90eXBlLT5zdHJ1Y3R1cmUoKS0+c2V0UHJvdG90eXBlV2l0aG91dFRy
YW5zaXRpb24odm0sIEpTRXZlbnRUYXJnZXQ6OmdldFByb3RvdHlwZSh2bSwganNET01XaW5kb3cp
KTsKICAgICBzZXRXaW5kb3codm0sIGpzRE9NV2luZG93KTsKICAgICBBU1NFUlQoanNET01XaW5k
b3ctPmdsb2JhbE9iamVjdCgpID09IGpzRE9NV2luZG93KTsKICAgICBBU1NFUlQocHJvdG90eXBl
LT5nbG9iYWxPYmplY3QoKSA9PSBqc0RPTVdpbmRvdyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmgKaW5kZXggMDFmMDQ4ZC4uYmRmZGQyZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuaApAQCAtMjksMTIg
KzI5LDEyIEBACiAjaWZuZGVmIEpTRE9NV2luZG93U2hlbGxfaAogI2RlZmluZSBKU0RPTVdpbmRv
d1NoZWxsX2gKIAorI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkpTRE9NV2luZG93
LmgiCiAjaW5jbHVkZSA8cnVudGltZS9KU1Byb3h5Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotICAgIGNsYXNzIERPTVdpbmRvdzsKICAgICBjbGFzcyBGcmFtZTsKIAogICAgIGNsYXNzIEpT
RE9NV2luZG93U2hlbGwgOiBwdWJsaWMgSlNDOjpKU1Byb3h5IHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RpY3Rpb25hcnkuY3BwCmluZGV4IDMzNDZjY2YuLjY2MzRlMTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmNwcApAQCAtMjcsNiArMjcs
NyBAQAogI2luY2x1ZGUgIkpTRGljdGlvbmFyeS5oIgogCiAjaW5jbHVkZSAiQXJyYXlWYWx1ZS5o
IgorI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkRpY3Rpb25hcnkuaCIKICNpbmNs
dWRlICJKU0NTU0ZvbnRGYWNlUnVsZS5oIgogI2luY2x1ZGUgIkpTRE9NRXJyb3IuaCIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRDdXN0b20uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEN1c3RvbS5jcHAKaW5k
ZXggZThlYWQxYy4uYmE4ZDE2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNFdmVudFRhcmdldEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNFdmVudFRhcmdldEN1c3RvbS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAwOCwgMjAxNiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDEwICsyNiwxNSBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIkpTRXZlbnRUYXJnZXQuaCIKIAorI2luY2x1ZGUgIkRPTVdpbmRv
dy5oIgorI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiRXZlbnRUYXJnZXRIZWFk
ZXJzLmgiCiAjaW5jbHVkZSAiRXZlbnRUYXJnZXRJbnRlcmZhY2VzLmgiCisjaW5jbHVkZSAiSlNE
T01XaW5kb3cuaCIKICNpbmNsdWRlICJKU0RPTVdpbmRvd1NoZWxsLmgiCiAjaW5jbHVkZSAiSlNF
dmVudExpc3RlbmVyLmgiCisjaW5jbHVkZSAiSlNXb3JrZXJHbG9iYWxTY29wZS5oIgorI2luY2x1
ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKQEAgLTYx
LDEyICs2NiwyMyBAQCBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBFdmVudFRhcmdldCogdGFyZwogRXZlbnRUYXJnZXQqIEpTRXZl
bnRUYXJnZXQ6OnRvV3JhcHBlZChKU0M6OkpTVmFsdWUgdmFsdWUpCiB7CiAgICAgVFJZX1RPX1VO
V1JBUF9XSVRIX0lOVEVSRkFDRShET01XaW5kb3dTaGVsbCkKKyAgICBUUllfVE9fVU5XUkFQX1dJ
VEhfSU5URVJGQUNFKERPTVdpbmRvdykKKyAgICBUUllfVE9fVU5XUkFQX1dJVEhfSU5URVJGQUNF
KFdvcmtlckdsb2JhbFNjb3BlKQogICAgIFRSWV9UT19VTldSQVBfV0lUSF9JTlRFUkZBQ0UoRXZl
bnRUYXJnZXQpCi0gICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIG9uY2UgYWxsIGV2ZW50IHRhcmdl
dHMgZXh0ZW5kIEV2ZW50VGFyZ2V0Ci0gICAgRE9NX0VWRU5UX1RBUkdFVF9JTlRFUkZBQ0VTX0ZP
Ul9FQUNIKFRSWV9UT19VTldSQVBfV0lUSF9JTlRFUkZBQ0UpCi0gICAgcmV0dXJuIDA7CisgICAg
cmV0dXJuIG51bGxwdHI7CiB9CiAKICN1bmRlZiBUUllfVE9fVU5XUkFQX1dJVEhfSU5URVJGQUNF
CiAKK3N0ZDo6dW5pcXVlX3B0cjxKU0V2ZW50VGFyZ2V0Q2FzdGVkVGhpcz4gSlNFdmVudFRhcmdl
dENhc3RlZFRoaXM6OmNyZWF0ZShKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlKQoreworICAgIGlmIChh
dXRvKiBqc0V2ZW50VGFyZ2V0ID0gSlNDOjpqc0R5bmFtaWNDYXN0PEpTRXZlbnRUYXJnZXQqPih0
aGlzVmFsdWUpKQorICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxKU0V2ZW50VGFyZ2V0
Q2FzdGVkVGhpcz4oanNFdmVudFRhcmdldC0+d3JhcHBlZCgpLCAqanNFdmVudFRhcmdldCk7Cisg
ICAgaWYgKGF1dG8qIGpzRE9NV2luZG93ID0gdG9KU0RPTVdpbmRvdyh0aGlzVmFsdWUpKQorICAg
ICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxKU0V2ZW50VGFyZ2V0Q2FzdGVkVGhpcz4oanNE
T01XaW5kb3ctPndyYXBwZWQoKSwgKmpzRE9NV2luZG93KTsKKyAgICBpZiAoYXV0byoganNXb3Jr
ZXJHbG9iYWxTY29wZSA9IHRvSlNXb3JrZXJHbG9iYWxTY29wZSh0aGlzVmFsdWUpKQorICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxKU0V2ZW50VGFyZ2V0Q2FzdGVkVGhpcz4oanNXb3Jr
ZXJHbG9iYWxTY29wZS0+d3JhcHBlZCgpLCAqanNXb3JrZXJHbG9iYWxTY29wZSk7CisgICAgcmV0
dXJuIG51bGxwdHI7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRDdXN0b20uaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRDdXN0b20uaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi5hOTExMTFmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEN1c3RvbS5oCkBAIC0wLDAgKzEsNTUgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIEpTRXZlbnRUYXJnZXRDdXN0b21faAorI2RlZmluZSBKU0V2
ZW50VGFyZ2V0Q3VzdG9tX2gKKworI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKKy8vIFdyYXBwZXIgdHlwZSBmb3IgSlNFdmVudFRhcmdldCdzIGNhc3Rl
ZFRoaXMgYmVjYXVzZSBKU0RPTVdpbmRvdyBhbmQgSlNXb3JrZXJHbG9iYWxTY29wZSBkbyBub3Qg
aW5oZXJpdCBKU0V2ZW50VGFyZ2V0LgorY2xhc3MgSlNFdmVudFRhcmdldENhc3RlZFRoaXMgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8SlNFdmVudFRhcmdldENhc3RlZFRoaXM+IGNyZWF0ZShKU0M6OkpTVmFsdWUgdGhp
c1ZhbHVlKTsKKworICAgIEV2ZW50VGFyZ2V0JiB3cmFwcGVkKCkgeyByZXR1cm4gbV93cmFwcGVk
OyB9CisKKyAgICBvcGVyYXRvciBKU0M6OkpTT2JqZWN0JigpIHsgcmV0dXJuIG1fd3JhcHBlcjsg
fQorCisgICAgSlNFdmVudFRhcmdldENhc3RlZFRoaXMoRXZlbnRUYXJnZXQmIHdyYXBwZWQsIEpT
Qzo6SlNPYmplY3QmIHdyYXBwZXIpCisgICAgICAgIDogbV93cmFwcGVkKHdyYXBwZWQpCisgICAg
ICAgICwgbV93cmFwcGVyKHdyYXBwZXIpCisgICAgeyB9CisKK3ByaXZhdGU6CisgICAgRXZlbnRU
YXJnZXQmIG1fd3JhcHBlZDsKKyAgICBKU0M6OkpTT2JqZWN0JiBtX3dyYXBwZXI7Cit9OworCit9
CisKKyNlbmRpZiAvLyBKU0V2ZW50VGFyZ2V0Q3VzdG9tX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggMDlkMTc4
Yi4uZGUyZDAwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2Vy
U2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29y
a2VyU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkpT
RE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaCIK
KyNpbmNsdWRlICJKU0V2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5o
IgogI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlICJXb3JrZXJHbG9i
YWxTY29wZS5oIgpAQCAtODksNiArOTAsNyBAQCB2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6
OmluaXRTY3JpcHQoKQogICAgICAgICBBU1NFUlQoc3RydWN0dXJlLT5nbG9iYWxPYmplY3QoKSA9
PSBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlcik7CiAgICAgICAgIEFTU0VSVChtX3dvcmtlckds
b2JhbFNjb3BlV3JhcHBlci0+c3RydWN0dXJlKCktPmdsb2JhbE9iamVjdCgpID09IG1fd29ya2Vy
R2xvYmFsU2NvcGVXcmFwcGVyKTsKICAgICAgICAgd29ya2VyR2xvYmFsU2NvcGVQcm90b3R5cGUt
PnN0cnVjdHVyZSgpLT5zZXRHbG9iYWxPYmplY3QoKm1fdm0sIG1fd29ya2VyR2xvYmFsU2NvcGVX
cmFwcGVyLmdldCgpKTsKKyAgICAgICAgd29ya2VyR2xvYmFsU2NvcGVQcm90b3R5cGUtPnN0cnVj
dHVyZSgpLT5zZXRQcm90b3R5cGVXaXRob3V0VHJhbnNpdGlvbigqbV92bSwgSlNFdmVudFRhcmdl
dDo6Z2V0UHJvdG90eXBlKCptX3ZtLCBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci5nZXQoKSkp
OwogICAgICAgICBkZWRpY2F0ZWRDb250ZXh0UHJvdG90eXBlLT5zdHJ1Y3R1cmUoKS0+c2V0R2xv
YmFsT2JqZWN0KCptX3ZtLCBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci5nZXQoKSk7CiAgICAg
fQogICAgIEFTU0VSVChtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci0+Z2xvYmFsT2JqZWN0KCkg
PT0gbV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCBlMmM1MGE4Li4zYTM3MWM0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbQpAQCAtNTU4LDYgKzU1OCw3IEBAIHN1YiBTaG91bGRHZW5lcmF0ZVRvSlNEZWNsYXJh
dGlvbgogICAgIHJldHVybiAwIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
U3VwcHJlc3NUb0pTT2JqZWN0In0pOwogICAgIHJldHVybiAwIGlmIG5vdCBOZWVkc0ltcGxlbWVu
dGF0aW9uQ2xhc3MoJGludGVyZmFjZSk7CiAgICAgcmV0dXJuIDAgaWYgJGludGVyZmFjZS0+bmFt
ZSBlcSAiQWJzdHJhY3RWaWV3IjsKKyAgICByZXR1cm4gMCBpZiAkaW50ZXJmYWNlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tUHJveHlUb0pTT2JqZWN0In07CiAgICAgcmV0dXJuIDEgaWYg
KCEkaGFzUGFyZW50IG9yICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU0dlbmVy
YXRlVG9KU09iamVjdCJ9IG9yICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0
b21Ub0pTT2JqZWN0In0pOwogICAgIHJldHVybiAxIGlmICRpbnRlcmZhY2UtPnBhcmVudCAmJiAk
aW50ZXJmYWNlLT5wYXJlbnQgZXEgIkV2ZW50VGFyZ2V0IjsKICAgICByZXR1cm4gMDsKQEAgLTE3
NDAsNiArMTc0MSw3IEBAIHN1YiBHZXRDYXN0aW5nSGVscGVyRm9yVGhpc09iamVjdAogICAgIGlm
ICgkaW50ZXJmYWNlLT5uYW1lIGVxICJEb2N1bWVudCIpIHsKICAgICAgICAgcmV0dXJuICJqc0Rv
Y3VtZW50Q2FzdCI7CiAgICAgfQorICAgIHJldHVybiAiSlNFdmVudFRhcmdldENhc3RlZFRoaXM6
OmNyZWF0ZSIgaWYgJGludGVyZmFjZS0+bmFtZSBlcSAiRXZlbnRUYXJnZXQiOwogICAgIHJldHVy
biAianNEeW5hbWljQ2FzdDxKUyIgLiAkaW50ZXJmYWNlLT5uYW1lIC4gIio+IjsKIH0KIApAQCAt
MzIyOCwxOSArMzIzMCwxNSBAQCBzdWIgR2VuZXJhdGVGdW5jdGlvbkNhc3RlZFRoaXMKICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJGNsYXNzTmFtZSogY2FzdGVkVGhpcyA9IHRvJHtj
bGFzc05hbWV9KHN0YXRlLT50aGlzVmFsdWUoKS50b1RoaXMoc3RhdGUsIE5vdFN0cmljdE1vZGUp
KTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKVxuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7XG4iKTsKLSAgICB9IGVsc2lmICgkaW50ZXJmYWNl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiV29ya2VyR2xvYmFsU2NvcGUifSkgewotICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICAkY2xhc3NOYW1lKiBjYXN0ZWRUaGlzID0gdG8ke2NsYXNz
TmFtZX0oc3RhdGUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhzdGF0ZSwgTm90U3RyaWN0TW9kZSkpO1xu
Iik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpXG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTtcbiIpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgp
O1xuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICRjbGFzc05hbWUqIGNhc3Rl
ZFRoaXMgPSAiIC4gR2V0Q2FzdGluZ0hlbHBlckZvclRoaXNPYmplY3QoJGludGVyZmFjZSkgLiAi
KHRoaXNWYWx1ZSk7XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byBj
YXN0ZWRUaGlzID0gIiAuIEdldENhc3RpbmdIZWxwZXJGb3JUaGlzT2JqZWN0KCRpbnRlcmZhY2Up
IC4gIih0aGlzVmFsdWUpO1xuIik7CiAgICAgICAgIG15ICRkb21GdW5jdGlvbk5hbWUgPSAkZnVu
Y3Rpb24tPnNpZ25hdHVyZS0+bmFtZTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSlcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIFwiJGludGVyZmFj
ZU5hbWVcIiwgXCIkZG9tRnVuY3Rpb25OYW1lXCIpO1xuIik7CiAgICAgfQogCi0gICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCAk
e2NsYXNzTmFtZX06OmluZm8oKSk7XG4iKTsKKyAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsICR7Y2xhc3NOYW1lfTo6aW5mbygp
KTtcbiIpIHVubGVzcyAkaW50ZXJmYWNlTmFtZSBlcSAiRXZlbnRUYXJnZXQiOwogfQogCiBzdWIg
R2VuZXJhdGVDYWxsV2l0aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFy
Z2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKaW5kZXggZGM0NWVi
Ny4uMDAxYTMyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCkBAIC03NiwxMSArNzYs
MjAgQEAgYm9vbCBFdmVudFRhcmdldDo6aXNNZXNzYWdlUG9ydCgpIGNvbnN0CiAKIGJvb2wgRXZl
bnRUYXJnZXQ6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUs
IFJlZlB0cjxFdmVudExpc3RlbmVyPiYmIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCiB7Cisg
ICAgaWYgKGF1dG8qIHdpbmRvdyA9IHRvRE9NV2luZG93KCkpIHsKKyAgICAgICAgaWYgKCF3aW5k
b3ctPmZyYW1lKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogICAgIHJldHVy
biBlbnN1cmVFdmVudFRhcmdldERhdGEoKS5ldmVudExpc3RlbmVyTWFwLmFkZChldmVudFR5cGUs
IFdURk1vdmUobGlzdGVuZXIpLCB1c2VDYXB0dXJlKTsKIH0KIAogYm9vbCBFdmVudFRhcmdldDo6
cmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRM
aXN0ZW5lciogbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKIHsKKyAgICBpZiAoYXV0byogd2lu
ZG93ID0gdG9ET01XaW5kb3coKSkgeworICAgICAgICBpZiAoIXdpbmRvdy0+ZnJhbWUoKSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKICAgICBFdmVudFRhcmdldERhdGEqIGQg
PSBldmVudFRhcmdldERhdGEoKTsKICAgICBpZiAoIWQpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaWRsCmluZGV4IGVlYWU3YTYuLjYxYzhiZTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5pZGwKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmlkbApAQCAtMjUsNiArMjUsNyBAQAogICAgIEN1c3RvbVRv
SlNPYmplY3QsCiAgICAgSlNDdXN0b21Ub05hdGl2ZU9iamVjdCwKICAgICBFdmVudFRhcmdldCwK
KyAgICBKU0N1c3RvbUhlYWRlciwKIF0gaW50ZXJmYWNlIEV2ZW50VGFyZ2V0IHsKICAgICBbT2Jq
Q0xlZ2FjeVVubmFtZWRQYXJhbWV0ZXJzXSB2b2lkIGFkZEV2ZW50TGlzdGVuZXIoRE9NU3RyaW5n
IHR5cGUsIEV2ZW50TGlzdGVuZXIgbGlzdGVuZXIsIG9wdGlvbmFsIGJvb2xlYW4gdXNlQ2FwdHVy
ZSk7CiAgICAgW09iakNMZWdhY3lVbm5hbWVkUGFyYW1ldGVyc10gdm9pZCByZW1vdmVFdmVudExp
c3RlbmVyKERPTVN0cmluZyB0eXBlLCBFdmVudExpc3RlbmVyIGxpc3RlbmVyLCBvcHRpb25hbCBi
b29sZWFuIHVzZUNhcHR1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01X
aW5kb3cuaWRsIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCmluZGV4IDg5Yzg3
ZDQuLjUyMmExZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93Lmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKQEAgLTM2LDEwICszNiw5
IEBACiAgICAgSlNDdXN0b21Ub05hdGl2ZU9iamVjdCwKICAgICBDdXN0b21QdXRGdW5jdGlvbiwK
ICAgICBFdmVudFRhcmdldCwKLSAgICBKU0dlbmVyYXRlVG9OYXRpdmVPYmplY3QsCiAgICAgSlNM
ZWdhY3lQYXJlbnQ9SlNET01XaW5kb3dCYXNlLAogICAgIEludGVyZmFjZU5hbWU9V2luZG93LAot
XSBpbnRlcmZhY2UgRE9NV2luZG93IHsKK10gaW50ZXJmYWNlIERPTVdpbmRvdyA6IEV2ZW50VGFy
Z2V0IHsKICAgICAvLyBET00gTGV2ZWwgMAogICAgIFtSZXBsYWNlYWJsZV0gcmVhZG9ubHkgYXR0
cmlidXRlIFNjcmVlbiBzY3JlZW47CiAgICAgW1JlcGxhY2VhYmxlXSByZWFkb25seSBhdHRyaWJ1
dGUgSGlzdG9yeSBoaXN0b3J5OwpAQCAtMTg2LDExICsxODUsNiBAQAogCiAgICAgW1JlcGxhY2Vh
YmxlXSByZWFkb25seSBhdHRyaWJ1dGUgRE9NV2luZG93Q1NTIENTUzsKIAotICAgIC8vIEV2ZW50
VGFyZ2V0IGludGVyZmFjZQotICAgIFtDdXN0b21dIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihET01T
dHJpbmcgdHlwZSwgRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwgb3B0aW9uYWwgYm9vbGVhbiB1c2VD
YXB0dXJlKTsKLSAgICBbQ3VzdG9tXSB2b2lkIHJlbW92ZUV2ZW50TGlzdGVuZXIoRE9NU3RyaW5n
IHR5cGUsIEV2ZW50TGlzdGVuZXIgbGlzdGVuZXIsIG9wdGlvbmFsIGJvb2xlYW4gdXNlQ2FwdHVy
ZSk7Ci0gICAgW1JhaXNlc0V4Y2VwdGlvbl0gYm9vbGVhbiBkaXNwYXRjaEV2ZW50KEV2ZW50IGV2
ZW50KTsKLQogICAgIHZvaWQgY2FwdHVyZUV2ZW50cygvKmluIGxvbmcgZXZlbnRGbGFncyovKTsK
ICAgICB2b2lkIHJlbGVhc2VFdmVudHMoLyppbiBsb25nIGV2ZW50RmxhZ3MqLyk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaWRsIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5pZGwKaW5kZXggNTdmMzliMy4u
M2ExMTEwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxT
Y29wZS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5p
ZGwKQEAgLTMxLDcgKzMxLDcgQEAKICAgICBKU0N1c3RvbUdldE93blByb3BlcnR5U2xvdEFuZERl
c2NyaXB0b3IsCiAgICAgRXZlbnRUYXJnZXQsCiAgICAgSlNMZWdhY3lQYXJlbnQ9SlNXb3JrZXJH
bG9iYWxTY29wZUJhc2UsCi1dIGludGVyZmFjZSBXb3JrZXJHbG9iYWxTY29wZSB7CitdIGludGVy
ZmFjZSBXb3JrZXJHbG9iYWxTY29wZSA6IEV2ZW50VGFyZ2V0IHsKIAogI2lmIGRlZmluZWQoTEFO
R1VBR0VfSkFWQVNDUklQVCkgJiYgTEFOR1VBR0VfSkFWQVNDUklQVAogICAgIFtSZXBsYWNlYWJs
ZV0gcmVhZG9ubHkgYXR0cmlidXRlICBXb3JrZXJHbG9iYWxTY29wZSBzZWxmOwpAQCAtNDgsMTIg
KzQ4LDYgQEAKICAgICBbQ3VzdG9tXSB2b2lkIGltcG9ydFNjcmlwdHMoLypbVmFyaWFkaWNdIERP
TVN0cmluZyB1cmxzICovKTsKICAgICBbUmVwbGFjZWFibGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBX
b3JrZXJOYXZpZ2F0b3IgbmF2aWdhdG9yOwogCi0gICAgLy8gRXZlbnRUYXJnZXQgaW50ZXJmYWNl
Ci0KLSAgICB2b2lkIGFkZEV2ZW50TGlzdGVuZXIoRE9NU3RyaW5nIHR5cGUsIEV2ZW50TGlzdGVu
ZXIgbGlzdGVuZXIsIG9wdGlvbmFsIGJvb2xlYW4gdXNlQ2FwdHVyZSk7Ci0gICAgdm9pZCByZW1v
dmVFdmVudExpc3RlbmVyKERPTVN0cmluZyB0eXBlLCBFdmVudExpc3RlbmVyIGxpc3RlbmVyLCBv
cHRpb25hbCBib29sZWFuIHVzZUNhcHR1cmUpOwotICAgIFtSYWlzZXNFeGNlcHRpb25dIGJvb2xl
YW4gZGlzcGF0Y2hFdmVudChFdmVudCBldmVudCk7Ci0KICAgICAvLyBBZGRpdGlvbmFsIGNvbnN0
cnVjdG9ycwogCiAgICAgYXR0cmlidXRlIERPTVVSTENvbnN0cnVjdG9yIHdlYmtpdFVSTDsgLy8g
RklYTUU6IGRlcHJlY2F0ZSB0aGlzLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>271246</attachid>
            <date>2016-02-12 16:40:21 -0800</date>
            <delta_ts>2016-02-12 17:16:11 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>154170_Window_EventTarget_wip.patch</filename>
            <type>text/plain</type>
            <size>21991</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3dpbmRvdy1jbGVhcmluZy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci93aW5kb3ctY2xlYXJpbmctZXhwZWN0
ZWQudHh0CmluZGV4IGM3NmJiNjUuLmM4YzZlNzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zh
c3QvbG9hZGVyL3dpbmRvdy1jbGVhcmluZy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9sb2FkZXIvd2luZG93LWNsZWFyaW5nLWV4cGVjdGVkLnR4dApAQCAtNywzICs3LDUgQEAg
UEFTUzogZWxlbWVudCAwIGluIHRoZSB3aW5kb3cncyBwcm90b3R5cGUgY2hhaW4gd2FzIGNsZWFy
ZWQKIFBBU1M6IGVsZW1lbnQgMSBpbiB0aGUgd2luZG93J3MgcHJvdG90eXBlIGNoYWluIHdhcyBj
bGVhcmVkCiAKIFBBU1M6IGVsZW1lbnQgMiBpbiB0aGUgd2luZG93J3MgcHJvdG90eXBlIGNoYWlu
IHdhcyBjbGVhcmVkCisKK1BBU1M6IGVsZW1lbnQgMyBpbiB0aGUgd2luZG93J3MgcHJvdG90eXBl
IGNoYWluIHdhcyBjbGVhcmVkCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvZG9tL2ludGVyZmFjZXMtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2RvbS9pbnRlcmZh
Y2VzLWV4cGVjdGVkLnR4dAppbmRleCA0NjYxOGVmLi42N2QwNzg4IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvZG9tL2ludGVyZmFj
ZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvaHRtbC9kb20vaW50ZXJmYWNlcy1leHBlY3RlZC50eHQKQEAgLTM3OTksMTQgKzM3
OTksMTAgQEAgRkFJTCBEcmFnRXZlbnQgaW50ZXJmYWNlIG9iamVjdCBuYW1lIGFzc2VydF9vd25f
cHJvcGVydHk6IHNlbGYgZG9lcyBub3QgaGF2ZSBvd24KIEZBSUwgRHJhZ0V2ZW50IGludGVyZmFj
ZTogZXhpc3RlbmNlIGFuZCBwcm9wZXJ0aWVzIG9mIGludGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0
IGFzc2VydF9vd25fcHJvcGVydHk6IHNlbGYgZG9lcyBub3QgaGF2ZSBvd24gcHJvcGVydHkgIkRy
YWdFdmVudCIgZXhwZWN0ZWQgcHJvcGVydHkgIkRyYWdFdmVudCIgbWlzc2luZwogRkFJTCBEcmFn
RXZlbnQgaW50ZXJmYWNlOiBleGlzdGVuY2UgYW5kIHByb3BlcnRpZXMgb2YgaW50ZXJmYWNlIHBy
b3RvdHlwZSBvYmplY3QncyAiY29uc3RydWN0b3IiIHByb3BlcnR5IGFzc2VydF9vd25fcHJvcGVy
dHk6IHNlbGYgZG9lcyBub3QgaGF2ZSBvd24gcHJvcGVydHkgIkRyYWdFdmVudCIgZXhwZWN0ZWQg
cHJvcGVydHkgIkRyYWdFdmVudCIgbWlzc2luZwogRkFJTCBEcmFnRXZlbnQgaW50ZXJmYWNlOiBh
dHRyaWJ1dGUgZGF0YVRyYW5zZmVyIGFzc2VydF9vd25fcHJvcGVydHk6IHNlbGYgZG9lcyBub3Qg
aGF2ZSBvd24gcHJvcGVydHkgIkRyYWdFdmVudCIgZXhwZWN0ZWQgcHJvcGVydHkgIkRyYWdFdmVu
dCIgbWlzc2luZwotRkFJTCBXaW5kb3cgaW50ZXJmYWNlOiBleGlzdGVuY2UgYW5kIHByb3BlcnRp
ZXMgb2YgaW50ZXJmYWNlIG9iamVjdCBhc3NlcnRfZXF1YWxzOiBwcm90b3R5cGUgb2YgV2luZG93
IGlzIG5vdCBFdmVudFRhcmdldCBleHBlY3RlZCBmdW5jdGlvbiAiZnVuY3Rpb24gRXZlbnRUYXJn
ZXQoKSB7Ci0gICAgW25hdGl2ZSBjb2RlXQotfSIgYnV0IGdvdCBmdW5jdGlvbiAiZnVuY3Rpb24g
KCkgewotICAgIFtuYXRpdmUgY29kZV0KLX0iCitQQVNTIFdpbmRvdyBpbnRlcmZhY2U6IGV4aXN0
ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBpbnRlcmZhY2Ugb2JqZWN0IAogUEFTUyBXaW5kb3cgaW50
ZXJmYWNlIG9iamVjdCBsZW5ndGggCiBQQVNTIFdpbmRvdyBpbnRlcmZhY2Ugb2JqZWN0IG5hbWUg
Ci1GQUlMIFdpbmRvdyBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBpbnRl
cmZhY2UgcHJvdG90eXBlIG9iamVjdCBhc3NlcnRfZXF1YWxzOiBDbGFzcyBuYW1lIGZvciBwcm90
b3R5cGUgb2YgV2luZG93LnByb3RvdHlwZSBpcyBub3QgIldpbmRvd1Byb3BlcnRpZXMiIGV4cGVj
dGVkICJbb2JqZWN0IFdpbmRvd1Byb3BlcnRpZXNdIiBidXQgZ290ICJbb2JqZWN0IE9iamVjdF0i
CitGQUlMIFdpbmRvdyBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBpbnRl
cmZhY2UgcHJvdG90eXBlIG9iamVjdCBhc3NlcnRfZXF1YWxzOiBDbGFzcyBuYW1lIGZvciBwcm90
b3R5cGUgb2YgV2luZG93LnByb3RvdHlwZSBpcyBub3QgIldpbmRvd1Byb3BlcnRpZXMiIGV4cGVj
dGVkICJbb2JqZWN0IFdpbmRvd1Byb3BlcnRpZXNdIiBidXQgZ290ICJbb2JqZWN0IEV2ZW50VGFy
Z2V0UHJvdG90eXBlXSIKIEZBSUwgV2luZG93IGludGVyZmFjZTogZXhpc3RlbmNlIGFuZCBwcm9w
ZXJ0aWVzIG9mIGludGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0J3MgImNvbnN0cnVjdG9yIiBwcm9w
ZXJ0eSBhc3NlcnRfb3duX3Byb3BlcnR5OiBXaW5kb3cucHJvdG90eXBlIGRvZXMgbm90IGhhdmUg
b3duIHByb3BlcnR5ICJjb25zdHJ1Y3RvciIgZXhwZWN0ZWQgcHJvcGVydHkgImNvbnN0cnVjdG9y
IiBtaXNzaW5nCiBQQVNTIFdpbmRvdyBpbnRlcmZhY2U6IGF0dHJpYnV0ZSBzZWxmIAogUEFTUyBX
aW5kb3cgaW50ZXJmYWNlOiBhdHRyaWJ1dGUgbmFtZSAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhYWMxZWZhLi5kNDJmMTM1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0xNzA5LDYgKzE3MDksNyBAQAogCQk0NjY5QjI4NzFCODUyQTBCMDAwRjkwNUYgLyogSlNE
T01OYW1lZEZsb3dDb2xsZWN0aW9uQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RjI3NjhFMUI4NTI5N0YwMDVDMjU1NiAvKiBKU0RPTU5h
bWVkRmxvd0NvbGxlY3Rpb25DdXN0b20uY3BwICovOyB9OwogCQk0NjczMDIwMjFDNEVGRTc4MDBC
Q0IzNTcgLyogSWdub3JlT3BlbnNEdXJpbmdVbmxvYWRDb3VudEluY3JlbWVudGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjczMDIwMTFDNEVGRTY2
MDBCQ0IzNTcgLyogSWdub3JlT3BlbnNEdXJpbmdVbmxvYWRDb3VudEluY3JlbWVudGVyLmggKi87
IH07CiAJCTQ2ODlGMUFGMTI2N0JBRTEwMEU4RDM4MCAvKiBGaWxlTWV0YWRhdGEuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODlGMUFFMTI2N0JBRTEw
MEU4RDM4MCAvKiBGaWxlTWV0YWRhdGEuaCAqLzsgfTsKKwkJNDZCNjNGNkMxQzZFOEQxOTAwMkU5
MTRCIC8qIEpTRXZlbnRUYXJnZXRDdXN0b20uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QjYzRjZCMUM2RThDREYwMDJFOTE0QiAvKiBKU0V2ZW50VGFy
Z2V0Q3VzdG9tLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNDZDODNFRkQxQTlCQkUyOTAwQTc5QTQxIC8qIEdlb05vdGlmaWVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzgzRUZCMUE5QkJFMjkw
MEE3OUE0MSAvKiBHZW9Ob3RpZmllci5jcHAgKi87IH07CiAJCTQ2QzgzRUZFMUE5QkJFMjkwMEE3
OUE0MSAvKiBHZW9Ob3RpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDZDODNFRkMxQTlCQkUyOTAwQTc5QTQxIC8qIEdlb05vdGlmaWVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZEQjdENTcx
QjIwRkU0NjAwNTY1MUIyIC8qIFZOb2RlVHJhY2tlckNvY29hLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2REI3RDU2MUIyMEZFM0MwMDU2NTFCMiAv
KiBWTm9kZVRyYWNrZXJDb2NvYS5jcHAgKi87IH07CkBAIC05MTkwLDYgKzkxOTEsNyBAQAogCQk0
NjNFQjYyMTFCODc4OUNCMDA5NkVENTEgLyogVGFnQ29sbGVjdGlvbi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBUYWdDb2xsZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQ2NzMwMjAxMUM0RUZFNjYwMEJDQjM1NyAvKiBJZ25vcmVPcGVuc0R1cmluZ1Vu
bG9hZENvdW50SW5jcmVtZW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SWdub3JlT3BlbnNEdXJpbmdVbmxvYWRDb3VudEluY3JlbWVudGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQ2ODlGMUFFMTI2N0JBRTEwMEU4RDM4MCAvKiBGaWxlTWV0YWRhdGEu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmlsZU1ldGFkYXRhLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2QjYzRjZCMUM2RThDREYwMDJFOTE0QiAvKiBKU0V2
ZW50VGFyZ2V0Q3VzdG9tLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRXZl
bnRUYXJnZXRDdXN0b20uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZDODNFRkIx
QTlCQkUyOTAwQTc5QTQxIC8qIEdlb05vdGlmaWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEdlb05vdGlmaWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDZDODNFRkMxQTlCQkUyOTAwQTc5QTQxIC8qIEdlb05vdGlmaWVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdlb05vdGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQ2REI3RDU2MUIyMEZFM0MwMDU2NTFCMiAvKiBWTm9kZVRyYWNrZXJDb2Nv
YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWTm9kZVRyYWNrZXJD
b2NvYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMjE5Myw2ICsyMjE5NSw3
IEBACiAJCQkJRjNENDYxNDYxMTYxRDUzMjAwQ0EwRDA5IC8qIEpTRXJyb3JIYW5kbGVyLmNwcCAq
LywKIAkJCQlGM0Q0NjE0NzExNjFENTMyMDBDQTBEMDkgLyogSlNFcnJvckhhbmRsZXIuaCAqLywK
IAkJCQlCQzYwOTAxRTBFOTFCOEVDMDAwQzY4QjUgLyogSlNFdmVudFRhcmdldEN1c3RvbS5jcHAg
Ki8sCisJCQkJNDZCNjNGNkIxQzZFOENERjAwMkU5MTRCIC8qIEpTRXZlbnRUYXJnZXRDdXN0b20u
aCAqLywKIAkJCQkzMzE0QUNFOTEwODkyMDg2MDAwRjBFNTYgLyogSlNFeGNlcHRpb25CYXNlLmNw
cCAqLywKIAkJCQkzMzE0QUNFQTEwODkyMDg2MDAwRjBFNTYgLyogSlNFeGNlcHRpb25CYXNlLmgg
Ki8sCiAJCQkJOEY5MzREODQxMTg5RjFFRTAwNTA4RDVEIC8qIEpTTWFpblRocmVhZEV4ZWNTdGF0
ZS5jcHAgKi8sCkBAIC0yNDk4MSw2ICsyNDk4NCw3IEBACiAJCQkJMkVERUYxRjcxMjFCMEVGQzAw
NzI2REIyIC8qIEJsb2JSZWdpc3RyeUltcGwuaCBpbiBIZWFkZXJzICovLAogCQkJCTJFQjRCQ0Qz
MTIxRjAzRTMwMEVDNDg4NSAvKiBCbG9iUmVzb3VyY2VIYW5kbGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTk3NkQ2QzdGMTIyQjhBM0QwMDFGRDFGNyAvKiBCbG9iVVJMLmggaW4gSGVhZGVycyAqLywK
KwkJCQk0NkI2M0Y2QzFDNkU4RDE5MDAyRTkxNEIgLyogSlNFdmVudFRhcmdldEN1c3RvbS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTNGMTk5QkUwODI0NUU1OTAwMUU5QUJDIC8qIEJsb2NrRXhjZXB0
aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1RUI1RTEwRTgxQkU4NzAwQjI1OTY1IC8qIEJv
cmRlckRhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTU4OTU1NkVEMThENEE0NDAwMDc2NEIwMyAv
KiBCb3JkZXJFZGdlLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAppbmRleCAxMTVkYWU1Li5hNTE4ZmM3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCkBA
IC03NTEsMzQgKzc1MSw2IEBAIEpTVmFsdWUgSlNET01XaW5kb3c6OnNldEludGVydmFsKEV4ZWNT
dGF0ZSYgc3RhdGUpCiAgICAgcmV0dXJuIGpzTnVtYmVyKHJlc3VsdCk7CiB9CiAKLUpTVmFsdWUg
SlNET01XaW5kb3c6OmFkZEV2ZW50TGlzdGVuZXIoRXhlY1N0YXRlJiBzdGF0ZSkKLXsKLSAgICBG
cmFtZSogZnJhbWUgPSB3cmFwcGVkKCkuZnJhbWUoKTsKLSAgICBpZiAoIWZyYW1lKQotICAgICAg
ICByZXR1cm4ganNVbmRlZmluZWQoKTsKLQotICAgIEpTVmFsdWUgbGlzdGVuZXIgPSBzdGF0ZS5h
cmd1bWVudCgxKTsKLSAgICBpZiAoIWxpc3RlbmVyLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVy
biBqc1VuZGVmaW5lZCgpOwotCi0gICAgd3JhcHBlZCgpLmFkZEV2ZW50TGlzdGVuZXIoc3RhdGUu
YXJndW1lbnQoMCkudG9TdHJpbmcoJnN0YXRlKS0+dG9BdG9taWNTdHJpbmcoJnN0YXRlKSwgSlNF
dmVudExpc3RlbmVyOjpjcmVhdGUoYXNPYmplY3QobGlzdGVuZXIpLCB0aGlzLCBmYWxzZSwgZ2xv
YmFsT2JqZWN0KCktPndvcmxkKCkpLCBzdGF0ZS5hcmd1bWVudCgyKS50b0Jvb2xlYW4oJnN0YXRl
KSk7Ci0gICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci19Ci0KLUpTVmFsdWUgSlNET01XaW5kb3c6
OnJlbW92ZUV2ZW50TGlzdGVuZXIoRXhlY1N0YXRlJiBzdGF0ZSkKLXsKLSAgICBGcmFtZSogZnJh
bWUgPSB3cmFwcGVkKCkuZnJhbWUoKTsKLSAgICBpZiAoIWZyYW1lKQotICAgICAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKLQotICAgIEpTVmFsdWUgbGlzdGVuZXIgPSBzdGF0ZS5hcmd1bWVudCgx
KTsKLSAgICBpZiAoIWxpc3RlbmVyLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOwotCi0gICAgd3JhcHBlZCgpLnJlbW92ZUV2ZW50TGlzdGVuZXIoc3RhdGUuYXJndW1l
bnQoMCkudG9TdHJpbmcoJnN0YXRlKS0+dG9BdG9taWNTdHJpbmcoJnN0YXRlKSwgSlNFdmVudExp
c3RlbmVyOjpjcmVhdGUoYXNPYmplY3QobGlzdGVuZXIpLCB0aGlzLCBmYWxzZSwgZ2xvYmFsT2Jq
ZWN0KCktPndvcmxkKCkpLnB0cigpLCBzdGF0ZS5hcmd1bWVudCgyKS50b0Jvb2xlYW4oJnN0YXRl
KSk7Ci0gICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci19Ci0KIERPTVdpbmRvdyogSlNET01XaW5k
b3c6OnRvV3JhcHBlZChKU1ZhbHVlIHZhbHVlKQogewogICAgIGlmICghdmFsdWUuaXNPYmplY3Qo
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hl
bGwuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5jcHAK
aW5kZXggMTEyMDY2OC4uNjYwMzU0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01XaW5kb3dTaGVsbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01XaW5kb3dTaGVsbC5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJGcmFt
ZS5oIgogI2luY2x1ZGUgIkdDQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkpTRE9NV2luZG93Lmgi
Ci0jaW5jbHVkZSAiRE9NV2luZG93LmgiCisjaW5jbHVkZSAiSlNFdmVudFRhcmdldC5oIgogI2lu
Y2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlIDxoZWFwL1N0cm9uZ0lubGluZXMu
aD4KICNpbmNsdWRlIDxydW50aW1lL0pTT2JqZWN0Lmg+CkBAIC04NSw2ICs4NSw3IEBAIHZvaWQg
SlNET01XaW5kb3dTaGVsbDo6c2V0V2luZG93KFBhc3NSZWZQdHI8RE9NV2luZG93PiBkb21XaW5k
b3cpCiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBKU0RPTVdpbmRvdzo6Y3JlYXRlU3RydWN0
dXJlKHZtLCAwLCBwcm90b3R5cGUuZ2V0KCkpOwogICAgIEpTRE9NV2luZG93KiBqc0RPTVdpbmRv
dyA9IEpTRE9NV2luZG93OjpjcmVhdGUodm0sIHN0cnVjdHVyZSwgKmRvbVdpbmRvdywgdGhpcyk7
CiAgICAgcHJvdG90eXBlLT5zdHJ1Y3R1cmUoKS0+c2V0R2xvYmFsT2JqZWN0KHZtLCBqc0RPTVdp
bmRvdyk7CisgICAgcHJvdG90eXBlLT5zdHJ1Y3R1cmUoKS0+c2V0UHJvdG90eXBlV2l0aG91dFRy
YW5zaXRpb24odm0sIEpTRXZlbnRUYXJnZXQ6OmdldFByb3RvdHlwZSh2bSwganNET01XaW5kb3cp
KTsKICAgICBzZXRXaW5kb3codm0sIGpzRE9NV2luZG93KTsKICAgICBBU1NFUlQoanNET01XaW5k
b3ctPmdsb2JhbE9iamVjdCgpID09IGpzRE9NV2luZG93KTsKICAgICBBU1NFUlQocHJvdG90eXBl
LT5nbG9iYWxPYmplY3QoKSA9PSBqc0RPTVdpbmRvdyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmgKaW5kZXggMDFmMDQ4ZC4uYmRmZGQyZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuaApAQCAtMjksMTIg
KzI5LDEyIEBACiAjaWZuZGVmIEpTRE9NV2luZG93U2hlbGxfaAogI2RlZmluZSBKU0RPTVdpbmRv
d1NoZWxsX2gKIAorI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkpTRE9NV2luZG93
LmgiCiAjaW5jbHVkZSA8cnVudGltZS9KU1Byb3h5Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotICAgIGNsYXNzIERPTVdpbmRvdzsKICAgICBjbGFzcyBGcmFtZTsKIAogICAgIGNsYXNzIEpT
RE9NV2luZG93U2hlbGwgOiBwdWJsaWMgSlNDOjpKU1Byb3h5IHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RpY3Rpb25hcnkuY3BwCmluZGV4IDMzNDZjY2YuLjY2MzRlMTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmNwcApAQCAtMjcsNiArMjcs
NyBAQAogI2luY2x1ZGUgIkpTRGljdGlvbmFyeS5oIgogCiAjaW5jbHVkZSAiQXJyYXlWYWx1ZS5o
IgorI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkRpY3Rpb25hcnkuaCIKICNpbmNs
dWRlICJKU0NTU0ZvbnRGYWNlUnVsZS5oIgogI2luY2x1ZGUgIkpTRE9NRXJyb3IuaCIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRDdXN0b20uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEN1c3RvbS5jcHAKaW5k
ZXggZThlYWQxYy4uYmE4ZDE2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNFdmVudFRhcmdldEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNFdmVudFRhcmdldEN1c3RvbS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAwOCwgMjAxNiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDEwICsyNiwxNSBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIkpTRXZlbnRUYXJnZXQuaCIKIAorI2luY2x1ZGUgIkRPTVdpbmRv
dy5oIgorI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiRXZlbnRUYXJnZXRIZWFk
ZXJzLmgiCiAjaW5jbHVkZSAiRXZlbnRUYXJnZXRJbnRlcmZhY2VzLmgiCisjaW5jbHVkZSAiSlNE
T01XaW5kb3cuaCIKICNpbmNsdWRlICJKU0RPTVdpbmRvd1NoZWxsLmgiCiAjaW5jbHVkZSAiSlNF
dmVudExpc3RlbmVyLmgiCisjaW5jbHVkZSAiSlNXb3JrZXJHbG9iYWxTY29wZS5oIgorI2luY2x1
ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKQEAgLTYx
LDEyICs2NiwyMyBAQCBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBFdmVudFRhcmdldCogdGFyZwogRXZlbnRUYXJnZXQqIEpTRXZl
bnRUYXJnZXQ6OnRvV3JhcHBlZChKU0M6OkpTVmFsdWUgdmFsdWUpCiB7CiAgICAgVFJZX1RPX1VO
V1JBUF9XSVRIX0lOVEVSRkFDRShET01XaW5kb3dTaGVsbCkKKyAgICBUUllfVE9fVU5XUkFQX1dJ
VEhfSU5URVJGQUNFKERPTVdpbmRvdykKKyAgICBUUllfVE9fVU5XUkFQX1dJVEhfSU5URVJGQUNF
KFdvcmtlckdsb2JhbFNjb3BlKQogICAgIFRSWV9UT19VTldSQVBfV0lUSF9JTlRFUkZBQ0UoRXZl
bnRUYXJnZXQpCi0gICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIG9uY2UgYWxsIGV2ZW50IHRhcmdl
dHMgZXh0ZW5kIEV2ZW50VGFyZ2V0Ci0gICAgRE9NX0VWRU5UX1RBUkdFVF9JTlRFUkZBQ0VTX0ZP
Ul9FQUNIKFRSWV9UT19VTldSQVBfV0lUSF9JTlRFUkZBQ0UpCi0gICAgcmV0dXJuIDA7CisgICAg
cmV0dXJuIG51bGxwdHI7CiB9CiAKICN1bmRlZiBUUllfVE9fVU5XUkFQX1dJVEhfSU5URVJGQUNF
CiAKK3N0ZDo6dW5pcXVlX3B0cjxKU0V2ZW50VGFyZ2V0Q2FzdGVkVGhpcz4gSlNFdmVudFRhcmdl
dENhc3RlZFRoaXM6OmNyZWF0ZShKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlKQoreworICAgIGlmIChh
dXRvKiBqc0V2ZW50VGFyZ2V0ID0gSlNDOjpqc0R5bmFtaWNDYXN0PEpTRXZlbnRUYXJnZXQqPih0
aGlzVmFsdWUpKQorICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxKU0V2ZW50VGFyZ2V0
Q2FzdGVkVGhpcz4oanNFdmVudFRhcmdldC0+d3JhcHBlZCgpLCAqanNFdmVudFRhcmdldCk7Cisg
ICAgaWYgKGF1dG8qIGpzRE9NV2luZG93ID0gdG9KU0RPTVdpbmRvdyh0aGlzVmFsdWUpKQorICAg
ICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxKU0V2ZW50VGFyZ2V0Q2FzdGVkVGhpcz4oanNE
T01XaW5kb3ctPndyYXBwZWQoKSwgKmpzRE9NV2luZG93KTsKKyAgICBpZiAoYXV0byoganNXb3Jr
ZXJHbG9iYWxTY29wZSA9IHRvSlNXb3JrZXJHbG9iYWxTY29wZSh0aGlzVmFsdWUpKQorICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxKU0V2ZW50VGFyZ2V0Q2FzdGVkVGhpcz4oanNXb3Jr
ZXJHbG9iYWxTY29wZS0+d3JhcHBlZCgpLCAqanNXb3JrZXJHbG9iYWxTY29wZSk7CisgICAgcmV0
dXJuIG51bGxwdHI7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRDdXN0b20uaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRDdXN0b20uaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi5hOTExMTFmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEN1c3RvbS5oCkBAIC0wLDAgKzEsNTUgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIEpTRXZlbnRUYXJnZXRDdXN0b21faAorI2RlZmluZSBKU0V2
ZW50VGFyZ2V0Q3VzdG9tX2gKKworI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKKy8vIFdyYXBwZXIgdHlwZSBmb3IgSlNFdmVudFRhcmdldCdzIGNhc3Rl
ZFRoaXMgYmVjYXVzZSBKU0RPTVdpbmRvdyBhbmQgSlNXb3JrZXJHbG9iYWxTY29wZSBkbyBub3Qg
aW5oZXJpdCBKU0V2ZW50VGFyZ2V0LgorY2xhc3MgSlNFdmVudFRhcmdldENhc3RlZFRoaXMgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8SlNFdmVudFRhcmdldENhc3RlZFRoaXM+IGNyZWF0ZShKU0M6OkpTVmFsdWUgdGhp
c1ZhbHVlKTsKKworICAgIEV2ZW50VGFyZ2V0JiB3cmFwcGVkKCkgeyByZXR1cm4gbV93cmFwcGVk
OyB9CisKKyAgICBvcGVyYXRvciBKU0M6OkpTT2JqZWN0JigpIHsgcmV0dXJuIG1fd3JhcHBlcjsg
fQorCisgICAgSlNFdmVudFRhcmdldENhc3RlZFRoaXMoRXZlbnRUYXJnZXQmIHdyYXBwZWQsIEpT
Qzo6SlNPYmplY3QmIHdyYXBwZXIpCisgICAgICAgIDogbV93cmFwcGVkKHdyYXBwZWQpCisgICAg
ICAgICwgbV93cmFwcGVyKHdyYXBwZXIpCisgICAgeyB9CisKK3ByaXZhdGU6CisgICAgRXZlbnRU
YXJnZXQmIG1fd3JhcHBlZDsKKyAgICBKU0M6OkpTT2JqZWN0JiBtX3dyYXBwZXI7Cit9OworCit9
CisKKyNlbmRpZiAvLyBKU0V2ZW50VGFyZ2V0Q3VzdG9tX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggMDlkMTc4
Yi4uZGUyZDAwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2Vy
U2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29y
a2VyU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkpT
RE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaCIK
KyNpbmNsdWRlICJKU0V2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5o
IgogI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlICJXb3JrZXJHbG9i
YWxTY29wZS5oIgpAQCAtODksNiArOTAsNyBAQCB2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6
OmluaXRTY3JpcHQoKQogICAgICAgICBBU1NFUlQoc3RydWN0dXJlLT5nbG9iYWxPYmplY3QoKSA9
PSBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlcik7CiAgICAgICAgIEFTU0VSVChtX3dvcmtlckds
b2JhbFNjb3BlV3JhcHBlci0+c3RydWN0dXJlKCktPmdsb2JhbE9iamVjdCgpID09IG1fd29ya2Vy
R2xvYmFsU2NvcGVXcmFwcGVyKTsKICAgICAgICAgd29ya2VyR2xvYmFsU2NvcGVQcm90b3R5cGUt
PnN0cnVjdHVyZSgpLT5zZXRHbG9iYWxPYmplY3QoKm1fdm0sIG1fd29ya2VyR2xvYmFsU2NvcGVX
cmFwcGVyLmdldCgpKTsKKyAgICAgICAgd29ya2VyR2xvYmFsU2NvcGVQcm90b3R5cGUtPnN0cnVj
dHVyZSgpLT5zZXRQcm90b3R5cGVXaXRob3V0VHJhbnNpdGlvbigqbV92bSwgSlNFdmVudFRhcmdl
dDo6Z2V0UHJvdG90eXBlKCptX3ZtLCBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci5nZXQoKSkp
OwogICAgICAgICBkZWRpY2F0ZWRDb250ZXh0UHJvdG90eXBlLT5zdHJ1Y3R1cmUoKS0+c2V0R2xv
YmFsT2JqZWN0KCptX3ZtLCBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci5nZXQoKSk7CiAgICAg
fQogICAgIEFTU0VSVChtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci0+Z2xvYmFsT2JqZWN0KCkg
PT0gbV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCBlMmM1MGE4Li4zYTM3MWM0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbQpAQCAtNTU4LDYgKzU1OCw3IEBAIHN1YiBTaG91bGRHZW5lcmF0ZVRvSlNEZWNsYXJh
dGlvbgogICAgIHJldHVybiAwIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
U3VwcHJlc3NUb0pTT2JqZWN0In0pOwogICAgIHJldHVybiAwIGlmIG5vdCBOZWVkc0ltcGxlbWVu
dGF0aW9uQ2xhc3MoJGludGVyZmFjZSk7CiAgICAgcmV0dXJuIDAgaWYgJGludGVyZmFjZS0+bmFt
ZSBlcSAiQWJzdHJhY3RWaWV3IjsKKyAgICByZXR1cm4gMCBpZiAkaW50ZXJmYWNlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tUHJveHlUb0pTT2JqZWN0In07CiAgICAgcmV0dXJuIDEgaWYg
KCEkaGFzUGFyZW50IG9yICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU0dlbmVy
YXRlVG9KU09iamVjdCJ9IG9yICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0
b21Ub0pTT2JqZWN0In0pOwogICAgIHJldHVybiAxIGlmICRpbnRlcmZhY2UtPnBhcmVudCAmJiAk
aW50ZXJmYWNlLT5wYXJlbnQgZXEgIkV2ZW50VGFyZ2V0IjsKICAgICByZXR1cm4gMDsKQEAgLTE3
NDAsNiArMTc0MSw3IEBAIHN1YiBHZXRDYXN0aW5nSGVscGVyRm9yVGhpc09iamVjdAogICAgIGlm
ICgkaW50ZXJmYWNlLT5uYW1lIGVxICJEb2N1bWVudCIpIHsKICAgICAgICAgcmV0dXJuICJqc0Rv
Y3VtZW50Q2FzdCI7CiAgICAgfQorICAgIHJldHVybiAiSlNFdmVudFRhcmdldENhc3RlZFRoaXM6
OmNyZWF0ZSIgaWYgJGludGVyZmFjZS0+bmFtZSBlcSAiRXZlbnRUYXJnZXQiOwogICAgIHJldHVy
biAianNEeW5hbWljQ2FzdDxKUyIgLiAkaW50ZXJmYWNlLT5uYW1lIC4gIio+IjsKIH0KIApAQCAt
MzIyOCwxOSArMzIzMCwxNSBAQCBzdWIgR2VuZXJhdGVGdW5jdGlvbkNhc3RlZFRoaXMKICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJGNsYXNzTmFtZSogY2FzdGVkVGhpcyA9IHRvJHtj
bGFzc05hbWV9KHN0YXRlLT50aGlzVmFsdWUoKS50b1RoaXMoc3RhdGUsIE5vdFN0cmljdE1vZGUp
KTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKVxuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7XG4iKTsKLSAgICB9IGVsc2lmICgkaW50ZXJmYWNl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiV29ya2VyR2xvYmFsU2NvcGUifSkgewotICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICAkY2xhc3NOYW1lKiBjYXN0ZWRUaGlzID0gdG8ke2NsYXNz
TmFtZX0oc3RhdGUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhzdGF0ZSwgTm90U3RyaWN0TW9kZSkpO1xu
Iik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpXG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTtcbiIpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgp
O1xuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICRjbGFzc05hbWUqIGNhc3Rl
ZFRoaXMgPSAiIC4gR2V0Q2FzdGluZ0hlbHBlckZvclRoaXNPYmplY3QoJGludGVyZmFjZSkgLiAi
KHRoaXNWYWx1ZSk7XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byBj
YXN0ZWRUaGlzID0gIiAuIEdldENhc3RpbmdIZWxwZXJGb3JUaGlzT2JqZWN0KCRpbnRlcmZhY2Up
IC4gIih0aGlzVmFsdWUpO1xuIik7CiAgICAgICAgIG15ICRkb21GdW5jdGlvbk5hbWUgPSAkZnVu
Y3Rpb24tPnNpZ25hdHVyZS0+bmFtZTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSlcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIFwiJGludGVyZmFj
ZU5hbWVcIiwgXCIkZG9tRnVuY3Rpb25OYW1lXCIpO1xuIik7CiAgICAgfQogCi0gICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCAk
e2NsYXNzTmFtZX06OmluZm8oKSk7XG4iKTsKKyAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsICR7Y2xhc3NOYW1lfTo6aW5mbygp
KTtcbiIpIHVubGVzcyAkaW50ZXJmYWNlTmFtZSBlcSAiRXZlbnRUYXJnZXQiOwogfQogCiBzdWIg
R2VuZXJhdGVDYWxsV2l0aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFy
Z2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKaW5kZXggNTZhYTI5
My4uNWJiOTBiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCkBAIC03NiwxMSArNzYs
MjAgQEAgYm9vbCBFdmVudFRhcmdldDo6aXNNZXNzYWdlUG9ydCgpIGNvbnN0CiAKIGJvb2wgRXZl
bnRUYXJnZXQ6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUs
IFJlZlB0cjxFdmVudExpc3RlbmVyPiYmIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCiB7Cisg
ICAgaWYgKGF1dG8qIHdpbmRvdyA9IHRvRE9NV2luZG93KCkpIHsKKyAgICAgICAgaWYgKCF3aW5k
b3ctPmZyYW1lKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogICAgIHJldHVy
biBlbnN1cmVFdmVudFRhcmdldERhdGEoKS5ldmVudExpc3RlbmVyTWFwLmFkZChldmVudFR5cGUs
IFdURk1vdmUobGlzdGVuZXIpLCB1c2VDYXB0dXJlKTsKIH0KIAogYm9vbCBFdmVudFRhcmdldDo6
cmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRM
aXN0ZW5lciogbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKIHsKKyAgICBpZiAoYXV0byogd2lu
ZG93ID0gdG9ET01XaW5kb3coKSkgeworICAgICAgICBpZiAoIXdpbmRvdy0+ZnJhbWUoKSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKICAgICBFdmVudFRhcmdldERhdGEqIGQg
PSBldmVudFRhcmdldERhdGEoKTsKICAgICBpZiAoIWQpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaWRsCmluZGV4IGE0OGIzZGIuLmE5NTUyODcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5pZGwKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmlkbApAQCAtMjUsNiArMjUsNyBAQAogICAgIEN1c3RvbVRv
SlNPYmplY3QsCiAgICAgSlNDdXN0b21Ub05hdGl2ZU9iamVjdCwKICAgICBFdmVudFRhcmdldCwK
KyAgICBKU0N1c3RvbUhlYWRlciwKIF0gaW50ZXJmYWNlIEV2ZW50VGFyZ2V0IHsKICAgICBbT2Jq
Q0xlZ2FjeVVubmFtZWRQYXJhbWV0ZXJzXSB2b2lkIGFkZEV2ZW50TGlzdGVuZXIoRE9NU3RyaW5n
IHR5cGUsIEV2ZW50TGlzdGVuZXIgbGlzdGVuZXIsIG9wdGlvbmFsIGJvb2xlYW4gdXNlQ2FwdHVy
ZSk7CiAgICAgW09iakNMZWdhY3lVbm5hbWVkUGFyYW1ldGVyc10gdm9pZCByZW1vdmVFdmVudExp
c3RlbmVyKERPTVN0cmluZyB0eXBlLCBFdmVudExpc3RlbmVyIGxpc3RlbmVyLCBvcHRpb25hbCBi
b29sZWFuIHVzZUNhcHR1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01X
aW5kb3cuaWRsIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCmluZGV4IDg4M2M5
MjMuLjUyMmExZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93Lmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKQEAgLTM2LDEwICszNiw5
IEBACiAgICAgSlNDdXN0b21Ub05hdGl2ZU9iamVjdCwKICAgICBDdXN0b21QdXRGdW5jdGlvbiwK
ICAgICBFdmVudFRhcmdldCwKLSAgICBKU0dlbmVyYXRlVG9OYXRpdmVPYmplY3QsCiAgICAgSlNM
ZWdhY3lQYXJlbnQ9SlNET01XaW5kb3dCYXNlLAogICAgIEludGVyZmFjZU5hbWU9V2luZG93LAot
XSBpbnRlcmZhY2UgRE9NV2luZG93IHsKK10gaW50ZXJmYWNlIERPTVdpbmRvdyA6IEV2ZW50VGFy
Z2V0IHsKICAgICAvLyBET00gTGV2ZWwgMAogICAgIFtSZXBsYWNlYWJsZV0gcmVhZG9ubHkgYXR0
cmlidXRlIFNjcmVlbiBzY3JlZW47CiAgICAgW1JlcGxhY2VhYmxlXSByZWFkb25seSBhdHRyaWJ1
dGUgSGlzdG9yeSBoaXN0b3J5OwpAQCAtMTg2LDExICsxODUsNiBAQAogCiAgICAgW1JlcGxhY2Vh
YmxlXSByZWFkb25seSBhdHRyaWJ1dGUgRE9NV2luZG93Q1NTIENTUzsKIAotICAgIC8vIEV2ZW50
VGFyZ2V0IGludGVyZmFjZQotICAgIFtDdXN0b21dIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihET01T
dHJpbmcgdHlwZSwgRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwgb3B0aW9uYWwgYm9vbGVhbiB1c2VD
YXB0dXJlKTsKLSAgICBbQ3VzdG9tXSB2b2lkIHJlbW92ZUV2ZW50TGlzdGVuZXIoRE9NU3RyaW5n
IHR5cGUsIEV2ZW50TGlzdGVuZXIgbGlzdGVuZXIsIG9wdGlvbmFsIGJvb2xlYW4gdXNlQ2FwdHVy
ZSk7Ci0gICAgW0ltcGxlbWVudGVkQXM9ZGlzcGF0Y2hFdmVudEZvckJpbmRpbmdzLCBSYWlzZXNF
eGNlcHRpb25dIGJvb2xlYW4gZGlzcGF0Y2hFdmVudChFdmVudCBldmVudCk7Ci0KICAgICB2b2lk
IGNhcHR1cmVFdmVudHMoLyppbiBsb25nIGV2ZW50RmxhZ3MqLyk7CiAgICAgdm9pZCByZWxlYXNl
RXZlbnRzKC8qaW4gbG9uZyBldmVudEZsYWdzKi8pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyR2xvYmFsU2NvcGUuaWRsCmluZGV4IDc0OGVhZjAuLjNhMTExMGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaWRsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaWRsCkBAIC0zMSw3ICszMSw3
IEBACiAgICAgSlNDdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3RBbmREZXNjcmlwdG9yLAogICAgIEV2
ZW50VGFyZ2V0LAogICAgIEpTTGVnYWN5UGFyZW50PUpTV29ya2VyR2xvYmFsU2NvcGVCYXNlLAot
XSBpbnRlcmZhY2UgV29ya2VyR2xvYmFsU2NvcGUgeworXSBpbnRlcmZhY2UgV29ya2VyR2xvYmFs
U2NvcGUgOiBFdmVudFRhcmdldCB7CiAKICNpZiBkZWZpbmVkKExBTkdVQUdFX0pBVkFTQ1JJUFQp
ICYmIExBTkdVQUdFX0pBVkFTQ1JJUFQKICAgICBbUmVwbGFjZWFibGVdIHJlYWRvbmx5IGF0dHJp
YnV0ZSAgV29ya2VyR2xvYmFsU2NvcGUgc2VsZjsKQEAgLTQ4LDEyICs0OCw2IEBACiAgICAgW0N1
c3RvbV0gdm9pZCBpbXBvcnRTY3JpcHRzKC8qW1ZhcmlhZGljXSBET01TdHJpbmcgdXJscyAqLyk7
CiAgICAgW1JlcGxhY2VhYmxlXSByZWFkb25seSBhdHRyaWJ1dGUgV29ya2VyTmF2aWdhdG9yIG5h
dmlnYXRvcjsKIAotICAgIC8vIEV2ZW50VGFyZ2V0IGludGVyZmFjZQotCi0gICAgdm9pZCBhZGRF
dmVudExpc3RlbmVyKERPTVN0cmluZyB0eXBlLCBFdmVudExpc3RlbmVyIGxpc3RlbmVyLCBvcHRp
b25hbCBib29sZWFuIHVzZUNhcHR1cmUpOwotICAgIHZvaWQgcmVtb3ZlRXZlbnRMaXN0ZW5lcihE
T01TdHJpbmcgdHlwZSwgRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwgb3B0aW9uYWwgYm9vbGVhbiB1
c2VDYXB0dXJlKTsKLSAgICBbSW1wbGVtZW50ZWRBcz1kaXNwYXRjaEV2ZW50Rm9yQmluZGluZ3Ms
IFJhaXNlc0V4Y2VwdGlvbl0gYm9vbGVhbiBkaXNwYXRjaEV2ZW50KEV2ZW50IGV2ZW50KTsKLQog
ICAgIC8vIEFkZGl0aW9uYWwgY29uc3RydWN0b3JzCiAKICAgICBhdHRyaWJ1dGUgRE9NVVJMQ29u
c3RydWN0b3Igd2Via2l0VVJMOyAvLyBGSVhNRTogZGVwcmVjYXRlIHRoaXMuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>271251</attachid>
            <date>2016-02-12 17:16:15 -0800</date>
            <delta_ts>2016-02-12 18:13:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-154170-20160212171554.patch</filename>
            <type>text/plain</type>
            <size>99663</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk2NTMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2QzZTlhZTExODBkZDhi
NDlkZGQ3ZGE3NjVkNGIyZTNiY2ZmMzM4YS4uNjM2NGEyYjQ1ZTk1NmQ1Mzg3N2RlNWI5NGQ5ZDVm
ZmQ1ZTYxN2Y2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk3IEBACisyMDE2LTAyLTEyICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgV2luZG93IGFuZCBXb3JrZXJH
bG9iYWxTY29wZSBzaG91bGQgaW5oZXJpdCBFdmVudFRhcmdldAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU0MTcwCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2luZG93IGFuZCBXb3JrZXJHbG9iYWxTY29w
ZSBzaG91bGQgaW5oZXJpdCBFdmVudFRhcmdldCBpbnN0ZWFkIG9mCisgICAgICAgIGR1cGxpY2F0
aW5nIHRoZSBFdmVudFRhcmdldCBBUEkgaW4gdGhlaXIgSURMLiBUaGVzZSB3ZXJlIHRoZSBsYXN0
CisgICAgICAgIGludGVyZmFjZXMgdGhhdCBuZWVkZWQgZml4aW5nLiBUaGUgbmV4dCBzdGVwIHdp
bGwgYmUgdG8gZ2V0IHJpZAorICAgICAgICBvZiB0aGUgW0V2ZW50VGFyZ2V0XSBJREwgZXh0ZW5k
ZWQgYXR0cmlidXRlIGFuZCByZWx5IGVudGlyZWx5CisgICAgICAgIG9uIHRoZSBFdmVudFRhcmdl
dCBpbmhlcml0YW5jZS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGFscmVhZHkgY292ZXJlZCBi
eSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgQWRkIEpTRXZlbnRUYXJnZXRDdXN0b20uaCBoZWFkZXIgdG8gdGhl
IHByb2plY3QuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHA6
CisgICAgICAgIERyb3AgY3VzdG9tIGJpbmRpbmdzIGZvciBXaW5kb3cncyBhZGRFdmVudExpc3Rl
bmVyKCkgYW5kCisgICAgICAgIHJlbW92ZUV2ZW50TGlzdGVuZXIoKS4gVGhlIG9ubHkgcmVhc29u
IHRoZXNlIG5lZWRlZCBjdXN0b20KKyAgICAgICAgY29kZSB3YXMgdG8gYWRkIGEgY2hlY2sgZm9y
IGZyYW1lbGVzcyB3aW5kb3dzLiBUaGUgZnJhbWVsZXNzCisgICAgICAgIFdpbmRvdyBjaGVja3Mg
d2FzIG1vdmVkIHRvIHRoZSByZXNwZWN0aXZlIG1ldGhvZHMgaW4gdGhlCisgICAgICAgIEV2ZW50
VGFyZ2V0IGNsYXNzIGluc3RlYWQuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRv
d1NoZWxsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93U2hlbGw6OnNldFdpbmRv
dyk6CisgICAgICAgIFNldCBXaW5kb3dQcm90b3R5cGUncyBwcm90b3R5cGUgdG8gRXZlbnRUYXJn
ZXQncyBwcm90b3R5cGUuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxs
Lmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmNwcDoKKyAgICAgICAgSW5j
bHVkZSAiRE9NV2luZG93LmgiIHRvIGZpeCB0aGUgYnVpbGQuCisKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0V2ZW50VGFyZ2V0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRXZlbnRU
YXJnZXQ6OnRvV3JhcHBlZCk6CisgICAgICAgIEhhbmRsZSBET01XaW5kb3cgYW5kIFdvcmtlckds
b2JhbFNjb3BlIGV4cGxpY2l0ZWx5IGluIHRvV3JhcHBlZCgpCisgICAgICAgIGFuZCBnZXQgcmlk
IG9mIHRoZSBET01fRVZFTlRfVEFSR0VUX0lOVEVSRkFDRVNfRk9SX0VBQ0goVFJZX1RPX1VOV1JB
UF9XSVRIX0lOVEVSRkFDRSkKKyAgICAgICAgbm93IHRoYXQgYWxsIGludGVyZmFjZXMgaW5oZXJp
dCBFdmVudFRhcmdldCB3aGVuIHRoZXkgc2hvdWxkLgorICAgICAgICBUaGUgcmVhc29uIERPTVdp
bmRvdyBhbmQgV29ya2VyR2xvYmFsU2NvcGUgc3RpbGwgbmVlZCBzcGVjaWFsCisgICAgICAgIGhh
bmRsaW5nIGlzIGJlY2F1c2UgdGhlaXIgd3JhcHBlcnMgKEpTRE9NV2luZG93IC8KKyAgICAgICAg
SlNXb3JrZXJHbG9iYWxTY29wZSkgZG8gbm90IHN1YmNsYXNzIEpTRXZlbnRUYXJnZXQuCisKKyAg
ICAgICAgKFdlYkNvcmU6OkpTRXZlbnRUYXJnZXRPckdsb2JhbFNjb3BlOjpjcmVhdGUpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRDdXN0b20uaDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpKU0V2ZW50VGFyZ2V0T3JHbG9iYWxTY29wZTo6d3JhcHBlZCk6CisgICAgICAg
IChXZWJDb3JlOjpKU0V2ZW50VGFyZ2V0T3JHbG9iYWxTY29wZTo6b3BlcmF0b3IgSlNDOjpKU09i
amVjdCYpOgorICAgICAgICAoV2ViQ29yZTo6SlNFdmVudFRhcmdldE9yR2xvYmFsU2NvcGU6OkpT
RXZlbnRUYXJnZXRPckdsb2JhbFNjb3BlKToKKyAgICAgICAgQWRkIGEgd3JhcHBlciB0eXBlIGZv
ciBKU0V2ZW50VGFyZ2V0IC8gSlNET01XaW5kb3cgYW5kCisgICAgICAgIEpTV29ya2VyR2xvYmFs
U2NvcGUgZm9yIHVzZSBpbiB0aGUgZ2VuZXJhdGVkIGJpbmRpbmdzLiBUaGlzIGlzCisgICAgICAg
IG5lZWRlZCBiZWNhdXNlIEpTRE9NV2luZG93IGFuZCBKU1dvcmtlckdsb2JhbFNjb3BlIGRvIG5v
dAorICAgICAgICBzdWJjbGFzcyBKU0V2ZW50VGFyZ2V0LiBTdWJjbGFzc2luZyBKU0V2ZW50VGFy
Z2V0IHdvdWxkIGJlCisgICAgICAgIGNvbXBsaWNhdGVkIGZvciB0aGVtIGJlY2F1c2UgdGhleSBh
bHJlYWR5IHN1YmNsYXNzCisgICAgICAgIEpTRE9NV2luZG93QmFzZSAvIEpTV29ya2VyR2xvYmFs
U2NvcGVCYXNlLCB3aGljaCBzdWJjbGFzc2VzCisgICAgICAgIEpTRE9NR2xvYmFsT2JqZWN0Lgor
CisgICAgICAgICogYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0KToKKyAgICAg
ICAgU2V0IFdvcmtlckdsb2JhbFNjb3BlUHJvdG90eXBlJ3MgcHJvdG90eXBlIHRvIEV2ZW50VGFy
Z2V0J3MgcHJvdG90eXBlLgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG06CisgICAgICAgIChTaG91bGRHZW5lcmF0ZVRvSlNEZWNsYXJhdGlvbik6CisgICAg
ICAgIERvIG5vdCBnZW5lcmF0ZSB0byB0b0pTKCkgaW1wbGVtZW50YXRpb24gZm9yIGludGVyZmFj
ZXMgdGhhdCB1c2UKKyAgICAgICAgdGhlIFtDdXN0b21Qcm94eVRvSlNPYmplY3RdIElETCBleHRl
bmRlZCBhdHRyaWJ1dGUsIGV2ZW4gaWYgdGhleQorICAgICAgICBpbmhlcml0IEV2ZW50VGFyZ2V0
LgorCisgICAgICAgIChHZXRDYXN0aW5nSGVscGVyRm9yVGhpc09iamVjdCk6CisgICAgICAgIFRv
IGluaXRpYWxpemUgY2FzdGVkVGhpcyBmcm9tIHRoaXNWYWx1ZSBKU1ZhbHVlLCB3ZSBub3cgdXNl
IHRoZQorICAgICAgICBKU0V2ZW50VGFyZ2V0T3JHbG9iYWxTY29wZSB3cmFwcGVyIGZvciB0aGUg
RXZlbnRUYXJnZXQKKyAgICAgICAgaW1wbGVtZW50YXRpb24uIFRoaXMgaXMgdG8gd29yayBhcm91
bmQgdGhlIGZhY3QgdGhhdCBKU0RPTVdpbmRvdworICAgICAgICBhbmQgSlNXb3JrZXJHbG9iYWxT
Y29wZSBkbyBub3Qgc3ViY2xhc3MgSlNFdmVudFRhcmdldC4KKworICAgICAgICAoR2VuZXJhdGVG
dW5jdGlvbkNhc3RlZFRoaXMpOgorICAgICAgICAtIERyb3AgY29kZSBoYW5kbGluZyBbV29ya2Vy
R2xvYmFsU2NvcGVdIElETCBleHRlbmRlZCBhdHRyaWJ1dGUKKyAgICAgICAgICBhcyB0aGVyZSBp
cyBubyBzdWNoIGF0dHJpYnV0ZS4KKyAgICAgICAgLSBVc2UgYXV0byBpbnN0ZWFkIG9mIGF1dG8q
IHR5cGUgZm9yIGNhc3RlZFRoaXMgYmVjYXVzZQorICAgICAgICAgIEpTRXZlbnRUYXJnZXRPckds
b2JhbFNjb3BlOjpjcmVhdGUoKSByZXR1cm5zIGEgdW5pcXVlX3B0ci4KKyAgICAgICAgLSBEbyBu
b3QgY2hlY2sgdGhhdCBjYXN0ZWRUaGlzIGluaGVyaXRzIEpTRXZlbnRUYXJnZXQgaW4gdGhlCisg
ICAgICAgICAgRXZlbnRUYXJnZXQgYmluZGluZ3MgY29kZSBhcyB0aGlzIG5vIGxvbmdlciBob2xk
cyB0cnVlLgorCisgICAgICAgICogZG9tL0V2ZW50VGFyZ2V0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkV2ZW50VGFyZ2V0OjphZGRFdmVudExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50VGFyZ2V0OjpyZW1vdmVFdmVudExpc3RlbmVyKToKKyAgICAgICAgUmV0dXJuIGVhcmx5IGZv
ciBmcmFtZWxlc3MgV2luZG93LCBzaW1pbGFybHkgdG8gd2hhdCB3YXMgZG9uZSBpbiB0aGUgb2xk
CisgICAgICAgIERPTVdpbmRvdydzIGN1c3RvbSBiaW5kaW5ncy4KKworICAgICAgICAqIGRvbS9F
dmVudFRhcmdldC5pZGw6CisgICAgICAgIEFkZCBbSlNDdXN0b21IZWFkZXJdIElETCBFeHRlbmRl
ZCBhdHRyaWJ1dGUgYXMgd2UgbmVlZCBhIGhlYWRlcgorICAgICAgICB0byBleHBvc2UgSlNFdmVu
dFRhcmdldE9yR2xvYmFsU2NvcGUgY2xhc3MuCisKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5p
ZGw6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5pZGw6CisgICAgICAgIElu
aGVyaXQgRXZlbnRUYXJnZXQgYW5kIHN0b3AgZHVwbGljYXRpbmcgdGhlIEV2ZW50VGFyZ2V0IEFQ
SS4KKyAgICAgICAgVGhpcyBtYXRjaGVzIHRoZSBIVE1MIHNwZWNpZmljYXRpb24uCisKIDIwMTYt
MDItMTIgIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBhcHBsZS5jb20+CiAKICAgICAgICAgUmVz
ZXQgcmVzdWx0cyBmb3IgYmluZGluZ3MgdGVzdHMgYWZ0ZXIgcjE5NjUyMApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGFhYzFlZmFm
YTQ1ODFjMGEyMGU2ZDAyZGFlODJhNzI2NGUzZjY4OTQuLmQ0MmYxMzVkZmJiYTFlYjFiYzdhZmZj
OTNkODZhZGViYzg3MjVmODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE3MDksNiArMTcwOSw3IEBACiAJCTQ2NjlCMjg3MUI4
NTJBMEIwMDBGOTA1RiAvKiBKU0RPTU5hbWVkRmxvd0NvbGxlY3Rpb25DdXN0b20uY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZGMjc2OEUxQjg1Mjk3
RjAwNUMyNTU2IC8qIEpTRE9NTmFtZWRGbG93Q29sbGVjdGlvbkN1c3RvbS5jcHAgKi87IH07CiAJ
CTQ2NzMwMjAyMUM0RUZFNzgwMEJDQjM1NyAvKiBJZ25vcmVPcGVuc0R1cmluZ1VubG9hZENvdW50
SW5jcmVtZW50ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ2NzMwMjAxMUM0RUZFNjYwMEJDQjM1NyAvKiBJZ25vcmVPcGVuc0R1cmluZ1VubG9hZENv
dW50SW5jcmVtZW50ZXIuaCAqLzsgfTsKIAkJNDY4OUYxQUYxMjY3QkFFMTAwRThEMzgwIC8qIEZp
bGVNZXRhZGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDY4OUYxQUUxMjY3QkFFMTAwRThEMzgwIC8qIEZpbGVNZXRhZGF0YS5oICovOyB9OworCQk0
NkI2M0Y2QzFDNkU4RDE5MDAyRTkxNEIgLyogSlNFdmVudFRhcmdldEN1c3RvbS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCNjNGNkIxQzZFOENERjAw
MkU5MTRCIC8qIEpTRXZlbnRUYXJnZXRDdXN0b20uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkM4M0VGRDFBOUJCRTI5MDBBNzlBNDEgLyogR2Vv
Tm90aWZpZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDZDODNFRkIxQTlCQkUyOTAwQTc5QTQxIC8qIEdlb05vdGlmaWVyLmNwcCAqLzsgfTsKIAkJ
NDZDODNFRkUxQTlCQkUyOTAwQTc5QTQxIC8qIEdlb05vdGlmaWVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkM4M0VGQzFBOUJCRTI5MDBBNzlBNDEg
LyogR2VvTm90aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk0NkRCN0Q1NzFCMjBGRTQ2MDA1NjUxQjIgLyogVk5vZGVUcmFja2VyQ29jb2Eu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZEQjdE
NTYxQjIwRkUzQzAwNTY1MUIyIC8qIFZOb2RlVHJhY2tlckNvY29hLmNwcCAqLzsgfTsKQEAgLTkx
OTAsNiArOTE5MSw3IEBACiAJCTQ2M0VCNjIxMUI4Nzg5Q0IwMDk2RUQ1MSAvKiBUYWdDb2xsZWN0
aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRhZ0NvbGxlY3Rpb24uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY3MzAyMDExQzRFRkU2NjAwQkNCMzU3IC8q
IElnbm9yZU9wZW5zRHVyaW5nVW5sb2FkQ291bnRJbmNyZW1lbnRlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBJZ25vcmVPcGVuc0R1cmluZ1VubG9hZENvdW50SW5jcmVtZW50
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4OUYxQUUxMjY3QkFFMTAwRThE
MzgwIC8qIEZpbGVNZXRhZGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBG
aWxlTWV0YWRhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZCNjNGNkIxQzZF
OENERjAwMkU5MTRCIC8qIEpTRXZlbnRUYXJnZXRDdXN0b20uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNFdmVudFRhcmdldEN1c3RvbS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0NkM4M0VGQjFBOUJCRTI5MDBBNzlBNDEgLyogR2VvTm90aWZpZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2VvTm90aWZpZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkM4M0VGQzFBOUJCRTI5MDBBNzlBNDEgLyogR2Vv
Tm90aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2VvTm90aWZpZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZEQjdENTYxQjIwRkUzQzAwNTY1MUIy
IC8qIFZOb2RlVHJhY2tlckNvY29hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFZOb2RlVHJhY2tlckNvY29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTIyMTkzLDYgKzIyMTk1LDcgQEAKIAkJCQlGM0Q0NjE0NjExNjFENTMyMDBDQTBEMDkgLyog
SlNFcnJvckhhbmRsZXIuY3BwICovLAogCQkJCUYzRDQ2MTQ3MTE2MUQ1MzIwMENBMEQwOSAvKiBK
U0Vycm9ySGFuZGxlci5oICovLAogCQkJCUJDNjA5MDFFMEU5MUI4RUMwMDBDNjhCNSAvKiBKU0V2
ZW50VGFyZ2V0Q3VzdG9tLmNwcCAqLywKKwkJCQk0NkI2M0Y2QjFDNkU4Q0RGMDAyRTkxNEIgLyog
SlNFdmVudFRhcmdldEN1c3RvbS5oICovLAogCQkJCTMzMTRBQ0U5MTA4OTIwODYwMDBGMEU1NiAv
KiBKU0V4Y2VwdGlvbkJhc2UuY3BwICovLAogCQkJCTMzMTRBQ0VBMTA4OTIwODYwMDBGMEU1NiAv
KiBKU0V4Y2VwdGlvbkJhc2UuaCAqLywKIAkJCQk4RjkzNEQ4NDExODlGMUVFMDA1MDhENUQgLyog
SlNNYWluVGhyZWFkRXhlY1N0YXRlLmNwcCAqLywKQEAgLTI0OTgxLDYgKzI0OTg0LDcgQEAKIAkJ
CQkyRURFRjFGNzEyMUIwRUZDMDA3MjZEQjIgLyogQmxvYlJlZ2lzdHJ5SW1wbC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMkVCNEJDRDMxMjFGMDNFMzAwRUM0ODg1IC8qIEJsb2JSZXNvdXJjZUhhbmRs
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc2RDZDN0YxMjJCOEEzRDAwMUZEMUY3IC8qIEJsb2JV
UkwuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2QjYzRjZDMUM2RThEMTkwMDJFOTE0QiAvKiBKU0V2
ZW50VGFyZ2V0Q3VzdG9tLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0YxOTlCRTA4MjQ1RTU5MDAx
RTlBQkMgLyogQmxvY2tFeGNlcHRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzVFQjVFMTBF
ODFCRTg3MDBCMjU5NjUgLyogQm9yZGVyRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTg5NTU2
RUQxOEQ0QTQ0MDAwNzY0QjAzIC8qIEJvcmRlckVkZ2UuaCBpbiBIZWFkZXJzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCmluZGV4IDEx
NWRhZTU2NjI3ZTJmZDY3OTMxNDA4Mjg0ZTFlOWMxOGQwYTM2ZTQuLmE1MThmYzdiZjViMzEyYmM3
Y2Y2ZTIxOWZmZjk1OWYyZWE4OTgxYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKQEAgLTc1MSwzNCArNzUxLDYgQEAgSlNWYWx1ZSBK
U0RPTVdpbmRvdzo6c2V0SW50ZXJ2YWwoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICByZXR1cm4ganNO
dW1iZXIocmVzdWx0KTsKIH0KIAotSlNWYWx1ZSBKU0RPTVdpbmRvdzo6YWRkRXZlbnRMaXN0ZW5l
cihFeGVjU3RhdGUmIHN0YXRlKQotewotICAgIEZyYW1lKiBmcmFtZSA9IHdyYXBwZWQoKS5mcmFt
ZSgpOwotICAgIGlmICghZnJhbWUpCi0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotCi0g
ICAgSlNWYWx1ZSBsaXN0ZW5lciA9IHN0YXRlLmFyZ3VtZW50KDEpOwotICAgIGlmICghbGlzdGVu
ZXIuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0KLSAgICB3cmFw
cGVkKCkuYWRkRXZlbnRMaXN0ZW5lcihzdGF0ZS5hcmd1bWVudCgwKS50b1N0cmluZygmc3RhdGUp
LT50b0F0b21pY1N0cmluZygmc3RhdGUpLCBKU0V2ZW50TGlzdGVuZXI6OmNyZWF0ZShhc09iamVj
dChsaXN0ZW5lciksIHRoaXMsIGZhbHNlLCBnbG9iYWxPYmplY3QoKS0+d29ybGQoKSksIHN0YXRl
LmFyZ3VtZW50KDIpLnRvQm9vbGVhbigmc3RhdGUpKTsKLSAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKLX0KLQotSlNWYWx1ZSBKU0RPTVdpbmRvdzo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihFeGVjU3Rh
dGUmIHN0YXRlKQotewotICAgIEZyYW1lKiBmcmFtZSA9IHdyYXBwZWQoKS5mcmFtZSgpOwotICAg
IGlmICghZnJhbWUpCi0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotCi0gICAgSlNWYWx1
ZSBsaXN0ZW5lciA9IHN0YXRlLmFyZ3VtZW50KDEpOwotICAgIGlmICghbGlzdGVuZXIuaXNPYmpl
Y3QoKSkKLSAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0KLSAgICB3cmFwcGVkKCkucmVt
b3ZlRXZlbnRMaXN0ZW5lcihzdGF0ZS5hcmd1bWVudCgwKS50b1N0cmluZygmc3RhdGUpLT50b0F0
b21pY1N0cmluZygmc3RhdGUpLCBKU0V2ZW50TGlzdGVuZXI6OmNyZWF0ZShhc09iamVjdChsaXN0
ZW5lciksIHRoaXMsIGZhbHNlLCBnbG9iYWxPYmplY3QoKS0+d29ybGQoKSkucHRyKCksIHN0YXRl
LmFyZ3VtZW50KDIpLnRvQm9vbGVhbigmc3RhdGUpKTsKLSAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKLX0KLQogRE9NV2luZG93KiBKU0RPTVdpbmRvdzo6dG9XcmFwcGVkKEpTVmFsdWUgdmFsdWUp
CiB7CiAgICAgaWYgKCF2YWx1ZS5pc09iamVjdCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcAppbmRleCAxMTIwNjY4NTIyMjI5ZjdkMTZkZWY4
NjlkZjkxNzk2N2Y1MWNhNzA0Li42NjAzNTQwNzI5NzVlMzJiN2VlMTU4MDUyZDUxY2FkZjE3MDM1
OGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1No
ZWxsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxs
LmNwcApAQCAtMzIsNyArMzIsNyBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiR0ND
b250cm9sbGVyLmgiCiAjaW5jbHVkZSAiSlNET01XaW5kb3cuaCIKLSNpbmNsdWRlICJET01XaW5k
b3cuaCIKKyNpbmNsdWRlICJKU0V2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJv
bGxlci5oIgogI2luY2x1ZGUgPGhlYXAvU3Ryb25nSW5saW5lcy5oPgogI2luY2x1ZGUgPHJ1bnRp
bWUvSlNPYmplY3QuaD4KQEAgLTg1LDYgKzg1LDcgQEAgdm9pZCBKU0RPTVdpbmRvd1NoZWxsOjpz
ZXRXaW5kb3coUGFzc1JlZlB0cjxET01XaW5kb3c+IGRvbVdpbmRvdykKICAgICBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSA9IEpTRE9NV2luZG93OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIDAsIHByb3RvdHlw
ZS5nZXQoKSk7CiAgICAgSlNET01XaW5kb3cqIGpzRE9NV2luZG93ID0gSlNET01XaW5kb3c6OmNy
ZWF0ZSh2bSwgc3RydWN0dXJlLCAqZG9tV2luZG93LCB0aGlzKTsKICAgICBwcm90b3R5cGUtPnN0
cnVjdHVyZSgpLT5zZXRHbG9iYWxPYmplY3Qodm0sIGpzRE9NV2luZG93KTsKKyAgICBwcm90b3R5
cGUtPnN0cnVjdHVyZSgpLT5zZXRQcm90b3R5cGVXaXRob3V0VHJhbnNpdGlvbih2bSwgSlNFdmVu
dFRhcmdldDo6Z2V0UHJvdG90eXBlKHZtLCBqc0RPTVdpbmRvdykpOwogICAgIHNldFdpbmRvdyh2
bSwganNET01XaW5kb3cpOwogICAgIEFTU0VSVChqc0RPTVdpbmRvdy0+Z2xvYmFsT2JqZWN0KCkg
PT0ganNET01XaW5kb3cpOwogICAgIEFTU0VSVChwcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpID09
IGpzRE9NV2luZG93KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NV2luZG93U2hlbGwuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93
U2hlbGwuaAppbmRleCAwMWYwNDhkNjdhNGY1YjhkMGYxZWU5NjlkNWQyNzU0NWYxMjc0NmQwLi5i
ZGZkZDJmZGQyZTM3NWJjZjdhM2FmMzUxOTkwYjJkMmZmN2MzMjlkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5oCkBAIC0yOSwxMiArMjksMTIgQEAK
ICNpZm5kZWYgSlNET01XaW5kb3dTaGVsbF9oCiAjZGVmaW5lIEpTRE9NV2luZG93U2hlbGxfaAog
CisjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiSlNET01XaW5kb3cuaCIKICNpbmNs
dWRlIDxydW50aW1lL0pTUHJveHkuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0gICAgY2xh
c3MgRE9NV2luZG93OwogICAgIGNsYXNzIEZyYW1lOwogCiAgICAgY2xhc3MgSlNET01XaW5kb3dT
aGVsbCA6IHB1YmxpYyBKU0M6OkpTUHJveHkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRGljdGlvbmFyeS5jcHAKaW5kZXggMzM0NmNjZmU2OTkzZmI5NDk1NzVkNzMwODU1ZWQ0ZDc4
Zjk2OGRiMi4uNjYzNGUxNmRmNzNjMzMzNjg3MzU3ZTM3NWFjZGE2N2Y0Y2E1Y2ZkYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RpY3Rpb25hcnkuY3BwCkBAIC0yNyw2ICsyNyw3
IEBACiAjaW5jbHVkZSAiSlNEaWN0aW9uYXJ5LmgiCiAKICNpbmNsdWRlICJBcnJheVZhbHVlLmgi
CisjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRGljdGlvbmFyeS5oIgogI2luY2x1
ZGUgIkpTQ1NTRm9udEZhY2VSdWxlLmgiCiAjaW5jbHVkZSAiSlNET01FcnJvci5oIgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEN1c3RvbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3VzdG9tLmNwcAppbmRl
eCBlOGVhZDFjMWQ0MmYwZGRmZmVlOTY2ZTE4MjBlZDAyNTA4ODJmNGJmLi42MGIxNzZiZmViZmFm
YzM4NjVkNzkwZjE0OTQzNDViYjQwNjliNDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3VzdG9tLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDA4LCAyMDE2IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsMTAgKzI2LDE1IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSlNFdmVudFRhcmdldC5oIgogCisjaW5jbHVkZSAi
RE9NV2luZG93LmgiCisjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJFdmVudFRh
cmdldEhlYWRlcnMuaCIKICNpbmNsdWRlICJFdmVudFRhcmdldEludGVyZmFjZXMuaCIKKyNpbmNs
dWRlICJKU0RPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkpTRE9NV2luZG93U2hlbGwuaCIKICNpbmNs
dWRlICJKU0V2ZW50TGlzdGVuZXIuaCIKKyNpbmNsdWRlICJKU1dvcmtlckdsb2JhbFNjb3BlLmgi
CisjaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsK
IApAQCAtNjEsMTIgKzY2LDIzIEBAIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIGV4ZWMsIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEV2ZW50VGFyZ2V0KiB0YXJnCiBFdmVudFRhcmdl
dCogSlNFdmVudFRhcmdldDo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBU
UllfVE9fVU5XUkFQX1dJVEhfSU5URVJGQUNFKERPTVdpbmRvd1NoZWxsKQorICAgIFRSWV9UT19V
TldSQVBfV0lUSF9JTlRFUkZBQ0UoRE9NV2luZG93KQorICAgIFRSWV9UT19VTldSQVBfV0lUSF9J
TlRFUkZBQ0UoV29ya2VyR2xvYmFsU2NvcGUpCiAgICAgVFJZX1RPX1VOV1JBUF9XSVRIX0lOVEVS
RkFDRShFdmVudFRhcmdldCkKLSAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgb25jZSBhbGwgZXZl
bnQgdGFyZ2V0cyBleHRlbmQgRXZlbnRUYXJnZXQKLSAgICBET01fRVZFTlRfVEFSR0VUX0lOVEVS
RkFDRVNfRk9SX0VBQ0goVFJZX1RPX1VOV1JBUF9XSVRIX0lOVEVSRkFDRSkKLSAgICByZXR1cm4g
MDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogI3VuZGVmIFRSWV9UT19VTldSQVBfV0lUSF9J
TlRFUkZBQ0UKIAorc3RkOjp1bmlxdWVfcHRyPEpTRXZlbnRUYXJnZXRPckdsb2JhbFNjb3BlPiBK
U0V2ZW50VGFyZ2V0T3JHbG9iYWxTY29wZTo6Y3JlYXRlKEpTQzo6SlNWYWx1ZSB0aGlzVmFsdWUp
Cit7CisgICAgaWYgKGF1dG8qIGpzRXZlbnRUYXJnZXQgPSBKU0M6OmpzRHluYW1pY0Nhc3Q8SlNF
dmVudFRhcmdldCo+KHRoaXNWYWx1ZSkpCisgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PEpTRXZlbnRUYXJnZXRPckdsb2JhbFNjb3BlPihqc0V2ZW50VGFyZ2V0LT53cmFwcGVkKCksICpq
c0V2ZW50VGFyZ2V0KTsKKyAgICBpZiAoYXV0byoganNET01XaW5kb3cgPSB0b0pTRE9NV2luZG93
KHRoaXNWYWx1ZSkpCisgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEpTRXZlbnRUYXJn
ZXRPckdsb2JhbFNjb3BlPihqc0RPTVdpbmRvdy0+d3JhcHBlZCgpLCAqanNET01XaW5kb3cpOwor
ICAgIGlmIChhdXRvKiBqc1dvcmtlckdsb2JhbFNjb3BlID0gdG9KU1dvcmtlckdsb2JhbFNjb3Bl
KHRoaXNWYWx1ZSkpCisgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEpTRXZlbnRUYXJn
ZXRPckdsb2JhbFNjb3BlPihqc1dvcmtlckdsb2JhbFNjb3BlLT53cmFwcGVkKCksICpqc1dvcmtl
ckdsb2JhbFNjb3BlKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRh
cmdldEN1c3RvbS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEN1
c3RvbS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmM5MjI2M2QxNjkzZWEzYTEyYTcwYWY2NDFkNzhmNzlhNzcwOGUx
MjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50
VGFyZ2V0Q3VzdG9tLmgKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSlNF
dmVudFRhcmdldEN1c3RvbV9oCisjZGVmaW5lIEpTRXZlbnRUYXJnZXRDdXN0b21faAorCisjaW5j
bHVkZSAiSlNET01CaW5kaW5nLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8gV3JhcHBl
ciB0eXBlIGZvciBKU0V2ZW50VGFyZ2V0J3MgY2FzdGVkVGhpcyBiZWNhdXNlIEpTRE9NV2luZG93
IGFuZCBKU1dvcmtlckdsb2JhbFNjb3BlIGRvIG5vdCBpbmhlcml0IEpTRXZlbnRUYXJnZXQuCitj
bGFzcyBKU0V2ZW50VGFyZ2V0T3JHbG9iYWxTY29wZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CitwdWJsaWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxKU0V2ZW50VGFyZ2V0
T3JHbG9iYWxTY29wZT4gY3JlYXRlKEpTQzo6SlNWYWx1ZSB0aGlzVmFsdWUpOworCisgICAgRXZl
bnRUYXJnZXQmIHdyYXBwZWQoKSB7IHJldHVybiBtX3dyYXBwZWQ7IH0KKworICAgIG9wZXJhdG9y
IEpTQzo6SlNPYmplY3QmKCkgeyByZXR1cm4gbV93cmFwcGVyOyB9CisKKyAgICBKU0V2ZW50VGFy
Z2V0T3JHbG9iYWxTY29wZShFdmVudFRhcmdldCYgd3JhcHBlZCwgSlNDOjpKU09iamVjdCYgd3Jh
cHBlcikKKyAgICAgICAgOiBtX3dyYXBwZWQod3JhcHBlZCkKKyAgICAgICAgLCBtX3dyYXBwZXIo
d3JhcHBlcikKKyAgICB7IH0KKworcHJpdmF0ZToKKyAgICBFdmVudFRhcmdldCYgbV93cmFwcGVk
OworICAgIEpTQzo6SlNPYmplY3QmIG1fd3JhcHBlcjsKK307CisKK30KKworI2VuZGlmIC8vIEpT
RXZlbnRUYXJnZXRDdXN0b21faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCAwOWQxNzhiZDFmM2UyMzM2ODk4NTU5
ODgyZDcwMDM2ZmYxMzg0ZjdjLi5kZTJkMDBlY2QzZWZmZDJiYTJlNjk0NmIxODBiMmQ2MjFkMDYw
M2E0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRD
b250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3Jp
cHRDb250cm9sbGVyLmNwcApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiSlNET01CaW5k
aW5nLmgiCiAjaW5jbHVkZSAiSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oIgorI2luY2x1
ZGUgIkpTRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCiAjaW5j
bHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3Bl
LmgiCkBAIC04OSw2ICs5MCw3IEBAIHZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6aW5pdFNj
cmlwdCgpCiAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUtPmdsb2JhbE9iamVjdCgpID09IG1fd29y
a2VyR2xvYmFsU2NvcGVXcmFwcGVyKTsKICAgICAgICAgQVNTRVJUKG1fd29ya2VyR2xvYmFsU2Nv
cGVXcmFwcGVyLT5zdHJ1Y3R1cmUoKS0+Z2xvYmFsT2JqZWN0KCkgPT0gbV93b3JrZXJHbG9iYWxT
Y29wZVdyYXBwZXIpOwogICAgICAgICB3b3JrZXJHbG9iYWxTY29wZVByb3RvdHlwZS0+c3RydWN0
dXJlKCktPnNldEdsb2JhbE9iamVjdCgqbV92bSwgbV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIu
Z2V0KCkpOworICAgICAgICB3b3JrZXJHbG9iYWxTY29wZVByb3RvdHlwZS0+c3RydWN0dXJlKCkt
PnNldFByb3RvdHlwZVdpdGhvdXRUcmFuc2l0aW9uKCptX3ZtLCBKU0V2ZW50VGFyZ2V0OjpnZXRQ
cm90b3R5cGUoKm1fdm0sIG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyLmdldCgpKSk7CiAgICAg
ICAgIGRlZGljYXRlZENvbnRleHRQcm90b3R5cGUtPnN0cnVjdHVyZSgpLT5zZXRHbG9iYWxPYmpl
Y3QoKm1fdm0sIG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyLmdldCgpKTsKICAgICB9CiAgICAg
QVNTRVJUKG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyLT5nbG9iYWxPYmplY3QoKSA9PSBtX3dv
cmtlckdsb2JhbFNjb3BlV3JhcHBlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IGUyYzUwYTg2OTQ3NTk5OWMzZjM0NmYw
MDhjYTQxMmEzMjdjYjRhMzYuLjdlODdiMTQyZTljYmE4OWJiNjc3MGNkNmM2NzJhY2ZhODBkYTdi
YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckpTLnBtCkBAIC01NTgsNiArNTU4LDcgQEAgc3ViIFNob3VsZEdlbmVyYXRlVG9KU0RlY2xh
cmF0aW9uCiAgICAgcmV0dXJuIDAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJTdXBwcmVzc1RvSlNPYmplY3QifSk7CiAgICAgcmV0dXJuIDAgaWYgbm90IE5lZWRzSW1wbGVt
ZW50YXRpb25DbGFzcygkaW50ZXJmYWNlKTsKICAgICByZXR1cm4gMCBpZiAkaW50ZXJmYWNlLT5u
YW1lIGVxICJBYnN0cmFjdFZpZXciOworICAgIHJldHVybiAwIGlmICRpbnRlcmZhY2UtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJDdXN0b21Qcm94eVRvSlNPYmplY3QifTsKICAgICByZXR1cm4gMSBp
ZiAoISRoYXNQYXJlbnQgb3IgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTR2Vu
ZXJhdGVUb0pTT2JqZWN0In0gb3IgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1
c3RvbVRvSlNPYmplY3QifSk7CiAgICAgcmV0dXJuIDEgaWYgJGludGVyZmFjZS0+cGFyZW50ICYm
ICRpbnRlcmZhY2UtPnBhcmVudCBlcSAiRXZlbnRUYXJnZXQiOwogICAgIHJldHVybiAwOwpAQCAt
MTczMCwxNyArMTczMSwxMyBAQCBzdWIgR2V0UnVudGltZUVuYWJsZUZ1bmN0aW9uTmFtZQogc3Vi
IEdldENhc3RpbmdIZWxwZXJGb3JUaGlzT2JqZWN0CiB7CiAgICAgbXkgJGludGVyZmFjZSA9IHNo
aWZ0OworICAgIG15ICRpbnRlcmZhY2VOYW1lID0gJGludGVyZmFjZS0+bmFtZTsKIAotICAgIGlm
ICgkaW50ZXJmYWNlLT5uYW1lIGVxICJOb2RlIikgewotICAgICAgICByZXR1cm4gImpzTm9kZUNh
c3QiOwotICAgIH0KLSAgICBpZiAoJGludGVyZmFjZS0+bmFtZSBlcSAiRWxlbWVudCIpIHsKLSAg
ICAgICAgcmV0dXJuICJqc0VsZW1lbnRDYXN0IjsKLSAgICB9Ci0gICAgaWYgKCRpbnRlcmZhY2Ut
Pm5hbWUgZXEgIkRvY3VtZW50IikgewotICAgICAgICByZXR1cm4gImpzRG9jdW1lbnRDYXN0IjsK
LSAgICB9Ci0gICAgcmV0dXJuICJqc0R5bmFtaWNDYXN0PEpTIiAuICRpbnRlcmZhY2UtPm5hbWUg
LiAiKj4iOworICAgIHJldHVybiAianNOb2RlQ2FzdCIgaWYgJGludGVyZmFjZU5hbWUgZXEgIk5v
ZGUiOworICAgIHJldHVybiAianNFbGVtZW50Q2FzdCIgaWYgJGludGVyZmFjZU5hbWUgZXEgIkVs
ZW1lbnQiOworICAgIHJldHVybiAianNEb2N1bWVudENhc3QiIGlmICRpbnRlcmZhY2VOYW1lIGVx
ICJEb2N1bWVudCI7CisgICAgcmV0dXJuICJKU0V2ZW50VGFyZ2V0T3JHbG9iYWxTY29wZTo6Y3Jl
YXRlIiBpZiAkaW50ZXJmYWNlTmFtZSBlcSAiRXZlbnRUYXJnZXQiOworICAgIHJldHVybiAianNE
eW5hbWljQ2FzdDxKUyIgLiAkaW50ZXJmYWNlTmFtZSAuICIqPiI7CiB9CiAKIHN1YiBHZXRJbmRl
eGVkR2V0dGVyRXhwcmVzc2lvbgpAQCAtMzIyOCwxOSArMzIyNSwxNSBAQCBzdWIgR2VuZXJhdGVG
dW5jdGlvbkNhc3RlZFRoaXMKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJGNsYXNz
TmFtZSogY2FzdGVkVGhpcyA9IHRvJHtjbGFzc05hbWV9KHN0YXRlLT50aGlzVmFsdWUoKS50b1Ro
aXMoc3RhdGUsIE5vdFN0cmljdE1vZGUpKTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKVxuIik7CiAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7XG4iKTsK
LSAgICB9IGVsc2lmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiV29ya2VyR2xv
YmFsU2NvcGUifSkgewotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAkY2xhc3NOYW1l
KiBjYXN0ZWRUaGlzID0gdG8ke2NsYXNzTmFtZX0oc3RhdGUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhz
dGF0ZSwgTm90U3RyaWN0TW9kZSkpO1xuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpXG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTtcbiIpOwogICAg
IH0gZWxzZSB7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpO1xuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgICRjbGFzc05hbWUqIGNhc3RlZFRoaXMgPSAiIC4gR2V0Q2FzdGluZ0hlbHBlckZvclRo
aXNPYmplY3QoJGludGVyZmFjZSkgLiAiKHRoaXNWYWx1ZSk7XG4iKTsKKyAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgYXV0byBjYXN0ZWRUaGlzID0gIiAuIEdldENhc3RpbmdIZWxwZXJG
b3JUaGlzT2JqZWN0KCRpbnRlcmZhY2UpIC4gIih0aGlzVmFsdWUpO1xuIik7CiAgICAgICAgIG15
ICRkb21GdW5jdGlvbk5hbWUgPSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZTsKICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSlcbiIpOwog
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVF
cnJvcigqc3RhdGUsIFwiJGludGVyZmFjZU5hbWVcIiwgXCIkZG9tRnVuY3Rpb25OYW1lXCIpO1xu
Iik7CiAgICAgfQogCi0gICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyhjYXN0ZWRUaGlzLCAke2NsYXNzTmFtZX06OmluZm8oKSk7XG4iKTsKKyAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRo
aXMsICR7Y2xhc3NOYW1lfTo6aW5mbygpKTtcbiIpIHVubGVzcyAkaW50ZXJmYWNlTmFtZSBlcSAi
RXZlbnRUYXJnZXQiOwogfQogCiBzdWIgR2VuZXJhdGVDYWxsV2l0aApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVj
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0
aXZlRE9NT2JqZWN0LmNwcAppbmRleCA3YWY2MzJiNDkzNDA5OWZiZDJjOGQ3YjJkNTI0OWNlMmMx
ODliMWE3Li5mOTNkNTUxZGY2NTk1NTEzNDU5NjcyNzNhYzMyZDhkMzBlMDRjOGUyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZl
RE9NT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcApAQCAtMjAwLDcgKzIwMCw3IEBAIEpTVmFsdWUg
SlNUZXN0QWN0aXZlRE9NT2JqZWN0OjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xv
YmFsT2JqZWN0KiBnbG9iCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEFjdGl2
ZURPTU9iamVjdFByb3RvdHlwZUZ1bmN0aW9uRXhjaXRpbmdGdW5jdGlvbihFeGVjU3RhdGUqIHN0
YXRlKQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwotICAg
IEpTVGVzdEFjdGl2ZURPTU9iamVjdCogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
QWN0aXZlRE9NT2JqZWN0Kj4odGhpc1ZhbHVlKTsKKyAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdEFjdGl2ZURPTU9iamVjdCo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigq
c3RhdGUsICJUZXN0QWN0aXZlRE9NT2JqZWN0IiwgImV4Y2l0aW5nRnVuY3Rpb24iKTsKICAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdEFjdGl2ZURPTU9iamVj
dDo6aW5mbygpKTsKQEAgLTIxOSw3ICsyMTksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdEFjdGl2ZURPTU9iamVjdFByb3RvdHlwZUZ1bmN0aW9uRXhjaXRpbmdGdW5jdAog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RBY3RpdmVET01PYmplY3RQcm90b3R5
cGVGdW5jdGlvblBvc3RNZXNzYWdlKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7Ci0gICAgSlNUZXN0QWN0aXZlRE9NT2JqZWN0
KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RBY3RpdmVET01PYmplY3QqPih0aGlz
VmFsdWUpOworICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0QWN0aXZl
RE9NT2JqZWN0Kj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQog
ICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RBY3RpdmVET01P
YmplY3QiLCAicG9zdE1lc3NhZ2UiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNh
c3RlZFRoaXMsIEpTVGVzdEFjdGl2ZURPTU9iamVjdDo6aW5mbygpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21OYW1lZEdl
dHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwCmluZGV4IDdlY2NhNzBiNDVlNDNmZTcxMjZkMjg5Y2ViODFk
NWViZjRkM2IzMzIuLmUzODc4OGI5ZTlhYTgyNjNlZWExZjYzMjQxZDc4OTA3NjcxZTg1NTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RD
dXN0b21OYW1lZEdldHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcApAQCAtMTg2LDcgKzE4Niw3IEBA
IEpTVmFsdWUgSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwg
Y29uc3QgSlNHbG9iYWxPYmplY3QqIGdsCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdEN1c3RvbU5hbWVkR2V0dGVyUHJvdG90eXBlRnVuY3Rpb25Bbm90aGVyRnVuY3Rpb24oRXhl
Y1N0YXRlKiBzdGF0ZSkKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFs
dWUoKTsKLSAgICBKU1Rlc3RDdXN0b21OYW1lZEdldHRlciogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIqPih0aGlzVmFsdWUpOworICAgIGF1dG8gY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIqPih0aGlzVmFs
dWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJv
d1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEN1c3RvbU5hbWVkR2V0dGVyIiwgImFub3RoZXJG
dW5jdGlvbiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNU
ZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6OmluZm8oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcApp
bmRleCA3NjhjZDMxOTAzN2M1YzQ3YzdhOTAxNzk5YWRhMWM4NDdlODFlMTE4Li41N2FmNTYwODZh
ZmMzZDllZjI0NzU0MmRlYzhmYzQyZDE3NTdjOGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5j
cHAKQEAgLTE5OCw3ICsxOTgsNyBAQCBKU1ZhbHVlIEpTVGVzdEV2ZW50VGFyZ2V0OjpnZXRDb25z
dHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYgogRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZUZ1bmN0aW9uSXRl
bShFeGVjU3RhdGUqIHN0YXRlKQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRo
aXNWYWx1ZSgpOwotICAgIEpTVGVzdEV2ZW50VGFyZ2V0KiBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RFdmVudFRhcmdldCo+KHRoaXNWYWx1ZSk7CisgICAgYXV0byBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RFdmVudFRhcmdldCo+KHRoaXNWYWx1ZSk7CiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJv
cigqc3RhdGUsICJUZXN0RXZlbnRUYXJnZXQiLCAiaXRlbSIpOwogICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0RXZlbnRUYXJnZXQ6OmluZm8oKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50
ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RJbnRlcmZhY2UuY3BwCmluZGV4IGY3NDNkYjg3MmE0NjNkM2MzMDNlNjYwZDJiNzIwOTlhZTlm
NGJkNWUuLjliOGEzNjI2MTdmNmU4MTZiNzMxOThkOGU5YjFlZTJjMWMzYTRiMTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZh
Y2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RJbnRlcmZhY2UuY3BwCkBAIC03NjUsNyArNzY1LDcgQEAgSlNWYWx1ZSBKU1Rlc3RJbnRlcmZh
Y2U6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amUKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlUHJvdG90eXBl
RnVuY3Rpb25JbXBsZW1lbnRzTWV0aG9kMShFeGVjU3RhdGUqIHN0YXRlKQogewogICAgIEpTVmFs
dWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwotICAgIEpTVGVzdEludGVyZmFjZSog
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4odGhpc1ZhbHVlKTsK
KyAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZSo+KHRo
aXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJu
IHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVudHNN
ZXRob2QxIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rl
c3RJbnRlcmZhY2U6OmluZm8oKSk7CkBAIC03ODAsNyArNzgwLDcgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkltcGxlbWVudHNN
ZXRob2QxKEUKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlUHJv
dG90eXBlRnVuY3Rpb25JbXBsZW1lbnRzTWV0aG9kMihFeGVjU3RhdGUqIHN0YXRlKQogewogICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwotICAgIEpTVGVzdEludGVy
ZmFjZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4odGhpc1Zh
bHVlKTsKKyAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFj
ZSo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAg
cmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0SW50ZXJmYWNlIiwgImltcGxl
bWVudHNNZXRob2QyIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlz
LCBKU1Rlc3RJbnRlcmZhY2U6OmluZm8oKSk7CkBAIC04MDksNyArODA5LDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkltcGxl
bWVudHNNZXRob2QyKEUKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJm
YWNlUHJvdG90eXBlRnVuY3Rpb25JbXBsZW1lbnRzTWV0aG9kMyhFeGVjU3RhdGUqIHN0YXRlKQog
ewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwotICAgIEpTVGVz
dEludGVyZmFjZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4o
dGhpc1ZhbHVlKTsKKyAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdElu
dGVyZmFjZSo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAg
ICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0SW50ZXJmYWNlIiwg
ImltcGxlbWVudHNNZXRob2QzIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0
ZWRUaGlzLCBKU1Rlc3RJbnRlcmZhY2U6OmluZm8oKSk7CkBAIC04MzEsNyArODMxLDcgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvckZ1bmN0
aW9uSW1wbGVtZW50c01ldGhvZDQKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25TdXBwbGVtZW50YWxNZXRob2QxKEV4ZWNTdGF0ZSog
c3RhdGUpCiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7Ci0g
ICAgSlNUZXN0SW50ZXJmYWNlKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRl
cmZhY2UqPih0aGlzVmFsdWUpOworICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0SW50ZXJmYWNlKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RJbnRl
cmZhY2UiLCAic3VwcGxlbWVudGFsTWV0aG9kMSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0SW50ZXJmYWNlOjppbmZvKCkpOwpAQCAtODQ2LDcgKzg0
Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlUHJvdG90
eXBlRnVuY3Rpb25TdXBwbGVtZW50YWxNZXRob2QxCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uU3VwcGxlbWVudGFsTWV0aG9kMihF
eGVjU3RhdGUqIHN0YXRlKQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNW
YWx1ZSgpOwotICAgIEpTVGVzdEludGVyZmFjZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0SW50ZXJmYWNlKj4odGhpc1ZhbHVlKTsKKyAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZSo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUs
ICJUZXN0SW50ZXJmYWNlIiwgInN1cHBsZW1lbnRhbE1ldGhvZDIiKTsKICAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdEludGVyZmFjZTo6aW5mbygpKTsKQEAg
LTg3NSw3ICs4NzUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVy
ZmFjZVByb3RvdHlwZUZ1bmN0aW9uU3VwcGxlbWVudGFsTWV0aG9kMgogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblN1cHBsZW1lbnRh
bE1ldGhvZDMoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0
YXRlLT50aGlzVmFsdWUoKTsKLSAgICBKU1Rlc3RJbnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZSo+KHRoaXNWYWx1ZSk7CisgICAgYXV0byBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPih0aGlzVmFsdWUpOwogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdEludGVyZmFjZSIsICJzdXBwbGVtZW50YWxNZXRob2QzIik7CiAgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RJbnRlcmZhY2U6Omlu
Zm8oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcAppbmRleCA2
MGQwNWRjNjJmMWU3NDAwOTUwNjM1NTIyZWRlYjQ2MDFjZmYwZjhiLi44NTYyOWUyOTdlMTMxNGE5
Yjg5MzFjNzM4NzY4MzMyNzVhYmNjYzI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5D
b25zdHJ1Y3Rvci5jcHAKQEAgLTE5OSw3ICsxOTksNyBAQCBKU1ZhbHVlIEpTVGVzdEpTQnVpbHRp
bkNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0
KgogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rv
clByb3RvdHlwZUZ1bmN0aW9uVGVzdEN1c3RvbUZ1bmN0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCiB7
CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7Ci0gICAgSlNUZXN0
SlNCdWlsdGluQ29uc3RydWN0b3IqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEpT
QnVpbHRpbkNvbnN0cnVjdG9yKj4odGhpc1ZhbHVlKTsKKyAgICBhdXRvIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yKj4odGhpc1ZhbHVlKTsKICAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvciIsICJ0ZXN0Q3VzdG9tRnVu
Y3Rpb24iKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVz
dEpTQnVpbHRpbkNvbnN0cnVjdG9yOjppbmZvKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlh
UXVlcnlMaXN0TGlzdGVuZXIuY3BwCmluZGV4IDJiNjM3MjYwNGZiYmM4NDYzYzdkMWVmZTE2N2Nk
MGVhZmQ1YTljMjAuLjlhNDk3MWE4NGFhMzRlOGE2NTQwMWVkZmU2NjMwMzMxNTI3ZTBmMmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RN
ZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKQEAgLTE1MSw3
ICsxNTEsNyBAQCBKU1ZhbHVlIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI6OmdldENvbnN0
cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmplYwogRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2QoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50
aGlzVmFsdWUoKTsKLSAgICBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKiBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKj4odGhpc1ZhbHVl
KTsKKyAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE1lZGlhUXVlcnlM
aXN0TGlzdGVuZXIqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
CiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE1lZGlhUXVl
cnlMaXN0TGlzdGVuZXIiLCAibWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
UyhjYXN0ZWRUaGlzLCBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjppbmZvKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5v
bmRldGVybWluaXN0aWMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5vbmRldGVybWluaXN0aWMuY3BwCmluZGV4IDgyMWZkNDE0MzlkODNhMDM1MDI0
MzNhYmJlNzM4ZDc2MzBjOWZhZWQuLjI1NGJjNjU4MmE5YWNiYTczOTgwNDk2YWI1MGJhMWY4ODdj
NDg0MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROb25kZXRlcm1pbmlzdGljLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYy5jcHAKQEAgLTQyMSw3ICs0
MjEsNyBAQCBKU1ZhbHVlIEpTVGVzdE5vbmRldGVybWluaXN0aWM6OmdldENvbnN0cnVjdG9yKFZN
JiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGdsbwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3ROb25kZXRlcm1pbmlzdGljUHJvdG90eXBlRnVuY3Rpb25Ob25kZXRlcm1pbmlz
dGljWmVyb0FyZ0Z1bmN0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7Ci0gICAgSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYyog
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYyo+KHRoaXNW
YWx1ZSk7CisgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3ROb25kZXRl
cm1pbmlzdGljKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQog
ICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3ROb25kZXRlcm1p
bmlzdGljIiwgIm5vbmRldGVybWluaXN0aWNaZXJvQXJnRnVuY3Rpb24iKTsKICAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE5vbmRldGVybWluaXN0aWM6Omlu
Zm8oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPYmouY3BwCmluZGV4IDY2NTFkYTUwOWExY2NmMDU0NzU4YjIxOGY4M2UyNjYxNzZm
NjNiZDYuLjI1OWZkN2VhNTRlMGIyMGQ0ODNlM2UwOTQ1YmNlOTcxMzM4MzVjZjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmou
Y3BwCkBAIC0zMDE4LDcgKzMwMTgsNyBAQCBKU1ZhbHVlIEpTVGVzdE9iajo6Z2V0Q29uc3RydWN0
b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZvaWRNZXRob2Qo
RXhlY1N0YXRlKiBzdGF0ZSkKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlz
VmFsdWUoKTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE9iaio+KHRoaXNWYWx1ZSk7CisgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAg
ICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ2b2lk
TWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rl
c3RPYmo6OmluZm8oKSk7CkBAIC0zMDMwLDcgKzMwMzAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVm9pZE1ldGhvZChFeGVjU3RhdGUq
IHN0YQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvblZvaWRNZXRob2RXaXRoQXJncyhFeGVjU3RhdGUqIHN0YXRlKQogewogICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKKyAgICBhdXRvIGNhc3Rl
ZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigq
c3RhdGUsICJUZXN0T2JqIiwgInZvaWRNZXRob2RXaXRoQXJncyIpOwogICAgIEFTU0VSVF9HQ19P
QkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwpAQCAtMzA1Myw3
ICszMDUzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvblZvaWRNZXRob2RXaXRoQXJncyhFeGVjU3QKIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25CeXRlTWV0aG9kKEV4ZWNTdGF0ZSog
c3RhdGUpCiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7Ci0g
ICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlz
VmFsdWUpOworICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4o
dGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1
cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiYnl0ZU1ldGhvZCIpOwog
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZv
KCkpOwpAQCAtMzA2NSw3ICszMDY1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkJ5dGVNZXRob2QoRXhlY1N0YXRlKiBzdGEKIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25CeXRlTWV0
aG9kV2l0aEFyZ3MoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IHN0YXRlLT50aGlzVmFsdWUoKTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CisgICAgYXV0byBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dE9iaiIsICJieXRlTWV0aG9kV2l0aEFyZ3MiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVS
SVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKQEAgLTMwODgsNyArMzA4OCw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25C
eXRlTWV0aG9kV2l0aEFyZ3MoRXhlY1N0CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2N0ZXRNZXRob2QoRXhlY1N0YXRlKiBzdGF0ZSkKIHsK
ICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKLSAgICBKU1Rlc3RP
YmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7Cisg
ICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUp
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1Ro
aXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJvY3RldE1ldGhvZCIpOwogICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwpAQCAt
MzEwMCw3ICszMTAwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk9jdGV0TWV0aG9kKEV4ZWNTdGF0ZSogc3QKIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PY3RldE1ldGhvZFdpdGhB
cmdzKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+
dGhpc1ZhbHVlKCk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmoqPih0aGlzVmFsdWUpOworICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAi
b2N0ZXRNZXRob2RXaXRoQXJncyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2Fz
dGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwpAQCAtMzEyMyw3ICszMTIzLDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9jdGV0TWV0
aG9kV2l0aEFyZ3MoRXhlY1MKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25Mb25nTWV0aG9kKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgSlNW
YWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0
ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOworICAgIGF1dG8g
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibG9uZ01ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwpAQCAtMzEzNSw3ICsz
MTM1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbkxvbmdNZXRob2QoRXhlY1N0YXRlKiBzdGEKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Mb25nTWV0aG9kV2l0aEFyZ3MoRXhlY1N0
YXRlKiBzdGF0ZSkKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUo
KTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+
KHRoaXNWYWx1ZSk7CisgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RP
YmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAg
IHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJsb25nTWV0aG9k
V2l0aEFyZ3MiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpT
VGVzdE9iajo6aW5mbygpKTsKQEAgLTMxNTgsNyArMzE1OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Mb25nTWV0aG9kV2l0aEFyZ3Mo
RXhlY1N0CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uT2JqTWV0aG9kKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOworICAgIGF1dG8gY2FzdGVkVGhpcyA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RPYmoiLCAib2JqTWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhj
YXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CkBAIC0zMTcwLDcgKzMxNzAsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2JqTWV0
aG9kKEV4ZWNTdGF0ZSogc3RhdAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk9iak1ldGhvZFdpdGhBcmdzKEV4ZWNTdGF0ZSogc3RhdGUpCiB7
CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7Ci0gICAgSlNUZXN0
T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwor
ICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVl
KTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dU
aGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAib2JqTWV0aG9kV2l0aEFyZ3MiKTsKICAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygp
KTsKQEAgLTMxOTMsNyArMzE5Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PYmpNZXRob2RXaXRoQXJncyhFeGVjU3RhCiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aFNlcXVlbmNlQXJnKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBzdGF0ZS0+dGhpc1ZhbHVlKCk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOworICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RPYmoiLCAibWV0aG9kV2l0aFNlcXVlbmNlQXJnIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CkBAIC0zMjEwLDcgKzMyMTAs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aFNlcXVlbmNlQXJnKEV4ZQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFJldHVybmluZ1NlcXVlbmNlKEV4ZWNT
dGF0ZSogc3RhdGUpCiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVl
KCk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoq
Pih0aGlzVmFsdWUpOworICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAg
ICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibWV0aG9kUmV0
dXJuaW5nU2VxdWVuY2UiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRo
aXMsIEpTVGVzdE9iajo6aW5mbygpKTsKQEAgLTMyMjcsNyArMzIyNyw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RSZXR1cm5p
bmdTZXF1ZW5jZShFCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEVudW1BcmcoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKICAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKLSAgICBKU1Rlc3RPYmoqIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CisgICAgYXV0
byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJtZXRob2RXaXRoRW51bUFyZyIpOwogICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwpAQCAt
MzI0OCw3ICszMjQ4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhFbnVtQXJnKEV4ZWNTdGEKIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9u
YWxFbnVtQXJnQW5kRGVmYXVsdFZhbHVlKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOworICAgIGF1dG8gY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RPYmoiLCAibWV0aG9kV2l0aE9wdGlvbmFsRW51bUFyZ0FuZERlZmF1bHRW
YWx1ZSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0
T2JqOjppbmZvKCkpOwpAQCAtMzI3Nyw3ICszMjc3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEVudW1B
cmcKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dzKEV4ZWNTdGF0ZSogc3RhdGUpCiB7
CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7Ci0gICAgSlNUZXN0
T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwor
ICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVl
KTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dU
aGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJn
c0FuZFRocm93cyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywg
SlNUZXN0T2JqOjppbmZvKCkpOwpAQCAtMzMwMCw3ICszMzAwLDcgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFRoYXRSZXF1aXJl
c0FsbEFyZ3MKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25TZXJpYWxpemVkVmFsdWUoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKICAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CisgICAgYXV0byBjYXN0
ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdE9iaiIsICJzZXJpYWxpemVkVmFsdWUiKTsKICAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKQEAgLTMzMTcsNyAr
MzMxNyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25TZXJpYWxpemVkVmFsdWUoRXhlY1N0YXRlCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3B0aW9uc09iamVjdChFeGVjU3RhdGUq
IHN0YXRlKQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwot
ICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhp
c1ZhbHVlKTsKKyAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+
KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0
dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm9wdGlvbnNPYmplY3Qi
KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6
aW5mbygpKTsKQEAgLTMzMzcsNyArMzMzNyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PcHRpb25zT2JqZWN0KEV4ZWNTdGF0ZSoKIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2RXaXRoRXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOworICAgIGF1dG8gY2FzdGVkVGhpcyA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RPYmoiLCAibWV0aG9kV2l0aEV4Y2VwdGlvbiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwpAQCAtMzM1MSw3ICszMzUx
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhFeGNlcHRpb24oRXhlY1MKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoRXhjZXB0aW9uV2l0aE1lc3Nh
Z2UoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50
aGlzVmFsdWUoKTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdE9iaio+KHRoaXNWYWx1ZSk7CisgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
CiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJt
ZXRob2RXaXRoRXhjZXB0aW9uV2l0aE1lc3NhZ2UiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKQEAgLTMzNjUsNyArMzM2NSw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoRXhjZXB0aW9uV2l0aE1lCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ3VzdG9tTWV0aG9kKEV4ZWNTdGF0ZSogc3RhdGUp
CiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7Ci0gICAgSlNU
ZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUp
OworICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1Zh
bHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhy
b3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiY3VzdG9tTWV0aG9kIik7CiAgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7
CkBAIC0zMzc1LDcgKzMzNzUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uQ3VzdG9tTWV0aG9kKEV4ZWNTdGF0ZSogcwogRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkN1c3RvbU1ldGhv
ZFdpdGhBcmdzKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBz
dGF0ZS0+dGhpc1ZhbHVlKCk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOworICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RP
YmoiLCAiY3VzdG9tTWV0aG9kV2l0aEFyZ3MiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVS
SVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKQEAgLTMzODUsNyArMzM4NSw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25D
dXN0b21NZXRob2RXaXRoQXJncyhFeGVjCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uUHJpdmF0ZU1ldGhvZChFeGVjU3RhdGUqIHN0YXRlKQog
ewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwotICAgIEpTVGVz
dE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsK
KyAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1
ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93
VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInByaXZhdGVNZXRob2QiKTsKICAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsK
QEAgLTM0MDIsNyArMzQwMiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25Qcml2YXRlTWV0aG9kKEV4ZWNTdGF0ZSoKIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25BZGRFdmVudExpc3Rl
bmVyKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+
dGhpc1ZhbHVlKCk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmoqPih0aGlzVmFsdWUpOworICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAi
YWRkRXZlbnRMaXN0ZW5lciIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVk
VGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwpAQCAtMzQxNyw3ICszNDE3LDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkFkZEV2ZW50TGlz
dGVuZXIoRXhlY1N0YXQKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25SZW1vdmVFdmVudExpc3RlbmVyKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAg
ICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7Ci0gICAgSlNUZXN0T2Jq
KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOworICAg
IGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlz
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVtb3ZlRXZlbnRMaXN0ZW5lciIpOwogICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkp
OwpAQCAtMzQzMiw3ICszNDMyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvblJlbW92ZUV2ZW50TGlzdGVuZXIoRXhlY1MKIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0
U3RhdGVWb2lkKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBz
dGF0ZS0+dGhpc1ZhbHVlKCk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOworICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RP
YmoiLCAid2l0aFNjcmlwdFN0YXRlVm9pZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJ
VFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwpAQCAtMzQ0NCw3ICszNDQ0LDcgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldp
dGhTY3JpcHRTdGF0ZVZvaWQoRXhlY1MKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0U3RhdGVPYmooRXhlY1N0YXRlKiBzdGF0
ZSkKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKLSAgICBK
U1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1
ZSk7CisgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlz
VmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0
aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0U3RhdGVPYmoi
KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6
aW5mbygpKTsKQEAgLTM0NTgsNyArMzQ1OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0U3RhdGVPYmooRXhlY1N0CiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0
aFNjcmlwdFN0YXRlVm9pZEV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRlKQogewogICAgIEpTVmFs
dWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwotICAgIEpTVGVzdE9iaiogY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKKyAgICBhdXRvIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJv
cigqc3RhdGUsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRTdGF0ZVZvaWRFeGNlcHRpb24iKTsKICAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygp
KTsKQEAgLTM0NzIsNyArMzQ3Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0U3RhdGVWb2lkRXhjZXB0CiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlw
dFN0YXRlT2JqRXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOworICAgIGF1dG8gY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RPYmoiLCAid2l0aFNjcmlwdFN0YXRlT2JqRXhjZXB0aW9uIik7CiAgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CkBAIC0z
NDg5LDcgKzM0ODksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdFN0YXRlT2JqRXhjZXB0aQogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVjdXRp
b25Db250ZXh0KEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBz
dGF0ZS0+dGhpc1ZhbHVlKCk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOworICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RP
YmoiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKQEAgLTM1MDQsNyArMzUw
NCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25XaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRB
bmRTY3JpcHRTdGF0ZShFeGVjU3RhdGUqIHN0YXRlKQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKKyAgICBhdXRvIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJU
ZXN0T2JqIiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGUiKTsKICAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygp
KTsKQEAgLTM1MTksNyArMzUxOSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4CiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZU9iakV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0
YXRlKQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwotICAg
IEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1Zh
bHVlKTsKKyAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRo
aXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJu
IHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRFeGVjdXRp
b25Db250ZXh0QW5kU2NyaXB0U3RhdGVPYmpFeGNlcHRpb24iKTsKICAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKQEAgLTM1MzksNyAr
MzUzOSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25XaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXMoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKICAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKLSAgICBKU1Rlc3RPYmoqIGNhc3Rl
ZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CisgICAgYXV0byBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlw
dFN0YXRlV2l0aFNwYWNlcyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVk
VGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwpAQCAtMzU1Niw3ICszNTU2LDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXgKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrKEV4ZWNTdGF0ZSog
c3RhdGUpCiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7Ci0g
ICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlz
VmFsdWUpOworICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4o
dGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1
cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAid2l0aFNjcmlwdEFyZ3Vt
ZW50c0FuZENhbGxTdGFjayIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVk
VGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwpAQCAtMzU2OSw3ICszNTY5LDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRB
cmd1bWVudHNBbmRDYWwKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBcmcoRXhlY1N0YXRlKiBzdGF0ZSkKIHsK
ICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKLSAgICBKU1Rlc3RP
YmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7Cisg
ICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUp
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1Ro
aXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJtZXRob2RXaXRoT3B0aW9uYWxBcmciKTsK
ICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5m
bygpKTsKQEAgLTM1OTEsNyArMzU5MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBcmcoRXhlCiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aE9wdGlvbmFsQXJnQW5kRGVmYXVsdFZhbHVlKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7Ci0gICAgSlNUZXN0T2JqKiBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOworICAgIGF1
dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibWV0aG9kV2l0aE9wdGlvbmFsQXJnQW5kRGVmYXVs
dFZhbHVlIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rl
c3RPYmo6OmluZm8oKSk7CkBAIC0zNjEzLDcgKzM2MTMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXJn
QW5kRAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZE9wdGlvbmFsQXJnKEV4ZWNTdGF0ZSogc3Rh
dGUpCiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7Ci0gICAg
SlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFs
dWUpOworICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhp
c1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4g
dGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibWV0aG9kV2l0aE5vbk9wdGlv
bmFsQXJnQW5kT3B0aW9uYWxBcmciKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNh
c3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKQEAgLTM2NDAsNyArMzY0MCw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoTm9uT3B0aW9uYWxBcmdBCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kVHdvT3B0aW9uYWxB
cmdzKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+
dGhpc1ZhbHVlKCk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmoqPih0aGlzVmFsdWUpOworICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAi
bWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kVHdvT3B0aW9uYWxBcmdzIik7CiAgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CkBAIC0z
Njc1LDcgKzM2NzUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQQogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25h
bFN0cmluZyhFeGVjU3RhdGUqIHN0YXRlKQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3Rh
dGUtPnRoaXNWYWx1ZSgpOwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKKyAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2Jq
IiwgIm1ldGhvZFdpdGhPcHRpb25hbFN0cmluZyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwpAQCAtMzY5Nyw3ICszNjk3LDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZygKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdBbmREZWZh
dWx0VmFsdWUoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0
YXRlLT50aGlzVmFsdWUoKTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CisgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9i
aiIsICJtZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdBbmREZWZhdWx0VmFsdWUiKTsKICAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKQEAg
LTM3MTksNyArMzcxOSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdBCiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlv
bmFsU3RyaW5nSXNVbmRlZmluZWQoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKICAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CisgICAgYXV0byBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdE9iaiIsICJtZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc1VuZGVmaW5lZCIpOwog
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZv
KCkpOwpAQCAtMzczNCw3ICszNzM0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0kKIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoT3B0aW9uYWxTdHJpbmdJc051bGxTdHJpbmcoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKICAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKLSAgICBKU1Rlc3RPYmoqIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CisgICAgYXV0
byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJtZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc051bGxT
dHJpbmciKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVz
dE9iajo6aW5mbygpKTsKQEAgLTM3NDksNyArMzc0OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJp
bmdJCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aENhbGxiYWNrQXJnKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOworICAgIGF1dG8gY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RPYmoiLCAibWV0aG9kV2l0aENhbGxiYWNrQXJnIik7CiAgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CkBAIC0z
NzY2LDcgKzM3NjYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrQXJnKEV4ZQogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25DYWxs
YmFja0FyZ0FuZENhbGxiYWNrQXJnKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOworICAgIGF1dG8gY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RPYmoiLCAibWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tBcmci
KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6
aW5mbygpKTsKQEAgLTM3ODYsNyArMzc4Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBCiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmcoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKICAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKLSAgICBKU1Rlc3RPYmoqIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CisgICAgYXV0
byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJtZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFy
ZyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2Jq
OjppbmZvKCkpOwpAQCAtMzgwNCw3ICszODA0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0FuZE9wdGkK
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25N
ZXRob2RXaXRoQ2FsbGJhY2tGdW5jdGlvbkFyZyhFeGVjU3RhdGUqIHN0YXRlKQogewogICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwotICAgIEpTVGVzdE9iaiogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKKyAgICBhdXRv
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVF
cnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9uQXJnIik7
CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6Omlu
Zm8oKSk7CkBAIC0zODIxLDcgKzM4MjEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrRnVuY3RpbwogRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNrRnVuY3Rpb25BcmcoRXhlY1N0YXRlKiBzdGF0
ZSkKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKLSAgICBK
U1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1
ZSk7CisgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlz
VmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0
aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJtZXRob2RXaXRoTm9uQ2FsbGJh
Y2tBcmdBbmRDYWxsYmFja0Z1bmN0aW9uQXJnIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CkBAIC0zODQxLDcgKzM4NDEsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9uQW5kT3B0
aW9uYWxBcmcoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0
YXRlLT50aGlzVmFsdWUoKTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CisgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9i
aiIsICJtZXRob2RXaXRoQ2FsbGJhY2tGdW5jdGlvbkFuZE9wdGlvbmFsQXJnIik7CiAgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CkBA
IC0zODgzLDcgKzM4ODMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
akNvbnN0cnVjdG9yRnVuY3Rpb25TdGF0aWNNZXRob2RXaXRoQ2FsbGJhYwogRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsTWV0
aG9kMShFeGVjU3RhdGUqIHN0YXRlKQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUt
PnRoaXNWYWx1ZSgpOwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKKyAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwg
ImNvbmRpdGlvbmFsTWV0aG9kMSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2Fz
dGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwpAQCAtMzg5OCw3ICszODk4LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlv
bmFsTWV0aG9kMShFeGVjU3QKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbE1ldGhvZDIoRXhlY1N0YXRlKiBzdGF0ZSkKIHsK
ICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKLSAgICBKU1Rlc3RP
YmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7Cisg
ICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUp
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1Ro
aXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJjb25kaXRpb25hbE1ldGhvZDIiKTsKICAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygp
KTsKQEAgLTM5MTMsNyArMzkxMyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbE1ldGhvZDIoRXhlY1N0CiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9u
YWxNZXRob2QzKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBz
dGF0ZS0+dGhpc1ZhbHVlKCk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOworICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RP
YmoiLCAiY29uZGl0aW9uYWxNZXRob2QzIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
UyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CkBAIC0zOTI3LDcgKzM5MjcsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29u
ZGl0aW9uYWxNZXRob2QzKEV4ZWNTdAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMShFeGVjU3RhdGUq
IHN0YXRlKQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwot
ICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhp
c1ZhbHVlKTsKKyAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+
KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0
dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm92ZXJsb2FkZWRNZXRo
b2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9i
ajo6aW5mbygpKTsKQEAgLTM5NDcsNyArMzk0Nyw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDEo
CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk92ZXJsb2FkZWRNZXRob2QyKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOworICAgIGF1dG8gY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RPYmoiLCAib3ZlcmxvYWRlZE1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19P
QkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwpAQCAtMzk3NCw3
ICszOTc0LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMigKIHN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhv
ZDMoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50
aGlzVmFsdWUoKTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdE9iaio+KHRoaXNWYWx1ZSk7CisgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
CiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJv
dmVybG9hZGVkTWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRU
aGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CkBAIC0zOTkxLDcgKzM5OTEsNyBAQCBzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJs
b2FkZWRNZXRob2QzKAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kNChFeGVjU3RhdGUqIHN0YXRlKQog
ewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwotICAgIEpTVGVz
dE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsK
KyAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1
ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93
VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm92ZXJsb2FkZWRNZXRob2QiKTsKICAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygp
KTsKQEAgLTQwMDgsNyArNDAwOCw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDQoCiBzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92
ZXJsb2FkZWRNZXRob2Q1KEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOworICAgIGF1dG8gY2FzdGVkVGhpcyA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RPYmoiLCAib3ZlcmxvYWRlZE1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwpAQCAtNDAyNSw3ICs0MDI1LDcg
QEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kNSgKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDYoRXhlY1N0
YXRlKiBzdGF0ZSkKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUo
KTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+
KHRoaXNWYWx1ZSk7CisgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RP
YmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAg
IHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJvdmVybG9hZGVk
TWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rl
c3RPYmo6OmluZm8oKSk7CkBAIC00MDQyLDcgKzQwNDIsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRo
b2Q2KAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kNyhFeGVjU3RhdGUqIHN0YXRlKQogewogICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwotICAgIEpTVGVzdE9iaiogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKKyAgICBhdXRv
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVF
cnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm92ZXJsb2FkZWRNZXRob2QiKTsKICAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKQEAgLTQw
NTksNyArNDA1OSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDcoCiBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRN
ZXRob2Q4KEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0
ZS0+dGhpc1ZhbHVlKCk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOworICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoi
LCAib3ZlcmxvYWRlZE1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2Fz
dGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwpAQCAtNDA3Niw3ICs0MDc2LDcgQEAgc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25P
dmVybG9hZGVkTWV0aG9kOCgKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDkoRXhlY1N0YXRlKiBzdGF0
ZSkKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKLSAgICBK
U1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1
ZSk7CisgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlz
VmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0
aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJvdmVybG9hZGVkTWV0aG9kIik7
CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6Omlu
Zm8oKSk7CkBAIC00MDkzLDcgKzQwOTMsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q5KAogc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25PdmVybG9hZGVkTWV0aG9kMTAoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKICAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CisgICAgYXV0byBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdE9iaiIsICJvdmVybG9hZGVkTWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CkBAIC00MTEwLDcgKzQx
MTAsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QxMAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMTEo
RXhlY1N0YXRlKiBzdGF0ZSkKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlz
VmFsdWUoKTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE9iaio+KHRoaXNWYWx1ZSk7CisgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAg
ICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJvdmVy
bG9hZGVkTWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlz
LCBKU1Rlc3RPYmo6OmluZm8oKSk7CkBAIC00MTI3LDcgKzQxMjcsNyBAQCBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2Fk
ZWRNZXRob2QxMQogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMTIoRXhlY1N0YXRlKiBzdGF0ZSkKIHsK
ICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKLSAgICBKU1Rlc3RP
YmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7Cisg
ICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUp
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1Ro
aXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJvdmVybG9hZGVkTWV0aG9kIik7CiAgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7
CkBAIC00MTc5LDcgKzQxNzksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZChFeGVjU3RhdAogc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVy
bG9hZGVkTWV0aG9kV2l0aE9wdGlvbmFsUGFyYW1ldGVyMShFeGVjU3RhdGUqIHN0YXRlKQogewog
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwotICAgIEpTVGVzdE9i
aiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKKyAg
ICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7
CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhp
c1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm92ZXJsb2FkZWRNZXRob2RXaXRoT3B0aW9u
YWxQYXJhbWV0ZXIiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMs
IEpTVGVzdE9iajo6aW5mbygpKTsKQEAgLTQyMDYsNyArNDIwNiw3IEBAIHN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRl
ZE1ldGhvZFdpCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2RXaXRoT3B0aW9uYWxQYXJhbWV0ZXIyKEV4
ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1Zh
bHVlKCk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RP
YmoqPih0aGlzVmFsdWUpOworICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAg
ICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAib3Zlcmxv
YWRlZE1ldGhvZFdpdGhPcHRpb25hbFBhcmFtZXRlciIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwpAQCAtNDMyMyw3ICs0MzIz
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1
bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDEoRXhlY1MKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DbGFzc01ldGhvZFdpdGhDbGFtcChFeGVjU3Rh
dGUqIHN0YXRlKQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgp
OwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4o
dGhpc1ZhbHVlKTsKKyAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
aio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAg
cmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImNsYXNzTWV0aG9k
V2l0aENsYW1wIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBK
U1Rlc3RPYmo6OmluZm8oKSk7CkBAIC00MzUzLDcgKzQzNTMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ2xhc3NNZXRob2RXaXRoQ2xh
bXAoRXhlYwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFdpdGhVbnNpZ25lZExvbmdTZXF1ZW5jZShFeGVjU3RhdGUqIHN0YXRlKQog
ewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwotICAgIEpTVGVz
dE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsK
KyAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1
ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93
VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm1ldGhvZFdpdGhVbnNpZ25lZExvbmdT
ZXF1ZW5jZSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNU
ZXN0T2JqOjppbmZvKCkpOwpAQCAtNDM3MCw3ICs0MzcwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhVbnNpZ25lZExv
bmdTZXEKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25TdHJpbmdBcnJheUZ1bmN0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOworICAgIGF1dG8gY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RPYmoiLCAic3RyaW5nQXJyYXlGdW5jdGlvbiIpOwogICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwpAQCAtNDM5
MCw3ICs0MzkwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvblN0cmluZ0FycmF5RnVuY3Rpb24oRXhlY1MKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Eb21TdHJpbmdMaXN0RnVuY3Rp
b24oRXhlY1N0YXRlKiBzdGF0ZSkKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50
aGlzVmFsdWUoKTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdE9iaio+KHRoaXNWYWx1ZSk7CisgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
CiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJk
b21TdHJpbmdMaXN0RnVuY3Rpb24iKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNh
c3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKQEAgLTQ0MTAsNyArNDQxMCw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Eb21TdHJp
bmdMaXN0RnVuY3Rpb24oRXhlCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEFuZFdpdGhvdXROdWxsYWJsZVNlcXVlbmNlKEV4
ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1Zh
bHVlKCk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RP
YmoqPih0aGlzVmFsdWUpOworICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAg
ICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibWV0aG9k
V2l0aEFuZFdpdGhvdXROdWxsYWJsZVNlcXVlbmNlIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CkBAIC00NDMwLDcgKzQ0MzAs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aEFuZFdpdGhvdXROdWxsYQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhBbmRXaXRob3V0TnVsbGFibGVT
ZXF1ZW5jZTIoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0
YXRlLT50aGlzVmFsdWUoKTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CisgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9i
aiIsICJtZXRob2RXaXRoQW5kV2l0aG91dE51bGxhYmxlU2VxdWVuY2UyIik7CiAgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CkBAIC00
NDUwLDcgKzQ0NTAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEFuZFdpdGhvdXROdWxsYQogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkdldFNWR0RvY3VtZW50KEV4
ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1Zh
bHVlKCk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RP
YmoqPih0aGlzVmFsdWUpOworICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAg
ICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiZ2V0U1ZH
RG9jdW1lbnQiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpT
VGVzdE9iajo6aW5mbygpKTsKQEAgLTQ0NjcsNyArNDQ2Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25HZXRTVkdEb2N1bWVudChFeGVj
U3RhdGUqCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uQ29udmVydDEoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CisgICAgYXV0byBjYXN0ZWRUaGlzID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAi
VGVzdE9iaiIsICJjb252ZXJ0MSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2Fz
dGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwpAQCAtNDQ4NCw3ICs0NDg0LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbnZlcnQx
KEV4ZWNTdGF0ZSogc3RhdGUKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25Db252ZXJ0MihFeGVjU3RhdGUqIHN0YXRlKQogewogICAgIEpTVmFs
dWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwotICAgIEpTVGVzdE9iaiogY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKKyAgICBhdXRvIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJv
cigqc3RhdGUsICJUZXN0T2JqIiwgImNvbnZlcnQyIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CkBAIC00NTAxLDcgKzQ1MDEs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uQ29udmVydDIoRXhlY1N0YXRlKiBzdGF0ZQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbnZlcnQ0KEV4ZWNTdGF0ZSogc3RhdGUpCiB7
CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7Ci0gICAgSlNUZXN0
T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwor
ICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVl
KTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dU
aGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiY29udmVydDQiKTsKICAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKQEAgLTQ1
MTgsNyArNDUxOCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25Db252ZXJ0NChFeGVjU3RhdGUqIHN0YXRlCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29udmVydDUoRXhlY1N0YXRl
KiBzdGF0ZSkKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsK
LSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRo
aXNWYWx1ZSk7CisgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoq
Pih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJl
dHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJjb252ZXJ0NSIpOwog
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZv
KCkpOwpAQCAtNDUzNSw3ICs0NTM1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbnZlcnQ1KEV4ZWNTdGF0ZSogc3RhdGUKIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NdXRhYmxl
UG9pbnRGdW5jdGlvbihFeGVjU3RhdGUqIHN0YXRlKQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKKyAgICBhdXRvIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJU
ZXN0T2JqIiwgIm11dGFibGVQb2ludEZ1bmN0aW9uIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CkBAIC00NTQ3LDcgKzQ1NDcs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTXV0YWJsZVBvaW50RnVuY3Rpb24oRXhlYwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkltbXV0YWJsZVBvaW50RnVuY3Rpb24oRXhlY1N0
YXRlKiBzdGF0ZSkKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUo
KTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+
KHRoaXNWYWx1ZSk7CisgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RP
YmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAg
IHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJpbW11dGFibGVQ
b2ludEZ1bmN0aW9uIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlz
LCBKU1Rlc3RPYmo6OmluZm8oKSk7CkBAIC00NTU5LDcgKzQ1NTksNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uSW1tdXRhYmxlUG9pbnRG
dW5jdGlvbihFeAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk9yYW5nZShFeGVjU3RhdGUqIHN0YXRlKQogewogICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKKyAgICBhdXRvIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUs
ICJUZXN0T2JqIiwgIm9yYW5nZSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2Fz
dGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwpAQCAtNDU3MSw3ICs0NTcxLDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9yYW5nZShF
eGVjU3RhdGUqIHN0YXRlKQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvblN0cmljdEZ1bmN0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7Ci0gICAgSlNUZXN0T2JqKiBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOworICAgIGF1
dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAic3RyaWN0RnVuY3Rpb24iKTsKICAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKQEAgLTQ1
OTcsNyArNDU5Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25TdHJpY3RGdW5jdGlvbihFeGVjU3RhdGUqCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU3RyaWN0RnVuY3Rpb25XaXRo
U2VxdWVuY2UoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0
YXRlLT50aGlzVmFsdWUoKTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CisgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9i
aiIsICJzdHJpY3RGdW5jdGlvbldpdGhTZXF1ZW5jZSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwpAQCAtNDYyMiw3ICs0NjIy
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvblN0cmljdEZ1bmN0aW9uV2l0aFNlcXVlbmMKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TdHJpY3RGdW5jdGlvbldpdGhBcnJheShFeGVj
U3RhdGUqIHN0YXRlKQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1
ZSgpOwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2Jq
Kj4odGhpc1ZhbHVlKTsKKyAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAg
ICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInN0cmljdEZ1
bmN0aW9uV2l0aEFycmF5Iik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRU
aGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CkBAIC00NjQ3LDcgKzQ2NDcsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU3RyaWN0RnVuY3Rp
b25XaXRoQXJyYXkoRQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvblZhcmlhZGljU3RyaW5nTWV0aG9kKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAg
ICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7Ci0gICAgSlNUZXN0T2Jq
KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOworICAg
IGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlz
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAidmFyaWFkaWNTdHJpbmdNZXRob2QiKTsKICAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygp
KTsKQEAgLTQ2NjcsNyArNDY2Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY1N0cmluZ01ldGhvZChFeGVjCiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNE
b3VibGVNZXRob2QoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IHN0YXRlLT50aGlzVmFsdWUoKTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CisgICAgYXV0byBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dE9iaiIsICJ2YXJpYWRpY0RvdWJsZU1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwpAQCAtNDY4Nyw3ICs0Njg3LDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
blZhcmlhZGljRG91YmxlTWV0aG9kKEV4ZWMKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY05vZGVNZXRob2QoRXhlY1N0YXRlKiBz
dGF0ZSkKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKLSAg
ICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNW
YWx1ZSk7CisgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0
aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVy
biB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ2YXJpYWRpY05vZGVNZXRo
b2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9i
ajo6aW5mbygpKTsKQEAgLTQ3MTAsNyArNDcxMCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY05vZGVNZXRob2QoRXhlY1N0
CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
QW55KEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+
dGhpc1ZhbHVlKCk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmoqPih0aGlzVmFsdWUpOworICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAi
YW55Iik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RP
Ymo6OmluZm8oKSk7CkBAIC00NzM2LDcgKzQ3MzYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvbihFeGVj
Uwogc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
blRlc3RQcm9taXNlRnVuY3Rpb25Qcm9taXNlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTUHJvbWlzZURl
ZmVycmVkKiBwcm9taXNlRGVmZXJyZWQpCiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0
ZS0+dGhpc1ZhbHVlKCk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOworICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoi
LCAidGVzdFByb21pc2VGdW5jdGlvbiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
Y2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwpAQCAtNDc1NCw3ICs0NzU0LDcgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQ
cm9taXNlRnVuY3Rpb25XaXRoRmwKIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEZsb2F0QXJndW1lbnRQ
cm9taXNlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTUHJvbWlzZURlZmVycmVkKiBwcm9taXNlRGVmZXJy
ZWQpCiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7Ci0gICAg
SlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFs
dWUpOworICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhp
c1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4g
dGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAidGVzdFByb21pc2VGdW5jdGlv
bldpdGhGbG9hdEFyZ3VtZW50Iik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0
ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CkBAIC00NzgxLDcgKzQ3ODEsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21p
c2VGdW5jdGlvbldpdGhFeAogc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb25XaXRoRXhjZXB0aW9uUHJvbWlzZShF
eGVjU3RhdGUqIHN0YXRlLCBKU1Byb21pc2VEZWZlcnJlZCogcHJvbWlzZURlZmVycmVkKQogewog
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwotICAgIEpTVGVzdE9i
aiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKKyAg
ICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7
CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhp
c1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInRlc3RQcm9taXNlRnVuY3Rpb25XaXRoRXhj
ZXB0aW9uIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rl
c3RPYmo6OmluZm8oKSk7CkBAIC00ODAxLDcgKzQ4MDEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvbldp
dGhPcAogc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvblRlc3RQcm9taXNlRnVuY3Rpb25XaXRoT3B0aW9uYWxJbnRBcmd1bWVudFByb21pc2UoRXhl
Y1N0YXRlKiBzdGF0ZSwgSlNQcm9taXNlRGVmZXJyZWQqIHByb21pc2VEZWZlcnJlZCkKIHsKICAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKLSAgICBKU1Rlc3RPYmoq
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CisgICAg
YXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwog
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ0ZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aE9wdGlv
bmFsSW50QXJndW1lbnQiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRo
aXMsIEpTVGVzdE9iajo6aW5mbygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmNw
cAppbmRleCBkMzI3NjM5YzI4ZGM2ODkwNGYxNmExMDk1ZDYzY2IyZjc0MDMxM2E4Li40NGFiNDQ5
YjgyZThjZjJjZDZiMGQzZDRlNTc1YjlhNmNiNmVjMWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcnJpZGVCdWlsdGlucy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJy
aWRlQnVpbHRpbnMuY3BwCkBAIC0xOTUsNyArMTk1LDcgQEAgSlNWYWx1ZSBKU1Rlc3RPdmVycmlk
ZUJ1aWx0aW5zOjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBn
bG8KIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T3ZlcnJpZGVCdWlsdGluc1By
b3RvdHlwZUZ1bmN0aW9uTmFtZWRJdGVtKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7Ci0gICAgSlNUZXN0T3ZlcnJpZGVCdWls
dGlucyogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T3ZlcnJpZGVCdWlsdGlucyo+
KHRoaXNWYWx1ZSk7CisgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RP
dmVycmlkZUJ1aWx0aW5zKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPdmVy
cmlkZUJ1aWx0aW5zIiwgIm5hbWVkSXRlbSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJ
VFMoY2FzdGVkVGhpcywgSlNUZXN0T3ZlcnJpZGVCdWlsdGluczo6aW5mbygpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVm
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlw
ZWRlZnMuY3BwCmluZGV4IDQ4NTJlNDFjYTVmZGIzNTAwZTY5NGU2OWU3YTA3MTg3NTZkODdiMGMu
LmE3MTdjNzA1N2NhMDA1OTgwN2U5ZjE2MGM3MzVkZjcxN2JjNmFmNDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVk
ZWZzLmNwcApAQCAtNDU4LDcgKzQ1OCw3IEBAIEpTVmFsdWUgSlNUZXN0VHlwZWRlZnM6OmdldENv
bnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25G
dW5jKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+
dGhpc1ZhbHVlKCk7Ci0gICAgSlNUZXN0VHlwZWRlZnMqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdFR5cGVkZWZzKj4odGhpc1ZhbHVlKTsKKyAgICBhdXRvIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RUeXBlZGVmcyIsICJmdW5jIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
UyhjYXN0ZWRUaGlzLCBKU1Rlc3RUeXBlZGVmczo6aW5mbygpKTsKQEAgLTQ4MCw3ICs0ODAsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVu
Y3Rpb25GdW5jKEV4ZWNTdGF0ZSogc3RhdAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uU2V0U2hhZG93KEV4ZWNTdGF0ZSogc3RhdGUp
CiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7Ci0gICAgSlNU
ZXN0VHlwZWRlZnMqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4o
dGhpc1ZhbHVlKTsKKyAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5
cGVkZWZzKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAg
ICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJz
ZXRTaGFkb3ciKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpT
VGVzdFR5cGVkZWZzOjppbmZvKCkpOwpAQCAtNTIxLDcgKzUyMSw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblNldFNoYWRvdyhF
eGVjU3RhdGUqCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoU2VxdWVuY2VBcmcoRXhlY1N0YXRlKiBzdGF0ZSkKIHsK
ICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKLSAgICBKU1Rlc3RU
eXBlZGVmcyogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPih0aGlz
VmFsdWUpOworICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRl
ZnMqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAg
IHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwgIm1ldGhv
ZFdpdGhTZXF1ZW5jZUFyZyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVk
VGhpcywgSlNUZXN0VHlwZWRlZnM6OmluZm8oKSk7CkBAIC01MzgsNyArNTM4LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aFNlcXVlbmNlQXIKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlw
ZWRlZnNQcm90b3R5cGVGdW5jdGlvbk51bGxhYmxlQXJyYXlBcmcoRXhlY1N0YXRlKiBzdGF0ZSkK
IHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKLSAgICBKU1Rl
c3RUeXBlZGVmcyogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPih0
aGlzVmFsdWUpOworICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlw
ZWRlZnMqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAg
ICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwgIm51
bGxhYmxlQXJyYXlBcmciKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRo
aXMsIEpTVGVzdFR5cGVkZWZzOjppbmZvKCkpOwpAQCAtNTU1LDcgKzU1NSw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk51bGxh
YmxlQXJyYXlBcmcoRXhlCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVk
ZWZzUHJvdG90eXBlRnVuY3Rpb25GdW5jV2l0aENsYW1wKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAg
ICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7Ci0gICAgSlNUZXN0VHlw
ZWRlZnMqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4odGhpc1Zh
bHVlKTsKKyAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZz
Kj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICBy
ZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJmdW5jV2l0
aENsYW1wIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rl
c3RUeXBlZGVmczo6aW5mbygpKTsKQEAgLTU5Miw3ICs1OTIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25GdW5jV2l0aENsYW1w
KEV4ZWNTdAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3Rv
dHlwZUZ1bmN0aW9uSW1tdXRhYmxlUG9pbnRGdW5jdGlvbihFeGVjU3RhdGUqIHN0YXRlKQogewog
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwotICAgIEpTVGVzdFR5
cGVkZWZzKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+KHRoaXNW
YWx1ZSk7CisgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVm
cyo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAg
cmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAiaW1tdXRh
YmxlUG9pbnRGdW5jdGlvbiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVk
VGhpcywgSlNUZXN0VHlwZWRlZnM6OmluZm8oKSk7CkBAIC02MDQsNyArNjA0LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uSW1t
dXRhYmxlUG9pbnRGdW5jdGkKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlw
ZWRlZnNQcm90b3R5cGVGdW5jdGlvblN0cmluZ0FycmF5RnVuY3Rpb24oRXhlY1N0YXRlKiBzdGF0
ZSkKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKLSAgICBK
U1Rlc3RUeXBlZGVmcyogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMq
Pih0aGlzVmFsdWUpOworICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
VHlwZWRlZnMqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAg
ICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwg
InN0cmluZ0FycmF5RnVuY3Rpb24iKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNh
c3RlZFRoaXMsIEpTVGVzdFR5cGVkZWZzOjppbmZvKCkpOwpAQCAtNjI0LDcgKzYyNCw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlv
blN0cmluZ0FycmF5RnVuY3Rpb24oCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25TdHJpbmdBcnJheUZ1bmN0aW9uMihFeGVjU3RhdGUq
IHN0YXRlKQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwot
ICAgIEpTVGVzdFR5cGVkZWZzKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBl
ZGVmcyo+KHRoaXNWYWx1ZSk7CisgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RUeXBlZGVmcyo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0VHlwZWRl
ZnMiLCAic3RyaW5nQXJyYXlGdW5jdGlvbjIiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVS
SVRTKGNhc3RlZFRoaXMsIEpTVGVzdFR5cGVkZWZzOjppbmZvKCkpOwpAQCAtNjQ0LDcgKzY0NCw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVG
dW5jdGlvblN0cmluZ0FycmF5RnVuY3Rpb24yCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25DYWxsV2l0aFNlcXVlbmNlVGhhdFJlcXVp
cmVzSW5jbHVkZShFeGVjU3RhdGUqIHN0YXRlKQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
c3RhdGUtPnRoaXNWYWx1ZSgpOwotICAgIEpTVGVzdFR5cGVkZWZzKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+KHRoaXNWYWx1ZSk7CisgICAgYXV0byBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+KHRoaXNWYWx1ZSk7CiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJv
cigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAiY2FsbFdpdGhTZXF1ZW5jZVRoYXRSZXF1aXJlc0lu
Y2x1ZGUiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVz
dFR5cGVkZWZzOjppbmZvKCkpOwpAQCAtNjYxLDcgKzY2MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbkNhbGxXaXRoU2VxdWVu
Y2VUaGF0CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoRXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7Ci0gICAgSlNUZXN0VHlwZWRl
ZnMqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4odGhpc1ZhbHVl
KTsKKyAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4o
dGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1
cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJtZXRob2RXaXRo
RXhjZXB0aW9uIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBK
U1Rlc3RUeXBlZGVmczo6aW5mbygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudFRhcmdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCmluZGV4
IDU2YWEyOTNjNzg3YWNhNTA4MmZmMTYwZmRlN2NmZjMwNDc2YTE3ZjEuLjViYjkwYjBjYjM1ZDIw
MGZmOGMwY2M1YWI3NTI4MWRlNWQwMmNhYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudFRhcmdldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNw
cApAQCAtNzYsMTEgKzc2LDIwIEBAIGJvb2wgRXZlbnRUYXJnZXQ6OmlzTWVzc2FnZVBvcnQoKSBj
b25zdAogCiBib29sIEV2ZW50VGFyZ2V0OjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJiBsaXN0ZW5lciwgYm9vbCB1
c2VDYXB0dXJlKQogeworICAgIGlmIChhdXRvKiB3aW5kb3cgPSB0b0RPTVdpbmRvdygpKSB7Cisg
ICAgICAgIGlmICghd2luZG93LT5mcmFtZSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KICAgICByZXR1cm4gZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkuZXZlbnRMaXN0ZW5lck1h
cC5hZGQoZXZlbnRUeXBlLCBXVEZNb3ZlKGxpc3RlbmVyKSwgdXNlQ2FwdHVyZSk7CiB9CiAKIGJv
b2wgRXZlbnRUYXJnZXQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBl
dmVudFR5cGUsIEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCiB7Cisg
ICAgaWYgKGF1dG8qIHdpbmRvdyA9IHRvRE9NV2luZG93KCkpIHsKKyAgICAgICAgaWYgKCF3aW5k
b3ctPmZyYW1lKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCiAgICAgRXZl
bnRUYXJnZXREYXRhKiBkID0gZXZlbnRUYXJnZXREYXRhKCk7CiAgICAgaWYgKCFkKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJn
ZXQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmlkbAppbmRleCBhNDhiM2Ri
NmM5NTA1YmFhOGZiZjkzOThkODY4ZGJmNTMzOGY4MzVjLi5hOTU1Mjg3MThjNmJhNmVjNjlmNTVi
MGM4NGViYWFjZDhkZTJmOGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRU
YXJnZXQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5pZGwKQEAgLTI1
LDYgKzI1LDcgQEAKICAgICBDdXN0b21Ub0pTT2JqZWN0LAogICAgIEpTQ3VzdG9tVG9OYXRpdmVP
YmplY3QsCiAgICAgRXZlbnRUYXJnZXQsCisgICAgSlNDdXN0b21IZWFkZXIsCiBdIGludGVyZmFj
ZSBFdmVudFRhcmdldCB7CiAgICAgW09iakNMZWdhY3lVbm5hbWVkUGFyYW1ldGVyc10gdm9pZCBh
ZGRFdmVudExpc3RlbmVyKERPTVN0cmluZyB0eXBlLCBFdmVudExpc3RlbmVyIGxpc3RlbmVyLCBv
cHRpb25hbCBib29sZWFuIHVzZUNhcHR1cmUpOwogICAgIFtPYmpDTGVnYWN5VW5uYW1lZFBhcmFt
ZXRlcnNdIHZvaWQgcmVtb3ZlRXZlbnRMaXN0ZW5lcihET01TdHJpbmcgdHlwZSwgRXZlbnRMaXN0
ZW5lciBsaXN0ZW5lciwgb3B0aW9uYWwgYm9vbGVhbiB1c2VDYXB0dXJlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAppbmRleCA0M2ZhZmFlMTU2YzI1
NmQ2ZmMyOGFlMjcxYjZmYjdkM2M3MzZkMDBkLi4wZjE4MjQ0M2RhNzcwM2EyNzY3ZTQ2ZTBkZjBm
NzAzZTI5ZDRkZDA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuY3BwCkBAIC0zOTAsNyArMzkwLDggQEAgYm9vbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
OjpkaXNwYXRjaEVycm9yRXZlbnQoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludAogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICNpZiBQTEFURk9STShJT1MpCi0gICAgaWYgKHRhcmdldCA9
PSB0YXJnZXQtPnRvRE9NV2luZG93KCkgJiYgaXM8RG9jdW1lbnQ+KCp0aGlzKSkgeworICAgIGF1
dG8gdGFyZ2V0SXNXaW5kb3cgPSAhIXRhcmdldC0+dG9ET01XaW5kb3coKTsKKyAgICBpZiAodGFy
Z2V0SXNXaW5kb3cgJiYgaXM8RG9jdW1lbnQ+KCp0aGlzKSkgewogICAgICAgICBTZXR0aW5ncyog
c2V0dGluZ3MgPSBkb3duY2FzdDxEb2N1bWVudD4oKnRoaXMpLnNldHRpbmdzKCk7CiAgICAgICAg
IGlmIChzZXR0aW5ncyAmJiAhc2V0dGluZ3MtPnNob3VsZERpc3BhdGNoSmF2YVNjcmlwdFdpbmRv
d09uRXJyb3JFdmVudHMoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RE9NV2luZG93LmlkbAppbmRleCA4ODNjOTIzNzg4NDVmNjNjMmE2YmU2NTk3M2E0ODE3MGJiZmE4
NjQ0Li41MjJhMWY5MTg3YjRmZjAxNWM2M2M0YWY2Njc5ZjBmMDIwMWU4NjUwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9ET01XaW5kb3cuaWRsCkBAIC0zNiwxMCArMzYsOSBAQAogICAgIEpTQ3VzdG9tVG9OYXRp
dmVPYmplY3QsCiAgICAgQ3VzdG9tUHV0RnVuY3Rpb24sCiAgICAgRXZlbnRUYXJnZXQsCi0gICAg
SlNHZW5lcmF0ZVRvTmF0aXZlT2JqZWN0LAogICAgIEpTTGVnYWN5UGFyZW50PUpTRE9NV2luZG93
QmFzZSwKICAgICBJbnRlcmZhY2VOYW1lPVdpbmRvdywKLV0gaW50ZXJmYWNlIERPTVdpbmRvdyB7
CitdIGludGVyZmFjZSBET01XaW5kb3cgOiBFdmVudFRhcmdldCB7CiAgICAgLy8gRE9NIExldmVs
IDAKICAgICBbUmVwbGFjZWFibGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBTY3JlZW4gc2NyZWVuOwog
ICAgIFtSZXBsYWNlYWJsZV0gcmVhZG9ubHkgYXR0cmlidXRlIEhpc3RvcnkgaGlzdG9yeTsKQEAg
LTE4NiwxMSArMTg1LDYgQEAKIAogICAgIFtSZXBsYWNlYWJsZV0gcmVhZG9ubHkgYXR0cmlidXRl
IERPTVdpbmRvd0NTUyBDU1M7CiAKLSAgICAvLyBFdmVudFRhcmdldCBpbnRlcmZhY2UKLSAgICBb
Q3VzdG9tXSB2b2lkIGFkZEV2ZW50TGlzdGVuZXIoRE9NU3RyaW5nIHR5cGUsIEV2ZW50TGlzdGVu
ZXIgbGlzdGVuZXIsIG9wdGlvbmFsIGJvb2xlYW4gdXNlQ2FwdHVyZSk7Ci0gICAgW0N1c3RvbV0g
dm9pZCByZW1vdmVFdmVudExpc3RlbmVyKERPTVN0cmluZyB0eXBlLCBFdmVudExpc3RlbmVyIGxp
c3RlbmVyLCBvcHRpb25hbCBib29sZWFuIHVzZUNhcHR1cmUpOwotICAgIFtJbXBsZW1lbnRlZEFz
PWRpc3BhdGNoRXZlbnRGb3JCaW5kaW5ncywgUmFpc2VzRXhjZXB0aW9uXSBib29sZWFuIGRpc3Bh
dGNoRXZlbnQoRXZlbnQgZXZlbnQpOwotCiAgICAgdm9pZCBjYXB0dXJlRXZlbnRzKC8qaW4gbG9u
ZyBldmVudEZsYWdzKi8pOwogICAgIHZvaWQgcmVsZWFzZUV2ZW50cygvKmluIGxvbmcgZXZlbnRG
bGFncyovKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9i
YWxTY29wZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmlk
bAppbmRleCA3NDhlYWYwN2VjYzc0OGEzNjJkMzlmMTk4NWVhMTFhODBkZjgzM2Q2Li4zYTExMTBm
Y2ZkN2E4YzUwMDRhYjEyOWMwODVkZmIwMGQzYWRjNmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmlkbApAQCAtMzEsNyArMzEsNyBAQAogICAgIEpTQ3Vz
dG9tR2V0T3duUHJvcGVydHlTbG90QW5kRGVzY3JpcHRvciwKICAgICBFdmVudFRhcmdldCwKICAg
ICBKU0xlZ2FjeVBhcmVudD1KU1dvcmtlckdsb2JhbFNjb3BlQmFzZSwKLV0gaW50ZXJmYWNlIFdv
cmtlckdsb2JhbFNjb3BlIHsKK10gaW50ZXJmYWNlIFdvcmtlckdsb2JhbFNjb3BlIDogRXZlbnRU
YXJnZXQgewogCiAjaWYgZGVmaW5lZChMQU5HVUFHRV9KQVZBU0NSSVBUKSAmJiBMQU5HVUFHRV9K
QVZBU0NSSVBUCiAgICAgW1JlcGxhY2VhYmxlXSByZWFkb25seSBhdHRyaWJ1dGUgIFdvcmtlckds
b2JhbFNjb3BlIHNlbGY7CkBAIC00OCwxMiArNDgsNiBAQAogICAgIFtDdXN0b21dIHZvaWQgaW1w
b3J0U2NyaXB0cygvKltWYXJpYWRpY10gRE9NU3RyaW5nIHVybHMgKi8pOwogICAgIFtSZXBsYWNl
YWJsZV0gcmVhZG9ubHkgYXR0cmlidXRlIFdvcmtlck5hdmlnYXRvciBuYXZpZ2F0b3I7CiAKLSAg
ICAvLyBFdmVudFRhcmdldCBpbnRlcmZhY2UKLQotICAgIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihE
T01TdHJpbmcgdHlwZSwgRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwgb3B0aW9uYWwgYm9vbGVhbiB1
c2VDYXB0dXJlKTsKLSAgICB2b2lkIHJlbW92ZUV2ZW50TGlzdGVuZXIoRE9NU3RyaW5nIHR5cGUs
IEV2ZW50TGlzdGVuZXIgbGlzdGVuZXIsIG9wdGlvbmFsIGJvb2xlYW4gdXNlQ2FwdHVyZSk7Ci0g
ICAgW0ltcGxlbWVudGVkQXM9ZGlzcGF0Y2hFdmVudEZvckJpbmRpbmdzLCBSYWlzZXNFeGNlcHRp
b25dIGJvb2xlYW4gZGlzcGF0Y2hFdmVudChFdmVudCBldmVudCk7Ci0KICAgICAvLyBBZGRpdGlv
bmFsIGNvbnN0cnVjdG9ycwogCiAgICAgYXR0cmlidXRlIERPTVVSTENvbnN0cnVjdG9yIHdlYmtp
dFVSTDsgLy8gRklYTUU6IGRlcHJlY2F0ZSB0aGlzLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDA5ZTA4MDdiMDRiMDJiMjE3
YzU3NTBmNzBhZWFiZmIwMmRjNDcyMGQuLjA3NWQ4YWJiM2ZmN2YxZmE2YWJlMmE0ZjU0ZDkxYjkz
YTVhYWU2ZWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxNi0wMi0xMiAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFdpbmRvdyBhbmQgV29ya2VyR2xvYmFsU2Nv
cGUgc2hvdWxkIGluaGVyaXQgRXZlbnRUYXJnZXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NDE3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFJlYmFzZWxpbmUgbm93IHRoYXQgd2luZG93IGhhcyBvbmUg
bW9yZSBvYmplY3QgaW4gaXRzIHByb3RvdHlwZSBjaGFpbi4KKworICAgICAgICAqIGZhc3QvbG9h
ZGVyL3dpbmRvdy1jbGVhcmluZy1leHBlY3RlZC50eHQ6CisKIDIwMTYtMDItMTIgIERhbmllbCBC
YXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIENTUDogJ2Jsb2I6JyBVUkxzIHNo
b3VsZCBub3QgbWF0Y2ggJ3NlbGYnIGluIENTUCBzb3VyY2UgZXhwcmVzc2lvbiBsaXN0cy4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4IDJlM2MxZDRhODhhMDYzMjFhMGUwOGY4YjU3
YzQwNGE1ZGQ1OTRiMzYuLmFlZTRiODgzZDhmOTczYzY3OTZiNGE5Zjk0ZWFkZjA5ZDA4ZDc3YTcg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE2LTAy
LTEyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgV2luZG93IGFu
ZCBXb3JrZXJHbG9iYWxTY29wZSBzaG91bGQgaW5oZXJpdCBFdmVudFRhcmdldAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU0MTcwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmViYXNlbGluZSBub3cgdGhh
dCBhIGNvdXBsZSBvZiBjaGVja3MgYXJlIHBhc3NpbmcuCisKKyAgICAgICAgKiB3ZWItcGxhdGZv
cm0tdGVzdHMvaHRtbC9kb20vaW50ZXJmYWNlcy1leHBlY3RlZC50eHQ6CisKIDIwMTYtMDItMTIg
IEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJLaXQgc2hv
dWxkIGV4cG9zZSB0aGUgRE9NIDQgRXZlbnQuaXNUcnVzdGVkIHByb3BlcnR5CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci93aW5kb3ctY2xlYXJpbmctZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvd2luZG93LWNsZWFyaW5nLWV4cGVjdGVkLnR4dAppbmRl
eCBjNzZiYjY1OGZhZTc1ZTg0NmQ1YmE1Yzk4NTAxNTY4MjA0MGE3ZWY2Li5jOGM2ZTcxYTAxYzZj
OGE2MDdiNzliOWIxNmMyNTYxMTYzMWFjOWQ1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0
L2xvYWRlci93aW5kb3ctY2xlYXJpbmctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvbG9hZGVyL3dpbmRvdy1jbGVhcmluZy1leHBlY3RlZC50eHQKQEAgLTcsMyArNyw1IEBAIFBB
U1M6IGVsZW1lbnQgMCBpbiB0aGUgd2luZG93J3MgcHJvdG90eXBlIGNoYWluIHdhcyBjbGVhcmVk
CiBQQVNTOiBlbGVtZW50IDEgaW4gdGhlIHdpbmRvdydzIHByb3RvdHlwZSBjaGFpbiB3YXMgY2xl
YXJlZAogCiBQQVNTOiBlbGVtZW50IDIgaW4gdGhlIHdpbmRvdydzIHByb3RvdHlwZSBjaGFpbiB3
YXMgY2xlYXJlZAorCitQQVNTOiBlbGVtZW50IDMgaW4gdGhlIHdpbmRvdydzIHByb3RvdHlwZSBj
aGFpbiB3YXMgY2xlYXJlZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1
cml0eS9jcm9zcy1mcmFtZS1hY2Nlc3MtY2FsbC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLWZyYW1lLWFjY2Vzcy1jYWxsLWV4cGVjdGVkLnR4dApp
bmRleCAyZjRmZGQ1NjY0MmNhMTc3NjdiZTM3Y2VlOGUzNTkxNDVkNTc1ZWFjLi45ZDM0YzhiMDkw
YmI2YWI5NDQyNjJlYTU1ODIzNWE1OGMyNDhjZmM2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLWZyYW1lLWFjY2Vzcy1jYWxsLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLWZyYW1lLWFjY2Vzcy1j
YWxsLWV4cGVjdGVkLnR4dApAQCAtMjQsOCArMjQsNiBAQCBDT05TT0xFIE1FU1NBR0U6IGxpbmUg
MTogQmxvY2tlZCBhIGZyYW1lIHdpdGggb3JpZ2luICJodHRwOi8vMTI3LjAuMC4xOjgwMDAiIGZy
bwogQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6IEJsb2NrZWQgYSBmcmFtZSB3aXRoIG9yaWdpbiAi
aHR0cDovLzEyNy4wLjAuMTo4MDAwIiBmcm9tIGFjY2Vzc2luZyBhIGZyYW1lIHdpdGggb3JpZ2lu
ICJodHRwOi8vbG9jYWxob3N0OjgwMDAiLiBQcm90b2NvbHMsIGRvbWFpbnMsIGFuZCBwb3J0cyBt
dXN0IG1hdGNoLgogQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6IEJsb2NrZWQgYSBmcmFtZSB3aXRo
IG9yaWdpbiAiaHR0cDovLzEyNy4wLjAuMTo4MDAwIiBmcm9tIGFjY2Vzc2luZyBhIGZyYW1lIHdp
dGggb3JpZ2luICJodHRwOi8vbG9jYWxob3N0OjgwMDAiLiBQcm90b2NvbHMsIGRvbWFpbnMsIGFu
ZCBwb3J0cyBtdXN0IG1hdGNoLgogQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6IEJsb2NrZWQgYSBm
cmFtZSB3aXRoIG9yaWdpbiAiaHR0cDovLzEyNy4wLjAuMTo4MDAwIiBmcm9tIGFjY2Vzc2luZyBh
IGZyYW1lIHdpdGggb3JpZ2luICJodHRwOi8vbG9jYWxob3N0OjgwMDAiLiBQcm90b2NvbHMsIGRv
bWFpbnMsIGFuZCBwb3J0cyBtdXN0IG1hdGNoLgotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6IEJs
b2NrZWQgYSBmcmFtZSB3aXRoIG9yaWdpbiAiaHR0cDovLzEyNy4wLjAuMTo4MDAwIiBmcm9tIGFj
Y2Vzc2luZyBhIGZyYW1lIHdpdGggb3JpZ2luICJodHRwOi8vbG9jYWxob3N0OjgwMDAiLiBQcm90
b2NvbHMsIGRvbWFpbnMsIGFuZCBwb3J0cyBtdXN0IG1hdGNoLgotQ09OU09MRSBNRVNTQUdFOiBs
aW5lIDE6IEJsb2NrZWQgYSBmcmFtZSB3aXRoIG9yaWdpbiAiaHR0cDovLzEyNy4wLjAuMTo4MDAw
IiBmcm9tIGFjY2Vzc2luZyBhIGZyYW1lIHdpdGggb3JpZ2luICJodHRwOi8vbG9jYWxob3N0Ojgw
MDAiLiBQcm90b2NvbHMsIGRvbWFpbnMsIGFuZCBwb3J0cyBtdXN0IG1hdGNoLgogQ09OU09MRSBN
RVNTQUdFOiBsaW5lIDEwOiBCbG9ja2VkIGEgZnJhbWUgd2l0aCBvcmlnaW4gImh0dHA6Ly8xMjcu
MC4wLjE6ODAwMCIgZnJvbSBhY2Nlc3NpbmcgYSBmcmFtZSB3aXRoIG9yaWdpbiAiaHR0cDovL2xv
Y2FsaG9zdDo4MDAwIi4gUHJvdG9jb2xzLCBkb21haW5zLCBhbmQgcG9ydHMgbXVzdCBtYXRjaC4K
IAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2h0bWwvZG9tL2ludGVyZmFjZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2RvbS9pbnRlcmZhY2VzLWV4cGVjdGVkLnR4
dAppbmRleCA0NjYxOGVmNjIwMzYyNzMwNjEyMjA3NzU0ZWYyNzMyM2FiNmY3MDg4Li42N2QwNzg4
NWU0M2E3ZWQwZjMwNmNhMjZiNDI1ODY3NzJmYTcxMjljIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvZG9tL2ludGVyZmFjZXMtZXhw
ZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvaHRtbC9kb20vaW50ZXJmYWNlcy1leHBlY3RlZC50eHQKQEAgLTM3OTksMTQgKzM3OTksMTAg
QEAgRkFJTCBEcmFnRXZlbnQgaW50ZXJmYWNlIG9iamVjdCBuYW1lIGFzc2VydF9vd25fcHJvcGVy
dHk6IHNlbGYgZG9lcyBub3QgaGF2ZSBvd24KIEZBSUwgRHJhZ0V2ZW50IGludGVyZmFjZTogZXhp
c3RlbmNlIGFuZCBwcm9wZXJ0aWVzIG9mIGludGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0IGFzc2Vy
dF9vd25fcHJvcGVydHk6IHNlbGYgZG9lcyBub3QgaGF2ZSBvd24gcHJvcGVydHkgIkRyYWdFdmVu
dCIgZXhwZWN0ZWQgcHJvcGVydHkgIkRyYWdFdmVudCIgbWlzc2luZwogRkFJTCBEcmFnRXZlbnQg
aW50ZXJmYWNlOiBleGlzdGVuY2UgYW5kIHByb3BlcnRpZXMgb2YgaW50ZXJmYWNlIHByb3RvdHlw
ZSBvYmplY3QncyAiY29uc3RydWN0b3IiIHByb3BlcnR5IGFzc2VydF9vd25fcHJvcGVydHk6IHNl
bGYgZG9lcyBub3QgaGF2ZSBvd24gcHJvcGVydHkgIkRyYWdFdmVudCIgZXhwZWN0ZWQgcHJvcGVy
dHkgIkRyYWdFdmVudCIgbWlzc2luZwogRkFJTCBEcmFnRXZlbnQgaW50ZXJmYWNlOiBhdHRyaWJ1
dGUgZGF0YVRyYW5zZmVyIGFzc2VydF9vd25fcHJvcGVydHk6IHNlbGYgZG9lcyBub3QgaGF2ZSBv
d24gcHJvcGVydHkgIkRyYWdFdmVudCIgZXhwZWN0ZWQgcHJvcGVydHkgIkRyYWdFdmVudCIgbWlz
c2luZwotRkFJTCBXaW5kb3cgaW50ZXJmYWNlOiBleGlzdGVuY2UgYW5kIHByb3BlcnRpZXMgb2Yg
aW50ZXJmYWNlIG9iamVjdCBhc3NlcnRfZXF1YWxzOiBwcm90b3R5cGUgb2YgV2luZG93IGlzIG5v
dCBFdmVudFRhcmdldCBleHBlY3RlZCBmdW5jdGlvbiAiZnVuY3Rpb24gRXZlbnRUYXJnZXQoKSB7
Ci0gICAgW25hdGl2ZSBjb2RlXQotfSIgYnV0IGdvdCBmdW5jdGlvbiAiZnVuY3Rpb24gKCkgewot
ICAgIFtuYXRpdmUgY29kZV0KLX0iCitQQVNTIFdpbmRvdyBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBh
bmQgcHJvcGVydGllcyBvZiBpbnRlcmZhY2Ugb2JqZWN0IAogUEFTUyBXaW5kb3cgaW50ZXJmYWNl
IG9iamVjdCBsZW5ndGggCiBQQVNTIFdpbmRvdyBpbnRlcmZhY2Ugb2JqZWN0IG5hbWUgCi1GQUlM
IFdpbmRvdyBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBpbnRlcmZhY2Ug
cHJvdG90eXBlIG9iamVjdCBhc3NlcnRfZXF1YWxzOiBDbGFzcyBuYW1lIGZvciBwcm90b3R5cGUg
b2YgV2luZG93LnByb3RvdHlwZSBpcyBub3QgIldpbmRvd1Byb3BlcnRpZXMiIGV4cGVjdGVkICJb
b2JqZWN0IFdpbmRvd1Byb3BlcnRpZXNdIiBidXQgZ290ICJbb2JqZWN0IE9iamVjdF0iCitGQUlM
IFdpbmRvdyBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBpbnRlcmZhY2Ug
cHJvdG90eXBlIG9iamVjdCBhc3NlcnRfZXF1YWxzOiBDbGFzcyBuYW1lIGZvciBwcm90b3R5cGUg
b2YgV2luZG93LnByb3RvdHlwZSBpcyBub3QgIldpbmRvd1Byb3BlcnRpZXMiIGV4cGVjdGVkICJb
b2JqZWN0IFdpbmRvd1Byb3BlcnRpZXNdIiBidXQgZ290ICJbb2JqZWN0IEV2ZW50VGFyZ2V0UHJv
dG90eXBlXSIKIEZBSUwgV2luZG93IGludGVyZmFjZTogZXhpc3RlbmNlIGFuZCBwcm9wZXJ0aWVz
IG9mIGludGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0J3MgImNvbnN0cnVjdG9yIiBwcm9wZXJ0eSBh
c3NlcnRfb3duX3Byb3BlcnR5OiBXaW5kb3cucHJvdG90eXBlIGRvZXMgbm90IGhhdmUgb3duIHBy
b3BlcnR5ICJjb25zdHJ1Y3RvciIgZXhwZWN0ZWQgcHJvcGVydHkgImNvbnN0cnVjdG9yIiBtaXNz
aW5nCiBQQVNTIFdpbmRvdyBpbnRlcmZhY2U6IGF0dHJpYnV0ZSBzZWxmIAogUEFTUyBXaW5kb3cg
aW50ZXJmYWNlOiBhdHRyaWJ1dGUgbmFtZSAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>271267</attachid>
            <date>2016-02-12 20:45:18 -0800</date>
            <delta_ts>2016-02-14 18:14:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-154170-20160212204457.patch</filename>
            <type>text/plain</type>
            <size>101528</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk2NTM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2QzZTlhZTExODBkZDhi
NDlkZGQ3ZGE3NjVkNGIyZTNiY2ZmMzM4YS4uNTYxZmZlNDJmNTI0MTRkZDJkYjdhMWNhMWE1NWYw
OWQyYmNhZjYzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk1IEBACisyMDE2LTAyLTEyICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgV2luZG93IGFuZCBXb3JrZXJH
bG9iYWxTY29wZSBzaG91bGQgaW5oZXJpdCBFdmVudFRhcmdldAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU0MTcwCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2luZG93IGFuZCBXb3JrZXJHbG9iYWxTY29w
ZSBzaG91bGQgaW5oZXJpdCBFdmVudFRhcmdldCBpbnN0ZWFkIG9mCisgICAgICAgIGR1cGxpY2F0
aW5nIHRoZSBFdmVudFRhcmdldCBBUEkgaW4gdGhlaXIgSURMLiBUaGVzZSB3ZXJlIHRoZSBsYXN0
CisgICAgICAgIGludGVyZmFjZXMgdGhhdCBuZWVkZWQgZml4aW5nLiBUaGUgbmV4dCBzdGVwIHdp
bGwgYmUgdG8gZ2V0IHJpZAorICAgICAgICBvZiB0aGUgW0V2ZW50VGFyZ2V0XSBJREwgZXh0ZW5k
ZWQgYXR0cmlidXRlIGFuZCByZWx5IGVudGlyZWx5CisgICAgICAgIG9uIHRoZSBFdmVudFRhcmdl
dCBpbmhlcml0YW5jZS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGFscmVhZHkgY292ZXJlZCBi
eSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgQWRkIEpTRXZlbnRUYXJnZXRDdXN0b20uaCBoZWFkZXIgdG8gdGhl
IHByb2plY3QuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHA6
CisgICAgICAgIERyb3AgY3VzdG9tIGJpbmRpbmdzIGZvciBXaW5kb3cncyBhZGRFdmVudExpc3Rl
bmVyKCkgYW5kCisgICAgICAgIHJlbW92ZUV2ZW50TGlzdGVuZXIoKS4gVGhlIG9ubHkgcmVhc29u
IHRoZXNlIG5lZWRlZCBjdXN0b20KKyAgICAgICAgY29kZSB3YXMgdG8gYWRkIGEgY2hlY2sgZm9y
IGZyYW1lbGVzcyB3aW5kb3dzLiBUaGUgZnJhbWVsZXNzCisgICAgICAgIFdpbmRvdyBjaGVja3Mg
d2FzIG1vdmVkIHRvIHRoZSByZXNwZWN0aXZlIG1ldGhvZHMgaW4gdGhlCisgICAgICAgIEpTRXZl
bnRUYXJnZXQgZ2VuZXJhdGVkIGJpbmRpbmdzLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNE
T01XaW5kb3dTaGVsbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd1NoZWxsOjpz
ZXRXaW5kb3cpOgorICAgICAgICBTZXQgV2luZG93UHJvdG90eXBlJ3MgcHJvdG90eXBlIHRvIEV2
ZW50VGFyZ2V0J3MgcHJvdG90eXBlLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5k
b3dTaGVsbC5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5jcHA6CisgICAg
ICAgIEluY2x1ZGUgIkRPTVdpbmRvdy5oIiB0byBmaXggdGhlIGJ1aWxkLgorCisgICAgICAgICog
YmluZGluZ3MvanMvSlNFdmVudFRhcmdldEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U0V2ZW50VGFyZ2V0Ojp0b1dyYXBwZWQpOgorICAgICAgICBIYW5kbGUgRE9NV2luZG93IGFuZCBX
b3JrZXJHbG9iYWxTY29wZSBleHBsaWNpdGVseSBpbiB0b1dyYXBwZWQoKQorICAgICAgICBhbmQg
Z2V0IHJpZCBvZiB0aGUgRE9NX0VWRU5UX1RBUkdFVF9JTlRFUkZBQ0VTX0ZPUl9FQUNIKFRSWV9U
T19VTldSQVBfV0lUSF9JTlRFUkZBQ0UpCisgICAgICAgIG5vdyB0aGF0IGFsbCBpbnRlcmZhY2Vz
IGluaGVyaXQgRXZlbnRUYXJnZXQgd2hlbiB0aGV5IHNob3VsZC4KKyAgICAgICAgVGhlIHJlYXNv
biBET01XaW5kb3cgYW5kIFdvcmtlckdsb2JhbFNjb3BlIHN0aWxsIG5lZWQgc3BlY2lhbAorICAg
ICAgICBoYW5kbGluZyBpcyBiZWNhdXNlIHRoZWlyIHdyYXBwZXJzIChKU0RPTVdpbmRvdyAvCisg
ICAgICAgIEpTV29ya2VyR2xvYmFsU2NvcGUpIGRvIG5vdCBzdWJjbGFzcyBKU0V2ZW50VGFyZ2V0
LgorCisgICAgICAgIChXZWJDb3JlOjpKU0V2ZW50VGFyZ2V0T3JHbG9iYWxTY29wZTo6Y3JlYXRl
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3VzdG9tLmg6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6SlNFdmVudFRhcmdldE9yR2xvYmFsU2NvcGU6OndyYXBwZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNFdmVudFRhcmdldE9yR2xvYmFsU2NvcGU6Om9wZXJhdG9yIEpT
Qzo6SlNPYmplY3QmKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRXZlbnRUYXJnZXRPckdsb2JhbFNj
b3BlOjpKU0V2ZW50VGFyZ2V0T3JHbG9iYWxTY29wZSk6CisgICAgICAgIEFkZCBhIHdyYXBwZXIg
dHlwZSBmb3IgSlNFdmVudFRhcmdldCAvIEpTRE9NV2luZG93IGFuZAorICAgICAgICBKU1dvcmtl
ckdsb2JhbFNjb3BlIGZvciB1c2UgaW4gdGhlIGdlbmVyYXRlZCBiaW5kaW5ncy4gVGhpcyBpcwor
ICAgICAgICBuZWVkZWQgYmVjYXVzZSBKU0RPTVdpbmRvdyBhbmQgSlNXb3JrZXJHbG9iYWxTY29w
ZSBkbyBub3QKKyAgICAgICAgc3ViY2xhc3MgSlNFdmVudFRhcmdldC4gU3ViY2xhc3NpbmcgSlNF
dmVudFRhcmdldCB3b3VsZCBiZQorICAgICAgICBjb21wbGljYXRlZCBmb3IgdGhlbSBiZWNhdXNl
IHRoZXkgYWxyZWFkeSBzdWJjbGFzcworICAgICAgICBKU0RPTVdpbmRvd0Jhc2UgLyBKU1dvcmtl
ckdsb2JhbFNjb3BlQmFzZSwgd2hpY2ggc3ViY2xhc3NlcworICAgICAgICBKU0RPTUdsb2JhbE9i
amVjdC4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6aW5pdFNjcmlwdCk6
CisgICAgICAgIFNldCBXb3JrZXJHbG9iYWxTY29wZVByb3RvdHlwZSdzIHByb3RvdHlwZSB0byBF
dmVudFRhcmdldCdzIHByb3RvdHlwZS4KKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoU2hvdWxkR2VuZXJhdGVUb0pTRGVjbGFyYXRpb24p
OgorICAgICAgICBEbyBub3QgZ2VuZXJhdGUgdG8gdG9KUygpIGltcGxlbWVudGF0aW9uIGZvciBp
bnRlcmZhY2VzIHRoYXQgdXNlCisgICAgICAgIHRoZSBbQ3VzdG9tUHJveHlUb0pTT2JqZWN0XSBJ
REwgZXh0ZW5kZWQgYXR0cmlidXRlLCBldmVuIGlmIHRoZXkKKyAgICAgICAgaW5oZXJpdCBFdmVu
dFRhcmdldC4KKworICAgICAgICAoR2V0Q2FzdGluZ0hlbHBlckZvclRoaXNPYmplY3QpOgorICAg
ICAgICBUbyBpbml0aWFsaXplIGNhc3RlZFRoaXMgZnJvbSB0aGlzVmFsdWUgSlNWYWx1ZSwgd2Ug
bm93IHVzZSB0aGUKKyAgICAgICAgSlNFdmVudFRhcmdldE9yR2xvYmFsU2NvcGUgd3JhcHBlciBm
b3IgdGhlIEV2ZW50VGFyZ2V0CisgICAgICAgIGltcGxlbWVudGF0aW9uLiBUaGlzIGlzIHRvIHdv
cmsgYXJvdW5kIHRoZSBmYWN0IHRoYXQgSlNET01XaW5kb3cKKyAgICAgICAgYW5kIEpTV29ya2Vy
R2xvYmFsU2NvcGUgZG8gbm90IHN1YmNsYXNzIEpTRXZlbnRUYXJnZXQuCisKKyAgICAgICAgKEdl
bmVyYXRlRnVuY3Rpb25DYXN0ZWRUaGlzKToKKyAgICAgICAgLSBEcm9wIGNvZGUgaGFuZGxpbmcg
W1dvcmtlckdsb2JhbFNjb3BlXSBJREwgZXh0ZW5kZWQgYXR0cmlidXRlCisgICAgICAgICAgYXMg
dGhlcmUgaXMgbm8gc3VjaCBhdHRyaWJ1dGUuCisgICAgICAgIC0gVXNlIGF1dG8gaW5zdGVhZCBv
ZiBhdXRvKiB0eXBlIGZvciBjYXN0ZWRUaGlzIGJlY2F1c2UKKyAgICAgICAgICBKU0V2ZW50VGFy
Z2V0T3JHbG9iYWxTY29wZTo6Y3JlYXRlKCkgcmV0dXJucyBhIHVuaXF1ZV9wdHIuCisgICAgICAg
IC0gRG8gbm90IGNoZWNrIHRoYXQgY2FzdGVkVGhpcyBpbmhlcml0cyBKU0V2ZW50VGFyZ2V0IGlu
IHRoZQorICAgICAgICAgIEV2ZW50VGFyZ2V0IGJpbmRpbmdzIGNvZGUgYXMgdGhpcyBubyBsb25n
ZXIgaG9sZHMgdHJ1ZS4KKworICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAg
ICAgIEdlbmVyYXRlIGZyYW1lbGVzcyB3aW5kb3coKSBhbmQgc2VjdXJpdHkgY2hlY2tzIGZvciBF
dmVudFRhcmdldAorICAgICAgICBtZXRob2RzIHdoZW4gdGhpc1ZhbHVlIGlzIGEgSlNET01XaW5k
b3cuCisKKyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXQuaWRsOgorICAgICAgICBBZGQgW0pTQ3Vz
dG9tSGVhZGVyXSBJREwgRXh0ZW5kZWQgYXR0cmlidXRlIGFzIHdlIG5lZWQgYSBoZWFkZXIKKyAg
ICAgICAgdG8gZXhwb3NlIEpTRXZlbnRUYXJnZXRPckdsb2JhbFNjb3BlIGNsYXNzLgorCisgICAg
ICAgICogcGFnZS9ET01XaW5kb3cuaWRsOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyR2xvYmFs
U2NvcGUuaWRsOgorICAgICAgICBJbmhlcml0IEV2ZW50VGFyZ2V0IGFuZCBzdG9wIGR1cGxpY2F0
aW5nIHRoZSBFdmVudFRhcmdldCBBUEkuCisgICAgICAgIFRoaXMgbWF0Y2hlcyB0aGUgSFRNTCBz
cGVjaWZpY2F0aW9uLgorCiAyMDE2LTAyLTEyICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRAYXBw
bGUuY29tPgogCiAgICAgICAgIFJlc2V0IHJlc3VsdHMgZm9yIGJpbmRpbmdzIHRlc3RzIGFmdGVy
IHIxOTY1MjAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCBhYWMxZWZhZmE0NTgxYzBhMjBlNmQwMmRhZTgyYTcyNjRlM2Y2ODk0Li5k
NDJmMTM1ZGZiYmExZWIxYmM3YWZmYzkzZDg2YWRlYmM4NzI1Zjg0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNzA5LDYgKzE3
MDksNyBAQAogCQk0NjY5QjI4NzFCODUyQTBCMDAwRjkwNUYgLyogSlNET01OYW1lZEZsb3dDb2xs
ZWN0aW9uQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ2RjI3NjhFMUI4NTI5N0YwMDVDMjU1NiAvKiBKU0RPTU5hbWVkRmxvd0NvbGxlY3Rp
b25DdXN0b20uY3BwICovOyB9OwogCQk0NjczMDIwMjFDNEVGRTc4MDBCQ0IzNTcgLyogSWdub3Jl
T3BlbnNEdXJpbmdVbmxvYWRDb3VudEluY3JlbWVudGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjczMDIwMTFDNEVGRTY2MDBCQ0IzNTcgLyogSWdu
b3JlT3BlbnNEdXJpbmdVbmxvYWRDb3VudEluY3JlbWVudGVyLmggKi87IH07CiAJCTQ2ODlGMUFG
MTI2N0JBRTEwMEU4RDM4MCAvKiBGaWxlTWV0YWRhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODlGMUFFMTI2N0JBRTEwMEU4RDM4MCAvKiBGaWxl
TWV0YWRhdGEuaCAqLzsgfTsKKwkJNDZCNjNGNkMxQzZFOEQxOTAwMkU5MTRCIC8qIEpTRXZlbnRU
YXJnZXRDdXN0b20uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ2QjYzRjZCMUM2RThDREYwMDJFOTE0QiAvKiBKU0V2ZW50VGFyZ2V0Q3VzdG9tLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZDODNFRkQx
QTlCQkUyOTAwQTc5QTQxIC8qIEdlb05vdGlmaWVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzgzRUZCMUE5QkJFMjkwMEE3OUE0MSAvKiBHZW9O
b3RpZmllci5jcHAgKi87IH07CiAJCTQ2QzgzRUZFMUE5QkJFMjkwMEE3OUE0MSAvKiBHZW9Ob3Rp
Zmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZD
ODNFRkMxQTlCQkUyOTAwQTc5QTQxIC8qIEdlb05vdGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZEQjdENTcxQjIwRkU0NjAwNTY1MUIy
IC8qIFZOb2RlVHJhY2tlckNvY29hLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ2REI3RDU2MUIyMEZFM0MwMDU2NTFCMiAvKiBWTm9kZVRyYWNrZXJD
b2NvYS5jcHAgKi87IH07CkBAIC05MTkwLDYgKzkxOTEsNyBAQAogCQk0NjNFQjYyMTFCODc4OUNC
MDA5NkVENTEgLyogVGFnQ29sbGVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBUYWdDb2xsZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2NzMw
MjAxMUM0RUZFNjYwMEJDQjM1NyAvKiBJZ25vcmVPcGVuc0R1cmluZ1VubG9hZENvdW50SW5jcmVt
ZW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSWdub3JlT3BlbnNEdXJp
bmdVbmxvYWRDb3VudEluY3JlbWVudGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQ2ODlGMUFFMTI2N0JBRTEwMEU4RDM4MCAvKiBGaWxlTWV0YWRhdGEuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRmlsZU1ldGFkYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTQ2QjYzRjZCMUM2RThDREYwMDJFOTE0QiAvKiBKU0V2ZW50VGFyZ2V0Q3VzdG9t
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRXZlbnRUYXJnZXRDdXN0b20u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZDODNFRkIxQTlCQkUyOTAwQTc5QTQx
IC8qIEdlb05vdGlmaWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEdlb05vdGlmaWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZDODNFRkMx
QTlCQkUyOTAwQTc5QTQxIC8qIEdlb05vdGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEdlb05vdGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2
REI3RDU2MUIyMEZFM0MwMDU2NTFCMiAvKiBWTm9kZVRyYWNrZXJDb2NvYS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWTm9kZVRyYWNrZXJDb2NvYS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMjE5Myw2ICsyMjE5NSw3IEBACiAJCQkJRjNENDYx
NDYxMTYxRDUzMjAwQ0EwRDA5IC8qIEpTRXJyb3JIYW5kbGVyLmNwcCAqLywKIAkJCQlGM0Q0NjE0
NzExNjFENTMyMDBDQTBEMDkgLyogSlNFcnJvckhhbmRsZXIuaCAqLywKIAkJCQlCQzYwOTAxRTBF
OTFCOEVDMDAwQzY4QjUgLyogSlNFdmVudFRhcmdldEN1c3RvbS5jcHAgKi8sCisJCQkJNDZCNjNG
NkIxQzZFOENERjAwMkU5MTRCIC8qIEpTRXZlbnRUYXJnZXRDdXN0b20uaCAqLywKIAkJCQkzMzE0
QUNFOTEwODkyMDg2MDAwRjBFNTYgLyogSlNFeGNlcHRpb25CYXNlLmNwcCAqLywKIAkJCQkzMzE0
QUNFQTEwODkyMDg2MDAwRjBFNTYgLyogSlNFeGNlcHRpb25CYXNlLmggKi8sCiAJCQkJOEY5MzRE
ODQxMTg5RjFFRTAwNTA4RDVEIC8qIEpTTWFpblRocmVhZEV4ZWNTdGF0ZS5jcHAgKi8sCkBAIC0y
NDk4MSw2ICsyNDk4NCw3IEBACiAJCQkJMkVERUYxRjcxMjFCMEVGQzAwNzI2REIyIC8qIEJsb2JS
ZWdpc3RyeUltcGwuaCBpbiBIZWFkZXJzICovLAogCQkJCTJFQjRCQ0QzMTIxRjAzRTMwMEVDNDg4
NSAvKiBCbG9iUmVzb3VyY2VIYW5kbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3NkQ2QzdGMTIy
QjhBM0QwMDFGRDFGNyAvKiBCbG9iVVJMLmggaW4gSGVhZGVycyAqLywKKwkJCQk0NkI2M0Y2QzFD
NkU4RDE5MDAyRTkxNEIgLyogSlNFdmVudFRhcmdldEN1c3RvbS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJOTNGMTk5QkUwODI0NUU1OTAwMUU5QUJDIC8qIEJsb2NrRXhjZXB0aW9ucy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkM1RUI1RTEwRTgxQkU4NzAwQjI1OTY1IC8qIEJvcmRlckRhdGEuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTU4OTU1NkVEMThENEE0NDAwMDc2NEIwMyAvKiBCb3JkZXJFZGdlLmgg
aW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NV2luZG93Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93Q3VzdG9tLmNwcAppbmRleCAxMTVkYWU1NjYyN2UyZmQ2NzkzMTQwODI4NGUxZTljMThkMGEz
NmU0Li5hNTE4ZmM3YmY1YjMxMmJjN2NmNmUyMTlmZmY5NTlmMmVhODk4MWIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCkBAIC03NTEs
MzQgKzc1MSw2IEBAIEpTVmFsdWUgSlNET01XaW5kb3c6OnNldEludGVydmFsKEV4ZWNTdGF0ZSYg
c3RhdGUpCiAgICAgcmV0dXJuIGpzTnVtYmVyKHJlc3VsdCk7CiB9CiAKLUpTVmFsdWUgSlNET01X
aW5kb3c6OmFkZEV2ZW50TGlzdGVuZXIoRXhlY1N0YXRlJiBzdGF0ZSkKLXsKLSAgICBGcmFtZSog
ZnJhbWUgPSB3cmFwcGVkKCkuZnJhbWUoKTsKLSAgICBpZiAoIWZyYW1lKQotICAgICAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKLQotICAgIEpTVmFsdWUgbGlzdGVuZXIgPSBzdGF0ZS5hcmd1bWVu
dCgxKTsKLSAgICBpZiAoIWxpc3RlbmVyLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOwotCi0gICAgd3JhcHBlZCgpLmFkZEV2ZW50TGlzdGVuZXIoc3RhdGUuYXJndW1l
bnQoMCkudG9TdHJpbmcoJnN0YXRlKS0+dG9BdG9taWNTdHJpbmcoJnN0YXRlKSwgSlNFdmVudExp
c3RlbmVyOjpjcmVhdGUoYXNPYmplY3QobGlzdGVuZXIpLCB0aGlzLCBmYWxzZSwgZ2xvYmFsT2Jq
ZWN0KCktPndvcmxkKCkpLCBzdGF0ZS5hcmd1bWVudCgyKS50b0Jvb2xlYW4oJnN0YXRlKSk7Ci0g
ICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci19Ci0KLUpTVmFsdWUgSlNET01XaW5kb3c6OnJlbW92
ZUV2ZW50TGlzdGVuZXIoRXhlY1N0YXRlJiBzdGF0ZSkKLXsKLSAgICBGcmFtZSogZnJhbWUgPSB3
cmFwcGVkKCkuZnJhbWUoKTsKLSAgICBpZiAoIWZyYW1lKQotICAgICAgICByZXR1cm4ganNVbmRl
ZmluZWQoKTsKLQotICAgIEpTVmFsdWUgbGlzdGVuZXIgPSBzdGF0ZS5hcmd1bWVudCgxKTsKLSAg
ICBpZiAoIWxpc3RlbmVyLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OwotCi0gICAgd3JhcHBlZCgpLnJlbW92ZUV2ZW50TGlzdGVuZXIoc3RhdGUuYXJndW1lbnQoMCku
dG9TdHJpbmcoJnN0YXRlKS0+dG9BdG9taWNTdHJpbmcoJnN0YXRlKSwgSlNFdmVudExpc3RlbmVy
OjpjcmVhdGUoYXNPYmplY3QobGlzdGVuZXIpLCB0aGlzLCBmYWxzZSwgZ2xvYmFsT2JqZWN0KCkt
PndvcmxkKCkpLnB0cigpLCBzdGF0ZS5hcmd1bWVudCgyKS50b0Jvb2xlYW4oJnN0YXRlKSk7Ci0g
ICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci19Ci0KIERPTVdpbmRvdyogSlNET01XaW5kb3c6OnRv
V3JhcHBlZChKU1ZhbHVlIHZhbHVlKQogewogICAgIGlmICghdmFsdWUuaXNPYmplY3QoKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5jcHAKaW5kZXgg
MTEyMDY2ODUyMjIyOWY3ZDE2ZGVmODY5ZGY5MTc5NjdmNTFjYTcwNC4uNjYwMzU0MDcyOTc1ZTMy
YjdlZTE1ODA1MmQ1MWNhZGYxNzAzNThkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01XaW5kb3dTaGVsbC5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJG
cmFtZS5oIgogI2luY2x1ZGUgIkdDQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkpTRE9NV2luZG93
LmgiCi0jaW5jbHVkZSAiRE9NV2luZG93LmgiCisjaW5jbHVkZSAiSlNFdmVudFRhcmdldC5oIgog
I2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlIDxoZWFwL1N0cm9uZ0lubGlu
ZXMuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTT2JqZWN0Lmg+CkBAIC04NSw2ICs4NSw3IEBAIHZv
aWQgSlNET01XaW5kb3dTaGVsbDo6c2V0V2luZG93KFBhc3NSZWZQdHI8RE9NV2luZG93PiBkb21X
aW5kb3cpCiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBKU0RPTVdpbmRvdzo6Y3JlYXRlU3Ry
dWN0dXJlKHZtLCAwLCBwcm90b3R5cGUuZ2V0KCkpOwogICAgIEpTRE9NV2luZG93KiBqc0RPTVdp
bmRvdyA9IEpTRE9NV2luZG93OjpjcmVhdGUodm0sIHN0cnVjdHVyZSwgKmRvbVdpbmRvdywgdGhp
cyk7CiAgICAgcHJvdG90eXBlLT5zdHJ1Y3R1cmUoKS0+c2V0R2xvYmFsT2JqZWN0KHZtLCBqc0RP
TVdpbmRvdyk7CisgICAgcHJvdG90eXBlLT5zdHJ1Y3R1cmUoKS0+c2V0UHJvdG90eXBlV2l0aG91
dFRyYW5zaXRpb24odm0sIEpTRXZlbnRUYXJnZXQ6OmdldFByb3RvdHlwZSh2bSwganNET01XaW5k
b3cpKTsKICAgICBzZXRXaW5kb3codm0sIGpzRE9NV2luZG93KTsKICAgICBBU1NFUlQoanNET01X
aW5kb3ctPmdsb2JhbE9iamVjdCgpID09IGpzRE9NV2luZG93KTsKICAgICBBU1NFUlQocHJvdG90
eXBlLT5nbG9iYWxPYmplY3QoKSA9PSBqc0RPTVdpbmRvdyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmgKaW5kZXggMDFmMDQ4ZDY3YTRmNWI4ZDBmMWVl
OTY5ZDVkMjc1NDVmMTI3NDZkMC4uYmRmZGQyZmRkMmUzNzViY2Y3YTNhZjM1MTk5MGIyZDJmZjdj
MzI5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dT
aGVsbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwu
aApAQCAtMjksMTIgKzI5LDEyIEBACiAjaWZuZGVmIEpTRE9NV2luZG93U2hlbGxfaAogI2RlZmlu
ZSBKU0RPTVdpbmRvd1NoZWxsX2gKIAorI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUg
IkpTRE9NV2luZG93LmgiCiAjaW5jbHVkZSA8cnVudGltZS9KU1Byb3h5Lmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotICAgIGNsYXNzIERPTVdpbmRvdzsKICAgICBjbGFzcyBGcmFtZTsKIAog
ICAgIGNsYXNzIEpTRE9NV2luZG93U2hlbGwgOiBwdWJsaWMgSlNDOjpKU1Byb3h5IHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RpY3Rpb25hcnkuY3BwCmluZGV4IDMzNDZjY2ZlNjk5
M2ZiOTQ5NTc1ZDczMDg1NWVkNGQ3OGY5NjhkYjIuLjY2MzRlMTZkZjczYzMzMzY4NzM1N2UzNzVh
Y2RhNjdmNGNhNWNmZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RGljdGlvbmFyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEaWN0aW9u
YXJ5LmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkpTRGljdGlvbmFyeS5oIgogCiAj
aW5jbHVkZSAiQXJyYXlWYWx1ZS5oIgorI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUg
IkRpY3Rpb25hcnkuaCIKICNpbmNsdWRlICJKU0NTU0ZvbnRGYWNlUnVsZS5oIgogI2luY2x1ZGUg
IkpTRE9NRXJyb3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RXZlbnRUYXJnZXRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVu
dFRhcmdldEN1c3RvbS5jcHAKaW5kZXggZThlYWQxYzFkNDJmMGRkZmZlZTk2NmUxODIwZWQwMjUw
ODgyZjRiZi4uNjBiMTc2YmZlYmZhZmMzODY1ZDc5MGYxNDk0MzQ1YmI0MDY5YjQ1NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEN1c3RvbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEN1c3RvbS5jcHAK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxs
IFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxNiBBcHBsZSBJbmMu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTI2LDEwICsyNiwxNSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkpTRXZlbnRU
YXJnZXQuaCIKIAorI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgorI2luY2x1ZGUgIkV2ZW50VGFyZ2V0
LmgiCiAjaW5jbHVkZSAiRXZlbnRUYXJnZXRIZWFkZXJzLmgiCiAjaW5jbHVkZSAiRXZlbnRUYXJn
ZXRJbnRlcmZhY2VzLmgiCisjaW5jbHVkZSAiSlNET01XaW5kb3cuaCIKICNpbmNsdWRlICJKU0RP
TVdpbmRvd1NoZWxsLmgiCiAjaW5jbHVkZSAiSlNFdmVudExpc3RlbmVyLmgiCisjaW5jbHVkZSAi
SlNXb3JrZXJHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCiAK
IHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKQEAgLTYxLDEyICs2NiwyMyBAQCBKU1ZhbHVlIHRvSlMo
RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFdmVudFRh
cmdldCogdGFyZwogRXZlbnRUYXJnZXQqIEpTRXZlbnRUYXJnZXQ6OnRvV3JhcHBlZChKU0M6OkpT
VmFsdWUgdmFsdWUpCiB7CiAgICAgVFJZX1RPX1VOV1JBUF9XSVRIX0lOVEVSRkFDRShET01XaW5k
b3dTaGVsbCkKKyAgICBUUllfVE9fVU5XUkFQX1dJVEhfSU5URVJGQUNFKERPTVdpbmRvdykKKyAg
ICBUUllfVE9fVU5XUkFQX1dJVEhfSU5URVJGQUNFKFdvcmtlckdsb2JhbFNjb3BlKQogICAgIFRS
WV9UT19VTldSQVBfV0lUSF9JTlRFUkZBQ0UoRXZlbnRUYXJnZXQpCi0gICAgLy8gRklYTUU6IFJl
bW92ZSB0aGlzIG9uY2UgYWxsIGV2ZW50IHRhcmdldHMgZXh0ZW5kIEV2ZW50VGFyZ2V0Ci0gICAg
RE9NX0VWRU5UX1RBUkdFVF9JTlRFUkZBQ0VTX0ZPUl9FQUNIKFRSWV9UT19VTldSQVBfV0lUSF9J
TlRFUkZBQ0UpCi0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKICN1bmRl
ZiBUUllfVE9fVU5XUkFQX1dJVEhfSU5URVJGQUNFCiAKK3N0ZDo6dW5pcXVlX3B0cjxKU0V2ZW50
VGFyZ2V0T3JHbG9iYWxTY29wZT4gSlNFdmVudFRhcmdldE9yR2xvYmFsU2NvcGU6OmNyZWF0ZShK
U0M6OkpTVmFsdWUgdGhpc1ZhbHVlKQoreworICAgIGlmIChhdXRvKiBqc0V2ZW50VGFyZ2V0ID0g
SlNDOjpqc0R5bmFtaWNDYXN0PEpTRXZlbnRUYXJnZXQqPih0aGlzVmFsdWUpKQorICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxKU0V2ZW50VGFyZ2V0T3JHbG9iYWxTY29wZT4oanNFdmVu
dFRhcmdldC0+d3JhcHBlZCgpLCAqanNFdmVudFRhcmdldCk7CisgICAgaWYgKGF1dG8qIGpzRE9N
V2luZG93ID0gdG9KU0RPTVdpbmRvdyh0aGlzVmFsdWUpKQorICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxKU0V2ZW50VGFyZ2V0T3JHbG9iYWxTY29wZT4oanNET01XaW5kb3ctPndyYXBw
ZWQoKSwgKmpzRE9NV2luZG93KTsKKyAgICBpZiAoYXV0byoganNXb3JrZXJHbG9iYWxTY29wZSA9
IHRvSlNXb3JrZXJHbG9iYWxTY29wZSh0aGlzVmFsdWUpKQorICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxKU0V2ZW50VGFyZ2V0T3JHbG9iYWxTY29wZT4oanNXb3JrZXJHbG9iYWxTY29w
ZS0+d3JhcHBlZCgpLCAqanNXb3JrZXJHbG9iYWxTY29wZSk7CisgICAgcmV0dXJuIG51bGxwdHI7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRDdXN0b20uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRXZlbnRUYXJnZXRDdXN0b20uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jOTIyNjNkMTY5M2VhM2Ex
MmE3MGFmNjQxZDc4Zjc5YTc3MDhlMTI2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEN1c3RvbS5oCkBAIC0wLDAgKzEsNTUgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIEpTRXZlbnRUYXJnZXRDdXN0b21faAorI2RlZmluZSBKU0V2ZW50
VGFyZ2V0Q3VzdG9tX2gKKworI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKKy8vIFdyYXBwZXIgdHlwZSBmb3IgSlNFdmVudFRhcmdldCdzIGNhc3RlZFRo
aXMgYmVjYXVzZSBKU0RPTVdpbmRvdyBhbmQgSlNXb3JrZXJHbG9iYWxTY29wZSBkbyBub3QgaW5o
ZXJpdCBKU0V2ZW50VGFyZ2V0LgorY2xhc3MgSlNFdmVudFRhcmdldE9yR2xvYmFsU2NvcGUgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8SlNFdmVudFRhcmdldE9yR2xvYmFsU2NvcGU+IGNyZWF0ZShKU0M6OkpTVmFsdWUg
dGhpc1ZhbHVlKTsKKworICAgIEV2ZW50VGFyZ2V0JiB3cmFwcGVkKCkgeyByZXR1cm4gbV93cmFw
cGVkOyB9CisKKyAgICBvcGVyYXRvciBKU0M6OkpTT2JqZWN0JigpIHsgcmV0dXJuIG1fd3JhcHBl
cjsgfQorCisgICAgSlNFdmVudFRhcmdldE9yR2xvYmFsU2NvcGUoRXZlbnRUYXJnZXQmIHdyYXBw
ZWQsIEpTQzo6SlNPYmplY3QmIHdyYXBwZXIpCisgICAgICAgIDogbV93cmFwcGVkKHdyYXBwZWQp
CisgICAgICAgICwgbV93cmFwcGVyKHdyYXBwZXIpCisgICAgeyB9CisKK3ByaXZhdGU6CisgICAg
RXZlbnRUYXJnZXQmIG1fd3JhcHBlZDsKKyAgICBKU0M6OkpTT2JqZWN0JiBtX3dyYXBwZXI7Cit9
OworCit9CisKKyNlbmRpZiAvLyBKU0V2ZW50VGFyZ2V0Q3VzdG9tX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXgg
MDlkMTc4YmQxZjNlMjMzNjg5ODU1OTg4MmQ3MDAzNmZmMTM4NGY3Yy4uZGUyZDAwZWNkM2VmZmQy
YmEyZTY5NDZiMTgwYjJkNjIxZDA2MDNhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTMwLDYgKzMwLDcgQEAK
IAogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkpTRGVkaWNhdGVkV29ya2Vy
R2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJKU0V2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiU2Ny
aXB0U291cmNlQ29kZS5oIgogI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNs
dWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgpAQCAtODksNiArOTAsNyBAQCB2b2lkIFdvcmtlclNj
cmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHQoKQogICAgICAgICBBU1NFUlQoc3RydWN0dXJlLT5n
bG9iYWxPYmplY3QoKSA9PSBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlcik7CiAgICAgICAgIEFT
U0VSVChtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci0+c3RydWN0dXJlKCktPmdsb2JhbE9iamVj
dCgpID09IG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyKTsKICAgICAgICAgd29ya2VyR2xvYmFs
U2NvcGVQcm90b3R5cGUtPnN0cnVjdHVyZSgpLT5zZXRHbG9iYWxPYmplY3QoKm1fdm0sIG1fd29y
a2VyR2xvYmFsU2NvcGVXcmFwcGVyLmdldCgpKTsKKyAgICAgICAgd29ya2VyR2xvYmFsU2NvcGVQ
cm90b3R5cGUtPnN0cnVjdHVyZSgpLT5zZXRQcm90b3R5cGVXaXRob3V0VHJhbnNpdGlvbigqbV92
bSwgSlNFdmVudFRhcmdldDo6Z2V0UHJvdG90eXBlKCptX3ZtLCBtX3dvcmtlckdsb2JhbFNjb3Bl
V3JhcHBlci5nZXQoKSkpOwogICAgICAgICBkZWRpY2F0ZWRDb250ZXh0UHJvdG90eXBlLT5zdHJ1
Y3R1cmUoKS0+c2V0R2xvYmFsT2JqZWN0KCptX3ZtLCBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBl
ci5nZXQoKSk7CiAgICAgfQogICAgIEFTU0VSVChtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci0+
Z2xvYmFsT2JqZWN0KCkgPT0gbV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCBl
MmM1MGE4Njk0NzU5OTljM2YzNDZmMDA4Y2E0MTJhMzI3Y2I0YTM2Li5jY2JiMzIyZjE4ODRkNDI3
NTk1ODJkYTkyMDkyZjVkNDc0ZjEwN2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtNTU4LDYgKzU1OCw3IEBAIHN1YiBT
aG91bGRHZW5lcmF0ZVRvSlNEZWNsYXJhdGlvbgogICAgIHJldHVybiAwIGlmICgkaW50ZXJmYWNl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiU3VwcHJlc3NUb0pTT2JqZWN0In0pOwogICAgIHJldHVy
biAwIGlmIG5vdCBOZWVkc0ltcGxlbWVudGF0aW9uQ2xhc3MoJGludGVyZmFjZSk7CiAgICAgcmV0
dXJuIDAgaWYgJGludGVyZmFjZS0+bmFtZSBlcSAiQWJzdHJhY3RWaWV3IjsKKyAgICByZXR1cm4g
MCBpZiAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tUHJveHlUb0pTT2Jq
ZWN0In07CiAgICAgcmV0dXJuIDEgaWYgKCEkaGFzUGFyZW50IG9yICRpbnRlcmZhY2UtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJKU0dlbmVyYXRlVG9KU09iamVjdCJ9IG9yICRpbnRlcmZhY2UtPmV4
dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21Ub0pTT2JqZWN0In0pOwogICAgIHJldHVybiAxIGlm
ICRpbnRlcmZhY2UtPnBhcmVudCAmJiAkaW50ZXJmYWNlLT5wYXJlbnQgZXEgIkV2ZW50VGFyZ2V0
IjsKICAgICByZXR1cm4gMDsKQEAgLTE3MzAsMTcgKzE3MzEsMTMgQEAgc3ViIEdldFJ1bnRpbWVF
bmFibGVGdW5jdGlvbk5hbWUKIHN1YiBHZXRDYXN0aW5nSGVscGVyRm9yVGhpc09iamVjdAogewog
ICAgIG15ICRpbnRlcmZhY2UgPSBzaGlmdDsKKyAgICBteSAkaW50ZXJmYWNlTmFtZSA9ICRpbnRl
cmZhY2UtPm5hbWU7CiAKLSAgICBpZiAoJGludGVyZmFjZS0+bmFtZSBlcSAiTm9kZSIpIHsKLSAg
ICAgICAgcmV0dXJuICJqc05vZGVDYXN0IjsKLSAgICB9Ci0gICAgaWYgKCRpbnRlcmZhY2UtPm5h
bWUgZXEgIkVsZW1lbnQiKSB7Ci0gICAgICAgIHJldHVybiAianNFbGVtZW50Q2FzdCI7Ci0gICAg
fQotICAgIGlmICgkaW50ZXJmYWNlLT5uYW1lIGVxICJEb2N1bWVudCIpIHsKLSAgICAgICAgcmV0
dXJuICJqc0RvY3VtZW50Q2FzdCI7Ci0gICAgfQotICAgIHJldHVybiAianNEeW5hbWljQ2FzdDxK
UyIgLiAkaW50ZXJmYWNlLT5uYW1lIC4gIio+IjsKKyAgICByZXR1cm4gImpzTm9kZUNhc3QiIGlm
ICRpbnRlcmZhY2VOYW1lIGVxICJOb2RlIjsKKyAgICByZXR1cm4gImpzRWxlbWVudENhc3QiIGlm
ICRpbnRlcmZhY2VOYW1lIGVxICJFbGVtZW50IjsKKyAgICByZXR1cm4gImpzRG9jdW1lbnRDYXN0
IiBpZiAkaW50ZXJmYWNlTmFtZSBlcSAiRG9jdW1lbnQiOworICAgIHJldHVybiAiSlNFdmVudFRh
cmdldE9yR2xvYmFsU2NvcGU6OmNyZWF0ZSIgaWYgJGludGVyZmFjZU5hbWUgZXEgIkV2ZW50VGFy
Z2V0IjsKKyAgICByZXR1cm4gImpzRHluYW1pY0Nhc3Q8SlMiIC4gJGludGVyZmFjZU5hbWUgLiAi
Kj4iOwogfQogCiBzdWIgR2V0SW5kZXhlZEdldHRlckV4cHJlc3Npb24KQEAgLTI5NDQsNiArMjk0
MSwxNCBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgICAgICAg
ICAgJGltcGxJbmNsdWRlc3siRXhjZXB0aW9uQ29kZS5oIn0gPSAxOwogICAgICAgICAgICAgICAg
ICAgICB9CiAKKyAgICAgICAgICAgICAgICAgICAgIyBFdmVudFRhcmdldCBuZWVkcyB0byBkbyBz
b21lIGV4dHJhIGNoZWNrcyBpZiBjYXN0ZWRUaGlzIGlzIGEgSlNET01XaW5kb3cuCisgICAgICAg
ICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlLT5uYW1lIGVxICJFdmVudFRhcmdldCIpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkRPTVdpbmRvdy5oIn0gPSAxOwor
ICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKGF1dG8q
IHdpbmRvdyA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKS50b0RPTVdpbmRvdygpKSB7XG4iKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBpZiAoIXdp
bmRvdy0+ZnJhbWUoKSB8fCAhQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9N
V2luZG93KHN0YXRlLCAqd2luZG93KSlcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpO1xuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICB9XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAg
ICAjIEZvciBjb21wYXRpYmlsaXR5IHdpdGggbGVnYWN5IGNvbnRlbnQsIHRoZSBFdmVudExpc3Rl
bmVyIGNhbGxzIGFyZSBnZW5lcmF0ZWQgd2l0aG91dCBHZW5lcmF0ZUFyZ3VtZW50c0NvdW50Q2hl
Y2suCiAgICAgICAgICAgICAgICAgICAgIGlmICgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZSBl
cSAiYWRkRXZlbnRMaXN0ZW5lciIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCBHZW5lcmF0ZUV2ZW50TGlzdGVuZXJDYWxsKCJhZGQiKSk7CkBAIC0zMjI4LDE5
ICszMjMzLDE1IEBAIHN1YiBHZW5lcmF0ZUZ1bmN0aW9uQ2FzdGVkVGhpcwogICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICAkY2xhc3NOYW1lKiBjYXN0ZWRUaGlzID0gdG8ke2NsYXNzTmFt
ZX0oc3RhdGUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhzdGF0ZSwgTm90U3RyaWN0TW9kZSkpO1xuIik7
CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpXG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKHN0YXRlKTtcbiIpOwotICAgIH0gZWxzaWYgKCRpbnRlcmZhY2UtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJXb3JrZXJHbG9iYWxTY29wZSJ9KSB7Ci0gICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgICRjbGFzc05hbWUqIGNhc3RlZFRoaXMgPSB0byR7Y2xhc3NOYW1lfShz
dGF0ZS0+dGhpc1ZhbHVlKCkudG9UaGlzKHN0YXRlLCBOb3RTdHJpY3RNb2RlKSk7XG4iKTsKLSAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSlc
biIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3Ioc3RhdGUpO1xuIik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7XG4iKTsK
LSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJGNsYXNzTmFtZSogY2FzdGVkVGhpcyA9
ICIgLiBHZXRDYXN0aW5nSGVscGVyRm9yVGhpc09iamVjdCgkaW50ZXJmYWNlKSAuICIodGhpc1Zh
bHVlKTtcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvIGNhc3RlZFRo
aXMgPSAiIC4gR2V0Q2FzdGluZ0hlbHBlckZvclRoaXNPYmplY3QoJGludGVyZmFjZSkgLiAiKHRo
aXNWYWx1ZSk7XG4iKTsKICAgICAgICAgbXkgJGRvbUZ1bmN0aW9uTmFtZSA9ICRmdW5jdGlvbi0+
c2lnbmF0dXJlLT5uYW1lOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKVxuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
ICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgXCIkaW50ZXJmYWNlTmFtZVwi
LCBcIiRkb21GdW5jdGlvbk5hbWVcIik7XG4iKTsKICAgICB9CiAKLSAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsICR7Y2xhc3NO
YW1lfTo6aW5mbygpKTtcbiIpOworICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgJHtjbGFzc05hbWV9OjppbmZvKCkpO1xuIikg
dW5sZXNzICRpbnRlcmZhY2VOYW1lIGVxICJFdmVudFRhcmdldCI7CiB9CiAKIHN1YiBHZW5lcmF0
ZUNhbGxXaXRoCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3BwCmluZGV4IDdhZjYzMmI0
OTM0MDk5ZmJkMmM4ZDdiMmQ1MjQ5Y2UyYzE4OWIxYTcuLmY5M2Q1NTFkZjY1OTU1MTM0NTk2NzI3
M2FjMzJkOGQzMGUwNGM4ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3BwCkBA
IC0yMDAsNyArMjAwLDcgQEAgSlNWYWx1ZSBKU1Rlc3RBY3RpdmVET01PYmplY3Q6OmdldENvbnN0
cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2IKIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0QWN0aXZlRE9NT2JqZWN0UHJvdG90eXBlRnVuY3Rpb25FeGNp
dGluZ0Z1bmN0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBzdGF0ZS0+dGhpc1ZhbHVlKCk7Ci0gICAgSlNUZXN0QWN0aXZlRE9NT2JqZWN0KiBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RBY3RpdmVET01PYmplY3QqPih0aGlzVmFsdWUpOwor
ICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0QWN0aXZlRE9NT2JqZWN0
Kj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICBy
ZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RBY3RpdmVET01PYmplY3QiLCAi
ZXhjaXRpbmdGdW5jdGlvbiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVk
VGhpcywgSlNUZXN0QWN0aXZlRE9NT2JqZWN0OjppbmZvKCkpOwpAQCAtMjE5LDcgKzIxOSw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0QWN0aXZlRE9NT2JqZWN0UHJvdG90
eXBlRnVuY3Rpb25FeGNpdGluZ0Z1bmN0CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdEFjdGl2ZURPTU9iamVjdFByb3RvdHlwZUZ1bmN0aW9uUG9zdE1lc3NhZ2UoRXhlY1N0YXRl
KiBzdGF0ZSkKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsK
LSAgICBKU1Rlc3RBY3RpdmVET01PYmplY3QqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdEFjdGl2ZURPTU9iamVjdCo+KHRoaXNWYWx1ZSk7CisgICAgYXV0byBjYXN0ZWRUaGlzID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RBY3RpdmVET01PYmplY3QqPih0aGlzVmFsdWUpOwogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdEFjdGl2ZURPTU9iamVjdCIsICJwb3N0TWVzc2FnZSIpOwogICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0QWN0aXZlRE9NT2JqZWN0
OjppbmZvKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21OYW1lZEdldHRlci5jcHAKaW5kZXggN2Vj
Y2E3MGI0NWU0M2ZlNzEyNmQyODljZWI4MWQ1ZWJmNGQzYjMzMi4uZTM4Nzg4YjllOWFhODI2M2Vl
YTFmNjMyNDFkNzg5MDc2NzFlODU1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tTmFtZWRHZXR0
ZXIuY3BwCkBAIC0xODYsNyArMTg2LDcgQEAgSlNWYWx1ZSBKU1Rlc3RDdXN0b21OYW1lZEdldHRl
cjo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2wKIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJQcm90b3R5cGVG
dW5jdGlvbkFub3RoZXJGdW5jdGlvbihFeGVjU3RhdGUqIHN0YXRlKQogewogICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwotICAgIEpTVGVzdEN1c3RvbU5hbWVkR2V0
dGVyKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RDdXN0b21OYW1lZEdldHRlcio+
KHRoaXNWYWx1ZSk7CisgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RD
dXN0b21OYW1lZEdldHRlcio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0Q3Vz
dG9tTmFtZWRHZXR0ZXIiLCAiYW5vdGhlckZ1bmN0aW9uIik7CiAgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RDdXN0b21OYW1lZEdldHRlcjo6aW5mbygpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RFdmVudFRhcmdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCmluZGV4IDc2OGNkMzE5MDM3YzVjNDdjN2E5MDE3OTlh
ZGExYzg0N2U4MWUxMTguLjU3YWY1NjA4NmFmYzNkOWVmMjQ3NTQyZGVjOGZjNDJkMTc1N2M4YjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RFdmVudFRhcmdldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcApAQCAtMTk4LDcgKzE5OCw3IEBAIEpTVmFsdWUg
SlNUZXN0RXZlbnRUYXJnZXQ6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEV2ZW50
VGFyZ2V0UHJvdG90eXBlRnVuY3Rpb25JdGVtKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgSlNW
YWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7Ci0gICAgSlNUZXN0RXZlbnRUYXJn
ZXQqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEV2ZW50VGFyZ2V0Kj4odGhpc1Zh
bHVlKTsKKyAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEV2ZW50VGFy
Z2V0Kj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAg
ICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RFdmVudFRhcmdldCIsICJp
dGVtIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RF
dmVudFRhcmdldDo6aW5mbygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAKaW5kZXggZjc0M2RiODcy
YTQ2M2QzYzMwM2U2NjBkMmI3MjA5OWFlOWY0YmQ1ZS4uOWI4YTM2MjYxN2Y2ZTgxNmI3MzE5OGQ4
ZTliMWVlMmMxYzNhNGIxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAKQEAgLTc2NSw3ICs3NjUs
NyBAQCBKU1ZhbHVlIEpTVGVzdEludGVyZmFjZTo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25z
dCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkltcGxlbWVudHNNZXRob2QxKEV4ZWNT
dGF0ZSogc3RhdGUpCiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVl
KCk7Ci0gICAgSlNUZXN0SW50ZXJmYWNlKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RJbnRlcmZhY2UqPih0aGlzVmFsdWUpOworICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RJbnRlcmZhY2UiLCAiaW1wbGVtZW50c01ldGhvZDEiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdEludGVyZmFjZTo6aW5mbygpKTsKQEAgLTc4MCw3
ICs3ODAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVBy
b3RvdHlwZUZ1bmN0aW9uSW1wbGVtZW50c01ldGhvZDEoRQogRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkltcGxlbWVudHNNZXRob2Qy
KEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhp
c1ZhbHVlKCk7Ci0gICAgSlNUZXN0SW50ZXJmYWNlKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RJbnRlcmZhY2UqPih0aGlzVmFsdWUpOworICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RJbnRlcmZhY2UiLCAiaW1wbGVtZW50c01ldGhvZDIiKTsKICAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdEludGVyZmFjZTo6aW5mbygpKTsKQEAg
LTgwOSw3ICs4MDksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVy
ZmFjZVByb3RvdHlwZUZ1bmN0aW9uSW1wbGVtZW50c01ldGhvZDIoRQogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkltcGxlbWVudHNN
ZXRob2QzKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0
ZS0+dGhpc1ZhbHVlKCk7Ci0gICAgSlNUZXN0SW50ZXJmYWNlKiBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPih0aGlzVmFsdWUpOworICAgIGF1dG8gY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4odGhpc1ZhbHVlKTsKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RJbnRlcmZhY2UiLCAiaW1wbGVtZW50c01ldGhvZDMiKTsKICAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdEludGVyZmFjZTo6aW5mbygp
KTsKQEAgLTgzMSw3ICs4MzEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dEludGVyZmFjZUNvbnN0cnVjdG9yRnVuY3Rpb25JbXBsZW1lbnRzTWV0aG9kNAogRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblN1cHBs
ZW1lbnRhbE1ldGhvZDEoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKLSAgICBKU1Rlc3RJbnRlcmZhY2UqIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZSo+KHRoaXNWYWx1ZSk7CisgICAgYXV0byBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPih0aGlzVmFsdWUpOwog
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdEludGVyZmFjZSIsICJzdXBwbGVtZW50YWxNZXRob2QxIik7
CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RJbnRlcmZh
Y2U6OmluZm8oKSk7CkBAIC04NDYsNyArODQ2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblN1cHBsZW1lbnRhbE1ldGhvZDEK
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVu
Y3Rpb25TdXBwbGVtZW50YWxNZXRob2QyKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7Ci0gICAgSlNUZXN0SW50ZXJmYWNlKiBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPih0aGlzVmFsdWUpOwor
ICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4odGhp
c1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4g
dGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RJbnRlcmZhY2UiLCAic3VwcGxlbWVudGFs
TWV0aG9kMiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNU
ZXN0SW50ZXJmYWNlOjppbmZvKCkpOwpAQCAtODc1LDcgKzg3NSw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25TdXBwbGVtZW50
YWxNZXRob2QyCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVBy
b3RvdHlwZUZ1bmN0aW9uU3VwcGxlbWVudGFsTWV0aG9kMyhFeGVjU3RhdGUqIHN0YXRlKQogewog
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwotICAgIEpTVGVzdElu
dGVyZmFjZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4odGhp
c1ZhbHVlKTsKKyAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVy
ZmFjZSo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAg
ICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0SW50ZXJmYWNlIiwgInN1
cHBsZW1lbnRhbE1ldGhvZDMiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3Rl
ZFRoaXMsIEpTVGVzdEludGVyZmFjZTo6aW5mbygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWls
dGluQ29uc3RydWN0b3IuY3BwCmluZGV4IDYwZDA1ZGM2MmYxZTc0MDA5NTA2MzU1MjJlZGViNDYw
MWNmZjBmOGIuLjg1NjI5ZTI5N2UxMzE0YTliODkzMWM3Mzg3NjgzMzI3NWFiY2NjMjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1
aWx0aW5Db25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcApAQCAtMTk5LDcgKzE5OSw3
IEBAIEpTVmFsdWUgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3I6OmdldENvbnN0cnVjdG9yKFZN
JiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90eXBlRnVuY3Rpb25UZXN0Q3VzdG9tRnVu
Y3Rpb24oRXhlY1N0YXRlKiBzdGF0ZSkKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRl
LT50aGlzVmFsdWUoKTsKLSAgICBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvciogY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IqPih0aGlzVmFsdWUp
OworICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SlNCdWlsdGluQ29u
c3RydWN0b3IqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAg
ICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEpTQnVpbHRpbkNv
bnN0cnVjdG9yIiwgInRlc3RDdXN0b21GdW5jdGlvbiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3I6OmluZm8oKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKaW5kZXggMmI2
MzcyNjA0ZmJiYzg0NjNjN2QxZWZlMTY3Y2QwZWFmZDVhOWMyMC4uOWE0OTcxYTg0YWEzNGU4YTY1
NDAxZWRmZTY2MzAzMzE1MjdlMGYyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVyLmNwcApAQCAtMTUxLDcgKzE1MSw3IEBAIEpTVmFsdWUgSlNUZXN0TWVkaWFR
dWVyeUxpc3RMaXN0ZW5lcjo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9i
amVjCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE1lZGlhUXVlcnlMaXN0TGlz
dGVuZXJQcm90b3R5cGVGdW5jdGlvbk1ldGhvZChFeGVjU3RhdGUqIHN0YXRlKQogewogICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwotICAgIEpTVGVzdE1lZGlhUXVl
cnlMaXN0TGlzdGVuZXIqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE1lZGlhUXVl
cnlMaXN0TGlzdGVuZXIqPih0aGlzVmFsdWUpOworICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcio+KHRoaXNWYWx1ZSk7CiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVF
cnJvcigqc3RhdGUsICJUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciIsICJtZXRob2QiKTsKICAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE1lZGlhUXVlcnlM
aXN0TGlzdGVuZXI6OmluZm8oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYy5jcHAK
aW5kZXggODIxZmQ0MTQzOWQ4M2EwMzUwMjQzM2FiYmU3MzhkNzYzMGM5ZmFlZC4uMjU0YmM2NTgy
YTlhY2JhNzM5ODA0OTZhYjUwYmExZjg4N2M0ODQzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vbmRldGVybWluaXN0aWMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb25kZXRl
cm1pbmlzdGljLmNwcApAQCAtNDIxLDcgKzQyMSw3IEBAIEpTVmFsdWUgSlNUZXN0Tm9uZGV0ZXJt
aW5pc3RpYzo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xv
CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5vbmRldGVybWluaXN0aWNQcm90
b3R5cGVGdW5jdGlvbk5vbmRldGVybWluaXN0aWNaZXJvQXJnRnVuY3Rpb24oRXhlY1N0YXRlKiBz
dGF0ZSkKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKLSAg
ICBKU1Rlc3ROb25kZXRlcm1pbmlzdGljKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3ROb25kZXRlcm1pbmlzdGljKj4odGhpc1ZhbHVlKTsKKyAgICBhdXRvIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdE5vbmRldGVybWluaXN0aWMqPih0aGlzVmFsdWUpOwogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdE5vbmRldGVybWluaXN0aWMiLCAibm9uZGV0ZXJtaW5pc3RpY1plcm9B
cmdGdW5jdGlvbiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywg
SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYzo6aW5mbygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKaW5kZXggNjY1MWRhNTA5
YTFjY2YwNTQ3NThiMjE4ZjgzZTI2NjE3NmY2M2JkNi4uMjU5ZmQ3ZWE1NGUwYjIwZDQ4M2UzZTA5
NDViY2U5NzEzMzgzNWNmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKQEAgLTMwMTgsNyArMzAxOCw3IEBAIEpTVmFs
dWUgSlNUZXN0T2JqOjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QpCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uVm9pZE1ldGhvZChFeGVjU3RhdGUqIHN0YXRlKQogewogICAgIEpTVmFs
dWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwotICAgIEpTVGVzdE9iaiogY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKKyAgICBhdXRvIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJv
cigqc3RhdGUsICJUZXN0T2JqIiwgInZvaWRNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKQEAgLTMwMzAsNyArMzAz
MCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25Wb2lkTWV0aG9kKEV4ZWNTdGF0ZSogc3RhCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVm9pZE1ldGhvZFdpdGhBcmdzKEV4ZWNTdGF0
ZSogc3RhdGUpCiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7
Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0
aGlzVmFsdWUpOworICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2Jq
Kj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICBy
ZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAidm9pZE1ldGhvZFdp
dGhBcmdzIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rl
c3RPYmo6OmluZm8oKSk7CkBAIC0zMDUzLDcgKzMwNTMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVm9pZE1ldGhvZFdpdGhBcmdzKEV4
ZWNTdAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbkJ5dGVNZXRob2QoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CisgICAgYXV0byBjYXN0ZWRUaGlzID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAi
VGVzdE9iaiIsICJieXRlTWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhj
YXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CkBAIC0zMDY1LDcgKzMwNjUsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQnl0ZU1l
dGhvZChFeGVjU3RhdGUqIHN0YQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbkJ5dGVNZXRob2RXaXRoQXJncyhFeGVjU3RhdGUqIHN0YXRlKQog
ewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwotICAgIEpTVGVz
dE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsK
KyAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1
ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93
VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImJ5dGVNZXRob2RXaXRoQXJncyIpOwog
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZv
KCkpOwpAQCAtMzA4OCw3ICszMDg4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkJ5dGVNZXRob2RXaXRoQXJncyhFeGVjU3QKIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PY3RldE1l
dGhvZChFeGVjU3RhdGUqIHN0YXRlKQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUt
PnRoaXNWYWx1ZSgpOwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKKyAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwg
Im9jdGV0TWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlz
LCBKU1Rlc3RPYmo6OmluZm8oKSk7CkBAIC0zMTAwLDcgKzMxMDAsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2N0ZXRNZXRob2QoRXhl
Y1N0YXRlKiBzdAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk9jdGV0TWV0aG9kV2l0aEFyZ3MoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKICAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKLSAgICBKU1Rlc3RPYmoqIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CisgICAgYXV0
byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJvY3RldE1ldGhvZFdpdGhBcmdzIik7CiAgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CkBA
IC0zMTIzLDcgKzMxMjMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uT2N0ZXRNZXRob2RXaXRoQXJncyhFeGVjUwogRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkxvbmdNZXRob2QoRXhl
Y1N0YXRlKiBzdGF0ZSkKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFs
dWUoKTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
aio+KHRoaXNWYWx1ZSk7CisgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAg
ICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJsb25nTWV0
aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RP
Ymo6OmluZm8oKSk7CkBAIC0zMTM1LDcgKzMxMzUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTG9uZ01ldGhvZChFeGVjU3RhdGUqIHN0
YQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bkxvbmdNZXRob2RXaXRoQXJncyhFeGVjU3RhdGUqIHN0YXRlKQogewogICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKKyAgICBhdXRvIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3Rh
dGUsICJUZXN0T2JqIiwgImxvbmdNZXRob2RXaXRoQXJncyIpOwogICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwpAQCAtMzE1OCw3ICsz
MTU4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbkxvbmdNZXRob2RXaXRoQXJncyhFeGVjU3QKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PYmpNZXRob2QoRXhlY1N0YXRlKiBzdGF0
ZSkKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKLSAgICBK
U1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1
ZSk7CisgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlz
VmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0
aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJvYmpNZXRob2QiKTsKICAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsK
QEAgLTMxNzAsNyArMzE3MCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25PYmpNZXRob2QoRXhlY1N0YXRlKiBzdGF0CiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2JqTWV0aG9kV2l0
aEFyZ3MoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRl
LT50aGlzVmFsdWUoKTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CisgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIs
ICJvYmpNZXRob2RXaXRoQXJncyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2Fz
dGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwpAQCAtMzE5Myw3ICszMTkzLDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9iak1ldGhv
ZFdpdGhBcmdzKEV4ZWNTdGEKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoU2VxdWVuY2VBcmcoRXhlY1N0YXRlKiBzdGF0ZSkK
IHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKLSAgICBKU1Rl
c3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7
CisgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFs
dWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJv
d1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJtZXRob2RXaXRoU2VxdWVuY2VBcmci
KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6
aW5mbygpKTsKQEAgLTMyMTAsNyArMzIxMCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoU2VxdWVuY2VBcmcoRXhlCiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kUmV0dXJuaW5nU2VxdWVuY2UoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKICAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CisgICAgYXV0byBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdE9iaiIsICJtZXRob2RSZXR1cm5pbmdTZXF1ZW5jZSIpOwogICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwpAQCAtMzIy
Nyw3ICszMjI3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFJldHVybmluZ1NlcXVlbmNlKEUKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoRW51bUFyZyhF
eGVjU3RhdGUqIHN0YXRlKQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNW
YWx1ZSgpOwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqKj4odGhpc1ZhbHVlKTsKKyAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAg
ICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm1ldGhv
ZFdpdGhFbnVtQXJnIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlz
LCBKU1Rlc3RPYmo6OmluZm8oKSk7CkBAIC0zMjQ4LDcgKzMyNDgsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEVudW1B
cmcoRXhlY1N0YQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEVudW1BcmdBbmREZWZhdWx0VmFsdWUoRXhlY1N0
YXRlKiBzdGF0ZSkKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUo
KTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+
KHRoaXNWYWx1ZSk7CisgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RP
YmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAg
IHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJtZXRob2RXaXRo
T3B0aW9uYWxFbnVtQXJnQW5kRGVmYXVsdFZhbHVlIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CkBAIC0zMjc3LDcgKzMyNzcs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aE9wdGlvbmFsRW51bUFyZwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRU
aHJvd3MoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRl
LT50aGlzVmFsdWUoKTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CisgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIs
ICJtZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dzIik7CiAgICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CkBAIC0zMzAwLDcg
KzMzMDAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJncwogRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblNlcmlhbGl6ZWRWYWx1ZShFeGVjU3Rh
dGUqIHN0YXRlKQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgp
OwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4o
dGhpc1ZhbHVlKTsKKyAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
aio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAg
cmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInNlcmlhbGl6ZWRW
YWx1ZSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0
T2JqOjppbmZvKCkpOwpAQCAtMzMxNyw3ICszMzE3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblNlcmlhbGl6ZWRWYWx1ZShFeGVjU3Rh
dGUKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25PcHRpb25zT2JqZWN0KEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOworICAgIGF1dG8gY2FzdGVkVGhpcyA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RPYmoiLCAib3B0aW9uc09iamVjdCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJ
VFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwpAQCAtMzMzNyw3ICszMzM3LDcgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9w
dGlvbnNPYmplY3QoRXhlY1N0YXRlKgogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0
ZSkKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKLSAgICBK
U1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1
ZSk7CisgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlz
VmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0
aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJtZXRob2RXaXRoRXhjZXB0aW9u
Iik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6
OmluZm8oKSk7CkBAIC0zMzUxLDcgKzMzNTEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEV4Y2VwdGlvbihFeGVjUwog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhFeGNlcHRpb25XaXRoTWVzc2FnZShFeGVjU3RhdGUqIHN0YXRlKQogewogICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwotICAgIEpTVGVzdE9iaiogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKKyAgICBhdXRv
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVF
cnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm1ldGhvZFdpdGhFeGNlcHRpb25XaXRoTWVzc2FnZSIp
OwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjpp
bmZvKCkpOwpAQCAtMzM2NSw3ICszMzY1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhFeGNlcHRpb25XaXRoTWUKIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DdXN0
b21NZXRob2QoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0
YXRlLT50aGlzVmFsdWUoKTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CisgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9i
aiIsICJjdXN0b21NZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3Rl
ZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKQEAgLTMzNzUsNyArMzM3NSw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DdXN0b21NZXRo
b2QoRXhlY1N0YXRlKiBzCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uQ3VzdG9tTWV0aG9kV2l0aEFyZ3MoRXhlY1N0YXRlKiBzdGF0ZSkKIHsK
ICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKLSAgICBKU1Rlc3RP
YmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7Cisg
ICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUp
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1Ro
aXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJjdXN0b21NZXRob2RXaXRoQXJncyIpOwog
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZv
KCkpOwpAQCAtMzM4NSw3ICszMzg1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkN1c3RvbU1ldGhvZFdpdGhBcmdzKEV4ZWMKIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Qcml2YXRl
TWV0aG9kKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0
ZS0+dGhpc1ZhbHVlKCk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOworICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoi
LCAicHJpdmF0ZU1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVk
VGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwpAQCAtMzQwMiw3ICszNDAyLDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblByaXZhdGVNZXRo
b2QoRXhlY1N0YXRlKgogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbkFkZEV2ZW50TGlzdGVuZXIoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKICAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKLSAgICBKU1Rlc3RPYmoqIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CisgICAgYXV0
byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJhZGRFdmVudExpc3RlbmVyIik7CiAgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CkBAIC0z
NDE3LDcgKzM0MTcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uQWRkRXZlbnRMaXN0ZW5lcihFeGVjU3RhdAogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblJlbW92ZUV2ZW50TGlzdGVu
ZXIoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50
aGlzVmFsdWUoKTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdE9iaio+KHRoaXNWYWx1ZSk7CisgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
CiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJy
ZW1vdmVFdmVudExpc3RlbmVyIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0
ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CkBAIC0zNDMyLDcgKzM0MzIsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uUmVtb3ZlRXZl
bnRMaXN0ZW5lcihFeGVjUwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRTdGF0ZVZvaWQoRXhlY1N0YXRlKiBzdGF0ZSkKIHsK
ICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKLSAgICBKU1Rlc3RP
YmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7Cisg
ICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUp
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1Ro
aXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0U3RhdGVWb2lkIik7CiAg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8o
KSk7CkBAIC0zNDQ0LDcgKzM0NDQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdFN0YXRlVm9pZChFeGVjUwogRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3Jp
cHRTdGF0ZU9iaihFeGVjU3RhdGUqIHN0YXRlKQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
c3RhdGUtPnRoaXNWYWx1ZSgpOwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKKyAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0
T2JqIiwgIndpdGhTY3JpcHRTdGF0ZU9iaiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJ
VFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwpAQCAtMzQ1OCw3ICszNDU4LDcgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldp
dGhTY3JpcHRTdGF0ZU9iaihFeGVjU3QKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0U3RhdGVWb2lkRXhjZXB0aW9uKEV4ZWNT
dGF0ZSogc3RhdGUpCiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVl
KCk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoq
Pih0aGlzVmFsdWUpOworICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAg
ICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAid2l0aFNjcmlw
dFN0YXRlVm9pZEV4Y2VwdGlvbiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2Fz
dGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwpAQCAtMzQ3Miw3ICszNDcyLDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3Jp
cHRTdGF0ZVZvaWRFeGNlcHQKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0U3RhdGVPYmpFeGNlcHRpb24oRXhlY1N0YXRlKiBz
dGF0ZSkKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKLSAg
ICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNW
YWx1ZSk7CisgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0
aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVy
biB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0U3RhdGVP
YmpFeGNlcHRpb24iKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMs
IEpTVGVzdE9iajo6aW5mbygpKTsKQEAgLTM0ODksNyArMzQ4OSw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0U3RhdGVP
YmpFeGNlcHRpCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoRXhlY1N0YXRlKiBzdGF0ZSkKIHsK
ICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKLSAgICBKU1Rlc3RP
YmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7Cisg
ICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUp
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1Ro
aXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2Jq
OjppbmZvKCkpOwpAQCAtMzUwNCw3ICszNTA0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXgK
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25X
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlKEV4ZWNTdGF0ZSogc3RhdGUp
CiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7Ci0gICAgSlNU
ZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUp
OworICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1Zh
bHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhy
b3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRBbmRTY3JpcHRTdGF0ZSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2Fz
dGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwpAQCAtMzUxOSw3ICszNTE5LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3Jp
cHRFeGVjdXRpb25Db250ZXgKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRl
T2JqRXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBzdGF0ZS0+dGhpc1ZhbHVlKCk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOworICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RPYmoiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZU9iakV4Y2Vw
dGlvbiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0
T2JqOjppbmZvKCkpOwpAQCAtMzUzOSw3ICszNTM5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVjdXRpb25Db250
ZXgKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25XaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlcyhFeGVj
U3RhdGUqIHN0YXRlKQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1
ZSgpOwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2Jq
Kj4odGhpc1ZhbHVlKTsKKyAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAg
ICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIndpdGhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzIik7CiAgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CkBAIC0z
NTU2LDcgKzM1NTYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleAogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRBcmd1bWVu
dHNBbmRDYWxsU3RhY2soRXhlY1N0YXRlKiBzdGF0ZSkKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CisgICAgYXV0byBjYXN0ZWRUaGlzID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAi
VGVzdE9iaiIsICJ3aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrIik7CiAgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CkBAIC0z
NTY5LDcgKzM1NjksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbAogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25h
bEFyZyhFeGVjU3RhdGUqIHN0YXRlKQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUt
PnRoaXNWYWx1ZSgpOwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKKyAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwg
Im1ldGhvZFdpdGhPcHRpb25hbEFyZyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
Y2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwpAQCAtMzU5MSw3ICszNTkxLDcgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhPcHRpb25hbEFyZyhFeGUKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBcmdBbmREZWZhdWx0VmFsdWUo
RXhlY1N0YXRlKiBzdGF0ZSkKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlz
VmFsdWUoKTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE9iaio+KHRoaXNWYWx1ZSk7CisgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAg
ICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJtZXRo
b2RXaXRoT3B0aW9uYWxBcmdBbmREZWZhdWx0VmFsdWUiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKQEAgLTM2MTMsNyArMzYx
Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBcmdBbmRECiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5k
T3B0aW9uYWxBcmcoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IHN0YXRlLT50aGlzVmFsdWUoKTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CisgICAgYXV0byBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dE9iaiIsICJtZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRPcHRpb25hbEFyZyIpOwogICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwpA
QCAtMzY0MCw3ICszNjQwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0EKIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9u
T3B0aW9uYWxBcmdBbmRUd29PcHRpb25hbEFyZ3MoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKICAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKLSAgICBKU1Rlc3RPYmoqIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CisgICAgYXV0
byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJtZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRUd29P
cHRpb25hbEFyZ3MiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMs
IEpTVGVzdE9iajo6aW5mbygpKTsKQEAgLTM2NzUsNyArMzY3NSw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uT3B0
aW9uYWxBcmdBCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAg
ICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7Ci0gICAgSlNUZXN0T2Jq
KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOworICAg
IGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlz
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nIik7
CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6Omlu
Zm8oKSk7CkBAIC0zNjk3LDcgKzM2OTcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nKAogRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhPcHRpb25hbFN0cmluZ0FuZERlZmF1bHRWYWx1ZShFeGVjU3RhdGUqIHN0YXRlKQogewog
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwotICAgIEpTVGVzdE9i
aiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKKyAg
ICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7
CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhp
c1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0Fu
ZERlZmF1bHRWYWx1ZSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhp
cywgSlNUZXN0T2JqOjppbmZvKCkpOwpAQCAtMzcxOSw3ICszNzE5LDcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRp
b25hbFN0cmluZ0EKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc1VuZGVmaW5lZChFeGVjU3RhdGUq
IHN0YXRlKQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwot
ICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhp
c1ZhbHVlKTsKKyAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+
KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0
dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm1ldGhvZFdpdGhPcHRp
b25hbFN0cmluZ0lzVW5kZWZpbmVkIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhj
YXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CkBAIC0zNzM0LDcgKzM3MzQsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aE9wdGlvbmFsU3RyaW5nSQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzTnVsbFN0cmluZyhF
eGVjU3RhdGUqIHN0YXRlKQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNW
YWx1ZSgpOwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqKj4odGhpc1ZhbHVlKTsKKyAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAg
ICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm1ldGhv
ZFdpdGhPcHRpb25hbFN0cmluZ0lzTnVsbFN0cmluZyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwpAQCAtMzc0OSw3ICszNzQ5
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0kKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tBcmcoRXhlY1N0
YXRlKiBzdGF0ZSkKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUo
KTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+
KHRoaXNWYWx1ZSk7CisgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RP
YmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAg
IHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJtZXRob2RXaXRo
Q2FsbGJhY2tBcmciKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMs
IEpTVGVzdE9iajo6aW5mbygpKTsKQEAgLTM3NjYsNyArMzc2Niw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJh
Y2tBcmcoRXhlCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tBcmcoRXhlY1N0YXRl
KiBzdGF0ZSkKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsK
LSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRo
aXNWYWx1ZSk7CisgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoq
Pih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJl
dHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJtZXRob2RXaXRoTm9u
Q2FsbGJhY2tBcmdBbmRDYWxsYmFja0FyZyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJ
VFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwpAQCAtMzc4Niw3ICszNzg2LDcgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhOb25DYWxsYmFja0FyZ0EKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFyZyhF
eGVjU3RhdGUqIHN0YXRlKQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNW
YWx1ZSgpOwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqKj4odGhpc1ZhbHVlKTsKKyAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAg
ICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm1ldGhv
ZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFsQXJnIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CkBAIC0zODA0LDcgKzM4MDQsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9uQXJnKEV4
ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1Zh
bHVlKCk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RP
YmoqPih0aGlzVmFsdWUpOworICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAg
ICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibWV0aG9k
V2l0aENhbGxiYWNrRnVuY3Rpb25BcmciKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKQEAgLTM4MjEsNyArMzgyMSw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2RXaXRoQ2FsbGJhY2tGdW5jdGlvCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tG
dW5jdGlvbkFyZyhFeGVjU3RhdGUqIHN0YXRlKQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
c3RhdGUtPnRoaXNWYWx1ZSgpOwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKKyAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0
T2JqIiwgIm1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNrRnVuY3Rpb25BcmciKTsK
ICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5m
bygpKTsKQEAgLTM4NDEsNyArMzg0MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBCiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aENhbGxiYWNrRnVuY3Rpb25BbmRPcHRpb25hbEFyZyhFeGVjU3RhdGUqIHN0YXRlKQogewog
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwotICAgIEpTVGVzdE9i
aiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKKyAg
ICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7
CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhp
c1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9u
QW5kT3B0aW9uYWxBcmciKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRo
aXMsIEpTVGVzdE9iajo6aW5mbygpKTsKQEAgLTM4ODMsNyArMzg4Myw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvblN0YXRpY01ldGhv
ZFdpdGhDYWxsYmFjCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxNZXRob2QxKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7Ci0gICAgSlNUZXN0T2JqKiBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOworICAgIGF1
dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiY29uZGl0aW9uYWxNZXRob2QxIik7CiAgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CkBA
IC0zODk4LDcgKzM4OTgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxNZXRob2QxKEV4ZWNTdAogRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsTWV0
aG9kMihFeGVjU3RhdGUqIHN0YXRlKQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUt
PnRoaXNWYWx1ZSgpOwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKKyAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwg
ImNvbmRpdGlvbmFsTWV0aG9kMiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2Fz
dGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwpAQCAtMzkxMyw3ICszOTEzLDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlv
bmFsTWV0aG9kMihFeGVjU3QKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbE1ldGhvZDMoRXhlY1N0YXRlKiBzdGF0ZSkKIHsK
ICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKLSAgICBKU1Rlc3RP
YmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7Cisg
ICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUp
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1Ro
aXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJjb25kaXRpb25hbE1ldGhvZDMiKTsKICAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygp
KTsKQEAgLTM5MjcsNyArMzkyNyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbE1ldGhvZDMoRXhlY1N0CiBzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92
ZXJsb2FkZWRNZXRob2QxKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOworICAgIGF1dG8gY2FzdGVkVGhpcyA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RPYmoiLCAib3ZlcmxvYWRlZE1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwpAQCAtMzk0Nyw3ICszOTQ3LDcg
QEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMSgKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDIoRXhlY1N0
YXRlKiBzdGF0ZSkKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUo
KTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+
KHRoaXNWYWx1ZSk7CisgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RP
YmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAg
IHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJvdmVybG9hZGVk
TWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rl
c3RPYmo6OmluZm8oKSk7CkBAIC0zOTc0LDcgKzM5NzQsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRo
b2QyKAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMyhFeGVjU3RhdGUqIHN0YXRlKQogewogICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwotICAgIEpTVGVzdE9iaiogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKKyAgICBhdXRv
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVF
cnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm92ZXJsb2FkZWRNZXRob2QiKTsKICAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKQEAgLTM5
OTEsNyArMzk5MSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDMoCiBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRN
ZXRob2Q0KEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0
ZS0+dGhpc1ZhbHVlKCk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOworICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoi
LCAib3ZlcmxvYWRlZE1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2Fz
dGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwpAQCAtNDAwOCw3ICs0MDA4LDcgQEAgc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25P
dmVybG9hZGVkTWV0aG9kNCgKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDUoRXhlY1N0YXRlKiBzdGF0
ZSkKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKLSAgICBK
U1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1
ZSk7CisgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlz
VmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0
aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJvdmVybG9hZGVkTWV0aG9kIik7
CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6Omlu
Zm8oKSk7CkBAIC00MDI1LDcgKzQwMjUsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q1KAogc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25PdmVybG9hZGVkTWV0aG9kNihFeGVjU3RhdGUqIHN0YXRlKQogewogICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKKyAgICBhdXRvIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3Rh
dGUsICJUZXN0T2JqIiwgIm92ZXJsb2FkZWRNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKQEAgLTQwNDIsNyArNDA0
Miw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDYoCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q3KEV4
ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1Zh
bHVlKCk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RP
YmoqPih0aGlzVmFsdWUpOworICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAg
ICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAib3Zlcmxv
YWRlZE1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywg
SlNUZXN0T2JqOjppbmZvKCkpOwpAQCAtNDA1OSw3ICs0MDU5LDcgQEAgc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVk
TWV0aG9kNygKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDgoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKICAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKLSAgICBKU1Rlc3RPYmoq
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CisgICAg
YXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwog
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJvdmVybG9hZGVkTWV0aG9kIik7CiAgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CkBA
IC00MDc2LDcgKzQwNzYsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q4KAogc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9h
ZGVkTWV0aG9kOShFeGVjU3RhdGUqIHN0YXRlKQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
c3RhdGUtPnRoaXNWYWx1ZSgpOwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKKyAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0
T2JqIiwgIm92ZXJsb2FkZWRNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKQEAgLTQwOTMsNyArNDA5Myw3IEBAIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uT3ZlcmxvYWRlZE1ldGhvZDkoCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QxMChFeGVjU3RhdGUq
IHN0YXRlKQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwot
ICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhp
c1ZhbHVlKTsKKyAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+
KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0
dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm92ZXJsb2FkZWRNZXRo
b2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9i
ajo6aW5mbygpKTsKQEAgLTQxMTAsNyArNDExMCw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDEw
CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk92ZXJsb2FkZWRNZXRob2QxMShFeGVjU3RhdGUqIHN0YXRlKQogewogICAgIEpTVmFs
dWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwotICAgIEpTVGVzdE9iaiogY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKKyAgICBhdXRvIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJv
cigqc3RhdGUsICJUZXN0T2JqIiwgIm92ZXJsb2FkZWRNZXRob2QiKTsKICAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKQEAgLTQxMjcs
NyArNDEyNyw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDExCiBzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRo
b2QxMihFeGVjU3RhdGUqIHN0YXRlKQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUt
PnRoaXNWYWx1ZSgpOwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKKyAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwg
Im92ZXJsb2FkZWRNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3Rl
ZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKQEAgLTQxNzksNyArNDE3OSw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVk
TWV0aG9kKEV4ZWNTdGF0CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2RXaXRoT3B0aW9uYWxQYXJhbWV0
ZXIxKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+
dGhpc1ZhbHVlKCk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmoqPih0aGlzVmFsdWUpOworICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAi
b3ZlcmxvYWRlZE1ldGhvZFdpdGhPcHRpb25hbFBhcmFtZXRlciIpOwogICAgIEFTU0VSVF9HQ19P
QkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwpAQCAtNDIwNiw3
ICs0MjA2LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kV2kKIHN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhv
ZFdpdGhPcHRpb25hbFBhcmFtZXRlcjIoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKICAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CisgICAgYXV0byBjYXN0
ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdE9iaiIsICJvdmVybG9hZGVkTWV0aG9kV2l0aE9wdGlvbmFsUGFyYW1ldGVy
Iik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6
OmluZm8oKSk7CkBAIC00MzIzLDcgKzQzMjMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMShFeGVjUwog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNs
YXNzTWV0aG9kV2l0aENsYW1wKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOworICAgIGF1dG8gY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RPYmoiLCAiY2xhc3NNZXRob2RXaXRoQ2xhbXAiKTsKICAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKQEAgLTQzNTMsNyAr
NDM1Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25DbGFzc01ldGhvZFdpdGhDbGFtcChFeGVjCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFVuc2lnbmVkTG9uZ1Nl
cXVlbmNlKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0
ZS0+dGhpc1ZhbHVlKCk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOworICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoi
LCAibWV0aG9kV2l0aFVuc2lnbmVkTG9uZ1NlcXVlbmNlIik7CiAgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CkBAIC00MzcwLDcgKzQz
NzAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aFVuc2lnbmVkTG9uZ1NlcQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblN0cmluZ0FycmF5RnVuY3Rpb24oRXhlY1N0
YXRlKiBzdGF0ZSkKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUo
KTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+
KHRoaXNWYWx1ZSk7CisgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RP
YmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAg
IHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJzdHJpbmdBcnJh
eUZ1bmN0aW9uIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBK
U1Rlc3RPYmo6OmluZm8oKSk7CkBAIC00MzkwLDcgKzQzOTAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU3RyaW5nQXJyYXlGdW5jdGlv
bihFeGVjUwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbkRvbVN0cmluZ0xpc3RGdW5jdGlvbihFeGVjU3RhdGUqIHN0YXRlKQogewogICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwotICAgIEpTVGVzdE9iaiogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKKyAgICBhdXRv
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVF
cnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImRvbVN0cmluZ0xpc3RGdW5jdGlvbiIpOwogICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwpA
QCAtNDQxMCw3ICs0NDEwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbkRvbVN0cmluZ0xpc3RGdW5jdGlvbihFeGUKIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQW5k
V2l0aG91dE51bGxhYmxlU2VxdWVuY2UoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKICAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CisgICAgYXV0byBjYXN0
ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdE9iaiIsICJtZXRob2RXaXRoQW5kV2l0aG91dE51bGxhYmxlU2VxdWVuY2Ui
KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6
aW5mbygpKTsKQEAgLTQ0MzAsNyArNDQzMCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQW5kV2l0aG91dE51bGxhCiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aEFuZFdpdGhvdXROdWxsYWJsZVNlcXVlbmNlMihFeGVjU3RhdGUqIHN0YXRlKQogewog
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwotICAgIEpTVGVzdE9i
aiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKKyAg
ICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7
CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhp
c1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm1ldGhvZFdpdGhBbmRXaXRob3V0TnVsbGFi
bGVTZXF1ZW5jZTIiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMs
IEpTVGVzdE9iajo6aW5mbygpKTsKQEAgLTQ0NTAsNyArNDQ1MCw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQW5kV2l0
aG91dE51bGxhCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uR2V0U1ZHRG9jdW1lbnQoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKICAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CisgICAgYXV0byBjYXN0
ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdE9iaiIsICJnZXRTVkdEb2N1bWVudCIpOwogICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwpAQCAtNDQ2Nyw3ICs0
NDY3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbkdldFNWR0RvY3VtZW50KEV4ZWNTdGF0ZSoKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db252ZXJ0MShFeGVjU3RhdGUqIHN0YXRl
KQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwotICAgIEpT
VGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVl
KTsKKyAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNW
YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRo
cm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImNvbnZlcnQxIik7CiAgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CkBA
IC00NDg0LDcgKzQ0ODQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uQ29udmVydDEoRXhlY1N0YXRlKiBzdGF0ZQogRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbnZlcnQyKEV4ZWNT
dGF0ZSogc3RhdGUpCiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVl
KCk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoq
Pih0aGlzVmFsdWUpOworICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAg
ICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiY29udmVydDIi
KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6
aW5mbygpKTsKQEAgLTQ1MDEsNyArNDUwMSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db252ZXJ0MihFeGVjU3RhdGUqIHN0YXRlCiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29u
dmVydDQoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRl
LT50aGlzVmFsdWUoKTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CisgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIs
ICJjb252ZXJ0NCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywg
SlNUZXN0T2JqOjppbmZvKCkpOwpAQCAtNDUxOCw3ICs0NTE4LDcgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbnZlcnQ0KEV4ZWNTdGF0
ZSogc3RhdGUKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25Db252ZXJ0NShFeGVjU3RhdGUqIHN0YXRlKQogewogICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKKyAgICBhdXRvIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUs
ICJUZXN0T2JqIiwgImNvbnZlcnQ1Iik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhj
YXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CkBAIC00NTM1LDcgKzQ1MzUsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29udmVy
dDUoRXhlY1N0YXRlKiBzdGF0ZQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk11dGFibGVQb2ludEZ1bmN0aW9uKEV4ZWNTdGF0ZSogc3RhdGUp
CiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7Ci0gICAgSlNU
ZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUp
OworICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1Zh
bHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhy
b3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibXV0YWJsZVBvaW50RnVuY3Rpb24i
KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6
aW5mbygpKTsKQEAgLTQ1NDcsNyArNDU0Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NdXRhYmxlUG9pbnRGdW5jdGlvbihFeGVjCiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uSW1t
dXRhYmxlUG9pbnRGdW5jdGlvbihFeGVjU3RhdGUqIHN0YXRlKQogewogICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKKyAgICBhdXRvIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3Rh
dGUsICJUZXN0T2JqIiwgImltbXV0YWJsZVBvaW50RnVuY3Rpb24iKTsKICAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKQEAgLTQ1NTks
NyArNDU1OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25JbW11dGFibGVQb2ludEZ1bmN0aW9uKEV4CiBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3JhbmdlKEV4ZWNTdGF0ZSogc3Rh
dGUpCiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7Ci0gICAg
SlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFs
dWUpOworICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhp
c1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4g
dGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAib3JhbmdlIik7CiAgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CkBA
IC00NTcxLDcgKzQ1NzEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uT3JhbmdlKEV4ZWNTdGF0ZSogc3RhdGUpCiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU3RyaWN0RnVuY3Rpb24o
RXhlY1N0YXRlKiBzdGF0ZSkKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlz
VmFsdWUoKTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE9iaio+KHRoaXNWYWx1ZSk7CisgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAg
ICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJzdHJp
Y3RGdW5jdGlvbiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywg
SlNUZXN0T2JqOjppbmZvKCkpOwpAQCAtNDU5Nyw3ICs0NTk3LDcgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblN0cmljdEZ1bmN0aW9uKEV4
ZWNTdGF0ZSoKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25TdHJpY3RGdW5jdGlvbldpdGhTZXF1ZW5jZShFeGVjU3RhdGUqIHN0YXRlKQogewog
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwotICAgIEpTVGVzdE9i
aiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKKyAg
ICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7
CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhp
c1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInN0cmljdEZ1bmN0aW9uV2l0aFNlcXVlbmNl
Iik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6
OmluZm8oKSk7CkBAIC00NjIyLDcgKzQ2MjIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU3RyaWN0RnVuY3Rpb25XaXRoU2VxdWVuYwog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblN0
cmljdEZ1bmN0aW9uV2l0aEFycmF5KEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOworICAgIGF1dG8gY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RPYmoiLCAic3RyaWN0RnVuY3Rpb25XaXRoQXJyYXkiKTsKICAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKQEAgLTQ2
NDcsNyArNDY0Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25TdHJpY3RGdW5jdGlvbldpdGhBcnJheShFCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNTdHJpbmdNZXRo
b2QoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50
aGlzVmFsdWUoKTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdE9iaio+KHRoaXNWYWx1ZSk7CisgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
CiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ2
YXJpYWRpY1N0cmluZ01ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2Fz
dGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwpAQCAtNDY2Nyw3ICs0NjY3LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGlj
U3RyaW5nTWV0aG9kKEV4ZWMKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY0RvdWJsZU1ldGhvZChFeGVjU3RhdGUqIHN0YXRlKQog
ewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwotICAgIEpTVGVz
dE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsK
KyAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1
ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93
VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInZhcmlhZGljRG91YmxlTWV0aG9kIik7
CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6Omlu
Zm8oKSk7CkBAIC00Njg3LDcgKzQ2ODcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNEb3VibGVNZXRob2QoRXhlYwogRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlh
ZGljTm9kZU1ldGhvZChFeGVjU3RhdGUqIHN0YXRlKQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKKyAgICBhdXRvIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJU
ZXN0T2JqIiwgInZhcmlhZGljTm9kZU1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwpAQCAtNDcxMCw3ICs0NzEwLDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
blZhcmlhZGljTm9kZU1ldGhvZChFeGVjU3QKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25BbnkoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKICAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKLSAgICBKU1Rlc3RPYmoqIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CisgICAgYXV0
byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJhbnkiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKQEAgLTQ3MzYsNyArNDczNiw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25UZXN0UHJvbWlzZUZ1bmN0aW9uKEV4ZWNTCiBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvblByb21pc2UoRXhl
Y1N0YXRlKiBzdGF0ZSwgSlNQcm9taXNlRGVmZXJyZWQqIHByb21pc2VEZWZlcnJlZCkKIHsKICAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKLSAgICBKU1Rlc3RPYmoq
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CisgICAg
YXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwog
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ0ZXN0UHJvbWlzZUZ1bmN0aW9uIik7CiAgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7
CkBAIC00NzU0LDcgKzQ3NTQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvbldpdGhGbAogc3RhdGljIGlu
bGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNl
RnVuY3Rpb25XaXRoRmxvYXRBcmd1bWVudFByb21pc2UoRXhlY1N0YXRlKiBzdGF0ZSwgSlNQcm9t
aXNlRGVmZXJyZWQqIHByb21pc2VEZWZlcnJlZCkKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IHN0YXRlLT50aGlzVmFsdWUoKTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CisgICAgYXV0byBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dE9iaiIsICJ0ZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEZsb2F0QXJndW1lbnQiKTsKICAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKQEAg
LTQ3ODEsNyArNDc4MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEV4CiBzdGF0aWMgaW5saW5l
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5j
dGlvbldpdGhFeGNlcHRpb25Qcm9taXNlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTUHJvbWlzZURlZmVy
cmVkKiBwcm9taXNlRGVmZXJyZWQpCiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+
dGhpc1ZhbHVlKCk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmoqPih0aGlzVmFsdWUpOworICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAi
dGVzdFByb21pc2VGdW5jdGlvbldpdGhFeGNlcHRpb24iKTsKICAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKQEAgLTQ4MDEsNyArNDgw
MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aE9wCiBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvbldpdGhPcHRp
b25hbEludEFyZ3VtZW50UHJvbWlzZShFeGVjU3RhdGUqIHN0YXRlLCBKU1Byb21pc2VEZWZlcnJl
ZCogcHJvbWlzZURlZmVycmVkKQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRo
aXNWYWx1ZSgpOwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0T2JqKj4odGhpc1ZhbHVlKTsKKyAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkK
ICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInRl
c3RQcm9taXNlRnVuY3Rpb25XaXRoT3B0aW9uYWxJbnRBcmd1bWVudCIpOwogICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJy
aWRlQnVpbHRpbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuY3BwCmluZGV4IGQzMjc2MzljMjhkYzY4OTA0ZjE2YTEw
OTVkNjNjYjJmNzQwMzEzYTguLjQ0YWI0NDliODJlOGNmMmNkNmIwZDNkNGU1NzViOWE2Y2I2ZWMx
ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcnJpZGVCdWlsdGlucy5jcHAKQEAgLTE5NSw3ICsxOTUs
NyBAQCBKU1ZhbHVlIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnM6OmdldENvbnN0cnVjdG9yKFZNJiB2
bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGdsbwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlRnVuY3Rpb25OYW1lZEl0ZW0oRXhlY1N0
YXRlKiBzdGF0ZSkKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUo
KTsKLSAgICBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zKj4odGhpc1ZhbHVlKTsKKyAgICBhdXRvIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE92ZXJyaWRlQnVpbHRpbnMqPih0aGlzVmFsdWUpOwog
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE92ZXJyaWRlQnVpbHRpbnMiLCAibmFtZWRJdGVtIik7CiAg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPdmVycmlkZUJ1
aWx0aW5zOjppbmZvKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAKaW5kZXggNDg1MmU0MWNhNWZkYjM1
MDBlNjk0ZTY5ZTdhMDcxODc1NmQ4N2IwYy4uYTcxN2M3MDU3Y2EwMDU5ODA3ZTlmMTYwYzczNWRm
NzE3YmM2YWY0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCkBAIC00NTgsNyArNDU4LDcgQEAgSlNW
YWx1ZSBKU1Rlc3RUeXBlZGVmczo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWMKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbkZ1bmMoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKICAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKLSAgICBKU1Rlc3RUeXBlZGVm
cyogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPih0aGlzVmFsdWUp
OworICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPih0
aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVy
biB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwgImZ1bmMiKTsKICAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdFR5cGVkZWZzOjpp
bmZvKCkpOwpAQCAtNDgwLDcgKzQ4MCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbkZ1bmMoRXhlY1N0YXRlKiBzdGF0CiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25T
ZXRTaGFkb3coRXhlY1N0YXRlKiBzdGF0ZSkKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0
YXRlLT50aGlzVmFsdWUoKTsKLSAgICBKU1Rlc3RUeXBlZGVmcyogY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPih0aGlzVmFsdWUpOworICAgIGF1dG8gY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPih0aGlzVmFsdWUpOwogICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwgInNldFNoYWRvdyIpOwogICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0VHlwZWRlZnM6OmluZm8oKSk7CkBAIC01MjEs
NyArNTIxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1By
b3RvdHlwZUZ1bmN0aW9uU2V0U2hhZG93KEV4ZWNTdGF0ZSoKIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhTZXF1ZW5j
ZUFyZyhFeGVjU3RhdGUqIHN0YXRlKQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUt
PnRoaXNWYWx1ZSgpOwotICAgIEpTVGVzdFR5cGVkZWZzKiBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RUeXBlZGVmcyo+KHRoaXNWYWx1ZSk7CisgICAgYXV0byBjYXN0ZWRUaGlzID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3Rh
dGUsICJUZXN0VHlwZWRlZnMiLCAibWV0aG9kV2l0aFNlcXVlbmNlQXJnIik7CiAgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RUeXBlZGVmczo6aW5mbygpKTsK
QEAgLTUzOCw3ICs1MzgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5
cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoU2VxdWVuY2VBcgogRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTnVsbGFibGVB
cnJheUFyZyhFeGVjU3RhdGUqIHN0YXRlKQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3Rh
dGUtPnRoaXNWYWx1ZSgpOwotICAgIEpTVGVzdFR5cGVkZWZzKiBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+KHRoaXNWYWx1ZSk7CisgICAgYXV0byBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigq
c3RhdGUsICJUZXN0VHlwZWRlZnMiLCAibnVsbGFibGVBcnJheUFyZyIpOwogICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0VHlwZWRlZnM6OmluZm8oKSk7CkBA
IC01NTUsNyArNTU1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBl
ZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTnVsbGFibGVBcnJheUFyZyhFeGUKIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbkZ1bmNXaXRoQ2xh
bXAoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50
aGlzVmFsdWUoKTsKLSAgICBKU1Rlc3RUeXBlZGVmcyogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0VHlwZWRlZnMqPih0aGlzVmFsdWUpOworICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRl
LCAiVGVzdFR5cGVkZWZzIiwgImZ1bmNXaXRoQ2xhbXAiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdFR5cGVkZWZzOjppbmZvKCkpOwpAQCAtNTkyLDcg
KzU5Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90
b3R5cGVGdW5jdGlvbkZ1bmNXaXRoQ2xhbXAoRXhlY1N0CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25JbW11dGFibGVQb2ludEZ1bmN0
aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+
dGhpc1ZhbHVlKCk7Ci0gICAgSlNUZXN0VHlwZWRlZnMqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdFR5cGVkZWZzKj4odGhpc1ZhbHVlKTsKKyAgICBhdXRvIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RUeXBlZGVmcyIsICJpbW11dGFibGVQb2ludEZ1bmN0aW9uIik7CiAgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RUeXBlZGVmczo6aW5mbygpKTsK
QEAgLTYwNCw3ICs2MDQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5
cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25JbW11dGFibGVQb2ludEZ1bmN0aQogRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uU3RyaW5nQXJy
YXlGdW5jdGlvbihFeGVjU3RhdGUqIHN0YXRlKQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
c3RhdGUtPnRoaXNWYWx1ZSgpOwotICAgIEpTVGVzdFR5cGVkZWZzKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+KHRoaXNWYWx1ZSk7CisgICAgYXV0byBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+KHRoaXNWYWx1ZSk7CiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJv
cigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAic3RyaW5nQXJyYXlGdW5jdGlvbiIpOwogICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0VHlwZWRlZnM6OmluZm8o
KSk7CkBAIC02MjQsNyArNjI0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uU3RyaW5nQXJyYXlGdW5jdGlvbigKIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblN0cmlu
Z0FycmF5RnVuY3Rpb24yKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7Ci0gICAgSlNUZXN0VHlwZWRlZnMqIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4odGhpc1ZhbHVlKTsKKyAgICBhdXRvIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4odGhpc1ZhbHVlKTsKICAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJzdHJpbmdBcnJheUZ1bmN0aW9uMiIpOwog
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0VHlwZWRlZnM6
OmluZm8oKSk7CkBAIC02NDQsNyArNjQ0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uU3RyaW5nQXJyYXlGdW5jdGlvbjIKIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlv
bkNhbGxXaXRoU2VxdWVuY2VUaGF0UmVxdWlyZXNJbmNsdWRlKEV4ZWNTdGF0ZSogc3RhdGUpCiB7
CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7Ci0gICAgSlNUZXN0
VHlwZWRlZnMqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4odGhp
c1ZhbHVlKTsKKyAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVk
ZWZzKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAg
ICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJjYWxs
V2l0aFNlcXVlbmNlVGhhdFJlcXVpcmVzSW5jbHVkZSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0VHlwZWRlZnM6OmluZm8oKSk7CkBAIC02NjEsNyAr
NjYxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3Rv
dHlwZUZ1bmN0aW9uQ2FsbFdpdGhTZXF1ZW5jZVRoYXQKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhFeGNlcHRpb24o
RXhlY1N0YXRlKiBzdGF0ZSkKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlz
VmFsdWUoKTsKLSAgICBKU1Rlc3RUeXBlZGVmcyogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0VHlwZWRlZnMqPih0aGlzVmFsdWUpOworICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAi
VGVzdFR5cGVkZWZzIiwgIm1ldGhvZFdpdGhFeGNlcHRpb24iKTsKICAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdFR5cGVkZWZzOjppbmZvKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudFRhcmdldC5pZGwKaW5kZXggYTQ4YjNkYjZjOTUwNWJhYThmYmY5Mzk4ZDg2OGRi
ZjUzMzhmODM1Yy4uYTk1NTI4NzE4YzZiYTZlYzY5ZjU1YjBjODRlYmFhY2Q4ZGUyZjhjYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmlkbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaWRsCkBAIC0yNSw2ICsyNSw3IEBACiAgICAgQ3VzdG9t
VG9KU09iamVjdCwKICAgICBKU0N1c3RvbVRvTmF0aXZlT2JqZWN0LAogICAgIEV2ZW50VGFyZ2V0
LAorICAgIEpTQ3VzdG9tSGVhZGVyLAogXSBpbnRlcmZhY2UgRXZlbnRUYXJnZXQgewogICAgIFtP
YmpDTGVnYWN5VW5uYW1lZFBhcmFtZXRlcnNdIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihET01TdHJp
bmcgdHlwZSwgRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwgb3B0aW9uYWwgYm9vbGVhbiB1c2VDYXB0
dXJlKTsKICAgICBbT2JqQ0xlZ2FjeVVubmFtZWRQYXJhbWV0ZXJzXSB2b2lkIHJlbW92ZUV2ZW50
TGlzdGVuZXIoRE9NU3RyaW5nIHR5cGUsIEV2ZW50TGlzdGVuZXIgbGlzdGVuZXIsIG9wdGlvbmFs
IGJvb2xlYW4gdXNlQ2FwdHVyZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5jcHAKaW5kZXggNDNmYWZhZTE1NmMyNTZkNmZjMjhhZTI3MWI2ZmI3ZDNjNzM2
ZDAwZC4uMGYxODI0NDNkYTc3MDNhMjc2N2U0NmUwZGYwZjcwM2UyOWQ0ZGQwNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcApAQCAtMzkwLDcgKzM5
MCw4IEBAIGJvb2wgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZGlzcGF0Y2hFcnJvckV2ZW50KGNv
bnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAj
aWYgUExBVEZPUk0oSU9TKQotICAgIGlmICh0YXJnZXQgPT0gdGFyZ2V0LT50b0RPTVdpbmRvdygp
ICYmIGlzPERvY3VtZW50PigqdGhpcykpIHsKKyAgICBhdXRvIHRhcmdldElzV2luZG93ID0gISF0
YXJnZXQtPnRvRE9NV2luZG93KCk7CisgICAgaWYgKHRhcmdldElzV2luZG93ICYmIGlzPERvY3Vt
ZW50PigqdGhpcykpIHsKICAgICAgICAgU2V0dGluZ3MqIHNldHRpbmdzID0gZG93bmNhc3Q8RG9j
dW1lbnQ+KCp0aGlzKS5zZXR0aW5ncygpOwogICAgICAgICBpZiAoc2V0dGluZ3MgJiYgIXNldHRp
bmdzLT5zaG91bGREaXNwYXRjaEphdmFTY3JpcHRXaW5kb3dPbkVycm9yRXZlbnRzKCkpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RP
TVdpbmRvdy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKaW5kZXggODgz
YzkyMzc4ODQ1ZjYzYzJhNmJlNjU5NzNhNDgxNzBiYmZhODY0NC4uNTIyYTFmOTE4N2I0ZmYwMTVj
NjNjNGFmNjY3OWYwZjAyMDFlODY1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9E
T01XaW5kb3cuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbApAQCAt
MzYsMTAgKzM2LDkgQEAKICAgICBKU0N1c3RvbVRvTmF0aXZlT2JqZWN0LAogICAgIEN1c3RvbVB1
dEZ1bmN0aW9uLAogICAgIEV2ZW50VGFyZ2V0LAotICAgIEpTR2VuZXJhdGVUb05hdGl2ZU9iamVj
dCwKICAgICBKU0xlZ2FjeVBhcmVudD1KU0RPTVdpbmRvd0Jhc2UsCiAgICAgSW50ZXJmYWNlTmFt
ZT1XaW5kb3csCi1dIGludGVyZmFjZSBET01XaW5kb3cgeworXSBpbnRlcmZhY2UgRE9NV2luZG93
IDogRXZlbnRUYXJnZXQgewogICAgIC8vIERPTSBMZXZlbCAwCiAgICAgW1JlcGxhY2VhYmxlXSBy
ZWFkb25seSBhdHRyaWJ1dGUgU2NyZWVuIHNjcmVlbjsKICAgICBbUmVwbGFjZWFibGVdIHJlYWRv
bmx5IGF0dHJpYnV0ZSBIaXN0b3J5IGhpc3Rvcnk7CkBAIC0xODYsMTEgKzE4NSw2IEBACiAKICAg
ICBbUmVwbGFjZWFibGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01XaW5kb3dDU1MgQ1NTOwogCi0g
ICAgLy8gRXZlbnRUYXJnZXQgaW50ZXJmYWNlCi0gICAgW0N1c3RvbV0gdm9pZCBhZGRFdmVudExp
c3RlbmVyKERPTVN0cmluZyB0eXBlLCBFdmVudExpc3RlbmVyIGxpc3RlbmVyLCBvcHRpb25hbCBi
b29sZWFuIHVzZUNhcHR1cmUpOwotICAgIFtDdXN0b21dIHZvaWQgcmVtb3ZlRXZlbnRMaXN0ZW5l
cihET01TdHJpbmcgdHlwZSwgRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwgb3B0aW9uYWwgYm9vbGVh
biB1c2VDYXB0dXJlKTsKLSAgICBbSW1wbGVtZW50ZWRBcz1kaXNwYXRjaEV2ZW50Rm9yQmluZGlu
Z3MsIFJhaXNlc0V4Y2VwdGlvbl0gYm9vbGVhbiBkaXNwYXRjaEV2ZW50KEV2ZW50IGV2ZW50KTsK
LQogICAgIHZvaWQgY2FwdHVyZUV2ZW50cygvKmluIGxvbmcgZXZlbnRGbGFncyovKTsKICAgICB2
b2lkIHJlbGVhc2VFdmVudHMoLyppbiBsb25nIGV2ZW50RmxhZ3MqLyk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaWRsIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5pZGwKaW5kZXggNzQ4ZWFmMDdlY2M3NDhh
MzYyZDM5ZjE5ODVlYTExYTgwZGY4MzNkNi4uM2ExMTEwZmNmZDdhOGM1MDA0YWIxMjljMDg1ZGZi
MDBkM2FkYzZlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9i
YWxTY29wZS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29w
ZS5pZGwKQEAgLTMxLDcgKzMxLDcgQEAKICAgICBKU0N1c3RvbUdldE93blByb3BlcnR5U2xvdEFu
ZERlc2NyaXB0b3IsCiAgICAgRXZlbnRUYXJnZXQsCiAgICAgSlNMZWdhY3lQYXJlbnQ9SlNXb3Jr
ZXJHbG9iYWxTY29wZUJhc2UsCi1dIGludGVyZmFjZSBXb3JrZXJHbG9iYWxTY29wZSB7CitdIGlu
dGVyZmFjZSBXb3JrZXJHbG9iYWxTY29wZSA6IEV2ZW50VGFyZ2V0IHsKIAogI2lmIGRlZmluZWQo
TEFOR1VBR0VfSkFWQVNDUklQVCkgJiYgTEFOR1VBR0VfSkFWQVNDUklQVAogICAgIFtSZXBsYWNl
YWJsZV0gcmVhZG9ubHkgYXR0cmlidXRlICBXb3JrZXJHbG9iYWxTY29wZSBzZWxmOwpAQCAtNDgs
MTIgKzQ4LDYgQEAKICAgICBbQ3VzdG9tXSB2b2lkIGltcG9ydFNjcmlwdHMoLypbVmFyaWFkaWNd
IERPTVN0cmluZyB1cmxzICovKTsKICAgICBbUmVwbGFjZWFibGVdIHJlYWRvbmx5IGF0dHJpYnV0
ZSBXb3JrZXJOYXZpZ2F0b3IgbmF2aWdhdG9yOwogCi0gICAgLy8gRXZlbnRUYXJnZXQgaW50ZXJm
YWNlCi0KLSAgICB2b2lkIGFkZEV2ZW50TGlzdGVuZXIoRE9NU3RyaW5nIHR5cGUsIEV2ZW50TGlz
dGVuZXIgbGlzdGVuZXIsIG9wdGlvbmFsIGJvb2xlYW4gdXNlQ2FwdHVyZSk7Ci0gICAgdm9pZCBy
ZW1vdmVFdmVudExpc3RlbmVyKERPTVN0cmluZyB0eXBlLCBFdmVudExpc3RlbmVyIGxpc3RlbmVy
LCBvcHRpb25hbCBib29sZWFuIHVzZUNhcHR1cmUpOwotICAgIFtJbXBsZW1lbnRlZEFzPWRpc3Bh
dGNoRXZlbnRGb3JCaW5kaW5ncywgUmFpc2VzRXhjZXB0aW9uXSBib29sZWFuIGRpc3BhdGNoRXZl
bnQoRXZlbnQgZXZlbnQpOwotCiAgICAgLy8gQWRkaXRpb25hbCBjb25zdHJ1Y3RvcnMKIAogICAg
IGF0dHJpYnV0ZSBET01VUkxDb25zdHJ1Y3RvciB3ZWJraXRVUkw7IC8vIEZJWE1FOiBkZXByZWNh
dGUgdGhpcy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwppbmRleCA2NDM1N2FiNTJkYmI4MjE4NzE3YWFiOTk3YWNjMjg3NzY4ZGFhMTU5
Li44Mzc5NTYzZDM3NWFkZTk2MjJkYTJkOTYyM2E1MzI5NWZjZjEwOThjIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTkgQEAKKzIwMTYtMDItMTIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKwor
ICAgICAgICBXaW5kb3cgYW5kIFdvcmtlckdsb2JhbFNjb3BlIHNob3VsZCBpbmhlcml0IEV2ZW50
VGFyZ2V0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NTQxNzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IGZhc3QvbG9hZGVyL3dpbmRvdy1jbGVhcmluZy1leHBlY3RlZC50eHQ6CisgICAgICAgIFJlYmFz
ZWxpbmUgbm93IHRoYXQgd2luZG93IGhhcyBvbmUgbW9yZSBvYmplY3QgaW4gaXRzIHByb3RvdHlw
ZSBjaGFpbi4KKworICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3MtZnJhbWUtYWNj
ZXNzLWNhbGwtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvY3Jv
c3MtZnJhbWUtYWNjZXNzLWNhbGwuaHRtbDoKKyAgICAgICAgQWRkIHRlc3QgY292ZXJhZ2UgZm9y
IGNyb3NzLW9yaWdpbiBhY2Nlc3MgdG8gd2luZG93LnBvc3RNZXNzYWdlKCkgd2hpY2gKKyAgICAg
ICAgc2hvdWxkIG5vdCBiZSBhbGxvd2VkLCBpbiBhZGRpdGlvbiB0byB3aW5kb3cuYWRkRXZlbnRM
aXN0ZW5lcigpIGFuZAorICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigpLgorCiAy
MDE2LTAyLTEyICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CiAKICAgICAgICAg
VW5yZXZpZXdlZCwgYnVpbGQgZml4IGFmdGVyIHIxOTY1MjAKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hh
bmdlTG9nCmluZGV4IDJlM2MxZDRhODhhMDYzMjFhMGUwOGY4YjU3YzQwNGE1ZGQ1OTRiMzYuLmFl
ZTRiODgzZDhmOTczYzY3OTZiNGE5Zjk0ZWFkZjA5ZDA4ZDc3YTcgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE2LTAyLTEyICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgV2luZG93IGFuZCBXb3JrZXJHbG9iYWxTY29w
ZSBzaG91bGQgaW5oZXJpdCBFdmVudFRhcmdldAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU0MTcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgUmViYXNlbGluZSBub3cgdGhhdCBhIGNvdXBsZSBvZiBjaGVj
a3MgYXJlIHBhc3NpbmcuCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9kb20v
aW50ZXJmYWNlcy1leHBlY3RlZC50eHQ6CisKIDIwMTYtMDItMTIgIEppZXdlbiBUYW4gIDxqaWV3
ZW5fdGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJLaXQgc2hvdWxkIGV4cG9zZSB0aGUgRE9N
IDQgRXZlbnQuaXNUcnVzdGVkIHByb3BlcnR5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2xvYWRlci93aW5kb3ctY2xlYXJpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9s
b2FkZXIvd2luZG93LWNsZWFyaW5nLWV4cGVjdGVkLnR4dAppbmRleCBjNzZiYjY1OGZhZTc1ZTg0
NmQ1YmE1Yzk4NTAxNTY4MjA0MGE3ZWY2Li5jOGM2ZTcxYTAxYzZjOGE2MDdiNzliOWIxNmMyNTYx
MTYzMWFjOWQ1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci93aW5kb3ctY2xl
YXJpbmctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3dpbmRvdy1j
bGVhcmluZy1leHBlY3RlZC50eHQKQEAgLTcsMyArNyw1IEBAIFBBU1M6IGVsZW1lbnQgMCBpbiB0
aGUgd2luZG93J3MgcHJvdG90eXBlIGNoYWluIHdhcyBjbGVhcmVkCiBQQVNTOiBlbGVtZW50IDEg
aW4gdGhlIHdpbmRvdydzIHByb3RvdHlwZSBjaGFpbiB3YXMgY2xlYXJlZAogCiBQQVNTOiBlbGVt
ZW50IDIgaW4gdGhlIHdpbmRvdydzIHByb3RvdHlwZSBjaGFpbiB3YXMgY2xlYXJlZAorCitQQVNT
OiBlbGVtZW50IDMgaW4gdGhlIHdpbmRvdydzIHByb3RvdHlwZSBjaGFpbiB3YXMgY2xlYXJlZApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1mcmFtZS1h
Y2Nlc3MtY2FsbC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L2Nyb3NzLWZyYW1lLWFjY2Vzcy1jYWxsLWV4cGVjdGVkLnR4dAppbmRleCAyZjRmZGQ1NjY0MmNh
MTc3NjdiZTM3Y2VlOGUzNTkxNDVkNTc1ZWFjLi45ZjVhZjZiMDIyYTljNDZiYWRjYzcxODY2YWYy
MzZjNDg3ZDU5YjZiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L2Nyb3NzLWZyYW1lLWFjY2Vzcy1jYWxsLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLWZyYW1lLWFjY2Vzcy1jYWxsLWV4cGVjdGVkLnR4dApA
QCAtMjYsNiArMjYsNyBAQCBDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTogQmxvY2tlZCBhIGZyYW1l
IHdpdGggb3JpZ2luICJodHRwOi8vMTI3LjAuMC4xOjgwMDAiIGZybwogQ09OU09MRSBNRVNTQUdF
OiBsaW5lIDE6IEJsb2NrZWQgYSBmcmFtZSB3aXRoIG9yaWdpbiAiaHR0cDovLzEyNy4wLjAuMTo4
MDAwIiBmcm9tIGFjY2Vzc2luZyBhIGZyYW1lIHdpdGggb3JpZ2luICJodHRwOi8vbG9jYWxob3N0
OjgwMDAiLiBQcm90b2NvbHMsIGRvbWFpbnMsIGFuZCBwb3J0cyBtdXN0IG1hdGNoLgogQ09OU09M
RSBNRVNTQUdFOiBsaW5lIDE6IEJsb2NrZWQgYSBmcmFtZSB3aXRoIG9yaWdpbiAiaHR0cDovLzEy
Ny4wLjAuMTo4MDAwIiBmcm9tIGFjY2Vzc2luZyBhIGZyYW1lIHdpdGggb3JpZ2luICJodHRwOi8v
bG9jYWxob3N0OjgwMDAiLiBQcm90b2NvbHMsIGRvbWFpbnMsIGFuZCBwb3J0cyBtdXN0IG1hdGNo
LgogQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6IEJsb2NrZWQgYSBmcmFtZSB3aXRoIG9yaWdpbiAi
aHR0cDovLzEyNy4wLjAuMTo4MDAwIiBmcm9tIGFjY2Vzc2luZyBhIGZyYW1lIHdpdGggb3JpZ2lu
ICJodHRwOi8vbG9jYWxob3N0OjgwMDAiLiBQcm90b2NvbHMsIGRvbWFpbnMsIGFuZCBwb3J0cyBt
dXN0IG1hdGNoLgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6IEJsb2NrZWQgYSBmcmFtZSB3aXRo
IG9yaWdpbiAiaHR0cDovLzEyNy4wLjAuMTo4MDAwIiBmcm9tIGFjY2Vzc2luZyBhIGZyYW1lIHdp
dGggb3JpZ2luICJodHRwOi8vbG9jYWxob3N0OjgwMDAiLiBQcm90b2NvbHMsIGRvbWFpbnMsIGFu
ZCBwb3J0cyBtdXN0IG1hdGNoLgogQ09OU09MRSBNRVNTQUdFOiBsaW5lIDEwOiBCbG9ja2VkIGEg
ZnJhbWUgd2l0aCBvcmlnaW4gImh0dHA6Ly8xMjcuMC4wLjE6ODAwMCIgZnJvbSBhY2Nlc3Npbmcg
YSBmcmFtZSB3aXRoIG9yaWdpbiAiaHR0cDovL2xvY2FsaG9zdDo4MDAwIi4gUHJvdG9jb2xzLCBk
b21haW5zLCBhbmQgcG9ydHMgbXVzdCBtYXRjaC4KIAogCkBAIC00NSw2ICs0Niw3IEBAIFBBU1M6
IHdpbmRvdy5idG9hLmNhbGwodGFyZ2V0V2luZG93LCAnc3RyaW5nJykgc2hvdWxkIGJlICd1bmRl
ZmluZWQnIGFuZCBpcy4KIFBBU1M6IHdpbmRvdy5vcGVuLmNhbGwodGFyZ2V0V2luZG93LCAnJykg
c2hvdWxkIGJlICd1bmRlZmluZWQnIGFuZCBpcy4KIFBBU1M6IHdpbmRvdy5hZGRFdmVudExpc3Rl
bmVyLmNhbGwodGFyZ2V0V2luZG93LCAnbG9hZCcsIG51bGwsIGZhbHNlKTsgc2hvdWxkIGJlICd1
bmRlZmluZWQnIGFuZCBpcy4KIFBBU1M6IHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyLmNhbGwo
dGFyZ2V0V2luZG93LCAnbG9hZCcsIG51bGwsIGZhbHNlKTsgc2hvdWxkIGJlICd1bmRlZmluZWQn
IGFuZCBpcy4KK1BBU1M6IHdpbmRvdy5kaXNwYXRjaEV2ZW50LmNhbGwodGFyZ2V0V2luZG93LCBj
bGlja0V2ZW50KTsgc2hvdWxkIGJlICd1bmRlZmluZWQnIGFuZCBpcy4KIFBBU1M6IHdpbmRvdy5j
bGVhclRpbWVvdXQuY2FsbCh0YXJnZXRXaW5kb3csIDApOyBzaG91bGQgYmUgJ3VuZGVmaW5lZCcg
YW5kIGlzLgogUEFTUzogd2luZG93LmNsZWFySW50ZXJ2YWwuY2FsbCh0YXJnZXRXaW5kb3csIDAp
OyBzaG91bGQgYmUgJ3VuZGVmaW5lZCcgYW5kIGlzLgogUEFTUzogd2luZG93LnByaW50LmNhbGwo
dGFyZ2V0V2luZG93KTsgc2hvdWxkIGJlICd1bmRlZmluZWQnIGFuZCBpcy4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3MtZnJhbWUtYWNjZXNzLWNhbGwu
aHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3MtZnJhbWUtYWNjZXNz
LWNhbGwuaHRtbAppbmRleCA1ZGFjYmVjYzAxNTE2ZGNlZjBlZTMyOTEwNzQ2NTFmM2IyNTQyZWFi
Li44OTM3ZTZiYWQyYzU1MTQ0NmY4MTMzZTZlMjkxYjg3YzIxNThhZjVmIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLWZyYW1lLWFjY2Vzcy1jYWxsLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1mcmFtZS1hY2Nl
c3MtY2FsbC5odG1sCkBAIC00Miw2ICs0Miw4IEBAIHdpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigp
CiAgICAgLy8gVGhlc2UgYWx3YXlzIHJldHVybiB1bmRlZmluZWQgc28gd2UgdXNlIHRoZSBlcnJv
ciBjb25zb2xlIHRvIGRldGVjdCBmYWlsdXJlCiAgICAgc2hvdWxkQmUoIndpbmRvdy5hZGRFdmVu
dExpc3RlbmVyLmNhbGwodGFyZ2V0V2luZG93LCAnbG9hZCcsIG51bGwsIGZhbHNlKTsiLCAidW5k
ZWZpbmVkIik7CiAgICAgc2hvdWxkQmUoIndpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyLmNhbGwo
dGFyZ2V0V2luZG93LCAnbG9hZCcsIG51bGwsIGZhbHNlKTsiLCAidW5kZWZpbmVkIik7CisgICAg
Y2xpY2tFdmVudCA9IG5ldyBFdmVudCgiY2xpY2siKTsKKyAgICBzaG91bGRCZSgid2luZG93LmRp
c3BhdGNoRXZlbnQuY2FsbCh0YXJnZXRXaW5kb3csIGNsaWNrRXZlbnQpOyIsICJ1bmRlZmluZWQi
KTsKICAgICBzaG91bGRCZSgid2luZG93LmNsZWFyVGltZW91dC5jYWxsKHRhcmdldFdpbmRvdywg
MCk7IiwgInVuZGVmaW5lZCIpOwogICAgIHNob3VsZEJlKCJ3aW5kb3cuY2xlYXJJbnRlcnZhbC5j
YWxsKHRhcmdldFdpbmRvdywgMCk7IiwgInVuZGVmaW5lZCIpOwogICAgIHNob3VsZEJlKCJ3aW5k
b3cucHJpbnQuY2FsbCh0YXJnZXRXaW5kb3cpOyIsICJ1bmRlZmluZWQiKTsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9kb20vaW50
ZXJmYWNlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvZG9tL2ludGVyZmFjZXMtZXhwZWN0ZWQudHh0CmluZGV4IDQ2NjE4ZWY2
MjAzNjI3MzA2MTIyMDc3NTRlZjI3MzIzYWI2ZjcwODguLjY3ZDA3ODg1ZTQzYTdlZDBmMzA2Y2Ey
NmI0MjU4Njc3MmZhNzEyOWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9kb20vaW50ZXJmYWNlcy1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2RvbS9pbnRl
cmZhY2VzLWV4cGVjdGVkLnR4dApAQCAtMzc5OSwxNCArMzc5OSwxMCBAQCBGQUlMIERyYWdFdmVu
dCBpbnRlcmZhY2Ugb2JqZWN0IG5hbWUgYXNzZXJ0X293bl9wcm9wZXJ0eTogc2VsZiBkb2VzIG5v
dCBoYXZlIG93bgogRkFJTCBEcmFnRXZlbnQgaW50ZXJmYWNlOiBleGlzdGVuY2UgYW5kIHByb3Bl
cnRpZXMgb2YgaW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QgYXNzZXJ0X293bl9wcm9wZXJ0eTog
c2VsZiBkb2VzIG5vdCBoYXZlIG93biBwcm9wZXJ0eSAiRHJhZ0V2ZW50IiBleHBlY3RlZCBwcm9w
ZXJ0eSAiRHJhZ0V2ZW50IiBtaXNzaW5nCiBGQUlMIERyYWdFdmVudCBpbnRlcmZhY2U6IGV4aXN0
ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdCdzICJjb25z
dHJ1Y3RvciIgcHJvcGVydHkgYXNzZXJ0X293bl9wcm9wZXJ0eTogc2VsZiBkb2VzIG5vdCBoYXZl
IG93biBwcm9wZXJ0eSAiRHJhZ0V2ZW50IiBleHBlY3RlZCBwcm9wZXJ0eSAiRHJhZ0V2ZW50IiBt
aXNzaW5nCiBGQUlMIERyYWdFdmVudCBpbnRlcmZhY2U6IGF0dHJpYnV0ZSBkYXRhVHJhbnNmZXIg
YXNzZXJ0X293bl9wcm9wZXJ0eTogc2VsZiBkb2VzIG5vdCBoYXZlIG93biBwcm9wZXJ0eSAiRHJh
Z0V2ZW50IiBleHBlY3RlZCBwcm9wZXJ0eSAiRHJhZ0V2ZW50IiBtaXNzaW5nCi1GQUlMIFdpbmRv
dyBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBpbnRlcmZhY2Ugb2JqZWN0
IGFzc2VydF9lcXVhbHM6IHByb3RvdHlwZSBvZiBXaW5kb3cgaXMgbm90IEV2ZW50VGFyZ2V0IGV4
cGVjdGVkIGZ1bmN0aW9uICJmdW5jdGlvbiBFdmVudFRhcmdldCgpIHsKLSAgICBbbmF0aXZlIGNv
ZGVdCi19IiBidXQgZ290IGZ1bmN0aW9uICJmdW5jdGlvbiAoKSB7Ci0gICAgW25hdGl2ZSBjb2Rl
XQotfSIKK1BBU1MgV2luZG93IGludGVyZmFjZTogZXhpc3RlbmNlIGFuZCBwcm9wZXJ0aWVzIG9m
IGludGVyZmFjZSBvYmplY3QgCiBQQVNTIFdpbmRvdyBpbnRlcmZhY2Ugb2JqZWN0IGxlbmd0aCAK
IFBBU1MgV2luZG93IGludGVyZmFjZSBvYmplY3QgbmFtZSAKLUZBSUwgV2luZG93IGludGVyZmFj
ZTogZXhpc3RlbmNlIGFuZCBwcm9wZXJ0aWVzIG9mIGludGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0
IGFzc2VydF9lcXVhbHM6IENsYXNzIG5hbWUgZm9yIHByb3RvdHlwZSBvZiBXaW5kb3cucHJvdG90
eXBlIGlzIG5vdCAiV2luZG93UHJvcGVydGllcyIgZXhwZWN0ZWQgIltvYmplY3QgV2luZG93UHJv
cGVydGllc10iIGJ1dCBnb3QgIltvYmplY3QgT2JqZWN0XSIKK0ZBSUwgV2luZG93IGludGVyZmFj
ZTogZXhpc3RlbmNlIGFuZCBwcm9wZXJ0aWVzIG9mIGludGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0
IGFzc2VydF9lcXVhbHM6IENsYXNzIG5hbWUgZm9yIHByb3RvdHlwZSBvZiBXaW5kb3cucHJvdG90
eXBlIGlzIG5vdCAiV2luZG93UHJvcGVydGllcyIgZXhwZWN0ZWQgIltvYmplY3QgV2luZG93UHJv
cGVydGllc10iIGJ1dCBnb3QgIltvYmplY3QgRXZlbnRUYXJnZXRQcm90b3R5cGVdIgogRkFJTCBX
aW5kb3cgaW50ZXJmYWNlOiBleGlzdGVuY2UgYW5kIHByb3BlcnRpZXMgb2YgaW50ZXJmYWNlIHBy
b3RvdHlwZSBvYmplY3QncyAiY29uc3RydWN0b3IiIHByb3BlcnR5IGFzc2VydF9vd25fcHJvcGVy
dHk6IFdpbmRvdy5wcm90b3R5cGUgZG9lcyBub3QgaGF2ZSBvd24gcHJvcGVydHkgImNvbnN0cnVj
dG9yIiBleHBlY3RlZCBwcm9wZXJ0eSAiY29uc3RydWN0b3IiIG1pc3NpbmcKIFBBU1MgV2luZG93
IGludGVyZmFjZTogYXR0cmlidXRlIHNlbGYgCiBQQVNTIFdpbmRvdyBpbnRlcmZhY2U6IGF0dHJp
YnV0ZSBuYW1lIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>271317</attachid>
            <date>2016-02-14 18:14:49 -0800</date>
            <delta_ts>2016-02-14 18:17:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-154170-20160214181428.patch</filename>
            <type>text/plain</type>
            <size>103703</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk2NTYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzNkOTZmZDBhYWExYWUz
NDg1ZmJiNGM3ODU3YWNjMDNiMDlmYWRmMC4uNjdiMzI2ZWVkOWFjNDc0ZWU3ODNlOGQ0NDk0NmM0
NTQ2M2NiOThkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk4IEBACisyMDE2LTAyLTEyICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgV2luZG93IGFuZCBXb3JrZXJH
bG9iYWxTY29wZSBzaG91bGQgaW5oZXJpdCBFdmVudFRhcmdldAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU0MTcwCisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS8yNDY0MjM3Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAg
ICAgICBXaW5kb3cgYW5kIFdvcmtlckdsb2JhbFNjb3BlIHNob3VsZCBpbmhlcml0IEV2ZW50VGFy
Z2V0IGluc3RlYWQgb2YKKyAgICAgICAgZHVwbGljYXRpbmcgdGhlIEV2ZW50VGFyZ2V0IEFQSSBp
biB0aGVpciBJREwuIFRoZXNlIHdlcmUgdGhlIGxhc3QKKyAgICAgICAgaW50ZXJmYWNlcyB0aGF0
IG5lZWRlZCBmaXhpbmcuIFRoZSBuZXh0IHN0ZXAgd2lsbCBiZSB0byBnZXQgcmlkCisgICAgICAg
IG9mIHRoZSBbRXZlbnRUYXJnZXRdIElETCBleHRlbmRlZCBhdHRyaWJ1dGUgYW5kIHJlbHkgZW50
aXJlbHkKKyAgICAgICAgb24gdGhlIEV2ZW50VGFyZ2V0IGluaGVyaXRhbmNlLgorCisgICAgICAg
IFRlc3Q6CisgICAgICAgIC0gZmFzdC9mcmFtZXMvZGV0YWNoZWQtZnJhbWUtZXZlbnRMaXN0ZW5l
ci5odG1sCisgICAgICAgIC0gQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgQWRkIEpTRXZlbnRU
YXJnZXRDdXN0b20uaCBoZWFkZXIgdG8gdGhlIHByb2plY3QuCisKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHA6CisgICAgICAgIERyb3AgY3VzdG9tIGJpbmRpbmdz
IGZvciBXaW5kb3cncyBhZGRFdmVudExpc3RlbmVyKCkgYW5kCisgICAgICAgIHJlbW92ZUV2ZW50
TGlzdGVuZXIoKS4gVGhlIG9ubHkgcmVhc29uIHRoZXNlIG5lZWRlZCBjdXN0b20KKyAgICAgICAg
Y29kZSB3YXMgdG8gYWRkIGEgY2hlY2sgZm9yIGZyYW1lbGVzcyB3aW5kb3dzLiBUaGUgZnJhbWVs
ZXNzCisgICAgICAgIFdpbmRvdyBjaGVja3Mgd2FzIG1vdmVkIHRvIHRoZSByZXNwZWN0aXZlIG1l
dGhvZHMgaW4gdGhlCisgICAgICAgIEpTRXZlbnRUYXJnZXQgZ2VuZXJhdGVkIGJpbmRpbmdzLgor
CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU0RPTVdpbmRvd1NoZWxsOjpzZXRXaW5kb3cpOgorICAgICAgICBTZXQgV2luZG93
UHJvdG90eXBlJ3MgcHJvdG90eXBlIHRvIEV2ZW50VGFyZ2V0J3MgcHJvdG90eXBlLgorCisgICAg
ICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5oOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTRGljdGlvbmFyeS5jcHA6CisgICAgICAgIEluY2x1ZGUgIkRPTVdpbmRvdy5oIiB0byBm
aXggdGhlIGJ1aWxkLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEN1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0V2ZW50VGFyZ2V0Ojp0b1dyYXBwZWQpOgorICAg
ICAgICBIYW5kbGUgRE9NV2luZG93IGFuZCBXb3JrZXJHbG9iYWxTY29wZSBleHBsaWNpdGVseSBp
biB0b1dyYXBwZWQoKQorICAgICAgICBhbmQgZ2V0IHJpZCBvZiB0aGUgRE9NX0VWRU5UX1RBUkdF
VF9JTlRFUkZBQ0VTX0ZPUl9FQUNIKFRSWV9UT19VTldSQVBfV0lUSF9JTlRFUkZBQ0UpCisgICAg
ICAgIG5vdyB0aGF0IGFsbCBpbnRlcmZhY2VzIGluaGVyaXQgRXZlbnRUYXJnZXQgd2hlbiB0aGV5
IHNob3VsZC4KKyAgICAgICAgVGhlIHJlYXNvbiBET01XaW5kb3cgYW5kIFdvcmtlckdsb2JhbFNj
b3BlIHN0aWxsIG5lZWQgc3BlY2lhbAorICAgICAgICBoYW5kbGluZyBpcyBiZWNhdXNlIHRoZWly
IHdyYXBwZXJzIChKU0RPTVdpbmRvdyAvCisgICAgICAgIEpTV29ya2VyR2xvYmFsU2NvcGUpIGRv
IG5vdCBzdWJjbGFzcyBKU0V2ZW50VGFyZ2V0LgorCisgICAgICAgIChXZWJDb3JlOjpKU0V2ZW50
VGFyZ2V0T3JHbG9iYWxTY29wZTo6Y3JlYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0V2
ZW50VGFyZ2V0Q3VzdG9tLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNFdmVudFRhcmdl
dE9yR2xvYmFsU2NvcGU6OndyYXBwZWQpOgorICAgICAgICAoV2ViQ29yZTo6SlNFdmVudFRhcmdl
dE9yR2xvYmFsU2NvcGU6Om9wZXJhdG9yIEpTQzo6SlNPYmplY3QmKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTRXZlbnRUYXJnZXRPckdsb2JhbFNjb3BlOjpKU0V2ZW50VGFyZ2V0T3JHbG9iYWxTY29w
ZSk6CisgICAgICAgIEFkZCBhIHdyYXBwZXIgdHlwZSBmb3IgSlNFdmVudFRhcmdldCAvIEpTRE9N
V2luZG93IGFuZAorICAgICAgICBKU1dvcmtlckdsb2JhbFNjb3BlIGZvciB1c2UgaW4gdGhlIGdl
bmVyYXRlZCBiaW5kaW5ncy4gVGhpcyBpcworICAgICAgICBuZWVkZWQgYmVjYXVzZSBKU0RPTVdp
bmRvdyBhbmQgSlNXb3JrZXJHbG9iYWxTY29wZSBkbyBub3QKKyAgICAgICAgc3ViY2xhc3MgSlNF
dmVudFRhcmdldC4gU3ViY2xhc3NpbmcgSlNFdmVudFRhcmdldCB3b3VsZCBiZQorICAgICAgICBj
b21wbGljYXRlZCBmb3IgdGhlbSBiZWNhdXNlIHRoZXkgYWxyZWFkeSBzdWJjbGFzcworICAgICAg
ICBKU0RPTVdpbmRvd0Jhc2UgLyBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZSwgd2hpY2ggc3ViY2xh
c3NlcworICAgICAgICBKU0RPTUdsb2JhbE9iamVjdC4KKworICAgICAgICAqIGJpbmRpbmdzL2pz
L1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2Ny
aXB0Q29udHJvbGxlcjo6aW5pdFNjcmlwdCk6CisgICAgICAgIFNldCBXb3JrZXJHbG9iYWxTY29w
ZVByb3RvdHlwZSdzIHByb3RvdHlwZSB0byBFdmVudFRhcmdldCdzIHByb3RvdHlwZS4KKworICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoU2hv
dWxkR2VuZXJhdGVUb0pTRGVjbGFyYXRpb24pOgorICAgICAgICBEbyBub3QgZ2VuZXJhdGUgdG8g
dG9KUygpIGltcGxlbWVudGF0aW9uIGZvciBpbnRlcmZhY2VzIHRoYXQgdXNlCisgICAgICAgIHRo
ZSBbQ3VzdG9tUHJveHlUb0pTT2JqZWN0XSBJREwgZXh0ZW5kZWQgYXR0cmlidXRlLCBldmVuIGlm
IHRoZXkKKyAgICAgICAgaW5oZXJpdCBFdmVudFRhcmdldC4KKworICAgICAgICAoR2V0Q2FzdGlu
Z0hlbHBlckZvclRoaXNPYmplY3QpOgorICAgICAgICBUbyBpbml0aWFsaXplIGNhc3RlZFRoaXMg
ZnJvbSB0aGlzVmFsdWUgSlNWYWx1ZSwgd2Ugbm93IHVzZSB0aGUKKyAgICAgICAgSlNFdmVudFRh
cmdldE9yR2xvYmFsU2NvcGUgd3JhcHBlciBmb3IgdGhlIEV2ZW50VGFyZ2V0CisgICAgICAgIGlt
cGxlbWVudGF0aW9uLiBUaGlzIGlzIHRvIHdvcmsgYXJvdW5kIHRoZSBmYWN0IHRoYXQgSlNET01X
aW5kb3cKKyAgICAgICAgYW5kIEpTV29ya2VyR2xvYmFsU2NvcGUgZG8gbm90IHN1YmNsYXNzIEpT
RXZlbnRUYXJnZXQuCisKKyAgICAgICAgKEdlbmVyYXRlRnVuY3Rpb25DYXN0ZWRUaGlzKToKKyAg
ICAgICAgLSBEcm9wIGNvZGUgaGFuZGxpbmcgW1dvcmtlckdsb2JhbFNjb3BlXSBJREwgZXh0ZW5k
ZWQgYXR0cmlidXRlCisgICAgICAgICAgYXMgdGhlcmUgaXMgbm8gc3VjaCBhdHRyaWJ1dGUuCisg
ICAgICAgIC0gVXNlIGF1dG8gaW5zdGVhZCBvZiBhdXRvKiB0eXBlIGZvciBjYXN0ZWRUaGlzIGJl
Y2F1c2UKKyAgICAgICAgICBKU0V2ZW50VGFyZ2V0T3JHbG9iYWxTY29wZTo6Y3JlYXRlKCkgcmV0
dXJucyBhIHVuaXF1ZV9wdHIuCisgICAgICAgIC0gRG8gbm90IGNoZWNrIHRoYXQgY2FzdGVkVGhp
cyBpbmhlcml0cyBKU0V2ZW50VGFyZ2V0IGluIHRoZQorICAgICAgICAgIEV2ZW50VGFyZ2V0IGJp
bmRpbmdzIGNvZGUgYXMgdGhpcyBubyBsb25nZXIgaG9sZHMgdHJ1ZS4KKworICAgICAgICAoR2Vu
ZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgIEdlbmVyYXRlIGZyYW1lbGVzcyB3aW5kb3co
KSBhbmQgc2VjdXJpdHkgY2hlY2tzIGZvciBFdmVudFRhcmdldAorICAgICAgICBtZXRob2RzIHdo
ZW4gdGhpc1ZhbHVlIGlzIGEgSlNET01XaW5kb3cuCisKKyAgICAgICAgKiBkb20vRXZlbnRUYXJn
ZXQuaWRsOgorICAgICAgICBBZGQgW0pTQ3VzdG9tSGVhZGVyXSBJREwgRXh0ZW5kZWQgYXR0cmli
dXRlIGFzIHdlIG5lZWQgYSBoZWFkZXIKKyAgICAgICAgdG8gZXhwb3NlIEpTRXZlbnRUYXJnZXRP
ckdsb2JhbFNjb3BlIGNsYXNzLgorCisgICAgICAgICogcGFnZS9ET01XaW5kb3cuaWRsOgorICAg
ICAgICAqIHdvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaWRsOgorICAgICAgICBJbmhlcml0IEV2
ZW50VGFyZ2V0IGFuZCBzdG9wIGR1cGxpY2F0aW5nIHRoZSBFdmVudFRhcmdldCBBUEkuCisgICAg
ICAgIFRoaXMgbWF0Y2hlcyB0aGUgSFRNTCBzcGVjaWZpY2F0aW9uLgorCiAyMDE2LTAyLTEzICBB
bnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBGYWN0b3IgY2xhc3Mg
Y2hhbmdlIHN0eWxlIGludmFsaWRhdGlvbiBjb2RlIGludG8gYSBjbGFzcwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGU5ZmU1MTFj
ODNiMmU2ZDdlN2ExZmYxYjU1OTY4MDA0ZGFmOTFiZWUuLjI3YWQwMjliMmE2ZmY2NjIzMDRhNzQ3
NGJjOTdjNTZkNWRkOWY3YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE3MDksNiArMTcwOSw3IEBACiAJCTQ2NjlCMjg3MUI4
NTJBMEIwMDBGOTA1RiAvKiBKU0RPTU5hbWVkRmxvd0NvbGxlY3Rpb25DdXN0b20uY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZGMjc2OEUxQjg1Mjk3
RjAwNUMyNTU2IC8qIEpTRE9NTmFtZWRGbG93Q29sbGVjdGlvbkN1c3RvbS5jcHAgKi87IH07CiAJ
CTQ2NzMwMjAyMUM0RUZFNzgwMEJDQjM1NyAvKiBJZ25vcmVPcGVuc0R1cmluZ1VubG9hZENvdW50
SW5jcmVtZW50ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ2NzMwMjAxMUM0RUZFNjYwMEJDQjM1NyAvKiBJZ25vcmVPcGVuc0R1cmluZ1VubG9hZENv
dW50SW5jcmVtZW50ZXIuaCAqLzsgfTsKIAkJNDY4OUYxQUYxMjY3QkFFMTAwRThEMzgwIC8qIEZp
bGVNZXRhZGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDY4OUYxQUUxMjY3QkFFMTAwRThEMzgwIC8qIEZpbGVNZXRhZGF0YS5oICovOyB9OworCQk0
NkI2M0Y2QzFDNkU4RDE5MDAyRTkxNEIgLyogSlNFdmVudFRhcmdldEN1c3RvbS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCNjNGNkIxQzZFOENERjAw
MkU5MTRCIC8qIEpTRXZlbnRUYXJnZXRDdXN0b20uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkM4M0VGRDFBOUJCRTI5MDBBNzlBNDEgLyogR2Vv
Tm90aWZpZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDZDODNFRkIxQTlCQkUyOTAwQTc5QTQxIC8qIEdlb05vdGlmaWVyLmNwcCAqLzsgfTsKIAkJ
NDZDODNFRkUxQTlCQkUyOTAwQTc5QTQxIC8qIEdlb05vdGlmaWVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkM4M0VGQzFBOUJCRTI5MDBBNzlBNDEg
LyogR2VvTm90aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk0NkRCN0Q1NzFCMjBGRTQ2MDA1NjUxQjIgLyogVk5vZGVUcmFja2VyQ29jb2Eu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZEQjdE
NTYxQjIwRkUzQzAwNTY1MUIyIC8qIFZOb2RlVHJhY2tlckNvY29hLmNwcCAqLzsgfTsKQEAgLTkx
OTIsNiArOTE5Myw3IEBACiAJCTQ2M0VCNjIxMUI4Nzg5Q0IwMDk2RUQ1MSAvKiBUYWdDb2xsZWN0
aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRhZ0NvbGxlY3Rpb24uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY3MzAyMDExQzRFRkU2NjAwQkNCMzU3IC8q
IElnbm9yZU9wZW5zRHVyaW5nVW5sb2FkQ291bnRJbmNyZW1lbnRlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBJZ25vcmVPcGVuc0R1cmluZ1VubG9hZENvdW50SW5jcmVtZW50
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4OUYxQUUxMjY3QkFFMTAwRThE
MzgwIC8qIEZpbGVNZXRhZGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBG
aWxlTWV0YWRhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZCNjNGNkIxQzZF
OENERjAwMkU5MTRCIC8qIEpTRXZlbnRUYXJnZXRDdXN0b20uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNFdmVudFRhcmdldEN1c3RvbS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0NkM4M0VGQjFBOUJCRTI5MDBBNzlBNDEgLyogR2VvTm90aWZpZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2VvTm90aWZpZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkM4M0VGQzFBOUJCRTI5MDBBNzlBNDEgLyogR2Vv
Tm90aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2VvTm90aWZpZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZEQjdENTYxQjIwRkUzQzAwNTY1MUIy
IC8qIFZOb2RlVHJhY2tlckNvY29hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFZOb2RlVHJhY2tlckNvY29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTIyMTk3LDYgKzIyMTk5LDcgQEAKIAkJCQlGM0Q0NjE0NjExNjFENTMyMDBDQTBEMDkgLyog
SlNFcnJvckhhbmRsZXIuY3BwICovLAogCQkJCUYzRDQ2MTQ3MTE2MUQ1MzIwMENBMEQwOSAvKiBK
U0Vycm9ySGFuZGxlci5oICovLAogCQkJCUJDNjA5MDFFMEU5MUI4RUMwMDBDNjhCNSAvKiBKU0V2
ZW50VGFyZ2V0Q3VzdG9tLmNwcCAqLywKKwkJCQk0NkI2M0Y2QjFDNkU4Q0RGMDAyRTkxNEIgLyog
SlNFdmVudFRhcmdldEN1c3RvbS5oICovLAogCQkJCTMzMTRBQ0U5MTA4OTIwODYwMDBGMEU1NiAv
KiBKU0V4Y2VwdGlvbkJhc2UuY3BwICovLAogCQkJCTMzMTRBQ0VBMTA4OTIwODYwMDBGMEU1NiAv
KiBKU0V4Y2VwdGlvbkJhc2UuaCAqLywKIAkJCQk4RjkzNEQ4NDExODlGMUVFMDA1MDhENUQgLyog
SlNNYWluVGhyZWFkRXhlY1N0YXRlLmNwcCAqLywKQEAgLTI0OTg3LDYgKzI0OTkwLDcgQEAKIAkJ
CQkyRURFRjFGNzEyMUIwRUZDMDA3MjZEQjIgLyogQmxvYlJlZ2lzdHJ5SW1wbC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMkVCNEJDRDMxMjFGMDNFMzAwRUM0ODg1IC8qIEJsb2JSZXNvdXJjZUhhbmRs
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc2RDZDN0YxMjJCOEEzRDAwMUZEMUY3IC8qIEJsb2JV
UkwuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2QjYzRjZDMUM2RThEMTkwMDJFOTE0QiAvKiBKU0V2
ZW50VGFyZ2V0Q3VzdG9tLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0YxOTlCRTA4MjQ1RTU5MDAx
RTlBQkMgLyogQmxvY2tFeGNlcHRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzVFQjVFMTBF
ODFCRTg3MDBCMjU5NjUgLyogQm9yZGVyRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTg5NTU2
RUQxOEQ0QTQ0MDAwNzY0QjAzIC8qIEJvcmRlckVkZ2UuaCBpbiBIZWFkZXJzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCmluZGV4IDEx
NWRhZTU2NjI3ZTJmZDY3OTMxNDA4Mjg0ZTFlOWMxOGQwYTM2ZTQuLmE1MThmYzdiZjViMzEyYmM3
Y2Y2ZTIxOWZmZjk1OWYyZWE4OTgxYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKQEAgLTc1MSwzNCArNzUxLDYgQEAgSlNWYWx1ZSBK
U0RPTVdpbmRvdzo6c2V0SW50ZXJ2YWwoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICByZXR1cm4ganNO
dW1iZXIocmVzdWx0KTsKIH0KIAotSlNWYWx1ZSBKU0RPTVdpbmRvdzo6YWRkRXZlbnRMaXN0ZW5l
cihFeGVjU3RhdGUmIHN0YXRlKQotewotICAgIEZyYW1lKiBmcmFtZSA9IHdyYXBwZWQoKS5mcmFt
ZSgpOwotICAgIGlmICghZnJhbWUpCi0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotCi0g
ICAgSlNWYWx1ZSBsaXN0ZW5lciA9IHN0YXRlLmFyZ3VtZW50KDEpOwotICAgIGlmICghbGlzdGVu
ZXIuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0KLSAgICB3cmFw
cGVkKCkuYWRkRXZlbnRMaXN0ZW5lcihzdGF0ZS5hcmd1bWVudCgwKS50b1N0cmluZygmc3RhdGUp
LT50b0F0b21pY1N0cmluZygmc3RhdGUpLCBKU0V2ZW50TGlzdGVuZXI6OmNyZWF0ZShhc09iamVj
dChsaXN0ZW5lciksIHRoaXMsIGZhbHNlLCBnbG9iYWxPYmplY3QoKS0+d29ybGQoKSksIHN0YXRl
LmFyZ3VtZW50KDIpLnRvQm9vbGVhbigmc3RhdGUpKTsKLSAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKLX0KLQotSlNWYWx1ZSBKU0RPTVdpbmRvdzo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihFeGVjU3Rh
dGUmIHN0YXRlKQotewotICAgIEZyYW1lKiBmcmFtZSA9IHdyYXBwZWQoKS5mcmFtZSgpOwotICAg
IGlmICghZnJhbWUpCi0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotCi0gICAgSlNWYWx1
ZSBsaXN0ZW5lciA9IHN0YXRlLmFyZ3VtZW50KDEpOwotICAgIGlmICghbGlzdGVuZXIuaXNPYmpl
Y3QoKSkKLSAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0KLSAgICB3cmFwcGVkKCkucmVt
b3ZlRXZlbnRMaXN0ZW5lcihzdGF0ZS5hcmd1bWVudCgwKS50b1N0cmluZygmc3RhdGUpLT50b0F0
b21pY1N0cmluZygmc3RhdGUpLCBKU0V2ZW50TGlzdGVuZXI6OmNyZWF0ZShhc09iamVjdChsaXN0
ZW5lciksIHRoaXMsIGZhbHNlLCBnbG9iYWxPYmplY3QoKS0+d29ybGQoKSkucHRyKCksIHN0YXRl
LmFyZ3VtZW50KDIpLnRvQm9vbGVhbigmc3RhdGUpKTsKLSAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKLX0KLQogRE9NV2luZG93KiBKU0RPTVdpbmRvdzo6dG9XcmFwcGVkKEpTVmFsdWUgdmFsdWUp
CiB7CiAgICAgaWYgKCF2YWx1ZS5pc09iamVjdCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcAppbmRleCAxMTIwNjY4NTIyMjI5ZjdkMTZkZWY4
NjlkZjkxNzk2N2Y1MWNhNzA0Li42NjAzNTQwNzI5NzVlMzJiN2VlMTU4MDUyZDUxY2FkZjE3MDM1
OGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1No
ZWxsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxs
LmNwcApAQCAtMzIsNyArMzIsNyBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiR0ND
b250cm9sbGVyLmgiCiAjaW5jbHVkZSAiSlNET01XaW5kb3cuaCIKLSNpbmNsdWRlICJET01XaW5k
b3cuaCIKKyNpbmNsdWRlICJKU0V2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJv
bGxlci5oIgogI2luY2x1ZGUgPGhlYXAvU3Ryb25nSW5saW5lcy5oPgogI2luY2x1ZGUgPHJ1bnRp
bWUvSlNPYmplY3QuaD4KQEAgLTg1LDYgKzg1LDcgQEAgdm9pZCBKU0RPTVdpbmRvd1NoZWxsOjpz
ZXRXaW5kb3coUGFzc1JlZlB0cjxET01XaW5kb3c+IGRvbVdpbmRvdykKICAgICBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSA9IEpTRE9NV2luZG93OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIDAsIHByb3RvdHlw
ZS5nZXQoKSk7CiAgICAgSlNET01XaW5kb3cqIGpzRE9NV2luZG93ID0gSlNET01XaW5kb3c6OmNy
ZWF0ZSh2bSwgc3RydWN0dXJlLCAqZG9tV2luZG93LCB0aGlzKTsKICAgICBwcm90b3R5cGUtPnN0
cnVjdHVyZSgpLT5zZXRHbG9iYWxPYmplY3Qodm0sIGpzRE9NV2luZG93KTsKKyAgICBwcm90b3R5
cGUtPnN0cnVjdHVyZSgpLT5zZXRQcm90b3R5cGVXaXRob3V0VHJhbnNpdGlvbih2bSwgSlNFdmVu
dFRhcmdldDo6Z2V0UHJvdG90eXBlKHZtLCBqc0RPTVdpbmRvdykpOwogICAgIHNldFdpbmRvdyh2
bSwganNET01XaW5kb3cpOwogICAgIEFTU0VSVChqc0RPTVdpbmRvdy0+Z2xvYmFsT2JqZWN0KCkg
PT0ganNET01XaW5kb3cpOwogICAgIEFTU0VSVChwcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpID09
IGpzRE9NV2luZG93KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NV2luZG93U2hlbGwuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93
U2hlbGwuaAppbmRleCAwMWYwNDhkNjdhNGY1YjhkMGYxZWU5NjlkNWQyNzU0NWYxMjc0NmQwLi5i
ZGZkZDJmZGQyZTM3NWJjZjdhM2FmMzUxOTkwYjJkMmZmN2MzMjlkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5oCkBAIC0yOSwxMiArMjksMTIgQEAK
ICNpZm5kZWYgSlNET01XaW5kb3dTaGVsbF9oCiAjZGVmaW5lIEpTRE9NV2luZG93U2hlbGxfaAog
CisjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiSlNET01XaW5kb3cuaCIKICNpbmNs
dWRlIDxydW50aW1lL0pTUHJveHkuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0gICAgY2xh
c3MgRE9NV2luZG93OwogICAgIGNsYXNzIEZyYW1lOwogCiAgICAgY2xhc3MgSlNET01XaW5kb3dT
aGVsbCA6IHB1YmxpYyBKU0M6OkpTUHJveHkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRGljdGlvbmFyeS5jcHAKaW5kZXggMzM0NmNjZmU2OTkzZmI5NDk1NzVkNzMwODU1ZWQ0ZDc4
Zjk2OGRiMi4uNjYzNGUxNmRmNzNjMzMzNjg3MzU3ZTM3NWFjZGE2N2Y0Y2E1Y2ZkYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RpY3Rpb25hcnkuY3BwCkBAIC0yNyw2ICsyNyw3
IEBACiAjaW5jbHVkZSAiSlNEaWN0aW9uYXJ5LmgiCiAKICNpbmNsdWRlICJBcnJheVZhbHVlLmgi
CisjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRGljdGlvbmFyeS5oIgogI2luY2x1
ZGUgIkpTQ1NTRm9udEZhY2VSdWxlLmgiCiAjaW5jbHVkZSAiSlNET01FcnJvci5oIgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEN1c3RvbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3VzdG9tLmNwcAppbmRl
eCBlOGVhZDFjMWQ0MmYwZGRmZmVlOTY2ZTE4MjBlZDAyNTA4ODJmNGJmLi5lNTc0OTlhOTA0ZGU1
NjY4YTIwYmIwNGJjMGZlNGNhMmJkNTIyM2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3VzdG9tLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDA4LCAyMDE2IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsMTAgKzI2LDE1IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSlNFdmVudFRhcmdldC5oIgogCisjaW5jbHVkZSAi
RE9NV2luZG93LmgiCisjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJFdmVudFRh
cmdldEhlYWRlcnMuaCIKICNpbmNsdWRlICJFdmVudFRhcmdldEludGVyZmFjZXMuaCIKKyNpbmNs
dWRlICJKU0RPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkpTRE9NV2luZG93U2hlbGwuaCIKICNpbmNs
dWRlICJKU0V2ZW50TGlzdGVuZXIuaCIKKyNpbmNsdWRlICJKU1dvcmtlckdsb2JhbFNjb3BlLmgi
CisjaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsK
IApAQCAtNjEsMTIgKzY2LDIzIEBAIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIGV4ZWMsIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEV2ZW50VGFyZ2V0KiB0YXJnCiBFdmVudFRhcmdl
dCogSlNFdmVudFRhcmdldDo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBU
UllfVE9fVU5XUkFQX1dJVEhfSU5URVJGQUNFKERPTVdpbmRvd1NoZWxsKQorICAgIFRSWV9UT19V
TldSQVBfV0lUSF9JTlRFUkZBQ0UoRE9NV2luZG93KQorICAgIFRSWV9UT19VTldSQVBfV0lUSF9J
TlRFUkZBQ0UoV29ya2VyR2xvYmFsU2NvcGUpCiAgICAgVFJZX1RPX1VOV1JBUF9XSVRIX0lOVEVS
RkFDRShFdmVudFRhcmdldCkKLSAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgb25jZSBhbGwgZXZl
bnQgdGFyZ2V0cyBleHRlbmQgRXZlbnRUYXJnZXQKLSAgICBET01fRVZFTlRfVEFSR0VUX0lOVEVS
RkFDRVNfRk9SX0VBQ0goVFJZX1RPX1VOV1JBUF9XSVRIX0lOVEVSRkFDRSkKLSAgICByZXR1cm4g
MDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogI3VuZGVmIFRSWV9UT19VTldSQVBfV0lUSF9J
TlRFUkZBQ0UKIAorc3RkOjp1bmlxdWVfcHRyPEpTRXZlbnRUYXJnZXRXcmFwcGVyPiBqc0V2ZW50
VGFyZ2V0Q2FzdChKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlKQoreworICAgIGlmIChhdXRvKiB0YXJn
ZXQgPSBKU0M6OmpzRHluYW1pY0Nhc3Q8SlNFdmVudFRhcmdldCo+KHRoaXNWYWx1ZSkpCisgICAg
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEpTRXZlbnRUYXJnZXRXcmFwcGVyPih0YXJnZXQt
PndyYXBwZWQoKSwgKnRhcmdldCk7CisgICAgaWYgKGF1dG8qIHdpbmRvdyA9IHRvSlNET01XaW5k
b3codGhpc1ZhbHVlKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8SlNFdmVudFRh
cmdldFdyYXBwZXI+KHdpbmRvdy0+d3JhcHBlZCgpLCAqd2luZG93KTsKKyAgICBpZiAoYXV0byog
c2NvcGUgPSB0b0pTV29ya2VyR2xvYmFsU2NvcGUodGhpc1ZhbHVlKSkKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8SlNFdmVudFRhcmdldFdyYXBwZXI+KHNjb3BlLT53cmFwcGVkKCks
ICpzY29wZSk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRD
dXN0b20uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRDdXN0b20u
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42OGYyYjZhZWFkYTU4OWE2ODVhMThhZDNjMDc4YjA4YTZlY2YxYjg1Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdl
dEN1c3RvbS5oCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEpTRXZlbnRU
YXJnZXRDdXN0b21faAorI2RlZmluZSBKU0V2ZW50VGFyZ2V0Q3VzdG9tX2gKKworI2luY2x1ZGUg
IkpTRE9NQmluZGluZy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIFdyYXBwZXIgdHlw
ZSBmb3IgSlNFdmVudFRhcmdldCdzIGNhc3RlZFRoaXMgYmVjYXVzZSBKU0RPTVdpbmRvdyBhbmQg
SlNXb3JrZXJHbG9iYWxTY29wZSBkbyBub3QgaW5oZXJpdCBKU0V2ZW50VGFyZ2V0LgorY2xhc3Mg
SlNFdmVudFRhcmdldFdyYXBwZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVi
bGljOgorICAgIEpTRXZlbnRUYXJnZXRXcmFwcGVyKEV2ZW50VGFyZ2V0JiB3cmFwcGVkLCBKU0M6
OkpTT2JqZWN0JiB3cmFwcGVyKQorICAgICAgICA6IG1fd3JhcHBlZCh3cmFwcGVkKQorICAgICAg
ICAsIG1fd3JhcHBlcih3cmFwcGVyKQorICAgIHsgfQorCisgICAgRXZlbnRUYXJnZXQmIHdyYXBw
ZWQoKSB7IHJldHVybiBtX3dyYXBwZWQ7IH0KKworICAgIG9wZXJhdG9yIEpTQzo6SlNPYmplY3Qm
KCkgeyByZXR1cm4gbV93cmFwcGVyOyB9CisKK3ByaXZhdGU6CisgICAgRXZlbnRUYXJnZXQmIG1f
d3JhcHBlZDsKKyAgICBKU0M6OkpTT2JqZWN0JiBtX3dyYXBwZXI7Cit9OworCitzdGQ6OnVuaXF1
ZV9wdHI8SlNFdmVudFRhcmdldFdyYXBwZXI+IGpzRXZlbnRUYXJnZXRDYXN0KEpTQzo6SlNWYWx1
ZSB0aGlzVmFsdWUpOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBKU0V2
ZW50VGFyZ2V0Q3VzdG9tX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
V29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggMDlkMTc4YmQxZjNlMjMzNjg5ODU1OTg4
MmQ3MDAzNmZmMTM4NGY3Yy4uZGUyZDAwZWNkM2VmZmQyYmEyZTY5NDZiMTgwYjJkNjIxZDA2MDNh
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29u
dHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0
Q29udHJvbGxlci5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkpTRE9NQmluZGlu
Zy5oIgogI2luY2x1ZGUgIkpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRl
ICJKU0V2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgogI2luY2x1
ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5o
IgpAQCAtODksNiArOTAsNyBAQCB2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3Jp
cHQoKQogICAgICAgICBBU1NFUlQoc3RydWN0dXJlLT5nbG9iYWxPYmplY3QoKSA9PSBtX3dvcmtl
ckdsb2JhbFNjb3BlV3JhcHBlcik7CiAgICAgICAgIEFTU0VSVChtX3dvcmtlckdsb2JhbFNjb3Bl
V3JhcHBlci0+c3RydWN0dXJlKCktPmdsb2JhbE9iamVjdCgpID09IG1fd29ya2VyR2xvYmFsU2Nv
cGVXcmFwcGVyKTsKICAgICAgICAgd29ya2VyR2xvYmFsU2NvcGVQcm90b3R5cGUtPnN0cnVjdHVy
ZSgpLT5zZXRHbG9iYWxPYmplY3QoKm1fdm0sIG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyLmdl
dCgpKTsKKyAgICAgICAgd29ya2VyR2xvYmFsU2NvcGVQcm90b3R5cGUtPnN0cnVjdHVyZSgpLT5z
ZXRQcm90b3R5cGVXaXRob3V0VHJhbnNpdGlvbigqbV92bSwgSlNFdmVudFRhcmdldDo6Z2V0UHJv
dG90eXBlKCptX3ZtLCBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci5nZXQoKSkpOwogICAgICAg
ICBkZWRpY2F0ZWRDb250ZXh0UHJvdG90eXBlLT5zdHJ1Y3R1cmUoKS0+c2V0R2xvYmFsT2JqZWN0
KCptX3ZtLCBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci5nZXQoKSk7CiAgICAgfQogICAgIEFT
U0VSVChtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci0+Z2xvYmFsT2JqZWN0KCkgPT0gbV93b3Jr
ZXJHbG9iYWxTY29wZVdyYXBwZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCBlMmM1MGE4Njk0NzU5OTljM2YzNDZmMDA4
Y2E0MTJhMzI3Y2I0YTM2Li5iOWIxNzQyYjhhYjMxZjAyNTFjMzkyYjc3ZDhhZjU5MTVhZDYzOWI3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbQpAQCAtNTU4LDYgKzU1OCw3IEBAIHN1YiBTaG91bGRHZW5lcmF0ZVRvSlNEZWNsYXJh
dGlvbgogICAgIHJldHVybiAwIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
U3VwcHJlc3NUb0pTT2JqZWN0In0pOwogICAgIHJldHVybiAwIGlmIG5vdCBOZWVkc0ltcGxlbWVu
dGF0aW9uQ2xhc3MoJGludGVyZmFjZSk7CiAgICAgcmV0dXJuIDAgaWYgJGludGVyZmFjZS0+bmFt
ZSBlcSAiQWJzdHJhY3RWaWV3IjsKKyAgICByZXR1cm4gMCBpZiAkaW50ZXJmYWNlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tUHJveHlUb0pTT2JqZWN0In07CiAgICAgcmV0dXJuIDEgaWYg
KCEkaGFzUGFyZW50IG9yICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU0dlbmVy
YXRlVG9KU09iamVjdCJ9IG9yICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0
b21Ub0pTT2JqZWN0In0pOwogICAgIHJldHVybiAxIGlmICRpbnRlcmZhY2UtPnBhcmVudCAmJiAk
aW50ZXJmYWNlLT5wYXJlbnQgZXEgIkV2ZW50VGFyZ2V0IjsKICAgICByZXR1cm4gMDsKQEAgLTE3
MzAsMTcgKzE3MzEsMTMgQEAgc3ViIEdldFJ1bnRpbWVFbmFibGVGdW5jdGlvbk5hbWUKIHN1YiBH
ZXRDYXN0aW5nSGVscGVyRm9yVGhpc09iamVjdAogewogICAgIG15ICRpbnRlcmZhY2UgPSBzaGlm
dDsKKyAgICBteSAkaW50ZXJmYWNlTmFtZSA9ICRpbnRlcmZhY2UtPm5hbWU7CiAKLSAgICBpZiAo
JGludGVyZmFjZS0+bmFtZSBlcSAiTm9kZSIpIHsKLSAgICAgICAgcmV0dXJuICJqc05vZGVDYXN0
IjsKLSAgICB9Ci0gICAgaWYgKCRpbnRlcmZhY2UtPm5hbWUgZXEgIkVsZW1lbnQiKSB7Ci0gICAg
ICAgIHJldHVybiAianNFbGVtZW50Q2FzdCI7Ci0gICAgfQotICAgIGlmICgkaW50ZXJmYWNlLT5u
YW1lIGVxICJEb2N1bWVudCIpIHsKLSAgICAgICAgcmV0dXJuICJqc0RvY3VtZW50Q2FzdCI7Ci0g
ICAgfQotICAgIHJldHVybiAianNEeW5hbWljQ2FzdDxKUyIgLiAkaW50ZXJmYWNlLT5uYW1lIC4g
Iio+IjsKKyAgICByZXR1cm4gImpzTm9kZUNhc3QiIGlmICRpbnRlcmZhY2VOYW1lIGVxICJOb2Rl
IjsKKyAgICByZXR1cm4gImpzRWxlbWVudENhc3QiIGlmICRpbnRlcmZhY2VOYW1lIGVxICJFbGVt
ZW50IjsKKyAgICByZXR1cm4gImpzRG9jdW1lbnRDYXN0IiBpZiAkaW50ZXJmYWNlTmFtZSBlcSAi
RG9jdW1lbnQiOworICAgIHJldHVybiAianNFdmVudFRhcmdldENhc3QiIGlmICRpbnRlcmZhY2VO
YW1lIGVxICJFdmVudFRhcmdldCI7CisgICAgcmV0dXJuICJqc0R5bmFtaWNDYXN0PEpTJGludGVy
ZmFjZU5hbWUqPiI7CiB9CiAKIHN1YiBHZXRJbmRleGVkR2V0dGVyRXhwcmVzc2lvbgpAQCAtMjk0
NCw2ICsyOTQxLDE0IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAg
ICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJFeGNlcHRpb25Db2RlLmgifSA9IDE7CiAgICAgICAg
ICAgICAgICAgICAgIH0KIAorICAgICAgICAgICAgICAgICAgICAjIEV2ZW50VGFyZ2V0IG5lZWRz
IHRvIGRvIHNvbWUgZXh0cmEgY2hlY2tzIGlmIGNhc3RlZFRoaXMgaXMgYSBKU0RPTVdpbmRvdy4K
KyAgICAgICAgICAgICAgICAgICAgaWYgKCRpbnRlcmZhY2UtPm5hbWUgZXEgIkV2ZW50VGFyZ2V0
IikgeworICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siRE9NV2luZG93Lmgi
fSA9IDE7CisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBp
ZiAoYXV0byogd2luZG93ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpLnRvRE9NV2luZG93KCkpIHtc
biIpOworICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAg
IGlmICghd2luZG93LT5mcmFtZSgpIHx8ICFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNj
ZXNzVG9ET01XaW5kb3coc3RhdGUsICp3aW5kb3cpKVxuIik7CisgICAgICAgICAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIH1cbiIpOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgICAgICMgRm9yIGNvbXBhdGliaWxpdHkgd2l0aCBsZWdhY3kgY29udGVudCwgdGhlIEV2
ZW50TGlzdGVuZXIgY2FsbHMgYXJlIGdlbmVyYXRlZCB3aXRob3V0IEdlbmVyYXRlQXJndW1lbnRz
Q291bnRDaGVjay4KICAgICAgICAgICAgICAgICAgICAgaWYgKCRmdW5jdGlvbi0+c2lnbmF0dXJl
LT5uYW1lIGVxICJhZGRFdmVudExpc3RlbmVyIikgewogICAgICAgICAgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsIEdlbmVyYXRlRXZlbnRMaXN0ZW5lckNhbGwoImFkZCIpKTsKQEAg
LTMyMjgsMTkgKzMyMzMsMTUgQEAgc3ViIEdlbmVyYXRlRnVuY3Rpb25DYXN0ZWRUaGlzCiAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICRjbGFzc05hbWUqIGNhc3RlZFRoaXMgPSB0byR7
Y2xhc3NOYW1lfShzdGF0ZS0+dGhpc1ZhbHVlKCkudG9UaGlzKHN0YXRlLCBOb3RTdHJpY3RNb2Rl
KSk7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSlcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpO1xuIik7Ci0gICAgfSBlbHNpZiAoJGludGVyZmFj
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ildvcmtlckdsb2JhbFNjb3BlIn0pIHsKLSAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgJGNsYXNzTmFtZSogY2FzdGVkVGhpcyA9IHRvJHtjbGFz
c05hbWV9KHN0YXRlLT50aGlzVmFsdWUoKS50b1RoaXMoc3RhdGUsIE5vdFN0cmljdE1vZGUpKTtc
biIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKVxuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7XG4iKTsKICAgICB9IGVsc2UgewogICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUo
KTtcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAkY2xhc3NOYW1lKiBjYXN0
ZWRUaGlzID0gIiAuIEdldENhc3RpbmdIZWxwZXJGb3JUaGlzT2JqZWN0KCRpbnRlcmZhY2UpIC4g
Iih0aGlzVmFsdWUpO1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8g
Y2FzdGVkVGhpcyA9ICIgLiBHZXRDYXN0aW5nSGVscGVyRm9yVGhpc09iamVjdCgkaW50ZXJmYWNl
KSAuICIodGhpc1ZhbHVlKTtcbiIpOwogICAgICAgICBteSAkZG9tRnVuY3Rpb25OYW1lID0gJGZ1
bmN0aW9uLT5zaWduYXR1cmUtPm5hbWU7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpXG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCBcIiRpbnRlcmZh
Y2VOYW1lXCIsIFwiJGRvbUZ1bmN0aW9uTmFtZVwiKTtcbiIpOwogICAgIH0KIAotICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywg
JHtjbGFzc05hbWV9OjppbmZvKCkpO1xuIik7CisgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCAke2NsYXNzTmFtZX06OmluZm8o
KSk7XG4iKSB1bmxlc3MgJGludGVyZmFjZU5hbWUgZXEgIkV2ZW50VGFyZ2V0IjsKIH0KIAogc3Vi
IEdlbmVyYXRlQ2FsbFdpdGgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5jcHAKaW5kZXgg
N2FmNjMyYjQ5MzQwOTlmYmQyYzhkN2IyZDUyNDljZTJjMTg5YjFhNy4uZjkzZDU1MWRmNjU5NTUx
MzQ1OTY3MjczYWMzMmQ4ZDMwZTA0YzhlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVj
dC5jcHAKQEAgLTIwMCw3ICsyMDAsNyBAQCBKU1ZhbHVlIEpTVGVzdEFjdGl2ZURPTU9iamVjdDo6
Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYgogRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RBY3RpdmVET01PYmplY3RQcm90b3R5cGVGdW5j
dGlvbkV4Y2l0aW5nRnVuY3Rpb24oRXhlY1N0YXRlKiBzdGF0ZSkKIHsKICAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKLSAgICBKU1Rlc3RBY3RpdmVET01PYmplY3Qq
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEFjdGl2ZURPTU9iamVjdCo+KHRoaXNW
YWx1ZSk7CisgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RBY3RpdmVE
T01PYmplY3QqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAg
ICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEFjdGl2ZURPTU9i
amVjdCIsICJleGNpdGluZ0Z1bmN0aW9uIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
UyhjYXN0ZWRUaGlzLCBKU1Rlc3RBY3RpdmVET01PYmplY3Q6OmluZm8oKSk7CkBAIC0yMTksNyAr
MjE5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RBY3RpdmVET01PYmpl
Y3RQcm90b3R5cGVGdW5jdGlvbkV4Y2l0aW5nRnVuY3QKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0QWN0aXZlRE9NT2JqZWN0UHJvdG90eXBlRnVuY3Rpb25Qb3N0TWVzc2FnZShF
eGVjU3RhdGUqIHN0YXRlKQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNW
YWx1ZSgpOwotICAgIEpTVGVzdEFjdGl2ZURPTU9iamVjdCogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0QWN0aXZlRE9NT2JqZWN0Kj4odGhpc1ZhbHVlKTsKKyAgICBhdXRvIGNhc3Rl
ZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEFjdGl2ZURPTU9iamVjdCo+KHRoaXNWYWx1ZSk7
CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhp
c1R5cGVFcnJvcigqc3RhdGUsICJUZXN0QWN0aXZlRE9NT2JqZWN0IiwgInBvc3RNZXNzYWdlIik7
CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RBY3RpdmVE
T01PYmplY3Q6OmluZm8oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcApp
bmRleCA3ZWNjYTcwYjQ1ZTQzZmU3MTI2ZDI4OWNlYjgxZDVlYmY0ZDNiMzMyLi5lMzg3ODhiOWU5
YWE4MjYzZWVhMWY2MzI0MWQ3ODkwNzY3MWU4NTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21O
YW1lZEdldHRlci5jcHAKQEAgLTE4Niw3ICsxODYsNyBAQCBKU1ZhbHVlIEpTVGVzdEN1c3RvbU5h
bWVkR2V0dGVyOjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBn
bAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDdXN0b21OYW1lZEdldHRlclBy
b3RvdHlwZUZ1bmN0aW9uQW5vdGhlckZ1bmN0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7Ci0gICAgSlNUZXN0Q3VzdG9t
TmFtZWRHZXR0ZXIqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEN1c3RvbU5hbWVk
R2V0dGVyKj4odGhpc1ZhbHVlKTsKKyAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RDdXN0b21OYW1lZEdldHRlciIsICJhbm90aGVyRnVuY3Rpb24iKTsKICAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyOjpp
bmZvKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAKaW5kZXggNzY4Y2QzMTkwMzdjNWM0N2M3
YTkwMTc5OWFkYTFjODQ3ZTgxZTExOC4uNTdhZjU2MDg2YWZjM2Q5ZWYyNDc1NDJkZWM4ZmM0MmQx
NzU3YzhiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCkBAIC0xOTgsNyArMTk4LDcgQEAg
SlNWYWx1ZSBKU1Rlc3RFdmVudFRhcmdldDo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2IKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0RXZlbnRUYXJnZXRQcm90b3R5cGVGdW5jdGlvbkl0ZW0oRXhlY1N0YXRlKiBzdGF0ZSkKIHsK
ICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKLSAgICBKU1Rlc3RF
dmVudFRhcmdldCogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0RXZlbnRUYXJnZXQq
Pih0aGlzVmFsdWUpOworICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
RXZlbnRUYXJnZXQqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
CiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEV2ZW50VGFy
Z2V0IiwgIml0ZW0iKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMs
IEpTVGVzdEV2ZW50VGFyZ2V0OjppbmZvKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAppbmRleCBm
NzQzZGI4NzJhNDYzZDNjMzAzZTY2MGQyYjcyMDk5YWU5ZjRiZDVlLi45YjhhMzYyNjE3ZjZlODE2
YjczMTk4ZDhlOWIxZWUyYzFjM2E0YjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcApAQCAtNzY1
LDcgKzc2NSw3IEBAIEpTVmFsdWUgSlNUZXN0SW50ZXJmYWNlOjpnZXRDb25zdHJ1Y3RvcihWTSYg
dm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplCiBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uSW1wbGVtZW50c01ldGhv
ZDEoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50
aGlzVmFsdWUoKTsKLSAgICBKU1Rlc3RJbnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdEludGVyZmFjZSo+KHRoaXNWYWx1ZSk7CisgICAgYXV0byBjYXN0ZWRUaGlzID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdEludGVyZmFjZSIsICJpbXBsZW1lbnRzTWV0aG9kMSIpOwogICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0SW50ZXJmYWNlOjppbmZvKCkpOwpA
QCAtNzgwLDcgKzc4MCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50
ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbXBsZW1lbnRzTWV0aG9kMShFCiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uSW1wbGVtZW50
c01ldGhvZDIoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0
YXRlLT50aGlzVmFsdWUoKTsKLSAgICBKU1Rlc3RJbnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZSo+KHRoaXNWYWx1ZSk7CisgICAgYXV0byBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPih0aGlzVmFsdWUpOwogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdEludGVyZmFjZSIsICJpbXBsZW1lbnRzTWV0aG9kMiIpOwogICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0SW50ZXJmYWNlOjppbmZv
KCkpOwpAQCAtODA5LDcgKzgwOSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbXBsZW1lbnRzTWV0aG9kMihFCiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uSW1w
bGVtZW50c01ldGhvZDMoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKLSAgICBKU1Rlc3RJbnRlcmZhY2UqIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZSo+KHRoaXNWYWx1ZSk7CisgICAgYXV0byBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPih0aGlzVmFsdWUpOwog
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdEludGVyZmFjZSIsICJpbXBsZW1lbnRzTWV0aG9kMyIpOwog
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0SW50ZXJmYWNl
OjppbmZvKCkpOwpAQCAtODMxLDcgKzgzMSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JGdW5jdGlvbkltcGxlbWVudHNNZXRob2Q0CiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0
aW9uU3VwcGxlbWVudGFsTWV0aG9kMShFeGVjU3RhdGUqIHN0YXRlKQogewogICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwotICAgIEpTVGVzdEludGVyZmFjZSogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4odGhpc1ZhbHVlKTsKKyAg
ICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZSo+KHRoaXNW
YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRo
cm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0SW50ZXJmYWNlIiwgInN1cHBsZW1lbnRhbE1l
dGhvZDEiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVz
dEludGVyZmFjZTo6aW5mbygpKTsKQEAgLTg0Niw3ICs4NDYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uU3VwcGxlbWVudGFs
TWV0aG9kMQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90
b3R5cGVGdW5jdGlvblN1cHBsZW1lbnRhbE1ldGhvZDIoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKICAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKLSAgICBKU1Rlc3RJbnRl
cmZhY2UqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZSo+KHRoaXNW
YWx1ZSk7CisgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZh
Y2UqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAg
IHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEludGVyZmFjZSIsICJzdXBw
bGVtZW50YWxNZXRob2QyIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRU
aGlzLCBKU1Rlc3RJbnRlcmZhY2U6OmluZm8oKSk7CkBAIC04NzUsNyArODc1LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblN1
cHBsZW1lbnRhbE1ldGhvZDIKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50
ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25TdXBwbGVtZW50YWxNZXRob2QzKEV4ZWNTdGF0ZSogc3Rh
dGUpCiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7Ci0gICAg
SlNUZXN0SW50ZXJmYWNlKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZh
Y2UqPih0aGlzVmFsdWUpOworICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0SW50ZXJmYWNlKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RJbnRlcmZh
Y2UiLCAic3VwcGxlbWVudGFsTWV0aG9kMyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJ
VFMoY2FzdGVkVGhpcywgSlNUZXN0SW50ZXJmYWNlOjppbmZvKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0
cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAKaW5kZXggNjBkMDVkYzYyZjFlNzQwMDk1MDYzNTUy
MmVkZWI0NjAxY2ZmMGY4Yi4uODU2MjllMjk3ZTEzMTRhOWI4OTMxYzczODc2ODMzMjc1YWJjY2My
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCkBAIC0xOTks
NyArMTk5LDcgQEAgSlNWYWx1ZSBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcjo6Z2V0Q29uc3Ry
dWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCoKIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGVGdW5jdGlvblRlc3RD
dXN0b21GdW5jdGlvbihFeGVjU3RhdGUqIHN0YXRlKQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwotICAgIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yKiBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcio+KHRo
aXNWYWx1ZSk7CisgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RKU0J1
aWx0aW5Db25zdHJ1Y3Rvcio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0SlNC
dWlsdGluQ29uc3RydWN0b3IiLCAidGVzdEN1c3RvbUZ1bmN0aW9uIik7CiAgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcjo6
aW5mbygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcApp
bmRleCAyYjYzNzI2MDRmYmJjODQ2M2M3ZDFlZmUxNjdjZDBlYWZkNWE5YzIwLi45YTQ5NzFhODRh
YTM0ZThhNjU0MDFlZGZlNjYzMDMzMTUyN2UwZjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1l
ZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCkBAIC0xNTEsNyArMTUxLDcgQEAgSlNWYWx1ZSBKU1Rl
c3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpT
R2xvYmFsT2JqZWMKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0TWVkaWFRdWVy
eUxpc3RMaXN0ZW5lclByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kKEV4ZWNTdGF0ZSogc3RhdGUpCiB7
CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7Ci0gICAgSlNUZXN0
TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcio+KHRoaXNWYWx1ZSk7CisgICAgYXV0byBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKj4odGhpc1ZhbHVl
KTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dU
aGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyIiwgIm1ldGhv
ZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0TWVk
aWFRdWVyeUxpc3RMaXN0ZW5lcjo6aW5mbygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb25kZXRlcm1pbmlzdGljLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb25kZXRlcm1pbmlz
dGljLmNwcAppbmRleCA4MjFmZDQxNDM5ZDgzYTAzNTAyNDMzYWJiZTczOGQ3NjMwYzlmYWVkLi4y
NTRiYzY1ODJhOWFjYmE3Mzk4MDQ5NmFiNTBiYTFmODg3YzQ4NDMyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9uZGV0ZXJtaW5pc3Rp
Yy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5vbmRldGVybWluaXN0aWMuY3BwCkBAIC00MjEsNyArNDIxLDcgQEAgSlNWYWx1ZSBKU1Rlc3RO
b25kZXRlcm1pbmlzdGljOjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2Jq
ZWN0KiBnbG8KIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Tm9uZGV0ZXJtaW5p
c3RpY1Byb3RvdHlwZUZ1bmN0aW9uTm9uZGV0ZXJtaW5pc3RpY1plcm9BcmdGdW5jdGlvbihFeGVj
U3RhdGUqIHN0YXRlKQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1
ZSgpOwotICAgIEpTVGVzdE5vbmRldGVybWluaXN0aWMqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdE5vbmRldGVybWluaXN0aWMqPih0aGlzVmFsdWUpOworICAgIGF1dG8gY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYyo+KHRoaXNWYWx1ZSk7
CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhp
c1R5cGVFcnJvcigqc3RhdGUsICJUZXN0Tm9uZGV0ZXJtaW5pc3RpYyIsICJub25kZXRlcm1pbmlz
dGljWmVyb0FyZ0Z1bmN0aW9uIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0
ZWRUaGlzLCBKU1Rlc3ROb25kZXRlcm1pbmlzdGljOjppbmZvKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAppbmRleCA2
NjUxZGE1MDlhMWNjZjA1NDc1OGIyMThmODNlMjY2MTc2ZjYzYmQ2Li4yNTlmZDdlYTU0ZTBiMjBk
NDgzZTNlMDk0NWJjZTk3MTMzODM1Y2YwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcApAQCAtMzAxOCw3ICszMDE4LDcg
QEAgSlNWYWx1ZSBKU1Rlc3RPYmo6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Wb2lkTWV0aG9kKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAg
ICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7Ci0gICAgSlNUZXN0T2Jq
KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOworICAg
IGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlz
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAidm9pZE1ldGhvZCIpOwogICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwpAQCAtMzAz
MCw3ICszMDMwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvblZvaWRNZXRob2QoRXhlY1N0YXRlKiBzdGEKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Wb2lkTWV0aG9kV2l0aEFyZ3Mo
RXhlY1N0YXRlKiBzdGF0ZSkKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlz
VmFsdWUoKTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE9iaio+KHRoaXNWYWx1ZSk7CisgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAg
ICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ2b2lk
TWV0aG9kV2l0aEFyZ3MiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRo
aXMsIEpTVGVzdE9iajo6aW5mbygpKTsKQEAgLTMwNTMsNyArMzA1Myw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Wb2lkTWV0aG9kV2l0
aEFyZ3MoRXhlY1N0CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uQnl0ZU1ldGhvZChFeGVjU3RhdGUqIHN0YXRlKQogewogICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKKyAgICBhdXRvIGNhc3Rl
ZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigq
c3RhdGUsICJUZXN0T2JqIiwgImJ5dGVNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKQEAgLTMwNjUsNyArMzA2NSw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25CeXRlTWV0aG9kKEV4ZWNTdGF0ZSogc3RhCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQnl0ZU1ldGhvZFdpdGhBcmdzKEV4ZWNTdGF0ZSog
c3RhdGUpCiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7Ci0g
ICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlz
VmFsdWUpOworICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4o
dGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1
cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiYnl0ZU1ldGhvZFdpdGhB
cmdzIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RP
Ymo6OmluZm8oKSk7CkBAIC0zMDg4LDcgKzMwODgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQnl0ZU1ldGhvZFdpdGhBcmdzKEV4ZWNT
dAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk9jdGV0TWV0aG9kKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBzdGF0ZS0+dGhpc1ZhbHVlKCk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOworICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RPYmoiLCAib2N0ZXRNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNh
c3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKQEAgLTMxMDAsNyArMzEwMCw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PY3RldE1l
dGhvZChFeGVjU3RhdGUqIHN0CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uT2N0ZXRNZXRob2RXaXRoQXJncyhFeGVjU3RhdGUqIHN0YXRlKQog
ewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwotICAgIEpTVGVz
dE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsK
KyAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1
ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93
VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm9jdGV0TWV0aG9kV2l0aEFyZ3MiKTsK
ICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5m
bygpKTsKQEAgLTMxMjMsNyArMzEyMyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PY3RldE1ldGhvZFdpdGhBcmdzKEV4ZWNTCiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTG9uZ01l
dGhvZChFeGVjU3RhdGUqIHN0YXRlKQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUt
PnRoaXNWYWx1ZSgpOwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKKyAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwg
ImxvbmdNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMs
IEpTVGVzdE9iajo6aW5mbygpKTsKQEAgLTMxMzUsNyArMzEzNSw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Mb25nTWV0aG9kKEV4ZWNT
dGF0ZSogc3RhCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTG9uZ01ldGhvZFdpdGhBcmdzKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgSlNW
YWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0
ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOworICAgIGF1dG8g
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibG9uZ01ldGhvZFdpdGhBcmdzIik7CiAgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CkBAIC0z
MTU4LDcgKzMxNTgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTG9uZ01ldGhvZFdpdGhBcmdzKEV4ZWNTdAogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9iak1ldGhvZChFeGVjU3Rh
dGUqIHN0YXRlKQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgp
OwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4o
dGhpc1ZhbHVlKTsKKyAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
aio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAg
cmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm9iak1ldGhvZCIp
OwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjpp
bmZvKCkpOwpAQCAtMzE3MCw3ICszMTcwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9iak1ldGhvZChFeGVjU3RhdGUqIHN0YXQKIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PYmpN
ZXRob2RXaXRoQXJncyhFeGVjU3RhdGUqIHN0YXRlKQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKKyAgICBhdXRvIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJU
ZXN0T2JqIiwgIm9iak1ldGhvZFdpdGhBcmdzIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CkBAIC0zMTkzLDcgKzMxOTMsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
T2JqTWV0aG9kV2l0aEFyZ3MoRXhlY1N0YQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhTZXF1ZW5jZUFyZyhFeGVjU3RhdGUq
IHN0YXRlKQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwot
ICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhp
c1ZhbHVlKTsKKyAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+
KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0
dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm1ldGhvZFdpdGhTZXF1
ZW5jZUFyZyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNU
ZXN0T2JqOjppbmZvKCkpOwpAQCAtMzIxMCw3ICszMjEwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhTZXF1ZW5jZUFy
ZyhFeGUKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RSZXR1cm5pbmdTZXF1ZW5jZShFeGVjU3RhdGUqIHN0YXRlKQogewogICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwotICAgIEpTVGVzdE9iaiogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKKyAgICBhdXRv
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVF
cnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm1ldGhvZFJldHVybmluZ1NlcXVlbmNlIik7CiAgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7
CkBAIC0zMjI3LDcgKzMyMjcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kUmV0dXJuaW5nU2VxdWVuY2UoRQogRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhF
bnVtQXJnKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0
ZS0+dGhpc1ZhbHVlKCk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOworICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoi
LCAibWV0aG9kV2l0aEVudW1BcmciKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNh
c3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKQEAgLTMyNDgsNyArMzI0OCw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoRW51bUFyZyhFeGVjU3RhCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsRW51bUFyZ0FuZERlZmF1bHRWYWx1
ZShFeGVjU3RhdGUqIHN0YXRlKQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRo
aXNWYWx1ZSgpOwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0T2JqKj4odGhpc1ZhbHVlKTsKKyAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkK
ICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm1l
dGhvZFdpdGhPcHRpb25hbEVudW1BcmdBbmREZWZhdWx0VmFsdWUiKTsKICAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKQEAgLTMyNzcs
NyArMzI3Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxFbnVtQXJnCiBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kVGhhdFJlcXVpcmVzQWxs
QXJnc0FuZFRocm93cyhFeGVjU3RhdGUqIHN0YXRlKQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKKyAgICBhdXRvIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJU
ZXN0T2JqIiwgIm1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3MiKTsKICAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKQEAg
LTMzMDAsNyArMzMwMCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzCiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU2VyaWFsaXplZFZhbHVl
KEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhp
c1ZhbHVlKCk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RPYmoqPih0aGlzVmFsdWUpOworICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQog
ICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAic2Vy
aWFsaXplZFZhbHVlIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlz
LCBKU1Rlc3RPYmo6OmluZm8oKSk7CkBAIC0zMzE3LDcgKzMzMTcsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU2VyaWFsaXplZFZhbHVl
KEV4ZWNTdGF0ZQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk9wdGlvbnNPYmplY3QoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKICAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CisgICAgYXV0byBjYXN0
ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdE9iaiIsICJvcHRpb25zT2JqZWN0Iik7CiAgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CkBAIC0zMzM3LDcgKzMz
MzcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uT3B0aW9uc09iamVjdChFeGVjU3RhdGUqCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEV4Y2VwdGlvbihFeGVjU3Rh
dGUqIHN0YXRlKQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgp
OwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4o
dGhpc1ZhbHVlKTsKKyAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
aio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAg
cmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm1ldGhvZFdpdGhF
eGNlcHRpb24iKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpT
VGVzdE9iajo6aW5mbygpKTsKQEAgLTMzNTEsNyArMzM1MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoRXhjZXB0aW9u
KEV4ZWNTCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aEV4Y2VwdGlvbldpdGhNZXNzYWdlKEV4ZWNTdGF0ZSogc3RhdGUpCiB7
CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7Ci0gICAgSlNUZXN0
T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwor
ICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVl
KTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dU
aGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibWV0aG9kV2l0aEV4Y2VwdGlvbldpdGhN
ZXNzYWdlIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rl
c3RPYmo6OmluZm8oKSk7CkBAIC0zMzY1LDcgKzMzNjUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEV4Y2VwdGlvbldp
dGhNZQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbkN1c3RvbU1ldGhvZChFeGVjU3RhdGUqIHN0YXRlKQogewogICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKKyAgICBhdXRvIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUs
ICJUZXN0T2JqIiwgImN1c3RvbU1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJ
VFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwpAQCAtMzM3NSw3ICszMzc1LDcgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkN1
c3RvbU1ldGhvZChFeGVjU3RhdGUqIHMKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DdXN0b21NZXRob2RXaXRoQXJncyhFeGVjU3RhdGUqIHN0
YXRlKQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwotICAg
IEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1Zh
bHVlKTsKKyAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRo
aXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJu
IHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImN1c3RvbU1ldGhvZFdpdGhB
cmdzIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RP
Ymo6OmluZm8oKSk7CkBAIC0zMzg1LDcgKzMzODUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ3VzdG9tTWV0aG9kV2l0aEFyZ3MoRXhl
YwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
blByaXZhdGVNZXRob2QoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CisgICAgYXV0byBjYXN0ZWRUaGlzID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAi
VGVzdE9iaiIsICJwcml2YXRlTWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
UyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CkBAIC0zNDAyLDcgKzM0MDIsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uUHJp
dmF0ZU1ldGhvZChFeGVjU3RhdGUqCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uQWRkRXZlbnRMaXN0ZW5lcihFeGVjU3RhdGUqIHN0YXRlKQog
ewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwotICAgIEpTVGVz
dE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsK
KyAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1
ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93
VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImFkZEV2ZW50TGlzdGVuZXIiKTsKICAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygp
KTsKQEAgLTM0MTcsNyArMzQxNyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25BZGRFdmVudExpc3RlbmVyKEV4ZWNTdGF0CiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uUmVtb3ZlRXZl
bnRMaXN0ZW5lcihFeGVjU3RhdGUqIHN0YXRlKQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
c3RhdGUtPnRoaXNWYWx1ZSgpOwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKKyAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0
T2JqIiwgInJlbW92ZUV2ZW50TGlzdGVuZXIiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVS
SVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKQEAgLTM0MzIsNyArMzQzMiw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25S
ZW1vdmVFdmVudExpc3RlbmVyKEV4ZWNTCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdFN0YXRlVm9pZChFeGVjU3RhdGUqIHN0
YXRlKQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwotICAg
IEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1Zh
bHVlKTsKKyAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRo
aXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJu
IHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRTdGF0ZVZv
aWQiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9i
ajo6aW5mbygpKTsKQEAgLTM0NDQsNyArMzQ0NCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0U3RhdGVWb2lkKEV4ZWNT
CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
V2l0aFNjcmlwdFN0YXRlT2JqKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOworICAgIGF1dG8gY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RPYmoiLCAid2l0aFNjcmlwdFN0YXRlT2JqIik7CiAgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CkBAIC0zNDU4LDcgKzM0
NTgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uV2l0aFNjcmlwdFN0YXRlT2JqKEV4ZWNTdAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRTdGF0ZVZvaWRFeGNlcHRp
b24oRXhlY1N0YXRlKiBzdGF0ZSkKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50
aGlzVmFsdWUoKTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdE9iaio+KHRoaXNWYWx1ZSk7CisgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
CiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ3
aXRoU2NyaXB0U3RhdGVWb2lkRXhjZXB0aW9uIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CkBAIC0zNDcyLDcgKzM0NzIsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
V2l0aFNjcmlwdFN0YXRlVm9pZEV4Y2VwdAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRTdGF0ZU9iakV4Y2VwdGlvbihFeGVj
U3RhdGUqIHN0YXRlKQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1
ZSgpOwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2Jq
Kj4odGhpc1ZhbHVlKTsKKyAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAg
ICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIndpdGhTY3Jp
cHRTdGF0ZU9iakV4Y2VwdGlvbiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2Fz
dGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwpAQCAtMzQ4OSw3ICszNDg5LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3Jp
cHRTdGF0ZU9iakV4Y2VwdGkKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dChFeGVjU3RhdGUqIHN0
YXRlKQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwotICAg
IEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1Zh
bHVlKTsKKyAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRo
aXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJu
IHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRFeGVjdXRp
b25Db250ZXh0Iik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBK
U1Rlc3RPYmo6OmluZm8oKSk7CkBAIC0zNTA0LDcgKzM1MDQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGUoRXhlY1N0YXRl
KiBzdGF0ZSkKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsK
LSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRo
aXNWYWx1ZSk7CisgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoq
Pih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJl
dHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CkBAIC0zNTE5LDcgKzM1MTksNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2Ny
aXB0U3RhdGVPYmpFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSkKIHsKICAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CisgICAgYXV0byBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRl
T2JqRXhjZXB0aW9uIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlz
LCBKU1Rlc3RPYmo6OmluZm8oKSk7CkBAIC0zNTM5LDcgKzM1MzksNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1
dGlvbkNvbnRleAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3Bh
Y2VzKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+
dGhpc1ZhbHVlKCk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmoqPih0aGlzVmFsdWUpOworICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAi
d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXMiKTsKICAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygp
KTsKQEAgLTM1NTYsNyArMzU1Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4CiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlw
dEFyZ3VtZW50c0FuZENhbGxTdGFjayhFeGVjU3RhdGUqIHN0YXRlKQogewogICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKKyAgICBhdXRvIGNhc3Rl
ZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigq
c3RhdGUsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2siKTsKICAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygp
KTsKQEAgLTM1NjksNyArMzU2OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsCiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aE9wdGlvbmFsQXJnKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBzdGF0ZS0+dGhpc1ZhbHVlKCk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOworICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RPYmoiLCAibWV0aG9kV2l0aE9wdGlvbmFsQXJnIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CkBAIC0zNTkxLDcgKzM1OTEs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXJnKEV4ZQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEFyZ0FuZERlZmF1
bHRWYWx1ZShFeGVjU3RhdGUqIHN0YXRlKQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3Rh
dGUtPnRoaXNWYWx1ZSgpOwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKKyAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2Jq
IiwgIm1ldGhvZFdpdGhPcHRpb25hbEFyZ0FuZERlZmF1bHRWYWx1ZSIpOwogICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwpAQCAtMzYx
Myw3ICszNjEzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEFyZ0FuZEQKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uT3B0aW9u
YWxBcmdBbmRPcHRpb25hbEFyZyhFeGVjU3RhdGUqIHN0YXRlKQogewogICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKKyAgICBhdXRvIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3Rh
dGUsICJUZXN0T2JqIiwgIm1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZE9wdGlvbmFsQXJnIik7
CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6Omlu
Zm8oKSk7CkBAIC0zNjQwLDcgKzM2NDAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQQogRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhOb25PcHRpb25hbEFyZ0FuZFR3b09wdGlvbmFsQXJncyhFeGVjU3RhdGUqIHN0YXRlKQog
ewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwotICAgIEpTVGVz
dE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsK
KyAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1
ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93
VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm1ldGhvZFdpdGhOb25PcHRpb25hbEFy
Z0FuZFR3b09wdGlvbmFsQXJncyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2Fz
dGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwpAQCAtMzY3NSw3ICszNjc1LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhOb25PcHRpb25hbEFyZ0EKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJpbmcoRXhlY1N0YXRlKiBzdGF0
ZSkKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKLSAgICBK
U1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1
ZSk7CisgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlz
VmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0
aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJtZXRob2RXaXRoT3B0aW9uYWxT
dHJpbmciKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVz
dE9iajo6aW5mbygpKTsKQEAgLTM2OTcsNyArMzY5Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJp
bmcoCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nQW5kRGVmYXVsdFZhbHVlKEV4ZWNTdGF0ZSogc3Rh
dGUpCiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7Ci0gICAg
SlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFs
dWUpOworICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhp
c1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4g
dGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibWV0aG9kV2l0aE9wdGlvbmFs
U3RyaW5nQW5kRGVmYXVsdFZhbHVlIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhj
YXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CkBAIC0zNzE5LDcgKzM3MTksNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aE9wdGlvbmFsU3RyaW5nQQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzVW5kZWZpbmVkKEV4
ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1Zh
bHVlKCk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RP
YmoqPih0aGlzVmFsdWUpOworICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAg
ICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibWV0aG9k
V2l0aE9wdGlvbmFsU3RyaW5nSXNVbmRlZmluZWQiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKQEAgLTM3MzQsNyArMzczNCw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNOdWxs
U3RyaW5nKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0
ZS0+dGhpc1ZhbHVlKCk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOworICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoi
LCAibWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNOdWxsU3RyaW5nIik7CiAgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CkBAIC0zNzQ5
LDcgKzM3NDksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSQogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0Fy
ZyhFeGVjU3RhdGUqIHN0YXRlKQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRo
aXNWYWx1ZSgpOwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0T2JqKj4odGhpc1ZhbHVlKTsKKyAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkK
ICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm1l
dGhvZFdpdGhDYWxsYmFja0FyZyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2Fz
dGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwpAQCAtMzc2Niw3ICszNzY2LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhDYWxsYmFja0FyZyhFeGUKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0FyZyhF
eGVjU3RhdGUqIHN0YXRlKQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNW
YWx1ZSgpOwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqKj4odGhpc1ZhbHVlKTsKKyAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAg
ICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm1ldGhv
ZFdpdGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNrQXJnIik7CiAgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CkBAIC0zNzg2LDcgKzM3
ODYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0FuZE9wdGlv
bmFsQXJnKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0
ZS0+dGhpc1ZhbHVlKCk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOworICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoi
LCAibWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmciKTsKICAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKQEAgLTM4MDQsNyAr
MzgwNCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rp
b25BcmcoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRl
LT50aGlzVmFsdWUoKTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CisgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIs
ICJtZXRob2RXaXRoQ2FsbGJhY2tGdW5jdGlvbkFyZyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwpAQCAtMzgyMSw3ICszODIx
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW8KIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRD
YWxsYmFja0Z1bmN0aW9uQXJnKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOworICAgIGF1dG8gY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RPYmoiLCAibWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tGdW5jdGlv
bkFyZyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0
T2JqOjppbmZvKCkpOwpAQCAtMzg0MSw3ICszODQxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25DYWxsYmFja0Fy
Z0EKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoQ2FsbGJhY2tGdW5jdGlvbkFuZE9wdGlvbmFsQXJnKEV4ZWNTdGF0ZSogc3Rh
dGUpCiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7Ci0gICAg
SlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFs
dWUpOworICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhp
c1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4g
dGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibWV0aG9kV2l0aENhbGxiYWNr
RnVuY3Rpb25BbmRPcHRpb25hbEFyZyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
Y2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwpAQCAtMzg4Myw3ICszODgzLDcgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uU3Rh
dGljTWV0aG9kV2l0aENhbGxiYWMKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbE1ldGhvZDEoRXhlY1N0YXRlKiBzdGF0ZSkK
IHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKLSAgICBKU1Rl
c3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7
CisgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFs
dWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJv
d1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJjb25kaXRpb25hbE1ldGhvZDEiKTsK
ICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5m
bygpKTsKQEAgLTM4OTgsNyArMzg5OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbE1ldGhvZDEoRXhlY1N0CiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0
aW9uYWxNZXRob2QyKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBzdGF0ZS0+dGhpc1ZhbHVlKCk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOworICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RPYmoiLCAiY29uZGl0aW9uYWxNZXRob2QyIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CkBAIC0zOTEzLDcgKzM5MTMsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
Q29uZGl0aW9uYWxNZXRob2QyKEV4ZWNTdAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsTWV0aG9kMyhFeGVjU3RhdGUqIHN0
YXRlKQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwotICAg
IEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1Zh
bHVlKTsKKyAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRo
aXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJu
IHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImNvbmRpdGlvbmFsTWV0aG9k
MyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2Jq
OjppbmZvKCkpOwpAQCAtMzkyNyw3ICszOTI3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsTWV0aG9kMyhFeGVjU3QK
IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDEoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKICAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CisgICAgYXV0byBjYXN0
ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdE9iaiIsICJvdmVybG9hZGVkTWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CkBAIC0zOTQ3LDcg
KzM5NDcsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QxKAogc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9k
MihFeGVjU3RhdGUqIHN0YXRlKQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRo
aXNWYWx1ZSgpOwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0T2JqKj4odGhpc1ZhbHVlKTsKKyAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkK
ICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm92
ZXJsb2FkZWRNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRo
aXMsIEpTVGVzdE9iajo6aW5mbygpKTsKQEAgLTM5NzQsNyArMzk3NCw3IEBAIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3Zlcmxv
YWRlZE1ldGhvZDIoCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QzKEV4ZWNTdGF0ZSogc3RhdGUpCiB7
CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7Ci0gICAgSlNUZXN0
T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwor
ICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVl
KTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dU
aGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAib3ZlcmxvYWRlZE1ldGhvZCIpOwogICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkp
OwpAQCAtMzk5MSw3ICszOTkxLDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMygKIHN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3Zl
cmxvYWRlZE1ldGhvZDQoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CisgICAgYXV0byBjYXN0ZWRUaGlzID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAi
VGVzdE9iaiIsICJvdmVybG9hZGVkTWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CkBAIC00MDA4LDcgKzQwMDgsNyBA
QCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q0KAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kNShFeGVjU3Rh
dGUqIHN0YXRlKQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgp
OwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4o
dGhpc1ZhbHVlKTsKKyAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
aio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAg
cmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm92ZXJsb2FkZWRN
ZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVz
dE9iajo6aW5mbygpKTsKQEAgLTQwMjUsNyArNDAyNSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhv
ZDUoCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q2KEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgSlNW
YWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0
ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOworICAgIGF1dG8g
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAib3ZlcmxvYWRlZE1ldGhvZCIpOwogICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwpAQCAtNDA0
Miw3ICs0MDQyLDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kNigKIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1l
dGhvZDcoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRl
LT50aGlzVmFsdWUoKTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CisgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIs
ICJvdmVybG9hZGVkTWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0
ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CkBAIC00MDU5LDcgKzQwNTksNyBAQCBzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92
ZXJsb2FkZWRNZXRob2Q3KAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kOChFeGVjU3RhdGUqIHN0YXRl
KQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwotICAgIEpT
VGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVl
KTsKKyAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNW
YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRo
cm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm92ZXJsb2FkZWRNZXRob2QiKTsK
ICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5m
bygpKTsKQEAgLTQwNzYsNyArNDA3Niw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDgoCiBzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk92ZXJsb2FkZWRNZXRob2Q5KEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOworICAgIGF1dG8gY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RPYmoiLCAib3ZlcmxvYWRlZE1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwpAQCAtNDA5Myw3ICs0MDkz
LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kOSgKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDEwKEV4
ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1Zh
bHVlKCk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RP
YmoqPih0aGlzVmFsdWUpOworICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAg
ICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAib3Zlcmxv
YWRlZE1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywg
SlNUZXN0T2JqOjppbmZvKCkpOwpAQCAtNDExMCw3ICs0MTEwLDcgQEAgc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVk
TWV0aG9kMTAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDExKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAg
ICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7Ci0gICAgSlNUZXN0T2Jq
KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOworICAg
IGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlz
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAib3ZlcmxvYWRlZE1ldGhvZCIpOwogICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwpA
QCAtNDEyNyw3ICs0MTI3LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMTEKIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3Zlcmxv
YWRlZE1ldGhvZDEyKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBzdGF0ZS0+dGhpc1ZhbHVlKCk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOworICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RPYmoiLCAib3ZlcmxvYWRlZE1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJ
VFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwpAQCAtNDE3OSw3ICs0MTc5LDcgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92
ZXJsb2FkZWRNZXRob2QoRXhlY1N0YXQKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGhPcHRpb25h
bFBhcmFtZXRlcjEoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IHN0YXRlLT50aGlzVmFsdWUoKTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CisgICAgYXV0byBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dE9iaiIsICJvdmVybG9hZGVkTWV0aG9kV2l0aE9wdGlvbmFsUGFyYW1ldGVyIik7CiAgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CkBA
IC00MjA2LDcgKzQyMDYsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2RXaQogc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9h
ZGVkTWV0aG9kV2l0aE9wdGlvbmFsUGFyYW1ldGVyMihFeGVjU3RhdGUqIHN0YXRlKQogewogICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwotICAgIEpTVGVzdE9iaiog
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKKyAgICBh
dXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5
cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm92ZXJsb2FkZWRNZXRob2RXaXRoT3B0aW9uYWxQ
YXJhbWV0ZXIiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpT
VGVzdE9iajo6aW5mbygpKTsKQEAgLTQzMjMsNyArNDMyMyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Qx
KEV4ZWNTCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uQ2xhc3NNZXRob2RXaXRoQ2xhbXAoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKICAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKLSAgICBKU1Rlc3RPYmoqIGNhc3Rl
ZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CisgICAgYXV0byBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdE9iaiIsICJjbGFzc01ldGhvZFdpdGhDbGFtcCIpOwogICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwpAQCAt
NDM1Myw3ICs0MzUzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbkNsYXNzTWV0aG9kV2l0aENsYW1wKEV4ZWMKIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoVW5zaWdu
ZWRMb25nU2VxdWVuY2UoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CisgICAgYXV0byBjYXN0ZWRUaGlzID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAi
VGVzdE9iaiIsICJtZXRob2RXaXRoVW5zaWduZWRMb25nU2VxdWVuY2UiKTsKICAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKQEAgLTQz
NzAsNyArNDM3MCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoVW5zaWduZWRMb25nU2VxCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU3RyaW5nQXJyYXlGdW5jdGlv
bihFeGVjU3RhdGUqIHN0YXRlKQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRo
aXNWYWx1ZSgpOwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0T2JqKj4odGhpc1ZhbHVlKTsKKyAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkK
ICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInN0
cmluZ0FycmF5RnVuY3Rpb24iKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3Rl
ZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKQEAgLTQzOTAsNyArNDM5MCw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TdHJpbmdBcnJh
eUZ1bmN0aW9uKEV4ZWNTCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uRG9tU3RyaW5nTGlzdEZ1bmN0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCiB7
CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7Ci0gICAgSlNUZXN0
T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwor
ICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVl
KTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dU
aGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiZG9tU3RyaW5nTGlzdEZ1bmN0aW9uIik7
CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6Omlu
Zm8oKSk7CkBAIC00NDEwLDcgKzQ0MTAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uRG9tU3RyaW5nTGlzdEZ1bmN0aW9uKEV4ZQogRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhBbmRXaXRob3V0TnVsbGFibGVTZXF1ZW5jZShFeGVjU3RhdGUqIHN0YXRlKQogewogICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwotICAgIEpTVGVzdE9iaiog
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKKyAgICBh
dXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5
cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm1ldGhvZFdpdGhBbmRXaXRob3V0TnVsbGFibGVT
ZXF1ZW5jZSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNU
ZXN0T2JqOjppbmZvKCkpOwpAQCAtNDQzMCw3ICs0NDMwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhBbmRXaXRob3V0
TnVsbGEKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoQW5kV2l0aG91dE51bGxhYmxlU2VxdWVuY2UyKEV4ZWNTdGF0ZSogc3Rh
dGUpCiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7Ci0gICAg
SlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFs
dWUpOworICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhp
c1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4g
dGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibWV0aG9kV2l0aEFuZFdpdGhv
dXROdWxsYWJsZVNlcXVlbmNlMiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2Fz
dGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwpAQCAtNDQ1MCw3ICs0NDUwLDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhBbmRXaXRob3V0TnVsbGEKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25HZXRTVkdEb2N1bWVudChFeGVjU3RhdGUqIHN0YXRlKQogewogICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwotICAgIEpTVGVzdE9iaiog
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKKyAgICBh
dXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5
cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImdldFNWR0RvY3VtZW50Iik7CiAgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CkBAIC00
NDY3LDcgKzQ0NjcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uR2V0U1ZHRG9jdW1lbnQoRXhlY1N0YXRlKgogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbnZlcnQxKEV4ZWNTdGF0
ZSogc3RhdGUpCiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7
Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0
aGlzVmFsdWUpOworICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2Jq
Kj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICBy
ZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiY29udmVydDEiKTsK
ICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5m
bygpKTsKQEAgLTQ0ODQsNyArNDQ4NCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db252ZXJ0MShFeGVjU3RhdGUqIHN0YXRlCiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29udmVy
dDIoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50
aGlzVmFsdWUoKTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdE9iaio+KHRoaXNWYWx1ZSk7CisgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
CiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJj
b252ZXJ0MiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNU
ZXN0T2JqOjppbmZvKCkpOwpAQCAtNDUwMSw3ICs0NTAxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbnZlcnQyKEV4ZWNTdGF0ZSog
c3RhdGUKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25Db252ZXJ0NChFeGVjU3RhdGUqIHN0YXRlKQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKKyAgICBhdXRvIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJU
ZXN0T2JqIiwgImNvbnZlcnQ0Iik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0
ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CkBAIC00NTE4LDcgKzQ1MTgsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29udmVydDQo
RXhlY1N0YXRlKiBzdGF0ZQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbkNvbnZlcnQ1KEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOworICAgIGF1dG8gY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RPYmoiLCAiY29udmVydDUiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKQEAgLTQ1MzUsNyArNDUzNSw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25Db252ZXJ0NShFeGVjU3RhdGUqIHN0YXRlCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTXV0YWJsZVBvaW50RnVuY3Rpb24oRXhlY1N0YXRl
KiBzdGF0ZSkKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsK
LSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRo
aXNWYWx1ZSk7CisgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoq
Pih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJl
dHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJtdXRhYmxlUG9pbnRG
dW5jdGlvbiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNU
ZXN0T2JqOjppbmZvKCkpOwpAQCAtNDU0Nyw3ICs0NTQ3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk11dGFibGVQb2ludEZ1bmN0aW9u
KEV4ZWMKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25JbW11dGFibGVQb2ludEZ1bmN0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgSlNW
YWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0
ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOworICAgIGF1dG8g
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiaW1tdXRhYmxlUG9pbnRGdW5jdGlvbiIpOwogICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwpA
QCAtNDU1OSw3ICs0NTU5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbkltbXV0YWJsZVBvaW50RnVuY3Rpb24oRXgKIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PcmFuZ2UoRXhlY1N0
YXRlKiBzdGF0ZSkKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUo
KTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+
KHRoaXNWYWx1ZSk7CisgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RP
YmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAg
IHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJvcmFuZ2UiKTsK
ICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5m
bygpKTsKQEAgLTQ1NzEsNyArNDU3MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PcmFuZ2UoRXhlY1N0YXRlKiBzdGF0ZSkKIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TdHJpY3RG
dW5jdGlvbihFeGVjU3RhdGUqIHN0YXRlKQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3Rh
dGUtPnRoaXNWYWx1ZSgpOwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKKyAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2Jq
IiwgInN0cmljdEZ1bmN0aW9uIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0
ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CkBAIC00NTk3LDcgKzQ1OTcsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU3RyaWN0RnVu
Y3Rpb24oRXhlY1N0YXRlKgogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvblN0cmljdEZ1bmN0aW9uV2l0aFNlcXVlbmNlKEV4ZWNTdGF0ZSogc3Rh
dGUpCiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7Ci0gICAg
SlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFs
dWUpOworICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhp
c1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4g
dGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAic3RyaWN0RnVuY3Rpb25XaXRo
U2VxdWVuY2UiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpT
VGVzdE9iajo6aW5mbygpKTsKQEAgLTQ2MjIsNyArNDYyMiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TdHJpY3RGdW5jdGlvbldpdGhT
ZXF1ZW5jCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uU3RyaWN0RnVuY3Rpb25XaXRoQXJyYXkoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKICAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKLSAgICBKU1Rlc3RPYmoqIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CisgICAgYXV0
byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJzdHJpY3RGdW5jdGlvbldpdGhBcnJheSIpOwogICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkp
OwpAQCAtNDY0Nyw3ICs0NjQ3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvblN0cmljdEZ1bmN0aW9uV2l0aEFycmF5KEUKIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY1N0
cmluZ01ldGhvZChFeGVjU3RhdGUqIHN0YXRlKQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
c3RhdGUtPnRoaXNWYWx1ZSgpOwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKKyAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0
T2JqIiwgInZhcmlhZGljU3RyaW5nTWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CkBAIC00NjY3LDcgKzQ2NjcsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
VmFyaWFkaWNTdHJpbmdNZXRob2QoRXhlYwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljRG91YmxlTWV0aG9kKEV4ZWNTdGF0ZSog
c3RhdGUpCiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7Ci0g
ICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlz
VmFsdWUpOworICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4o
dGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1
cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAidmFyaWFkaWNEb3VibGVN
ZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVz
dE9iajo6aW5mbygpKTsKQEAgLTQ2ODcsNyArNDY4Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY0RvdWJsZU1ldGhvZChF
eGVjCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uVmFyaWFkaWNOb2RlTWV0aG9kKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOworICAgIGF1dG8gY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RPYmoiLCAidmFyaWFkaWNOb2RlTWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CkBAIC00NzEwLDcg
KzQ3MTAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uVmFyaWFkaWNOb2RlTWV0aG9kKEV4ZWNTdAogRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkFueShFeGVjU3RhdGUqIHN0YXRlKQog
ewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwotICAgIEpTVGVz
dE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsK
KyAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1
ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93
VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImFueSIpOwogICAgIEFTU0VSVF9HQ19P
QkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwpAQCAtNDczNiw3
ICs0NzM2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb24oRXhlY1MKIHN0YXRpYyBpbmxpbmUgRW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uUHJv
bWlzZShFeGVjU3RhdGUqIHN0YXRlLCBKU1Byb21pc2VEZWZlcnJlZCogcHJvbWlzZURlZmVycmVk
KQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwotICAgIEpT
VGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVl
KTsKKyAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNW
YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRo
cm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInRlc3RQcm9taXNlRnVuY3Rpb24i
KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6
aW5mbygpKTsKQEAgLTQ3NTQsNyArNDc1NCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEZsCiBz
dGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVz
dFByb21pc2VGdW5jdGlvbldpdGhGbG9hdEFyZ3VtZW50UHJvbWlzZShFeGVjU3RhdGUqIHN0YXRl
LCBKU1Byb21pc2VEZWZlcnJlZCogcHJvbWlzZURlZmVycmVkKQogewogICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKKyAgICBhdXRvIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3Rh
dGUsICJUZXN0T2JqIiwgInRlc3RQcm9taXNlRnVuY3Rpb25XaXRoRmxvYXRBcmd1bWVudCIpOwog
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZv
KCkpOwpAQCAtNDc4MSw3ICs0NzgxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb25XaXRoRXgKIHN0YXRp
YyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJv
bWlzZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvblByb21pc2UoRXhlY1N0YXRlKiBzdGF0ZSwgSlNQcm9t
aXNlRGVmZXJyZWQqIHByb21pc2VEZWZlcnJlZCkKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IHN0YXRlLT50aGlzVmFsdWUoKTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CisgICAgYXV0byBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dE9iaiIsICJ0ZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvbiIpOwogICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwpAQCAtNDgw
MSw3ICs0ODAxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb25XaXRoT3AKIHN0YXRpYyBpbmxpbmUgRW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9u
V2l0aE9wdGlvbmFsSW50QXJndW1lbnRQcm9taXNlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTUHJvbWlz
ZURlZmVycmVkKiBwcm9taXNlRGVmZXJyZWQpCiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBz
dGF0ZS0+dGhpc1ZhbHVlKCk7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOworICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RP
YmoiLCAidGVzdFByb21pc2VGdW5jdGlvbldpdGhPcHRpb25hbEludEFyZ3VtZW50Iik7CiAgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T3ZlcnJpZGVCdWlsdGlucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0T3ZlcnJpZGVCdWlsdGlucy5jcHAKaW5kZXggZDMyNzYzOWMyOGRjNjg5
MDRmMTZhMTA5NWQ2M2NiMmY3NDAzMTNhOC4uNDRhYjQ0OWI4MmU4Y2YyY2Q2YjBkM2Q0ZTU3NWI5
YTZjYjZlYzFmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmNwcApAQCAtMTk1
LDcgKzE5NSw3IEBAIEpTVmFsdWUgSlNUZXN0T3ZlcnJpZGVCdWlsdGluczo6Z2V0Q29uc3RydWN0
b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvCiBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGVGdW5jdGlvbk5hbWVkSXRl
bShFeGVjU3RhdGUqIHN0YXRlKQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRo
aXNWYWx1ZSgpOwotICAgIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnMqIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE92ZXJyaWRlQnVpbHRpbnMqPih0aGlzVmFsdWUpOworICAgIGF1dG8g
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T3ZlcnJpZGVCdWlsdGlucyo+KHRoaXNW
YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRo
cm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T3ZlcnJpZGVCdWlsdGlucyIsICJuYW1lZEl0
ZW0iKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE92
ZXJyaWRlQnVpbHRpbnM6OmluZm8oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAppbmRleCA0ODUyZTQx
Y2E1ZmRiMzUwMGU2OTRlNjllN2EwNzE4NzU2ZDg3YjBjLi5hNzE3YzcwNTdjYTAwNTk4MDdlOWYx
NjBjNzM1ZGY3MTdiYzZhZjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAKQEAgLTQ1OCw3ICs0NTgs
NyBAQCBKU1ZhbHVlIEpTVGVzdFR5cGVkZWZzOjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uRnVuYyhFeGVjU3RhdGUqIHN0YXRlKQog
ewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwotICAgIEpTVGVz
dFR5cGVkZWZzKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+KHRo
aXNWYWx1ZSk7CisgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBl
ZGVmcyo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAg
ICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAiZnVu
YyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0VHlw
ZWRlZnM6OmluZm8oKSk7CkBAIC00ODAsNyArNDgwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uRnVuYyhFeGVjU3RhdGUqIHN0
YXQKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVG
dW5jdGlvblNldFNoYWRvdyhFeGVjU3RhdGUqIHN0YXRlKQogewogICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwotICAgIEpTVGVzdFR5cGVkZWZzKiBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+KHRoaXNWYWx1ZSk7CisgICAgYXV0byBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+KHRoaXNWYWx1ZSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5
cGVFcnJvcigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAic2V0U2hhZG93Iik7CiAgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RUeXBlZGVmczo6aW5mbygpKTsK
QEAgLTUyMSw3ICs1MjEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5
cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25TZXRTaGFkb3coRXhlY1N0YXRlKgogRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aFNlcXVlbmNlQXJnKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBzdGF0ZS0+dGhpc1ZhbHVlKCk7Ci0gICAgSlNUZXN0VHlwZWRlZnMqIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4odGhpc1ZhbHVlKTsKKyAgICBhdXRvIGNhc3Rl
ZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4odGhpc1ZhbHVlKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJtZXRob2RXaXRoU2VxdWVuY2VBcmciKTsKICAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdFR5cGVkZWZzOjpp
bmZvKCkpOwpAQCAtNTM4LDcgKzUzOCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhTZXF1ZW5jZUFyCiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25O
dWxsYWJsZUFycmF5QXJnKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7Ci0gICAgSlNUZXN0VHlwZWRlZnMqIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4odGhpc1ZhbHVlKTsKKyAgICBhdXRvIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4odGhpc1ZhbHVlKTsKICAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJudWxsYWJsZUFycmF5QXJnIik7CiAgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RUeXBlZGVmczo6aW5m
bygpKTsKQEAgLTU1NSw3ICs1NTUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25OdWxsYWJsZUFycmF5QXJnKEV4ZQogRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uRnVu
Y1dpdGhDbGFtcChFeGVjU3RhdGUqIHN0YXRlKQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
c3RhdGUtPnRoaXNWYWx1ZSgpOwotICAgIEpTVGVzdFR5cGVkZWZzKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+KHRoaXNWYWx1ZSk7CisgICAgYXV0byBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+KHRoaXNWYWx1ZSk7CiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJv
cigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAiZnVuY1dpdGhDbGFtcCIpOwogICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0VHlwZWRlZnM6OmluZm8oKSk7CkBA
IC01OTIsNyArNTkyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBl
ZGVmc1Byb3RvdHlwZUZ1bmN0aW9uRnVuY1dpdGhDbGFtcChFeGVjU3QKIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbkltbXV0YWJsZVBv
aW50RnVuY3Rpb24oRXhlY1N0YXRlKiBzdGF0ZSkKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IHN0YXRlLT50aGlzVmFsdWUoKTsKLSAgICBKU1Rlc3RUeXBlZGVmcyogY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPih0aGlzVmFsdWUpOworICAgIGF1dG8gY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPih0aGlzVmFsdWUpOwogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwgImltbXV0YWJsZVBvaW50RnVuY3Rpb24iKTsKICAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdFR5cGVkZWZzOjpp
bmZvKCkpOwpAQCAtNjA0LDcgKzYwNCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbkltbXV0YWJsZVBvaW50RnVuY3RpCiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25T
dHJpbmdBcnJheUZ1bmN0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7Ci0gICAgSlNUZXN0VHlwZWRlZnMqIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4odGhpc1ZhbHVlKTsKKyAgICBhdXRv
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4odGhpc1ZhbHVlKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlz
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJzdHJpbmdBcnJheUZ1bmN0aW9uIik7
CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RUeXBlZGVm
czo6aW5mbygpKTsKQEAgLTYyNCw3ICs2MjQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25TdHJpbmdBcnJheUZ1bmN0aW9uKAog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0
aW9uU3RyaW5nQXJyYXlGdW5jdGlvbjIoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKICAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKLSAgICBKU1Rlc3RUeXBlZGVmcyogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPih0aGlzVmFsdWUpOworICAg
IGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPih0aGlzVmFs
dWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJv
d1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwgInN0cmluZ0FycmF5RnVuY3Rp
b24yIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RU
eXBlZGVmczo6aW5mbygpKTsKQEAgLTY0NCw3ICs2NDQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25TdHJpbmdBcnJheUZ1bmN0
aW9uMgogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlw
ZUZ1bmN0aW9uQ2FsbFdpdGhTZXF1ZW5jZVRoYXRSZXF1aXJlc0luY2x1ZGUoRXhlY1N0YXRlKiBz
dGF0ZSkKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKLSAg
ICBKU1Rlc3RUeXBlZGVmcyogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRl
ZnMqPih0aGlzVmFsdWUpOworICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0VHlwZWRlZnMqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
CiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZz
IiwgImNhbGxXaXRoU2VxdWVuY2VUaGF0UmVxdWlyZXNJbmNsdWRlIik7CiAgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RUeXBlZGVmczo6aW5mbygpKTsKQEAg
LTY2MSw3ICs2NjEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVk
ZWZzUHJvdG90eXBlRnVuY3Rpb25DYWxsV2l0aFNlcXVlbmNlVGhhdAogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEV4
Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRlKQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3Rh
dGUtPnRoaXNWYWx1ZSgpOwotICAgIEpTVGVzdFR5cGVkZWZzKiBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+KHRoaXNWYWx1ZSk7CisgICAgYXV0byBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigq
c3RhdGUsICJUZXN0VHlwZWRlZnMiLCAibWV0aG9kV2l0aEV4Y2VwdGlvbiIpOwogICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0VHlwZWRlZnM6OmluZm8oKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaWRsIGIvU291cmNl
L1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmlkbAppbmRleCBhNDhiM2RiNmM5NTA1YmFhOGZiZjkz
OThkODY4ZGJmNTMzOGY4MzVjLi5hOTU1Mjg3MThjNmJhNmVjNjlmNTViMGM4NGViYWFjZDhkZTJm
OGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaWRsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5pZGwKQEAgLTI1LDYgKzI1LDcgQEAKICAg
ICBDdXN0b21Ub0pTT2JqZWN0LAogICAgIEpTQ3VzdG9tVG9OYXRpdmVPYmplY3QsCiAgICAgRXZl
bnRUYXJnZXQsCisgICAgSlNDdXN0b21IZWFkZXIsCiBdIGludGVyZmFjZSBFdmVudFRhcmdldCB7
CiAgICAgW09iakNMZWdhY3lVbm5hbWVkUGFyYW1ldGVyc10gdm9pZCBhZGRFdmVudExpc3RlbmVy
KERPTVN0cmluZyB0eXBlLCBFdmVudExpc3RlbmVyIGxpc3RlbmVyLCBvcHRpb25hbCBib29sZWFu
IHVzZUNhcHR1cmUpOwogICAgIFtPYmpDTGVnYWN5VW5uYW1lZFBhcmFtZXRlcnNdIHZvaWQgcmVt
b3ZlRXZlbnRMaXN0ZW5lcihET01TdHJpbmcgdHlwZSwgRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwg
b3B0aW9uYWwgYm9vbGVhbiB1c2VDYXB0dXJlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmNwcAppbmRleCA0M2ZhZmFlMTU2YzI1NmQ2ZmMyOGFlMjcxYjZm
YjdkM2M3MzZkMDBkLi44OTYyMGIwMzVjYTgzMDVlYzU2ZDAyNmYzYzA2MTRkYTU0YjUzYmY4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCkBAIC0z
OTAsNyArMzkwLDcgQEAgYm9vbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpkaXNwYXRjaEVycm9y
RXZlbnQoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludAogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICNpZiBQTEFURk9STShJT1MpCi0gICAgaWYgKHRhcmdldCA9PSB0YXJnZXQtPnRvRE9N
V2luZG93KCkgJiYgaXM8RG9jdW1lbnQ+KCp0aGlzKSkgeworICAgIGlmICh0YXJnZXQtPnRvRE9N
V2luZG93KCkgJiYgaXM8RG9jdW1lbnQ+KCp0aGlzKSkgewogICAgICAgICBTZXR0aW5ncyogc2V0
dGluZ3MgPSBkb3duY2FzdDxEb2N1bWVudD4oKnRoaXMpLnNldHRpbmdzKCk7CiAgICAgICAgIGlm
IChzZXR0aW5ncyAmJiAhc2V0dGluZ3MtPnNob3VsZERpc3BhdGNoSmF2YVNjcmlwdFdpbmRvd09u
RXJyb3JFdmVudHMoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9N
V2luZG93LmlkbAppbmRleCA4ODNjOTIzNzg4NDVmNjNjMmE2YmU2NTk3M2E0ODE3MGJiZmE4NjQ0
Li41MjJhMWY5MTg3YjRmZjAxNWM2M2M0YWY2Njc5ZjBmMDIwMWU4NjUwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9ET01XaW5kb3cuaWRsCkBAIC0zNiwxMCArMzYsOSBAQAogICAgIEpTQ3VzdG9tVG9OYXRpdmVP
YmplY3QsCiAgICAgQ3VzdG9tUHV0RnVuY3Rpb24sCiAgICAgRXZlbnRUYXJnZXQsCi0gICAgSlNH
ZW5lcmF0ZVRvTmF0aXZlT2JqZWN0LAogICAgIEpTTGVnYWN5UGFyZW50PUpTRE9NV2luZG93QmFz
ZSwKICAgICBJbnRlcmZhY2VOYW1lPVdpbmRvdywKLV0gaW50ZXJmYWNlIERPTVdpbmRvdyB7Citd
IGludGVyZmFjZSBET01XaW5kb3cgOiBFdmVudFRhcmdldCB7CiAgICAgLy8gRE9NIExldmVsIDAK
ICAgICBbUmVwbGFjZWFibGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBTY3JlZW4gc2NyZWVuOwogICAg
IFtSZXBsYWNlYWJsZV0gcmVhZG9ubHkgYXR0cmlidXRlIEhpc3RvcnkgaGlzdG9yeTsKQEAgLTE4
NiwxMSArMTg1LDYgQEAKIAogICAgIFtSZXBsYWNlYWJsZV0gcmVhZG9ubHkgYXR0cmlidXRlIERP
TVdpbmRvd0NTUyBDU1M7CiAKLSAgICAvLyBFdmVudFRhcmdldCBpbnRlcmZhY2UKLSAgICBbQ3Vz
dG9tXSB2b2lkIGFkZEV2ZW50TGlzdGVuZXIoRE9NU3RyaW5nIHR5cGUsIEV2ZW50TGlzdGVuZXIg
bGlzdGVuZXIsIG9wdGlvbmFsIGJvb2xlYW4gdXNlQ2FwdHVyZSk7Ci0gICAgW0N1c3RvbV0gdm9p
ZCByZW1vdmVFdmVudExpc3RlbmVyKERPTVN0cmluZyB0eXBlLCBFdmVudExpc3RlbmVyIGxpc3Rl
bmVyLCBvcHRpb25hbCBib29sZWFuIHVzZUNhcHR1cmUpOwotICAgIFtJbXBsZW1lbnRlZEFzPWRp
c3BhdGNoRXZlbnRGb3JCaW5kaW5ncywgUmFpc2VzRXhjZXB0aW9uXSBib29sZWFuIGRpc3BhdGNo
RXZlbnQoRXZlbnQgZXZlbnQpOwotCiAgICAgdm9pZCBjYXB0dXJlRXZlbnRzKC8qaW4gbG9uZyBl
dmVudEZsYWdzKi8pOwogICAgIHZvaWQgcmVsZWFzZUV2ZW50cygvKmluIGxvbmcgZXZlbnRGbGFn
cyovKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxT
Y29wZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmlkbApp
bmRleCA3NDhlYWYwN2VjYzc0OGEzNjJkMzlmMTk4NWVhMTFhODBkZjgzM2Q2Li4zYTExMTBmY2Zk
N2E4YzUwMDRhYjEyOWMwODVkZmIwMGQzYWRjNmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckdsb2JhbFNjb3BlLmlkbApAQCAtMzEsNyArMzEsNyBAQAogICAgIEpTQ3VzdG9t
R2V0T3duUHJvcGVydHlTbG90QW5kRGVzY3JpcHRvciwKICAgICBFdmVudFRhcmdldCwKICAgICBK
U0xlZ2FjeVBhcmVudD1KU1dvcmtlckdsb2JhbFNjb3BlQmFzZSwKLV0gaW50ZXJmYWNlIFdvcmtl
ckdsb2JhbFNjb3BlIHsKK10gaW50ZXJmYWNlIFdvcmtlckdsb2JhbFNjb3BlIDogRXZlbnRUYXJn
ZXQgewogCiAjaWYgZGVmaW5lZChMQU5HVUFHRV9KQVZBU0NSSVBUKSAmJiBMQU5HVUFHRV9KQVZB
U0NSSVBUCiAgICAgW1JlcGxhY2VhYmxlXSByZWFkb25seSBhdHRyaWJ1dGUgIFdvcmtlckdsb2Jh
bFNjb3BlIHNlbGY7CkBAIC00OCwxMiArNDgsNiBAQAogICAgIFtDdXN0b21dIHZvaWQgaW1wb3J0
U2NyaXB0cygvKltWYXJpYWRpY10gRE9NU3RyaW5nIHVybHMgKi8pOwogICAgIFtSZXBsYWNlYWJs
ZV0gcmVhZG9ubHkgYXR0cmlidXRlIFdvcmtlck5hdmlnYXRvciBuYXZpZ2F0b3I7CiAKLSAgICAv
LyBFdmVudFRhcmdldCBpbnRlcmZhY2UKLQotICAgIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihET01T
dHJpbmcgdHlwZSwgRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwgb3B0aW9uYWwgYm9vbGVhbiB1c2VD
YXB0dXJlKTsKLSAgICB2b2lkIHJlbW92ZUV2ZW50TGlzdGVuZXIoRE9NU3RyaW5nIHR5cGUsIEV2
ZW50TGlzdGVuZXIgbGlzdGVuZXIsIG9wdGlvbmFsIGJvb2xlYW4gdXNlQ2FwdHVyZSk7Ci0gICAg
W0ltcGxlbWVudGVkQXM9ZGlzcGF0Y2hFdmVudEZvckJpbmRpbmdzLCBSYWlzZXNFeGNlcHRpb25d
IGJvb2xlYW4gZGlzcGF0Y2hFdmVudChFdmVudCBldmVudCk7Ci0KICAgICAvLyBBZGRpdGlvbmFs
IGNvbnN0cnVjdG9ycwogCiAgICAgYXR0cmlidXRlIERPTVVSTENvbnN0cnVjdG9yIHdlYmtpdFVS
TDsgLy8gRklYTUU6IGRlcHJlY2F0ZSB0aGlzLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDAzNjhkOWRjYTJjYzg3MmEzMTBl
YmEzNTFjNTEyYjZkMTcyM2Q2YjkuLjI2ZGE0OTI1OTJkYTc5MmViYmFmYzBlNzI1ZTAxNzcyMTll
N2Y2OGEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxNi0wMi0xMiAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFdpbmRvdyBhbmQgV29ya2VyR2xvYmFsU2NvcGUg
c2hvdWxkIGluaGVyaXQgRXZlbnRUYXJnZXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1NDE3MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjQ2NDIz
Nzc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiBmYXN0
L2ZyYW1lcy9kZXRhY2hlZC1mcmFtZS1ldmVudExpc3RlbmVyLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZmFzdC9mcmFtZXMvZGV0YWNoZWQtZnJhbWUtZXZlbnRMaXN0ZW5lci5odG1s
OiBBZGRlZC4KKyAgICAgICAgQWRkIHRlc3QgY2FzZSB0byBjb3ZlciB0aGUgdXNlIG9mIHRoZSBF
dmVudExpc3RlbmVyIEFQSSBvbiBhIGRldGFjaGVkCisgICAgICAgIGZyYW1lLgorCisgICAgICAg
ICogZmFzdC9sb2FkZXIvd2luZG93LWNsZWFyaW5nLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgUmVi
YXNlbGluZSBub3cgdGhhdCB3aW5kb3cgaGFzIG9uZSBtb3JlIG9iamVjdCBpbiBpdHMgcHJvdG90
eXBlIGNoYWluLgorCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1mcmFtZS1h
Y2Nlc3MtY2FsbC1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9j
cm9zcy1mcmFtZS1hY2Nlc3MtY2FsbC5odG1sOgorICAgICAgICBBZGQgdGVzdCBjb3ZlcmFnZSBm
b3IgY3Jvc3Mtb3JpZ2luIGFjY2VzcyB0byB3aW5kb3cuZGlzcGF0Y2hFdmVudCgpIHdoaWNoCisg
ICAgICAgIHNob3VsZCBub3QgYmUgYWxsb3dlZCwgaW4gYWRkaXRpb24gdG8gd2luZG93LmFkZEV2
ZW50TGlzdGVuZXIoKSBhbmQKKyAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoKSB3
aGljaCB3ZXJlIGFscmVhZHkgdGVzdGVkLgorCiAyMDE2LTAyLTEyICBOYW4gV2FuZyAgPG5fd2Fu
Z0BhcHBsZS5jb20+CiAKICAgICAgICAgQVg6IEltcGxlbWVudCBwYXJhZ3JhcGggcmVsYXRlZCB0
ZXh0IG1hcmtlciBmdW5jdGlvbnMgdXNpbmcgVGV4dEl0ZXJhdG9yCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L0NoYW5nZUxvZwppbmRleCAyZTNjMWQ0YTg4YTA2MzIxYTBlMDhmOGI1N2M0MDRhNWRkNTk0YjM2
Li43NzcxZGNhZDdmZWM1YmExYTAyYWM1MWJmMmNkZDZlNDUzYjRiZWMxIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNi0wMi0xMiAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFdpbmRvdyBhbmQgV29ya2VyR2xvYmFs
U2NvcGUgc2hvdWxkIGluaGVyaXQgRXZlbnRUYXJnZXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NDE3MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
MjQ2NDIzNzc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAg
UmViYXNlbGluZSBub3cgdGhhdCBhIGNvdXBsZSBvZiBjaGVja3MgYXJlIHBhc3NpbmcuCisKKyAg
ICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9kb20vaW50ZXJmYWNlcy1leHBlY3RlZC50
eHQ6CisKIDIwMTYtMDItMTIgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KIAog
ICAgICAgICBXZWJLaXQgc2hvdWxkIGV4cG9zZSB0aGUgRE9NIDQgRXZlbnQuaXNUcnVzdGVkIHBy
b3BlcnR5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9kZXRhY2hlZC1mcmFt
ZS1ldmVudExpc3RlbmVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2Rl
dGFjaGVkLWZyYW1lLWV2ZW50TGlzdGVuZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRlMWE0
Mzk4YWJmM2Q0ZTJiMWY2YTFmZGJjODg3NWFlYzUwM2IyMWUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9kZXRhY2hlZC1mcmFtZS1ldmVudExpc3RlbmVyLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDEyIEBACitUZXN0cyB0aGF0IHRoZSBFdmVudFRhcmdldCBBUEkg
aXMgbm8gbG9uZ2VyIHdvcmtpbmcgb24gZGV0YWNoZWQgZnJhbWVzLgorCitPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCisKKworYWRkRXZlbnRMaXN0ZW5lckZ1bmN0aW9uLmNhbGwoY2hpbGRXaW5k
b3csICdteWV2ZW50JywgZnVuY3Rpb24oKSB7IGNhbGxiYWNrQ2FsbGVkID0gdHJ1ZTsgfSk7CitQ
QVNTIGRpc3BhdGNoRXZlbnRGdW5jLmNhbGwoY2hpbGRXaW5kb3csIG5ldyBFdmVudCgnbXlldmVu
dCcpKSBpcyB1bmRlZmluZWQuCitQQVNTIGNhbGxiYWNrQ2FsbGVkIGlzIGZhbHNlCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvZGV0YWNoZWQtZnJhbWUtZXZlbnRMaXN0ZW5lci5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvZGV0YWNoZWQtZnJhbWUtZXZlbnRMaXN0ZW5lci5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmUyZDA4MjVjNjBiMGI1ZmM1NDNlYTM2ZWU5YjdkNjJhODNiMjA5NWEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9kZXRhY2hlZC1mcmFt
ZS1ldmVudExpc3RlbmVyLmh0bWwKQEAgLTAsMCArMSwyMCBAQAorPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZGVzY3JpcHRp
b24oIlRlc3RzIHRoYXQgdGhlIEV2ZW50VGFyZ2V0IEFQSSBpcyBubyBsb25nZXIgd29ya2luZyBv
biBkZXRhY2hlZCBmcmFtZXMuIik7Citqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworb25sb2FkID0g
ZnVuY3Rpb24oKQoreworICAgIGNoaWxkV2luZG93ID0gZnJhbWVzWzBdOworICAgIGFkZEV2ZW50
TGlzdGVuZXJGdW5jdGlvbiA9IGNoaWxkV2luZG93LmFkZEV2ZW50TGlzdGVuZXI7CisgICAgZGlz
cGF0Y2hFdmVudEZ1bmMgPSBjaGlsZFdpbmRvdy5kaXNwYXRjaEV2ZW50OworICAgIGRvY3VtZW50
LmJvZHkucmVtb3ZlQ2hpbGQoZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImlmcmFtZSIp
WzBdKTsKKyAgICBjYWxsYmFja0NhbGxlZCA9IGZhbHNlOworICAgIGV2YWxBbmRMb2coImFkZEV2
ZW50TGlzdGVuZXJGdW5jdGlvbi5jYWxsKGNoaWxkV2luZG93LCAnbXlldmVudCcsIGZ1bmN0aW9u
KCkgeyBjYWxsYmFja0NhbGxlZCA9IHRydWU7IH0pOyIpOworICAgIHNob3VsZEJlVW5kZWZpbmVk
KCJkaXNwYXRjaEV2ZW50RnVuYy5jYWxsKGNoaWxkV2luZG93LCBuZXcgRXZlbnQoJ215ZXZlbnQn
KSkiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJjYWxsYmFja0NhbGxlZCIpOworICAgIGZpbmlzaEpT
VGVzdCgpOworfQorPC9zY3JpcHQ+Cis8aWZyYW1lIHNyYz0iYWJvdXQ6YmxhbmsiPjwvaWZyYW1l
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvd2luZG93LWNsZWFyaW5nLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3dpbmRvdy1jbGVhcmluZy1leHBl
Y3RlZC50eHQKaW5kZXggYzc2YmI2NThmYWU3NWU4NDZkNWJhNWM5ODUwMTU2ODIwNDBhN2VmNi4u
YzhjNmU3MWEwMWM2YzhhNjA3Yjc5YjliMTZjMjU2MTE2MzFhYzlkNSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvZmFzdC9sb2FkZXIvd2luZG93LWNsZWFyaW5nLWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2xvYWRlci93aW5kb3ctY2xlYXJpbmctZXhwZWN0ZWQudHh0CkBAIC03
LDMgKzcsNSBAQCBQQVNTOiBlbGVtZW50IDAgaW4gdGhlIHdpbmRvdydzIHByb3RvdHlwZSBjaGFp
biB3YXMgY2xlYXJlZAogUEFTUzogZWxlbWVudCAxIGluIHRoZSB3aW5kb3cncyBwcm90b3R5cGUg
Y2hhaW4gd2FzIGNsZWFyZWQKIAogUEFTUzogZWxlbWVudCAyIGluIHRoZSB3aW5kb3cncyBwcm90
b3R5cGUgY2hhaW4gd2FzIGNsZWFyZWQKKworUEFTUzogZWxlbWVudCAzIGluIHRoZSB3aW5kb3cn
cyBwcm90b3R5cGUgY2hhaW4gd2FzIGNsZWFyZWQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3MtZnJhbWUtYWNjZXNzLWNhbGwtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1mcmFtZS1hY2Nlc3MtY2FsbC1l
eHBlY3RlZC50eHQKaW5kZXggMmY0ZmRkNTY2NDJjYTE3NzY3YmUzN2NlZThlMzU5MTQ1ZDU3NWVh
Yy4uNzkxODI3MDVjOTdiYmFkZTk3OTQxM2FiNzgyZWJkZjE2NWU2MWRlMyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1mcmFtZS1hY2Nlc3MtY2FsbC1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1m
cmFtZS1hY2Nlc3MtY2FsbC1leHBlY3RlZC50eHQKQEAgLTI2LDYgKzI2LDcgQEAgQ09OU09MRSBN
RVNTQUdFOiBsaW5lIDE6IEJsb2NrZWQgYSBmcmFtZSB3aXRoIG9yaWdpbiAiaHR0cDovLzEyNy4w
LjAuMTo4MDAwIiBmcm8KIENPTlNPTEUgTUVTU0FHRTogbGluZSAxOiBCbG9ja2VkIGEgZnJhbWUg
d2l0aCBvcmlnaW4gImh0dHA6Ly8xMjcuMC4wLjE6ODAwMCIgZnJvbSBhY2Nlc3NpbmcgYSBmcmFt
ZSB3aXRoIG9yaWdpbiAiaHR0cDovL2xvY2FsaG9zdDo4MDAwIi4gUHJvdG9jb2xzLCBkb21haW5z
LCBhbmQgcG9ydHMgbXVzdCBtYXRjaC4KIENPTlNPTEUgTUVTU0FHRTogbGluZSAxOiBCbG9ja2Vk
IGEgZnJhbWUgd2l0aCBvcmlnaW4gImh0dHA6Ly8xMjcuMC4wLjE6ODAwMCIgZnJvbSBhY2Nlc3Np
bmcgYSBmcmFtZSB3aXRoIG9yaWdpbiAiaHR0cDovL2xvY2FsaG9zdDo4MDAwIi4gUHJvdG9jb2xz
LCBkb21haW5zLCBhbmQgcG9ydHMgbXVzdCBtYXRjaC4KIENPTlNPTEUgTUVTU0FHRTogbGluZSAx
OiBCbG9ja2VkIGEgZnJhbWUgd2l0aCBvcmlnaW4gImh0dHA6Ly8xMjcuMC4wLjE6ODAwMCIgZnJv
bSBhY2Nlc3NpbmcgYSBmcmFtZSB3aXRoIG9yaWdpbiAiaHR0cDovL2xvY2FsaG9zdDo4MDAwIi4g
UHJvdG9jb2xzLCBkb21haW5zLCBhbmQgcG9ydHMgbXVzdCBtYXRjaC4KK0NPTlNPTEUgTUVTU0FH
RTogbGluZSAxOiBCbG9ja2VkIGEgZnJhbWUgd2l0aCBvcmlnaW4gImh0dHA6Ly8xMjcuMC4wLjE6
ODAwMCIgZnJvbSBhY2Nlc3NpbmcgYSBmcmFtZSB3aXRoIG9yaWdpbiAiaHR0cDovL2xvY2FsaG9z
dDo4MDAwIi4gUHJvdG9jb2xzLCBkb21haW5zLCBhbmQgcG9ydHMgbXVzdCBtYXRjaC4KIENPTlNP
TEUgTUVTU0FHRTogbGluZSAxMDogQmxvY2tlZCBhIGZyYW1lIHdpdGggb3JpZ2luICJodHRwOi8v
MTI3LjAuMC4xOjgwMDAiIGZyb20gYWNjZXNzaW5nIGEgZnJhbWUgd2l0aCBvcmlnaW4gImh0dHA6
Ly9sb2NhbGhvc3Q6ODAwMCIuIFByb3RvY29scywgZG9tYWlucywgYW5kIHBvcnRzIG11c3QgbWF0
Y2guCiAKIApAQCAtNDUsNiArNDYsNyBAQCBQQVNTOiB3aW5kb3cuYnRvYS5jYWxsKHRhcmdldFdp
bmRvdywgJ3N0cmluZycpIHNob3VsZCBiZSAndW5kZWZpbmVkJyBhbmQgaXMuCiBQQVNTOiB3aW5k
b3cub3Blbi5jYWxsKHRhcmdldFdpbmRvdywgJycpIHNob3VsZCBiZSAndW5kZWZpbmVkJyBhbmQg
aXMuCiBQQVNTOiB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lci5jYWxsKHRhcmdldFdpbmRvdywgJ2xv
YWQnLCBudWxsLCBmYWxzZSk7IHNob3VsZCBiZSAndW5kZWZpbmVkJyBhbmQgaXMuCiBQQVNTOiB3
aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lci5jYWxsKHRhcmdldFdpbmRvdywgJ2xvYWQnLCBudWxs
LCBmYWxzZSk7IHNob3VsZCBiZSAndW5kZWZpbmVkJyBhbmQgaXMuCitQQVNTOiB3aW5kb3cuZGlz
cGF0Y2hFdmVudC5jYWxsKHRhcmdldFdpbmRvdywgbmV3IEV2ZW50KCdjbGljaycpKTsgc2hvdWxk
IGJlICd1bmRlZmluZWQnIGFuZCBpcy4KIFBBU1M6IHdpbmRvdy5jbGVhclRpbWVvdXQuY2FsbCh0
YXJnZXRXaW5kb3csIDApOyBzaG91bGQgYmUgJ3VuZGVmaW5lZCcgYW5kIGlzLgogUEFTUzogd2lu
ZG93LmNsZWFySW50ZXJ2YWwuY2FsbCh0YXJnZXRXaW5kb3csIDApOyBzaG91bGQgYmUgJ3VuZGVm
aW5lZCcgYW5kIGlzLgogUEFTUzogd2luZG93LnByaW50LmNhbGwodGFyZ2V0V2luZG93KTsgc2hv
dWxkIGJlICd1bmRlZmluZWQnIGFuZCBpcy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkvY3Jvc3MtZnJhbWUtYWNjZXNzLWNhbGwuaHRtbCBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3MtZnJhbWUtYWNjZXNzLWNhbGwuaHRtbAppbmRleCA1
ZGFjYmVjYzAxNTE2ZGNlZjBlZTMyOTEwNzQ2NTFmM2IyNTQyZWFiLi4xYWEwMzFlMDU3MDc4ZWJj
NzBjYTIzNWRhYzZmZWY3MTA3NmUxOGM4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L2Nyb3NzLWZyYW1lLWFjY2Vzcy1jYWxsLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1mcmFtZS1hY2Nlc3MtY2FsbC5odG1sCkBAIC00
Miw2ICs0Miw3IEBAIHdpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpCiAgICAgLy8gVGhlc2UgYWx3
YXlzIHJldHVybiB1bmRlZmluZWQgc28gd2UgdXNlIHRoZSBlcnJvciBjb25zb2xlIHRvIGRldGVj
dCBmYWlsdXJlCiAgICAgc2hvdWxkQmUoIndpbmRvdy5hZGRFdmVudExpc3RlbmVyLmNhbGwodGFy
Z2V0V2luZG93LCAnbG9hZCcsIG51bGwsIGZhbHNlKTsiLCAidW5kZWZpbmVkIik7CiAgICAgc2hv
dWxkQmUoIndpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyLmNhbGwodGFyZ2V0V2luZG93LCAnbG9h
ZCcsIG51bGwsIGZhbHNlKTsiLCAidW5kZWZpbmVkIik7CisgICAgc2hvdWxkQmUoIndpbmRvdy5k
aXNwYXRjaEV2ZW50LmNhbGwodGFyZ2V0V2luZG93LCBuZXcgRXZlbnQoJ2NsaWNrJykpOyIsICJ1
bmRlZmluZWQiKTsKICAgICBzaG91bGRCZSgid2luZG93LmNsZWFyVGltZW91dC5jYWxsKHRhcmdl
dFdpbmRvdywgMCk7IiwgInVuZGVmaW5lZCIpOwogICAgIHNob3VsZEJlKCJ3aW5kb3cuY2xlYXJJ
bnRlcnZhbC5jYWxsKHRhcmdldFdpbmRvdywgMCk7IiwgInVuZGVmaW5lZCIpOwogICAgIHNob3Vs
ZEJlKCJ3aW5kb3cucHJpbnQuY2FsbCh0YXJnZXRXaW5kb3cpOyIsICJ1bmRlZmluZWQiKTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRt
bC9kb20vaW50ZXJmYWNlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvZG9tL2ludGVyZmFjZXMtZXhwZWN0ZWQudHh0CmluZGV4
IDQ2NjE4ZWY2MjAzNjI3MzA2MTIyMDc3NTRlZjI3MzIzYWI2ZjcwODguLjY3ZDA3ODg1ZTQzYTdl
ZDBmMzA2Y2EyNmI0MjU4Njc3MmZhNzEyOWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9kb20vaW50ZXJmYWNlcy1leHBlY3RlZC50
eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1s
L2RvbS9pbnRlcmZhY2VzLWV4cGVjdGVkLnR4dApAQCAtMzc5OSwxNCArMzc5OSwxMCBAQCBGQUlM
IERyYWdFdmVudCBpbnRlcmZhY2Ugb2JqZWN0IG5hbWUgYXNzZXJ0X293bl9wcm9wZXJ0eTogc2Vs
ZiBkb2VzIG5vdCBoYXZlIG93bgogRkFJTCBEcmFnRXZlbnQgaW50ZXJmYWNlOiBleGlzdGVuY2Ug
YW5kIHByb3BlcnRpZXMgb2YgaW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QgYXNzZXJ0X293bl9w
cm9wZXJ0eTogc2VsZiBkb2VzIG5vdCBoYXZlIG93biBwcm9wZXJ0eSAiRHJhZ0V2ZW50IiBleHBl
Y3RlZCBwcm9wZXJ0eSAiRHJhZ0V2ZW50IiBtaXNzaW5nCiBGQUlMIERyYWdFdmVudCBpbnRlcmZh
Y2U6IGV4aXN0ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVj
dCdzICJjb25zdHJ1Y3RvciIgcHJvcGVydHkgYXNzZXJ0X293bl9wcm9wZXJ0eTogc2VsZiBkb2Vz
IG5vdCBoYXZlIG93biBwcm9wZXJ0eSAiRHJhZ0V2ZW50IiBleHBlY3RlZCBwcm9wZXJ0eSAiRHJh
Z0V2ZW50IiBtaXNzaW5nCiBGQUlMIERyYWdFdmVudCBpbnRlcmZhY2U6IGF0dHJpYnV0ZSBkYXRh
VHJhbnNmZXIgYXNzZXJ0X293bl9wcm9wZXJ0eTogc2VsZiBkb2VzIG5vdCBoYXZlIG93biBwcm9w
ZXJ0eSAiRHJhZ0V2ZW50IiBleHBlY3RlZCBwcm9wZXJ0eSAiRHJhZ0V2ZW50IiBtaXNzaW5nCi1G
QUlMIFdpbmRvdyBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBpbnRlcmZh
Y2Ugb2JqZWN0IGFzc2VydF9lcXVhbHM6IHByb3RvdHlwZSBvZiBXaW5kb3cgaXMgbm90IEV2ZW50
VGFyZ2V0IGV4cGVjdGVkIGZ1bmN0aW9uICJmdW5jdGlvbiBFdmVudFRhcmdldCgpIHsKLSAgICBb
bmF0aXZlIGNvZGVdCi19IiBidXQgZ290IGZ1bmN0aW9uICJmdW5jdGlvbiAoKSB7Ci0gICAgW25h
dGl2ZSBjb2RlXQotfSIKK1BBU1MgV2luZG93IGludGVyZmFjZTogZXhpc3RlbmNlIGFuZCBwcm9w
ZXJ0aWVzIG9mIGludGVyZmFjZSBvYmplY3QgCiBQQVNTIFdpbmRvdyBpbnRlcmZhY2Ugb2JqZWN0
IGxlbmd0aCAKIFBBU1MgV2luZG93IGludGVyZmFjZSBvYmplY3QgbmFtZSAKLUZBSUwgV2luZG93
IGludGVyZmFjZTogZXhpc3RlbmNlIGFuZCBwcm9wZXJ0aWVzIG9mIGludGVyZmFjZSBwcm90b3R5
cGUgb2JqZWN0IGFzc2VydF9lcXVhbHM6IENsYXNzIG5hbWUgZm9yIHByb3RvdHlwZSBvZiBXaW5k
b3cucHJvdG90eXBlIGlzIG5vdCAiV2luZG93UHJvcGVydGllcyIgZXhwZWN0ZWQgIltvYmplY3Qg
V2luZG93UHJvcGVydGllc10iIGJ1dCBnb3QgIltvYmplY3QgT2JqZWN0XSIKK0ZBSUwgV2luZG93
IGludGVyZmFjZTogZXhpc3RlbmNlIGFuZCBwcm9wZXJ0aWVzIG9mIGludGVyZmFjZSBwcm90b3R5
cGUgb2JqZWN0IGFzc2VydF9lcXVhbHM6IENsYXNzIG5hbWUgZm9yIHByb3RvdHlwZSBvZiBXaW5k
b3cucHJvdG90eXBlIGlzIG5vdCAiV2luZG93UHJvcGVydGllcyIgZXhwZWN0ZWQgIltvYmplY3Qg
V2luZG93UHJvcGVydGllc10iIGJ1dCBnb3QgIltvYmplY3QgRXZlbnRUYXJnZXRQcm90b3R5cGVd
IgogRkFJTCBXaW5kb3cgaW50ZXJmYWNlOiBleGlzdGVuY2UgYW5kIHByb3BlcnRpZXMgb2YgaW50
ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QncyAiY29uc3RydWN0b3IiIHByb3BlcnR5IGFzc2VydF9v
d25fcHJvcGVydHk6IFdpbmRvdy5wcm90b3R5cGUgZG9lcyBub3QgaGF2ZSBvd24gcHJvcGVydHkg
ImNvbnN0cnVjdG9yIiBleHBlY3RlZCBwcm9wZXJ0eSAiY29uc3RydWN0b3IiIG1pc3NpbmcKIFBB
U1MgV2luZG93IGludGVyZmFjZTogYXR0cmlidXRlIHNlbGYgCiBQQVNTIFdpbmRvdyBpbnRlcmZh
Y2U6IGF0dHJpYnV0ZSBuYW1lIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>